DE PROGRAMMEERBARE PLANTENKAS // EEN AHT20 TEMPERATUURSENSOR AANSLUITEN EN PROGRAMMEREN OM DE TEMPERATUUR TE METEN
SENSOR (CHIP): AHT20 - MEETTECHNIEK: niet bekend - MEETBEREIK (IN ℃): - 200 TOT +85 - PRECISIE (IN ℃): 2 - AANSLUITING: I2C
In deze tutorial laten we zien hoe je een AHT20 temperatuursensor aansluit en programmeert om de temperatuur te meten met een Arduino microcontroller of een andere microcontroller. Deze tutorial hoort bij het artikel "De Programmeerbare Plantenkas: De temperatuur meten met een temperatuursensor", waarin we vertellen hoe je kunt bepalen welke temperatuursensor geschikt is voor jouw project, en waarin we de prestaties van verschillende temperatuursensoren met elkaar vergelijken.
Aansluiten
De AHT20 temperatuursensor is nog vrij onbekend. Hij wordt vooral gebruikt door Seeed Studio voor een van de vele Grove temperatuursensoren. Onze AHT20 temperatuursensor is ook van Grove en dus zeer eenvoudig aan te sluiten. Het enige dat gedaan hoeft te worden is de Grove aansluitkabel aan de ene kant in het ontwikkelaarsbord met de AHT20 sensor te steken en aan de andere kant in de I2C stekker van de microcontroller te steken.
Programmeren
Er zijn een aantal bibliotheken voor AHT temperatuursensoren beschikbaar die direct via de Arduino IDE gedownload kunnen worden. Wij hebben er voor gekozen om de SparkFun
AHT20 bibliotheek te gebruiken, omdat deze het meest eenvoudig in gebruik is. Om de bibliotheek in de code te activeren, gebruiken we het commando #include
<SparkFun_Qwiic_Humidity_AHT20.h>
. Daarnaast gebruiken we ook de Wire bibliotheek, aangeroepen met het commando #include <Wire.h>
, omdat de AHT20
temperatuursensor volgens een I2C verbinding werkt. De temperatuursensor en de AHT20 bibliotheek worden vervolgens aan elkaar gekoppeld met het commando AHT20 AHT20Sensor;
. Als
laatste voorbereiding maken we een globale variabele, die we AHT20gradenC noemen, met het commando float AHT20gradenC;
. Deze variabele heeft het data type float, wat betekent
dat het een kommagetal is.
In de setup fase van het programma doen we twee dingen, we zetten de I2C communicatie aan en we activeren de communicatie met deze specifieke sensor. Dit doen we met de twee commando's
Wire.begin();
en AHT20Sensor.begin();
.
Om deze code makkelijk te combineren met andere codes, vragen we het programma niet in de loop fase, maar in een aparte functie om de temperatuur uit de sensor op te halen. De functie noemen we GROVEAHT20(). Helaas kunnen we onze functie niet alleen AHT20 noemen, omdat AHT20 een functie is die in de AHT20 bibliotheek voorkomt. Wij hebben er voor gekozen om er daarom GROVE voor te zetten, omdat onze sensor van de Grove lijn van Seeed Studio is. Uiteraard kun je de functie elke naam geven die je zelf wilt, zolang deze maar niet in de bibliotheken die je gebruikt voor komt.
Om de funcite aan te maken, beginnen we met het commando float GROVEAHT20()
. We willen dat deze functie de temperatuur als een commagetal berekend. Vandaar dat we float voor de
functie zetten. In de functie beginnen we met het commando AHT20gradenC = AHT20Sensor.getTemperature();
. Dit bestaat eigenlijk uit twee delen. Allereerst zeggen we dat we
willen dat de variabele AHT20gradenC, die we in het begin hebben gemaakt, de waarde krijgt van wat er na het =-teken komt. Na het =-teken zien we AHT20Sensor.getTemperature();
staan.
Het deel .getTemperature() is een commando uit de AHT20 bibliotheek en haalt de temperatuur op uit de sensor.
Om de functie GROVEAHT20() te gebruiken om de temperatuur uit de sensor te halen, moet de functie opgeroepen worden in de loop fase van het programma. Dit doen we met het commando
GROVEAHT20();
. Op dit moment wordt de temperatuur van de variabele AHT20gradenC vrijwel constant geupdate naar de huidige temperatuur. Dat is natuurlijk fijn, maar er lijkt weinig te
gebeuren. Afhankelijk van wat je met de temperatuursensor wilt gaan doen, kun je de temperatuur bijvoorbeeld in de Serial Monitor laten afprinten of een ventilator aansturen als het te warm
wordt.
ARDUINO IDE CODE
/* Voorbeeld code gemaakt door www.foodplanting.com voor de Programmeerbare Plantenkas serie. Deze code is gemaakt voor een AHT20 temperatuursensor. Deze code maakt gebruikt van de AHT20 bibliotheek van SparkFun. Meer info over deze bibliotheek vindt je hier: https://github.com/sparkfun/SparkFun_Qwiic_Humidity_AHT20_Arduino_Library Deze code is zeer minimalistisch, omdat het idee is dat deze code gecombineerd wordt met codes voor andere modules. Zo wordt de temperatuur bijvoorbeeld niet in de loop fase, maar in een aparte functie op geroepen en wordt de gemeten temperatuur niet in de Serial Monitor af geprint. */ // Voorbereiding: #include <Wire.h> #include <SparkFun_Qwiic_Humidity_AHT20.h> // Dit laadt de bibliotheek die nodig is om de temperatuursensor te lezen. AHT20 AHT20Sensor; // Dit geeft aan hoe we de sensor noemen in de code. float AHT20gradenC; // Dit creëert een globale variabele waarin de gemeten temperatuur wordt opgeslagen. // Setup fase: void setup() { Wire.begin(); // Zet de communicatie tussen de microcontroller en de sensor aan. AHT20Sensor.begin(); // Zet de communicatie tussen de microcontroller en de sensor aan. } // Loop fase: void loop() { GROVEAHT20(); // Vraag de microcontroller om de functie die de temperatuur uit de sensor ophaalt uit te voeren. } //Functie voor temperatuursensor: float GROVEAHT20() { AHT20gradenC = AHT20Sensor.getTemperature(); // Dit haalt de temperatuur uit de sensor op. return AHT20gradenC; // De functie zal de waarde van variabele AHT20gradenC updaten met de gemmeten temperatuur. }
Vragen en opmerkingen
We proberen de serie DE PROGRAMMEERBARE PLANTENKAS zo toegankelijk mogelijk te maken voor iedereen. Toch zijn sommige concepten best wel ingewikkeld, omdat er kennis van heel veel verschillende domeinen, zoals natuurkunde, elektrotechniek en computerwetenschappen, samen komen. Het kan daarom best zijn dat we iets niet goed uitgelegd hebben. Mocht er iets niet duidelijk zijn of iets niet zo werken zoals we het in deze tutorial uitgelegd hebben, stuur dan gerust een berichtje via de Disqus op deze pagina. Je kunt de Disqus vinden door naar beneden te scrollen, tot onder de advertenties.