Isi kandungan:

IOT123 - JIG MASTER BRICK I2C: 4 Langkah
IOT123 - JIG MASTER BRICK I2C: 4 Langkah

Video: IOT123 - JIG MASTER BRICK I2C: 4 Langkah

Video: IOT123 - JIG MASTER BRICK I2C: 4 Langkah
Video: Make an ATTiny85 Laser LED Sign 2024, November
Anonim
IOT123 - I2C BRICK MASTER JIG
IOT123 - I2C BRICK MASTER JIG
IOT123 - I2C BRICK MASTER JIG
IOT123 - I2C BRICK MASTER JIG
IOT123 - I2C BRICK MASTER JIG
IOT123 - I2C BRICK MASTER JIG

Semasa mengembangkan ASSIMILATE SENSORS and ACTORS, saya tetap menggunakan UNO untuk menghantar arahan adhoc I2C ke prototaip yang sedang dibangunkan. Salah satu kelebihan I2C BRICKS adalah pinout standard. Daripada menggunakan wayar papan roti setiap kali (lihat Fritzings), perisai teknologi tinggi yang kukuh digunakan.

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
  1. 4cm x 6cm PCB Uninersal (1)
  2. Kawat cangkuk (~ 6)
  3. Perintang 4K7 (2) 6
  4. Header Lelaki (12P, 8P)
  5. Header Wanita (9P, atau 3P, 3P)
  6. Pateri dan Besi (1)

Langkah 2: Perhimpunan

perhimpunan
perhimpunan
perhimpunan
perhimpunan
perhimpunan
perhimpunan

Sekiranya anda menggunakan header wanita off 3P dan bukan header wanita 9P off, PEMINAT ASSIMILATE / ACTOR akan dipasang di JIG tanpa melepaskannya.

Dengan pendawaian, lepaskan hingga 10mm di hujungnya dan timah hujungnya.

  1. Di bahagian bawah PCB, masukkan header lelaki (1) (2) dan solder di atas.
  2. Di bahagian atas PCB, masukkan header wanita (3) dan solder di bawah.
  3. Di bahagian atas, melalui lubang wayar merah menjadi RED1 dan RED2.
  4. Di bahagian bawah, wayar melalui lubang dari RED1 menjadi RED3.
  5. Di bahagian bawah, wayar melalui lubang dari RED2 menjadi RED5, dan solder.
  6. Di bahagian atas, wayar melalui lubang dari RED3 ke RED4, dan solder.
  7. Di bahagian atas, melalui lubang wayar merah menjadi RED6 dan RED7.
  8. Di bahagian bawah, wayar melalui lubang dari RED6 menjadi RED8.
  9. Di bahagian bawah, wayar melalui lubang dari RED7 menjadi RED10, dan solder.
  10. Di bahagian atas, wayar melalui lubang dari RED8 ke RED9, dan solder.
  11. Di bahagian atas, melalui lubang wayar hitam menjadi BLACK1 dan BLACK2.
  12. Di bahagian bawah, wayar melalui lubang dari BLACK1 menjadi BLACK3.
  13. Di bahagian bawah, wayar melalui lubang dari BLACK2 menjadi BLACK5, dan solder.
  14. Di bahagian atas, wayar melalui lubang dari BLACK3 menjadi BLACK4, dan solder.
  15. Di bahagian atas, melalui lubang wayar biru menjadi BLUE1 dan BLUE2.
  16. Di bahagian bawah, wayar melalui lubang dari BLUE1 menjadi BLUE3.
  17. Di bahagian bawah, wayar melalui lubang dari BLUE2 ke BLUE5, dan solder.
  18. Di bahagian atas, wayar melalui lubang dari BLUE3 menjadi BLUE4, dan solder.
  19. Di bahagian atas, melalui lubang wayar hijau menjadi HIJAU1 dan HIJAU2.
  20. Di bahagian bawah, wayar melalui lubang dari HIJAU1 ke HIJAU3.
  21. Di bahagian bawah, wayar melalui lubang dari GREEN2 menjadi GREEN5, dan solder.
  22. Di bahagian atas, wayar melalui lubang dari GREEN3 ke GREEN4, dan solder.
  23. Di bahagian atas, lubang melalui perintang 4K7 ke SILVER3 dan SILVER4.
  24. Di bahagian bawah, wayar melalui lubang dari SILVER3 menjadi GREEN5, dan solder.
  25. Di bahagian bawah, wayar melalui lubang dari SILVER4 menjadi RED10, dan solder.
  26. Di bahagian atas, lubang melalui perintang 4K7 ke SILVER1 dan SILVER2.
  27. Di bahagian bawah, wayar melalui lubang dari SILVER1 ke BLUE5, dan solder.
  28. Di bahagian bawah, wayar melalui lubang dari SILVER2 menjadi RED10, dan solder.

Langkah 3: Kod untuk UNO

Kod untuk UNO
Kod untuk UNO

Sketsa di sini tidak sempurna. Ia membolehkan anda menggunakan Input Konsol, untuk membuat UNO menghantar pesanan I2C ke I2C ATTINY85 BRICK.

Semua arahan dicetak ke layar, dengan pilihan yang disokong.

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 4: Langkah Seterusnya

Dari binaan yang dibentangkan, terdapat cukup bahagian bergerak untuk anda membina RANGKAIAN ASSIMILATE IOT anda sendiri.

Setiap fungsi masing-masing nod (sensor dan pelakon) dapat dikendalikan dengan cara yang terdesentralisasi, tidak bergantung kepada induk MCU untuk mempunyai pengetahuan mengenai ciri yang disokong.

Sebarang aplikasi yang menyambung ke broker MQTT dapat mengawal / mengamati setiap ciri IOT Node. Itulah M2M, aplikasi web, IFTTT dan sebagainya. Antaramuka yang jauh lebih sederhana (atau lebih kaya jika anda suka) ke dunia IOT anda.

Disyorkan: