Inhaltsverzeichnis:

I2C-Relais traf Arduino IDE - Gunook
I2C-Relais traf Arduino IDE - Gunook

Video: I2C-Relais traf Arduino IDE - Gunook

Video: I2C-Relais traf Arduino IDE - Gunook
Video: Arduino LCD I2C - Tutorial with Arduino Uno 2024, Juli
Anonim
I2C-Relais mit Arduino IDE
I2C-Relais mit Arduino IDE

Ich bestelle ein schönes Relaisboard, aber es gab keine ArduinoIDE-Anweisung, nur Raspberry Pi e.o. Ich finde heraus, wie man es mit Arduino verwendet und möchte es teilen, damit Sie diese Zeit sparen können.

Original RaspberryPi-Beispiel:

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

Das Schöne ist, dass Sie bis zu 4 Boards stapeln können. Sie können also max. 4 x 4 = 16 Relais auf einem I2C-Bus.

Es gibt auch einige Nachteile:

  • kleine Klemmen, passen nicht 1 mm2 Draht
  • Sie können die Verdrahtung der unteren Anschlüsse nicht ändern, wenn sie zusammengestapelt sind

Aber immer noch handliche Boards.

Schritt 1: Verkabelung

Verkabelung
Verkabelung
Verkabelung
Verkabelung
Verkabelung
Verkabelung

Auf den Bildern sieht man die Verkabelung.

Der 52Pi benötigt sowohl 5V (für Relais) als auch 3.3V (I2C-Chip).

Also 5 Drähte benötigt:

  • GND zu GND
  • 5 V bis 5 V
  • 3,3 V bis 3,3 V
  • SLA zu SLA
  • SCL zu SCL

Wenn Sie ein Arduino UNO oder andere 5 V verwenden, achten Sie auf die max. 3, 6 V vom I2C-Controller! Verwenden Sie Widerstände oder senken Sie die 5 V aus den Arduino-PINs!

Schritt 2: Einfaches Codebeispiel:

/* Arduino IDE (ESP) Beispiel für I2C Relaisboard.

* Von Laurens Korste www.boktorrobotica.nl * kostenlose Nutzung. */ #include // für die I2C-Kommunikation void setup () {// diese Regel nicht für UNO oder Boards mit dedizierten I2C-Pins Wire.begin (D1, D2); // Verbinden Sie den i2c-Bus mit SDA=D1 und SCL=D2 für NodeMCU } void loop() { Wire.beginTransmission(0x10);/* Beginnen Sie mit der Übertragung an die I2C-Adresse 10 (um auch auf 11, 12 oder 13 zu ändern) */ Wire.write (0x01); /* Auswahl Relais 1 (von 4) auf Board 10 (auch 0x02, 0x03, 0x04) */ Wire.write(0xFF); /* Relais 1 auf Platine 10 auf ON setzen. alle Zahlen > 0 tun dies */ Wire.endTransmission(); /* Übertragung stoppen */ delay(3000); Wire.beginTransmission(0x10); /* */ Wire.write(0x01); Wire.write (0x00); /* Relais 1 auf Platine 10 auf OFF setzen */ Wire.endTransmission(); /* Übertragung stoppen */ delay(3000); }

Schritt 3: Testcode für vier Relais

/* Skizze von Laurens Korste für Arduino (ESP / NodeMCU)

* Aber andere Boards tun es auch * www.boktorrobotica.nl * In diesem Skeych werden alle 4 Relais aktiviert und deaktiviert */ #include // für I2C-Kommunikation void setup () { Serial.begin (115200); // seriell für Debug beginnen (9600 für UNO) Wire.begin (D1, D2); // Verbinden Sie den i2c-Bus mit SDA=D1 und SCL=D2 von NodeMCU keine Notwendigkeit für UNO} void loop() { for (int i=1; i<=4; i++){ Wire.beginTransmission (0x10); // mit der Geräteadresse beginnen Wire.write(i); // Auswahl des Relais Wire.write (0xFF); // sende den "on"-Code FF (jede Zählung von 01 bis FF reicht) Wire.endTransmission (); // Stoppen Sie die Übertragung von Serial.write (i); Serial.println("aan"); Verzögerung (1000); Wire.beginTransmission(0x10); // mit der Geräteadresse beginnen Wire.write(i); Wire.write (0x00); // Senden Sie den "Aus"-Code Wire.endTransmission(); // Stoppen Sie die Übertragung von Serial.write (i); Serial.println("uit"); Verzögerung (1000); } }

Schritt 4: Mein Projekt

Mein Projekt
Mein Projekt
Mein Projekt
Mein Projekt

Ich habe einen Code geschrieben, um meine 3 Rollläden zu bedienen. Dies kann mit Schaltern aber auch mit der BLYNK-App erfolgen, siehe Bild.

  • Ein kurzes Drücken startet die Bewegung eines Verschlusses (oder stoppt ihn, wenn er sich bewegt).
  • Ein langer Druck und alle drei Rollläden öffnen (oder schließen oder stoppen).
  • Doppelter Druck: Die Rollläden gehen in die Position "Löcher".

Wie auf dem Bild zu sehen, habe ich auch einen Temperatur- und Lichtsensor integriert.

Jetzt alles auf einer guten Basisplatine und ordentlich in einer Box.

Schritt 5: Rufen Sie ein Relais mit einem Befehl auf

Dies ist nützlich, wenn Sie nur einen Befehl benötigen, um ein Relais zu aktivieren oder zu deaktivieren. Unten ist eine Funktion, die dies tun kann (mit Lowbyte und Highbyte).

/* Sketch von Laurens Korste für Arduino (ESP / NodeMCU) mit I2C-Relaisboard * Aber andere Boards tun es auch * href= https://www.boktorrobotica.nl; www.boktorrobotica.nl * https://wiki.52pi.com/index.php/DockerPi_4_Channel_Relay_SKU:_EP-0099; www.boktorrobotica.nl * In dieser Skizze wird das Relais durch einen Aufruf aktiviert; *// #include // für I2C-Kommunikation // Relais-Erklärung. 4 PCBs pro PCB 4 Relais möglich In dieser Skizze sind nur zwei PCB // PCB und Relais zusammengelegt, damit sie mit einem Befehl aufgerufen werden können const byte PutOn=0xFF; //Befehl zum Einschalten const Byte PutOff=0x00; //Befehl zum Ausschalten const word Relay1bord1=0x1001; //Sie können die Namen nach dem Beispiel ändern Relay1 const word Relay2bord1=0x1002; //Sie können die Namen nach dem Beispiel ändern Relay2 const word Relay3bord1=0x1003; //Sie können die Namen nach dem Beispiel ändern Relay3 const word Relay4bord1=0x1004; //Sie können die Namen nach dem Beispiel ändern Relay4 const word Relay1bord2=0x1101; //Sie können die Namen nach dem Beispiel ändern Relay5 const w ord Relais2bord2=0x1102; // Sie können die Namen nach dem Beispiel ändern Relay6 const word Relay3bord2 = 0x1103; // Sie können die Namen nach dem Beispiel ändern Relay7 const word Relay4bord2 = 0x1104; // Sie können die Namen nach dem Beispiel ändern Relay8 const word Relay1bord3 = 0x1201; //Sie können die Namen nach dem Beispiel ändern Relay9 const word Relay2bord4=0x1302; // Sie können die Namen zum Beispiel ändern Relay14 void setup () { Serial.begin (115200); // seriell für Debug beginnen (9600 für UNO) Wire.begin (D1, D2); // i2c-Bus mit SDA = D1 und SCL = D2 von NodeMCU verbinden, keine Notwendigkeit für UNO aufrechtzuerhalten. Void loop () {// um Relais 4 auf PCB 2 auf RelayActie (Relay4bord2, PutOn) zu schalten; Verzögerung (1000); // Relais 4 auf PCB 2 ausschalten RelayActie (Relay4bord2, PutOff); Verzögerung (1000); aufrechtzuerhalten. Void RelayActie (Wort Relay, Byte OnOrOff) { Wire.beginTransmission (highByte (Relay)); Wire.write (lowByte (Relais)); Wire.write (OnOrOff); Wire.endTransmission(); }

Empfohlen: