quarta-feira, 9 de março de 2022

Soil Moisture Sensor ou higrômetro DIY

O sensor de umidade do solo comercial mais conhecido para embarcados é simplesmente um divisor de tensão resistivo.



Poucos sabem, mas podemos fazer nosso próprio sensor de umidade do solo DIY, vejamos:


Fonte: O Autor

Fonte: O Autor

Com relação ao Firmware, utilizei os seguintes códigos:

int sensorPin = A0;

int sensorValue;

void setup() {

  // put your setup code here, to run once:

  Serial.begin(115200);

}


void loop() {

  sensorValue = analogRead(sensorPin);

  delay(1000);

  Serial.println(sensorValue);

}


Com base nisso, podemos construir um sensor de umidade do solo muito simples, precisamos apenas de uma pequena protoboard, fios e um resistor de 10KOhms  (Ainda sim utilizaria um conector sindal para separar os terminais, e uma sonda metálica mais rígida (como um garfo) como terminais do sensor).

Segundo Rovai (2016), a equação para o calculo da tensão se dá:

Vin = R2 / (R1 + R2) * VCC ou Vin / VCC = 10K / (R1 + 10K) * 100 [%]

Caso queira entender matematicamente:

Calculando Divisor de tensão - KhanAcademy


Seguindo o circuito deste Divisor de tensão, chegamos ao sensor DIY da foto abaixo que foi construído por Michele Meattini, não se esqueça de conectar os terminais do lado direito, portanto, 1 com GND, o 2 com 5v e o 3 em  A0.



Obs: Apenas certifique-se de que o a tensão do VCC vá ser 5V, essa tensão pode variar o valor final do resultado, cuidado.

Outra coisa importante é... não ficar com o sensor ligado o tempo todo, mesmo os sensores comerciais acumulam cargas com o tempo, ocasionando o acumulo de pequenos erros na leitura (ligue o sensor como ligaria uma LED esporadicamente).

Uma maneira de fazer isto descrito acima é alimentar o sensor como é alimentado uma Led, dessa forma, ao invés de alimentar na porta de 5V, alimente em outra porta GPIO, como por exemplo, a porta 12.

int sensorPin = A0;

int sensorValue;

void setup() {

  // put your setup code here, to run once:

  Serial.begin(115200);

  pinMode(12, OUTPUT);

}


void loop() {

  digitalWrite(12, HIGH);   // turn the LED on (HIGH is the voltage level)

  delay(1000);                       // wait for a second

  sensorValue = analogRead(sensorPin);

  Serial.println(sensorValue);

  delay(1000);

  digitalWrite(12, LOW);    // turn the LED off by making the voltage LOW  

}

ROVAI, Marcelo. ArduFarmBot: Controlando um tomateiro com a ajuda de um Arduino e Internet das coisas (IoT). 2016. Disponível em <https://mjrobot.org/2016/09/02/ardufarmbot-controlando-um-tomateiro-com-a-ajuda-de-um-arduino-e-internet-das-coisas-iot/>. Acesso em 08 marc. 2022.

Nenhum comentário:

Postar um comentário