Innehållsförteckning:

I2C Relay Met Arduino IDE: 5 Steg
I2C Relay Met Arduino IDE: 5 Steg

Video: I2C Relay Met Arduino IDE: 5 Steg

Video: I2C Relay Met Arduino IDE: 5 Steg
Video: I2C with Arduino and Raspberry Pi - Two Methods 2024, Juli
Anonim
I2C Relay Met Arduino IDE
I2C Relay Met Arduino IDE

Jag beställer en snygg reläbräda men det fanns ingen ArduinoIDE -instruktion, bara Raspberry Pi e.o. Jag får reda på hur jag använder det med Arduino och vill dela det så att du kan spara den tiden.

Original RaspberryPi -exempel:

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

Trevligt är att du kan stapla upp till 4 brädor. Så du kan använda max. 4 x 4 = 16 reläer på en I2C -buss.

Det finns också några nackdelar:

  • små terminaler, passar inte 1 mm2 tråd
  • Du kan inte ändra kablarna för de nedre kontakterna när de är staplade ihop

Men fortfarande praktiska brädor.

Steg 1: Kabeldragning

Wirering
Wirering
Wirering
Wirering
Wirering
Wirering

På bilderna kan du se kabeldragningen.

52Pi behöver både 5V (för reläer) och 3.3V (I2C -chip).

Så 5 ledningar behövs:

  • GND till GND
  • 5 V till 5 V
  • 3,3 V till 3,3 V
  • SLA till SLA
  • SCL till SCL

Om du använder en Arduino UNO eller annan 5 V, var uppmärksam på max 3, 6 V från I2C -styrenheten! Använd motstånd eller annars för att sänka 5 V ur Arduino PIN -koder!

Steg 2: Exempel på enkel kod:

/* Arduino IDE (ESP) exempel för I2C relaisboard.

* Av Laurens Korste www.boktorrobotica.nl * gratis att använda. */ #include // för I2C -kommunikation tomrumsinställning () {// denna regel gäller inte för UNO eller styrelser med dedikerade I2C -stift Wire.begin (D1, D2); // gå med i2c -buss med SDA = D1 och SCL = D2 för NodeMCU} void loop () {Wire.beginTransmission (0x10);/ * börja sända till I2C -adress 10 (för att också ändra till 11, 12 eller 13) */ Wire.skriv (0x01); / * choice relais 1 (av 4) ombord på 10 (även 0x02, 0x03, 0x04) */ Wire.write (0xFF); /* ställ relä 1 ombord 10 på ON. alla nummer> 0 gör det */ Wire.endTransmission (); / * sluta sända */ fördröjning (3000); Wire.beginTransmission (0x10); / * */ Wire.write (0x01); Wire.write (0x00); / * ställ relä 1 ombord 10 till AV */ Wire.endTransmission (); / * sluta sända */ fördröjning (3000); }

Steg 3: Testkod med fyra reläer

/* skiss av Laurens Korste för Arduino (ESP / NodeMCU)

* Men andra kort kommer också att göra * www.boktorrobotica.nl * I denna tangent kommer alla 4 reläerna att aktiveras och inaktiveras */ #include // för I2C -kommunikation ogiltig inställning () {Serial.begin (115200); // börja seriell för felsökning (9600 för UNO) Wire.begin (D1, D2); // gå med i2c -buss med SDA = D1 och SCL = D2 för NodeMCU inget behov av UNO} void loop () {for (int i = 1; i <= 4; i ++) {Wire.beginTransmission (0x10); // börja med enhetsadress Wire.write (i); // välj relais Wire.write (0xFF); // skicka "på" -koden FF (varje räkning från 01 till FF kommer att göra) Wire.endTransmission (); // sluta överföra Serial.write (i); Serial.println ("aan"); fördröjning (1000); Wire.beginTransmission (0x10); // börja med enhetsadress Wire.write (i); Wire.write (0x00); // Skicka "off" -koden Wire.endTransmission (); // sluta överföra Serial.write (i); Serial.println ("uit"); fördröjning (1000); }}

Steg 4: Mitt projekt

Mitt projekt
Mitt projekt
Mitt projekt
Mitt projekt

Jag har skrivit en kod för att driva mina 3 fönsterluckor. Detta kan göras med switchar men också med BLYNK -appen, se bild.

  • Ett kort tryck kommer att börja flytta en slutare (eller stoppa den när den rör sig).
  • Ett långt tryck och alla tre fönsterluckorna öppnas (eller stängs eller stannar).
  • Dubbel tryck: fönsterluckorna går till "hål" -läget.

Som det syns på bilden integrerade jag också en temperatur- och ljussensor.

Nu allt på en bra bas -PCB och snyggt i en låda.

Steg 5: Ring ett relä med ett kommando

Det är användbart om du bara behöver ett kommando för att aktivera eller inaktivera ett relä. Nedan finns en funktion som kan göra detta (med lågbyte och högbyte).

/ * skiss av Laurens Korste för Arduino (ESP/NodeMCU) med I2C reläbräda * Men andra brädor kommer också att göra * href = https://www.boktorrobotica.nl; www.boktorrobotica.nl * https://wiki.52pi.com/index.php/DockerPi_4_Channel_Relay_SKU: _EP-0099; www.boktorrobotica.nl * I denna skiss aktiveras reläet med ett samtal; * // #include // för I2C-kommunikation // Relädeklaration. 4 PCB: s per PCB 4 reläer möjliga. I denna skiss slås bara två PCB // PCB och reläer samman så att de kan kallas med en kommando const byte PutOn = 0xFF; // kommando för att slå på const byte PutOff = 0x00; // comand för att stänga av const word Relay1bord1 = 0x1001; // du kan chansa namnen med exempel Relay1 const word Relay2bord1 = 0x1002; // du kan chansa namnen med exempel Relay2 const word Relay3bord1 = 0x1003; // du kan chansa namnen med exempel Relay3 const word Relay4bord1 = 0x1004; // du kan chansa namnen med exempel Relay4 const word Relay1bord2 = 0x1101; // du kan chansa namnen med exempel Relay5 const w ord Relä2bord2 = 0x1102; // du kan chansa namnen med exempel Relay6 const word Relay3bord2 = 0x1103; // du kan chansa namnen med exempel Relay7 const word Relay4bord2 = 0x1104; // du kan chansa namnen med exempel Relay8 const word Relay1bord3 = 0x1201; // du kan chansa namnen med exempel Relay9 const word Relay2bord4 = 0x1302; // du kan chansa namnen med exempel Relay14 void setup () {Serial.begin (115200); // börja seriell för felsökning (9600 för UNO) Wire.begin (D1, D2); // anslut i2c -buss med SDA = D1 och SCL = D2 för NodeMCU inget behov av UNO} void loop () {// för att växla relä 4 på PCB 2 på RelayActie (Relay4bord2, PutOn); fördröjning (1000); // för att koppla relä 4 på kretskort 2 från RelayActie (Relay4bord2, PutOff); fördröjning (1000); } void RelayActie (word Relay, byte OnOrOff) {Wire.beginTransmission (highByte (Relay)); Wire.write (lowByte (relä)); Wire.write (OnOrOff); Wire.endTransmission (); }

Rekommenderad: