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

IOT123 - I2C MQ2 BRICK: 5 βήματα
IOT123 - I2C MQ2 BRICK: 5 βήματα

Βίντεο: IOT123 - I2C MQ2 BRICK: 5 βήματα

Βίντεο: IOT123 - I2C MQ2 BRICK: 5 βήματα
Βίντεο: MQ-2 датчик газов и дыма подключаем к Arduino 2024, Ιούλιος
Anonim
IOT123 - I2C MQ2 BRICK
IOT123 - I2C MQ2 BRICK
IOT123 - I2C MQ2 BRICK
IOT123 - I2C MQ2 BRICK
IOT123 - I2C MQ2 BRICK
IOT123 - I2C MQ2 BRICK
IOT123 - I2C MQ2 BRICK
IOT123 - I2C MQ2 BRICK

Τα τούβλα IOT123 είναι σπονδυλωτές μονάδες DIY που μπορούν να πολτοποιηθούν με άλλα τούβλα IOT123, για να προσθέσουν λειτουργικότητα σε έναν κόμβο ή να φορεθούν. Βασίζονται στα τετράγωνα ίντσα, τα πρωτόπλακα διπλής όψης με διασυνδεδεμένες τρύπες.

Ορισμένα από αυτά τα ΤΟΥΒΑ αναμένεται να βρίσκονται σε πολλούς κόμβους (Master MCUs - ESP8266 ή ATTINY84) σε έναν ιστότοπο. Το MCU δεν χρειάζεται προηγούμενη γνώση του σκοπού των αισθητήρων ή των αναγκών του λογισμικού. Σαρώνει για κόμβους I2C και στη συνέχεια ζητά μια χωματερή ιδιότητας (δεδομένα αισθητήρα) από κάθε υποτελή. Αυτά τα τούβλα παρέχουν 5.0V, 3.3V και άλλη γραμμή AUX που είναι προσαρμόσιμη.

Αυτό το τούβλο I2C MQ2 απορρίπτει 3 ιδιότητες:

Υγραέριο (μέρη ανά εκατομμύριο), CO (PPM), καπνός (PPM)

Αυτός ο αισθητήρας παρείχε ένα ενδιαφέρον σενάριο: Χρειάζονται τουλάχιστον 2 λεπτά (έως 5 λεπτά) για να ζεσταθεί και στη συνέχεια πρέπει να βαθμονομηθεί για 20 δευτερόλεπτα πριν από τη χρήση. Καθώς ο κεντρικός υπολογιστής MCU επιδιώκει μόνο να λάβει ζεύγη ονόματος/τιμής (και ένα μήνυμα συνέχισης), έχουμε εισαγάγει μια ιδιότητα "ΠΡΟΕΤΟΙΜΑΣΙΑ". Καθώς το μήνυμα συνέχισης είναι "1" (θα ακολουθήσουν και άλλα), ο κεντρικός υπολογιστής MCU θα συνεχίσει να κάνει ψηφοφορία για το τούβλο μέχρι να είναι έτοιμο. Επίσης, συνιστάται να "κάψετε" το MQ2 πριν από τη χρήση, δηλαδή να αφήσετε συνδεδεμένο στο κύκλωμά σας 5V για 24 ώρες.

Τα τούβλα αισθητήρων τύπου Keyes θα αφαιρεθούν πρώτα καθώς συνοδεύονται από βιταμίνες (απαιτούνται επιπλέον συστατικά) και είναι σχετικά φτηνά (αγόρασα 37 για 10AUD). Άλλοι πίνακες/κυκλώματα θα εισαχθούν στα τούβλα I2C.

Οι διαμπερείς οπές δίπλα στο ATTINY85 έχουν μείνει αχρησιμοποίητες, για να ενεργοποιήσετε έναν προγραμματιστή καρφιτσών pogo ενώ το DIP8 είναι συγκολλημένο στο PCB.

Μια περαιτέρω αφαίρεση, η συσκευασία των ΤΟΥΒΛΩΝ σε μικρούς κυλίνδρους που συνδέονται σε έναν διανομέα D1M WIFI BLOCK, που αντλεί τις τιμές σε έναν διακομιστή MQTT, αναπτύσσεται.

Βήμα 1: Υλικό και εργαλεία

Υλικό και εργαλεία
Υλικό και εργαλεία
Υλικό και εργαλεία
Υλικό και εργαλεία
Υλικό και εργαλεία
Υλικό και εργαλεία

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

  1. Τούβλο αισθητήρα MQ2 (1)
  2. ATTINY85 20PU (1)
  3. Πρωτόπλακα διπλής όψης (1)
  4. Αρσενική κεφαλίδα 90º (3P, 3P)
  5. Αρσενική κεφαλίδα (2P, 2P)
  6. Jumper Shunt (1)
  7. Σύρμα σύνδεσης (7 ~)
  8. Συγκόλληση και σίδερο (1)

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

Προετοιμάστε το ATTINY85
Προετοιμάστε το ATTINY85
Προετοιμάστε το ATTINY85
Προετοιμάστε το ATTINY85
Προετοιμάστε το ATTINY85
Προετοιμάστε το ATTINY85
Προετοιμάστε το ATTINY85
Προετοιμάστε το ATTINY85

Απαιτείται AttinyCore από το Board Board. Εγγραφή bootloader "EEPROM διατηρήθηκε", "8mHZ Εσωτερικό" (όλα τα διαμορφωμένα εμφανίζονται παραπάνω).

Χρησιμοποιήστε την περιεχόμενη πηγή. μεταγλώττιση και προγραμματισμός στο ATtiny85.

Το GIST είναι εδώ:

gist.github.com/IOT-123/4c501046d365d01a60…

Μπορείτε να βρείτε περισσότερες λεπτομέρειες σε αυτές τις οδηγίες:

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 πριν συνεχίσετε.

Εάν έχετε υπάρχοντες ΑΙΣΘΗΤΗΡΕΣ ΑΙΣΘΗΤΗΡΕΣ, βεβαιωθείτε ότι η διεύθυνση υποτελείας είναι διαφορετική σε έναν συνδυασμό ΑΙΣΘΗΤΗΡΑ/MCU Host, δηλαδή όλοι οι αισθητήρες θερμοκρασίας μπορούν να έχουν την ίδια διεύθυνση αρκεί να έχετε μόνο έναν αισθητήρα θερμοκρασίας σε έναν MCU/κόμβο.

Βήμα 3: Συναρμολογήστε το κύκλωμα

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

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

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

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

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

  1. Ανεβάστε τον κωδικό UNO στη ζώνη δοκιμής UNO. Βεβαιωθείτε ότι το ADDRESS_SLAVE αντιστοιχεί στη διεύθυνση I2C του BRICK.
  2. Συνδέστε το 5.0V στο UNO σε ένα VCC στο BRICK.
  3. Βεβαιωθείτε ότι ο βραχυκυκλωτήρας είναι ενεργοποιημένος.
  4. Συνδέστε το GND στο UNO στο GND στο BRICK.
  5. Συνδέστε το A5 στο UNO στο SCL στο BRICK.
  6. Συνδέστε το A4 στο UNO στο SDA στο BRICK.
  7. Συνδέστε μια αντίσταση έλξης 4K7 από το SDA στο VCC.
  8. Συνδέστε μια αντίσταση έλξης 4K7 από SCL στο VCC.
  9. Συνδέστε το UNO στον υπολογιστή σας Dev με USB.
  10. Ανοίξτε την κονσόλα Arduino. Επιλέξτε 9600 baud (επανεκκινήστε το UNO και ανοίξτε ξανά την κονσόλα αν χρειαστεί).
  11. Τα ονόματα ιδιοτήτων και οι τιμές θα πρέπει να εκτυπωθούν στην κονσόλα μία φορά και στη συνέχεια να επαναληφθεί η λέξη ύπνος.

Αν δείτε "εγκατάσταση" τότε επαναλαμβάνονται 3 γραμμές σκουπιδιών, μπορεί να έχετε τις γραμμές SDA και SCL πίσω.

Κύρια καταγραφή I2C από υποτελή I2C με υποστήριξη plotter/μεταδεδομένων

#περιλαμβάνω
#defineADDRESS_SLAVE10
bool _outputPlotterOnly = false;
bool _confirmMetadata = false;
int _packetSegment = 0;
bool _i2cNodeProcessed = false;
char _property [2] [24] = {"όνομα", "αξία"};
voidsetup () {
Wire.begin (); // συμμετοχή i2c bus (διεύθυνση προαιρετική για master)
Serial.begin (9600); // έναρξη σειράς για έξοδο
καθυστέρηση (1000)?
εάν (! _outputPlotterOnly) {
Serial.println ("εγκατάσταση");
Serial.println ();
}
}
voidloop () {
εάν (_i2cNodeProcessed) {
εάν (! _confirmMetadata) {// ενημερώστε τον υποτελή για να ξεκινήσει την αποστολή δεδομένων αισθητήρα
καθυστέρηση (1)?
Wire.beginTransmission (ADDRESS_SLAVE);
Wire.write (1);
Wire.endTransmission ();
καθυστέρηση (100)?
_confirmMetadata = true;
}
_i2cNodeProcessed = false;
εάν (! _outputPlotterOnly) {
Serial.println ();
}
ΕΠΙΣΤΡΟΦΗ;
}
Wire.requestFrom (ADDRESS_SLAVE, 16);
_packetSegment ++;
πακέτο char [16];
intindex = 0;
bool isContinueSegment = false; // continueSegment (το 3ο) 1 = περισσότερα, 0 = τελευταία
ενώ το (Wire.available ()) {// slave μπορεί να στείλει λιγότερα από όσα ζητήθηκαν
char c = Wire.read ();
πακέτο [index] = int (c)> -1? c: ''; // αντικαταστήστε τους άκυρους χαρακτήρες με κενά
εάν (_packetSegment == 3) {
_packetSegment = 0;
isContinueSegment = true;
//Serial.println("------------- ");
//Serial.println(int(c));
//Serial.println("------------- ");
εάν (int (c) == 48 || int (c) == 86) {// 0 στην τελευταία ιδιότητα
_i2cNodeProcessed = true;
// αποστολή τιμών στο MQTT
Διακοπή;
}
}
ευρετήριο ++;
}
εάν (! isContinueSegment) {
εάν (! _outputPlotterOnly) {
Serial.println (πακέτο);
}
strcpy (_property [_packetSegment - 1], πακέτο); // ορίστε τοπική μεταβλητή με όνομα/τιμή
}αλλού{
εάν (_outputPlotterOnly && _confirmMetadata) {
εάν (_i2cNodeProcessed) {
Serial.println (_ ιδιοκτησία [1]);
}αλλού{
Serial.print (_ ιδιοκτησία [1]);
Serial.print ("");
}
}
}
}

προβολή rawuno_i2c_generic_sensor_test_w_plotter_v2.ino που φιλοξενείται με ❤ από το GitHub

Βήμα 5: Επόμενα βήματα

Η βασική διάταξη του κυκλώματος και το στρώμα I2C του λογισμικού σχετίζεται με πολλούς διαφορετικούς αισθητήρες. Το κύριο πράγμα για να ξεκινήσετε είναι το πακέτο σύμβασης μεταξύ κυρίου και σκλάβου.

Έχω σχεδιάσει/ξεκινήσει ένα (τρισδιάστατα τυπωμένο) πακέτο δίκτυο αισθητήρων που χρησιμοποιούν αυτό το πλαίσιο και θα συνδέονται με αυτό καθώς δημοσιεύονται μέρη.

Αυτό το BLOCK χρησιμοποιείται από τον αισθητήρα MQ2 ASSIMILATE SENSOR.

Συνιστάται: