Innholdsfortegnelse:

I2C relé møtte Arduino IDE: 5 trinn
I2C relé møtte Arduino IDE: 5 trinn

Video: I2C relé møtte Arduino IDE: 5 trinn

Video: I2C relé møtte Arduino IDE: 5 trinn
Video: #20 Tutorial: Multiple Devices on One Arduino I2C Bus 2024, November
Anonim
I2C relé møtte Arduino IDE
I2C relé møtte Arduino IDE

Jeg bestiller et fint relayboard, men det var ingen ArduinoIDE -instruksjon, bare Raspberry Pi e.o. Jeg finner ut hvordan du bruker den med Arduino og vil dele den slik at du kan spare tid.

Opprinnelig RaspberryPi -eksempel:

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

Det fine er at du kan stable opptil 4 brett. Så du kan bruke maks. 4 x 4 = 16 reléer på en I2C -buss.

Det er også noen ulemper:

  • små terminaler, passer ikke 1 mm2 ledning
  • du kan ikke endre ledningene til bunnkontaktene når de er stablet sammen

Men fremdeles praktisk brett.

Trinn 1: Kabling

Kabling
Kabling
Kabling
Kabling
Kabling
Kabling

På bildene kan du se kablingen.

52Pi trenger både 5V (for reléer) og 3.3V (I2C -chip).

Så 5 ledninger trengs:

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

Hvis du bruker en Arduino UNO eller annen 5 V, må du passe på maks 3, 6 V fra I2C -kontrolleren! Bruk motstander eller annet for å senke 5 V ut av Arduino PIN -koder!

Trinn 2: Eksempel på enkel kode:

/* Arduino IDE (ESP) eksempel for I2C relaisboard.

* Av Laurens Korste www.boktorrobotica.nl * gratis å bruke. */ #include // for I2C kommunikasjon tomrom oppsett () {// denne regelen ikke for UNO eller brett med dedikerte I2C pins Wire.begin (D1, D2); // bli med i2c -buss med SDA = D1 og SCL = D2 for NodeMCU} void loop () {Wire.beginTransmission (0x10);/ * begynne å overføre til I2C adresse 10 (for å også endre til 11, 12 eller 13) */ Wire.skrive (0x01); / * choice relais 1 (av 4) om bord 10 (også 0x02, 0x03, 0x04) */ Wire.write (0xFF); /* sett reléer 1 om bord 10 til ON. alle tall> 0 gjør det */ Wire.endTransmission (); / * slutte å overføre */ forsinkelse (3000); Wire.beginTransmission (0x10); / * */ Wire.write (0x01); Wire.write (0x00); / * sett reléer 1 om bord 10 til AV */ Wire.endTransmission (); / * slutte å overføre */ forsinkelse (3000); }

Trinn 3: Testkode med fire reléer

/* skisse av Laurens Korste for Arduino (ESP / NodeMCU)

* Men andre tavler vil også gjøre * www.boktorrobotica.nl * I denne tasten vil alle de 4 reléene bli aktivert og deaktivert */ #include // for I2C -kommunikasjon, ugyldig oppsett () {Serial.begin (115200); // begynne seriell for feilsøking (9600 for UNO) Wire.begin (D1, D2); // bli med i2c -buss med SDA = D1 og SCL = D2 av NodeMCU ikke behov for UNO} void loop () {for (int i = 1; i <= 4; i ++) {Wire.beginTransmission (0x10); // begynn med enhetsadressen Wire.write (i); // velge relaene Wire.write (0xFF); // send "på" koden FF (hver telling fra 01 til FF vil gjøre) Wire.endTransmission (); // slutte å overføre Serial.write (i); Serial.println ("aan"); forsinkelse (1000); Wire.beginTransmission (0x10); // begynn med enhetsadressen Wire.write (i); Wire.write (0x00); // Send "av" -koden Wire.endTransmission (); // slutte å overføre Serial.write (i); Serial.println ("uit"); forsinkelse (1000); }}

Trinn 4: Mitt prosjekt

Mitt prosjekt
Mitt prosjekt
Mitt prosjekt
Mitt prosjekt

Jeg har skrevet en kode for å betjene mine tre skodder. Dette kan gjøres med brytere, men også med BLYNK -appen, se bilde.

  • Et kort trykk vil begynne å flytte en lukker (eller stoppe den når den beveger seg).
  • Ett langt trykk og alle tre skodder åpnes (eller lukkes eller stoppes).
  • Dobbelt trykk: skodder går til "hull" posisjon.

Som det kan sees på bildet, integrerte jeg også en temperatur- og lyssensor.

Nå alt på en god base PCB og pent i en eske.

Trinn 5: Ring et stafett med en kommando

Det er nyttig hvis du bare trenger en kommando for å aktivere eller deaktivere et relé. Nedenfor er en funksjon som kan gjøre dette (med lowbyte og highbyte).

/ * skisse av Laurens Korste for Arduino (ESP/NodeMCU) med I2C relébord * Men andre tavler vil også gjøre * 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 denne skissen vil reléet aktiveres med ett anrop; * // #include // for I2C-kommunikasjon // Relay declaration. 4 PCB's Per PCB 4 reléer mulig. I denne skissen er bare to PCB // PCB og releer slått sammen slik at de kan kalles med en kommando const byte PutOn = 0xFF; // kommando for å slå på const byte PutOff = 0x00; // kommando for å slå av const word Relay1bord1 = 0x1001; // du kan sjanse navnene med eksempel Relay1 const word Relay2bord1 = 0x1002; // du kan sjanse navnene etter eksempel Relay2 const word Relay3bord1 = 0x1003; // du kan sjanse navnene med eksempel Relay3 const word Relay4bord1 = 0x1004; // du kan tilfeldigvis navne etter eksempel Relay4 const word Relay1bord2 = 0x1101; // du kan sjanse navnene med eksempel Relay5 const w ord Relay2bord2 = 0x1102; // du kan tilfeldigvis navne med eksempel Relay6 const word Relay3bord2 = 0x1103; // du kan tilfeldigvis navne med eksempel Relay7 const word Relay4bord2 = 0x1104; // du kan tilfeldigvis navne med eksempel Relay8 const word Relay1bord3 = 0x1201; // du kan tilfeldigvis navne med eksempel Relay9 const word Relay2bord4 = 0x1302; // du kan tilfeldigvis navne ved eksempel Relay14 void setup () {Serial.begin (115200); // begynne seriell for feilsøking (9600 for UNO) Wire.begin (D1, D2); // bli med i2c -buss med SDA = D1 og SCL = D2 av NodeMCU ikke behov for UNO} void loop () {// for å bytte relé 4 på PCB 2 på RelayActie (Relay4bord2, PutOn); forsinkelse (1000); // for å slå relé 4 på PCB 2 av RelayActie (Relay4bord2, PutOff); forsinkelse (1000); } void RelayActie (word Relay, byte OnOrOff) {Wire.beginTransmission (highByte (Relay)); Wire.write (lowByte (relé)); Wire.write (OnOrOff); Wire.endTransmission (); }

Anbefalt: