Eccoci al primo passo, dobbiamo far comunicare fra loro due schede Arduino, ecco la lista del materiale che useremo :
– due schede Arduino uno
– Aukru 3x Wireless 433 MHz RF Ricevitore
– Aukru 3x Wireless 433 MHz RF Trasmettitore
– Antenna, da antenna elicoidale, 433 MHz ( se no non funzionano bene )
– cavi reistenze e minuterie varie
ecco i link Amazon per le shield Aukru 3x :
e non dimenticatevi le antenne 433 MHz senza le quali andrete incontro a sicure difficoltà, link Amazon:
Compra su Amazon: antenna, da antenna elicoidale, 433 MHz Telecomando per Arduino Raspberry pi
ecco il codice dell’arduino trasmittente :
#include <VirtualWire.h> #define TX_pin 12 #define LED_pin 13 #define PB_pin 3 int prec_Stato=-1; const char *msg_ON = "LED_ON"; const char *msg_OFF = "LED_OFF"; void setup() { Serial.begin(9600); pinMode(LED_pin,OUTPUT); pinMode(PB_pin,INPUT); digitalWrite(LED_pin, LOW); vw_set_tx_pin(TX_pin); // Imposto il pin per la trasmissione vw_setup(3000); // Bits per sec } void loop() { int buttonState = digitalRead(PB_pin); if (buttonState!=prec_Stato) { if (buttonState==HIGH) vw_send((uint8_t *)msg_ON, strlen(msg_ON)); else vw_send((uint8_t *)msg_OFF, strlen(msg_OFF)); vw_wait_tx(); // Aspetta che il processo in background di spedizione sia completo Serial.println("Stato: "+String(buttonState) + " - Prec. Stato: "+String(prec_Stato)); digitalWrite(LED_pin, buttonState); prec_Stato=buttonState; } }
ecco il codice dell’arduino ricevente :
#include <VirtualWire.h> #define LED_pin 13 #define RX_pin 11 void setup() { pinMode(LED_pin, OUTPUT); digitalWrite(LED_pin, LOW); vw_set_rx_pin(RX_pin); //Non servirebbe: il default è 11 vw_setup(3000); // Bits per sec vw_rx_start(); // Inizio il processo di ricezione Serial.begin(9600); // Solo per debug Serial.println("Ricevitore attivo: "); } void loop() { uint8_t buf[VW_MAX_MESSAGE_LEN]; uint8_t buflen = VW_MAX_MESSAGE_LEN; if (vw_get_message(buf, &buflen)) // Non-blocking { buf[buflen]='\0'; // Metto il terminatore di stringa if (strncmp((char *)buf,"LED_ON",buflen)==0) digitalWrite(LED_pin, HIGH); // Accendo il LED else if (strncmp((char *)buf,"LED_OFF",buflen)==0) digitalWrite(LED_pin,LOW); // Spengo il LED Serial.print("Comando Ricevuto (" +String(buflen)+" car.): "); Serial.println((char *)buf+String("//")); } }
ecco gli schemi fatti con Fritzing, da notare che per i moduli Aukru 3x Wireless 433 MHz RF non esiste uno schema ben aggiornato ma uno un pò’ approssimativo trovato a questo link :http://fritzing.org/projects/rf-433mhz-transmitterreceiver-module-with-arduino
per questo nllo schema Fritzing le immagini deimoduli con realtive antenne le ho incolate con Gimp per non far apparire al loro posto un odioso quadrettino nero .
Ricevitore
Trasmettitore
ecco invece le foto dei prototipi reali :
Ricevitore.
Trasmettitore.
ed ecco invece un brve video del sitema funzionante :