Kazalo:
2025 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2025-01-13 06:58
Naročil sem lepo relejsko ploščo, vendar ni bilo navodil za ArduinoIDE, samo Raspberry Pi e.o. Ugotovil sem, kako ga uporabljati z Arduinom in ga želim deliti, da prihranite ta čas.
Izvirni primer RaspberryPi:
wiki.52pi.com/index.php/DockerPi_4_Channel_Relay_SKU:_EP-0099
Lepo je, da lahko zložite do 4 plošče. Tako lahko uporabite max. 4 x 4 = 16 relejev na enem vodilu I2C.
Obstaja tudi nekaj slabosti:
- majhni priključki, ne ustrezajo žici 1 mm2
- ožičenja spodnjih priključkov ne morete spremeniti, če so zloženi skupaj
Ampak še vedno priročne deske.
Korak: Ožičenje
Na slikah lahko vidite ožičenje.
52Pi potrebuje oba 5V (za releje) in 3.3V (čip I2C).
Torej je potrebnih 5 žic:
- GND v GND
- 5 V do 5 V
- 3,3 V do 3,3 V
- SLA na SLA
- SCL v SCL
Če uporabljate Arduino UNO ali drugo 5 V napetost največ 3,6 V iz krmilnika I2C! Uporabite upore ali pa znižajte 5 V iz kode Arduino PIN!
2. korak: Primer preproste kode:
/* Primer Arduino IDE (ESP) za relaisboard I2C.
* Avtor Laurens Korste www.boktorrobotica.nl * brezplačna uporaba. */ #include // za komunikacijo I2C void setup () {// to pravilo ne velja za UNO ali plošče z namenskimi I2C zatiči Wire.begin (D1, D2); // pridruži se vodilu i2c s SDA = D1 in SCL = D2 za NodeMCU} void loop () {Wire.beginTransmission (0x10);/ * začnite oddajati na naslov I2C 10 (spremeniti tudi na 11, 12 ali 13) */ Wire.pisati (0x01); / * izbirni rele 1 (od 4) na krovu 10 (tudi 0x02, 0x03, 0x04) */ Wire.write (0xFF); /* nastavite rele 1 na krovu 10 na ON. vse številke> 0 bodo tako */ Wire.endTransmission (); / * ustaviti oddajanje */ zakasnitev (3000); Wire.beginTransmission (0x10); / * */ Wire.write (0x01); Wire.write (0x00); / * nastavite rele 1 na krovu 10 na OFF */ Wire.endTransmission (); / * ustaviti oddajanje */ zakasnitev (3000); }
Korak 3: Koda preskusa štirih relejev
/* skica Laurens Korste za Arduino (ESP / NodeMCU)
* Vendar bodo delovale tudi druge plošče * www.boktorrobotica.nl * V tem ključu se bodo aktivirali 4 releji in deaktivirali */ #include // za komunikacijo I2C void setup () {Serial.begin (115200); // začnite serijsko za debug (9600 za UNO) Wire.begin (D1, D2); // pridruži se vodilu i2c s SDA = D1 in SCL = D2 NodeMCU, ni potrebe po UNO} void loop () {for (int i = 1; i <= 4; i ++) {Wire.beginTransmission (0x10); // začnite z naslovom naprave Wire.write (i); // izbira releja Wire.write (0xFF); // pošljemo kodo "on" FF (vsako število od 01 do FF bo dovolj) Wire.endTransmission (); // preneha pošiljati Serial.write (i); Serial.println ("aan"); zamuda (1000); Wire.beginTransmission (0x10); // začnite z naslovom naprave Wire.write (i); Wire.write (0x00); // Pošljite kodo "off" Wire.endTransmission (); // preneha pošiljati Serial.write (i); Serial.println ("uit"); zamuda (1000); }}
4. korak: Moj projekt
Napisal sem kodo za upravljanje s tremi polkni. To lahko storite s stikali, pa tudi z aplikacijo BLYNK, glejte sliko.
- En kratek pritisk bo začel premikati en zaklop (ali ga ustaviti, ko se premika).
- En dolg pritisk in vse tri rolete se odprejo (ali zaprejo ali ustavijo).
- Dvojni pritisk: polkna gredo v položaj "luknje".
Kot je razvidno iz slike, sem vgradil tudi senzor temperature in svetlobe.
Zdaj vse na dobri osnovni plošči in lepo v škatli.
5. korak: Pokličite rele z enim ukazom
To je uporabno, če potrebujete samo en ukaz za vklop ali izklop releja. Spodaj je funkcija, ki to lahko stori (z nizkobajtnim in visokim bajtom).
/ * skica Laurensa Korsteja za Arduino (ESP/NodeMCU) z relejno ploščo I2C * Toda tudi druge plošče bodo naredile * href = https://www.boktorrobotica.nl; www.boktorrobotica.nl * https://wiki.52pi.com/index.php/DockerPi_4_Channel_Relay_SKU: _EP-0099; www.boktorrobotica.nl * Na tej skici se bo rele aktiviral z enim klicem; * // #include // za komunikacijo I2C // Deklaracija relejev. 4 PCB-jev na PCB Možni so 4 releji. Na tej skici sta združeni samo dve PCB // PCB in releji, tako da ju je mogoče poklicati z enim ukazom const byte PutOn = 0xFF; // ukaz za vklop const byte PutOff = 0x00; // ukaz za izklop const word Relay1bord1 = 0x1001; // imena lahko naključno izgovorite z besedo Relay1 const Relay2bord1 = 0x1002; // imena lahko izveste z zgledom Relay2 const word Relay3bord1 = 0x1003; // imena lahko naključno izgovorite z besedo const word3 Relay4bord1 = 0x1004; // imena lahko naključno izgovorite z besedo Relay4 const word Relay1bord2 = 0x1101; // imena lahko izveste po primeru Relay5 const w ord Relay2bord2 = 0x1102; // imena lahko naključno preslikamo na primer Relay6 const word Relay3bord2 = 0x1103; // imena lahko naključno preslikate na primer Relay7 const word Relay4bord2 = 0x1104; // imena lahko naključno preslikamo na primer Relay8 const word Relay1bord3 = 0x1201; // imena lahko naključno preslikamo na primer Relay9 const word Relay2bord4 = 0x1302; // imena lahko naključno preslikate na primer Relay14 void setup () {Serial.begin (115200); // začnite serijsko za debug (9600 za UNO) Wire.begin (D1, D2); // pridruži se vodilu i2c s SDA = D1 in SCL = D2 NodeMCU, ni potrebe po UNO} void loop () {// za preklop releja 4 na PCB 2 na RelayActie (Relay4bord2, PutOn); zamuda (1000); // za izklop releja 4 na tiskanem vezju 2 RelayActie (Relay4bord2, PutOff); zamuda (1000); } void RelayActie (besedni rele, bajt OnOrOff) {Wire.beginTransmission (highByte (rele)); Wire.write (lowByte (rele)); Wire.write (OnOrOff); Wire.endTransmission (); }