Talaan ng mga Nilalaman:

IOT123 - I2C MQ2 BRICK: 5 Hakbang
IOT123 - I2C MQ2 BRICK: 5 Hakbang

Video: IOT123 - I2C MQ2 BRICK: 5 Hakbang

Video: IOT123 - I2C MQ2 BRICK: 5 Hakbang
Video: MQ-2 датчик газов и дыма подключаем к Arduino 2024, Hulyo
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

Ang IOT123 BRICKS ay mga modular na yunit ng DIY na maaaring mashed sa iba pang mga IOT123 BRICKS, upang magdagdag ng pag-andar sa isang node o naisusuot. Ang mga ito ay batay sa pulgadang parisukat, mga dobleng panig na mga protoboard na may magkakaugnay na mga butas.

Ang isang bilang ng mga BRICKS na ito ay inaasahan na nasa maraming mga node (Master MCUs - ESP8266 o ATTINY84) sa isang site. Ang MCU ay hindi nangangailangan ng paunang kaalaman tungkol sa mga layunin ng sensor o mga pangangailangan ng software. Sinusuri nito ang mga node ng I2C pagkatapos ay humiling ng isang dump ng pag-aari (data ng sensor) mula sa bawat alipin. Ang mga BRICK na ito ay nagbibigay ng 5.0V, 3.3V at isa pang linya ng AUX na napapasadyang.

Ang I2C MQ2 BRICK na ito ay nagtatapon ng 3 mga katangian:

LPG (Mga Bahagi Per Milyon), CO (PPM), SMOKE (PPM)

Ang Sensor na ito ay nagbigay ng isang kagiliw-giliw na senaryo: Kailangan ito ng hindi bababa sa 2 minuto (hanggang sa 5 minuto) upang magpainit, pagkatapos ay kailangan nitong i-calibrate ng 20 segundo bago gamitin. Bilang ang host MCU ay naka-inteset lamang sa pagkuha ng mga pares ng pangalan / halaga (at isang patuloy na mensahe), ipinakilala namin ang isang "PAGHANDA" na pag-aari. Tulad ng pagpapatuloy na mensahe nito ay "1" (higit pa na darating), ang Host MCU ay patuloy na iboboto ang BRICK hanggang sa ito ay handa na. Inirerekumenda rin na "Burn-in" ang MQ2 bago gamitin ibig sabihin iwanan na konektado sa iyong 5V circuit sa loob ng 24 na oras.

Ang mga brick na sensor ng uri ng Keyes ay mai-abstract muna dahil kasama ang mga bitamina (labis na mga sangkap na kinakailangan) na kasama at medyo cheep (bumili ako ng 37 para sa 10AUD). Ang iba pang mga board / circuit ay ipakikilala sa I2C BRICKS.

Ang mga through-hole na katabi ng ATTINY85 ay naiwang hindi nagamit, upang paganahin ang isang programang pogo pin habang ang DIP8 ay solder sa PCB.

Ang isang karagdagang abstraction, na ibinabalot ang BRICKS sa maliliit na silindro na nag-plug sa isang D1M WIFI BLOCK hub, na binobomba ang mga halaga sa isang MQTT server, ay binuo.

Hakbang 1: Materyal at Mga Tool

Materyal at Mga Kasangkapan
Materyal at Mga Kasangkapan
Materyal at Mga Kasangkapan
Materyal at Mga Kasangkapan
Materyal at Mga Kasangkapan
Materyal at Mga Kasangkapan

Mayroong isang buong listahan ng Materyal at Sourcing.

  1. MQ2 sensor brick (1)
  2. ATTINY85 20PU (1)
  3. 1 "Dobleng panig na protoboard (1)
  4. Lalake Header 90º (3P, 3P)
  5. Lalaking Header (2P, 2P)
  6. Jumper Shunt (1)
  7. Hookup wire (~ 7)
  8. Panghinang at Bakal (1)

Hakbang 2: Ihanda ang ATTINY85

Ihanda ang ATTINY85
Ihanda ang ATTINY85
Ihanda ang ATTINY85
Ihanda ang ATTINY85
Ihanda ang ATTINY85
Ihanda ang ATTINY85
Ihanda ang ATTINY85
Ihanda ang ATTINY85

Kailangan ang AttinyCore mula sa Boards Manager. Sunugin ang bootloader na "EEPROM Nananatili", "8mHZ Panloob" (lahat ng config na ipinakita sa itaas).

Gamitin ang kasama na mapagkukunan; compile at programa sa ATtiny85.

Narito ang GIST:

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

Maaari kang makahanap ng higit pang mga detalye sa mga itinuturo na ito:

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…

Pinakamahusay na subukan sa pamamagitan ng breadboard bago magpatuloy.

Kung mayroon kang mga ASSIMILATE SENSORS, siguraduhin na ang address ng alipin ay naiiba sa isang kumbinasyon ng SENSOR / MCU Host ibig sabihin lahat ng mga sensor ng Temperatura ay maaaring magkaroon ng parehong address hangga't mayroon ka lamang isang Temperatura sensor sa isang MCU / node.

Hakbang 3: Magtipon ng Circuit

Magtipon ng Circuit
Magtipon ng Circuit
Magtipon ng Circuit
Magtipon ng Circuit
Magtipon ng Circuit
Magtipon ng Circuit
  1. Sa harap, ipasok ang mga sangkap na ATTINY85 (1), 3P 90deg male header (2) (3), 2P male header (4) (5), at ang solder ay nasa likuran.
  2. Sa likuran, subaybayan ang isang orange wire mula ORANGE1 hanggang ORANGE2 at solder.
  3. Sa likuran, subaybayan ang isang asul na kawad mula BLUE1 hanggang BLUE2 at solder.
  4. Sa likuran, subaybayan ang isang berdeng kawad mula GREEN1 hanggang GREEN2 at panghinang.
  5. Sa likuran, subaybayan ang isang hubad na kawad mula sa SILVER1 hanggang sa SILVER2 at panghinang.
  6. Sa likuran, subaybayan ang isang hubad na kawad mula sa SILVER3 hanggang sa SILVER4 at panghinang.
  7. Sa likuran, subaybayan ang isang itim na kawad mula BLACK1 hanggang BLACK2 at solder.
  8. Sa likuran, subaybayan ang isang itim na kawad mula BLACK3 hanggang BLACK4 at solder.
  9. Sa likuran, subaybayan ang isang pulang kawad mula sa RED1 hanggang RED2 at panghinang.
  10. Sa likuran, subaybayan ang isang pulang kawad mula sa RED3 hanggang RED4 at panghinang.
  11. Sa likuran, subaybayan ang isang dilaw na kawad mula sa YELLOW1 hanggang YELLOW2 at panghinang.

Maaari nang direktang konektado ang sensor sa pamamagitan ng mga pin nito sa PCB o sa pamamagitan ng mga wire, sa mga puntong ipinakita sa kontrata ng pin.

Hakbang 4: Pagsubok

Pagsubok
Pagsubok
Pagsubok
Pagsubok
Pagsubok
Pagsubok

Ang isang bilang ng mga BRICKS na ito ay inaasahan na nasa maraming mga node (MCUs - ESP8266 o ATTINY84) sa isang kapaligiran. Ito ay isang pagsubok sa yunit: suriin ang mga kahilingan / tugon ng UNO hanggang sa maalis ang lahat ng data, pagkatapos ay mapabayaan ang alipin ng I2C.

  1. I-upload ang UNO code sa iyong harness ng pagsubok ng UNO. Tiyaking tumutugma ang ADDRESS_SLAVE sa I2C address ng BRICK.
  2. Ikonekta ang 5.0V sa UNO sa isang VCC sa BRICK.
  3. Tiyaking nakabukas ang jumper para sa pin na iyon.
  4. Ikonekta ang GND sa UNO sa GND sa BRICK.
  5. Ikonekta ang A5 sa UNO sa SCL sa BRICK.
  6. Ikonekta ang A4 sa UNO sa SDA sa BRICK.
  7. Ikonekta ang isang resistor na pull-up na 4K7 mula sa SDA patungong VCC.
  8. Ikonekta ang isang resistor na pull-up na 4K7 mula sa SCL patungong VCC.
  9. Ikonekta ang iyong UNO sa iyong Dev PC gamit ang USB.
  10. Buksan ang Arduino Console. Pumili ng 9600 baud (i-restart ang UNO at muling buksan ang console kung kailangan mo).
  11. Ang Mga Pangalan ng Ari-arian at mga halaga ay dapat na naka-print sa console isang beses pagkatapos ay ang salitang pagtulog ay inuulit.

Kung nakikita mo ang "pag-set up" pagkatapos ay 3 linya ng basura na paulit-ulit na maaari mong ibalik sa harap ang iyong mga linya ng SDA at SCL.

I2C Master logging mula sa alipin ng I2C na may suporta sa plotter / metadata

# isama
# tukuyinADDRESS_SLAVE10
bool _outputPlotterOnly = false;
bool _confirmedMetadata = false;
int _packetSegment = 0;
bool _i2cNodeProcessed = false;
char _property [2] [24] = {"pangalan", "halaga"};
voidsetup () {
Wire.begin (); // sumali sa i2c bus (opsyonal sa address para sa master)
Serial.begin (9600); // simulan ang serial para sa output
pagkaantala (1000);
kung (! _outputPlotterOnly) {
Serial.println ("setup");
Serial.println ();
}
}
voidloop () {
kung (_i2cNodeProcessed) {
kung (! _confirmedMetadata) {// ipaalam sa alipin upang simulang magpadala ng data ng sensor
antala (1);
Wire.beginTransmission (ADDRESS_SLAVE);
Wire.write (1);
Wire.endTransmission ();
pagkaantala (100);
_confirmedMetadata = totoo;
}
_i2cNodeProcessed = false;
kung (! _outputPlotterOnly) {
Serial.println ();
}
bumalik;
}
Wire.requestFrom (ADDRESS_SLAVE, 16);
_packetSegment ++;
char packet [16];
intindex = 0;
bool isContinueSegment = false; // continueSegment (the 3rd) 1 = more, 0 = last
habang (Wire.available ()) {// alipin ay maaaring magpadala ng mas mababa sa hiniling
char c = Wire.read ();
packet [index] = int (c)> -1? c: ''; // palitan ang mga hindi wastong char ng mga puwang
kung (_packetSegment == 3) {
_packetSegment = 0;
isContinueSegment = totoo;
//Serial.println("------------- ");
//Serial.println(int(c));
//Serial.println("------------- ");
kung (int (c) == 48 || int (c) == 86) {// 0 sa huling pag-aari
_i2cNodeProcessed = totoo;
// magpadala ng mga halaga sa MQTT
pahinga;
}
}
index ++;
}
kung (! isContinueSegment) {
kung (! _outputPlotterOnly) {
Serial.println (packet);
}
strcpy (_property [_packetSegment - 1], packet); // itakda ang lokal na var na may pangalan / halaga
} iba pa {
kung (_outputPlotterOnly && _confirmedMetadata) {
kung (_i2cNodeProcessed) {
Serial.println (_property [1]);
} iba pa {
Serial.print (_property [1]);
Serial.print ("");
}
}
}
}

tingnan ang rawuno_i2c_generic_sensor_test_w_plotter_v2.ino naka-host sa ❤ ng GitHub

Hakbang 5: Susunod na Mga Hakbang

Ang pangunahing layout ng circuit at ang layer ng I2C ng software ay nauugnay sa maraming iba't ibang mga sensor. Ang pangunahing bagay upang makapagsimula kaagad, ay ang packet na kontrata sa pagitan ng master at alipin.

Naitala ko / sinimulan ang isang (naka-print na 3D) na naka-package na network ng mga sensor na gumagamit ng balangkas na ito at mai-link ito habang nai-publish ang mga bahagi.

Ang BLOCK na ito ay ginagamit ng MQ2 ASSIMILATE SENSOR.

Inirerekumendang: