Proseguendo col mio progetto di domotica/antifurto, aggiungo un secondo arduino con ethernet per prendere i vari sensori dall’altra parte della casa e inviarli al server via UDP.
Questo è il link dell’articolo precedente
I messaggi che manda sono nel formato “NUMERO SCHEDA†+ “NUMERO SENSORE†+ “STATOâ€
ad esempio la scheda 4 arduino con il sensore 6 e lo stato 00001 = 040600001
Come porte UDP ho utilizzato la solita 5055 per la trasmissione utilizzando il protocollo sopra indicato.
Al contrario della scheda illustrata prima questa non riceve comandi ma invia soltanto i dati dei vari sensori collegati
Nel mio caso ho utilizzato:
- un arduino nano
- un ENC28J60 Ethernet Shield V1.0 per scheda di rete
- zoccolo per arduino (shield)
/* * pin 10 -11 -12 -13 occupati da ethernet * pin 2 -3 -4 -5 -6 -7 -8 -9 digitali * da A0 ad A7 analogici */ #include <UIPEthernet.h> EthernetUDP udpserver; EthernetUDP udp; int success; char IRF; int counter; //lo utilizzo per il conteggio del client per mandare i messaggi al server void setup() { pinMode(2, INPUT); // pinMode(3, INPUT); // pinMode(4, INPUT); // pinMode(5, INPUT); // pinMode(6, INPUT); // pinMode(7, INPUT); // pinMode(8, INPUT); // pinMode(9, INPUT); // Serial.begin(9600); //imposto la porta seriale per debug uint8_t mac[6] = {0x02,0x03,0x04,0x05,0x06,0x07}; //imposto mac address Ethernet.begin(mac,IPAddress(10,0,0,254)); //imposto ip success = udpserver.begin(5056); // apro la porta udp } void loop() { // qui parto con le letture dei sensori delay(200); for (int i=2; i < 10; i++){ success = udp.beginPacket(IPAddress(10,0,0,1),5055); String Messaggio = "060" + String(i-1) + "0000" + String(!digitalRead(i)); success = udp.print(Messaggio); success = udp.endPacket(); delay(100); } for (int i=0; i < 8; i++){ success = udp.beginPacket(IPAddress(10,0,0,1),5055); String Scheda; if ((i+9)>9) { Scheda="06"; } else { Scheda="060"; } String Messaggio = Scheda + String(i+9) + String(analogRead(i)); success = udp.print(Messaggio); success = udp.endPacket(); delay(100); } }