Progetto StopWatch con fotocellule Wireless

Ciao a tutta la community di arduino :kissing:

CHI SONO:
Sono uno sviluppatore web che per motivi prettamente economici ripara smartphone e tablet a casa... :smiley:
Conosco molti linguaggi di programmazione avendo studiato informatica molti anni.
In elettronica sono scarso e ignorante purtroppo(ma sto rimediando in fretta); sono quasi sicuro di conoscere la legge di ohm studiata più di un decennio fa all' ITIS, ma non vado oltre(per il momento).

COSA VORREI SVILUPPARE:
Un cliente 15 giorni fa mi ha chiesto se fossi in grado di realizzare un sistema di cronometraggio con fotocellule wireless che potessero essere spostate rapidamente a seconda dei punti di partenza e di arrivo sempre variabili.
Ho risposto certo!!! Dopodiché sono andato a casa per chiedere a google un modo per autoprodurlo...e google ha risposto...ARDUINO!
Quindi ho comprato lo starter kit italiano e in una settimana mi sono mangiato il libro con tutti i progettini e ho imparato le basi.

COSA HO SVILUPPATO
In questi ultimi giorni mi sono dedicato allo sviluppo di questo sistema e ho realizzato un circuito del quale vado abbastanza fiero, considerando le mie nulle competenze elettroniche.In allegato riporto schema elettrico, realizzato con fritzing(fantastico software anche se con alcuni bug).

IL CODICE
Il codice che ho sviluppato per questo progetto funziona correttamente ed è testato sul mio circuito. Se qualcuno ha delle correzioni o dei miglioramenti però sono sempre ben accetti :smiley:

#include <LiquidCrystal.h>
#include <StopWatch.h>

LiquidCrystal lcd(12,11,5,4,3,2);
StopWatch MySW;
int button = 0;
int m = 0;
int s = 0;
int ms = 0;
long int rest;
int FotoStart = 6;
int FotoStop = 7;
int TimerStart = 8;
int TimerStop = 9;
int TimerReset = 10;
void setup()
{
  
  lcd.begin(16,2);
  lcd.print("CRONOMETRO...");
  
  pinMode(FotoStart,INPUT);
  pinMode(FotoStop,INPUT);
  pinMode(TimerStart,INPUT);
  pinMode(TimerStop,INPUT);
  pinMode(TimerReset,INPUT);
}

void loop()
{
  if (digitalRead(FotoStart) == 1){
    button = 1;
  }
  if (digitalRead(FotoStop) == 1){
    button = 2;
  }
  if (digitalRead(TimerStart) == 1){
    button = 3;
  }
  if (digitalRead(TimerStop) == 1){
    button = 4;
  }
  if (digitalRead(TimerReset) == 1){
    button = 5;
  }

  switch(button)
  {
    case 1:
      lcd.setCursor(0,0); 
      lcd.print("STARTED..."); 
      lcd.setCursor(0,1); 
      if(!MySW.isRunning()){
        MySW.start();
      }
      break;
    case 2:
      lcd.setCursor(0,0); 
      lcd.print("STOPPED..."); 
      lcd.setCursor(0,1); 
      if(MySW.isRunning()){
        MySW.stop();
      }
      break;
    case 3:
      lcd.setCursor(0,0); 
      lcd.print("STARTED..."); 
      lcd.setCursor(0,1); 
      if(!MySW.isRunning()){
        MySW.start();
      }
      break;
    case 4: 
      if(MySW.isRunning()){
        lcd.setCursor(0,0); 
        lcd.print("STOPPED..."); 
        lcd.setCursor(0,1);
        MySW.stop();
      }
      break;
    case 5:
      MySW.reset();
      break;
    default: 
      Serial.println("Waiting Input...");
      delay(10);
      break;
  }
  
    lcd.setCursor(0,1);
    lcd.print("TIME: ");
    
    m = (long int)MySW.elapsed()/ 60000;
    rest = MySW.elapsed()% 60000;
    s = (long int)rest/ 1000;
    ms = rest% 1000;
    
    lcd.print(m);
    lcd.print(".");
    if(s<10){
      lcd.print("0");
    }
    lcd.print(s);
    lcd.print(".");
    
    if (ms == 0)
      lcd.print("00");     
    else if (ms < 10)   
      lcd.print("0");      
       
    lcd.print(ms);
    
    if(button == 5){
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("READY...");
      lcd.setCursor(0,1);
      lcd.print("TIME: ");
      lcd.print(MySW.elapsed());
      button = 0;
    }
}

COMPONENTI UTILIZZATI

1 Arduino Uno;
3 pulsanti (Start,Stop,Reset);
3 Resistenze da 10K ohm;
2 Potenziometri(trovati nello starter kit)(contrasto e luminosità);
1 Display LCD 16x2 (trovato nello starter kit);
2 Coppie di fotocellule;
5 Batterie 9V;

LE DOMANDE

  1. Per eliminare le connessioni via cavo delle Fotocellule RX cosa devo usare?
    Ho studiato molto in questi giorni cercando su google, forums, e sono anche andato al fablab di garbatella a roma :D...Ma ho le idee confuse e non capisco quale sia meglio utilizzare tra Bluetooth, WiFi, Radio per compiere questa task.
    2.Come posso alimentare le fotocellule RX da 12/24V con delle batterie?(ideale una batteria da 12v ma non ne trovo possibile?!)
    Ho notato che con la batteria da 9V i relè della fotocellula RX non si attivano e serve necessariamente un alimentazione da 12V. Mentre la fotocellula TX con la batteria da 9V funziona molto bene.
  2. posso collegare questi moduli radio direttamente sull'uscita del relè della fotocellula RX?
    Volendo utilizzare dei moduli radio mi chiedevo se fosse necessario utilizzare un microcontrollore per collegarli alle fotocellule RX e farli comunicare con lo StopWatch arduino principale dove installerei il modulo radio RX

Spero di essere stato chiaro e non troppo prolisso, e di poter aiutare anche qualcuno che stia sviluppando qualcosa di simile e sia alle prime armi come me.

Grazie ragazzi!

Per scegliere il sistema WireLess corretto considera le seguenti domande:

-Distanza massima FC
-Precisione sistema
-Capacità di alimentazione

La trasmissione WL introduce un certo ritardo per la trasmissione dei dati e il controllo, il ritardo potrebbe anche arrivare a 5 secondi a seconda del sistema, questo soprattutto se manderai in sleep il trasmettitore per risparmiare batterie, ad esempio un trasmettitore BT consuma 50mA e non è il caso di tenerlo acceso e connesso per ore , in 3 ore ti avrebbe mangiato la pila da 9V , se però lo spegni quando lo riaccendi richiede anche 5-6 secondi per essere riconnesso, quindi il BT lo eliminerei a priori, stessa cosa per il WIFI, io opterei per il modulo RF nordic nrf2401 con antenna grande che costa poco, tira tanto, ed è veloce alla connessione

Per le fotocellule devi sapere che anche se sono alimentate a 24VDC tutte le fotocellule in realta funzionano con tensioni inferiori ai 9V , basta modificarle

Oltre le considerazioni fatte dal buon Icio, aggiungerei che la precisione è un fatto importante (almeno il centesimo di secondo).

Dunque, devono essere utilizzate fotocellule con uscita open collector che non introducano ritardi oltre i 10 ms: le uscite a relè sono da evitare.

In compenso, se il raggio di azione non supera i 10m, si possono scegliere anche le fotocellule a riflessione: il puntamento non è difficile usando gli appositi catarifrangenti (non specchi!) e il circuito si semplifica.

Per lo stesso motivo, meglio evitare il wireless, a meno di usare dispositivi ad alta velocità.

GRAZIE ICIO,
allora sceglierò il modulo radio che mi consigli. Ma per utilizzare questo modulo RF nordic nrf2401 devo necessariamente collegare la FC RX ad un arduino con sopra collegato il modulo trasmettitore? oppure posso collegare il relè della FC al trasmettitore direttamente?

GRAZIE CYBERHS
avevo letto del ritardo che generano i rele e infatti per la costruzione del modello per il cliente utilizzero quel tipo di FC a riflessione/open collector, ma per realizzare il prototipo e imparare a comprenderne bene il funzionamento utilizzo quelle che ho acquistato, cosi posso anche giocarci senza paura di romperle; Per esempio provo a modificarle per far funzionare la FC RX a 9V anche se non so dove mettermi le mani Help :smiley:

Scusate se faccio troppe domande ma ho tante cose da imparare :smiley:

Io tirerei via i 2 relè sul ricevitore IR che consumano corrente e i 2 diodi e mi prenderei il segnale direttamente dal NPN che pilotà il relè del segnale, c'è da fare un pò di reverse engineering, lo schema del ricevitore IR è semplice. Questa è la prima cosa da fare.

ok grazie, allora come prima cosa da fare smanetto con la FC ricevitore e vado a cercare direttamente il segnale dal transistor NPN, appena cell'ho ci aggiorniamo. grazie per questi suggerimenti!! Per le altre domande resto i attesa grazie ragazzi!!

Allora Ragazzi, ho studiato tutto il giorno e tutta la notte e poi ho operato la fotocellula come suggerito da icio e MAGICAMENTE FUNZIONA!! :stuck_out_tongue_closed_eyes:
Ora il segnale arriva direttamente dal transistor al pin di arduino, mentre l'altro pin del transistor se ne va a GND. L'ho misurato e spara 2,29V.
Ok ora ho bypassato i relè e reso la FC RX alimentabile da una batteria da 9v come la FC TX. 8) (Allego immagine del paziente dopo l'intervento)

Prossimo passo rendere la connessione WireLess. :grinning:

Mi servono altre due Arduino Uno da collegare alle 2 FC RX per sparare i segnali di start e stop alla Radio Ricevitore Principale???!?! oppure posso collegare i moduli radio suggeriti da icio direttamente sulle FC RX?? ::slight_smile: ::slight_smile: :cold_sweat:

ragazzi scusate l'insistenza, ho acquistato questi come suggerito:

2x moduli nRF24L01 antenna integrata. (da montare sulle FC RX).
1x modulo nRF24L01+ + PA + LNA antenna esterna. (da applicare sulla base con ARDUNO UNO).

Ora devo acquistare i microcontrollori da montare sulle FC RX.
Quale schede mi consigliate di acquistare?

-Saranno alimentate da batteria da 9V.
-Dovranno alimentare le FotoCellule RX e i moduli nRF24L01.
-Compatibilità con le librerie nRF24L01 e RF24.
-Meglio se di piccole dimensioni e senza headers cosi saldo soltanto quelli che utilizzero realmente.

THANKS :-*

Sono attratto dalle arduino micro che hanno uscita a 3.3v per alimentare i moduli radio, non costano tanto, sono piccole e hanno porta usb per essere programmate tramite IDE. non trovo info sulle librerie RF24 SPI e mirf se sono compatibili con questa scheda... Qualcuno mi aiuti a scegliere pleeeasee :cold_sweat: :sob:

Aggiornamenti progetto stopwatch con fotocellule wireless.

Il progetto sembra ormai in dirittura d'arrivo.

La trasmissione wireless è basata sui moduli nrf24l01+ Collegati a schede arduino mini pro.

Per alimentazione alla fine ho optato per pacchi batterie al litio da 12,6V.

Ci alimento sia le fotocellule sia i microprocessori arduino mini pro passando per un regolatore stepdown con trimmer regolato a 3.7V

I moduli radio sono connessi invece al pin 3V3 delle arduino mini e passano quindi per il regolatore di tensione della scheda. So che molti mi hanno sconsigliato di far lavorare il regolatore della scheda ma visto che deve passare da 3.7 di ingresso sul pin raw a 3.3 sul pin vcc non credo che in termini di efficienza cambi molto, soprattutto perché le batterie sono da 3000mA .

Alla fine cmq funziona tutto, perfino la funzione sleep dei moduli nrf quando non devono trasmettere l'interruzione del raggio della fotocellula.!!!

Ho raggiunto in campo aperto circa 200mt tra le fotocellule e il ricevitore.
Cmq più vicino si è e minore è il ritardo(si parla di millisecondi)

Se il ricevitore è connesso al pc ho anche sviluppato un software per la gestione del tutto in VB2013.

Nel complesso tutto il materiale mi è costato poco meno di 200€.

Ma alla fine sembra funzionare.
Alcuni screenshot di seguito.

Se qualcuno potesse criticare gliene sarei veramente grato perché questo è il mio primo progetto e voglio capire dove potevo migliorare!!!

image.jpg

Hai fatto bene ad alimentare il pro-mini con 3V7 e il nordic con la 3V3 del regolatore, complimenti anche per tutto il resto, la piccola rete nordic e la presentazione su PC

Ciao milord85, sono alla ricerca di un sistema simile per gare di equitazione, saresti disponibile a farmene uno, logicamente pagando il disturbo.
Io ho bisogno di fotocellule che funzioni start e stop, il cavallo entra ed esce sempre dalle stesse fotocellule, trasmissione via radio al ricevitore e conteggio del tempo in minuti secondi centesimi.
Ciao.

1 Like

Ciao lunmar62, certo si può fare, contattami via mail però così possiamo accordarci. Ciao ciao