Isi kandungan:

IOT123 - I2C KY019 BRICK: 5 Langkah
IOT123 - I2C KY019 BRICK: 5 Langkah

Video: IOT123 - I2C KY019 BRICK: 5 Langkah

Video: IOT123 - I2C KY019 BRICK: 5 Langkah
Video: Keyboard PCB | Serial output | Alphabet Numbers Signs 2024, November
Anonim
CAWANGAN IOT123 - I2C KY019
CAWANGAN IOT123 - I2C KY019
CAWANGAN IOT123 - I2C KY019
CAWANGAN IOT123 - I2C KY019

IOT123 BRICKS adalah unit modular DIY yang dapat disatukan dengan IOT123 BRICKS yang lain, untuk menambahkan fungsi ke simpul atau boleh pakai. Mereka didasarkan pada protoboards dua sisi persegi, bersambung melalui lubang.

Sebilangan BRICKS ini dijangka berada di beberapa node (Master MCU - ESP8266 atau ATTINY84) di laman web. MCU tidak memerlukan pengetahuan terlebih dahulu mengenai keperluan sensor atau keperluan perisian. Ia mengimbas node I2C kemudian meminta dump harta (data sensor) dari setiap hamba. BRICK ini membekalkan 5.0V, 3.3V dan talian AUX lain yang boleh disesuaikan.

BRICK I2C KY019 ini adalah yang pertama dari ACTOR, dan mempunyai satu harta baca / tulis:

Tukar (benar / salah)

Batu bata sensor jenis Keyes akan diabstrak terlebih dahulu kerana disertakan dengan vitamin (komponen tambahan diperlukan) termasuk dan agak murah (saya beli 37 untuk 10AUD). Papan / litar lain akan diperkenalkan kepada I2C BRICKS.

Lubang-lubang yang bersebelahan dengan ATTINY85 dibiarkan tidak digunakan, untuk membolehkan pengaturcara pogo pin semasa DIP8 disolder ke PCB. Pengambilan lebih lanjut, membungkus BRICKS dalam silinder kecil yang disambungkan ke hab D1M WIFI BLOCK, mengepam nilai ke pelayan 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

Terdapat senarai Bil Bahan dan Sumber yang lengkap.

  1. Relay KY-019 (1)
  2. ATTINY85 20PU (1)
  3. 1 "protoboard dua sisi (1)
  4. Header Lelaki 90º (3P, 3P)
  5. Kawat cangkuk (~ 7)
  6. Pateri dan Besi (1)

Langkah 2: Siapkan ATTINY85

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

CATATAN: Jika ingin mempunyai integrasi Crouton, sila gunakan perpustakaan dari sini, dan gunakan contoh yang dipasang "attiny_ky019".

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

Repositori kod boleh didapati di sini.

ZIP perpustakaan boleh didapati di sini.

Arahan untuk "Mengimport Perpustakaan ZIP" di sini.

Setelah perpustakaan dipasang, anda boleh membuka contoh "attiny_ky019".

Untuk memuat naik firmware ke ATTINY85, anda boleh mendapatkan lebih banyak butiran dalam arahan berikut:

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…

Sebaik-baiknya diuji melalui papan roti sebelum meneruskan.

Sekiranya anda mempunyai ASSIMILATE SENSORS, pastikan alamat hamba berbeza pada kombinasi Host SENSOR / MCU iaitu semua pelakon Relay boleh mempunyai alamat yang sama selagi anda hanya mempunyai satu pelakon Relay pada MCU / nod.

Langkah 3: Pasang Litar

Pasang Litar
Pasang Litar
Pasang Litar
Pasang Litar
Pasang Litar
Pasang Litar
Pasang Litar
Pasang Litar
  1. Di bahagian depan, masukkan komponen ATTINY85 (1), header lelaki 3P 90deg (2) (3), dan solder di bahagian belakang.
  2. Di bahagian belakang, jejak wayar kuning dari KUNING1 hingga KUNING2 dan pateri.
  3. Di bahagian belakang, jejak wayar biru dari BLUE1 ke BLUE2 dan solder.
  4. Di bahagian belakang, jejak wayar hijau dari GREEN1 ke GREEN2 dan solder.
  5. Di bahagian belakang, jejak wayar hitam dari BLACK1 ke BLACK2 dan solder.
  6. Di bahagian belakang, jejak wayar hitam dari BLACK3 ke BLACK4 dan solder.
  7. Di bahagian belakang, jejak wayar merah dari RED1 hingga RED2 dan solder.
  8. Di bahagian belakang, jejak wayar merah dari RED3 hingga RED4 dan solder.

Relay kini boleh disambungkan secara langsung melalui pin ke PCB atau melalui wayar, ke titik yang ditunjukkan dalam kontrak pin.

Langkah 4: Menguji

Ujian
Ujian
Ujian
Ujian
Ujian
Ujian

Sebilangan BRICKS ini dijangka berada di beberapa node (MCU - ESP8266 atau ATTINY84) di persekitaran. Ini adalah ujian unit: menghantar arahan I2C dari UNO ke ATTINY yang membuka atau menutup geganti.

Kami sebelum ini telah membina I2C SHIELD untuk Arduino.

Sekiranya anda mahu papan roti:

  1. Sambungkan 5.0V di UNO ke VCC di BRICK.
  2. Sambungkan GND di UNO ke GND di BRICK.
  3. Sambungkan A5 di UNO ke SCL di BRICK.
  4. Sambungkan A4 di UNO ke SDA di BRICK.
  5. Sambungkan perintang tarik 4K7 dari SDA ke VCC.
  6. Sambungkan perintang tarik 4K7 dari SCL ke VCC.

Menjalankan ujian

  1. Sambungkan UNO anda ke PC Dev anda dengan USB.
  2. Muat naik kod ke UNO.
  3. Buka Arduino Console. Pilih 9600 baud (mulakan semula UNO dan buka semula konsol jika anda perlu).
  4. Alamat hamba akan dicetak ke konsol.
  5. Bila, masukkan dalam kotak hantar 2 1 (jadi 12 2 1), dan geganti dihidupkan.
  6. Bila, masukkan dalam kotak hantar 2 0 (jadi 12 2 0), dan geganti dimatikan.

Perintah adhoc I2C BRICK untuk hamba dari master UNO

#sertakan
const byte _num_chars = 32;
char _received_chars [_num_chars]; // array untuk menyimpan data yang diterima
boolean _has_new_data = salah;
kekosongan () {
Serial.begin (9600);
Bersiri.println ();
Serial.println ("ASSIMILATE IOT ACTOR / SENSOR EEPROM EDITOR");
Serial.println ("pastikan barisan baru dipilih dalam tetingkap konsol");
Bersiri.println ();
Serial.println ("ALAMAT 1 CONFIRM METADATA RECEIPT N / A (FOR M2M)");
Serial.println ("ALAMAT 2 TINDAKAN AKTOR");
Bersiri.println ();
Serial.println ("ALAMAT DI BUS:");
scan_i2c_addresses ();
Bersiri.println ();
Serial.println ("");
}
voidscan_i2c_addresses () {
int device_count = 0;
untuk (alamat bait = 8; alamat <127; alamat ++)
{
Wire.beginTransmission (alamat);
error byte const = Wire.endTransmission ();
jika (ralat == 0)
{
Serial.println (alamat);
}
}
}
kekosongan () {
recv_with_end_marker ();
send_to_i2c ();
}
voidrecv_with_end_marker () {
bait statik ndx = 0;
char end_marker = '\ n';
char rc;
sementara (Serial.available ()> 0 && _has_new_data == false) {
rc = Serial.read ();
jika (rc! = end_marker) {
_received_chars [ndx] = rc;
ndx ++;
jika (ndx> = _num_chars) {
ndx = _num_chars - 1;
}
}
lain {
_received_chars [ndx] = '\ 0'; // tamatkan rentetan
ndx = 0;
_has_new_data = benar;
}
}
}
voidsend_to_i2c () {
char param_buf [16];
const String diterima_string = String (_received_chars);
jika (_has_new_data == benar) {
int idx1 = diterima_string.indexOf ('');
String address = diterima_string.substring (0, idx1);
int address_int = address.toInt ();
jika (address_int <8 || address_int> 127) {
Serial.println ("INPUT ALAMAT INVALID:");
Serial.println (alamat);
kembali;
}
int idx2 = diterima_string.indexOf ('', idx1 + 1);
Kod rentetan;
jika (idx2 == -1) {
kod = diterima_string.substring (idx1 + 1);
} lain {
kod = diterima_string.substring (idx1 + 1, idx2 + 1);
}
int code_int = code.toInt ();
jika (code_int <0 || code_int> 5) {
Serial.println ("INVALID CODE INPUT:");
Serial.println (kod);
kembali;
}
bool has_parameter = idx2> -1;
Parameter rentetan;
jika (mempunyai_parameter) {
parameter = diterima_string.substring (idx2 + 1, idx2 + 17); // 16 aksara maks
jika (parameter.length () <1) {
Serial.println ("PARTAMETER MIN. PANJANG 1");
_has_new_data = salah;
kembali;
}
} lain {
jika (code_int> 1) {
Serial.println ("PARAMETER DIPERLUKAN!");
_has_new_data = salah;
kembali;
}
}
Bersiri.println ();
Serial.print ("input orig =");
Serial.println (menerima_string);
Serial.print ("alamat =");
Serial.println (alamat);
Serial.print ("code =");
Serial.println (kod);
Serial.print ("parameter =");
Serial.println (parameter);
// HANTAR VIA I2C
Wire.beginTransmission (address_int);
Wire.write (code_int);
jika (mempunyai_parameter) {
parameter.trim ();
strcpy (param_buf, parameter.c_str ());
Wire.write (param_buf);
}
Wire.endTransmission ();
Bersiri.println ();
Serial.println ("SENT VIA I2C!");
Bersiri.println ();
Serial.println ("");
_has_new_data = salah;
}
}

lihat rawuno_i2c_command_input.ino dihoskan dengan ❤ oleh GitHub

Langkah 5: Langkah Seterusnya

Langkah seterusnya
Langkah seterusnya
Langkah seterusnya
Langkah seterusnya
Langkah seterusnya
Langkah seterusnya
Langkah seterusnya
Langkah seterusnya

Susulan ASSIMILATE ACTOR: KY019 yang menggunakan bata ini mempunyai konfigurasi automatik untuk Crouton melalui metadata yang sudah dipasang di ATTINY85 di sini. Paket JSON yang dihantar ke Crouton dihantar melalui firmware terbaru untuk ICOS10. Anda boleh melakukan Proof-of-concept pada ESP8266 biasa, jika binaannya terlalu banyak buat masa ini.

Sketsa UNO yang digunakan dalam Pengujian memiliki fungsi untuk menyimpan alamat budak baru ke EEPROM di ATTINY85, jika anda mengalami benturan pada bas I2C sasaran anda.

Beberapa skema telah ditambahkan, tetapi terdapat pelbagai cara untuk memasang litar hilir bergantung pada apa yang anda ingin capai, jadi saya akan memberikannya untuk anda:)

Disyorkan: