İçindekiler:
2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-13 06:58
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
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
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(); }