Πίνακας περιεχομένων:
- Βήμα 1: Υλικά και εργαλεία
- Βήμα 2: Προετοιμάστε το ATTINY85
- Βήμα 3: Συναρμολογήστε το κύκλωμα
- Βήμα 4: Δοκιμή
- Βήμα 5: Επόμενα βήματα
Βίντεο: IOT123 - I2C KY019 ΤΟΥΒΑ: 5 Βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:36
Τα τούβλα IOT123 είναι σπονδυλωτές μονάδες DIY που μπορούν να πολτοποιηθούν με άλλα τούβλα IOT123, για να προσθέσουν λειτουργικότητα σε έναν κόμβο ή να φορεθούν. Βασίζονται στα τετράγωνα ίντσα, τα πρωτόπλακα διπλής όψης με διασυνδεδεμένες τρύπες.
Ορισμένα από αυτά τα ΤΟΥΒΑ αναμένεται να βρίσκονται σε πολλούς κόμβους (Master MCUs - ESP8266 ή ATTINY84) σε έναν ιστότοπο. Το MCU δεν χρειάζεται προηγούμενη γνώση του σκοπού των αισθητήρων ή των αναγκών του λογισμικού. Σαρώνει για κόμβους I2C και στη συνέχεια ζητά μια χωματερή ιδιότητας (δεδομένα αισθητήρα) από κάθε υποτελή. Αυτά τα τούβλα παρέχουν 5.0V, 3.3V και άλλη γραμμή AUX που είναι προσαρμόσιμη.
Αυτό το τούβλο I2C KY019 είναι το πρώτο από τους Ηθοποιούς και έχει μία ιδιότητα ανάγνωσης/εγγραφής:
Διακόπτης (αλήθεια/λάθος)
Τα τούβλα αισθητήρων τύπου Keyes θα αφαιρεθούν πρώτα καθώς συνοδεύονται από βιταμίνες (απαιτούνται επιπλέον συστατικά) και είναι σχετικά φτηνά (αγόρασα 37 για 10AUD). Άλλοι πίνακες/κυκλώματα θα εισαχθούν στα τούβλα I2C.
Οι διαμπερείς οπές δίπλα στο ATTINY85 έχουν μείνει αχρησιμοποίητες, για να ενεργοποιήσετε έναν προγραμματιστή καρφιτσών pogo ενώ το DIP8 είναι συγκολλημένο στο PCB. Μια περαιτέρω αφαίρεση, η συσκευασία των ΤΟΥΒΛΩΝ σε μικρούς κυλίνδρους που συνδέονται σε έναν διανομέα D1M WIFI BLOCK, που αντλεί τις τιμές σε έναν διακομιστή MQTT, αναπτύσσεται.
Βήμα 1: Υλικά και εργαλεία
Υπάρχει μια πλήρης λίστα λογαριασμών υλικού και πηγών.
- Ρελέ KY-019 (1)
- ATTINY85 20PU (1)
- Πρωτόπλακα διπλής όψης (1)
- Αρσενική κεφαλίδα 90º (3P, 3P)
- Σύρμα σύνδεσης (7 ~)
- Συγκόλληση και σίδερο (1)
Βήμα 2: Προετοιμάστε το ATTINY85
ΣΗΜΕΙΩΣΗ: Εάν σκοπεύετε να ενσωματώσετε το Crouton, χρησιμοποιήστε τη βιβλιοθήκη από εδώ και χρησιμοποιήστε το παράδειγμα εγκατεστημένο "attiny_ky019".
Απαιτείται AttinyCore από το Board Board. Εγγραφή bootloader "EEPROM διατηρήθηκε", "8mHZ Εσωτερικό" (όλα τα διαμορφωμένα εμφανίζονται παραπάνω).
Μπορείτε να βρείτε το αποθετήριο κώδικα εδώ.
Μπορείτε να βρείτε έναν ταχυδρομικό κώδικα της βιβλιοθήκης εδώ.
Οδηγίες για την "Εισαγωγή μιας βιβλιοθήκης ZIP" εδώ.
Μόλις εγκατασταθεί η βιβλιοθήκη, μπορείτε να ανοίξετε το παράδειγμα "attiny_ky019".
Για να ανεβάσετε το υλικολογισμικό στο ATTINY85, μπορεί να βρείτε περισσότερες λεπτομέρειες σε αυτά τα εκπαιδευτικά εγχειρίδια:
www.instructables.com/id/Programming-the-A…
www.instructables.com/id/How-to-Program-AT…
www.instructables.com/id/How-to-program-th…
www.instructables.com/id/Programming-the-A…
www.instructables.com/id/Programming-an-At…
Καλύτερα να δοκιμάσετε μέσω breadboard πριν συνεχίσετε.
Εάν έχετε υπάρχοντες ΑΙΣΘΗΤΗΡΕΣ ΑΙΣΘΗΤΗΡΕΣ, βεβαιωθείτε ότι η διεύθυνση slave είναι διαφορετική σε έναν συνδυασμό SENSOR/MCU Host, δηλαδή όλοι οι ηθοποιοί Relay μπορούν να έχουν την ίδια διεύθυνση αρκεί να έχετε μόνο έναν ηθοποιό Relay σε έναν MCU/κόμβο.
Βήμα 3: Συναρμολογήστε το κύκλωμα
- Στο μπροστινό μέρος, τοποθετήστε τα εξαρτήματα ATTINY85 (1), 3P 90deg αρσενικές κεφαλές (2) (3) και κολλήστε τα στο πίσω μέρος.
- Στο πίσω μέρος, εντοπίστε ένα κίτρινο καλώδιο από το YELLOW1 στο YELLOW2 και κολλήστε το.
- Στο πίσω μέρος, εντοπίστε ένα μπλε σύρμα από BLUE1 σε BLUE2 και κολλήστε.
- Στο πίσω μέρος, εντοπίστε ένα πράσινο καλώδιο από το GREEN1 στο GREEN2 και κολλήστε το.
- Στο πίσω μέρος, εντοπίστε ένα μαύρο καλώδιο από BLACK1 σε BLACK2 και κολλήστε.
- Στο πίσω μέρος, εντοπίστε ένα μαύρο καλώδιο από BLACK3 σε BLACK4 και κολλήστε.
- Στο πίσω μέρος, εντοπίστε ένα κόκκινο σύρμα από RED1 έως RED2 και κολλήστε.
- Στο πίσω μέρος, εντοπίστε ένα κόκκινο σύρμα από RED3 έως RED4 και κολλήστε.
Το ρελέ μπορεί τώρα να συνδεθεί απευθείας μέσω των ακίδων του στο PCB ή μέσω καλωδίων, στα σημεία που εμφανίζονται στη σύμβαση ακίδων.
Βήμα 4: Δοκιμή
Ορισμένα από αυτά τα ΤΟΥΒΑ αναμένεται να βρίσκονται σε πολλούς κόμβους (MCUs - ESP8266 ή ATTINY84) σε ένα περιβάλλον. Αυτή είναι μια δοκιμή μονάδας: στέλνει εντολές I2C από το UNO στο ATTINY που ανοίγει ή κλείνει το ρελέ.
Έχουμε δημιουργήσει προηγουμένως ένα I2C SHIELD για το Arduino.
Αν θέλετε αντ 'αυτού να πάρετε το breadboard:
- Συνδέστε το 5.0V στο UNO σε ένα VCC στο BRICK.
- Συνδέστε το GND στο UNO στο GND στο BRICK.
- Συνδέστε το A5 στο UNO στο SCL στο BRICK.
- Συνδέστε το A4 στο UNO στο SDA στο BRICK.
- Συνδέστε μια αντίσταση έλξης 4K7 από το SDA στο VCC.
- Συνδέστε μια αντίσταση έλξης 4K7 από SCL στο VCC.
Εκτέλεση της δοκιμής
- Συνδέστε το UNO στον υπολογιστή σας Dev με USB.
- Ανεβάστε τον κωδικό στο UNO.
- Ανοίξτε την κονσόλα Arduino. Επιλέξτε 9600 baud (επανεκκινήστε το UNO και ανοίξτε ξανά την κονσόλα αν χρειαστεί).
- Η διεύθυνση του slave θα εκτυπωθεί στην κονσόλα.
- Όταν, πληκτρολογήστε στο πλαίσιο αποστολής 2 1 (άρα 12 2 1) και το ρελέ ενεργοποιείται.
- Όταν, πληκτρολογήστε στο πλαίσιο αποστολής 2 0 (άρα 12 2 0) και το ρελέ απενεργοποιείται.
I2C BRICK adhoc εντολές για σκλάβους από κύριο UNO
#περιλαμβάνω |
const byte _num_chars = 32; |
char _received_chars [_num_chars]; // ένας πίνακας για την αποθήκευση των ληφθέντων δεδομένων |
boolean _has_new_data = false; |
voidsetup () { |
Serial.begin (9600); |
Serial.println (); |
Serial.println ("ASSIMILATE IOT ACTOR/SENSOR EEPROM EDITOR"); |
Serial.println ("διασφάλιση επιλογής νέας γραμμής στο παράθυρο της κονσόλας"); |
Serial.println (); |
Serial.println ("ΔΙΕΥΘΥΝΣΗ 1 ΕΠΙΒΕΒΑΙΩΣΕΤΕ ΜΕΤΑΔΟΤΙΚΗ ΠΑΡΑΛΑΒΗ Ν/Α (ΓΙΑ Μ2Μ)"); |
Serial.println ("ΔΙΕΥΘΥΝΣΗ 2 ΕΝΤΟΛΗ ΗΘΟΠΟΙΟΥ"); |
Serial.println (); |
Serial.println ("ΔΙΕΥΘΥΝΣΕΙΣ ΣΤΟ ΛΕΩΦΟΡΕΙΟ:"); |
scan_i2c_addresses (); |
Serial.println (); |
Serial.println (""); |
} |
voidscan_i2c_addresses () { |
int device_count = 0; |
για (διεύθυνση byte = 8; διεύθυνση <127; διεύθυνση ++) |
{ |
Wire.beginTransmission (διεύθυνση); |
const byte error = Wire.endTransmission (); |
εάν (σφάλμα == 0) |
{ |
Serial.println (διεύθυνση); |
} |
} |
} |
voidloop () { |
recv_with_end_marker (); |
send_to_i2c (); |
} |
voidrecv_with_end_marker () { |
στατικό byte ndx = 0; |
char end_marker = '\ n'; |
char rc; |
while (Serial.available ()> 0 && _has_new_data == false) { |
rc = Serial.read (); |
εάν (rc! = end_marker) { |
_received_chars [ndx] = rc; |
ndx ++; |
εάν (ndx> = _num_chars) { |
ndx = _num_chars - 1; |
} |
} |
αλλιώς { |
_received_chars [ndx] = '\ 0'; // τερματισμός της συμβολοσειράς |
ndx = 0; |
_has_new_data = true; |
} |
} |
} |
voidsend_to_i2c () { |
char param_buf [16]; |
const String دریافت_string = String (_received_chars); |
εάν (_has_new_data == true) { |
int idx1 = λαμβάνεται_χορδή.indexOf (''); |
Διεύθυνση συμβολοσειράς = ληφθείσα_χορδή.substring (0, idx1) |
int address_int = address.toInt (); |
if (διεύθυνση_int <8 || διεύθυνση_int> 127) { |
Serial.println ("ΑΚΥΡΗ ΕΙΣΟΔΟΣ ΔΙΕΥΘΥΝΣΗΣ:"); |
Serial.println (διεύθυνση); |
ΕΠΙΣΤΡΟΦΗ; |
} |
int idx2 = ληφθείσα_χορδή.indexOf ('', idx1+1); |
Κωδικός συμβολοσειράς. |
εάν (idx2 == -1) { |
κωδικός = λαμβάνεται_χορδές.substring (idx1+1); |
}αλλού{ |
κωδικός = λαμβάνεται_χορδές.substring (idx1+1, idx2+1); |
} |
int code_int = code.toInt (); |
εάν (code_int <0 || code_int> 5) { |
Serial.println ("ΑΚΥΡΗ ΕΙΣΟΔΟΣ ΚΩΔΙΚΟΥ:"); |
Serial.println (κωδικός); |
ΕΠΙΣΤΡΟΦΗ; |
} |
bool has_parameter = idx2> -1; |
Παράμετρος συμβολοσειράς. |
εάν (έχει_παράμετρο) { |
παράμετρος = λαμβάνεται_χορδές.substring (idx2 + 1, idx2 + 17); // 16 χαρακτήρες μέγ |
if (parameter.length () <1) { |
Serial.println ("PARTAMETER MIN. LENGTH 1"); |
_has_new_data = false; |
ΕΠΙΣΤΡΟΦΗ; |
} |
}αλλού{ |
εάν (code_int> 1) { |
Serial.println ("ΑΠΑΙΤΕΙΤΑΙ ΠΑΡΑΜΕΤΡΟΣ!"); |
_has_new_data = false; |
ΕΠΙΣΤΡΟΦΗ; |
} |
} |
Serial.println (); |
Serial.print ("input orig ="); |
Serial.println (string_string); |
Serial.print ("διεύθυνση ="); |
Serial.println (διεύθυνση); |
Serial.print ("code ="); |
Serial.println (κωδικός); |
Serial.print ("παράμετρος ="); |
Serial.println (παράμετρος); |
// ΣΤΕΙΛΤΕ ΜΕΣΩ I2C |
Wire.beginTransmission (διεύθυνση_int); |
Wire.write (code_int); |
εάν (έχει_παράμετρο) { |
parameter.trim (); |
strcpy (param_buf, parameter.c_str ()); |
Wire.write (param_buf); |
} |
Wire.endTransmission (); |
Serial.println (); |
Serial.println ("ΑΠΟΣΤΟΛΗ μέσω V2 I2C!"); |
Serial.println (); |
Serial.println (""); |
_has_new_data = false; |
} |
} |
προβολή rawuno_i2c_command_input.ino που φιλοξενείται με ❤ από το GitHub
Βήμα 5: Επόμενα βήματα
Η συνέχεια ASSIMILATE ACTOR: KY019 που χρησιμοποιεί αυτό το τούβλο έχει αυτόματη διαμόρφωση για το Crouton μέσω των μεταδεδομένων που είναι ήδη εγκατεστημένα στο ATTINY85 εδώ. Το πακέτο JSON που αποστέλλεται στο Crouton αποστέλλεται μέσω του τελευταίου υλικολογισμικού για το ICOS10. Μπορείτε να κάνετε ένα Proof-of-concept σε ένα συνηθισμένο ESP8266, εάν η κατασκευή είναι υπερβολική προς το παρόν.
Το σκίτσο UNO που χρησιμοποιείται στη Δοκιμή έχει μια λειτουργία για την αποθήκευση μιας νέας διεύθυνσης slave στο EEPROM στο ATTINY85, εάν έχετε σύγκρουση στο διαύλο στόχου I2C.
Έχουν προστεθεί μερικά σχήματα, αλλά υπάρχουν διάφοροι τρόποι να συνδέσετε το κύκλωμα κατάντη ανάλογα με το τι θέλετε να επιτύχετε, οπότε θα το αφήσω για εσάς:)
Συνιστάται:
IOT123 - D1M BLOCK - 2xAMUX Συναρμολόγηση: 7 Βήματα (με Εικόνες)
IOT123 - D1M BLOCK - 2xAMUX Συναρμολόγηση: Τα D1M BLOCKS προσθέτουν απτικές θήκες, ετικέτες, οδηγούς πολικότητας και breakouts για τα δημοφιλή Wemos D1 Mini SOC/Shields/Clones. Ένα από τα προβλήματα με το τσιπ ESP8266 είναι ότι διαθέτει μόνο έναν αναλογικό IO pin. Αυτό το διδακτικό δείχνει πώς να συναρμολογήσετε το 2xA
IOT123 - D1M BLOCK - RFTXRX Συναρμολόγηση: 8 Βήματα
IOT123 - D1M BLOCK - RFTXRX Συναρμολόγηση: Τα D1M BLOCKS προσθέτουν απτικές θήκες, ετικέτες, οδηγούς πολικότητας και breakouts για τα δημοφιλή Wemos D1 Mini SOC/Shields/Clones. Οι πομποί/δέκτες RF επιτρέπουν στο ESP8266 να έχει πρόσβαση σε υπάρχοντα οικιακό/βιομηχανικό αυτοματισμό. Αυτό το περίβλημα παρέχει θραύσεις για 433
IOT123 - D1M BLOCK - GY521 Συναρμολόγηση: 8 Βήματα
IOT123 - D1M BLOCK - GY521 Συναρμολόγηση: Τα D1M BLOCKS προσθέτουν απτικές θήκες, ετικέτες, οδηγούς πολικότητας και breakouts για τα δημοφιλή Wemos D1 Mini SOC/Shields/Clones. Αυτό το D1M BLOCK δίνει μια απλή σύνδεση μεταξύ του Wemos D1 Mini και της μονάδας GY-521 (οι ακίδες διεύθυνσης και διακοπής μπορούν να συνδεθούν
IOT123 - D1M BLOCK - ADXL345 Συναρμολόγηση: 8 Βήματα
IOT123 - D1M BLOCK - ADXL345 Συναρμολόγηση: Τα D1M BLOCKS προσθέτουν απτικές θήκες, ετικέτες, οδηγούς πολικότητας και breakouts για τα δημοφιλή Wemos D1 Mini SOC/Shields/Clones. Αυτό το D1M BLOCK δίνει μια απλή σύνδεση μεταξύ του Wemos D1 Mini και της μονάδας επιταχυνσιόμετρου ADXL345. Το αρχικό μου κίνητρο για ανάπτυξη
IOT123 - D1M CH340G - Συναρμολόγηση: 7 Βήματα
IOT123 - D1M CH340G - Συναρμολόγηση: Ο πίνακας ανάπτυξης ESP8266 είναι ένας καλός οδηγός για τα έργα σας IOT, αλλά παρουσιάζει προβλήματα εάν τροφοδοτούνται από μπαταρία. Είναι καλά τεκμηριωμένο πώς οι διάφοροι πίνακες ανάπτυξης ESP8266 δεν είναι αποδοτικοί σε ενέργεια (εδώ και εδώ). The Witty Develop