Innehållsförteckning:

IOT123 - I2C MQ2 BRICK: 5 steg
IOT123 - I2C MQ2 BRICK: 5 steg

Video: IOT123 - I2C MQ2 BRICK: 5 steg

Video: IOT123 - I2C MQ2 BRICK: 5 steg
Video: MQ-2 датчик газов и дыма подключаем к Arduino 2024, Juli
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 är DIY modulära enheter som kan mosas ihop med andra IOT123 BRICKS, för att lägga till funktionalitet till en nod eller bärbar. De är baserade på tums fyrkantiga, dubbelsidiga protoboards med sammankopplade genomgående hål.

Ett antal av dessa BRICKS förväntas finnas på flera noder (Master MCU: er - ESP8266 eller ATTINY84) på en webbplats. MCU behöver ingen förkunskap om sensorernas syfte eller programvarubehov. Den söker efter I2C -noder och begär sedan en egendomsdump (sensordata) från varje slav. Dessa BRICK levererar 5.0V, 3.3V och en annan AUX -linje som kan anpassas.

Denna I2C MQ2 BRICK tömmer 3 egenskaper:

LPG (Parts Per Million), CO (PPM), SMOKE (PPM)

Denna sensor gav ett intressant scenario: Den behöver minst 2 minuter (upp till 5 minuter) för att värmas upp, sedan måste den kalibreras i 20 sekunder före användning. Eftersom värd -MCU: n bara har för avsikt att få namn/värdepar (och ett fortsättningsmeddelande) har vi introducerat en "PREPARE" -egenskap. Eftersom fortsättningsmeddelandet är "1" (mer kommer) kommer värd -MCU: n att fortsätta att polla TICKEN tills den är klar. Det rekommenderas också att "bränna in" MQ2 före användning, dvs lämna ansluten till din 5V-krets i 24 timmar.

Sensorstenarna av Keyes -typen tas ut först eftersom de kommer med vitaminer (extra komponenter behövs) och är relativt billiga (jag köpte 37 för 10AUD). Andra kort/kretsar kommer att introduceras för I2C BRICKS.

De genomgående hålen intill ATTINY85 har lämnats oanvända för att möjliggöra en pogo-stiftprogrammerare medan DIP8 löds till kretskortet.

En ytterligare abstraktion, förpackning av BRICKS i små cylindrar som ansluts till ett D1M WIFI BLOCK -nav, som pumpar värdena till en MQTT -server, utvecklas.

Steg 1: Material och verktyg

Material och verktyg
Material och verktyg
Material och verktyg
Material och verktyg
Material och verktyg
Material och verktyg

Det finns en fullständig lista över material och inköpslista.

  1. MQ2 sensorsten (1)
  2. ATTINY85 20PU (1)
  3. 1 "dubbelsidig protoboard (1)
  4. Manlig header 90º (3P, 3P)
  5. Manlig huvud (2P, 2P)
  6. Tröja Shunt (1)
  7. Anslutningstråd (~ 7)
  8. Löd och järn (1)

Steg 2: Förbered ATTINY85

Förbered ATTINY85
Förbered ATTINY85
Förbered ATTINY85
Förbered ATTINY85
Förbered ATTINY85
Förbered ATTINY85
Förbered ATTINY85
Förbered ATTINY85

AttinyCore från styrelsechefen behövs. Bränn bootloader "EEPROM Behållen", "8mHZ Internal" (all konfiguration visas ovan).

Använd den medföljande källan; kompilera och programmera till ATtiny85.

GIST är här:

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

Du kan hitta mer information i dessa instruktioner:

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…

Bäst att testa via brödbräda innan du fortsätter.

Om du har befintliga ASSIMILATE SENSORS, se till att slavadressen är annorlunda på en SENSOR/MCU -värdkombination, dvs alla temperatursensorer kan ha samma adress så länge du bara har en temperatursensor på en MCU/nod.

Steg 3: Montera kretsen

Montera kretsen
Montera kretsen
Montera kretsen
Montera kretsen
Montera kretsen
Montera kretsen
  1. På framsidan sätter du in komponenterna ATTINY85 (1), 3P 90deg hanrubriker (2) (3), 2P hanrubriker (4) (5) och löds av på baksidan.
  2. På baksidan, spåra en orange tråd från ORANGE1 till ORANGE2 och löd.
  3. På baksidan, spåra en blå tråd från BLUE1 till BLUE2 och löd.
  4. På baksidan, spåra en grön tråd från GREEN1 till GREEN2 och löd.
  5. På baksidan, spåra en bar tråd från SILVER1 till SILVER2 och löd.
  6. På baksidan, spåra en bar tråd från SILVER3 till SILVER4 och löd.
  7. På baksidan, spåra en svart tråd från BLACK1 till BLACK2 och löd.
  8. På baksidan, spåra en svart tråd från BLACK3 till BLACK4 och löd.
  9. På baksidan, spåra en röd tråd från RED1 till RED2 och löd.
  10. På baksidan, spåra en röd tråd från RED3 till RED4 och löd.
  11. På baksidan, spåra en gul tråd från GUL1 till GUL 2 och löd.

Sensorn kan nu anslutas direkt via sina stift till kretskortet eller via ledningar, till punkterna som visas i stiftkontraktet.

Steg 4: Testning

Testning
Testning
Testning
Testning
Testning
Testning

Ett antal av dessa BRICKS förväntas finnas på flera noder (MCU: er - ESP8266 eller ATTINY84) i en miljö. Detta är ett enhetstest: kontrollerar UNO -förfrågningar/svar tills alla data har dumpats och försummar sedan I2C -slaven.

  1. Ladda upp UNO -koden till din UNO -testbälte. Se till att ADDRESS_SLAVE matchar BRICK: s I2C -adress.
  2. Anslut 5.0V på UNO till en VCC på BRICK.
  3. Se till att bygeln för den stiftet är på.
  4. Anslut GND på UNO till GND på BRICK.
  5. Anslut A5 på UNO till SCL på BRICK.
  6. Anslut A4 på UNO till SDA på BRICK.
  7. Anslut ett upptagningsmotstånd 4K7 från SDA till VCC.
  8. Anslut ett 4K7 uppdragningsmotstånd från SCL till VCC.
  9. Anslut din UNO till din Dev PC med USB.
  10. Öppna Arduino -konsolen. Välj 9600 baud (starta om UNO och öppna konsolen igen om du måste).
  11. Egenskapsnamnen och värdena ska skrivas ut till konsolen en gång sedan upprepas ordet viloläge.

Om du ser "setup" kan tre rader av sopor upprepas, du kan ha dina SDA- och SCL -linjer bakåt.

I2C Master -loggning från I2C -slav med stöd för plotter/metadata

#omfatta
#defineADDRESS_SLAVE10
bool _outputPlotterOnly = false;
bool _confirmedMetadata = false;
int _packetSegment = 0;
bool _i2cNodeProcessed = false;
char _property [2] [24] = {"namn", "värde"};
voidsetup () {
Wire.begin (); // gå med i2c -buss (adress valfri för master)
Serial.begin (9600); // start seriell för utmatning
fördröjning (1000);
if (! _outputPlotterOnly) {
Serial.println ("setup");
Serial.println ();
}
}
voidloop () {
if (_i2cNodeProcessed) {
if (! _confirmedMetadata) {// meddela slaven att börja skicka sensordata
fördröjning (1);
Wire.beginTransmission (ADDRESS_SLAVE);
Wire.write (1);
Wire.endTransmission ();
fördröjning (100);
_confirmedMetadata = true;
}
_i2cNodeProcessed = false;
if (! _outputPlotterOnly) {
Serial.println ();
}
lämna tillbaka;
}
Wire.requestFrom (ADDRESS_SLAVE, 16);
_packetSegment ++;
rödningspaket [16];
intindex = 0;
bool isContinueSegment = false; // continueSegment (den tredje) 1 = mer, 0 = sista
medan (Wire.available ()) {// slav kan skicka mindre än begärt
char c = Wire.read ();
paket [index] = int (c)> -1? c: ''; // ersätt ogiltiga tecken med mellanslag
if (_packetSegment == 3) {
_packetSegment = 0;
isContinueSegment = true;
//Serial.println("------------- ");
//Serial.println(int(c));
//Serial.println("------------- ");
if (int (c) == 48 || int (c) == 86) {// 0 på sista egenskapen
_i2cNodeProcessed = true;
// skicka värden till MQTT
ha sönder;
}
}
index ++;
}
if (! isContinueSegment) {
if (! _outputPlotterOnly) {
Serial.println (paket);
}
strcpy (_property [_packetSegment - 1], paket); // ställ in lokal var med namn/värde
}annan{
if (_outputPlotterOnly && _confirmedMetadata) {
if (_i2cNodeProcessed) {
Serial.println (_property [1]);
}annan{
Serial.print (_property [1]);
Serial.print ("");
}
}
}
}

visa rawuno_i2c_generic_sensor_test_w_plotter_v2.ino värd med ❤ av GitHub

Steg 5: Nästa steg

Den grundläggande layouten för kretsen och I2C-lagret i programvaran kan relateras till många olika sensorer. Det viktigaste att börja med är paketkontraktet mellan master och slav.

Jag har planerat/startat ett (3D -tryckt) paketerat nätverk av sensorer som använder detta ramverk och kommer att länka till det när delar publiceras.

Denna BLOCK används av MQ2 ASSIMILATE SENSOR.

Rekommenderad: