Índice:
2025 Autor: John Day | [email protected]. Última modificação: 2025-01-13 06:58
Encomendei um bom relayboard, mas não havia nenhuma instrução ArduinoIDE, apenas Raspberry Pi e.o. Descobri como usá-lo com o Arduino e quero compartilhá-lo para que você possa economizar tempo.
Exemplo original do RaspberryPi:
wiki.52pi.com/index.php/DockerPi_4_Channel_Relay_SKU:_EP-0099
O bom é que você pode empilhar até 4 placas. Portanto, você pode usar o máx. 4 x 4 = 16 relés em um barramento I2C.
Existem também alguns contras:
- pequenos terminais, não cabem fio de 1 mm2
- você não pode mudar a fiação dos conectores inferiores quando eles estão empilhados juntos
Mas ainda é prático.
Etapa 1: Wirering
Nas fotos você pode ver o wirering.
O 52Pi precisa de 5 V (para relés) e 3,3 V (chip I2C).
São necessários 5 fios:
- GND para GND
- 5 V a 5 V
- 3,3 V a 3,3 V
- SLA para SLA
- SCL para SCL
Se você usar um Arduino UNO ou outro 5 V, tome cuidado com no máximo 3, 6 V do controlador I2C! Use resistores ou então para diminuir os 5 V dos PIN do Arduino!
Etapa 2: Exemplo de código simples:
/ * Exemplo de Arduino IDE (ESP) para relaisboard I2C.
* Por Laurens Korste www.boktorrobotica.nl * de uso gratuito. * / #include // para comunicação I2C void setup () {// esta regra não é para UNO ou placas com pinos I2C dedicados Wire.begin (D1, D2); // junte o barramento i2c com SDA = D1 e SCL = D2 para NodeMCU} void loop () {Wire.beginTransmission (0x10); / * comece a transmitir para o endereço I2C 10 (para mudar também para 11, 12 ou 13) * / Wire.write (0x01); / * escolha relais 1 (de 4) na placa 10 (também 0x02, 0x03, 0x04) * / Wire.write (0xFF); / * definir relais 1 na placa 10 para ON. todos os números> 0 farão isso * / Wire.endTransmission (); / * parar de transmitir * / atraso (3000); Wire.beginTransmission (0x10); / * * / Wire.write (0x01); Wire.write (0x00); / * definir relais 1 na placa 10 para OFF * / Wire.endTransmission (); / * parar de transmitir * / atraso (3000); }
Etapa 3: Código de teste de quatro relés
/ * esboço de Laurens Korste para Arduino (ESP / NodeMCU)
* Mas outras placas também servirão * www.boktorrobotica.nl * Neste skeych al os 4 relés serão ativados e desativados * / #include // para comunicação I2C void setup () {Serial.begin (115200); // iniciar serial para depuração (9600 para UNO) Wire.begin (D1, D2); // junte o barramento i2c com SDA = D1 e SCL = D2 de NodeMCU sem necessidade de UNO} void loop () {for (int i = 1; i <= 4; i ++) {Wire.beginTransmission (0x10); // comece com o endereço do dispositivo Wire.write (i); // escolha o relais Wire.write (0xFF); // envie o código "on" FF (toda contagem de 01 a FF servirá) Wire.endTransmission (); // parar de transmitir Serial.write (i); Serial.println ("aan"); atraso (1000); Wire.beginTransmission (0x10); // comece com o endereço do dispositivo Wire.write (i); Wire.write (0x00); // Envie o código "off" Wire.endTransmission (); // parar de transmitir Serial.write (i); Serial.println ("uit"); atraso (1000); }}
Etapa 4: Meu Projeto
Eu escrevi um código para operar minhas 3 persianas. Isso pode ser feito com interruptores, mas também com o aplicativo BLYNK, veja a imagem.
- Um toque curto começará a mover um obturador (ou parará quando estiver em movimento).
- Um toque longo e todos os três obturadores abrem (ou fecham ou param).
- Pressão dupla: as venezianas vão para a posição "furos".
Como pode ser visto na foto, também integrei um sensor de temperatura e luz.
Agora tudo em uma boa base de PCB e ordenadamente em uma caixa.
Etapa 5: chame um relé com um comando
É útil se você só precisa de um comando para ativar ou desativar um relé. Abaixo está uma função que pode fazer isso (com byte baixo e byte alto).
/ * esboço de Laurens Korste para Arduino (ESP / NodeMCU) com retransmissor I2C * Mas outras placas também servem * href = https://www.boktorrobotica.nl; www.boktorrobotica.nl * https://wiki.52pi.com / index.php / DockerPi_4_Channel_Relay_SKU: _EP-0099; www.boktorrobotica.nl * Neste esboço, o relé será ativado por uma chamada; * // #include // para comunicação I2C // Relés declarados. 4 PCBs por PCB 4 relés possíveis. Neste esboço, apenas dois PCB // PCB e relés são mesclados para que possam ser chamados com um comando const byte PutOn = 0xFF; // comando para ligar const byte PutOff = 0x00; // comando para desligar const word Relay1bord1 = 0x1001; // você pode alterar os nomes por exemplo Relay1 const word Relay2bord1 = 0x1002; // você pode alterar os nomes por exemplo Relay2 const word Relay3bord1 = 0x1003; // você pode alterar os nomes por exemplo Relay3 const word Relay4bord1 = 0x1004; // você pode alterar os nomes por exemplo Relay4 const word Relay1bord2 = 0x1101; // você pode alterar os nomes por exemplo Relay5 const w ord Relay2bord2 = 0x1102; // você pode mudar os nomes por exemplo Relay6 const word Relay3bord2 = 0x1103; // você pode mudar os nomes por exemplo Relay7 const word Relay4bord2 = 0x1104; // você pode mudar os nomes por exemplo Relay8 const word Relay1bord3 = 0x1201; // você pode mudar os nomes por exemplo Relay9 const word Relay2bord4 = 0x1302; // você pode mudar os nomes por exemplo Relay14 void setup () {Serial.begin (115200); // iniciar serial para depuração (9600 para UNO) Wire.begin (D1, D2); // junte o barramento i2c com SDA = D1 e SCL = D2 de NodeMCU sem necessidade de UNO} void loop () {// para alternar o relé 4 no PCB 2 no RelayActie (Relay4bord2, PutOn); atraso (1000); // para desligar o relé 4 na PCB 2 RelayActie (Relay4bord2, PutOff); atraso (1000); } void RelayActie (word Relay, byte OnOrOff) {Wire.beginTransmission (highByte (Relay)); Wire.write (lowByte (Relay)); Wire.write (OnOrOff); Wire.endTransmission (); }