Daftar Isi:

IOT123 - BATA JANTUNG I2C: 6 Langkah
IOT123 - BATA JANTUNG I2C: 6 Langkah

Video: IOT123 - BATA JANTUNG I2C: 6 Langkah

Video: IOT123 - BATA JANTUNG I2C: 6 Langkah
Video: How to use LCD LCD1602 with I2C module for Arduino - Robojax 2024, Juni
Anonim
IOT123 - BATA JANTUNG I2C
IOT123 - BATA JANTUNG I2C
IOT123 - BATA JANTUNG I2C
IOT123 - BATA JANTUNG I2C
IOT123 - BATA JANTUNG I2C
IOT123 - BATA JANTUNG I2C

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.

BATA HEARTBEAT I2C ini menunjukkan apakah budak ATTINY masih hidup, juga lalu lintas I2C, dan memiliki satu properti:

STATUS ("HIDUP")

PB1 (putih) menunjukkan kesehatan ATTINY.

PB3 (kuning) beralih dengan permintaan I2C dari master.

PB4 (oranye) beralih dengan penerimaan I2C dari master.

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
Bahan dan alat
Bahan dan alat

Ada daftar Bill of Material dan Sourcing lengkap.

  1. Kertas PCB (7 x 7 lubang)
  2. LED (Merah, Hijau, Biru)
  3. Resistor (3 mati 1K)
  4. ATTINY85 20PU (1)
  5. 1" protoboard dua sisi (1)
  6. Header Pria 90º (3P, 3P)
  7. Header Pria (2P, 2P)
  8. Jumper Shut (1)
  9. Kawat pengait (~7)
  10. Solder dan Besi (1)

Langkah 2: Siapkan ATTINY85

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

CATATAN: Jika ingin memiliki integrasi Crouton, silakan gunakan perpustakaan dari sini, dan gunakan contoh yang diinstal "attiny_heartbeat"

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

Repositori kode dapat ditemukan di sini.

ZIP perpustakaan dapat ditemukan di sini.

Petunjuk untuk "Mengimpor Perpustakaan ZIP" di sini.

Setelah perpustakaan diinstal, Anda dapat membuka contoh "attiny_heartbeat".

Untuk mengunggah firmware ke ATTINY85, Anda dapat menemukan detail lebih lanjut dalam instruksi ini:

www.instructables.com/id/Programming-the-….

www.instructables.com/id/How-to-Program-A…

www.instructables.com/id/Programming-the-…

www.instructables.com/id/How-to-Program-A…

www.instructables.com/id/Programming-the-…

Terbaik untuk menguji melalui papan tempat memotong roti sebelum melanjutkan.

Jika Anda memiliki SENSOR ASSIMILATE, pastikan alamat slave berbeda pada kombinasi Host SENSOR/MCU mis. semua aktor Relay dapat memiliki alamat yang sama selama Anda hanya memiliki satu aktor Relay di MCU/node.

Langkah 3: Merakit Indikator

Merakit Indikator
Merakit Indikator
Merakit Indikator
Merakit Indikator
Merakit Indikator
Merakit Indikator

Indikator dimaksudkan untuk sepenuhnya dapat disesuaikan. Ini adalah sinyal acara dari sirkuit utama yang dilihat sebagai Detak Jantung. Untuk build ini kita akan menggunakan indikator LED; build Anda dapat menggunakan relai (ya VCC rusak) atau indikator berbasis visual/sinyal lainnya. Nilai resistor akan tergantung pada preferensi pribadi pada seberapa terang Anda menginginkannya.

  1. Di bagian atas, masukkan LED biru ke RED1 (+) dan BLACK1 (G), dan solder di bagian bawah.
  2. Di bagian bawah, tekuk timah dari RED1 sehingga menyentuh bantalan tembaga pada SILVER8 dan rapikan.
  3. Di bagian bawah, potong timah dari BLACK1 di atas solder.
  4. Di bagian atas, masukkan LED hijau ke RED2 (+) dan BLACK2 (G), dan solder di bagian bawah.
  5. Di bagian bawah, tekuk timah dari RED2 sehingga menyentuh bantalan tembaga pada SILVER9 dan rapikan.
  6. Di bagian bawah, rapikan timah dari BLACK2 di atas solder.
  7. Di bagian atas, masukkan LED merah ke RED3 (+) dan BLACK3 (G), dan solder di bagian bawah.
  8. Di bagian bawah, tekuk timah dari RED3 sehingga menyentuh bantalan tembaga pada SILVER10 dan rapikan.
  9. Di bagian bawah, rapikan timah dari BLACK3 di atas solder.
  10. Di bagian atas, masukkan resistor 1K ke dalam lubang SILVER1 dan SILVER4.
  11. Di bagian bawah, lacak, rapikan, dan solder timah dari SILVER1 ke BLACK1.
  12. Di bagian atas, masukkan resistor 1K ke lubang tembus SILVER2 dan SILVER4.
  13. Di bagian bawah, lacak, rapikan, dan solder timah dari SILVER2 ke BLACK2.
  14. Di bagian atas, masukkan resistor 1K ke dalam lubang SILVER3 dan SILVER4.
  15. Di bagian bawah, lacak, rapikan, dan solder timah dari SILVER3 ke BLACK3.
  16. Di bagian bawah, solder kabel pada SILVER4 dan potong sekitar 5mm memanjang.
  17. Di bagian bawah, solder kabel hitam ke SILVER4.
  18. Di bagian bawah, solder kabel putih ke SILVER5, memastikan kontinuitas untuk memimpin dari RED1.
  19. Di bagian bawah, solder kabel kuning ke SILVER6, memastikan kontinuitas untuk memimpin dari RED2.
  20. Di bagian bawah, solder kabel oranye ke SILVER7, memastikan kontinuitas untuk memimpin dari RED3.

Langkah 4: Merakit Sirkuit Utama

Merakit Sirkuit Utama
Merakit Sirkuit Utama
Merakit Sirkuit Utama
Merakit Sirkuit Utama
Merakit Sirkuit Utama
Merakit Sirkuit Utama

Perakitan:

  1. Di bagian depan, masukkan komponen ATTINY85 (1), 3P 90deg male header (2)(3), 3P male header (4)(5) dan solder di bagian belakang.
  2. Di bagian belakang, lacak kabel kuning dari KUNING1 ke KUNING2 dan solder.
  3. Di bagian belakang, lacak kabel oranye dari ORANGE1 ke ORANGE2 dan solder.
  4. Di bagian belakang, lacak kabel biru dari BIRU1 ke BIRU2 dan solder.
  5. Di bagian belakang, lacak kabel hijau dari GREEN1 ke GREEN2 dan solder.
  6. Di bagian belakang, lacak kabel putih dari WHITE1 ke WHITE2 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 telanjang dari RED3 ke RED4 dan solder.
  11. Di bagian belakang, lacak kawat telanjang dari SILVER1 ke SILVER2 dan solder.
  12. Tambahkan jumper pada jalur 5V atau 3V3.

Jika menggunakan Indikator di atas (lihat diagram pinout):

  1. Di bagian belakang, solder kabel putih ke PB1.
  2. Di bagian belakang, solder kabel kuning ke PB3.
  3. Di bagian belakang, solder kabel oranye ke PB4.
  4. Di bagian belakang, solder kabel hitam ke GND.

Langkah 5: Pengujian

Pengujian
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: mengirimkan perintah I2C dari UNO ke ATTINY yang mengaktifkan LED Terima. LED ATTINY ALIVE tetap menyala.

Kami sebelumnya telah membangun SHIELD I2C untuk Arduino.

Jika Anda ingin membuat papan tempat memotong roti sebagai gantinya:

  1. Hubungkan 5.0V pada UNO ke VCC pada BATA.
  2. Hubungkan GND di UNO ke GND di BRICK.
  3. Hubungkan A5 di UNO ke SCL di BATA.
  4. Hubungkan A4 di UNO ke SDA di BATA.
  5. Hubungkan resistor pull-up 4K7 dari SDA ke VCC.
  6. Hubungkan resistor pull-up 4K7 dari SCL ke VCC.

Menjalankan tes

  1. Hubungkan UNO Anda ke PC Dev Anda dengan USB.
  2. Unggah kode ke UNO.
  3. Buka Konsol Arduino.
  4. Pilih 9600 baud (mulai ulang UNO dan buka kembali konsol jika perlu).
  5. Alamat budak akan dicetak ke konsol.
  6. Ketika, masukkan di kotak kirim 2 1 (jadi 16 2 1), dan LED Terima menyala.
  7. Ketika, masukkan di kotak kirim 2 0 (jadi 16 2 0), dan LED Terima mati.

Perintah adhoc I2C BRICK untuk budak dari master UNO

#termasuk
const byte _num_chars = 32;
char _received_chars[_num_chars]; // array untuk menyimpan data yang diterima
boolean _has_new_data = salah;
voidsetup() {
Serial.begin(9600);
Serial.println();
Serial.println("ASSIMILATE IOT ACTOR/SENSOR EEPROM EDITOR");
Serial.println("pastikan baris baru dipilih di jendela konsol");
Serial.println();
Serial.println("ALAMAT 1 KONFIRMASI METADATA PENERIMAAN N/A (UNTUK M2M)");
Serial.println("ALAMAT 2 PERINTAH AKTOR");
Serial.println();
Serial.println("ALAMAT DI BUS:");
scan_i2c_addresses();
Serial.println();
Serial.println("");
}
voidscan_i2c_addresses(){
int jumlah_perangkat = 0;
untuk (alamat byte = 8; alamat <127; alamat++)
{
Wire.beginTransmission(alamat);
kesalahan byte const = Wire.endTransmission();
jika (kesalahan == 0)
{
Serial.println(alamat);
}
}
}
batal () {
recv_with_end_marker();
kirim_ke_i2c();
}
voidrecv_with_end_marker() {
byte statis ndx = 0;
char end_marker = '\n';
karakter rc;
while (Serial.available() >0 && _has_new_data == false) {
rc = Serial.read();
if (rc != penanda_akhir) {
_received_chars[ndx] = rc;
ndx++;
if (ndx >= _num_chars) {
ndx = _num_chars - 1;
}
}
lain {
_received_chars[ndx] = '\0'; // akhiri string
ndx = 0;
_has_new_data = benar;
}
}
}
voidsend_to_i2c() {
char param_buf[16];
const String diterima_string = String(_received_chars);
if (_has_new_data == benar) {
int idx1 = diterima_string.indexOf('');
Alamat string = accept_string.substring(0, idx1);
int address_int = alamat.toInt();
if (address_int < 8 || address_int >127){
Serial.println("INVALID ALAMAT INPUT:");
Serial.println(alamat);
kembali;
}
int idx2 = accept_string.indexOf('', idx1+1);
kode string;
jika (idx2 == -1){
kode = accept_string.substring(idx1+1);
}lain{
kode = accept_string.substring(idx1+1, idx2+1);
}
int kode_int = kode.toInt();
if (code_int < 0 || code_int >5){
Serial.println("INVALID KODE INPUT:");
Serial.println(kode);
kembali;
}
bool has_parameter = idx2 > -1;
Parameter string;
jika (memiliki_parameter){
parameter = accept_string.substring(idx2 + 1, idx2 + 17); // maksimal 16 karakter
if (parameter.length() < 1){
Serial.println("PARTAMETER MIN. PANJANG 1");
_has_new_data = salah;
kembali;
}
}lain{
if (code_int >1){
Serial.println("PERLU PARAMETER!");
_has_new_data = salah;
kembali;
}
}
Serial.println();
Serial.print("masukan asal = ");
Serial.println(diterima_string);
Serial.print("alamat = ");
Serial.println(alamat);
Serial.print("kode = ");
Serial.println(kode);
Serial.print("parameter = ");
Serial.println(parameter);
// KIRIM MELALUI I2C
Wire.beginTransmission(address_int);
Wire.write(code_int);
jika (memiliki_parameter){
parameter.trim();
strcpy(param_buf, parameter.c_str());
Wire.write(param_buf);
}
Kawat.endTransmisi();
Serial.println();
Serial.println("DIKIRIM MELALUI I2C!");
Serial.println();
Serial.println("");
_has_new_data = salah;
}
}

lihat rawuno_i2c_command_input.ino dihosting dengan ❤ oleh GitHub

Langkah 6: Langkah Selanjutnya

Langkah selanjutnya
Langkah selanjutnya
Langkah selanjutnya
Langkah selanjutnya

ASSIMILATE ACTOR: HEARTBEAT yang menggunakan bata ini memiliki konfigurasi otomatis untuk Crouton melalui metadata yang sudah diinstal di ATTINY85 di sini. Paket JSON yang dikirim ke Crouton dikirim melalui firmware terbaru untuk ICOS10. Anda dapat melakukan Proof-of-concept pada ESP8266 biasa, jika build terlalu banyak untuk saat ini.

Sketsa UNO yang digunakan dalam Pengujian memiliki fungsi untuk menyimpan alamat slave baru ke EEPROM pada ATTINY85, jika Anda memiliki bentrokan pada bus I2C target Anda.

Direkomendasikan: