Índice:

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

Vídeo: I2C Relay Met Arduino IDE: 5 etapas

Vídeo: I2C Relay Met Arduino IDE: 5 etapas
Vídeo: I2C with Arduino and Raspberry Pi - Two Methods 2024, Julho
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 (); }

Recomendado: