Innholdsfortegnelse:

IOT123 - I2C MQ2 BRICK: 5 trinn
IOT123 - I2C MQ2 BRICK: 5 trinn

Video: IOT123 - I2C MQ2 BRICK: 5 trinn

Video: IOT123 - I2C MQ2 BRICK: 5 trinn
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 er DIY modulære enheter som kan moses sammen med andre IOT123 BRICKS, for å legge funksjonalitet til en node eller bærbar. De er basert på tommers firkantede, tosidige protoboard med sammenkoblede gjennomgående hull.

En rekke av disse BRICKS forventes å være på flere noder (Master MCUer - ESP8266 eller ATTINY84) på et nettsted. MCU trenger ingen forkunnskaper om sensorens formål eller programvarebehov. Den søker etter I2C -noder og ber deretter om en eiendomsdump (sensordata) fra hver slave. Disse BRICKene leverer 5.0V, 3.3V og en annen AUX -linje som kan tilpasses.

Denne I2C MQ2 BRICK fyller 3 eiendommer:

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

Denne sensoren ga et interessant scenario: Den trenger minst 2 minutter (opptil 5 minutter) for å varme opp, deretter må den kalibreres i 20 sekunder før bruk. Siden verts -MCU -en bare har til hensikt å få navn/verdi -par (og en fortsett -melding), har vi introdusert en "PREPARE" -egenskap. Siden fortsettelsesmeldingen er "1" (mer kommer), vil MCU -verten fortsette å avstemme BRICK til den er klar. Det anbefales også å "Brenne inn" MQ2 før bruk, dvs. la den være tilkoblet 5V-kretsen i 24 timer.

Sensorbrikkene av Keyes -typen blir først abstrahert ettersom de kommer med vitaminer (ekstra komponenter nødvendig) inkludert og er relativt tøffe (jeg kjøpte 37 for 10AUD). Andre tavler/kretser vil bli introdusert for I2C BRICKS.

Gjennomføringshullene ved siden av ATTINY85 har blitt ubrukt, for å muliggjøre en pogo pin programmerer mens DIP8 er loddet til PCB.

En ytterligere abstraksjon, pakking av BRICKS i små sylindere som kobles til en D1M WIFI BLOCK -hub, som pumper verdiene til en MQTT -server, utvikles.

Trinn 1: Materiale og verktøy

Materiale og verktøy
Materiale og verktøy
Materiale og verktøy
Materiale og verktøy
Materiale og verktøy
Materiale og verktøy

Det er en fullstendig oversikt over materiale og innkjøpsliste.

  1. MQ2 sensorstein (1)
  2. ATTINY85 20PU (1)
  3. 1 "Dobbeltsidig protoboard (1)
  4. Hannoverskrift 90º (3P, 3P)
  5. Mannlig overskrift (2P, 2P)
  6. Genser Shunt (1)
  7. Tilkoblingskabel (~ 7)
  8. Lodde og jern (1)

Trinn 2: Forbered ATTINY85

Forbered ATTINY85
Forbered ATTINY85
Forbered ATTINY85
Forbered ATTINY85
Forbered ATTINY85
Forbered ATTINY85
Forbered ATTINY85
Forbered ATTINY85

AttinyCore fra Boards Manager er nødvendig. Brenn oppstartslaster "EEPROM beholdt", "8mHZ intern" (all konfigurasjon vist ovenfor).

Bruk den medfølgende kilden; kompilere og programmere til ATtiny85.

GIST er her:

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

Du kan finne flere detaljer i disse instruksjonene:

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…

Best å teste via brødbrett før du fortsetter.

Hvis du har eksisterende ASSIMILATE SENSORS, må du kontrollere at slaveadressen er forskjellig på en SENSOR/MCU -vertskombinasjon, dvs. at alle temperatursensorene kan ha samme adresse så lenge du bare har én temperatursensor på en MCU/node.

Trinn 3: Sett sammen kretsen

Sett sammen kretsen
Sett sammen kretsen
Sett sammen kretsen
Sett sammen kretsen
Sett sammen kretsen
Sett sammen kretsen
  1. Sett på forsiden komponentene ATTINY85 (1), 3P 90deg hannhoder (2) (3), 2P hannhoder (4) (5) og lodd av på baksiden.
  2. På baksiden, spor en oransje ledning fra ORANGE1 til ORANGE2 og loddetinn.
  3. På baksiden, spor en blå ledning fra BLÅ1 til BLÅ2 og loddetinn.
  4. På baksiden, spor en grønn ledning fra GREEN1 til GREEN2 og loddetinn.
  5. På baksiden kan du spore en ledning fra SILVER1 til SILVER2 og lodde.
  6. På baksiden kan du spore en ledning fra SILVER3 til SILVER4 og lodde.
  7. På baksiden, spor en svart ledning fra BLACK1 til BLACK2 og loddetinn.
  8. På baksiden, spor en svart ledning fra BLACK3 til BLACK4 og loddetinn.
  9. På baksiden, spor en rød ledning fra RØD1 til RØD2 og loddetinn.
  10. På baksiden, spor en rød ledning fra RED3 til RED4 og loddetinn.
  11. På baksiden, spor en gul ledning fra GUL1 til GUL 2 og loddetinn.

Sensoren kan nå kobles direkte via pinnene til kretskortet eller via ledninger, til punktene vist i pinnekontrakten.

Trinn 4: Testing

Testing
Testing
Testing
Testing
Testing
Testing

En rekke av disse BRICKS forventes å være på flere noder (MCUer - ESP8266 eller ATTINY84) i et miljø. Dette er en enhetstest: sjekker UNO -forespørsler/svar til alle dataene er dumpet, og ignorerer deretter I2C -slaven.

  1. Last opp UNO -koden til UNO -testbeltet ditt. Sørg for at ADDRESS_SLAVE samsvarer med BRICKs I2C -adresse.
  2. Koble 5.0V på UNO til en VCC på BRICK.
  3. Sørg for at jumperen for den pinnen er på.
  4. Koble GND på UNO til GND på BRICK.
  5. Koble A5 på UNO til SCL på BRICK.
  6. Koble A4 på UNO til SDA på BRICK.
  7. Koble en opptrekksmotstand 4K7 fra SDA til VCC.
  8. Koble en opptrekkmotstand 4K7 fra SCL til VCC.
  9. Koble UNO til Dev PC med USB.
  10. Åpne Arduino -konsollen. Velg 9600 baud (start UNO på nytt og åpne konsollen hvis du må).
  11. Eiendomsnavnene og verdiene skal skrives ut til konsollen en gang, så blir ordet hvilemodus gjentatt.

Hvis du ser "oppsett", så gjentar 3 søppel linjer at du kan ha SDA- og SCL -linjene tilbake til fronten.

I2C Master logging fra I2C slave med støtte for plotter/metadata

#inkludere
#defineADDRESS_SLAVE10
bool _outputPlotterOnly = false;
bool _confirmedMetadata = false;
int _packetSegment = 0;
bool _i2cNodeProcessed = false;
char _property [2] [24] = {"navn", "verdi"};
voidsetup () {
Wire.begin (); // bli med i2c -buss (adresse valgfri for master)
Serial.begin (9600); // start seriell for utdata
forsinkelse (1000);
hvis (! _outputPlotterOnly) {
Serial.println ("oppsett");
Serial.println ();
}
}
voidloop () {
hvis (_i2cNodeProcessed) {
hvis (! _confirmedMetadata) {// gi slaven beskjed om å begynne å sende sensordata
forsinkelse (1);
Wire.beginTransmission (ADDRESS_SLAVE);
Wire.write (1);
Wire.endTransmission ();
forsinkelse (100);
_confirmedMetadata = true;
}
_i2cNodeProcessed = false;
hvis (! _outputPlotterOnly) {
Serial.println ();
}
komme tilbake;
}
Wire.requestFrom (ADDRESS_SLAVE, 16);
_packetSegment ++;
røyepakke [16];
intindex = 0;
bool isContinueSegment = false; // continueSegment (det tredje) 1 = mer, 0 = siste
mens (Wire.available ()) {// slave kan sende mindre enn forespurt
char c = Wire.read ();
pakke [indeks] = int (c)> -1? c: ''; // erstatt ugyldige tegn med mellomrom
hvis (_packetSegment == 3) {
_packetSegment = 0;
isContinueSegment = true;
//Serial.println("------------- ");
//Serial.println(int(c));
//Serial.println("------------- ");
if (int (c) == 48 || int (c) == 86) {// 0 på siste eiendom
_i2cNodeProcessed = true;
// send verdier til MQTT
gå i stykker;
}
}
indeks ++;
}
if (! isContinueSegment) {
hvis (! _outputPlotterOnly) {
Serial.println (pakke);
}
strcpy (_property [_packetSegment - 1], packet); // sett lokal var med navn/verdi
}ellers{
if (_outputPlotterOnly && _confirmedMetadata) {
hvis (_i2cNodeProcessed) {
Serial.println (_property [1]);
}ellers{
Serial.print (_property [1]);
Serial.print ("");
}
}
}
}

vis rawuno_i2c_generic_sensor_test_w_plotter_v2.ino hostet med ❤ av GitHub

Trinn 5: Neste trinn

Den grunnleggende utformingen av kretsen og I2C-laget i programvaren er relatert til mange forskjellige sensorer. Det viktigste å begynne med er pakkekontrakten mellom master og slave.

Jeg har planlagt/startet et (3D -trykt) pakket nettverk av sensorer som bruker dette rammeverket og vil koble til det når deler blir publisert.

Denne BLOKKEN brukes av MQ2 ASSIMILATE SENSOR.

Anbefalt: