I2C Relay Met Arduino IDE: 5 etapas
I2C Relay Met Arduino IDE: 5 etapas
Anonim
I2C Relay Met Arduino IDE
I2C Relay Met Arduino IDE

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

Wirering
Wirering
Wirering
Wirering
Wirering
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

Meu projeto
Meu projeto
Meu projeto
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 (); }