De Programmeerbare Plantenkas: Pin-Tech SoilWatch 10 Analog Soil Moisture Sensor Aansluiten En Programmeren Om De Vochtigheid Van De Grond Te Meten

DE PROGRAMMEERBARE PLANTENKAS: PIN-TECH SOILWATCH 10 ANALOG SOIL MOISTURE SENSOR AANSLUITEN EN PROGRAMMEREN OM DE VOCHTIGHEID VAN DE GROND TE METEN

In deze tutorial laten we zien hoe je een Pin-Tech SoilWatch 10 Analog Soil Moisture Sensor aansluit en programmeert om de vochtigheid van grond te meten met een Arduino microcontroller of een andere microcontroller. Onderaan de pagina vindt je meer informatie over de techniek achter deze sensor.

AANSLUITEN

Pin-Tech SoilWatch 10 Analog Soil Moisture Sensor
De Pin-Tech SoilWatch 10 Analog Soil Moisture Sensor is waterdicht gemaakt, waardoor je deze ook buiten of in vochtige omstandigheden kunt gebruiken.

De Pin-Tech SoilWatch 10 Analog Soil Moisture Sensor is voorzien van drie kabels: een rode voor de VCC aansluiting, een zwarte voor de GND aansluiting en een witte voor een aansluiting op een analoge poort van de de microcontroller. In dit voorbeeld hebben we gebruikt gemaakt van verbindingsklem om de kabel aan te sluiten op een grove stekker, zodat we na het maken van deze tutorial het geheel weer snel uit elkaar konden halen. Wanneer je de sensor voor een langere tijd in een vochtige omgeving gaat gebruiken, dan kun je dit combineren met bijvoorbeeld een waterdichte lasdoos of het geheel in een waterdichte behuizing plaatsen.

Pin-Tech SoilWatch 10 Analog Soil Moisture Sensor
De drie aansluitkabels zijn duidelijk gelabeld, waardoor het aansluiten van de sensor makkelijk gaat.

Programmeren

Het programmeren van de Pin-Tech SoilWatch 10 Analog Soil Moisture Sensor Is redelijk eenvoudig. Net zoals bij de meeste andere capacitieve bodemvochtigheidssensoren is het ook bij deze sensor te kalibreren, zodat je weet welke waarde bij zeer droge en bij zeer natte grond hoort. In ons geval gaf de sensor een waarde van 93 aan in zeer droge grond en een waarde van 601 in zeer natte grond, maar dit kan per grondsamenstelling verschillen. In het artikel “ De Programmeerbare Plantenkas: Grove Capacitive Moisture Sensor Aansluiten En Programmeren Om De Vochtigheid Van De Grond Te Meten” hebben we uitgebreid beschreven hoe je een capacitieve sensor kunt kalibreren. Doordat de Pin-Tech SoilWatch 10 Analog Soil Moisture Sensor een stuk sneller regeert dan de Grove Capacitieve Moisture Sensor, kun je bij deze sensor na een minuut al de waarde noteren.

Pin-Tech SoilWatch 10 Analog Soil Moisture Sensor, kalibratie, capacitieve sensor
In zeer droge grond gaf onze sensor een waarde van 93 aan.
Pin-Tech SoilWatch 10 Analog Soil Moisture Sensor, kalibreren, capacitieve sensor
In zeer natte, verzadigde grond gaf de sensor 601 aan.

Om de Pin-Tech SoilWatch 10 Analog Soil Moisture Sensor te programmeren begin je met het definiëren van een aantal waardes en het aanmaken van een aantal variabelen. Allereerst vertellen we het programma op welke poort de sensor op aangesloten zit, in dit geval A1. Dit doen we met het commando #define vochtSensorPin A1. Daarna maken we twee variabelen aan, namelijk de variabelen waarin we de rauwe waarde die uit de sensor komt in opslaan en de variabele waar we later het berekende vochtigheidspercentage in opslaan. Hiervoor gebruiken we de commando's int vochtWaarde =0; en int vochtPercentage =0;. Zoals je kunt zien gebruiken we voor beide variabelen het data type int, omdat de preciezie van de sensor niet goed genoeg is om er een komma getal van te maken. Als laatste definieren we de waarde die de sensor volgens de kalibratie aangeeft in droge en natte grond. Dit doen we met de commando's #define nat 601 en #define droog 93. Wanneer je geen kalibratie wilt doen, dan kun je de door de fabrikant voorgestelde waarde 0 voor droog en 600 voor nat gebruiken.

Om deze code makkelijk te kunnen combineren met andere stukjes code, hebben we een aparte functie gemaakt voor het ophalen van de waarde uit de sensor. Om deze functie aan te maken geven we het commando int vochtSensor() {}. Binnen in de {} zetten we de twee commando's die de rauwe waarde uit de sensor ophalen en dit vervolgens in een percentage omzetten. Het ophalen van de rauwe waarde gebeurt met het commando vochtWaarde = analogRead(vochtSensorPin);. Het commando vochtPercentage = map(vochtWaarde, droog, nat, 0, 100); kijkt vervolgens welk percentage hierbij hoort op basis van de waarde die bij zeer droge en bij zeer natte grond hoort.  

In deze minimalistische code activeren we de functie die we gemaakt hebben alleen maar op, met het commando vochtSensor(); in de loop fase. Zelf kun je de code uitbreiden om de rauwe waard en/of het vochtigheidspercentage op een scherm te laten zien of om een pomp te bedienen die ervoor zorgt dat de planten water krijgen als dat nodig is. 

Arduino IDE code


/*
   Voorbeeld code gemaakt door www.foodplanting.com
   voor de Programmeerbare Plantenkas serie.

   Deze code is gemaakt voor het bepalen van de vochtigheid van de
   bodem met een Pin-Tech SoilWatch 10 Analog Soil Moisture Sensor Sensor
   na kalibratie.

   Deze code is zeer minimalistisch, omdat het idee is
   dat deze code gecombineerd wordt met codes voor andere
   modules. Zo wordt de vochtigheid bijvoorbeeld niet in de
   loop fase, maar in een aparte functie op geroepen en
   wordt de gemeten vochtigheid niet in de Serial Monitor
   af geprint.
*/

// Voorbereiding:
#define vochtSensorPin A1  // Dit geeft aan op welke analoge input de sensor is aangesloten, in dit geval A1.
int vochtWaarde = 0; // Een variable om de waarde van de vochtigheid van de bodem in op te slaan.
int vochtPercentage = 0; // Een variable om de vochtigheid van de bodem als een percentage in op te slaan.
#define nat 601 // Dit is de waarde die de sensor aangaf in een met water verzandigd grond mengsel.
#define droog 93 // Dit is de waarde die de sensor aangaf in zeer droge grond.

// Setup fase:
void setup() 
  // In de setup fase hoeft niets te gebeuren.
}

// Loop fase:
void loop() {
  vochtSensor(); // Vraag de microcontroller om de functie die de vochtigheid uit de sensor ophaalt uit te voeren.
}

//Functie voor vochtsensor:
int vochtSensor() {
  vochtWaarde = analogRead(vochtSensorPin); // Lees de analoge pin waarop de vochtsensor zit aangesloten uit.
  vochtPercentage = map(vochtWaarde, droog, nat, 0, 100); // Zet de vochtigheid om in een percentage.
}


Achtergrond

De Pin-Tech SoilWatch 10 Analog Soil Moisture Sensor is voorzien van een omhulsel om de elektronica van de sensor te beschermen. Hierdoor is het moeilijker om te achterhalen hoe deze sensor precies in elkaar zit. Op de enige foto die online te vinden is van de binnenkant van de SoiWatch 10 is te zien dat er in ieder geval een kristaloscillator in zit. Verder lijken er diodes, transistors, weerstanden en condensators in te zitten, maar dit is niet helemaal duidelijk. Het design doet in ieder geval vermoeden dat de werking van een 555 timer, die er niet in lijkt te zitten, na gebootst wordt om een signaal van 75 MHz te krijgen. Ondanks dat het niet helemaal duidelijk is hoe de Pin-Tech SoilWatch 10 in elkaar zit, lijkt deze sensor extreem snel, maar ook stabiel te werken.

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.

Bronnen en verder lezen