Daftar Isi:

IOT123 - BATU RELAY I2C 2CH: 5 Langkah (dengan Gambar)
IOT123 - BATU RELAY I2C 2CH: 5 Langkah (dengan Gambar)

Video: IOT123 - BATU RELAY I2C 2CH: 5 Langkah (dengan Gambar)

Video: IOT123 - BATU RELAY I2C 2CH: 5 Langkah (dengan Gambar)
Video: IOT123 - BYKO LIVE RIDE 2024, Juni
Anonim
IOT123 - BATU RELAY I2C 2CH
IOT123 - BATU RELAY I2C 2CH
IOT123 - BATU RELAY I2C 2CH
IOT123 - BATU RELAY I2C 2CH
IOT123 - BATU RELAY I2C 2CH
IOT123 - BATU RELAY I2C 2CH
IOT123 - BATU RELAY I2C 2CH
IOT123 - BATU RELAY I2C 2CH

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 RELAY I2C 2CH ini memperluas fungsionalitas BATA I2C KY019, dan memiliki dua properti baca/tulis:

2CH RELAY[0] (benar/salah)

2CH RELAY[1] (benar/salah)

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. 2 Saluran Relay (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

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

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_2ch_relay".

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

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

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

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

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

Terbaik untuk menguji melalui papan tempat memotong roti sebelum melanjutkan.

Jika Anda memiliki SENSOR ASSIMILATE yang ada, pastikan alamat slave berbeda pada kombinasi Host SENSOR/MCU yaitu semua aktor Relay dapat memiliki alamat yang sama selama Anda hanya memiliki satu aktor Relay 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), 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 hitam dari BLACK1 ke BLACK2 dan solder.
  7. Di bagian belakang, lacak kabel hitam dari BLACK3 ke BLACK4 dan solder.
  8. Di bagian belakang, lacak kabel merah dari RED1 ke RED2 dan solder.
  9. Di bagian belakang, lacak kabel telanjang dari RED3 ke RED4 dan solder.
  10. Di bagian belakang, lacak kawat telanjang dari SILVER1 ke SILVER2 dan solder.
  11. Tambahkan jumper pada jalur 5V atau 3V3.

Relai 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
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 membuka atau menutup relai.

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 0:1 (jadi 15 2 0:1), dan relai CH1 menyala.

  7. Ketika, masukkan di kotak kirim 2 0:0 (jadi 15 2 0:0), dan relai CH1 mati.
  8. Ketika, masukkan di kotak kirim 2 1:1 (jadi 15 2 1:1), dan relai CH2 menyala.
  9. Ketika, masukkan di kotak kirim 2 1:0 (jadi 15 2 0:0), dan relai CH2 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 5: Langkah Selanjutnya

Langkah selanjutnya
Langkah selanjutnya
Langkah selanjutnya
Langkah selanjutnya
Langkah selanjutnya
Langkah selanjutnya
Langkah selanjutnya
Langkah selanjutnya

ASSIMILATE ACTOR tindak lanjut: 2CH RELAY 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. Beberapa skema telah ditambahkan, tetapi ada berbagai cara untuk menghubungkan rangkaian hilir tergantung pada apa yang ingin Anda capai, jadi saya akan menyerahkannya untuk Anda:)

Direkomendasikan: