İçindekiler:

IOT123 - I2C MQ2 TUĞLA: 5 Adım
IOT123 - I2C MQ2 TUĞLA: 5 Adım

Video: IOT123 - I2C MQ2 TUĞLA: 5 Adım

Video: IOT123 - I2C MQ2 TUĞLA: 5 Adım
Video: MQ-2 датчик газов и дыма подключаем к Arduino 2024, Temmuz
Anonim
IOT123 - I2C MQ2 TUĞLA
IOT123 - I2C MQ2 TUĞLA
IOT123 - I2C MQ2 TUĞLA
IOT123 - I2C MQ2 TUĞLA
IOT123 - I2C MQ2 TUĞLA
IOT123 - I2C MQ2 TUĞLA
IOT123 - I2C MQ2 TUĞLA
IOT123 - I2C MQ2 TUĞLA

IOT123 TUĞLALAR, bir düğüme veya giyilebilir cihaza işlevsellik eklemek için diğer IOT123 TUĞLALAR ile karıştırılabilen DIY modüler birimlerdir. Bunlar, birbirine bağlı açık deliklere sahip inç kare, çift taraflı protokollere dayanmaktadır.

Bu BRICKS'lerin bir kısmının bir sitede birden fazla düğümde (Ana MCU'lar - ESP8266 veya ATTINY84) olması beklenir. MCU'nun, sensörlerin amacı veya yazılım ihtiyaçları hakkında önceden bilgi sahibi olması gerekmez. I2C düğümlerini tarar ve ardından her bağımlıdan bir özellik dökümü (sensör verileri) ister. Bu BRICK'ler 5.0V, 3.3V ve özelleştirilebilir başka bir AUX hattı sağlar.

Bu I2C MQ2 BRICK, 3 özelliği boşaltır:

LPG (Parça Başına Milyon), CO (PPM), DUMAN (PPM)

Bu Sensör ilginç bir senaryo sağladı: Isınması için en az 2 dakikaya (5 dakikaya kadar) ihtiyacı var, ardından kullanımdan önce 20 saniye kalibre etmesi gerekiyor. Ana bilgisayar MCU'su yalnızca ad/değer çiftleri (ve bir devam mesajı) almakla iç içe olduğundan, bir "PREPARE" özelliğini tanıttık. Devam mesajı "1" olduğundan (daha fazlası gelecek), Ana Bilgisayar MCU, hazır olana kadar BRICK'i yoklamaya devam edecektir. Ayrıca MQ2'yi kullanmadan önce "yakmanız", yani 24 saat boyunca 5V devrenize bağlı bırakmanız önerilir.

Keyes tipi sensör tuğlaları, vitaminler (gerekli ekstra bileşenler) ile birlikte geldikleri ve nispeten ucuz oldukları için (37 AUD'ye 10 AUD aldım) ilk önce soyutlanacaktır. I2C BRICKS'a diğer kartlar/devreler tanıtılacaktır.

ATTINY85'e bitişik açık delikler, DIP8 PCB'ye lehimlenirken bir pogo pin programlayıcısını etkinleştirmek için kullanılmadan bırakılmıştır.

Bir D1M WIFI BLOCK hub'ına takılan küçük silindirlerde BRICKS'leri paketleyen ve değerleri bir MQTT sunucusuna pompalayan başka bir soyutlama geliştirilmektedir.

Adım 1: Malzeme ve Araçlar

Malzeme ve Araçlar
Malzeme ve Araçlar
Malzeme ve Araçlar
Malzeme ve Araçlar
Malzeme ve Araçlar
Malzeme ve Araçlar

Tam bir Malzeme Listesi ve Tedarik listesi var.

  1. MQ2 sensör tuğlası (1)
  2. ATTINY85 20PU (1)
  3. 1" Çift taraflı protokol (1)
  4. Erkek Başlık 90º (3P, 3P)
  5. Erkek Başlık (2P, 2P)
  6. Jumper Şant (1)
  7. Bağlantı kablosu (~7)
  8. Lehim ve Demir (1)

Adım 2: ATTINY85'i hazırlayın

ATTINY85'i hazırlayın
ATTINY85'i hazırlayın
ATTINY85'i hazırlayın
ATTINY85'i hazırlayın
ATTINY85'i hazırlayın
ATTINY85'i hazırlayın
ATTINY85'i hazırlayın
ATTINY85'i hazırlayın

Kurul Yöneticisinden AttinyCore gereklidir. Bootloader "EEPROM Retained", "8mHZ Internal" yazın (yukarıda gösterilen tüm yapılandırmalar).

Dahil edilen kaynağı kullanın; ATtiny85'e derleyin ve programlayın.

GİST burada:

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

Bu talimatlarda daha fazla ayrıntı bulabilirsiniz:

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…

Devam etmeden önce breadboard üzerinden test etmek en iyisidir.

Mevcut ASSIMILAT SENSÖRLERİNİZ varsa, bir SENSÖR/MCU Ana Bilgisayar kombinasyonunda bağımlı adresin farklı olduğundan emin olun, yani bir MCU/düğümde yalnızca bir Sıcaklık sensörünüz olduğu sürece tüm Sıcaklık sensörleri aynı adrese sahip olabilir.

Adım 3: Devreyi Birleştirin

Devreyi Birleştirin
Devreyi Birleştirin
Devreyi Birleştirin
Devreyi Birleştirin
Devreyi Birleştirin
Devreyi Birleştirin
  1. Ön tarafa, ATTINY85 (1), 3P 90 derece erkek başlıklar (2)(3), 2P erkek başlıklar (4)(5) bileşenlerini yerleştirin ve arka tarafa lehimleyin.
  2. Arkada, TURUNCU1'den TURUNCU2'ye turuncu bir kablo çizin ve lehimleyin.
  3. Arkada, MAVİ1'den MAVİ2'ye kadar mavi bir kablo çizin ve lehimleyin.
  4. Arkada, YEŞİL1'den YEŞİL2'ye yeşil bir kablo çizin ve lehimleyin.
  5. Arkada, GÜMÜŞ1'den GÜMÜŞ2'ye çıplak bir tel çizin ve lehimleyin.
  6. Arkada, GÜMÜŞ3'ten GÜMÜŞ4'e çıplak bir tel çizin ve lehimleyin.
  7. Arkada, SİYAH1'den SİYAH2'ye siyah bir kablo çizin ve lehimleyin.
  8. Arkada, BLACK3'ten BLACK4'e siyah bir kablo çizin ve lehimleyin.
  9. Arkada, RED1'den RED2'ye kırmızı bir kablo çizin ve lehimleyin.
  10. Arkada, RED3'ten RED4'e kırmızı bir kablo çizin ve lehimleyin.
  11. Arkada, SARI1'den SARI2'ye kadar sarı bir kablo çizin ve lehimleyin.

Sensör artık pinleri aracılığıyla doğrudan PCB'ye veya kablolar aracılığıyla pin sözleşmesinde gösterilen noktalara bağlanabilir.

4. Adım: Test Etme

Test yapmak
Test yapmak
Test yapmak
Test yapmak
Test yapmak
Test yapmak

Bu BRICKS'lerin bir kısmının bir ortamda birden çok düğümde (MCU'lar - ESP8266 veya ATTINY84) olması beklenir. Bu bir birim testidir: tüm veriler atılana kadar UNO isteklerini/yanıtlarını kontrol eder, ardından I2C bağımlı birimini ihmal eder.

  1. UNO kodunu UNO test kablo demetinize yükleyin. ADDRESS_SLAVE öğesinin BRICK'in I2C adresiyle eşleştiğinden emin olun.
  2. UNO üzerindeki 5.0V'yi BRICK üzerindeki bir VCC'ye bağlayın.
  3. Bu pin için jumper'ın açık olduğundan emin olun.
  4. UNO üzerindeki GND'yi BRICK üzerindeki GND'ye bağlayın.
  5. UNO üzerindeki A5'i BRICK üzerindeki SCL'ye bağlayın.
  6. UNO üzerindeki A4'ü BRICK üzerindeki SDA'ya bağlayın.
  7. SDA'dan VCC'ye bir 4K7 çekme direnci bağlayın.
  8. SCL'den VCC'ye bir 4K7 çekme direnci bağlayın.
  9. UNO'nuzu USB ile Dev PC'nize bağlayın.
  10. Arduino Konsolunu açın. 9600 baud'u seçin (UNO'yu yeniden başlatın ve gerekirse konsolu yeniden açın).
  11. Özellik Adları ve değerleri konsola bir kez yazdırılmalı ve ardından uyku kelimesi tekrarlanmalıdır.

"Kurulum" görürseniz, 3 satır çöp tekrarlanırsa, SDA ve SCL satırlarınızı öne arkaya almış olabilirsiniz.

I2C Master, çizici/meta veri desteği ile I2C slave'den günlüğe kaydetme

#Dahil etmek
#defineADDRESS_SLAVE10
bool _outputPlotterOnly = yanlış;
bool _confirmedMetadata = yanlış;
int _packetSegment = 0;
bool _i2cNodeProcessed = yanlış;
char _property[2][24] = {"ad", "değer"};
voidsetup() {
Wire.begin(); // i2c veriyoluna katıl (master için isteğe bağlı adres)
Seri.başla(9600); // çıktı için seriyi başlat
gecikme(1000);
if (!_outputPlotterOnly){
Serial.println("kurulum");
Seri.println();
}
}
boşluk döngüsü() {
if (_i2cNodeProcessed){
if (!_confirmedMetadata){// bağımlıya sensör verilerini göndermeye başlamasını bildirin
gecikme(1);
Wire.beginTransmission(ADDRESS_SLAVE);
Wire.write(1);
Wire.endTransmission();
gecikme(100);
_confirmedMetadata = doğru;
}
_i2cNodeProcessed = yanlış;
if (!_outputPlotterOnly){
Seri.println();
}
dönüş;
}
Wire.requestFrom(ADDRESS_SLAVE, 16);
_packetSegment++;
karakter paketi[16];
inindex = 0;
bool isContinueSegment = false;// ContinueSegment (3.) 1=daha fazla, 0=son
while (Wire.available()) { // slave istenenden daha azını gönderebilir
karakter c = Wire.read();
paket[indeks] = int(c) > -1 ? c: '';// geçersiz karakterleri boşluklarla değiştirin
if (_packetSegment == 3){
_packetSegment = 0;
isContinueSegment = doğru;
//Serial.println("-------------");
//Serial.println(int(c));
//Serial.println("-------------");
if (int(c) == 48 || int(c) == 86){// 0 son özellikte
_i2cNodeProcessed = doğru;
// değerleri MQTT'ye gönder
kırmak;
}
}
dizin++;
}
if (!SContinueSegment){
if (!_outputPlotterOnly){
Serial.println(paket);
}
strcpy(_property[_packetSegment - 1], paket);// yerel değişkeni isim/değer ile ayarla
}Başka{
if (_outputPlotterOnly && _confirmedMetadata){
if (_i2cNodeProcessed){
Serial.println(_property[1]);
}Başka{
Serial.print(_property[1]);
Seri.print("");
}
}
}
}

GitHub tarafından ❤ ile barındırılan rawuno_i2c_generic_sensor_test_w_plotter_v2.ino'yu görüntüle

Adım 5: Sonraki Adımlar

Devrenin temel düzeni ve yazılımın I2C katmanı birçok farklı sensörle ilişkilendirilebilir. Başlamak için en önemli şey, master ve slave arasındaki paket sözleşmesidir.

Bu çerçeveyi kullanan ve parçalar yayınlandıkça ona bağlanacak bir (3D baskılı) paketlenmiş sensör ağını planladım/başlattım.

Bu BLOK, MQ2 ASSİMİLAT SENSÖRÜ tarafından kullanılır.

Önerilen: