Inhoudsopgave:

4-weg verkeerslichtsysteem met 5 Arduino's en 5 NRF24L01 draadloze modules - Ajarnpa
4-weg verkeerslichtsysteem met 5 Arduino's en 5 NRF24L01 draadloze modules - Ajarnpa

Video: 4-weg verkeerslichtsysteem met 5 Arduino's en 5 NRF24L01 draadloze modules - Ajarnpa

Video: 4-weg verkeerslichtsysteem met 5 Arduino's en 5 NRF24L01 draadloze modules - Ajarnpa
Video: Smart Grid Westland 2024, November
Anonim
Image
Image
Ambitieus? Kan zijn!
Ambitieus? Kan zijn!

Een tijdje geleden heb ik een Instructable gemaakt met details over een enkel paar verkeerslichten op een breadboard.

Ik heb ook een andere Instructable gemaakt die het basiskader toont voor het gebruik van een NRF24L01 draadloze module.

Dit zette me aan het denken!

Er zijn vrij veel hobbyisten over de hele wereld die modelsteden en spoorwegen bouwen en bijna altijd verkeerslichten van een bepaalde beschrijving hebben.

Sommige zijn werkende modellen en andere zijn alleen voor esthetische doeleinden.

Kan ik een werkend model van een vierrichtingsverkeerslichtsysteem maken en deze draadloos verbinden?

Ik ging zitten en dacht na over mijn lijst met mogelijke vereisten. Wat een beetje zo ging.

Controleer 4 verkeersrichtingen, zoals een kruispunt.

Elke richting heeft twee lichten; en elk paar krijgt hun instructies draadloos van een soort controle-eenheid.

De werkingsvolgorde van de lichten kunnen definiëren en wijzigen,

  • 1, 2, 3, 4 - met de klok mee
  • 1, 3, 4, 2
  • 1, 4, 2, 3
  • 1, 4, 3, 2 – tegen de klok in
  • 1, 2, 4, 3
  • 1, 3, 2, 4
  • 1 + 3, 2 + 4 – 2 aan 2 uit
  • 1 + 3, 2, 4
  • 1, 3, 2 + 4

Alle sequenties worden bestuurd door een enkele besturingseenheid, en de ontvangende eenheden schakelen alleen de lichten aan en uit.

Toen ik zei: maak een model, bedoelde ik, maak een echt model, niets bijzonders, maar iets dat er in werkelijkheid uitziet als het echte werk, mogelijk, misschien.

Stap 1: Ambitieus? Kan zijn

Belangrijkste onderdelen vereisten:

Een besturingseenheid en vier sets lampjes = vijf Arduino's en vijf draadloze modules. AliExpress komt (weer) te hulp.

Acht stoplichtstands. Ik heb een slechte imitatie van een 3D-printer, die de neiging heeft om meer bakvoer te leveren dan bruikbare producten, maar ik dacht dat ik het toch zou proberen. Ik heb er een paar gevonden op Thingiverse, www.thingiverse.com/thing:2157324

Dit model leek het minst complex voor mijn printer. Ik wilde er acht, dus ik was nog steeds mijn geluk aan het pushen. Het bleek dat ik na een paar mislukte pogingen, als ik het model in een bepaalde richting oriënteerde (van voor naar achter), redelijke resultaten kreeg. In totaal heb ik er dertien geprint en acht bruikbare gekregen.

Dat was de lijst met grote onderdelen gesorteerd. De overige onderdelen had ik al.

De volledige onderdelenlijst is:

  • 5 x Arduino UNO's
  • 5 x NRF24L01 draadloze kaarten
  • 5 x YL-105 (of vergelijkbaar) breakout-boards voor de NRF24L0s
  • 8 x rode LED's
  • 8 x gele leds (ik heb geen oranje leds)
  • 8 x groene LED's
  • 4 x RGB-LED's
  • 28 x 220 Ohm weerstanden
  • Breadboards / PCB's??
  • 8 x Model verkeerslichten
  • 6 x 8 lange pin-headers (de zesde was voor afstand op de besturingskaart, zie video)
  • Krimpkous
  • Doorverbindingsdraden
  • Stuk hardboard of iets plats
  • Andere stukken hout ??
  • Verf ??
  • Hete lijm
  • Tijd, geduld en alcohol naar keuze

Stap 2: De code voor de regeleenheid schrijven

Dit is het stukje dat ik eerst moest doen, voor het geval ik het niet echt zou kunnen, wat een showstopper zou zijn geweest.

Dit was veruit het meest complexe onderdeel van het project, maar ook het meest interessante voor mij.

Ik moest gaan zitten en alle mogelijke combinaties van lichtveranderingen definiëren en hoe ze synchroon zouden samenwerken.

Zoals alle goede ontwerpen, begon het, op papier, met een zeer lange lijst met nummers, en omdat ik meerdere mogelijke bedieningsreeksen wilde hebben, werd de lijst nog langer.

Maar toen ik eenmaal blij was dat ik alles had waarvan ik dacht dat het nodig was en nadat ik een tijdje naar de pagina's met cijfers had gestaard, begon mijn OCS en begon ik patronen te zien.

Door de patronen te ordenen, slaagde ik erin om alle sequenties te verzamelen in een enkele 3-dimensionale array en twee 2-dimensionale arrays.

Het enige wat ik nu moest doen, is een manier vinden om die arrays te manipuleren om de juiste volgorde en lichte stappen te creëren.

Het heeft even geduurd, maar ik heb het voor elkaar gekregen in minder dan vijftig regels code, inclusief opmerkingen etc.

De code hiervoor is niet voor angsthazen, maar als je multidimensionale arrays begrijpt, zou het niet al te moeilijk moeten zijn om te volgen. Of een leercurve voor de rest.

Het punt is dat ik geloof dat het werkt, en hoe dan ook niet hoeft te worden veranderd. Maar…………

Stap 3: NRF24L01 Breakout Board Mod

NRF24L01 Breakout Board Mod
NRF24L01 Breakout Board Mod
NRF24L01 Breakout Board Mod
NRF24L01 Breakout Board Mod
NRF24L01 Breakout Board Mod
NRF24L01 Breakout Board Mod
NRF24L01 Breakout Board Mod
NRF24L01 Breakout Board Mod

De NRF24L01-module en het YL-105 breakout-bord zijn helaas niet erg breadboard-vriendelijk.

Het breakout-bord lost het probleem gedeeltelijk op en, nog belangrijker, maakt het 5v-tolerant, maar het is nog steeds niet breadboard-vriendelijk.

Dus ik werd een beetje inventief.

In mijn verzameling ‘dingen’ heb ik een aantal 6 pin headers met lange pins. Het soort dat nodig is voor het maken van Arduino Shields.

Ik nam er een en boog de pinnen in een hoek van 90 graden.

Ik heb een van de stroomrails van een breadboard verwijderd en de header in de rand van het breadboard gestoken.

Dat liet de stroompinnen op het breakout-bord achter. Ze staan nu in de weg.

Dus ik heb ze verwijderd en aan de andere kant van het breakout-bord geplaatst, zodat ze nu aan de achterkant van het bord uitsteken.

Voor deze Instructable heb ik vijf NRF24L01-modules nodig, dus ik heb ze allemaal langs het breadboard gemonteerd en vervolgens de voedingsrail langs alle voedingspinnen op het breakout-bord bevestigd.

Het zag er redelijk netjes uit totdat ik de Arduino's aansloot en het een beetje druk werd.

Bovendien, wat het belangrijkste is, als de stroomrail eenmaal was aangesloten, zouden alle Arduino's op dezelfde bron zijn aangesloten en dat was wat ik probeerde te vermijden, dus ik heb het meeste weer uit elkaar gehaald.

Ik zal het bord met een paar NRF24L01-modules erop houden voor prototyping in de toekomst, dus geen complete verspilling van tijd.

Stap 4: Verkeerslichteenheden

Verkeerslichteenheden
Verkeerslichteenheden
Verkeerslichteenheden
Verkeerslichteenheden
Verkeerslichteenheden
Verkeerslichteenheden

Ik vond een paar kleine breadboards met 170 tie-points. Deze hebben geen stroomrail, dus mijn aangepaste breakout-bord zou nog steeds passen. Wel onder een kleine hoek vanwege de hoogte van het breakout board.

Ik heb de vier verkeerslichtbedieningen in dezelfde, dezelfde kleurdraden, positionering enz. gebouwd. Ze zijn nu echt op zichzelf staand.

Voor de control unit heb ik de NRF24L01 module op een printje gezet met de RGB leds. Ik gebruikte RGB omdat, hoewel ik niet alle lichten hoefde te zien, alleen de rode en groene, ze minder ruimte innemen.

De LED's op de normale manier met de Arduino verbonden en een stukje code toegevoegd om de rode of groene status van elke set verkeerslichten weer te geven.

Ik probeerde consistent te zijn met mijn bedradingskleuren, zodat ik gemakkelijk kon zien of ik iets anders had gedaan op een van de borden.

Ik heb een paar korte Dupont-leadsets en omdat de leads aan elkaar zijn geplakt, was dit onderdeel vrij eenvoudig.

NRF24L01:

  • CE Oranje Naar Arduino pin 10 (gedefinieerd in de code)
  • CSN Geel Naar Arduino pin 9 (gedefinieerd in de code)
  • SCK Groen Naar Arduino pin 13 (verplicht)
  • MOSI Blauw Naar Arduino pin 11 (verplicht)
  • MISO Paars Naar Arduino pin 12 (verplicht)
  • Vcc Rood Naar 5v. Als u de breakout-boards niet gebruikt, moet dit 3.3v zijn.
  • GND Bruin Naar Arduino GND

Lichtunits en Arduino-pinnen naar LED's:

  • Rood voor rode LED
  • Oranje voor de gele led (ik heb geen oranje leds)
  • Groen voor de groene LED
  • Zwart voor GND

Mijn enige afwijking hiervan was toen ik de Control Arduino op de RGB-LED's verbond. Ik gebruikte witte en grijze draden omdat ik geen rode meer had.

Stap 5: Verkeerslichten en testen

Image
Image
Verkeerslichten en testen
Verkeerslichten en testen
Verkeerslichten en testen
Verkeerslichten en testen

Dat is de code voltooid en elke stand-alone controle ook voltooid. Ik heb nu alleen nog de verkeerslichten zelf nodig.

Zoals ik al eerder zei, vond ik een ongecompliceerd model op Thingiverse en slaagde erin er acht af te drukken die er niet slecht uitzagen.

Ik heb de LED's voorzien van hun vereiste 200 Ohm weerstand en een verbindings- en aardingsdraad.

Shrink heeft de snoeren gebuisd en warm gelijmd op zijn plaats.

Ik besloot ze zwart te schilderen nadat alle LED's waren gemonteerd. Slecht idee, dat had ik eerst moeten doen.

Ik heb alles aangesloten voor een test voordat ik verder ging.

Stap 6: Het kruispunt

De kruising
De kruising
De kruising
De kruising
De kruising
De kruising
De kruising
De kruising

Ik besloot ze allemaal op een bord te monteren, dus nu moest ik een soort kruispunt-lookalike maken.

Ik woon in het VK, dus we rijden hier aan de verkeerde kant van de weg, en daarom heb ik mijn kruispunt zo VK-vriendelijk gemaakt als mijn slechte artistieke vaardigheden zouden toestaan.

Dit was vrij eenvoudig, alleen tijdrovend; en ik weet zeker dat er geen kruispunten zijn die er echt zo uitzien, maar de mijne hebben geen kuilen.

Ik wilde mijn Arduino's niet permanent aan dit project opofferen, dus heb ik een compromis gesloten door ze allemaal te vullen met 10 mm afstandhouders en de afstandhouders heet aan de onderkant van het bord te lijmen.

Wat ik wel heb gedaan, is het mini-breadboard aan de zijkant van de Arduino warmlijmen.

Ten eerste hield het de NRF24L01 en het breakout-bord van de basis van het kruispunt, en ten tweede gebruik ik zelden een Arduino zonder een of ander breadboard, dus ze zullen nog steeds zo nuttig zijn.

Stap 7: Alles klaar

Helemaal klaar
Helemaal klaar
Helemaal klaar
Helemaal klaar

Alle codebestanden zijn opgenomen.

Ik heb de code hier niet doorgenomen, omdat deze Instructable lang genoeg is zonder.

Ik hoop dat dit een nuttige Instructable is geweest, ook al laat het alleen zien hoe je een aantal andere Arduino-boards draadloos kunt bedienen met de zeer redelijk geprijsde NRF24L01.

Als u vragen heeft, aarzel dan niet om een opmerking te maken en ik zal mijn best doen om u te helpen.

Aanbevolen: