Բովանդակություն:

I2C Relay Met Arduino IDE: 5 քայլ
I2C Relay Met Arduino IDE: 5 քայլ

Video: I2C Relay Met Arduino IDE: 5 քայլ

Video: I2C Relay Met Arduino IDE: 5 քայլ
Video: #5 FLProg անալոգային մուտք I2C LCD-ի վրա | ESP32 NodeMCU | Arduino Visual Embedded Programming 2024, Նոյեմբեր
Anonim
I2C ռելե հանդիպեց Arduino IDE- ին
I2C ռելե հանդիպեց Arduino IDE- ին

Ես պատվիրում եմ գեղեցիկ փոխանցումատախտակ, բայց չկար ArduinoIDE հրահանգ, պարզապես Raspberry Pi e.o. Ես պարզում եմ, թե ինչպես օգտագործել այն Arduino- ի հետ և ցանկանում եմ կիսել այն, որպեսզի կարողանաք խնայել այդ ժամանակը:

Original RaspberryPi օրինակ.

wiki.52pi.com/index.php/DockerPi_4_Channel_Relay_SKU:_EP-0099

Ուրախալի է, որ կարող եք կուտակել մինչև 4 տախտակ: Այսպիսով, կարող եք օգտագործել առավելագույնը: 4 x 4 = 16 ռելեներ մեկ I2C ավտոբուսի վրա:

Կան նաև որոշ թերություններ.

  • փոքր տերմինալներ, չեն տեղավորվում 1 մմ 2 մետաղալարով
  • դուք չեք կարող փոխել ներքևի միակցիչների լարերը, երբ դրանք միավորված են

Բայց դեռ հարմար տախտակ:

Քայլ 1: Հաղորդալարերի տեղադրում

Հաղորդալարեր
Հաղորդալարեր
Հաղորդալարեր
Հաղորդալարեր
Հաղորդալարեր
Հաղորդալարեր

Նկարներում կարող եք տեսնել լարային լարերը:

52Pi- ին անհրաժեշտ է երկուսն էլ 5 Վ (ռելեի համար) և 3.3 Վ (I2C չիպ):

Այսպիսով, անհրաժեշտ է 5 լար:

  • GND- ից GND
  • 5 Վ -ից 5 Վ
  • 3.3 Վ -ից 3.3 Վ
  • SLA- ից SLA
  • SCL- ից SCL

Եթե դուք օգտագործում եք Arduino UNO կամ այլ 5 Վ լարման դեպքում, I2C վերահսկիչից առավելագույն 3, 6 Վ լարման դեպքում: Օգտագործեք դիմադրիչներ կամ այլ կերպ ՝ 5 Վ -ն իջեցնելու համար Arduino PIN- երից:

Քայլ 2: Պարզ կոդի օրինակ

/* Arduino IDE (ESP) օրինակ ՝ I2C relaisboard- ի համար:

* Լորենս Կորստեի կողմից www.boktorrobotica.nl * անվճար օգտագործման համար: */ #include // for I2C communication void setup () {// այս կանոնը ոչ UNO- ի կամ I2C կապերով հատուկ տախտակների համար Wire.begin (D1, D2); // միանալ i2c ավտոբուսին SDA = D1- ով և SCL = D2- ով NodeMCU} անվավեր հանգույցի համար () {Wire.beginTransmission (0x10);/ * սկսել փոխանցումը I2C հասցեով 10 (փոխելու նաև 11, 12 կամ 13) */ Wire.գրեք (0x01); / * ընտրության ռելեներ 1 (4 -ից) 10 -ի տախտակի վրա (նաև 0x02, 0x03, 0x04) */ Wire.write (0xFF); /* ռելեներ 1 -ը տախտակի վրա 10 դարձրեք ON: բոլոր> 0 համարները դա կանեն */ Wire.endTransmission (); / * դադարեցնել հաղորդումը */ հետաձգում (3000); Wire.beginTransmission (0x10); / * */ Wire.write (0x01); Wire.write (0x00); / * ռելեներ 1 -ը 10 -ի վրա դնել OFF */ Wire.endTransmission (); / * դադարեցնել հաղորդումը */ հետաձգում (3000); }

Քայլ 3. Չորս ռելեի փորձարկման կոդ

/* Laurens Korste- ի էսքիզ Arduino- ի համար (ESP / NodeMCU)

* Բայց մյուս տախտակները նույնպես կանեն * www.boktorrobotica.nl * Այս skeych al- ում 4 ռելեները կակտիվացվեն անջատված */ #include // I2C կապի դատարկ կարգաբերման համար () {Serial.begin (115200); // սկսել սերիան վրիպազերծման համար (9600 UNO- ի համար) Wire.begin (D1, D2); // միացեք i2c ավտոբուսին SDA = D1- ով և NodeMCU- ի SCL = D2- ով կարիք չկա UNO} void loop () {for (int i = 1; i <= 4; i ++) {Wire.beginTransmission (0x10); // սկսել սարքի հասցեով Wire.write (i); // ընտրեք relais Wire.write (0xFF); // ուղարկեք «on» ծածկագիրը FF (01 -ից FF- ի յուրաքանչյուր հաշվարկ կատարելու է) Wire.endTransmission (); // դադարեցնել փոխանցումը Serial.write (i); Serial.println («աան»); ուշացում (1000); Wire.beginTransmission (0x10); // սկսել սարքի հասցեով Wire.write (i); Wire.write (0x00); // Ուղարկեք «անջատված» ծածկագիրը Wire.endTransmission (); // դադարեցնել փոխանցումը Serial.write (i); Serial.println («uit»); ուշացում (1000); }}

Քայլ 4: Իմ նախագիծը

Իմ նախագիծը
Իմ նախագիծը
Իմ նախագիծը
Իմ նախագիծը

Ես գրել եմ իմ 3 փեղկերն աշխատեցնելու կոդ: Սա կարելի է անել անջատիչների միջոցով, այլ նաև BLYNK հավելվածի միջոցով, տես պատկերը:

  • Մեկ կարճ սեղմումով կսկսվի շարժվել մեկ փեղկ (կամ դադարեցնել այն, երբ այն շարժվում է):
  • Մեկ երկար սեղմում և երեք փեղկերը բացվում են (կամ փակվում կամ դադարում):
  • Կրկնակի ճնշում. Փեղկերը գնում են «անցքերի» դիրքի:

Ինչպես երևում է նկարում, ես նաև ինտեգրեցի ջերմաստիճանի և լույսի ցուցիչ:

Այժմ ամեն ինչ լավ բազայի PCB- ի վրա և կոկիկ տուփի մեջ:

Քայլ 5. Կանչեք ռելե մեկ հրամանով

Օգտակար է, եթե ձեզ անհրաժեշտ է միայն մեկ հրաման ՝ ռելեին ակտիվացնելու կամ ապաակտիվացնելու համար: Ստորև բերված է մի գործառույթ, որը կարող է դա անել (ցածր բայթով և բարձր բայթով):

/ * Laurens Korste- ի էսքիզ Arduino- ի համար (ESP/NodeMCU) I2C ռելեյ տախտակով * Բայց մյուս տախտակները նույնպես կանեն * href = https://www.boktorrobotica.nl; www.boktorrobotica.nl * https://wiki.52pi.com/index.php/DockerPi_4_Channel_Relay_SKU: _EP-0099; www.boktorrobotica.nl * Այս ուրվագծում ռելեն կակտիվանա մեկ զանգով. Հնարավոր է 4 ռելեներ: Այս ուրվագծում միացված են միայն երկու PCB // PCB և ռելեներ, որպեսզի դրանք կարողանան կանչվել մեկ հրամանով ՝ byte PutOn = 0xFF; // const byte putOff = 0x00; // comand անջատելու հրաման: const բառ Relay1bord1 = 0x1001; // դուք կարող եք պատահել անունները օրինակով Relay1 const word Relay2bord1 = 0x1002; // դուք կարող եք պատահել անունները օրինակով Relay2 const word Relay3bord1 = 0x1003; // դուք կարող եք պատահական անունները օրինակով Relay3 const word Relay4bord1 = 0x1004; // դուք կարող եք պատահել անունների օրինակով Relay4 const word Relay1bord2 = 0x1101; // դուք կարող եք պատահական անուններ տալ օրինակով Relay5 const w ord Relay2bord2 = 0x1102; // Դուք կարող եք պատահականորեն անունները փոխանցել Relay6 const բառ Relay3bord2 = 0x1103; // Դուք կարող եք պատահականորեն անունները փոխանցել Relay7 const բառ Relay4bord2 = 0x1104; // Դուք կարող եք պատահականորեն անունները փոխանցել Relay8 const բառ Relay1bord3 = 0x1201; // Դուք կարող եք պատահականորեն անունները փոխանցել Relay9 const բառ Relay2bord4 = 0x1302; // կարող եք պատահականորեն անունները փոխանցել Relay14 void setup () {Serial.begin (115200); // սկսել սերիան վրիպազերծման համար (9600 UNO- ի համար) Wire.begin (D1, D2); // միացեք i2c ավտոբուսին NodeMCU- ի SDA = D1- ով և SCL = D2- ով UNO} void loop () {// կարիք չկա, RelayActie- ի PCB 2 -ի վրա 4 -րդ ռելեի միացման համար (Relay4bord2, PutOn); ուշացում (1000); // PCB 2 -ի վրա ռելե 4 -ը անջատելու համար RelayActie (Relay4bord2, PutOff); ուշացում (1000); } void RelayActie (բառի փոխանցում, բայթ OnOrOff) {Wire.beginTransmission (highByte (փոխանցում))); Wire.write (lowByte (Relay)); Wire.write (OnOrOff); Wire.endTransmission (); }

Խորհուրդ ենք տալիս: