Cuprins:

IOT123 - I2C MQ2 BRICK: 5 pași
IOT123 - I2C MQ2 BRICK: 5 pași

Video: IOT123 - I2C MQ2 BRICK: 5 pași

Video: IOT123 - I2C MQ2 BRICK: 5 pași
Video: MQ-2 датчик газов и дыма подключаем к Arduino 2024, Iulie
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 BRICKS sunt unități modulare DIY care pot fi amestecate cu alte IOT123 BRICKS, pentru a adăuga funcționalitate unui nod sau purtabil. Acestea se bazează pe protoboardele cu două fețe pătrate de inch, cu găuri interconectate.

Un număr dintre aceste BRICKS se așteaptă să fie pe mai multe noduri (Master MCU - ESP8266 sau ATTINY84) pe un site. MCU nu are nevoie de cunoștințe prealabile despre scopul senzorilor sau despre nevoile software-ului. Acesta scanează nodurile I2C, apoi solicită o descărcare a proprietății (date senzor) de la fiecare sclav. Aceste cărămizi furnizează 5.0V, 3.3V și o altă linie AUX personalizabilă.

Acest I2C MQ2 BRICK aruncă 3 proprietăți:

GPL (Părți pe milion), CO (PPM), FUM (PPM)

Acest senzor a oferit un scenariu interesant: are nevoie de cel puțin 2 minute (până la 5 minute) pentru a se încălzi, apoi trebuie calibrat timp de 20 de secunde înainte de utilizare. Deoarece MCU-ul gazdă este intesetat doar în obținerea de perechi nume / valoare (și un mesaj de continuare), am introdus o proprietate „PREPARE”. Deoarece mesajul său continuu este „1” (mai multe vor veni), MCU gazdă va continua să sondeze BRICK până când este gata. De asemenea, se recomandă „Burn-in” MQ2 înainte de utilizare, adică lăsați-l conectat la circuitul de 5V timp de 24 de ore.

Cărămizile senzorului de tip Keyes vor fi extrase mai întâi deoarece vin cu vitamine (sunt necesare componente suplimentare) incluse și sunt relativ ieftine (am cumpărat 37 pentru 10AUD). Alte plăci / circuite vor fi introduse la I2C BRICKS.

Găurile de trecere adiacente ATTINY85 au fost lăsate neutilizate, pentru a permite un programator pogo pin în timp ce DIP8 este lipit pe PCB.

O altă abstracție, ambalarea BRICKS în cilindri mici care se conectează la un hub D1M WIFI BLOCK, pompând valorile către un server MQTT, este în curs de dezvoltare.

Pasul 1: Material și instrumente

Material și instrumente
Material și instrumente
Material și instrumente
Material și instrumente
Material și instrumente
Material și instrumente

Există o listă completă de materiale și aprovizionare.

  1. Caramida senzorului MQ2 (1)
  2. ATTINY85 20PU (1)
  3. 1 "Protoboard dublu (1)
  4. Antet masculin 90º (3P, 3P)
  5. Antet masculin (2P, 2P)
  6. Jumper Shunt (1)
  7. Sârmă de conectare (~ 7)
  8. Sudură și fier (1)

Pasul 2: Pregătiți ATTINY85

Pregătiți ATTINY85
Pregătiți ATTINY85
Pregătiți ATTINY85
Pregătiți ATTINY85
Pregătiți ATTINY85
Pregătiți ATTINY85
Pregătiți ATTINY85
Pregătiți ATTINY85

Este nevoie de AttinyCore de la managerul de borduri. Ardeți încărcătorul de încărcare „EEPROM păstrat”, „8mHZ intern” (toate configurațiile sunt prezentate mai sus).

Folosiți sursa inclusă; compilați și programați la ATtiny85.

GIST este aici:

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

Puteți găsi mai multe detalii în aceste instructabile:

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…

Cel mai bine este să testați prin panou înainte de a continua.

Dacă aveți SENZORI ASSIMILATE, asigurați-vă că adresa slave este diferită pe o combinație gazdă SENZOR / MCU, adică toți senzorii de temperatură pot avea aceeași adresă atâta timp cât aveți un singur senzor de temperatură pe un MCU / nod.

Pasul 3: Asamblați circuitul

Asamblați circuitul
Asamblați circuitul
Asamblați circuitul
Asamblați circuitul
Asamblați circuitul
Asamblați circuitul
  1. În față, introduceți componentele ATTINY85 (1), anteturi masculine 3P 90deg (2) (3), anteturi masculine 2P (4) (5) și lipiți pe spate.
  2. În spate, urmăriți un fir portocaliu de la ORANGE1 la ORANGE2 și lipiți.
  3. În spate, urmăriți un fir albastru de la ALBASTRU1 la ALBĂRAT2 și lipiți.
  4. În spate, urmăriți un fir verde de la GREEN1 la GREEN2 și lipiți.
  5. În spate, urmăriți un fir gol de la SILVER1 la SILVER2 și lipiți.
  6. În spate, urmăriți un fir gol de la SILVER3 la SILVER4 și lipiți.
  7. În spate, urmăriți un fir negru de la BLACK1 la BLACK2 și lipiți.
  8. În spate, urmăriți un fir negru de la BLACK3 la BLACK4 și lipiți.
  9. În spate, urmăriți un fir roșu de la RED1 la RED2 și lipiți.
  10. În spate, urmăriți un fir roșu de la RED3 la RED4 și lipiți.
  11. În spate, urmăriți un fir galben de la GALBEN1 la GALBEN2 și lipiți.

Senzorul poate fi acum conectat direct prin pinii săi la PCB sau prin fire, la punctele prezentate în contractul pinului.

Pasul 4: Testarea

Testarea
Testarea
Testarea
Testarea
Testarea
Testarea

Un număr dintre aceste BRICKS se așteaptă să fie pe mai multe noduri (MCU - ESP8266 sau ATTINY84) într-un mediu. Acesta este un test unitar: verifică solicitările / răspunsurile UNO până când toate datele au fost aruncate, apoi neglijează sclavul I2C.

  1. Încărcați codul UNO pe hamul de testare UNO. Asigurați-vă că ADDRESS_SLAVE se potrivește cu adresa I2C a BRICK.
  2. Conectați 5.0V pe UNO la un VCC pe BRICK.
  3. Asigurați-vă că jumperul pentru acul respectiv este pornit.
  4. Conectați GND pe UNO la GND pe BRICK.
  5. Conectați A5 pe UNO la SCL pe BRICK.
  6. Conectați A4 pe UNO la SDA pe BRICK.
  7. Conectați un rezistor de tragere 4K7 de la SDA la VCC.
  8. Conectați un rezistor de tragere 4K7 de la SCL la VCC.
  9. Conectați-vă UNO la computerul dvs. Dev cu USB.
  10. Deschideți Consola Arduino. Alegeți 9600 baud (reporniți UNO și redeschideți consola dacă trebuie).
  11. Numele și valorile proprietății ar trebui să fie tipărite pe consolă odată ce cuvântul sleep este repetat.

Dacă vedeți „configurare”, atunci se repetă 3 linii de gunoi, este posibil să aveți liniile SDA și SCL înapoi în față.

Logare I2C Master de la I2C slave cu suport pentru plotter / metadate

#include
# defineADDRESS_SLAVE10
bool _outputPlotterOnly = false;
bool _confirmedMetadata = false;
int _packetSegment = 0;
bool _i2cNodeProcessed = false;
char _property [2] [24] = {"nume", "valoare"};
voidsetup () {
Wire.begin (); // alăturați autobuzului i2c (adresa opțională pentru master)
Serial.begin (9600); // începe serialul pentru ieșire
întârziere (1000);
if (! _outputPlotterOnly) {
Serial.println ("setup");
Serial.println ();
}
}
voidloop () {
if (_i2cNodeProcessed) {
if (! _confirmedMetadata) {// anunțați sclavul să înceapă să trimită date despre senzori
întârziere (1);
Wire.beginTransmission (ADDRESS_SLAVE);
Wire.write (1);
Wire.endTransmission ();
întârziere (100);
_confirmatMetadata = adevărat;
}
_i2cNodeProcessed = false;
if (! _outputPlotterOnly) {
Serial.println ();
}
întoarcere;
}
Wire.requestFrom (ADDRESS_SLAVE, 16);
_packetSegment ++;
pachet char [16];
intindex = 0;
bool isContinueSegment = false; // continueSegment (al treilea) 1 = mai mult, 0 = ultimul
while (Wire.available ()) {// slave poate trimite mai puțin decât s-a solicitat
char c = Wire.read ();
pachet [index] = int (c)> -1? c: ''; // înlocuiți caractere nevalide cu spații
if (_packetSegment == 3) {
_packetSegment = 0;
isContinueSegment = adevărat;
//Serial.println("------------- ");
//Serial.println(int(c));
//Serial.println("------------- ");
if (int (c) == 48 || int (c) == 86) {// 0 pe ultima proprietate
_i2cNodeProcessed = adevărat;
// trimite valori către MQTT
pauză;
}
}
index ++;
}
if (! isContinueSegment) {
if (! _outputPlotterOnly) {
Serial.println (pachet);
}
strcpy (_property [_packetSegment - 1], pachet); // set var local cu nume / valoare
} altceva {
if (_outputPlotterOnly && _confirmMetadata) {
if (_i2cNodeProcessed) {
Serial.println (_property [1]);
} altceva {
Serial.print (_property [1]);
Serial.print ("");
}
}
}
}

vizualizați rawuno_i2c_generic_sensor_test_w_plotter_v2.ino găzduit cu ❤ de GitHub

Pasul 5: Pașii următori

Aspectul de bază al circuitului și stratul I2C al software-ului este legat de mulți senzori diferiți. Principalul lucru pe care trebuie să-l faceți corect este, în primul rând, contractul de pachete între stăpân și sclav.

Am programat / pornit o rețea (imprimată 3D) de senzori care utilizează acest cadru și o voi conecta pe măsură ce părțile sunt publicate.

Acest BLOC este utilizat de MQ2 ASSIMILATE SENSOR.

Recomandat: