Πίνακας περιεχομένων:

IOT123 - I2C KY019 ΤΟΥΒΑ: 5 Βήματα
IOT123 - I2C KY019 ΤΟΥΒΑ: 5 Βήματα

Βίντεο: IOT123 - I2C KY019 ΤΟΥΒΑ: 5 Βήματα

Βίντεο: IOT123 - I2C KY019 ΤΟΥΒΑ: 5 Βήματα
Βίντεο: Arduino keypad door lock with i2c LCD -Test1 2024, Ιούλιος
Anonim
ΤΟΠΤΟ IOT123 - I2C KY019
ΤΟΠΤΟ IOT123 - I2C KY019
ΤΟΠΤΟ IOT123 - I2C KY019
ΤΟΠΤΟ IOT123 - I2C KY019

Τα τούβλα 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: Υλικά και εργαλεία

Υλικά και Εργαλεία
Υλικά και Εργαλεία
Υλικά και Εργαλεία
Υλικά και Εργαλεία
Υλικά και Εργαλεία
Υλικά και Εργαλεία

Υπάρχει μια πλήρης λίστα λογαριασμών υλικού και πηγών.

  1. Ρελέ KY-019 (1)
  2. ATTINY85 20PU (1)
  3. Πρωτόπλακα διπλής όψης (1)
  4. Αρσενική κεφαλίδα 90º (3P, 3P)
  5. Σύρμα σύνδεσης (7 ~)
  6. Συγκόλληση και σίδερο (1)

Βήμα 2: Προετοιμάστε το ATTINY85

Προετοιμάστε το ATTINY85
Προετοιμάστε το ATTINY85
Προετοιμάστε το ATTINY85
Προετοιμάστε το ATTINY85
Προετοιμάστε το ATTINY85
Προετοιμάστε το 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: Συναρμολογήστε το κύκλωμα

Συναρμολογήστε το Κύκλωμα
Συναρμολογήστε το Κύκλωμα
Συναρμολογήστε το Κύκλωμα
Συναρμολογήστε το Κύκλωμα
Συναρμολογήστε το Κύκλωμα
Συναρμολογήστε το Κύκλωμα
Συναρμολογήστε το Κύκλωμα
Συναρμολογήστε το Κύκλωμα
  1. Στο μπροστινό μέρος, τοποθετήστε τα εξαρτήματα ATTINY85 (1), 3P 90deg αρσενικές κεφαλές (2) (3) και κολλήστε τα στο πίσω μέρος.
  2. Στο πίσω μέρος, εντοπίστε ένα κίτρινο καλώδιο από το YELLOW1 στο YELLOW2 και κολλήστε το.
  3. Στο πίσω μέρος, εντοπίστε ένα μπλε σύρμα από BLUE1 σε BLUE2 και κολλήστε.
  4. Στο πίσω μέρος, εντοπίστε ένα πράσινο καλώδιο από το GREEN1 στο GREEN2 και κολλήστε το.
  5. Στο πίσω μέρος, εντοπίστε ένα μαύρο καλώδιο από BLACK1 σε BLACK2 και κολλήστε.
  6. Στο πίσω μέρος, εντοπίστε ένα μαύρο καλώδιο από BLACK3 σε BLACK4 και κολλήστε.
  7. Στο πίσω μέρος, εντοπίστε ένα κόκκινο σύρμα από RED1 έως RED2 και κολλήστε.
  8. Στο πίσω μέρος, εντοπίστε ένα κόκκινο σύρμα από RED3 έως RED4 και κολλήστε.

Το ρελέ μπορεί τώρα να συνδεθεί απευθείας μέσω των ακίδων του στο PCB ή μέσω καλωδίων, στα σημεία που εμφανίζονται στη σύμβαση ακίδων.

Βήμα 4: Δοκιμή

Δοκιμές
Δοκιμές
Δοκιμές
Δοκιμές
Δοκιμές
Δοκιμές

Ορισμένα από αυτά τα ΤΟΥΒΑ αναμένεται να βρίσκονται σε πολλούς κόμβους (MCUs - ESP8266 ή ATTINY84) σε ένα περιβάλλον. Αυτή είναι μια δοκιμή μονάδας: στέλνει εντολές I2C από το UNO στο ATTINY που ανοίγει ή κλείνει το ρελέ.

Έχουμε δημιουργήσει προηγουμένως ένα I2C SHIELD για το Arduino.

Αν θέλετε αντ 'αυτού να πάρετε το breadboard:

  1. Συνδέστε το 5.0V στο UNO σε ένα VCC στο BRICK.
  2. Συνδέστε το GND στο UNO στο GND στο BRICK.
  3. Συνδέστε το A5 στο UNO στο SCL στο BRICK.
  4. Συνδέστε το A4 στο UNO στο SDA στο BRICK.
  5. Συνδέστε μια αντίσταση έλξης 4K7 από το SDA στο VCC.
  6. Συνδέστε μια αντίσταση έλξης 4K7 από SCL στο VCC.

Εκτέλεση της δοκιμής

  1. Συνδέστε το UNO στον υπολογιστή σας Dev με USB.
  2. Ανεβάστε τον κωδικό στο UNO.
  3. Ανοίξτε την κονσόλα Arduino. Επιλέξτε 9600 baud (επανεκκινήστε το UNO και ανοίξτε ξανά την κονσόλα αν χρειαστεί).
  4. Η διεύθυνση του slave θα εκτυπωθεί στην κονσόλα.
  5. Όταν, πληκτρολογήστε στο πλαίσιο αποστολής 2 1 (άρα 12 2 1) και το ρελέ ενεργοποιείται.
  6. Όταν, πληκτρολογήστε στο πλαίσιο αποστολής 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.

Έχουν προστεθεί μερικά σχήματα, αλλά υπάρχουν διάφοροι τρόποι να συνδέσετε το κύκλωμα κατάντη ανάλογα με το τι θέλετε να επιτύχετε, οπότε θα το αφήσω για εσάς:)

Συνιστάται: