Bouwen en programmeren van het meetstation
talen: ennl
Door: Matthijs Kooijman
Voor Meet je stad! is er een meetstation ontwikkeld, waarmee diverse zaken gemeten kunnen worden en draadloos verstuurd worden. De metingen op deze site worden hiermee verzameld. De meetstations zijn bedoeld om tijdens workshops door de deelnemers zelf gebouwd te worden, en kunnen door geïnteresseerden zelf geprogrammeerd worden.
Er zijn twee soorten meetstation:
- MJS2016 is het orginele volledig zelfbouw meetstation dat primair temperatuur en luchtvochtigheid meet (zonnepaneel en fijnstof zijn er door sommigen later wel aan toegevoegd, maar daar is het niet op ontworpen). Dit station wordt ook vaak "v1" genoemd, maar dat is eigenlijk verwarrend omdat er van dit station zowel een v1 als een v2 gemaakt is.
- MJS2020 is het uitgebreidere meetstation dat grotendeels machinaal in elkaar gesoldeerd wordt. Dit station is ontworpen voor het gebruik met een zonnepaneel en een fijnstofsensor. Dit station wordt ook vaak "v2" genoemd, wat ook weer verwarrend is (er zijn een aantal versies van gemaakt, de versie die het meest wordt gebruikt is de "PROTO4" versie - die bleek te werken en toen is het ontwerp nooit aangepast naar een niet-prototype versienummer...)
Voor beide stations zijn de instructies net anders, maar veel komt overeen, dus deze pagina gaat over beiden.
Bouwhandleidingen
De instructies zijn te downloaden:
Andere versies en talen onderaan.
Firmware programmeren
De firmware is de software die in het meetstation draait. Die kun je (eventueel met aanpassingen) met behulp van een computer met de "Arduino" software naar het meetstation sturen.
Om het programmeren mogelijk te maken, zijn naast de Arduino software zelf, nog een aantal bestanden nodig. De makkelijkste manier om deze te installeren is door deze zipfile te downloaden en uit te pakken in de “sketchbook” directory van Arduino. Om te zien waar je sketchbook is kun je de Arduino IDE opstarten en naar File → Preferences gaan.
Je pakt de zipfile direct uit in de sketchbook directory. Als bijvoorbeel "Documents/Arduino" je sketchbook directory is, dan heb je na het uitpakken drie mappen:
- Documents/Arduino/hardware
- Documents/Arduino/libraries
- Documetns/Arduino/mjs_firmware
Na het uitpakken van de zipfile moet je de Arduino IDE opnieuw opstarten.
Deze zipfile bevat het volgende:
- De zogenaamde "board files" voor het meetstation. Deze bestanden vertellen de Arduino IDE hoe het meetstation in elkaar zit (wat voor microcontroller er gebruikt is, hoe snel deze ingesteld staat, hoe de pinnen er op aangesloten zijn, etc.) en hoe deze geprogrammeerd moet worden. Als de board files goed geinstalleerd zijn zal in de Arduino IDE onder Tools → Board een optie "MJS meetstation" verschijnen. Deze bestanden komen in de hardware subdirectory van je sketchbook terecht. Zie ook de github pagina voor de laatste versie en historie.
- De Arduino sketch (het programma, ook wel firmware genoemd) die er voor zorgt dat de microcontroller periodiek de sensoren gaat uitlezen, de metingen verstuurt, tussendoor in slaapstand gaat, etc. Deze sketch komt in de mjs_firmware subdirectory van je sketchbook terecht. Zie ook de github pagina voor de laatste versie en historie.
- Een aantal Arduino libraries die gebruikt worden door de sketch en bijvoorbeeld communicatie met de GPS, radio en sensoren regelen. Welke libraries dit precies zijn staat in de broncode van de sketch. Deze libraries komen in de libraries subdirectory van je sketchbook terecht.
Naast het uitpakken van de zipfile, heb je mogelijk ook nog drivers of permissieconfiguratie voor USB-toegang nodig. Onder Linux is dit makkelijk te realiseren door het dfu-util package te installeren. Op Debian/apt-gebaseerde distributies bijvoorbeeld:
sudo apt install dfu-util
Op andere besturingssystemen is mogelijk ook wat nodig, zie deze documentatie voor details.
Voor het MJS2020 meetstation zitten de "board files" niet in de zipfile, maar moeten die via de Arduino software geinstalleerd worden.
Ga daarvoor naar File → Preferences... en in het vak "Additional boards manager urls" vul je in "https://github.com/meetjestad/mjs_boards/raw/master/package_meetjestad.net_index.json" (zonder quotes, als er al iets in staat kun zet daar dan een spatie in gevolgd door de nieuwe waarde). Nu weet de Arduino-software waar de board files gevonden kunnen worden.
Om de board files (en aanverwante tools) daadwerkelijk te installeren, ga je naar Tools → Board → Boards manager..., zoek je "Meet je stad! STM32L0 boards" op en klik je op "Install".
Handmatig installeren
Je kunt de afzonderlijke onderdelen ook zelf installeren via o.a. de "Boards manager" en "Library manager" in de Arduino IDE. Dit is net wat meer werk, maar maakt het wel makkelijker om in de toekomst de laatste versie van de board files en libraries binnen te halen. Zie de github pagina van de firmware voor instructies.
Firmware uploaden
Om de firmware daadwerkelijk in de microcontroller te zetten, moet je verbinding maken met het meetstation:
- Voor MJS2016 heb je een (5V) USB-serial adapter nodig, bijvoorbeeld de Sparkfun FTDI basic.
- Voor MJS2020 heb je alleen een USB-C-kabel nodig.
Om te uploaden:
- Open je de sketch in de Arduino IDE (File → Sketchbook → mjs_firmware)
- Onder Tools → Board selecteer je "Meet je stad! AVR boards" → "MJS meetstation" (MJS2016) of "Meet je stad! STM32L0 boards" →
"MJS2020-PROTO3/MJS2020-PROTO4" (MJS2020).
- Onder Tools → Port selecteer je de goede serial port (hangt af van het station en het OS hoe die heet - goede truuk is om te kijken in het menu, USB-stekker erin te steken en dan weer te kijken welke poort erbij gekomen is).
- Klik op Sketch → Upload
Downloads