Teun de slimme thermostaat, workshop 2

Parent Category: Techniek Category: Arduino

Article Index

Uno plus Eth shieldArduino plus ethernet shield

Inleiding

In Workshop 2 worden het LCD scherm en de buzzer uitgelegd. Teun wordt uitgebreid met een buzzer en een LCD scherm. De buzzer wordt toegevoegd om met een audiosignaal aan te geven dat de setup gelukt is. Ook wordt de buzzer gebruikt om aan te geven dat de button uit workshop 1 is gelezen. Op het LCD komen diverse meldingen te staan.

In het laatste deel van deze workshop wordt programmacode besproken die de tekst naar het LCD stuurt en de buzzer geluid laat maken. De code zelf vind je in de download hieronder.

Deze workshop gaat verder waar workshop 1 gebleven is.


Een buzzer toevoegen

Als Teun aangezet wordt worden er als eerste een aantal dingen door de setup code geïnitialiseerd. Het is handig om te weten dat dit allemaal gebeurd is. Door een buzzer toe te voegen aan de thermostaat kunnen we laten weten dat de setup afgerond is. Er wordt een deuntje gespeeld aan het einde van de setup.

Onze oplossing om Teun aan of uit te zetten is niet vlekkeloos. De button moet toevallig ingedrukt zijn op het moment dat de microcontroller bij het stukje code is dat de buttonwaarde leest. Er zijn andere methoden maar die zijn ingewikkelder dan handig is voor deze workshop. Het zou handig zijn als er een signaal klinkt als de button gelezen is. Ook dit signaal kunnen we maken met een buzzer.

Een buzzer is een klein componentje dat een electrisch signaal met een bepaalde frequentie kan omzetten naar geluid met dezelfde frequentie. Op die manier kunnen met een buzzer tonen gemaakt worden.

buzzerBuzzerHoewel de buzzer module die wij gebruiken 3 pinnen heeft, worden alleen de buitenste 2 pinnen gebruikt. De pin aangegeven met - komt aan de GND te hangen, de pin aangegeven met S komt aan een uitgang van de Arduino. In de opstelling wordt pin 5 voor de buzzer gebruikt.


Tekst op een LCD weergeven

Een thermostaat is geen slimme thermostaat zonder beeldscherm. We voegen dus een LCD toe. hierop laten we bijvoorbeeld de temperatuur zien, of we geven een melding dat het systeem uit staat.
Het LCD in de schakeling is een zogenaamd 16x2 LCD. Een standaard LCD met 2 regels waarop elk 16 karakters zichtbaar gemaakt kunnen worden.

LCDLCDHet beeldschermpje van ons LCD kan lichter of donkerder ingesteld worden met een instelpotmetertje. Het instelpotmetertje hangt direct aan het LCD, niet aan de Arduino. Waarschijnlijk heb je dit instellen in workshop 0 al gedaan.

Het LCD wordt in ons geval met 6 uitgangen aangestuurd. Er worden 4 datalijnen gebruikt, een Reset en een Enable. Uitgebreide informatie vind je bijvoorbeeld hier:

LCD info

De code voor de buzzer

Open het bestand IoT_Workshop_2.fzz in Fritzing.

Er wordt bij deze workshop nog een bestand gebruikt, pitches.h Dit bestand staat in dezelfde map. Je kunt dit bestand met een editor zoals bijvoorbeeld notepad++ openen, gebruik ook hier geen Microsoft Word of vergelijkbaar. In pitches.h zijn de frequenties van de tonen etc. vastgelegd.

Natuurlijk moet ook voor de buzzer een setup worden gemaakt. In deze routine setupBuzzer wordt aangegeven welke pin er voor de buzzer gebruikt wordt, en dat deze pin een uitgang is.

Bij de buzzer routines vind je verder een routine playbuzzer en een routine playSong. Bij beide routines wordt van het commande tone(pin, frequency, duration) gebruik gemaakt. Met behulp van het commando tone(pin, frequency, duration) kan een signaal op de uitgang gezet worden.

Bij het commando tone moet je drie argumenten in de juiste volgorde opgeven. De betekenis van die argumenten is de volgende:
  • pin is in ons geval pin 5, die hebben we buzzerPin genoemd.
  • frequency halen we uit het bestand pitches.h. In pitches.h staat een lijst van noten en de bijbehorende frequenties. Je ziet dit bestand in de code helemaal bovenaan bij INCLUDES staan.Nu kunnen we in plaats van een frequentie van bijvoorbeeld 523 Hz gewoon NOTE_C5 opgeven.
  • duration is de duur van de toon. We hebben een tabel met daarin een deuntje gemaakt. Deze tabel heet notes en vind je bovenaan de code bij Buzzer. Een deuntje bestaat uit een lijst met steeds een noot en een bijbehorende nootlengte.
PlayBuzzer is een eenvoudig stukje code dat slechts 1 enkele toon laat horen. PlaySong laat een langer stukje muziek horen.

We maken in de code van de routine readButton gebruik van playBuzzer. Elke keer dat de button ingedrukt wordt, wordt er nu een korte toon gegeven.

Een het einde van de setup wordt het deuntje gespeeld. Je kunt het deuntjes zelf aanpassen door de tabel langer te maken, de duur van de noten te veranderen of de noten zelf te veranderen.