De Programmeerbare Plantenkas: Een AHT20 temperatuursensor aansluiten en programmeren om de temperatuur te meten

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.

aht20
De AHT20 wordt op een I2C port van de microcontroller aangesloten.

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.