Cuprins:
- Pasul 1: Material și instrumente
- Pasul 2: Pregătiți ATTINY85
- Pasul 3: Asamblați circuitul
- Pasul 4: Testarea
- Pasul 5: Pașii următori
Video: IOT123 - I2C MQ2 BRICK: 5 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:45
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
Există o listă completă de materiale și aprovizionare.
- Caramida senzorului MQ2 (1)
- ATTINY85 20PU (1)
- 1 "Protoboard dublu (1)
- Antet masculin 90º (3P, 3P)
- Antet masculin (2P, 2P)
- Jumper Shunt (1)
- Sârmă de conectare (~ 7)
- Sudură și fier (1)
Pasul 2: 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
- În față, introduceți componentele ATTINY85 (1), anteturi masculine 3P 90deg (2) (3), anteturi masculine 2P (4) (5) și lipiți pe spate.
- În spate, urmăriți un fir portocaliu de la ORANGE1 la ORANGE2 și lipiți.
- În spate, urmăriți un fir albastru de la ALBASTRU1 la ALBĂRAT2 și lipiți.
- În spate, urmăriți un fir verde de la GREEN1 la GREEN2 și lipiți.
- În spate, urmăriți un fir gol de la SILVER1 la SILVER2 și lipiți.
- În spate, urmăriți un fir gol de la SILVER3 la SILVER4 și lipiți.
- În spate, urmăriți un fir negru de la BLACK1 la BLACK2 și lipiți.
- În spate, urmăriți un fir negru de la BLACK3 la BLACK4 și lipiți.
- În spate, urmăriți un fir roșu de la RED1 la RED2 și lipiți.
- În spate, urmăriți un fir roșu de la RED3 la RED4 și lipiți.
- Î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
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.
- Încărcați codul UNO pe hamul de testare UNO. Asigurați-vă că ADDRESS_SLAVE se potrivește cu adresa I2C a BRICK.
- Conectați 5.0V pe UNO la un VCC pe BRICK.
- Asigurați-vă că jumperul pentru acul respectiv este pornit.
- Conectați GND pe UNO la GND pe BRICK.
- Conectați A5 pe UNO la SCL pe BRICK.
- Conectați A4 pe UNO la SDA pe BRICK.
- Conectați un rezistor de tragere 4K7 de la SDA la VCC.
- Conectați un rezistor de tragere 4K7 de la SCL la VCC.
- Conectați-vă UNO la computerul dvs. Dev cu USB.
- Deschideți Consola Arduino. Alegeți 9600 baud (reporniți UNO și redeschideți consola dacă trebuie).
- 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:
Proiect Arduino Brick Color Sorter: 5 pași
Proiect Arduino Brick Color Sorter: În acest tutorial Arduino, vom învăța cum să detectez culorile cărămizii mele de jucărie folosind Arduino și senzorul de culoare TCS3200. Puteți citi tutorialul scris de mai jos pentru mai multe detalii.Materiale: Arduino Leonardo x 1TCS3200 x 1Multi cartoane180 Servo
IOT123 - D1M BLOCK - Asamblare 2xAMUX: 7 pași (cu imagini)
IOT123 - D1M BLOCK - 2xAMUX Assembly: D1M BLOCKS adaugă carcase tactile, etichete, ghiduri de polaritate și breakouts pentru popularul Wemos D1 Mini SOC / Shields / Clones. Una dintre problemele cu cipul ESP8266 este că are disponibil un singur pin analogic IO. Acest instructable arată cum să asamblați 2xA
IOT123 - ASIMILAȚI SENZORUL: MQ2: 4 pași
IOT123 - ASSIMILATE SENSOR: MQ2: ASSIMILATE SENSORS sunt senzori de mediu care au un strat de abstractizare hardware și software adăugat, ceea ce face posibilă adăugarea unor tipuri complet noi la un HUB ASSIMILATE SENSOR și citirile să fie pompate pe un server MQTT fără codin adăugat
IOT123 - LAR2032 BATERY BRICK: 4 pași
IOT123 - LIR2032 BATERY BRICK: IOT123 BRICKS sunt unități modulare DIY care pot fi amestecate cu alte IOT123 BRICK, pentru a adăuga funcționalitate unui nod sau purtabil. Acestea se bazează pe protoboardele pătrate, cu două fețe, cu găuri interconectate. Deși instrucțiunile
IOT123 - 5PIN ATTINY85 NRF24L01 BRICK: 4 pași
IOT123 - 5PIN ATTINY85 NRF24L01 BRICK: UPDATE: Această configurație este în mare parte academică sau o bază pentru testarea software-ului / sursei de alimentare. Chiar și atunci când PB5 este dezactivat ca RESET, nu citește valorile cu precizie folosind analogRead: cazul principal de utilizare pentru citirile senzorilor. Se va uita la configurarea ATTINY84