Turinys:

IOT123 - I2C 2CH RELAY BRICK: 5 žingsniai (su nuotraukomis)
IOT123 - I2C 2CH RELAY BRICK: 5 žingsniai (su nuotraukomis)

Video: IOT123 - I2C 2CH RELAY BRICK: 5 žingsniai (su nuotraukomis)

Video: IOT123 - I2C 2CH RELAY BRICK: 5 žingsniai (su nuotraukomis)
Video: IOT123 - ICOS10: STRUCTURE 2024, Birželis
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

„IOT123 BRICKS“yra moduliniai „pasidaryk pats“įrenginiai, kuriuos galima sumaišyti su kitais „IOT123 BRICKS“elementais, kad mazgas ar nešiojamas papildytų funkcionalumą. Jie yra pagrįsti kvadratinėmis, dvipusiomis protobordais, tarpusavyje sujungtais per skyles.

Tikimasi, kad nemažai šių plytų bus keliuose svetainės mazguose (pagrindiniai MCU - ESP8266 arba ATTINY84). MCU nereikia išankstinių žinių apie jutiklių paskirtį ar programinės įrangos poreikius. Jis nuskaito, ar nėra I2C mazgų, tada iš kiekvieno vergo prašo nuosavybės iškelties (jutiklio duomenys). Šie BRICK maitina 5.0V, 3.3V ir kitą AUX liniją, kurią galima pritaikyti.

Šis „I2C 2CH RELAY BRICK“išplečia „I2C KY019 BRICK“funkcionalumą ir turi dvi skaitymo/rašymo ypatybes:

2CH RELEJAI [0] (tiesa/klaidinga)

2CH RELĖS [1] (tiesa/klaidinga)

Skylės, esančios greta ATTINY85, buvo nenaudojamos, kad būtų galima naudoti „Pogo“smeigtuko programuotoją, kol DIP8 yra lituojamas prie PCB. Toliau kuriama, kad BRICKS būtų supakuotas į mažus cilindrus, kurie jungiami prie D1M WIFI BLOCK koncentratoriaus, siurbiant vertes į MQTT serverį.

1 žingsnis: medžiagos ir įrankiai

Medžiagos ir įrankiai
Medžiagos ir įrankiai
Medžiagos ir įrankiai
Medžiagos ir įrankiai
Medžiagos ir įrankiai
Medžiagos ir įrankiai

Yra visas medžiagų ir šaltinių sąrašas.

  1. 2 kanalų relė (1)
  2. ATTINY85 20PU (1)
  3. 1 "dvipusė protoboard (1)
  4. Vyriška antraštė 90º (3P, 3P)
  5. Vyriška antraštė (2P, 2P)
  6. Džemperio šuntas (1)
  7. Prijungimo laidas (~ 7)
  8. Lituoklis ir geležis (1)

2 žingsnis: Paruoškite ATTINY85

Paruoškite ATTINY85
Paruoškite ATTINY85
Paruoškite ATTINY85
Paruoškite ATTINY85
Paruoškite ATTINY85
Paruoškite ATTINY85

PASTABA: jei ketinate integruoti „Crouton“, naudokite biblioteką iš čia ir naudokite įdiegtą pavyzdį „attiny_2ch_relay“.

Reikia „AttinyCore“iš valdybos. Įrašykite įkrovos įkėlimo programą „EEPROM Retained“, „8mHZ Internal“(visa konfigūracija parodyta aukščiau).

Kodo saugyklą rasite čia.

Bibliotekos pašto adresą rasite čia.

„ZIP bibliotekos importavimo“instrukcijos čia.

Įdiegę biblioteką, galite atidaryti pavyzdį „attiny_2ch_relay“.

Norėdami įkelti programinę-aparatinę įrangą į ATTINY85, daugiau informacijos rasite šiose instrukcijose:

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

Prieš tęsiant, geriausia išbandyti per duonos lentą.

Jei turite ASSIMILATE JUTIKLIŲ, įsitikinkite, kad SENSOR/MCU pagrindinio kompiuterio derinio slaptasis adresas yra kitoks, t. Y. Visi Relay veikėjai gali turėti tą patį adresą, kol MCU/mazge turite tik vieną relės aktorių.

3 žingsnis: Surinkite grandinę

Surinkite grandinę
Surinkite grandinę
Surinkite grandinę
Surinkite grandinę
Surinkite grandinę
Surinkite grandinę
  1. Priekyje įkiškite komponentus ATTINY85 (1), 3P 90 laipsnių apvalkalo galvutes (2) (3), 3P išorines galvutes (4) (5) ir lituokite galinėje pusėje.
  2. Galinėje pusėje atsekite geltoną vielą nuo GELTONOS1 iki GELTONOS2 ir lydmetalį.
  3. Galinėje pusėje atsekite oranžinę vielą nuo ORANGE1 iki ORANGE2 ir lydmetalį.
  4. Galinėje pusėje atsekite mėlyną laidą nuo BLUE1 iki BLUE2 ir lydmetalį.
  5. Galinėje pusėje atsekite žalią laidą nuo GREEN1 iki GREEN2 ir lydmetalį.
  6. Galinėje pusėje atsekite juodą laidą nuo BLACK1 iki BLACK2 ir lydmetalį.
  7. Galinėje pusėje atsekite juodą laidą nuo BLACK3 iki BLACK4 ir lydmetalį.
  8. Galinėje pusėje atsekite raudoną vielą nuo RED1 iki RED2 ir lydmetalį.
  9. Galinėje pusėje atsekite pliką laidą nuo RED3 iki RED4 ir lydmetalį.
  10. Galinėje pusėje atsekite pliką vielą nuo SILVER1 iki SILVER2 ir lydmetalį.
  11. Pridėkite trumpiklį 5V arba 3V3 linijoje.

Dabar relę galima tiesiogiai prijungti per kaiščius prie PCB arba per laidus prie kaiščio sutartyje nurodytų taškų.

4 žingsnis: bandymas

Testavimas
Testavimas
Testavimas
Testavimas
Testavimas
Testavimas
Testavimas
Testavimas

Tikimasi, kad daugelis šių plytų bus keliuose aplinkos mazguose (MCU - ESP8266 arba ATTINY84). Tai yra vieneto testas: siunčia I2C komandas iš UNO į ATTINY, kuris atidaro arba uždaro relės.

Anksčiau mes sukūrėme „I2C SHIELD“„Arduino“.

Jei norite vietoj to uždėti lentą:

  1. Prijunkite 5,0 V UNO prie BRCK VCC.
  2. Prijunkite UNO GND prie BRICK GND.
  3. Prijunkite A5 ant UNO prie SCL BRICK.
  4. Prijunkite A4 UNO prie SDA BRICK.
  5. Prijunkite 4K7 ištraukiamąjį rezistorių iš SDA prie VCC.
  6. Prijunkite 4K7 ištraukiamąjį rezistorių iš SCL prie VCC.

Bandymo vykdymas

  1. Prijunkite UNO prie „Dev“kompiuterio naudodami USB.
  2. Įkelkite kodą į UNO.
  3. Atidarykite „Arduino“konsolę.
  4. Pasirinkite 9600 baudų (iš naujo paleiskite UNO ir, jei reikia, vėl atidarykite konsolę).
  5. Vergo adresas bus atspausdintas konsolėje.
  6. Kai įveskite siuntimo laukelį 2 0: 1 (taigi 15 2 0: 1) ir CH1 relė įsijungs.

  7. Kai įveskite siuntimo laukelį 2 0: 0 (taigi 15 2 0: 0) ir CH1 relė išsijungs.
  8. Kai įveskite siuntimo laukelį 2 1: 1 (taigi 15 2 1: 1) ir CH2 relė įsijungs.
  9. Kai įveskite siuntimo laukelį 2 1: 0 (taigi 15 2 0: 0) ir CH2 relė išsijungs.

I2C BRICK adhoc komandos vergams iš UNO master

#įtraukti
const baitas _num_chars = 32;
char _gautos_ženklos [_num_chars]; // masyvas, skirtas saugoti gautus duomenis
loginis _has_new_data = false;
voidsetup () {
Serial.begin (9600);
Serial.println ();
Serial.println ("ASIMILIUOTI IOT AKTORIUS/JUTIKLIO EEPROM REDAKTORIUS");
Serial.println ("užtikrinti, kad konsolės lange būtų pasirinkta nauja eilutė");
Serial.println ();
Serial.println ("1 ADRESAS PATVIRTINTI METADATO GAVIMĄ N/A (M2M)");
Serial.println ("2 ADRESAS AKTORIŲ KOMANDA");
Serial.println ();
Serial.println ("ADRESAI BUSE:");
scan_i2c_addresses ();
Serial.println ();
Serial.println ("");
}
voidscan_i2c_addresses () {
int device_count = 0;
(baitų adresas = 8; adresas <127; adresas ++)
{
Wire.beginTransmission (adresas);
const baito klaida = Wire.endTransmission ();
jei (klaida == 0)
{
Serial.println (adresas);
}
}
}
voidloop () {
recv_with_end_marker ();
send_to_i2c ();
}
voidrecv_with_end_marker () {
statinis baitas ndx = 0;
char end_marker = '\ n';
char rc;
nors (Serial.available ()> 0 && _has_new_data == false) {
rc = Serial.read ();
if (rc! = end_marker) {
_sulaukė_ženklų [ndx] = rc;
ndx ++;
jei (ndx> = _num_chars) {
ndx = _num_chars - 1;
}
}
Kitas {
_received_chars [ndx] = '\ 0'; // nutraukti eilutę
ndx = 0;
_has_new_data = tiesa;
}
}
}
voidsend_to_i2c () {
char param_buf [16];
const String gavo_string = String (_received_chars);
jei (_turi_ naujus duomenis == tiesa) {
int idx1 = gavo_string.indexOf ('');
Eilutės adresas = gavo_string.substring (0, idx1);
int address_int = address.toInt ();
if (address_int <8 || address_int> 127) {
Serial.println ("NETEISINGAS ADRESO ĮVADAS:");
Serial.println (adresas);
grįžti;
}
int idx2 = gavo_string.indexOf ('', idx1+1);
Eilutės kodas;
jei (idx2 == -1) {
kodas = gavo_string.substring (idx1+1);
}Kitas{
kodas = gavo_string.substring (idx1+1, idx2+1);
}
int kodas_int = kodas.toInt ();
if (code_int <0 || code_int> 5) {
Serial.println ("NETEISINGAS KODO ĮVADAS:");
Serial.println (kodas);
grįžti;
}
bool has_parameter = idx2> -1;
Styginių parametras;
if (has_parameter) {
parametras = gavo_string.substring (idx2 + 1, idx2 + 17); // maks. 16 simbolių
jei (parametras.length () <1) {
Serial.println („PARTAMETER MIN. LENGTH 1“);
_has_new_data = klaidinga;
grįžti;
}
}Kitas{
if (code_int> 1) {
Serial.println ("REIKALINGAS PARAMETRAS!");
_has_new_data = klaidinga;
grįžti;
}
}
Serial.println ();
Serial.print ("įvesties orig =");
Serial.println (gavo_eilę);
Serial.print ("adresas =");
Serial.println (adresas);
Serial.print ("kodas =");
Serial.println (kodas);
Serial.print ("parametras =");
Serial.println (parametras);
// Siųsti per I2C
Wire.beginTransmission (adresas_int);
Wire.write (code_int);
if (has_parameter) {
parametras.trim ();
strcpy (param_buf, parametras.c_str ());
Wire.write (param_buf);
}
Wire.endTransmission ();
Serial.println ();
Serial.println ("IŠSIŲSTA I2C!");
Serial.println ();
Serial.println ("");
_has_new_data = klaidinga;
}
}

peržiūrėkite rawuno_i2c_command_input.ino, kurį su „❤“priglobia „GitHub“

5 veiksmas: kiti veiksmai

Tolesni žingsniai
Tolesni žingsniai
Tolesni žingsniai
Tolesni žingsniai
Tolesni žingsniai
Tolesni žingsniai
Tolesni žingsniai
Tolesni žingsniai

Tolesnis ASSIMILATE ACTOR: 2CH RELAY, kuris naudoja šią plytą, turi automatinę Crouton konfigūraciją per čia esančius ATTINY85 metaduomenis. „Crouton“siunčiamas JSON paketas siunčiamas naudojant naujausią ICOS10 programinę įrangą. Galite sukurti „Proof-of-concept“naudodami įprastą ESP8266, jei sukūrimo kol kas per daug.

Testavimo metu naudojamas UNO eskizas turi funkciją išsaugoti naują vergo adresą EEPROM ATTINY85, jei susiduriate su tiksline I2C magistralė. Pridėta keletas schemų, tačiau yra įvairių būdų prijungti grandinę, priklausomai nuo to, ko norite pasiekti, todėl paliksiu tai jums:)

Rekomenduojamas: