Talaan ng mga Nilalaman:

IOT123 - I2C KY019 BRICK: 5 Hakbang
IOT123 - I2C KY019 BRICK: 5 Hakbang

Video: IOT123 - I2C KY019 BRICK: 5 Hakbang

Video: IOT123 - I2C KY019 BRICK: 5 Hakbang
Video: Keyboard PCB | Serial output | Alphabet Numbers Signs 2024, Nobyembre
Anonim
IOT123 - I2C KY019 BRICK
IOT123 - I2C KY019 BRICK
IOT123 - I2C KY019 BRICK
IOT123 - I2C KY019 BRICK

Ang IOT123 BRICKS ay mga modular na yunit ng DIY na maaaring mashed sa iba pang mga IOT123 BRICKS, upang magdagdag ng pag-andar sa isang node o naisusuot. Ang mga ito ay batay sa pulgadang parisukat, mga dobleng panig na mga protoboard na may magkakaugnay na mga butas.

Ang isang bilang ng mga BRICKS na ito ay inaasahan na nasa maraming mga node (Master MCUs - ESP8266 o ATTINY84) sa isang site. Ang MCU ay hindi nangangailangan ng paunang kaalaman tungkol sa mga layunin ng sensor o mga pangangailangan ng software. Sinusuri nito ang mga node ng I2C pagkatapos ay humiling ng isang dump ng pag-aari (data ng sensor) mula sa bawat alipin. Ang mga BRICK na ito ay nagbibigay ng 5.0V, 3.3V at isa pang linya ng AUX na napapasadyang.

Ang I2C KY019 BRICK na ito ay ang una sa mga AKTOR, at may isang nabasa / sumulat ng pag-aari:

Lumipat (totoo / hindi totoo)

Ang mga brick na sensor ng uri ng Keyes ay mai-abstract muna dahil kasama ang mga bitamina (labis na mga sangkap na kinakailangan) na kasama at medyo cheep (bumili ako ng 37 para sa 10AUD). Ang iba pang mga board / circuit ay ipakikilala sa I2C BRICKS.

Ang mga through-hole na katabi ng ATTINY85 ay naiwang hindi nagamit, upang paganahin ang isang programang pogo pin habang ang DIP8 ay solder sa PCB. Ang isang karagdagang abstraction, na ibinabalot ang BRICKS sa maliliit na silindro na nag-plug sa isang D1M WIFI BLOCK hub, na binobomba ang mga halaga sa isang MQTT server, ay binuo.

Hakbang 1: Mga Materyales at Tool

Mga Materyales at Kasangkapan
Mga Materyales at Kasangkapan
Mga Materyales at Kasangkapan
Mga Materyales at Kasangkapan
Mga Materyales at Kasangkapan
Mga Materyales at Kasangkapan

Mayroong isang buong listahan ng Materyal at Sourcing.

  1. KY-019 Relay (1)
  2. ATTINY85 20PU (1)
  3. 1 "Dobleng panig na protoboard (1)
  4. Lalake Header 90º (3P, 3P)
  5. Hookup wire (~ 7)
  6. Panghinang at Bakal (1)

Hakbang 2: Ihanda ang ATTINY85

Ihanda ang ATTINY85
Ihanda ang ATTINY85
Ihanda ang ATTINY85
Ihanda ang ATTINY85
Ihanda ang ATTINY85
Ihanda ang ATTINY85

TANDAAN: Kung may balak na isama ang Crouton, mangyaring gamitin ang library mula dito, at gamitin ang halimbawang naka-install na "attiny_ky019".

Kailangan ang AttinyCore mula sa Boards Manager. Sunugin ang bootloader na "EEPROM Nananatili", "8mHZ Panloob" (lahat ng config na ipinakita sa itaas).

Makikita ang repository ng code dito.

Ang isang ZIP ng silid-aklatan ay matatagpuan dito.

Mga tagubilin para sa "Pag-import ng isang ZIP Library" dito.

Kapag na-install na ang library maaari mong buksan ang halimbawang "attiny_ky019".

Upang mai-upload ang firmware sa ATTINY85, maaari kang makahanap ng higit pang mga detalye sa mga itinuturo na ito:

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…

Pinakamahusay na subukan sa pamamagitan ng breadboard bago magpatuloy.

Kung mayroon kang mga ASSIMILATE SENSORS, siguraduhin na ang address ng alipin ay naiiba sa isang kumbinasyon ng SENSOR / MCU Host ibig sabihin lahat ng mga aktor ng Relay ay maaaring magkaroon ng parehong address hangga't mayroon ka lamang isang Relay na artista sa isang MCU / node.

Hakbang 3: Magtipon ng Circuit

Magtipon ng Circuit
Magtipon ng Circuit
Magtipon ng Circuit
Magtipon ng Circuit
Magtipon ng Circuit
Magtipon ng Circuit
Magtipon ng Circuit
Magtipon ng Circuit
  1. Sa harap, ipasok ang mga sangkap na ATTINY85 (1), 3P 90deg male header (2) (3), at maghinang sa likuran.
  2. Sa likuran, subaybayan ang isang dilaw na kawad mula sa YELLOW1 hanggang YELLOW2 at panghinang.
  3. Sa likuran, subaybayan ang isang asul na kawad mula BLUE1 hanggang BLUE2 at solder.
  4. Sa likuran, subaybayan ang isang berdeng kawad mula GREEN1 hanggang GREEN2 at panghinang.
  5. Sa likuran, subaybayan ang isang itim na kawad mula BLACK1 hanggang BLACK2 at solder.
  6. Sa likuran, subaybayan ang isang itim na kawad mula BLACK3 hanggang BLACK4 at solder.
  7. Sa likuran, subaybayan ang isang pulang kawad mula sa RED1 hanggang RED2 at panghinang.
  8. Sa likuran, subaybayan ang isang pulang kawad mula sa RED3 hanggang RED4 at panghinang.

Ang relay ay maaari nang konektado nang direkta sa pamamagitan ng mga pin nito sa PCB o sa pamamagitan ng mga wire, sa mga puntong ipinakita sa kontrata ng pin.

Hakbang 4: Pagsubok

Pagsubok
Pagsubok
Pagsubok
Pagsubok
Pagsubok
Pagsubok

Ang isang bilang ng mga BRICKS na ito ay inaasahan na nasa maraming mga node (MCUs - ESP8266 o ATTINY84) sa isang kapaligiran. Ito ay isang pagsubok sa yunit: nagpapadala ng mga utos ng I2C mula sa UNO patungo sa ATTINY na magbubukas o magsasara ng relay.

Nakagawa na kami dati ng isang I2C SHIELD para sa Arduino.

Kung nais mong i-breadboard ito sa halip:

  1. Ikonekta ang 5.0V sa UNO sa isang VCC sa BRICK.
  2. Ikonekta ang GND sa UNO sa GND sa BRICK.
  3. Ikonekta ang A5 sa UNO sa SCL sa BRICK.
  4. Ikonekta ang A4 sa UNO sa SDA sa BRICK.
  5. Ikonekta ang isang resistor na pull-up na 4K7 mula sa SDA patungong VCC.
  6. Ikonekta ang isang resistor na pull-up na 4K7 mula sa SCL patungong VCC.

Pagpapatakbo ng pagsubok

  1. Ikonekta ang iyong UNO sa iyong Dev PC gamit ang USB.
  2. I-upload ang code sa UNO.
  3. Buksan ang Arduino Console. Pumili ng 9600 baud (i-restart ang UNO at muling buksan ang console kung kailangan mo).
  4. Ang address ng alipin ay i-print sa console.
  5. Kailan, ipasok ang send box 2 1 (kaya 12 2 1), at ang relay ay nakabukas.
  6. Kailan, ipasok ang send box 2 0 (kaya 12 2 0), at ang relay ay patayin.

Ang mga utos ng I2C BRICK adhoc para sa mga alipin mula sa UNO master

# isama
Const byte _num_chars = 32;
char _received_chars [_num_chars]; // isang array upang maiimbak ang natanggap na data
boolean _has_new_data = false;
voidsetup () {
Serial.begin (9600);
Serial.println ();
Serial.println ("ASSIMILATE IOT ACTOR / SENSOR EEPROM EDITOR");
Serial.println ("tiyaking napili ang newline sa window ng console");
Serial.println ();
Serial.println ("ADDRESS 1 CONFIRM METADATA RESEIPT N / A (FOR M2M)");
Serial.println ("ADDRESS 2 ACTOR CommAND");
Serial.println ();
Serial.println ("ADDRESSES ON BUS:");
scan_i2c_addresses ();
Serial.println ();
Serial.println ("");
}
voidscan_i2c_addresses () {
int aparato_count = 0;
para sa (byte address = 8; address <127; address ++)
{
Wire.beginTransmission (address);
const byte error = Wire.endTransmission ();
kung (error == 0)
{
Serial.println (address);
}
}
}
voidloop () {
recv_with_end_marker ();
send_to_i2c ();
}
voidrecv_with_end_marker () {
static byte ndx = 0;
char end_marker = '\ n';
char rc;
habang (Serial.available ()> 0 && _has_new_data == false) {
rc = Serial.read ();
kung (rc! = end_marker) {
_received_chars [ndx] = rc;
ndx ++;
kung (ndx> = _num_chars) {
ndx = _num_chars - 1;
}
}
iba pa {
_received_chars [ndx] = '\ 0'; // wakasan ang string
ndx = 0;
_has_new_data = totoo;
}
}
}
voidsend_to_i2c () {
char param_buf [16];
Const String natanggap_string = String (_received_chars);
kung (_has_new_data == totoo) {
int idx1 = natanggap_string.indexOf (");
String address = natanggap_string.substring (0, idx1);
int address_int = address.toInt ();
kung (address_int <8 || address_int> 127) {
Serial.println ("INVALID ADDRESS INPUT:");
Serial.println (address);
bumalik;
}
int idx2 = natanggap_string.indexOf (", idx1 + 1);
String code;
kung (idx2 == -1) {
code = ditampa_string.substring (idx1 + 1);
} iba pa {
code = ditampa_string.substring (idx1 + 1, idx2 + 1);
}
int code_int = code.toInt ();
kung (code_int <0 || code_int> 5) {
Serial.println ("INVALID CODE INPUT:");
Serial.println (code);
bumalik;
}
bool has_parameter = idx2> -1;
Parameter ng string;
kung (has_parameter) {
parameter = ditampa_string.substring (idx2 + 1, idx2 + 17); // 16 chars max
kung (parameter.length () <1) {
Serial.println ("PARTAMETER MIN. LENGTH 1");
_has_new_data = false;
bumalik;
}
} iba pa {
kung (code_int> 1) {
Serial.println ("PARAMETER REQUIRED!");
_has_new_data = false;
bumalik;
}
}
Serial.println ();
Serial.print ("input Orig =");
Serial.println (natanggap_string);
Serial.print ("address =");
Serial.println (address);
Serial.print ("code =");
Serial.println (code);
Serial.print ("parameter =");
Serial.println (parameter);
// SEND VIA I2C
Wire.beginTransmission (address_int);
Wire.write (code_int);
kung (has_parameter) {
parameter.trim ();
strcpy (param_buf, parameter.c_str ());
Wire.write (param_buf);
}
Wire.endTransmission ();
Serial.println ();
Serial.println ("SENT VIA I2C!");
Serial.println ();
Serial.println ("");
_has_new_data = false;
}
}

tingnan ang rawuno_i2c_command_input.ino na naka-host sa ❤ ng GitHub

Hakbang 5: Susunod na Mga Hakbang

Mga Susunod na Hakbang
Mga Susunod na Hakbang
Mga Susunod na Hakbang
Mga Susunod na Hakbang
Mga Susunod na Hakbang
Mga Susunod na Hakbang
Mga Susunod na Hakbang
Mga Susunod na Hakbang

Ang follow-up na ASSIMILATE ACTOR: KY019 na gumagamit ng brick na ito ay may awtomatikong pagsasaayos para sa Crouton sa pamamagitan ng metadata na naka-install na sa ATTINY85 dito. Ang packet ng JSON na ipinadala sa Crouton ay ipinadala sa pamamagitan ng pinakabagong firmware para sa ICOS10. Maaari kang gumawa ng isang Proof-of-concept sa isang ordinaryong ESP8266, kung ang pagbuo ay labis na sa ngayon.

Ang UNO sketch na ginamit sa Pagsubok ay may isang function para sa pag-save ng isang bagong address ng alipin sa EEPROM sa ATTINY85, kung mayroon kang sagupaan sa iyong target na I2C bus.

Ang ilang mga eskematiko ay naidagdag, ngunit may iba't ibang mga paraan upang wire ang downstream circuit depende sa kung ano ang nais mong makamit, kaya't iiwan ko iyon para sa iyo:)

Inirerekumendang: