Daftar Isi:

IOT123 - BATA I2C MQ2: 5 Langkah
IOT123 - BATA I2C MQ2: 5 Langkah

Video: IOT123 - BATA I2C MQ2: 5 Langkah

Video: IOT123 - BATA I2C MQ2: 5 Langkah
Video: Diskusi Project Arduino dan Sensor MQ, Soil Moisture, Ultrasonic I Kuliah online Universitas komput 2024, November
Anonim
IOT123 - BATA I2C MQ2
IOT123 - BATA I2C MQ2
IOT123 - BATA I2C MQ2
IOT123 - BATA I2C MQ2
IOT123 - BATA I2C MQ2
IOT123 - BATA I2C MQ2
IOT123 - BATA I2C MQ2
IOT123 - BATA I2C MQ2

BRICKS IOT123 adalah unit modular DIY yang dapat digabungkan dengan BRICKS IOT123 lainnya, untuk menambahkan fungsionalitas ke node atau perangkat yang dapat dikenakan. Mereka didasarkan pada inci persegi, protoboard dua sisi dengan saling berhubungan melalui lubang.

Sejumlah BRICKS ini diharapkan berada di beberapa node (Master MCU - ESP8266 atau ATTINY84) di sebuah situs. MCU tidak memerlukan pengetahuan sebelumnya tentang tujuan sensor atau kebutuhan perangkat lunak. Ini memindai node I2C kemudian meminta dump properti (data sensor) dari setiap budak. BATA ini memasok 5.0V, 3.3V dan jalur AUX lain yang dapat disesuaikan.

BATU I2C MQ2 ini membuang 3 properti:

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

Sensor ini memberikan skenario yang menarik: Diperlukan setidaknya 2 menit (hingga 5 menit) untuk pemanasan, kemudian perlu dikalibrasi selama 20 detik sebelum digunakan. Karena MCU host hanya tertarik untuk mendapatkan pasangan nama/nilai (dan pesan lanjutan), kami telah memperkenalkan properti "SIAPKAN". Karena pesan lanjutannya adalah "1" (lebih banyak lagi yang akan datang), MCU Host akan terus melakukan polling BATA sampai siap. Juga disarankan untuk "Membakar" MQ2 sebelum digunakan, yaitu membiarkan sirkuit 5V Anda terhubung selama 24 jam.

Batu bata sensor tipe Keyes akan diabstraksikan terlebih dahulu karena sudah termasuk vitamin (komponen tambahan yang diperlukan) dan relatif murah (saya membeli 37 seharga 10AUD). Papan/sirkuit lain akan diperkenalkan ke Brick I2C.

Lubang tembus yang berdekatan dengan ATTINY85 dibiarkan tidak digunakan, untuk mengaktifkan pemrogram pin pogo sementara DIP8 disolder ke PCB.

Abstraksi lebih lanjut, mengemas Brick dalam silinder kecil yang dihubungkan ke hub D1M WIFI BLOCK, yang memompa nilai ke server MQTT, sedang dikembangkan.

Langkah 1: Bahan dan Alat

Bahan dan Alat
Bahan dan Alat
Bahan dan Alat
Bahan dan Alat
Bahan dan Alat
Bahan dan Alat

Ada daftar Bill of Material dan Sourcing lengkap.

  1. bata sensor MQ2 (1)
  2. ATTINY85 20PU (1)
  3. 1" protoboard dua sisi (1)
  4. Header Pria 90º (3P, 3P)
  5. Header Pria (2P, 2P)
  6. Jumper Shut (1)
  7. Kawat pengait (~7)
  8. Solder dan Besi (1)

Langkah 2: Siapkan ATTINY85

Siapkan ATTINY85
Siapkan ATTINY85
Siapkan ATTINY85
Siapkan ATTINY85
Siapkan ATTINY85
Siapkan ATTINY85
Siapkan ATTINY85
Siapkan ATTINY85

AttinyCore dari Boards Manager diperlukan. Bakar bootloader "EEPROM Retained", "8mHZ Internal" (semua konfigurasi ditunjukkan di atas).

Gunakan sumber yang disertakan; kompilasi dan program ke ATtiny85.

GISTnya ada di sini:

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

Anda dapat menemukan detail lebih lanjut dalam instruksi ini:

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…

Terbaik untuk menguji melalui papan tempat memotong roti sebelum melanjutkan.

Jika Anda sudah memiliki SENSOR ASSIMILATE, pastikan alamat slave berbeda pada kombinasi Host SENSOR/MCU yaitu semua sensor Suhu dapat memiliki alamat yang sama selama Anda hanya memiliki satu sensor Suhu pada MCU/node.

Langkah 3: Merakit Sirkuit

Merakit Sirkuit
Merakit Sirkuit
Merakit Sirkuit
Merakit Sirkuit
Merakit Sirkuit
Merakit Sirkuit
  1. Di bagian depan, masukkan komponen ATTINY85 (1), 3P 90deg male header (2)(3), 2P male header (4)(5), dan solder di bagian belakang.
  2. Di bagian belakang, lacak kabel oranye dari ORANGE1 ke ORANGE2 dan solder.
  3. Di bagian belakang, lacak kabel biru dari BIRU1 ke BIRU2 dan solder.
  4. Di bagian belakang, lacak kabel hijau dari GREEN1 ke GREEN2 dan solder.
  5. Di bagian belakang, lacak kawat telanjang dari SILVER1 ke SILVER2 dan solder.
  6. Di bagian belakang, lacak kawat telanjang dari SILVER3 ke SILVER4 dan solder.
  7. Di bagian belakang, lacak kabel hitam dari BLACK1 ke BLACK2 dan solder.
  8. Di bagian belakang, lacak kabel hitam dari BLACK3 ke BLACK4 dan solder.
  9. Di bagian belakang, lacak kabel merah dari RED1 ke RED2 dan solder.
  10. Di bagian belakang, lacak kabel merah dari RED3 ke RED4 dan solder.
  11. Di bagian belakang, lacak kabel kuning dari KUNING1 ke KUNING2 dan solder.

Sensor sekarang dapat dihubungkan langsung melalui pinnya ke PCB atau melalui kabel, ke titik yang ditunjukkan dalam kontrak pin.

Langkah 4: Pengujian

Pengujian
Pengujian
Pengujian
Pengujian
Pengujian
Pengujian

Sejumlah BRICKS ini diharapkan berada di beberapa node (MCU - ESP8266 atau ATTINY84) di suatu lingkungan. Ini adalah tes unit: memeriksa permintaan/tanggapan UNO sampai semua data dibuang, lalu mengabaikan budak I2C.

  1. Unggah kode UNO ke rangkaian uji UNO Anda. Pastikan ADDRESS_SLAVE cocok dengan alamat I2C BRICK.
  2. Hubungkan 5.0V pada UNO ke VCC pada BATA.
  3. Pastikan jumper untuk pin itu aktif.
  4. Hubungkan GND di UNO ke GND di BRICK.
  5. Hubungkan A5 di UNO ke SCL di BATA.
  6. Hubungkan A4 di UNO ke SDA di BATA.
  7. Hubungkan resistor pull-up 4K7 dari SDA ke VCC.
  8. Hubungkan resistor pull-up 4K7 dari SCL ke VCC.
  9. Hubungkan UNO Anda ke PC Dev Anda dengan USB.
  10. Buka Konsol Arduino. Pilih 9600 baud (mulai ulang UNO dan buka kembali konsol jika perlu).
  11. Nama Properti dan nilai harus dicetak ke konsol sekali kemudian kata tidur diulang.

Jika Anda melihat "pengaturan" lalu 3 baris sampah berulang, Anda mungkin membuat jalur SDA dan SCL Anda kembali ke depan.

I2C Master logging dari I2C slave dengan dukungan plotter/metadata

#termasuk
#defineADDRESS_SLAVE10
bool _outputPlotterOnly = salah;
bool _confirmedMetadata = salah;
int _packetSegment = 0;
bool _i2cNodeProcessed = salah;
char _property[2][24] = {"nama", "nilai"};
voidsetup() {
Kawat.mulai(); // bergabung dengan i2c bus (alamat opsional untuk master)
Serial.begin(9600); // mulai serial untuk output
penundaan (1000);
if (!_outputPlotterOnly){
Serial.println("pengaturan");
Serial.println();
}
}
batal () {
if (_i2cNodeProcessed){
if (!_confirmedMetadata){// beri tahu slave untuk mulai mengirim data sensor
penundaan (1);
Wire.beginTransmission(ADDRESS_SLAVE);
Kawat.tulis(1);
Kawat.endTransmisi();
penundaan(100);
_confirmedMetadata = benar;
}
_i2cNodeProcessed = salah;
if (!_outputPlotterOnly){
Serial.println();
}
kembali;
}
Wire.requestFrom(ADDRESS_SLAVE, 16);
_packetSegment++;
paket karakter[16];
indeks = 0;
bool isContinueSegment = false;// continueSegment (ke-3) 1=lebih, 0=terakhir
while (Wire.available()) { // slave mungkin mengirim kurang dari yang diminta
char c = Kawat.baca();
paket[indeks] = int(c) > -1 ? c: '';// ganti karakter yang tidak valid dengan spasi
if (_packetSegment == 3){
_packetSegment = 0;
isContinueSegment = benar;
//Serial.println("-------------");
//Serial.println(int(c));
//Serial.println("-------------");
if (int(c) == 48 || int(c) == 86){// 0 pada properti terakhir
_i2cNodeProcessed = benar;
// kirim nilai ke MQTT
merusak;
}
}
indeks++;
}
jika (!isContinueSegment){
if (!_outputPlotterOnly){
Serial.println(paket);
}
strcpy(_property[_packetSegment - 1], paket);// setel var lokal dengan nama/nilai
}lain{
if (_outputPlotterOnly && _confirmedMetadata){
if (_i2cNodeProcessed){
Serial.println(_properti[1]);
}lain{
Serial.print(_property[1]);
Serial.print("");
}
}
}
}

lihat rawuno_i2c_generic_sensor_test_w_plotter_v2.ino dihosting dengan ❤ oleh GitHub

Langkah 5: Langkah Selanjutnya

Tata letak dasar sirkuit dan lapisan I2C perangkat lunak dapat dihubungkan dengan banyak sensor yang berbeda. Hal utama yang harus benar untuk memulai, adalah kontrak paket antara master dan slave.

Saya telah merencanakan/memulai jaringan sensor paket (3D dicetak) yang menggunakan kerangka kerja ini dan akan menautkannya saat bagian-bagiannya diterbitkan.

BLOK ini digunakan oleh MQ2 ASSIMILATE SENSOR.

Direkomendasikan: