Apertura cancello con Arduino e Raspberry pi dopo 10 anni un nuovo progetto !

Salve a tutti , dopo niente meno che 10 anni ! Torno a scrivere su questo sito , ma non per finire i progetti passati :/ ma per parlare di un nuovo progetto 🙂
questa volta vorrei realizzare un apri cancello elettrico con frequenza a 433Mhz , si esatto proprio un classico meccanismo di apertura cancelli ma noi useremo solo elettronica open source ed open hardware.
Naturalmente accetto consigli e suggerimenti , non esitate a scrivermi ….

Ecco grossomodo i passi che credo di seguire :

a) realizzare una connessione a 433 fra due schede Arduino uno utilizzando le opportune schede di espansione (trasmissione e ricezione sulla frequenza di 433Mhz). (realizzato scrittura articolo in corso )

link : https://www.telodiceunfesso.it/2018/10/25/a-realizzare-una-connessione-a-433-fra-due-schede-arduino/

b)Far si di poter usare i classici telecomandi copia codice per il nostro progetto ,in modo da ricevere e copiare un codice diverso per ogni telecomando e poter usare questi per aprire e chiudere il cancello. (non realizzato )

c)aggiungere un motore passo passo (o altro ?) per l’apertura e la chiusura del cancello.(non realizzato )

d)aggiungere sensori di inizio e fine corsa (non realizzato )

e)aggiungere fotocellule in modo da bloccare il cancello se vi è un ostacolo nelle vicinanze Es persona nelle prossimità del cancello o macchina che stà entrando .(non realizzato )

f) aggiungere per ulteriore sicurezza anche modulo infrarosso in modo che anche altre zone siano coperte Es presenza di un bambino nella parte posteriore del cancello.(non realizzato )

g)aggiungere un lampeggiante con segnale rumoroso che funzionerà durante l’apertura e la chiusura del cancello.(non realizzato )

h)integrare un sistema che permetta di controllare online lo stato del cancello o di aprirlo da remoto.(non realizzato )

i)aspetti legali : ho letto di sfuggita che un cancello con apertura elettrica va legalmente bene anche se non è un prodotto standardizzato e certificato a patto che dopo montato sia sottoposto ad opportuni test da personale qualificato (perito tecnico ? ) aspetto da approfondire.(non realizzato )

a) realizzare una connessione a 433 fra due schede Arduino

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 :

Compra su Amazon: Aukru 3x Wireless 433 MHz RF Ricevitore e Trasmettitore Modulo Per Raspberry e Arduino

 

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 :