Talaan ng mga Nilalaman:

IOT123 - I2C 2CH RELAY BRICK: 5 Hakbang (na may Mga Larawan)
IOT123 - I2C 2CH RELAY BRICK: 5 Hakbang (na may Mga Larawan)

Video: IOT123 - I2C 2CH RELAY BRICK: 5 Hakbang (na may Mga Larawan)

Video: IOT123 - I2C 2CH RELAY BRICK: 5 Hakbang (na may Mga Larawan)
Video: IOT123 - ICOS10: STRUCTURE 2024, Nobyembre
Anonim
IOT123 - I2C 2CH RELAY BRICK
IOT123 - I2C 2CH RELAY BRICK
IOT123 - I2C 2CH RELAY BRICK
IOT123 - I2C 2CH RELAY BRICK
IOT123 - I2C 2CH RELAY BRICK
IOT123 - I2C 2CH RELAY BRICK
IOT123 - I2C 2CH RELAY BRICK
IOT123 - I2C 2CH RELAY 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 2CH RELAY BRICK ay nagpapalawak ng pag-andar ng I2C KY019 BRICK, at may dalawang nabasang / nagsulat ng mga katangian:

2CH RELAYS [0] (true / false)

2CH RELAYS [1] (totoo / hindi totoo)

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 Kagamitan at Kasangkapan
Mga Kagamitan at Kasangkapan
Mga Kagamitan at Kasangkapan
Mga Kagamitan at Kasangkapan
Mga Kagamitan at Kasangkapan
Mga Kagamitan at Kasangkapan

Mayroong isang buong listahan ng Materyal at Sourcing.

  1. 2 Channel Relay (1)
  2. ATTINY85 20PU (1)
  3. 1 "Dobleng panig na protoboard (1)
  4. Lalake Header 90º (3P, 3P)
  5. Lalaking Header (2P, 2P)
  6. Jumper Shunt (1)
  7. Hookup wire (~ 7)
  8. 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_2ch_relay".

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

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

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-…

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
  1. Sa harap, ipasok ang mga sangkap ATTINY85 (1), 3P 90deg male header (2) (3), 3P male header (4) (5) at solder sa likuran.
  2. Sa likuran, subaybayan ang isang dilaw na kawad mula sa YELLOW1 hanggang YELLOW2 at panghinang.
  3. Sa likuran, subaybayan ang isang orange wire mula ORANGE1 hanggang ORANGE2 at solder.
  4. Sa likuran, subaybayan ang isang asul na kawad mula BLUE1 hanggang BLUE2 at solder.
  5. Sa likuran, subaybayan ang isang berdeng kawad mula GREEN1 hanggang GREEN2 at panghinang.
  6. Sa likuran, subaybayan ang isang itim na kawad mula BLACK1 hanggang BLACK2 at solder.
  7. Sa likuran, subaybayan ang isang itim na kawad mula BLACK3 hanggang BLACK4 at solder.
  8. Sa likuran, subaybayan ang isang pulang kawad mula sa RED1 hanggang RED2 at panghinang.
  9. Sa likuran, subaybayan ang isang hubad na kawad mula sa RED3 hanggang RED4 at panghinang.
  10. Sa likuran, subaybayan ang isang hubad na kawad mula sa SILVER1 hanggang sa SILVER2 at panghinang.
  11. Magdagdag ng isang lumulukso sa linya ng 5V o 3V3.

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
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 mga 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.
  4. Pumili ng 9600 baud (i-restart ang UNO at muling buksan ang console kung kailangan mo).
  5. Ang address ng alipin ay i-print sa console.
  6. Kailan, ipasok ang send box 2 0: 1 (kaya 15 2 0: 1), at ang CH1 relay ay nakabukas.
  7. Kailan, ipasok ang send box 2 0: 0 (kaya 15 2 0: 0), at ang CH1 relay ay naka-off.
  8. Kailan, ipasok ang send box 2 1: 1 (kaya 15 2 1: 1), at ang CH2 relay ay nakabukas.
  9. Kailan, ipasok ang send box 2 1: 0 (kaya 15 2 0: 0), at ang CH2 relay ay naka-off.

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: 2CH RELAY 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: