HomeProdottiAutomazione e scuola

Automazione e scuola

Leggi le riviste ⇢

Ti potrebbero interessare ⇢

La Redazione
Fig. 1 – Foto prototipo.
Fig. 1 – Foto prototipo.

Nell'ambito dell'istruzione scolastica media superiore, l'Istituto Tecnico Statale a Ordinamento Speciale 'Marie Curie' di Cernusco Sul Naviglio (Milano), forma, fra gli altri diplomati, periti informatici. L'informatico è sempre più una figura che raccoglie in sé competenze tecniche multidisciplinari tra le quali quelle relative a informatica, elettronica, sistemi di trasmissione. Gli studenti della classe 5A hanno dato un risvolto pratico alle loro conoscenze realizzando un prototipo per la prevenzione degli incidenti stradali, vedasi Fig. 1. In particolare la prevenzione è rivolta a quegli incidenti in prossimità di sottopassi stradali dalla limitata altezza. Le funzionalità del sistema sono:

  • rilevazione del transito di autoveicoli con altezza superiore al sottopasso
  • attivazione della segnaletica luminosa/sonora e attivazione della sbarra di 'divieto di transito'
  • registrazione dei transiti vietati su database in rete.

Entriamo nel dettaglio delle suddette funzionalità, con l'ausilio della Fig. 2

Fig. 2 – Schema del sistema.
Fig. 2 – Schema del sistema.

Una prima coppia di fotocellule (fotocellula 1) è stata montata a bordo strada alla medesima altezza del sottopasso e a debita distanza da esso, quindi collegata ad un primo microcontrollore (Arduino A). Il microcontrollore esegue ciclicamente la lettura dello stato della fotocellula. Al microcontrollore è stato collegato anche un diodo led e un buzzer. Al passaggio di un autoveicolo di altezza pari o superiore al sottopasso, la fotocellula chiude il circuito. Il microcontrollore rileva l'input proveniente dalla fotocellula e attiva:

  • il segnale luminoso (diodo led) che invita l'autoveicolo a svoltare a destra
  • il segnale sonoro (buzzer) che avvisa il conducente del veicolo di un imminente pericolo.

Un sensore di prossimità e un secondo microcontrollore (Arduino B) sono stati montati più in prossimità del sottopasso rispetto ai precedenti, per rilevare l'eventuale prosecuzione della marcia di veicoli con altezza pericolosa. Anche in questo secondo caso il microcontrollore esegue ciclicamente la lettura dello stato del sensore di prossimità. Arduino B è stato collegato anche a:

  • un diodo led
  • una cassa audio
  • un servo motore.

Nell'ipotesi che un veicolo ignorasse le segnalazioni attivate dal primo Arduino (Arduino A), il secondo Arduino (Arduino B) attiva:

  • la segnalazione luminosa (diodo led)
  • la segnalazione sonora (cassa audio)
  • la discesa della sbarra collegata al servomotore impedendo il passaggio del veicolo.

Vediamo lo schema elettrico del circuito (Fig.3)

FIG 3. - Schema elettrico.
FIG 3. - Schema elettrico.

Elenco dei componenti utilizzati: –  n. 2 diodi led –  n. 1 buzzer –  n. 1 cassa Audio 0,5W  8ohm –  n. 1 alimentatore  12V   DC    9,6V/A –  n. 1 sensore di prossimità OMRON ERZ + relè finder –  n. 1 coppia di fotocellule (indicata nello schema come fotocellula 1) –  n. 1 Servomotore –  n. 1 ARDUINO UNO (indicato nello schema come Arduino A) –  n. 1 ARDUINO UNO + ETHERNET SHIELD (indicato nello schema come Arduino B) Vediamo il semplice codice di programmazione, commentato, eseguito da Arduino A: int sensore_coppia_1 = 3; //il pin 3 di Arduino è collegato alla fotocellula

int audio_1 = 7; //il pin 7 di Arduino è collegato al buzzer int pin_segnaletica_1 =5; //il pin 5 di Arduino è collegato al diodo led int val = 0;  void setup() {     //setto la modalità di utilizzo dei pin di Arduino: entrata per i sensori, uscita per gli attuatori     pinMode(sensore_coppia_1, INPUT);     pinMode(audio_1, OUTPUT);     pinMode(pin_segnaletica_1, OUTPUT); }  void loop() {   val = digitalRead(sensore_coppia_1); //leggo se la fotocellula ha chiuso il circuito   if(digitalRead(sensore_coppia_1)) // se la fotocellula ha chiuso il circuito  {      for(int i=0;i<4;i++) //emetto n. 4 segnali audio     {        digitalWrite(audio_1, HIGH);       delay(100);       digitalWrite(audio_1, LOW);      }      digitalWrite(pin_segnaletica_1, HIGH); //accendo il diodo led    } }  

Arduino B esegue le funzioni di Arduino A e due ulteriori compiti:

  1. attivazione di un terzo attuatore: il servo motore collegato alla sbarra
  2. registrazione dei transiti pericolosi in un database in rete.

Soffermiamoci su questo secondo compito. Allo scopo di prendere decisioni strategiche sulla viabilità, si è pensato di:

  • registrare in un database data e ora dei transiti che interessano l'abbassamento della sbarra
  • estendere le registrazioni a più sottopassi
  • permettere interrogazioni strategiche sul database quali:

◦  estrarre il numero di transiti vietati giornalieri ◦  identificare i sottopassi interessati maggiormente al pericolo incidenti. Il database management system prescelto è Mysql. Dal punto di vista progettuale, il database è strutturato semplicemente da:

  • tabella contenente i dati del sottopasso:

◦  identificativo del  sottopasso ◦  ubicazione del  sottopasso

  • tabella contenente le registrazioni degli eventi:

◦  data/ora dell'abbassamento della sbarra. Il database risiede su una macchina Linux in rete ed è quindi raggiungibile da Arduino B via rete. Arduino B monta a tal scopo uno shield Ethernet. Arduino B invia i dati al database mediante il seguente frammento di codice: ...

IPAddress server(172, 16, 208, 116); //indirizzo della macchina su cui risiede il DB String tx = "GET /ricevi_dati.php?id_posizione="+String(id_ponte); client.connect(server, 80)) //connessione alla macchina in rete client.println(tx); //invio dell' identificativo del ponte in cui è avvenuto il transito ...

L'inserimento e la consultazione dati del database è stata realizzata mediante una interfaccia scritta in linguaggio php e si presenta quindi come una interfaccia web. Per quanto concerne l'inserimento dati vediamo il semplice codice della pagina php che riceve i dati da Arduino B e li inserisce nel database: <?php

include ("db.php"); $id_disposizione= $_GET['id_posizione']; mysql_query("insert into raccolta (data,ora,ponte) values (NOW(),NOW(),'".$id_disposizione."');") or die ("Non riesco  a connettermi"); echo "OK"; ?>
Fig.4.
Fig.4.

Relativamente alla consultazione del database segue, in figura 4, uno screenshot esemplificativo della pagina web che elenca le rilevazioni Gli attuali sforzi degli alunni tendono a sviluppare.

  1. trasmissione dati  wireless
  2. riconoscimento della targa dei veicoli

Il prototipo, iniziato a scopo didattico, ha mostrato come il problem solving stimoli l'ingegno e la passione degli studenti Gli studenti: Arcangelo Salierno, Mattia Scalvini, Juselma Longo, Carlos Vasquez Il docente: Daniele Ramon

Automazione e scuola - Ultima modifica: 2014-04-28T16:10:57+02:00 da La Redazione