В этой статье мы узнаем как сделать собственный измеритель электропроводности и солености почвы с помощью Arduino и датчика EC почвы. Электропроводность почвы (electrical conductivity, EC) является мерой количества солей в почве (соленость почвы). Это важный показатель здоровья почвы. Она влияет на урожайность, пригодность, доступность питательных веществ и активность почвенных микроорганизмов. Соленость является мерой растворимых солей в почве или воде. Молекулы соли состоят из катиона натрия, калия, кальция и аниона хлорида или сульфата.
Избыток солей препятствует росту растений, влияя на баланс почва-вода. Хотя электропроводности не обеспечивает прямого измерения определенных ионов или солевых соединений, но она коррелирует с концентрациями нитратов, калия, натрия, хлорида, сульфата и аммиака. Вот почему важно измерение электропроводности почвы и солености почвы. Электропроводность почвы можно измерить с помощью электродов, вставленных непосредственно в землю, или путем извлечения почвенной воды с помощью лизиметра.
В нашем проекте мы будем измерять электропроводность и соленость почвы с помощью нашего собственного самодельного измерителя на основе платы Arduino. Тип датчика электропроводности почвы, который мы будем использовать, — это JXCTIOT Soil EC Sensor. Датчик работает по протоколу Modbus. Используя определенную команду Modbus, мы можем запросить значение электропроводности и солености почвы с датчика.
Мы будем отображать значение электропроводности почвы и значение солености на 0,96-дюймовом OLED- дисплее.
Необходимые компоненты
- Плата Arduino Nano (купить на AliExpress).
- Датчик солености и электропроводности почвы (Soil EC Salinity Sensor).
- Модуль OLED дисплея SSD1306 128×64 с интерфейсом I2C (купить на AliExpress).
- Модуль Modbus MAX485 (купить на AliExpress).
- Блок питания 9-12 В.
- Макетная плата.
- Соединительные провода.
Реклама: ООО "АЛИБАБА.КОМ (РУ)" ИНН: 7703380158
Значение электропроводности и солености почвы
Электропроводность почвы (EC) — это способности почвенной воды проводить электрический ток. Это электролитический процесс, который происходит в основном через заполненные водой поры.
Катионы, такие как Ca2+, Mg2+, K+, Na+ и NH4+, а также анионы, такие как SO42-, Cl-, NO3 – и HCO3 – из растворенных солей несут электрические заряды. Электрические заряды отвечают за проводимость электрического тока. Таким образом, концентрация ионов определяет электропроводность почвы.
В сельском хозяйстве электропроводность используется в основном как мера засоленности почвы. Засоленность почвы — это мера минералов и солей, которые могут быть растворены в воде. Электропроводность выражается в сименсах на метр (См/м), тогда как соленость выражается в мг/кг .
Датчик электропроводности и солености почвы
Датчик электропроводности почвы JXCTIOT — это недорогой датчик электропроводности почвы для измерения электропроводности и солености. Он разработан в соответствии с отраслевыми стандартами, отличается высокой точностью, чувствительностью и долговечностью. Вы можете использовать этот датчик для оценки состояния почвы. Он может быстро проверить проводимость и соленость различных видов почвы. Существует несколько датчиков электропроводности почвы и солености. Но этот датчик является лучшим для практического применения.
Внутри датчика находится высококачественный чип. Чип имеет низкое энергопотребление, высокую чувствительность, а также высокую стабильность. Зонд датчика изготовлен с использованием аустенитной нержавеющей стали 316 в качестве сырья. Вот почему датчик имеет хорошую антикоррозийную стойкость, стойкость к электролизу, солевой и щелочной коррозии. Это обеспечивает длительную эксплуатацию почвы и подходит для различных типов почвы.
Вы можете использовать этот датчик в научных экспериментах, водосберегающем орошении, садоводстве, теплицах, сельском хозяйстве на открытом воздухе, садоводстве, гольфе и уходе за газоном. Датчик также лучше подходит для таких приложений, как лесное хозяйство, точное земледелие и другие профессиональные сценарии мониторинга окружающей среды. Вы можете использовать этот датчик электропроводности и проводимости почвы вместе с платой Arduino или любым другим микроконтроллером.
Особенности датчика
- Импортный высококачественный датчик и чип электропроводности почвы.
- Специально разработанный датчик с большим проникновением в почву.
- Уникальная технология датчиков с широким рабочим диапазоном.
- Высококачественный датчик солености почвы со стабильной чувствительностью.
- Портативная конструкция и простота тестирования.
- Низкое энергопотребление.
- Корпус IP68, с полной водонепроницаемостью.
Технические характеристики датчика
- Электропитание: 12-24 В постоянного тока.
- Выходной сигнал: Modbus RS485/4-20мА/0-5В/0-10В
- Диапазон рабочих температур: от -40℃ до 80℃
- Диапазон измерения электропроводности: 0-10000 мкс/см
- Разрешение проводимости: 10 мкс/см
- Время отклика: <1с
- Уровень защиты: водонепроницаемый корпус IP68
Распиновка датчика
Датчик имеет 4 контакта: VCC, GND, 485-A и 485-B. Датчик работает от напряжения 12 В-24 В. Вы не получите никакого выходного сигнала, если подадите напряжение ниже 12 В.
Схема проекта
Схема подключения датчика солености и электропроводности почвы к плате Arduino Nano с помощью модуля Modbus MAX485 приведена на следующем рисунке.
Подключите контакты R0 и DI модуля Modbus к контактам D2 и D3 платы Arduino с помощью программного последовательного порта. Аналогично, мы должны включить высокий уровень DE и RE модуля Modbus, что делается путем подключения их к контактам D7 и D8 платы Arduino. Датчик солености и электропроводности почвы имеет 4 провода. Коричневый - это VCC, которому требуется источник питания 12 В - 24 В. Вывод GND, который черного цвета, необходимо подключить к выводу GND Arduino. Подключите синий провод, который является выводом B, к выводу B MAX485. Также подключите желтый провод, который является выводом A, к выводу A MAX485.
0,96-дюймовый OLED-дисплей SSD1306 подключается по интерфейсу I2C. Подключите контакты VCC и GND OLED-дисплея к контактам 3,3 В и GND Arduino. Аналогичным образом подключите контакты SDA и SCL OLED-дисплея к контактам A4 и A5 Arduino. Вы можете следовать принципиальной схеме и собрать схему на макетной плате или изготовить печатную плату собственного дизайна.
Проект печатной платы для проекта
Если вы не хотите собирать схему на макетной плате и вам нужна печатная плата для проекта, то вот печатная плата для вас. Она разработана с использованием онлайн-инструмента EasyEDA. Передняя и задняя стороны печатной платы показаны ниже.
Файл Gerber для изготовления печатной платы вы можете скачать по ссылке ниже.
Команда Modbus для датчика солености и электропроводности почвы
Команды Modbus могут давать указания устройству Modbus:
1. Изменить значение в одном из его регистров, которое записывается в регистры катушки и хранения.
2. Прочитать порт ввода-вывода: прочитать данные из дискретных портов и регистров флагов;
3. Дать команду устройству отправить обратно одно или несколько значений, содержащихся в его регистрах флагов и хранения.
Команда Modbus содержит адрес Modbus устройства, для которого она предназначена (от 1 до 247). Только адресуемое устройство ответит и выполнит команду, даже если другие устройства ее получат.
Датчик солености и электропроводности почвы имеет 3 различных значения для считывания значений электропроводности и солености почвы. Вы можете получить адрес бита запроса из руководства по эксплуатации устройства Modbus.
Чтобы узнать больше о протоколе связи Modbus, вы можете воспользоваться следующими обучающими материалами:
- последовательная связь по протоколу Modbus RS-485 с Arduino (ведомой) - одна из лучших статей в сети по этой тематике;
- последовательная связь по протоколу Modbus RS-485 с Arduino (ведущей);
- считывание информации с датчиков в Arduino по протоколу Modbus.
Значение электропроводности почвы
Формат запроса для значения электропроводности почвы:
В ответ вы получите следующее:
Вы можете рассчитать проводимость почвы из полученного ответа. Например, если вы получили 5DC в качестве ответа, то значение EC почвы будет:
5DC H(шестнадцатеричное) = 1500 (десятичное) => Проводимость = 1500 мкс/см
Значение солености почвы
Формат запроса для значения засоленности почвы:
В ответ вы получите следующее:
Вы можете рассчитать соленость почвы из полученного ответа. Например, если вы получили 69 в качестве ответа, то значение солености почвы будет:
69 H(шестнадцатеричное) = 105 (десятичное) => соленость = 105 мг/л
Исходный код программы
Исходный код для сопряжения датчика солености почвы с платой Arduino приведен ниже. Вы можете использовать этот код для получения значения электропроводности почвы и значения солености почвы с помощью команды Modbus RTU. Вы можете отправить команду и получить значение в шестнадцатеричном коде. Чтобы получить данные об измеренном содержании питательных веществ в почве, шестнадцатеричный код необходимо преобразовать в десятичный.
Поскольку мы используем OLED-дисплей для отображения значения электропроводности и солености почвы, вам понадобится библиотека OLED. Загрузите следующую библиотеку OLED и добавьте ее в Arduino IDE.
1. Библиотека Adafruit SSD1306 : Загрузить
2. Библиотека Adafruit GFX : Загрузить
Вот полный исходный код. Скомпилируйте код и загрузите его на плату Arduino Nano.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
#include <SoftwareSerial.h> #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #define RE 8 #define DE 7 const byte ec[] = {0x01, 0x03, 0x00, 0x15, 0x00, 0x01, 0x95, 0xCE}; const byte salinity[] = {0x01, 0x03, 0x00, 0x14, 0x00, 0x01, 0xC4, 0x0E}; byte values[8]; SoftwareSerial mod(2, 3); #define SCREEN_WIDTH 128 // OLED display width, in pixels #define SCREEN_HEIGHT 64 // OLED display height, in pixels #define OLED_RESET -1 // Reset pin # (or -1 if sharing reset pin) Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); void setup() { Serial.begin(9600); mod.begin(9600); pinMode(RE, OUTPUT); pinMode(DE, OUTPUT); if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { Serial.println(F("SSD1306 allocation failed")); for (;;); // Don't proceed, loop forever } display.display(); delay(100); display.clearDisplay(); display.setTextColor(WHITE); display.setTextSize(1); display.setCursor(20, 30); display.print("Soil Analysis"); display.display(); delay(2000); } void loop() { /**************Soil EC Reading*******************/ digitalWrite(DE, HIGH); digitalWrite(RE, HIGH); delay(10); if (mod.write(ec, sizeof(ec)) == 8) { digitalWrite(DE, LOW); digitalWrite(RE, LOW); for (byte i = 0; i < 7; i++) { values[i] = mod.read(); Serial.print(values[i], HEX); } Serial.println(); } int soil_ec = int(values[3]<<8|values[4]); delay(1000); /**************Soil Salinity Reading*******************/ digitalWrite(DE, HIGH); digitalWrite(RE, HIGH); delay(10); if (mod.write(salinity, sizeof(salinity)) == 8) { digitalWrite(DE, LOW); digitalWrite(RE, LOW); for (byte i = 0; i < 7; i++) { values[i] = mod.read(); Serial.print(values[i], HEX); } Serial.println(); } int soil_salinity = int(values[4]); delay(1000); Serial.print("Soil EC: "); Serial.println(soil_ec); Serial.print("Soil Salinity: "); Serial.println(soil_salinity); display.clearDisplay(); display.setTextSize(2); display.setCursor(0,10); display.print("EC:"); display.print(soil_ec); display.setTextSize(1); display.print(" us/cm"); display.setTextSize(2); display.setCursor(0,40); display.print("SL:"); display.print(soil_salinity); display.setTextSize(1); display.print(" mg/L"); display.display(); delay(2000); } |
Тестирование работы проекта
После загрузки кода на плату Arduino Nano OLED-дисплей инициализируется вместе с датчиком. Датчику потребуется некоторое время для стабилизации, и показания могут быть неверными в течение нескольких секунд.
После стабилизации датчика вы можете окунуть его в почву, чтобы получить показания электропроводности и солености почвы. На OLED-дисплее отобразится значение электропроводности в микросименсах на сантиметр (us/cm) и значение солености в миллиграммах на килограмм (мг/кг).
Аналогично поместите датчик в разные образцы почвы. Вы увидите изменение значений электропроводность/соленость в зависимости от типа почвы.