Controllo traffico

Dalla email di Mario:

…Per quanto riguarda la problematica del timer ho individuato su internet il seguente

circuito basato su mudulo DS1307:  esempio:
secondo lei potrebbe risolvere il problema della data e ora?
Per quanto riguarda la registrazione dei dati non sarebbe possibile aggiungere una SD card e registrare i dati su file tipo l’esempio del seguente sito?
Essendo poco pratico di elettronica e di arduino, non capisco se sto dicendo delle “castronerie”..

CIRCUITO A BLOCCHI

Un sistema per rilevare delle masse metalliche in transito può essere sintetizzato a blocchi:
Il componente tratteggiato indica la possibilità di collegamento ad un microcontrollore: questo consente una maggiore scalabilità e connettività del sistema.

COMPONENTI EXTRA

Come scriveva Mario, sono necessarii dei componenti specifici, da reperire a parte. Si tratta di due moduli:
  • RTC Real Time Clock, un orologio con data
  • SD-mod, per scrivere/leggere delle SD card

In realtà mancano tutti gli altri componenti della figura a blocchi precedenti: oscillatore, filtro, alimetatore, ecc., ma questo è solo un esercizio (su questo è utile riprendere il concetto di FabLab).

INTERFACE STUBBING

Per scrivere il codice useremo la tecnica dell’interface stubbing. Di che si tratta?
Semplice, si tratta di un metodo per far credere ad un programma di avere ricevuto (o inviato) dei dati da una funzione. In pratica faremo finta di avere sia il modulo RTC e sia SD. Questo significa isolare le componenti, l’unica cosa che dobbiamo sapere è come gestire l’interfaccia, ovvero come chiamare la funzione e come trattare i relativi parametri.
Faccio un esempio: devo completare un programma che userà un sensore di pressione. Il sensore vero e proprio non mi é ancora arrivato, ma ho a disposizione le informazioni tecniche dal suo produttore. Egli mi dice che il sensore darà una tensione di uscita lineare da 0-4.3V proporzionale al range di pressione da 0 a 10bar.
Questa è una parte del programma “padre”:
...
// leggo pressione entrata PS1
wps1 = rd_ps (1);
 e questa è la funzione chiamata che ritorna un valore fisso a 2.33:
double rd_ps (int pport) {
   return (2.33);
/*
   parte di codice che legge effettivamente la porta assegnata al sensore...*/
}
 Chiaramente prima di andare in produzione lo stub dovrà essere tolto e al suo posto si dovrà usare la funzione corretta.
 Ecco una prima parte:
/*
  Moesa d'Ur SA

  engineering staff of M'AU
  
  project:    lab20_ard1
  file name:  som_lab20_00.ino
  porpouse:   traffic monitor
 
who       when        what 
---------------------------------------------
mr       09.01.2017   creates 
*/

int wcurrport = 0; 

/* stub
#include <swRTC.h>
swRTC rtc; //create a new istance of the lib
*/
 
void setup() {
/*        rtc.stopRTC(); //stop the RTC
        rtc.setTime(12,0,0); //set the time here
        rtc.setDate(4,6,2012); //set the date here
        rtc.startRTC(); //start the RTC
        */
         int wcurrport = 0; 
pinMode(wcurrport, INPUT); 
Serial.begin(9600);
Serial.print( "controllo traffico: ");
}
 
void loop() {
int whour;
int wminu;
int wseco;
   int wcurrval = analogRead(wcurrport);     
   if (wcurrval > 60.0) {
/* stub
     whour = rtc.getHours();
   wminu = rtc.getMinutes();
   wseco = rtc.getSeconds();
   */
   Serial.println(whour); 
   Serial.print(":");
   Serial.print(wminu); 
   Serial.print(":");
   Serial.println(wseco); 
    }
    delay(10);
}

continua…

Come contare le auto con Arduino

Nell’ultima lezione su Arduino è stato proposto di realizzare un sistema per il conteggio delle auto in transito.

L’idea è simpatica, e quindi vi proporrei di realizzarla insieme.

DEFINIRE LE CARATTERISTICHE

Il primo passo per la realizzazione, è quello di definire meglio cosa deve fare il sistema.

Facciamo un esempio:

  • il sistema dovrà “leggere” le auto che transitano in una carraggiata
  • dovrà essere autoalimentato
  • i dati dovranno essere registrati (salvati)
  • per ogni transito (veicolo) dovrà essere marcato l’orario
  • non può essere installato sul manto stradale

opzionale

  • invio dei dati ad un web-service

Attenzione: queste caratteristiche sono solo una proposta e quindi possono essere modificate o cancellate.

COMPONENTI

Una volta completata la lista delle caratteristiche, si potrà passare ai compomenti necessari per realizzarlo.

Chiaramente la scelta dei componenti è limitata a quelli reperibili nell’ambito Arduino/Raspberry. In altre parole sono esclusi i sistemi basati su altre schede di prototipizzazione o custom. Lo stesso vale anche per i sensori: dovranno interfacciarsi con il controller che andremo ad utilizzare.

 

SENSORI

Per individuare il passaggio di un veicolo, escludendo l’analisi dell’immagine, abbiamo alcune possibilità:

  • ultrasuoni
  • induzione magnetica

(continua…)