İçindekiler:

I2C Röle Arduino IDE ile Buluştu: 5 Adım
I2C Röle Arduino IDE ile Buluştu: 5 Adım

Video: I2C Röle Arduino IDE ile Buluştu: 5 Adım

Video: I2C Röle Arduino IDE ile Buluştu: 5 Adım
Video: Модуль силовых ключей, 4P или 4N -канала 10A, i2c - flash для Arduino, ESP, Raspberry Pi 2024, Temmuz
Anonim
I2C Röle Arduino IDE ile Buluştu
I2C Röle Arduino IDE ile Buluştu

Güzel bir röle kartı sipariş ettim ama ArduinoIDE talimatı yoktu, sadece Raspberry Pi e.o. Arduino ile nasıl kullanılacağını öğreniyorum ve o zamandan tasarruf edebilmeniz için paylaşmak istiyorum.

Orijinal RaspberryPi örneği:

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

Güzel olan şey, 4 tahtaya kadar istifleyebilmenizdir. Böylece max kullanabilirsiniz. Bir I2C veriyolunda 4 x 4 = 16 röle.

Bazı eksileri de var:

  • küçük terminaller, 1 mm2 kabloya uymaz
  • birlikte istiflendiklerinde alt konektörlerin kablolarını değiştiremezsiniz

Ama yine de kullanışlı tahtalar.

Adım 1: Kablolama

kablolama
kablolama
kablolama
kablolama
kablolama
kablolama

Resimlerde kablolamayı görebilirsiniz.

52Pi'nin hem 5V'ye (röleler için) hem de 3.3V'ye (I2C çipi) ihtiyacı vardır.

Yani 5 kablo gerekli:

  • GND'den GND'ye dönüştürücü
  • 5 V ila 5 V
  • 3,3 V ila 3,3 V
  • SLA'dan SLA'ya
  • SCL'den SCL'ye

Bir Arduino UNO veya başka bir 5 V kullanıyorsanız, I2C denetleyicisinden maksimum 3, 6 V'ye dikkat edin! Arduino PIN'lerinden 5 V'u düşürmek için dirençler veya başka bir şey kullanın!

Adım 2: Basit Kod Örneği:

/* I2C relaisboard için Arduino IDE (ESP) örneği.

* Laurens Korste tarafından www.boktorrobotica.nl * kullanımı ücretsiz. */ #include // I2C iletişimi için void setup() { // bu kural UNO veya özel I2C pinleri olan kartlar için değildir Wire.begin(D1, D2); // NodeMCU için SDA=D1 ve SCL=D2 ile i2c bus'a katılın } void loop() { Wire.beginTransmission(0x10);/* I2C adres 10'a iletime başlayın (ayrıca 11, 12 veya 13 olarak değiştirmek için) */ Wire.write(0x01); /* kart 10'da seçim rölesi 1 (4 üzerinden) (ayrıca 0x02, 0x03, 0x04) */ Wire.write(0xFF); /* kart 10'daki röle 1'i AÇIK olarak ayarla. tüm sayılar > 0 yapar */ Wire.endTransmission(); /* iletimi durdur */ gecikme(3000); Wire.beginTransmission(0x10); /* */ Wire.write(0x01); Wire.write(0x00); /* on board 10'daki röle 1'i OFF olarak ayarla */ Wire.endTransmission(); /* iletimi durdur */ gecikme(3000); }

Adım 3: Dört Röle Test Kodu

/* Arduino için Laurens Korste'nin çizimi (ESP / NodeMCU)

* Ama diğer kartlar da yapacaktır * www.boktorrobotica.nl * Bu şemada 4 röle aktif ve pasif olacaktır */ #include // I2C iletişimi için void setup() { Serial.begin(115200); // hata ayıklama için seriyi başlat (UNO için 9600) Wire.begin(D1, D2); // i2c veriyoluna SDA=D1 ve SCL=D2 of NodeMCU ile katıl UNO'ya gerek yok } void loop() { for (int i=1; i<=4; i++){ Wire.beginTransmission(0x10); // cihaz adresi Wire.write(i); // Relais Wire.write(0xFF) seçimini yapın; // FF "on" kodunu gönder (01'den FF'ye kadar her sayı yapacaktır) Wire.endTransmission(); // Serial.write(i) iletimini durdur; Serial.println(" aan "); gecikme(1000); Wire.beginTransmission(0x10); // cihaz adresi Wire.write(i); Wire.write(0x00); // "off" kodunu gönder Wire.endTransmission(); // Serial.write(i) iletimini durdur; Serial.println("uit"); gecikme(1000); } }

Adım 4: Projem

Projem
Projem
Projem
Projem

3 kepenkimi çalıştırmak için bir kod yazdım. Bu, anahtarlarla değil, aynı zamanda BLYNK uygulamasıyla da yapılabilir, Resme bakın.

  • Bir kısa basış, bir deklanşörü hareket ettirmeye başlar (veya hareket ederken onu durdurur).
  • Bir uzun basış ve üç panjurun tümü açılır (veya kapanır veya durur).
  • Çift basınç: panjurlar "delikler" konumuna gider.

Resimde de görüldüğü gibi sıcaklık ve ışık sensörü de entegre ettim.

Şimdi her şey iyi bir temel PCB'de ve düzgün bir şekilde bir kutuda.

Adım 5: Tek Komutla Röle Çağırın

Bir röleyi etkinleştirmek veya devre dışı bırakmak için yalnızca bir komuta ihtiyacınız varsa kullanışlıdır. Aşağıda bunu yapabilen bir fonksiyon bulunmaktadır (lowbyte ve highbyte ile).

/* I2C röle kartı ile Arduino (ESP / NodeMCU) için Laurens Korste tarafından taslak * Ancak diğer kartlar da * href= https://www.boktorrobotica.nl; www.boktorrobotica.nl * https://wiki.52pi.com/index.php/DockerPi_4_Channel_Relay_SKU:_EP-0099; www.boktorrobotica.nl * Bu çizimde röle bir çağrı ile aktif hale gelecektir *// #include // I2C iletişimi için // Röle beyanı PCB Başına 4 PCB 4 röle mümkündür Bu çizimde sadece iki PCB // PCB ve röleler bir komutla çağrılabilecek şekilde birleştirilmiştir const byte PutOn=0xFF; //const byte PutOff=0x00; //kapama komutu const word Relay1bord1=0x1001; //örneklere göre isimleri değiştirebilirsiniz. Relay4bord1=0x1004; //örneklere göre isimleri değiştirebilirsiniz. ord Relay2bord2=0x1102; //örnek olarak isimleri değiştirebilirsiniz Relay6 const word Relay3bord2=0x1103; //örnek olarak isimleri değiştirebilirsiniz Relay7 const word Relay4bord2=0x1104; //örneklere göre isimleri değiştirebilirsiniz Relay8 const word Relay1bord3=0x1201; //örneklere göre isimleri değiştirebilirsiniz Relay9 const word Relay2bord4=0x1302; //örnek ile isimleri değiştirebilirsiniz Relay14 void setup() { Serial.begin(115200); // hata ayıklama için seriyi başlat (UNO için 9600) Wire.begin(D1, D2); // NodeMCU'nun SDA=D1 ve SCL=D2'si ile i2c veriyoluna katılın UNO'ya gerek yok } void loop() { // RelayActie'de PCB 2'de röle 4'ü değiştirmek için(Relay4bord2, PutOn); gecikme(1000); // PCB 2 üzerindeki röle 4'ü kapatmak için RelayActie(Relay4bord2, PutOff); gecikme(1000); } void RelayActie(kelime Relay, byte OnOrOff){ Wire.beginTransmission (highByte(Relay)); Wire.write (lowByte(Relay)); Wire.write (OnOrOff); Wire.endTransmission(); }

Önerilen: