Innholdsfortegnelse:
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-13 06:58
For en liten stund siden laget jeg en instruksjonsartikkel som beskriver et par trafikklys på et brødbrett.
Jeg har også laget en annen Instructable som viser det grunnleggende rammeverket for bruk av en trådløs NRF24L01 -modul.
Dette fikk meg til å tenke!
Det er ganske mange hobbyister rundt om i verden som bygger modellbyer og jernbaner, og nesten alltid har trafikklys av en eller annen beskrivelse.
Noen er arbeidsmodeller, og andre er kun for estetiske formål.
Kan jeg lage en fungerende modell for et fireveis trafikklyssystem og koble dem trådløst?
Jeg satte meg ned og tenkte på listen over mulige krav. Som gikk litt sånn.
Kontroller 4 trafikkretninger, som et veikryss.
Hver retning har to lys; og hvert par får instruksjonene sine trådløst fra en slags kontrollenhet.
Kunne definere og endre driftssekvensen til lysene,
- 1, 2, 3, 4 - med klokken
- 1, 3, 4, 2
- 1, 4, 2, 3
- 1, 4, 3, 2-mot klokken
- 1, 2, 4, 3
- 1, 3, 2, 4
- 1 + 3, 2 + 4 - 2 på 2 av
- 1 + 3, 2, 4
- 1, 3, 2 + 4
All sekvensering skal kontrolleres av en enkelt kontrollenhet, og mottakerenhetene slår bare på og av lysene.
Da jeg sa lage en modell, mente jeg, lage en ekte modell, ikke noe for fancy, men noe som faktisk ville se ut som den virkelige tingen, muligens kanskje ish.
Trinn 1: Ambisiøs? Kan være
Krav til hoveddeler:
En kontrollenhet og fire sett med lys = fem Arduinos og fem trådløse moduler. AliExpress til unnsetning (igjen).
Åtte lyskryss står. Jeg har en dårlig etterligning av en 3D -skriver, som har en tendens til å levere mer bin -fôr enn brukbare produkter, men jeg tenkte at jeg ville prøve det uansett. Jeg fant noen på Thingiverse, www.thingiverse.com/thing:2157324
Denne modellen så ut som den minst komplekse for skriveren min. Jeg ville ha åtte, så jeg presset fremdeles lykken. Da det viste seg, fant jeg ut at etter et par mislykkede forsøk, hvis jeg orienterte modellen i en bestemt retning (fra forsiden til baksiden), fikk jeg rimelige resultater. Totalt trykte jeg tretten og fikk åtte brukbare.
Det var den viktigste delelisten som ble sortert. De resterende delene hadde jeg allerede.
Den komplette delelisten er
- 5 x Arduino UNO
- 5 x NRF24L01 trådløse brett
- 5 x YL-105 (eller lignende) breakout boards for NRF24L0s
- 8 x røde lysdioder
- 8 x gule lysdioder (jeg har ingen oransje lysdioder)
- 8 x grønne lysdioder
- 4 x RGB -lysdioder
- 28 x 220 Ohm motstander
- Brødbrett / PCB ??
- 8 x modell trafikklys
- 6 x 8 lange pinnehoder (den sjette var for mellomrom på kontrollkortet, se video)
- Krymp rør
- Jumper ledninger
- Et stykke hardboard eller noe flatt
- Andre treverk ??
- Male ??
- Varmt lim
- Valg av tid, tålmodighet og alkohol
Trinn 2: Skrive koden for kontrollenheten
Dette var det lille jeg måtte gjøre først, i tilfelle jeg faktisk ikke klarte det, noe som ville ha vært et showstopper.
Dette var den klart mest komplekse delen eller prosjektet, men også den mest interessante for meg.
Jeg måtte sette meg ned og definere alle mulige kombinasjoner av lysendringer og hvordan de ville fungere synkront.
Som all god design, begynte den på papiret med en veldig lang liste med tall, og fordi jeg ønsket å ha flere mulige driftssekvenser, ble listen enda lengre.
Men når jeg var glad for at jeg hadde alt jeg trodde var nødvendig, og etter å ha stirret på sidene med tall en stund, sparket min OCD inn og jeg begynte å se mønstre.
Når jeg organiserte mønstrene, klarte jeg å samle all sekvensering ned i en enkelt 3-dimensjonal matrise og to 2-dimensjonale matriser.
Alt jeg måtte gjøre nå er å finne en måte å manipulere disse matrisene til å lage riktig sekvensering og lette trinn.
Det tok en stund, men jeg klarte å oppnå det på mindre enn femti kodelinjer, inkludert kommentarer etc.
Koden for dette er ikke for svakhjertet, men hvis du forstår flerdimensjonale matriser, bør det ikke være for vanskelig å følge. Eller en læringskurve for resten.
Poenget er at jeg tror det fungerer, og ikke bør kreve endring uansett. Men…………
Trinn 3: NRF24L01 Breakout Board Mod
NRF24L01-modulen og YL-105 breakout-bordet er dessverre ikke veldig brødbrettvennlige.
Breakout -brettet går delvis i gang med å fikse problemet, og enda viktigere, gjør det 5v -tolerant, men det er fremdeles ikke brødbrettvennlig.
Så jeg ble litt oppfinnsom.
I min samling av "ting" har jeg et antall 6 -pins hoder med lange pinner. Sorten som kreves for å lage Arduino Shields.
Jeg tok en av disse og bøyde pinnene i 90 grader.
Jeg fjernet en av strømskinnene fra et brødbrett og plugget toppteksten i kanten av brødbrettet.
Det forlot strømpinnene på utbruddstavlen. De er nå i veien.
Så jeg fjernet dem og plasserte dem på den andre siden av utbruddskortet, slik at de nå stikker ut fra baksiden av brettet.
I forbindelse med denne instruksjonsmåten krever jeg fem NRF24L01 -moduler, så jeg monterte dem langs brødbrettet og festet deretter strømskinnen langs alle strømnålene på utbruddskortet.
Det så ganske ryddig ut til jeg koblet til Arduinos og det ble litt overfylt.
Pluss, som er den viktige biten, når strømskinnen var tilkoblet, ville alle Arduinos være koblet til den samme kilden, og det var det jeg prøvde å unngå, så jeg tok det meste fra hverandre igjen.
Jeg vil beholde brettet med et par NRF24L01 -moduler på det for prototyper i fremtiden, så ikke helt sløsing med tid.
Trinn 4: Trafikklysenheter
Jeg fant noen små 170 bindingsbrett. Disse har ikke en power rail, så det modifiserte breakout -kortet mitt vil fortsatt passe. Om enn på en liten vinkel på grunn av høyden på breakout -brettet.
Jeg bygde de fire lyskontrollene i samme ledninger i samme farge, posisjonering osv. De er nå virkelig frittstående.
For kontrollenheten satte jeg NRF24L01 -modulen på en PCB med RGB -lysdioder. Jeg brukte RGB fordi, selv om jeg ikke trengte å se alle lysene, bare det røde og grønne, tar de mindre plass.
Koblet lysdiodene til Arduino på vanlig måte og la til en bit kode for å vise rød eller grønn status for hvert sett med trafikklys.
Jeg prøvde å være konsistent med ledningsfargene mine, slik at jeg lett kunne se om jeg hadde gjort noe annerledes på et av brettene.
Jeg har noen korte Dupont -ledningssett, og ettersom ledningene sitter sammen, gjorde det denne delen ganske enkel.
NRF24L01:
- CE Orange til Arduino pin 10 (definert i koden)
- CSN Yellow To Arduino pin 9 (definert i koden)
- SCK Green To Arduino pin 13 (obligatorisk)
- MOSI Blue To Arduino pin 11 (obligatorisk)
- MISO Purple To Arduino pin 12 (obligatorisk)
- Vcc rød til 5v. Hvis du ikke bruker breakout boards, må dette være 3,3v.
- GND Brown Til Arduino GND
Lysenheter og Arduino -pinner til lysdioder:
- Rød for rød LED
- Oransje for den gule lysdioden (jeg har ikke oransje lysdioder)
- Grønn for den grønne lysdioden
- Svart for GND
Mitt eneste avvik fra dette var da jeg koblet Control Arduino til RGB -lysdiodene. Jeg brukte hvite og grå ledninger fordi jeg hadde gått tom for røde.
Trinn 5: Trafikklys og testing
Det er koden som er fullført, og hver enkelt frittstående kontroll er også fullført. Alt jeg trenger nå er trafikklysene selv.
Som jeg sa før, fant jeg en ukomplisert modell på Thingiverse og klarte å skrive ut åtte som ikke så så ille ut.
Jeg monterte lysdiodene med den nødvendige 200 Ohm -motstanden og en kobling og jordledning.
Krymp slangene på ledningene og lim det hele på plass.
Jeg bestemte meg for å male dem svarte etter at alle lysdiodene var montert. Dårlig idé, jeg burde ha gjort det først.
Jeg koblet alt til en test før jeg gikk videre.
Trinn 6: Krysset
Jeg bestemte meg for å montere dem alle på et brett, så nå måtte jeg lage et slags veikryss som lignet.
Jeg bor i Storbritannia, så vi kjører på feil side av veien her, og derfor gjorde jeg mitt veikryss så vennlig i Storbritannia som mine dårlige kunstneriske ferdigheter ville tillate.
Dette var ganske enkelt, bare tidkrevende; og jeg er sikker på at det ikke er noen veikryss som faktisk ser slik ut, men mine har ingen hull.
Jeg ønsket ikke å ofre Arduinoene mine permanent for dette prosjektet, så jeg gikk på kompromiss ved å fylle hver med 10 mm avstand og varmlimte avstandene til brettet.
Det jeg gjorde var å varme limet mini -brødbrettet til siden av Arduino.
For det første holdt den NRF24L01 og breakout -brettet utenfor foten av veikrysset, og for det andre, jeg bruker sjelden en Arduino uten et brødbrett av noe slag uansett, så de vil fortsatt være nyttige sånn.
Trinn 7: Alt ferdig
Alle kodefiler er inkludert.
Jeg gikk ikke gjennom koden her, da denne instruksjonsboken er lang nok uten den.
Jeg håper at dette har vært nyttig Instruerbar, selv om det bare viser hvordan du kan styre en rekke andre Arduino -kort trådløst med det meget rimelige NRF24L01.
Hvis du har spørsmål, ikke nøl med å kommentere, så skal jeg gjøre mitt beste for å hjelpe.