Soil Moisture Sensor

Автор: | 9 февраля 2021

Analog Capacitive Soil Moisture Sensor

Давно хотел попробовать подобные сенсоры, но начитался, что они подвергаются коррозии и даже что данные у них чуть лучше, чем от фонаря. А потом попал на вот этот датчик — Gravity: Analog Capacitive Soil Moisture Sensor — Corrosion Resistant.

Если быть точным, то я попал не на него, а на его клона от TZT. Чтобы подключить его к Малинке, нужно какой-то АЦП (аналого-цифровой преобразователь), например такой. Я подключал через более «крутую» версию, выполненную в виде готового модуля.

Кейс для Raspberry Pi Zero W у меня вот такой, в итоге подключение выглядит так:

Raspberry Pi Zero W with ADS1115

На самом коннекторе я переставил пины, чтобы VCC, GND и A0 были на соответствующих позициях. Обратите на это внимание при подключении.

В крышке пришлось сделать небольшой паз и удалить одну стойку, чтобы можно было закрыть корпус.

Raspberry Pi 0 Case

Получилось не супер идеально, но корпус можно закрыть. Сам корпус один из самых удачных, Малинку в таком корпусе можно повесить на шурупе или даже наклеить на двухсторонний скотч (нижняя часть корпуса без ножек, ровная поверхность). А можно наклеить магнитную полосу, вроде этой, тогда Малинку можно примагничивать к любой металлической поверхности.

Корпус в сборе:

Raspberry Pi Zero W

Когда корпус собран, можно переходить к подключению. Не торопитесь втыкать датчик в грунт, для начала нужно снять показания датчика на воздухе и в воде. Это будут две границы, между которыми и будете измерять относительную влажность грунта.

Вот здесь есть инструкция и пример кода для Ардуино. Для Малинки есть другая инструкция, но, скорее всего, вам придется устанавливать так же, как мне:

sudo apt-get update
sudo apt-get install git build-essential python-dev python3-setuptools python3-pip
git clone https://github.com/adafruit/Adafruit_Python_ADS1x15.git
cd Adafruit_Python_ADS1x15
sudo python setup.py install
cd ~/Adafruit_Python_ADS1x15/examples

Можно сразу запустить код из примера:

sudo python simpletest.py

Или использовать такой код:

# Plant Humidity
import time
import Adafruit_ADS1x15

adc = Adafruit_ADS1x15.ADS1115()

GAIN = 1

value = adc.read_adc(0, gain=GAIN)
print( value )
perc = (19040 - value) / 100
print( perc )

Данный пример выведет сначала числовое значение влажности, затем влажность в %. Я сначала запускал simpletest.py и измерил показания: 19040 — это значение, которое датчик выдает в сухом виде, 8075 — это значение, когда датчик погружен в воду почти до ограничительной линии. В грунте датчик вряд ли сможет достичь таких крайний показателей, поэтому разброс в ~10000 значений почти идеально подойдет для перевода в %. Но можно сделать и как в примере для Ардуино, где показания делятся на группы «сухо» (19040-15385), «влажно» (15385-11730) и «очень влажно» (11730-8075).

Добавить комментарий