Sommario:

Sistema semaforico a 4 vie che utilizza 5 Arduino e 5 moduli wireless NRF24L01: 7 passaggi (con immagini)
Sistema semaforico a 4 vie che utilizza 5 Arduino e 5 moduli wireless NRF24L01: 7 passaggi (con immagini)

Video: Sistema semaforico a 4 vie che utilizza 5 Arduino e 5 moduli wireless NRF24L01: 7 passaggi (con immagini)

Video: Sistema semaforico a 4 vie che utilizza 5 Arduino e 5 moduli wireless NRF24L01: 7 passaggi (con immagini)
Video: Sistema semaforico senza fili con NRF24, Arduino e semafori Stagnoli - programmazione - Video 621 2024, Dicembre
Anonim
Image
Image
Ambizioso? Forse!
Ambizioso? Forse!

Poco tempo fa ho creato un Instructable che dettaglia una singola coppia di semafori su una breadboard.

Ho anche creato un altro Instructable che mostra il framework di base per l'utilizzo di un modulo wireless NRF24L01.

Questo mi ha fatto pensare!

Ci sono molti hobbisti in tutto il mondo che costruiscono città e ferrovie modello e quasi sempre hanno semafori di qualche descrizione.

Alcuni sono modelli funzionanti e altri sono solo a scopo estetico.

Posso creare un modello funzionante di un sistema semaforico a quattro vie e collegarlo in modalità wireless?

Mi sono seduto e ho pensato alla mia lista di possibili requisiti. Che è andata un po' così.

Controlla 4 direzioni di traffico, come un incrocio stradale.

Ogni direzione con due luci; e ogni coppia riceve le istruzioni in modalità wireless da una sorta di unità di controllo.

Essere in grado di definire e modificare la sequenza di funzionamento delle luci,

  • 1, 2, 3, 4 - in senso orario
  • 1, 3, 4, 2
  • 1, 4, 2, 3
  • 1, 4, 3, 2 – in senso antiorario
  • 1, 2, 4, 3
  • 1, 3, 2, 4
  • 1 + 3, 2 + 4 – 2 acceso 2 spento
  • 1 + 3, 2, 4
  • 1, 3, 2 + 4

Tutte le sequenze devono essere controllate da un'unica unità di controllo e le unità riceventi accendono e spengono solo le luci.

Quando ho detto di creare un modello, intendevo creare un modello reale, niente di troppo sofisticato, ma qualcosa che assomiglierebbe effettivamente a qualcosa di simile alla cosa reale, forse, forse ish.

Passaggio 1: ambizioso? Forse

Requisiti delle parti principali:

Un'unità di controllo e quattro luci = cinque Arduino e cinque moduli wireless. AliExpress in soccorso (di nuovo).

Otto semafori. Ho una scarsa imitazione di una stampante 3D, che tende a fornire più cibo per la spazzatura rispetto ai prodotti utilizzabili, ma ho pensato che ci avrei provato comunque. Ne ho trovati alcuni su Thingiverse, www.thingiverse.com/thing:2157324

Questo modello sembrava il meno complesso per la mia stampante. Volevo otto, quindi stavo ancora spingendo la fortuna. Come si è scoperto, ho scoperto che dopo un paio di tentativi falliti, se orientavo il modello in una certa direzione (dalla parte anteriore a quella posteriore), ottenevo risultati ragionevoli. In totale ne ho stampati tredici e ne ho ottenuti otto utilizzabili.

Questo era l'elenco delle parti principali ordinato. Le parti rimanenti, le avevo già.

L'elenco completo delle parti è

  • 5 x Arduino UNO
  • 5 schede wireless NRF24L01
  • 5 x schede breakout YL-105 (o simili) per NRF24L0s
  • 8 x LED rossi
  • 8 x LED gialli (non ho LED arancioni)
  • 8 x LED verdi
  • 4 x LED RGB
  • Resistenze 28 x 220 Ohm
  • Breadboard/PCB??
  • 8 x modello semaforo
  • 6 x 8 pin header lunghi (il sesto era per la spaziatura sulla scheda di controllo, vedi video)
  • Tubo termoretraibile
  • Ponticelli
  • Pezzo di faesite o qualcosa di piatto
  • Altri pezzi di legno ??
  • Dipingere ??
  • Colla calda
  • Tempo, pazienza e alcol a scelta

Passaggio 2: scrittura del codice per l'unità di controllo

Questo è il pezzo che dovevo fare per primo, nel caso in cui non fossi riuscito a gestirlo, il che sarebbe stato uno spettacolo.

Questa è stata di gran lunga la parte più complessa del progetto, ma anche la più interessante per me.

Ho dovuto sedermi e definire tutte le possibili combinazioni di cambiamenti di luce e come avrebbero lavorato insieme in modo sincrono.

Come ogni buon design, è iniziato, sulla carta, con un elenco di numeri molto lungo, e poiché volevo poter avere più sequenze operative possibili, l'elenco è diventato ancora più lungo.

Ma una volta che ero felice di avere tutto ciò che pensavo fosse necessario e, dopo aver fissato per un po' le pagine dei numeri, il mio disturbo ossessivo compulsivo è entrato in funzione e ho iniziato a vedere degli schemi.

Organizzando i modelli, sono riuscito a raccogliere tutto il sequenziamento in un unico array tridimensionale e due array bidimensionali.

Tutto quello che dovevo fare ora era trovare un modo per manipolare quegli array nella creazione del corretto sequenziamento e dei passaggi leggeri.

Ci è voluto un po' di tempo, ma sono riuscito a ottenerlo in meno di cinquanta righe di codice, inclusi commenti, ecc.

Il codice per questo non è per i deboli di cuore, ma se capisci gli array multidimensionali, non dovrebbe essere troppo difficile da seguire. O una curva di apprendimento per il resto.

Il punto è che credo che funzioni e non dovrebbe richiedere modifiche comunque. Ma…………

Passaggio 3: modulo scheda breakout NRF24L01

Modulo scheda breakout NRF24L01
Modulo scheda breakout NRF24L01
Modulo scheda breakout NRF24L01
Modulo scheda breakout NRF24L01
Modulo scheda breakout NRF24L01
Modulo scheda breakout NRF24L01
Modulo scheda breakout NRF24L01
Modulo scheda breakout NRF24L01

Il modulo NRF24L01 e la scheda breakout YL-105, sfortunatamente, non sono molto compatibili con la breadboard.

La breakout board risolve parzialmente il problema e, cosa più importante, la rende tollerante a 5v, ma non è ancora compatibile con la breadboard.

Quindi ho avuto un po' di inventiva.

Nella mia collezione di "roba", ho un numero di intestazioni a 6 pin con pin lunghi. Il tipo richiesto per realizzare Arduino Shields.

Ho preso uno di questi e ho piegato i perni a 90 gradi.

Ho rimosso uno dei binari di alimentazione da una breadboard e ho collegato l'intestazione al bordo della breadboard.

Ciò ha lasciato i pin di alimentazione sulla scheda breakout. Ora sono in mezzo.

Quindi li ho rimossi e li ho posizionati sull'altro lato della scheda breakout in modo che ora sporgano dal retro della scheda.

Ai fini di questo Instructable, ho bisogno di cinque moduli NRF24L01, quindi li ho montati lungo la breadboard e poi ho fissato la barra di alimentazione lungo tutti i pin di alimentazione sulla scheda breakout.

Sembrava abbastanza ordinato fino a quando non ho collegato gli Arduino ed è diventato un po' affollato.

Inoltre, che è la parte importante, una volta collegata la barra di alimentazione, tutti gli Arduino sarebbero stati collegati alla stessa sorgente ed era quello che stavo cercando di evitare, quindi ne ho smontato la maggior parte di nuovo.

Terrò la scheda con un paio di moduli NRF24L01 su di essa per la prototipazione in futuro, quindi non una completa perdita di tempo.

Passaggio 4: unità semaforiche

Unità semaforiche
Unità semaforiche
Unità semaforiche
Unità semaforiche
Unità semaforiche
Unità semaforiche

Ho trovato alcune piccole breadboard da 170 punti di collegamento. Questi non hanno un binario di alimentazione, quindi la mia scheda di breakout modificata si adatterebbe ancora. Anche se leggermente inclinato a causa dell'altezza del breakout board.

Ho costruito i quattro controlli del semaforo allo stesso modo, fili dello stesso colore, posizionamento ecc. Ora sono veramente autonomi.

Per la centralina ho messo il modulo NRF24L01 su un PCB con i LED RGB. Ho usato RGB perché, anche se non avevo bisogno di vedere tutte le luci, solo il rosso e il verde, occupano meno spazio.

Collegato i LED all'Arduino in modo normale e aggiunto un po' di codice per visualizzare lo stato rosso o verde di ogni set di semafori.

Ho cercato di essere coerente con i miei colori di cablaggio in modo da poter facilmente vedere se avevo fatto qualcosa di diverso su una delle schede.

Ho alcuni set di cavi Dupont corti e, poiché i cavi sono attaccati insieme, ha reso questa parte abbastanza semplice.

NRF24L01:

  • CE Orange To Arduino pin 10 (definito nel codice)
  • CSN Giallo To Arduino pin 9 (definito nel codice)
  • SCK Green To Arduino pin 13 (obbligatorio)
  • MOSI Blue To Arduino pin 11 (obbligatorio)
  • MISO Purple To Arduino pin 12 (obbligatorio)
  • Vcc Rosso A 5v. Se non si utilizzano le schede breakout, questo deve essere 3.3v.
  • GND Marrone ad Arduino GND

Unità luminose e pin Arduino a LED:

  • Rosso per LED rosso
  • Arancione per il LED giallo (non ho LED arancioni)
  • Verde per il LED verde
  • Nero per GND

La mia unica deviazione da questo è stata quando ho collegato il Control Arduino ai LED RGB. Ho usato fili bianchi e grigi perché avevo finito quelli rossi.

Passaggio 5: semafori e test

Image
Image
Semafori e test
Semafori e test
Semafori e test
Semafori e test

Questo è il codice completato e anche ogni controllo autonomo completato. Tutto ciò di cui ho bisogno ora sono i semafori stessi.

Come ho detto prima, ho trovato un modello semplice su Thingiverse e sono riuscito a stamparne otto che non sembravano male.

Ho montato i LED con la loro resistenza da 200 Ohm richiesta e un collegamento e un filo di terra.

Termoretraibile i cavi e incollati a caldo il tutto al suo posto.

Ho deciso di dipingerli di nero dopo aver montato tutti i LED. Pessima idea, avrei dovuto farlo prima.

Ho cablato tutto per un test prima di procedere oltre.

Passaggio 6: il bivio

Il bivio
Il bivio
Il bivio
Il bivio
Il bivio
Il bivio
Il bivio
Il bivio

Ho deciso di montarli tutti su una tavola, quindi ora dovevo creare una sorta di sosia di crocevia.

Vivo nel Regno Unito, quindi guidiamo sul lato sbagliato della strada qui, e quindi ho reso il mio crocevia il più amichevole del Regno Unito per quanto le mie scarse capacità artistiche avrebbero permesso.

Questo era abbastanza semplice, richiedeva solo tempo; e sono sicuro che non ci sono incroci che sembrano davvero così, ma il mio non ha buche.

Non volevo sacrificare in modo permanente i miei Arduino per questo progetto, quindi ho compromesso popolando ciascuno con distanziali da 10 mm e incollando a caldo i distanziatori alla base della scheda.

Quello che ho fatto è stato incollare a caldo la mini breadboard sul lato dell'Arduino.

In primo luogo, ha tenuto l'NRF24L01 e la breakout board fuori dalla base dell'incrocio, e in secondo luogo, uso raramente un Arduino senza una breadboard di qualche tipo, quindi saranno comunque utili in questo modo.

Passaggio 7: tutto fatto

Tutto fatto
Tutto fatto
Tutto fatto
Tutto fatto

Tutti i file di codice sono stati inclusi.

Non ho esaminato il codice qui poiché questo Instructable è abbastanza lungo senza di esso.

Spero che questo sia stato un Instructable utile, anche se mostra solo come controllare un numero di altre schede Arduino in modalità wireless con NRF24L01 a prezzi molto ragionevoli.

Se hai domande, non esitare a fare un commento e farò del mio meglio per aiutarti.

Consigliato: