Inleiding

De seriële monitor is een handig hulpmiddel in de Arduino-omgeving waarmee je data tussen je microcontroller (zoals een Arduino) en je computer kunt uitwisselen. Je kunt de monitor gebruiken om meetwaarden, tekst of andere informatie naar je computer te sturen, bijvoorbeeld om sensordata te loggen of berichten weer te geven.  

Daarnaast is de seriële monitor een krachtig debuginstrument. Door variabelen, berekeningen of de status van digitale en analoge pinnen naar de monitor te sturen, kun je controleren of je programma correct werkt. Dit maakt het makkelijker om problemen op te sporen en de werking van je schakeling te analyseren.  

Om de seriële monitor te openen, klik je in de Arduino IDE op "Extra" > "Seriële monitor" of gebruik je de sneltoets Ctrl+Shift+M

Code

De commuicatie tussen de Arduino en de computer gebeurt via de USB-poort. Digitale pin 0 en 1 zijn ook verbonden met de USB, pin 0 voor het lezen van data van de computer, pin 1 om data naar de computer te sturen. Om die reden gaan we proberen om pin 0 en 1 niet te gebruiken om sensoren of actuatoren aan te sluiten.

Seriële verbinding tussen de computer en de Arduino openen.

Om te communiceren met de computer gaan we eerst de verbinding moeten openen. Dit gebeurt in de setup()-functie.De commmuncatie met de computer starten met een snelheid van 9600 bits per seconde gebeurt met onderstaande code:

Serial.begin(9600);

Syntax:

Serial.begin(<waarde>)

Parameters

  • waarde: de snelheid waarmee de computer en Arduino gaan communceren (standaard: 9600)

Bron :

https://docs.arduino.cc/language-reference/en/functions/digital-io/pinMode/

Belangrijk: Zorg dat de snelheid in de code en de seriële monitor hetzelfde is!

Wanneer je met een Arduino werkt, is het belangrijk dat de snelheid van de data-overdracht (ook wel baudrate genoemd) in je code exact overeenkomt met de snelheid die je in de seriële monitor instelt.  

  • In je code staat bijvoorbeeld: `Serial.begin(9600);` → dan moet je in de seriële monitor ook 9600 selecteren.
  • Als deze snelheden verschillend zijn, krijg je onleesbare tekst of rare symbolen in de seriële monitor. De Arduino en je computer praten dan als het ware in een andere "taal", waardoor ze elkaar niet begrijpen.  

Controleer daarom altijd of beide snelheden hetzelfde zijn, zodat je de juiste informatie kunt zien!

Opmerking: In de simulatieomgeving moet je dit niet doen.

Data versturen naar de computer

Om data als tekst van de Arduino naar de computer te versturen ga je deze "printen" via de seriële verbinding. Dit kan met 2 verschillende commando's:

  • Serial.print() → Toont de tekst of waarde zonder een nieuwe regel. Alles komt achter elkaar te staan. 
  • Serial.println() → Toont de tekst of waarde met een nieuwe regel. Elke volgende uitvoer begint op een nieuwe regel.  

Voorbeeld:

Serial.print("Hallo");  
Serial.print(" ");  
Serial.print("Arduino!");  

Resultaat:`Hallo Arduino!` (Alles op één regel)  

Voorbeeld:

Serial.println("Hallo");  
Serial.println("Arduino!");  

Resultaat:

Hallo 
Arduino!  

(Met een enter na elke regel)  

Syntax:

Serial.begin(<waarde>)

Parameters

  • waarde: de snelheid waarmee de computer en Arduino gaan communceren (standaard: 9600)

Bron :

https://docs.arduino.cc/language-reference/en/functions/digital-io/pinMode/

Hoe kun je Arduino-data gebruiken?

Met de Arduino kun je meetgegevens (zoals sensordata) naar je computer sturen. Deze data kun je op verschillende manieren verwerken:  

  1. Seriële monitor – Hier kun je de data live bekijken. 
  2. Data Stream naar Excel – Hiermee laad je de data rechtstreeks in Excel voor verdere verwerking. 
  3. Python-programma – Je kunt de data met Python lezen en opslaan als een CSV-bestand (handig voor analyses).  

Belangrijke regel: Data kan maar op één plek tegelijk gebruikt worden!

  • Als je de seriële monitor open hebt staan, kun je de data niet tegelijk in Excel of Python ontvangen. 
  • Werkt je Data Stream of Python-script niet? Controleer dan of de data niet al door een andere toepassing (zoals de seriële monitor) wordt gebruikt.  

Zorg dus dat je maar één applicatie tegelijk gebruikt om de Arduino-data te ontvangen. Zo voorkom je problemen! 

Opmerking:

  • Je kan ook data versturen van de computer naar de Arduino. Dit is echter gecompliceerder en gaat hier niet behandeld worden.
  • Data versturen naar de seriële monitor wordt zeer dikwijls gebruikt om een sketchte debuggen. De sketch doet niet het verwachtte, dus je gaat waardes van variabele en andere data via de seriële monitor naar de computer sturen. Dit kan je helpen achterhalen waarom de sketch niet reageerd zoals verwacht. Om die reden is het een goede praktijk om standaard de verbinding met de seriële monitor te openen. 

Toepassing seriële monitor

Opmerking:

In de simulatieomgeving kan je de seriële monitor openen door het codevenster te openen. Onderaan het codevenster kan je dan de seriële monitor openen. In de simulatieomgeving moet je niet de baudrate ingeven.

Seriele Monitor1

Simulatie opdracht 1:

Classes => Maze Runner Online => Op weg naar de start! => bodemvochtigheid

In deze oefening is de bodemvochtigheidssensor aangesloten op analoge ingang A0. We gaan gewoon de status van deze ingang lezen en we laten de status van deze ingang zien in de seriële monitor. Tussen 2 waardes zit een pauze van een halve seconde.

Simulatie opdracht 1 - uitbreiding:

Classes => Maze Runner Online => Op weg naar de start! => vochtigheidsmeter indicator

Sluit op je schakening van opdracht 1 ook het verkeerslicht aan. Het verkeerlicht moet aangeven of de grond vochtig genoeg (groen), droog (geel) of zeer droog (rood) is.

Verdeel het gebied van de bodemvochtheidssensor in 3 gelijke delen, elk deel voor één kleur. Om deze gebieden te kunnen indelen moet je eerst de maximale waarde kennen dat de sensor doorgeeft.

Lichtsensor

De weerstand van een LDR (light depending resistor) is afhankelijk van de lichtsterkte die erop valt. Bij veel licht is de weerstand laag, bij weinig licht is de weerstand hoog. 

Je kan met een LDR de hoeveelheid licht controleren. Je kan dat door de LDR in een circuit op te nemen of door een LDR-module te gebruiken.

Je hebt LDR-modules met 3 en met 4 aansluitingen. In beide gevallen worden 2 aansluitingen gebruikt voor de voeding. De 5 V van de Arduino wordt aangesloten op de VCC-pin, en de GND van de Arduino op de GND-pin van de module.

Een derde aansluiting, aangeduidt met SIG of met A0, geeft een analoog signaal. Je sluit deze aansluiting aan op één van anologe ingangen van de Arduino. 

Heb je een vierde aansluiting, dan is dit een digitale uitgang. Deze zal 0 of 1 zijn afhankelijk van de hoeveelheid licht die invalt op de LDR. Dit kan ingesteld worden met een potentiometer.

Heb je een module met 4 aanslutingen, maar je hebt de analoge of digitale uitgang niet nodig, dan moet je deze niet aansluiten.

Seriele Monitor3
Seriele Monitor4

Ook hier hebben we weer deze module voor je opgebouwd op een breadboard. Er zijn 4 aansluitingen voorzien:

  • oranje: dit is het analoge uitgangssignaal (A0 of SIG)
  • groen: voor het digitale signaal (D0)
  • zwart: de "ground" (GND) van de module
  • rood: +5 V (VCC)

Alternatief

Het circuit dat op het breadboard in de simulatie gemaakt is, is reeds een uitgebreid circuit. Ben je niet in het bezit van zo een module, dan kan je met een serieschakeling van een simpele LDR en met een weerstand zelf een lichtsensor maken.

Voor meer informatie klik je op het logo (hoofd met brein)

Simulatie opdracht 2:

Classes => Maze Runner Online => Op weg naar de start! => lichtsensor

  • Sluit de lichtsensor aan zodat je de analoge en de digitale uitgang kan lezen.
  • Geef de waarde van de analoge en digitale pin weer in de seriële monitor.
  • Stel de potentiometer zo in, dat vanaf een analoge waarde van 200 de digitale uitgang 1 wordt.

Sensoren met veranderende weerstand

Inleiding

Sensoren gaan een fysische grootheid zoals lichtsterkte, temperatuur, druk,... omzetten naar een elektrische grootheid.  Bij een aantal sensoren zal de weerstand van de sensor wijzigen. Een Arduino kan niet rechtstreeks weerstand of stroom meten, maar enkel de potentiaal of spanning tussen dat punt en de ground (GND).

Via een omweg kunnen wij dit wel detecteren. Wanneer de weerstand van een component, opgenomen in een circuit, wijzigt, dan zal de stroom door deze kring gaan veranderen. Dit helpt on op het eerste gezicht niet verder omdat ook deze stroom niet kan gemeten worden door de Arduino.

Plaatsen we echter een weerstand in serie met het component, dan zal bij verandering van de weerstand van het component, de stroom wijzigingen, maar niet enkel door het component, maar ook door de weerstand in serie. In een serieschakeling is de stroom immers overal gelijk.

Als de stroom door deze weerstand verandert, dan zal de spanning over deze weerstand veranderen... en dat kunnen we wel gaan meten.

Serieschakeling LDR:

Classes => Maze Runner Online => Op weg naar de start! => LDR serie

Maak op het breadboardje een serieschakeling van de LDR en de weerstand. 

  • Sleep de componenten op hun juiste plaats
  • Maak de verbindingen
  • Sluit de serieschakeling aan op de 5V en GND

Zorg dat je via een analoge ingang de verandering van de "spanning" kan detecteren.

Geef de status van de analoge ingang weer in de seriële monitor.

Krachtsensor:

Classes => Maze Runner Online => Op weg naar de start! => kracht

Maak op het breadboardje een serieschakeling van de kracht en de weerstand. 

  • Sleep de componenten op hun juiste plaats
  • Maak de verbindingen
  • Sluit de serieschakeling aan op de 5V en GND

Zorg dat je via een analoge ingang de verandering van de "spanning" kan detecteren.

Geef de status van de analoge ingang weer in de seriële monitor.

Opmerking:
In het STEM-project Sensor Socks gaan we zelf met Velostat een krachtsensor maken.

Flex sensor:

Classes => Maze Runner Online => Op weg naar de start! => kracht

Vervang nu de krachtsensor door de flexsensor.