Controllo remoto di un Relè con Ardiono UNO
Questa sezione presenta un semplice esempio che mostra come controllare in remoto tramite Internet un relè collegato ad una scheda Arduino Uno con μPanel.
Questo esempio utilizza lo stesso pannello presentati negli esempi di base, che consiste in un interruttore e un indicatore LED. Arduino sarà in attesa per l’utente di cambiare lo stato dell’interruttore e aggiornerà il relè e il LED di stato di conseguenza.
Hardware
- Arduino UNO
- Modulo ESP-01 WiFi (con µPanel Firmware)
- Adattatore per Breadboard ADP-01
- Breadboard
- Modulo Relè
Si prega di notare che per la programmazione dell’Arduino Uno, la linea RxD (filo blu) deve essere scollegato dal modulo WiFi
Definizione μPanel
La definizione del pannello include un testo per il titolo del pannello, un LED verde standard ed un interruttore On / Off default.
D!282;T*15:Arduino Relay;=*20/L1G:0:Relay;/*10W1:0;
Arduino Code
void setup() { // Initialize Serial Port Serial.begin(57600); // Let uPanel start delay(3000); // Discharge old partial messages Serial.println(""); // Send The Panel (A LED and a Switch) Serial.println("$P:D!282;T*15:Arduino Relay;=*20/L1G:0:Relay;/+*10W1:0;"); // Initialize digital output pin digitalWrite(8, 1); pinMode(8,OUTPUT); } String Msg; void loop() { int c; while ((c = Serial.read()) > '\n') Msg += (char) c; // Read incoming chars, if any, until new line if (c == '\n') // is the message complete? { if (Msg.equals("#W10")) {digitalWrite(8,1); Serial.println("#L10");} // Turn OFF LED 1 and Relay if switch is OFF if (Msg.equals("#W11")) {digitalWrite(8,0); Serial.println("#L11");} // Turn ON LED 1 and Relay if switch is ON Msg = ""; } }
Controllo di due Relè
Possiamo facilmente modificare l’esempio precedente, per comandare due relè. Per fare questo, dobbiamo solo per collegare un uscita digitale Arduino ad un secondo relè e cambiare un paio di righe di codice:
- cambiamo la definizione del pannello al fine di aggiungere il secondo canale di controllo e di rendere più bello il pannello:
D!g11;/5T*25fb:Arduino Relay;=*16/30{mL1G:0;|*12W1:0;|T:Relay 1;}/{mL2G:0;|*12W2:0;|T:Relay 2;}/30*20T#FF0ht3,000:μPanel;
Serial.println("$P:Dg11;/5T*25fb:Arduino Relay;=*16/30{mL1G:0;|*12W1:0;|T:Relay 1;}/{mL2G:0;|*12W2:0;|T:Relay 2;}/30*20T#FF0ht3,000:μ");
we add four lines of code in order to manage the second switch:
... digitalWrite(9, 1); pinMode(9,OUTPUT); ... if (Msg.equals("#W20")) {digitalWrite(9,1); Serial.println("#L20");} // Turn OFF LED 2 and Relay if switch is OFF if (Msg.equals("#W21")) {digitalWrite(9,0); Serial.println("#L21");} // Turn ON LED 2 and Relay if switch is ON ...
Guarda il video di questo esempio: