Teacher support – Lab – Build your own TTN GPS tracker with your Arduino (Lora32u4)

By 13 February 2020 blog

Deze pagina toont de uitgebreide leraren ondersteuning bij het lab: https://junioriot.nl/bouw-je-gps-tracker/

Geschreven door Marco van Schagen, september 2018. Zonder overleg mag deze versie niet worden gebruikt. Dit is een voorbereiding voor Junior-IOT-in-a-box-Project.

LET OP: de details van de pin nummers zijn niet meer correct.

Bouw je eigen Lora Internet of Things sensor en GPS tracker

Wat leuk dat je kijkt naar deze werkset voor het bouwen van de Lora Internet of Things sensor. Om je op weg te helpen hebben we dit boekje voor je samengesteld. We leggen alle stappen zo goed mogelijk uit omdat niet iedereen ervaring heeft met het werken met arduino en electronica.

Deze informatie is ook te vinden op https://github.com/JuniorIOT/Junior-IOT-in-a-box-Project

Wat kan je hiermee leren

  • Je leert hoe sensors werken en wat je ermee kunt doen
  • Hoe werkt het om een Lora radiosignaal naar The Things Network te sturen
  • Hoe je jouw informatie op de computer kunt zien
  • Je ziet ook dat het eigenlijk niet heel moeilijk hoeft te zijn om zelf een iets ingewikkelder werkstukje te solderen

Wat moet je al kunnen

  • Een programma versturen naar de arduino en solderen van kleine elektronica – dit kan je oefenen met ons setje “solderen met de arduino” of een van de andere arduino setjes.

Onderdelen van de werkset

  • USB stick met daarop deze instructie en de portable Arduino IDE met settings, software, drivers
  • Lora32u4 voor 868 MHz met krul antenne
  • Micro USB snoer
  • 300 mAh Lipo batterij met een 2 pins stekker
  • 4 pins stacking female header om de drukknop aan te sluiten, en als soldeerpunt voor de power
  • Mini drukknopje met een snoertje en twee pins dupont stekker (male)
  • Mini GPS BN-180, BN-200 of BN-220, met 4 pins snoer en stekker
  • Analoge Lichtmeter TEMT6000, met 10cm 3 aderig snoer om te solderen
  • Kleine tie-raps om loshangende snoertjes tegen het bordje te zetten
  • (Een kunststof doosje om alles in te doen, met een stukje dubbelzijdige tape)
  • (USB voeding vanaf 100mA)

Gereedschap

  • Soldeerbout voor electronica – we adviseren een kleine 60 watt geregelde soldeerbout
    • Om af en toe te werken kan je deze kiezen ….
    • En een serieus model met keramische punt is de ….
  • Bij de soldeerbout hoort een hittebestendig sponsje, of gebruik een natte oude katoenen lap
  • Gladde snoer kniptang of schaar om snoeren te knippen
  • Striptang, of je gebruikt heel voorzichtig je nagels, de kniptang of de schaar
  • Een computer (met Windows om te werken met de Arduino IDE van de USB stick)

En zelf mag je later de set uitbreiden met bijvoorbeeld

  • Digitale druk, vochtigheid en temperatuur meter GY-BMEP (BME/BMP280) I2C, met 10cm 4 aderig snoer om te solderen
  • Seriële fijnstof meter SDS021, met 4 aderig snoer en stekker
  • Seriële CO2 meter MH-Z19, met 10cm 4 aderig snoer om te solderen
  • Zonnepaneel met mini converter …

Beschrijving van deze werkset

Met de spullen in deze set kan je een sensor bouwen, waarmee je een aantal dingen kunt meten zoals temperatuur en luchtvochtigheid. Omdat je straks precies weet hoe het werkt kun je dit later uitbreiden met je eigen ideeën. De informatie van wat er gemeten is wordt draadloos door de lucht verstuurd naar het gratis The Things Network (TTN), en daar stel je in hoe de informatie daarna verder naar jouw scherm komt.

Het draadloos verzenden van de informatie gaat met Lora, wat betekent Long range Radio. Het signaal wordt verstuurd met jouw antenne, en opgevangen op een basisstation dat in de buurt moet staan. In de meeste gevallen werkt het op een afstand van 1 tot 10 kilometer.

Om het goed te laten werken is het belangrijk dat het draadloze netwerk van TTN ook bij jou in de buurt wordt ontvangen. De eerste kaart waar je dit kunt controleren is https://www.thethingsnetwork.org/map van The Things Network. En op deze tweede kaart https://ttnmapper.org/heatmap/ geven de rode en gele vlekken aan waar het netwerk het beste werkt.

Het TTN basisstation zit niet in je werkset, maar er staan er al een paar duizend in de wereld. Als jouw gebied nog niet op de kaart staat dan kan je zelf een extra gateway toevoegen. Andere mensen kunnen hier dan ook gebruik van maken. Zo’n gateway is inmiddels een stuk goedkoper geworden dan een paar jaar geleden, maar zal toch zeker een paar honderd euro kosten. Het is daarom handig om dit samen met een school of een bedrijf te organiseren.

 

Natuurlijk hadden we het bordje ook zo kunnen maken dat alles al aangesloten zit, of dat dit met handige stekkertjes gebeurt. Maar in deze set vragen we je om het zelf te solderen. We denken dat dit je beter helpt om te begrijpen hoe het werkt zodat je later ook andere dingen zou willen aansluiten.

We zien dat dit bordje ook wordt gebruikt om met een helium ballon de lucht in te sturen. Hiervoor moet je wel de regels opzoeken. Meestal mag de last dan niet zwaarder zijn dan 30 gram. Door de manier dat we deze set hebben samengesteld blijft het apparaat lekker klein en licht.

Het mooie van dit systeem is dat het zenden maar weinig energie neemt, waardoor je met het bijgeleverde batterijtje gewoon een paar uur kan meten voordat het weer aan de lader moet. Opladen doe je door het bordje met USB aan te sluiten.

Details

Het belangrijkste onderdeel in je werkset is de Lora32u4. Dit is het Arduino brein waar straks jouw software draait die beslist wat er moet gebeuren. Deze software leest de sensors en maakt een bericht dat met jouw antenne wordt verstuurd. Alles bij elkaar is deze software best lastig om te schrijven, daarom hebben we dat al voor je gedaan – je moet alleen nog instellen dat deze sensor van jou is en waar de informatie precies terecht moet komen.

Op dit bordje sluit je straks alle sensors aan. Hoe dat gaat laten we in kleine stapjes zien. Om te laten zien dat je later meer kunt toevoegen hebben we ervoor gekozen dat je een aantal dingen zelf mag solderen. Op dit bordje zal dat best lastig zijn, en misschien moet je daar even hulp voor vragen.

De krulantenne verstuurt straks je informatie. Er moet natuurlijk wel ergens een basisstation in de buurt zijn. Het signaal wordt wat tegengehouden door muren, en zal veel moeite hebben met metalen wanden en bijvoorbeeld HR++ glas (omdat daar een metaal coating op zit). Eigenlijk is het bedoeld om buiten te worden gebruikt.

Het USB snoer gebruik je voor het programmeren en het opladen van de batterij. Meestal zal je tijdens het meten je sensor aan de USB aangesloten laten op een USB voeding.

Met het drukknopje kan je een aan/uit meting doen. Je kunt je voorstellen dat dit een deurbel is, of bijvoorbeeld een schakelaar die ziet of de koelkast deur open of dicht is. Voor het gemak hebben we gekozen voor een klein druk knopje dat je met de hand kunt bedienen.

Via de GPS ziet je bordje de positie op de wereld. Het vierkante blokje is de ontvangst antenne om de plaatsbepaling te ontvangen van de satellieten. We noemen dit nog steeds GPS, maar Glonass is een nieuwere benaming. GPS is de naam van de eerste soort plaatsbepaling, maar nu heb je ook bijvoorbeeld Galileio en Beidou. Jouw antenne kan al deze plaatsinformatie verwerken. Wanneer de “GPS” voor het eerst aan gezet wordt moet hij eerst aandachtig luisteren naar alle satellieten om de positie te vinden van je sensor – we noemen dit “een fix vinden”. De signalen van de satellieten gaan niet gemakkelijk door muren, en helemaal niet door metaal. Om snel een fix te kunnen vinden moet de sensor de hemel kunnen zien, het liefst buiten.

De lichtsensor verandert van weerstand als er meer of minder licht op komt.

Je kunt een nauwkeurige temperatuur meter toevoegen, maar stiekem zit er al een ‘ongeveer thermometer’ in de chip op het boardje. Dit is geen echte thermometer omdat deze wel 5 of 10 graden naast de gewone temperatuur kan zitten. Toch kan je goed zien of het s’ avonds kouder is dan overdag, en of je device in de schaduw is of in de zon. Wij hebben op deze manier met een ballon gemeten dat het op 5 kilometer hoogte best koud is.

Aan de slag – We helpen je in kleine stappen hoe je alles in elkaar zet.

Lora32u4 op USB aansluiten en testen met Blink voorbeeld in de Arduino IDE

We bekijken eerst met een allereerste stukje arduino programma of zover alles werkt. Hiervoor gebruiken we een voorbeeld waarmee we een led laten knipperen op onze Lora32u4.

Open de Arduino programmeer omgeving

Als je de USB stick in je computer opent, dan zie je in de folder Arduino_port. Deze folder kan je naar je eigen harddisk kopiëren en dan vanaf daar verder werken.

In de folder Arduino_port dubbelklik je op “arduino” of “arduino.bat” (nog liever: zet op je werkblad een snelkoppeling naar deze file). Je ziet dan dat de Arduino programmeeromgeving wordt geopend. Je ziet ook al een paar regels code, kijk er maar even naar, wat zie je? De arduino zal alle opdrachten in het blok “Setup” één keer uitvoeren, en daarna zal het blijven herhalen wat er staat in het blok “Loop”. Nu staat daar eigenlijk nog niets, maar het staat klaar om jouw eigen code te gaan maken. Op dit moment hoeven we geen code te schrijven, want we kunnen gelukkig kiezen uit veel voorbeelden.

We gaan op zoek naar een Blink voorbeeld.

Hiervoor open je links boven ‘File’ en kies ‘Examples’ of ‘Voorbeelden’, dan ’01 Basics’, en dan Blink.

De programma code wordt geladen, kijk er maar even naar. Herken je de grijze tekst? Dat is uitleg waar de arduino zelf niets mee doet. Als het goed is kan je de delen vinden voor “Setup” en “Loop”. Daar staat nu wat computer code, en met een beetje fantasie kun je begrijpen dat hier wordt geregeld dat er een ledje gaat knipperen.

 

– – – driver installeren voor Lora32u4?? –> deze heeft geen driver nodig, zelfs niet op de Apple Mac —  – — — – – –

Apparaat type en poort instellen

Voordat je de Lora32u4 gebruikt is het een goed idee om de antenne er alvast op te klikken. Bij alle apparaten die iets uitzenden is het beter om de zendenergie via de antenne af te voeren. Klik het kleine stekkertje van de krul antenne op de ronde mini stekker op de Lora32u4.

Sluit de Lora32u4 aan met de USB kabel op je computer.

Voordat we de code naar je Lora32u4 stuurt moeten we in de programmeeromgeving instellen welk device hij heeft.

Bij “Tools” en dan “Board” krijg je een hele lijst van allerlei mogelijke soorten arduino’s en andere apparaten. Daar moet je naar beneden scrollen en kies dan in de groep “Adafruit Boards” voor “Adafruit Feather 32u4”. Dit is hetzelfde soort device als onze Lora32u4.

Nu moeten we nog instellen op welke poort onze Lora32u4 gevonden kan worden.

Bij “Tools” en dan “Port” krijg je te zien welke ‘Serial ports’ je computer nu herkent. Als het goed is dan wordt er ook eentje genoemd waar ‘Adafruit Feather 32u4’ achter staat. Deze moet je dan kiezen.

Als de poort niet wordt genoemd dan kan dit betekenen dat je de driver nog moet installeren. (toelichting?) Daarna zal de poort wel in de lijst zichtbaar worden met de goede naam ernaast. Ook is het soms nodig om de reset knop op de Lora32u4 in te drukken.

Als alles nu goed staat zie je dat door de tekst die rechts onder op het scherm staat, dit lijkt op “Adafruit Feather 32u4 on COM789”.

Blink programma versturen

We zijn klaar om het blink programma uit te proberen. Links boven zie je een ronde knop met een groene pijl, dat betekent “Upload”. Druk hier maar eens op en kijk wat er gebeurt.

Het programma wordt naar de Lora32u4 gestuurd. Je ziet eerst een bericht “compiling”, dat betekent dat het programma precies voor jouw device wordt klaargemaakt. Daarna wordt het verstuurd, en zie je een overzicht van hoeveel ruimte op je device voor je programma is gebruikt.

Het spannende van programmeren is dat het soms mis gaat, bijvoorbeeld als je per ongeluk ergens iets raars hebt getikt. Dan krijg je bij het versturen een error, in rode letters. Hij laat ook met een rode regel zien waar hij denkt dat het mis gaat. In het voorbeeld hieronder is het meteen duidelijk dat ik een fout heb gemaakt. En in andere gevallen kan je op het internet zoeken naar een paar woorden uit de error, meestal wordt het dan wel uitgelegd.

Meestal gaan deze stappen wel goed en dan heb je nu een mooi knipperend ledje op je Lora32u4. Gefeliciteerd!

Kijk nu ook eens in de code. Zie je dat er voor het knipperen twee keer een wacht tijd is opgegeven van 1000 milliseconden? Probeer één van deze getallen eens te veranderen in 500 of 2000, kan je zien wat voor effect dat heeft?

Batterij

In je werkset zit ook een batterij met een witte stekker. Deze past in de witte aansluiting op je Lora32u4, sluit hem maar aan. Het duurt meestal één of twee uur voordat deze opgeladen is, en daarna kan je device ook los van het USB snoer een hele tijd blijven werken.

Tijdens het opladen is de orange led aan, als de orange led uit is dan is de batterij voldoende vol. Je mag de batterij dan gewoon aangesloten laten.

De eerste stappen in het solderen aan de lora32u4

In je werkset zie je ook een aantal snoertjes en andere onderdelen. Het is de bedoeling dat je wat gaat solderen. We zullen iets meer gaan aansluiten dan voor het Lora32u4 bordje is bedoeld – en daar hebben we een oplossing voor bedacht.

Soldeerbout en soldeerspullen klaar maken

Leg je soldeerbout alvast klaar op een ruime en veilige werkplek. Gebruik voor dit fijne soldeerwerk een dunne, schone soldeerpunt.

Let op dat je een goede steun gebruikt zodat niets zwart wordt of verschroeit. Pas ook op dat je tijdens het werk niet per ongeluk iets tegen de hete soldeerbout laat komen. Maak je soldeersponsje alvast nat. Leg ook wat dun soldeertin klaar, ik vind zelf de tin van 0,5 mm het lekkerst werken.

Het mooiste werkt een soldeerbout die je op temperatuut kunt instellen. Dan is 250 tot 280 graden C een goede temperatuur. De soldeerbout kan veel warmer worden ingesteld, maar dan wordt je soldeerwerk alleen maar vies en het solderen wordt lastiger.

Voordat je begint te solderen laar je de soldeerbout goed warm worden. Kijk of de punt er mooi schoon uitziet, en veeg deze als de soldeerbout warm is zachtjes een keer af aan de natte spons. Laat er een klein beetje soldeertin op smelten en kijk of het zich goed verdeelt.

Bij een vieze soldeerbout zie je dat de soldeertin niet goed verdeelt. Het wordt dan lastig om je electronica te solderen. Als afvegen aan de natte spons niet helpt dan kan je bij een metalen punt een beetje schuurpapier gebruiken om het zwart voorzichtig weg te halen. Pas op dat je met de hete soldeerbout niets beschadigt!

De 4 pins header

LET OP, dit onderdeel slaan we over, het resultaat vonden we toch te rommelig en vanaf 2019 maken we een schonere versie.

Nu komt een bijzondere stap. Om straks de vele ground- en power aansluitingen te kunnen doen, gebruiken we een 4 pins header met lange pootjes, we noemen dit ook wel een stacking header. Met een schaar of een tangetje pak je één van de middelste pootjes en trek je deze er voorzichtig uit. Dit losse pootje hebben we niet nodig.

De header gaat op de pootjes 3V3, GND en A0 zoals op de foto. Daarvoor buig je de drie pootjes. Zorg dat het zwarte deel dicht bij de lora32u4 blijft tijdens het solderen.

Bij het solderen is het belangrijk dat je de soldeerbout niet te lang op het werkje houdt. Drie seconden is mooi, en 10 seconden is eigenlijk te lang. Met de punt van de soldeerbout raak je tegelijk de rand van het gaatje aan en het pootje. Je soldeertin laat je in het gaatje vloeien, en je gebruikt precies genoeg om alleen dat kleine gaatje te vullen. Elk van de drie gaatjes waar de header doorheen loopt soldeer je dicht zodat de pootjes netjes vast zitten.

Nadat de drie pootjes vast zitten knip je voorzichtig het uitstekende deel van A0 af. En de uitstekende delen van de pinnen op 3V3 en GND buig je voorzichtig helemaal tegen het bordje, zoals op de foto.

Testen met de knop en een aangepast blink voorbeeld

LET OP; vanaf 2019 slaan we dit onderdeel over.

Sluit nu de drukknop met stekker aan op A0 en GND.

Op de computer ga je naar de Arduino programmeeromgeving. Kies links boven voor “File”, dan “open”, en kies in de arduino_port folder voor bijvoorbeeld C:\arduino_port\GitHub\Junior-IOT-in-a-box-Project\arduino_test_ButtonBlink\arduino_test_ButtonBlink.ino

Kijk weer even naar de code. Zie je een verschil met het voorbeeld van de Blink dat we hiervoor hebben gebruikt? Stuur de code naar de arduino, en kijk wat er gebeurt als je op de knop drukt.

Kijk ook eens of je het gedrag van de knop kunt omdraaien, dus wat nu gebeurt bij indrukken moet gebeuren wanneer je niet indrukt.

Met een GPS wordt het een tracker

We sluiten een GPS aan waardoor het device kan zien op welke locatie op aarde het zich bevindt. Hiermee wordt het een GPS tracker.

Het aansluitschema zie je ook op https://github.com/JuniorIOT/Junior-IOT-in-a-box-Project

De GPS module bepaalt de locatie op aarde aan de hand van de signalen die de satellieten uitzenden. Dit gaat het beste als de GPS de hemel kan zien, en vaak heeft het de eerste keer een half uur nodig voordat er voldoende informatie is ontvangen voor een goede plaatsbepaling.

We gebruiken een snoer waarvan de stekker op de GPS past. Het andere einde solderen we aan de Lora32u4. Om het netjes te kunnen solderen ga je eerst dit snoer vertinnen. Dit is ook meteen het voorbeeld hoe je de snoeren bij de andere sensors klaarmaakt.

GPS snoer vertinnen

Eerst gaan we de snoertjes vertinnen, omdat ze daarna veel makkelijker op de Lora32u4 gesoldeerd kunnen worden.

Voor elk snoertje haal je met de striptang, of heel voorzichtig met je nagels, of met een kniptang of een schaar een paar millimeter van het plastic af. Let op dat er niets verdwijnt van de koperen binnenkant, anders zal het snoertje later te makkelijk afbreken. De koperen draadjes hou je een beetje bij elkaar, en hou ze tegen de punt van je soldeerbout. Zodra de draadjes warm zijn hou je er een beetje soldeertin tegenaan, waardoor de tin makkelijk tussen de draadjes trekt.

Je ziet vaak nog een klungelig kloddertje tin hangen, en de uiteindjes blijven rafelig. Ook zie je dat het plastic soms ietsje krimpt. Dit komt allemaal goed, want je knipt nu met de schaar een stukje af, zodat er aan de draad nog maar een stukje van 2 of 3 millimeter overblijft. (Hoe groot is 3 millimeter eigenlijk?)

Doe dit voor alle draadjes.

GPS snoer aan de Lora32u4

Je hebt de snoertjes van de GPS stekker netjes vertint en ingekort tot 2 of 3 millimeter. Controleer of aan de stekker de kleuren inderdaad op deze volgorde zitten: zwart – wit – groen – rood

Wit komt op poort 10 van de Lora32u4. Steek het draadje voorzichtig via de onderzijde door het gaatje en soldeer het vast.

Nu monteer je groen op poort 11.

Draai het werkje om.

Bij de volgende soldering gebruik je de pennen in 3V3 en GND. Als je de soldeerbout er te lang op houdt dan wordt de pen te warm en kunnen eerder gesoldeerde draden losraken. Om te zorgen dat solderen zo makkelijk mogelijk gaat moet je de pennen nu even helemaal vertinnen. Met de soldeerbout breng je een dun laagje tin aan over de hele lengte op beide pinnen, maar maak ze niet te warm.

Soldeer dan van de GPS stekker de rood op 3V3 en zwart op GND.  zoals op de foto.

Terwijl er geen USB kabel is aangesloten, en ook geen batterij, zet je de GPS module op de stekker.

Bij het aansluiten van de USB-kabel let je goed op of er niet iets heel warm wordt, mocht dat het geval zijn dan is er wellicht een draadje verwisseld.

Sluit nu de USB-kabel aan op de Lora32u4. Op de GPS module horen nu leds aan te gaan en te knipperen. Als dat niet zo is dan moet je de USB kabel losnemen, en alle GPS draadjes te controleren volgens het aansluitschema. Vooral zwart en groen moeten op de goede plek zitten.

GPS serial test in de Arduino omgeving

De GPS geeft de informatie over een seriële verbinding. Om te kijken welke seriële informatie er wordt verzonden gebruiken we het test programma C:\arduino_port\GitHub\Junior-IOT-in-a-box-Project\arduino_test_SoftwareSerialExample\arduino_test_SoftwareSerialExample.ino

Open dit programma. Rechtsboven in de programmeeromgeving zit een vierkante knop met een vergrootglas. Klik hierop om de serial monitor te openen. Stuur nu het programma naar je Lora32u4.

De serial monitor toont de informatie die van de GPS wordt ontvangen. In het begin zullen er minder getallen zijn en veel regels met voornamelijk komma’s, maar naarmate er meer satellieten worden herkend zien we meer getallen verschijnen.

Als er helemaal geen info op het scherm komt dat hebben we een probleem. Controleer of je de draden hebt gesoldeerd aan poort 10 en 11. Ik heb vaak gehad dat ik de draden op 10 en 11 heb omgewisseld.

Als er wel informatie is, maar je ziet meer komma’s dan echte getallen dan moet je wachten tot er meer satellieten worden gezien. Buiten met zicht op de hemel werkt het beste.

GPS test van locatie en tijd

Nadat de seriële monitor de GPS data kan laten zien, kunnen we de volgende test doen. Daarbij gebruiken we een library die het vertaalwerk voor ons doet van die getallen naar informatie die we zelf makkelijker begrijpen.

Omdat het geheugen van de Lora32u4 relatief klein is voor de dingen die wij ermee willen doen moeten we een beetje zuinig zijn. De library die we voor de GPS gebruiken kunnen we instellen zodat precies de informatie wordt opgehaald die we nodig hebben. Dat scheelt geheugenruimte en tijd. Het is wel belangrijk om te testen of alle functies doe we nodig hebben goed werken. Daarvoor is dit testprogramma.

Open het GPS testprogramma op C:\arduino_port\GitHub\Junior-IOT-in-a-box-Project\arduino_test_GPS. Open de serial monitor en stuur het test programma naar de Lora32u4.

Het eerste stukje in de serial monitor is een weergave van de informatie die van de GPS wordt ontvangen.

Vanaf drie seconden zal de software een poging doen om deze informatie te interpreteren. We zoeken de latitude, longitude, hoogte en hdop. In onderstaand voorbeeld kan je zien dat de library een aantal van deze waardes weet af te leiden. Bij Latitude en Longitude mag je de komma overigens 7 posities verschuiven. Het scheelt ons wat geheugen en rekenkracht door te werken met integers zonder komma.

Je ziet in het voorbeeld ook dat de satellieten informatie geven over de datum en de tijd. Elke seconde wordt er een bericht getoond, en het is geen toeval dat het knipperen op de GPS ook eens per seconde gebeurt.

Analoge lichtmeter TEMT6000 aansluiten en testen

LET OP: deze stap is geen onderdeel van de standaard set. Omdat de betreffende aansluitpunten al in gebruik zijn, is het soms lastig om de GND en de 3V3 draden aan te sluiten.

Deze lichtmeter geeft een analoog signaal. Deze meten we via poort A3.

Neem het drie aderig snoer, strip en vertin de uiteinden, en knip ze af tot 2 of 3 mm. Soldeer wit aan A3.

Soldeer groen aan de GND pin.

Soldeer rood aan de 3V3 pin.

Nu strip je de andere uiteindes, vertinnen, en solderen aan het TEMT6000 bordje.

TEMT6000 testen met voorbeeld programma en serial monitor

De TEMT6000 lichtsensor is niet veel meer dan een spanningsdeler over twee weerstanden, waarbij één van de twee weerstanden door licht wordt beïnvloed. Daardoor zal de spanning die we meten veranderen naarmate er meer of minder licht is. Dit meten we met de analoge ingang A3.

We gebruiken het test programma C:\arduino_port\GitHub\Junior-IOT-in-a-box-Project\arduino_test_TEMT6000\arduino_test_TEMT6000.ino

Open dit programma in de Arduino programmeeromgeving. Rechtsboven zit een vierkante knop met een vergrootglas om de serial monitor te openen. Stuur het programma naar de Lora32u4 en kijk in de serial monitor wat er gebeurt.

BME280 sensor voor temperatuur, luchtvochtigheid en druk via I2C

De BME280 is een sensor bordje waarop een hele mooie sensor zit voor druk, temperatuur en lucht vochtigheid. Deze informatie wordt verstuurd via I2C. Deze manier van communicatie is nét weer even anders, en gebeurt met specifieke pinnen op de Lora32u4. Gelukkig zijn er ook hier weer libraries die ons helpen.

In ons aansluitschema zie je waar deze gemonteerd wordt om met onze software te werken.

Nadat je de sensor hebt aangesloten gebruik je het testprogramma C:\arduino_port\GitHub\Junior-IOT-in-a-box-Project\arduino_test_BME280\arduino_test_BME280.ino om te controleren of het werkt.

Extra sensors – indien je deze hebt aangeschaft

Je kunt ervoor kiezen om voor je project extra sensors aan te schaffen. Hier volgt een korte beschrijving hoe je deze kunt aansluiten en testen.

Extra: SDS021 Particle Matter sensor voor fijnstof metingen

LET OP: de pin aansluiting in de originele beschrijving klopt niet: we moeten serial of softwareserial gebruiken. Voor software serial hebben we interrupt pins nodig. Daar hebben we de GPS op aangesloten. We kunnen nog wel de Serial pins gebruiken, zoals inmiddels is edaan in het Alkmaar Citizen science project. Daarvoor moet deze beschrijving nog worden aangepast.

Indien je de SDS021 sensor hebt aangeschaft monteer je de stekker op dezelfde manier. Controleer of de kleuren op de juiste volgorde aan de stekker zitten, vanaf het montage gat van de sensor is dat rood – nc – zwart – geel – blauw. Geel komt op A1, blauw op A2, zwart op de GND pin en rood op de 3V3 pin.

Indien je de SDS011 hebt aangeschaft, sluit je deze op gelijke wijze aan. Het schema staat op onze Github.

Deze sensor geeft de informatie over een seriële verbinding. Testen met SDS021 test programma. Onze excuses – op dit moment is het testprogramma voor de SDS021 nog niet af.

Extra: MH-Z19 meter voor CO2

Als je deze meter hebt aangeschaft kan je deze aansluiten volgens het schema op https://github.com/JuniorIOT/Junior-IOT-in-a-box-Project

De voorbeeldsoftware hebben we op dit moment nog niet uitgewerkt.

Alle onderdelen bij elkaar

Als je alle onderdelen bij elkaar hebt dan kunnen we testen of alles werkt. Gebruik hiervoor het programma C:\arduino_port\GitHub\Junior-IOT-in-a-box-Project\arduino_juniorIOT_Lora32u4\arduino_juniorIOT_Lora32u4.ino

Testen met het programma arduino_juniorIOT_Lora32u4

Met dit programma wordt ook een signaal verzonden naar The Things Netwerk. De software is eerst nog ingesteld om de naam van onze originele sensor te gebruiken. Dit ga je later aanpassen.

Open de software in de Arduino programmeeromgeving, open de serial monitor en stuur de software naar je Lora32u4. In de serial monitor zie je dat de software een aantal tests uitvoert. Ziet hij alle sensors die je hebt toegevoegd, en ziet hij de informatie van de GPS?

Kan TTN je device zien?

Via de antenne wordt de informatie naar The Things Network verstuurd. Zoals de software voor je staat ingesteld zal TTN de informatie verzamelen op een door ons ingesteld punt. Dit is de applicatie “Junior-IOT-in-a-box-Project” bij het account van onze “Junior IOT”. De naam van de sensor is “junior001”.

Het is niet de bedoeling dat iedereen in TTN bij jouw account kan komen, en zo kan je ook niet direct bij ons account van onze applicatie. Daarom zetten we de door jouw sensor verstuurde informatie nog in een andere file. Kijk eens of je daar jouw sensor kunt zien. http://junioriotchallenge.nl/ttn_data/gamedata/nodes.json

(dit aan te passen naar een lijst van laatste metingen voor deze sensor)

Op de kaart laten we zien waar we de laatste metingen zijn gedaan. Zie je jouw sensor al? http://junioriotchallenge.nl/game/

In de software die je meekrijgt bij deze werkset wordt voor jouw sensor, en die van andere mensen, telkens dezelfde naam en ID gebruikt. Als meer mensen tegelijk aan het werk zijn dan lijkt het alsof dezelfde sensor op veel plaatsen tegelijk is, en dat is niet handig. Bovendien is het voor TTN niet goed als er voor één sensor zoveel data blijft binnenkomen, het is daarom mogelijk dat deze sensornaam en ID af en toe niet werkt. Zorg er voor dat je nu snel je eigen account aanmaakt.

Help, mijn sensor komt niet op de kaart

Als je sensor niet door TTN wordt gezien dan kan dat door een paar dingen worden veroorzaakt.

  1. De door ons ingestelde sensornaam en ID zijn vandaag te veel gebuikt. Maak snel je eigen account en geef de sensor een nieuwe naam en ID.

 

  1. Misschien is er nog geen TTN basisstation bij jou in de buurt. Voor TTN zijn inmiddels een paar duizend basisstations in de wereld neergezet, waarvan heel veel in Nederland. Maar nog lang niet overal is er goede dekking.
    The Things Network laat op de kaart zien waar er al basisstations staan. https://www.thethingsnetwork.org/map
    De heatmap van TTN mapper laat zien op welke locaties goede ontvangst is. https://ttnmapper.org/heatmap/
    Je kunt zelf ook een basisstation plaatsen, of in overleg met je school, de buurt, of de gemeente iets regelen. De meeste basisstations die je kunt kopen kan je makkelijk aansluiten op je thuisnetwerk. Het mooiste is om de antenne van het basisstation buiten zo hoog mogelijk te plaatsen.

 

  1. Het kan zijn dat je Lora32u4 de informatie niet kan versturen. Zit de antenne goed vast? Probeer het eens als je buiten staat? Ook hier telt dat dit het beste werkt vanaf een zo hoog mogelijke locatie met zoveel mogelijk zicht naar de lucht.

 

  1. Het kan ook zijn dat de software niet goed werkt.
    Zie je errors (in rode tekst) in de programmeer omgeving? Zoek op het internet naar de woorden uit de tekst van de error, en kijk wat voor oplossingen er komen.
    Kijk wat er wordt afgebeeld in de serial monitor. Klopt dat met wat je in dit boekje hebt geleerd?

 

  1. Een andere mogelijkheid is dat de berichten wel worden verzonden, maar dat je Lora32u4 de locatie niet kan ontdekken. Controleer welke informatie er wordt getoond in de serial monitor, zie je latitude en longitude getallen? Zonder deze getallen zou de sensor wel voor moeten komen in http://junioriotchallenge.nl/ttn_data/gamedata/nodes.json al is het moeilijk om te herkennen welke die van jou is.

The Things network

The Things Network is een plek op het internet waar je de sensor data kunt verzamelen. Via The Things Network zijn veel basisstations verbonden om deze data van jouw sensors te ontvangen. Zolang jouw Lora signaal wordt ontvangen bij een gateway in de buurt hoef je daar verder niets te regelen.

Account aanmaken

Jouw sensors moet je aanmelden een aansluiten op een groep binnen je eigen omgeving bij The Things Network. Je hebt dus een account nodig bij TTN, en daarna een TTN applicatie waarop je de sensors zult aansluiten.

Open je internet browser en ga naar https://www.thethingsnetwork.org

Kies rechts boven voor “sign up” als je nog geen account hebt. Kies een username, dit is wat andere mensen kunnen zien. Let op, het is handig om helemaal geen hoofdletters te gebruiken.

Vul je email adres in en kies een wachtwoord waarmee je later zult inloggen. Klik onderaan op ‘create account’.

Het scherm vraagt je nu om in je email adres te bevestigen. TTN stuurt een email naar het door jou opgegeven email adres.

Open de email en klik daar op “activate account”. Je wordt dan ingelogd bij TTN.

Applicatie aanmaken

Nadat je bij TTN bent ingelogd klik je op “Console”.

In de console pagina kies je voor “Applications”.

In een nieuw account heb je nog geen applications. Klik op “add application”.

Vul een mooie naam en description in voor je application en klik onderin op “add application”. Je application wordt aangemaakt.

Scroll naar beneden om te zien hoeveel sensors er op je application zijn toegevoegd (er zijn nu nog geen sensors toegevoegd).

Scroll verder en bekijk bij collaborators wie er toegang hebben tot je applicatie. Hier kan je andere mensen toegang geven door hun account naam in te vullen, let op dat je dan precies dezelfde hoofdletters en kleine letters gebruikt.

Sensor registreren

In de pagina van je applicatie zie je hoeveel sensors er al aan deze applicatie zijn gekoppeld. Klik op “register device”.

Kies een naam (in kleine letters). Het beste kies je een naam waarvan je denkt dat deze nog niet door iemand anders is gebruikt. Klik op het symbooltje aan de linker kant bij device EUI zodat er komt te staan “this field will be generated”. Klik onderaan op “register”.

Je device is nu geregistreerd, maar we moeten nog wat instellen.

Je ziet dat Activation nog staat op OTAA, dat is Over The Air Activation. Dit betekent dat er een overleg nodig tussen TTN en ons device om de registratie te voltooien. Het voordeel is dat de Device ID niet op elk device hoeft te worden geprogrammeerd. Om ruimte te besparen in de software hebben wij deze functie weg moeten laten, en daarom moeten we deze setting bij TTN aanpassen.

Klik in de device pagina rechts boven op “settings” om naar de pagina te gaan waar je de device instelling aanpast.

Je ziet dat Activation nog staat op OTAA, dat is Over The Air Activation. Dit betekent dat er een overleg nodig tussen TTN en ons device om de registratie te voltooien, en dat de devices niet helemaal voorgeprogrammeerd hoeven te worden. Om ruimte te besparen in de software hebben wij deze functie weg moeten laten. Deze setting moeten we daarom bij TTN veranderen in ABP.

Een ander ding om op te letten is de “Frame Counter Checks”. Je device stuurt met elk bericht een teller mee. Hiermee kan je zien of een bericht is overgeslagen, of dat er berichten worden verstuurd met heel andere teller standen. TTN verwacht dat de tellerstand steeds groter wordt, en berichten die daar niet aan voldoen kunnen worden genegeerd. Bij de software op ons device wordt de tellerstand telkens terug gezet naar nul, dus wij moeten deze controle uitzetten.

Klik op “ABP” en zorg dat het vinkje weg is bij “Frame Counter Checks”. Onderaan de pagina klik je op “save”.

 

De Lora32u4 sensor software koppelen aan je TTN account

Bij TTN heb je gezien waar de gegevens van jouw device te vinden zijn, en je hebt gelezen waarom je voor ABP hebt gekozen.

Het is nu tijd om software klaar maken voor TTN. Open in de Arduino programmeeromgeving dit programma:

C:\arduino_port\GitHub\Junior-IOT-in-a-box-Project\arduino_juniorIOT_Lora32u4\arduino_juniorIOT_Lora32u4.ino

Je software heeft de registratie keys nodig om in te stellen dat de berichten naar jouw TTN applicatie verstuurd moeten worden. Hiervoor ga je in je browser naar de TTN console, naar de pagina van je device, en scroll naar beneden tot je de drie regels Example Code ziet. Deze drie regels moet je kopiëren.

Zoek de file keys.h, als deze file nog niet bestaat kan je deze aanmaken als lege tekst file. Verwijder alles wat in keys.h staat, en plak er je drie regels.

Controleer dat de krul antenne is aangesloten. Stuur de software naar je device. Kijk in de serial monitor of er inderdaad een bericht wordt verstuurd.

Kijk in de TTN console of het bericht aankomt. Dat zie je bij Status aan het groene bolletje, en je ziet hoe lang geleden het bericht is aangekomen.

Als TTN je bericht niet ziet, controleer of je antenne er wel aan zit. Zit je binnen, en is er veel metaal in het gebouw aanwezig? Maak de kans groter door met je device naar buiten te gaan, of naar een hoger gelegen punt. Controleer of er voldoende netwerk is op jouw locatie. Kijk op de kaart waar het dichtstbijzijnde basisstation is, en ga daar dichter naartoe. Kies voor betere resultaten een basisstation met ‘outdoor’ wat het liefst ook een beetje hoger staat.

Hoe ziet het bericht er uit wat we naar TTN sturen? Het bericht is opgebouwd uit beknopte getallen. Je kunt dit zien in de TTN console bij je device. Ga daarvoor bij je device naar het tabblad “Data”.

Je ziet hier inderdaad een reeks getallen.

Om hier weer bruikbare informatie van te maken stellen we in de TTN applicatie een decoder in. Op de USB stick vindt je de formule in het bestand “TTN_payload_decoder.txt”. Ga in de TTN console naar applicatie > Payload Formats, en plak daar de formule. Klik onderaan de pagina op “save payload functions”.

Wacht even tot er weer een bericht wordt verstuurd. Zie je nu echte metingen?

Met de Payload Format decoder kan TTN de informatie details uit het bericht tonen. Dat ziet er uit als in deze screenshot.

Je meting ergens anders laten zien

De informatie kan naar verschillende plekken worden doorgestuurd. In TTN zie je dat bij Integraties.

Storage

De makkelijkste is de Storage, waarmee TTN één week informatie bewaart. In de TTN console ga je naar je applicatie en kies je het tabje Integrations.

Kies voor “add integration” en kies Data Storage.

In het scherm voor de Data Storage integration kies je “Add Integration”.

Daarna heb je de data storage aangezet.

TTN Mapper

Je kunt de berichten doorsturen naar TTN Mapper door de betreffende integratie te gebruiken. Dan kan je zien waar jouw sensor is, en help je de TTN community om te onderzoeken waar het netwerk voldoende dekking heeft.

Voor je applicatie ga je naar de Integraties, kies “add integration”, en zoek naar TTN mapper.

Na de keuze voor TTN Mapper kan je deze instellen. Voor Process ID vul je een unieke naam in, bijvoorbeeld je project naam. Geef je email adres op zodat de mensen van TTN mapper je kunnen benaderen als ze vragen hebben over jouw data. De rest laat je open. Druk op “Add Integration”.

Daarna zie je dat deze integration aan staat.

Je kunt bijvoorbeeld voor onze device “junior001” de kaart zien op https://ttnmapper.org/special.php?node=junior001&type=placemarks&gateways=on&alldates=on

Zolang er nog geen metingen met correcte GPS data zijn verstuurd zal je een lege kaart zien. Het zal bovendien een dag duren voordat de data van jouw device is verzameld en zichtbaar wordt op TTNmapper.org.

Onze eerdere metingen staan bijvoorbeeld op https://ttnmapper.org/special.php?node=lora32u4-nummer-vier&gwall=1&gateways=on&date=2017-10-29

Excel

Op de USB stick staat een excel file waarmee je de storage kunt uitlezen en als tabel laat zien. Hiervoor maak je een toegangskey aan in je applicatie welke je vervlgens in de excel file opneemt. Heb je geen excel? (andere mogelijkheden te onderzoeken)

 

JuniorIOT kaart integratie

Wij hebben een kaart gemaakt waar je berichten naar toe kunnen, en waar je het laatste bericht kunt aanklikken. Je vind je sensor dan terug op de kaart https://JuniorIOTchallenge.nl/game

Om deze integratie voor elkaar te krijgen doe je de volgende stappen … (uitleg en screenshots)

De data die je naar onze kaart stuurt is voor iedereen te zien. We noemen dat ‘open data’, informatie die we met elkaar delen. Via https://JuniorIOTchallenge.nl/ttn_data/nodes.json kun je bijvoorbeeld zien welke apparaten zich hier vandaag hebben aangemeld.

Als je meerdere apparaten hebt kan je hier zelfs een battle mee spelen. We kunnen een speelveld inrichten waarbij verschillende teamkleuren de kaart moeten veroveren. Tegelijk doe je op die plaatsen ook temperatuurmetingen en als je de juiste sensors hebt dan meet je ook fijnstof, luchtvochtigheid en temperatuur – hoe cool is dat?

 

En hoe nu verder

Met deze GPS tracker kan je van alles meten en volgen.

Ietsje veiliger, maar eigenlijk véél leuker is een ballon experiment. Met een helium ballon van 70 tot 95 centimeter kom je soms wel vele kilometers hoog. Het is interessant om te volgen welke baan de ballon aflegt. Zoek wel de regels op van de stad waar je dit doet, blijf weg van luchthavens. Gebruik vooral geen plastic lintje om het device vast te binden – dit is namelijk erg schadelijk voor de dieren. Doe er een naamkaartje bij zodat het teruggestuurd kan worden. Denk daarbij goed na over milieu en de vervuiling door ballonnen – liever maar één ballon in plaats van een wolk van duizenden?

 

 

Laat je gedachten eens gaan… met deze sensor kan je van alles meten. Staat het licht aan in de schuur, is de deur open, hoe warm is het de afgelopen uren geweest in de keuken, waar heb ik mijn fiets ook alweer neergezet…

Soms kan het handig zijn om de onderdelen van het device op een andere plek te duwen. En natuurlijk kan je er zelfs een mooi kastje voor ontwerpen om te 3D printen.

Bij onze groep denken we aan een experiment met een raket, en dit device kan helpen om uit te zoeken hoe hoog de raket is gekomen.