Наконец я воплощаю эту задумку. Я собираюсь сделать датчик влажности почвы на базе Arduino, с ЖК-дисплеем 16х2, часами реального времени (показывают время даже при отключенном питании), датчиком температуры и SD-картой (дата-логгером).
Он может быть полезен в биотехнологических/ биологических/ ботанических проектах или проектах по сохранению растительности.
Суть проекта заключается в том, что я собираюсь сделать на базе Ардуино индикатор влажности почвы для комнатных растений, который можно собрать стационарным или портативным. Он сможет проводить измерения каждые Х миллисекунд, в зависимости от настроек.
Сделать зонды более долговечными можно путем пускания тока на короткий промежуток времени (дважды за 30 миллисекунд в моем случае) и оставлять их отключенными на определенное время (например, 1 800 000 миллисекунд = (30x60x1000) = 30 минут). Чтобы задать это значение, нужно изменить задержку в самом конце файла «project.ino».
Раз у нас имеется датчик, проводящий измерения каждые Х миллисекунд, нам нужно установить предельные значения. Значения будут меняться от пиковых 1000 до средних 400, чем ниже значение, тем ниже сопротивление. Так как зонды измеряют сопротивление между двумя штырями, нужно взять значение 400, или близкое к нему, за 100%-ную влажность. А большее значение сопротивления, 1000 или выше, за уровень влажности 0%. Значит, нам нужно установить соответствие значений 1000 – 400 как 0 – 100%.
Ниже мы рассмотрим, как это сделать своими руками.
Шаг 1: Собираем все необходимые материалы
Вам понадобятся:
- Arduino Uno (например)
- часы реального времени DS3231 с батарейкой
- MicroSD + SD адаптер или SD-карта
- SD-модуль
- ЖК-дисплей 16х2
- датчик уровня влажности почвы YL-69
- провода
- потенциометр, я использовал на 47 кОм, но лишь потому, что не нашел на 10 или 20 кОм в своей коллекции
- макетная плата
Все эти компоненты вполне доступны и совсем недороги.
Шаг 2: Соединяем компоненты
Теперь нужно соединить компоненты та, как показано на картинке. Из-за того, что модели ЖК-дисплеев и часов реального времени различаются у каждого производителя, при соединении проводов сверяйтесь с инструкцией, чтобы быть уверенным, что все соединения верны.
ЖК-дисплей
На схеме и на картинке показано корректное подключение дисплея (с названиями выводов).
Схема подключения:
- VSS Ground, рельса GND на макетной плате
- VDD рельса +5V на макетной плате
- V0 средний штырек потенциометра (регулируемый вывод)
- RS пин 10 на плате Arduino
- RW земля, рельса GND на макетной плате
- E пин 9 на плате Arduino
- D0 оставляем не соединенным
- D1 оставляем не соединенным
- D2 оставляем не соединенным
- D3 оставляем не соединенным
- D4 пин 7 на плате Arduino
- D5 пин 6 на плате Arduino
- D6 пин 5на плате Arduino
- D7 пин 3на плате Arduino
- A рельса +5V на макетной плате
- K земля, рельса GND на макетной плате
Модуль SD-карты
Схема подключения:
- GND GND на макетной плате
- +5V рельса +5V на макетной плате
- CS пин 4 на плате Arduino
- MOSI пин 11 на плате Arduino
- SCK пин 13на плате Arduino
- MISO пин 12 на плате Arduino
Датчик YL-69
Мы будем подключать только три вывода:
- VCC пин 2 на плате Arduino
- GND рельса GND земли на макетной плате
- A0 аналоговый вывод A0
Вывод D0 мы использовать не будем, это цифровой вывод, в нашем проекте он не нужен.
Часы реального времени DS 3231 с батарейкой
Батарейка нужна, чтобы часы продолжали работу, когда отключены от сети. Мы будем использовать следующие выводы:
- SCL SCL на плате Arduino
- SDA SCA на плате Arduino
- VCC рельса +5V на макетной плате
- GND рельса GND на макетной плате
Потенциометр
Нужен, чтобы регулировать напряжение, идущее на ЖК-дисплей. Если на дисплее нет никаких цифр, а вы уверены, что они должны быть, попробуйте покрутить потенциометр. Если все подключено правильно, цифры появятся.
Шаг 3: Устанавливаем время
При первом включении часов реального времени нужно их настроить. Потом этого делать не придется, но первая настройка имеет критическое значение. Для настройки часов вам будет нужна библиотека Sodaq DS3231.
Можно добавить ее через опцию «добавить библиотеку» в программе Arduino. Кликните «Добавить библиотеку» и выберите тип «3231», и вы ее увидите. Теперь ее нужно установить.
Если установочного файла нет, вы можете загрузить его из интернета.
Далее загрузите скетч «исправить/правка» и измените следующие значения:
«ДатаВремя» (2011, 11, 10, 15, 18, 0, 5)
в следующем порядке:
год, месяц, число, час, минуты, секунды и день недели (от 0 до 6)
установите текущие значения.
Установка времени завершена.
Шаг 4: Код
После того, как все соединения сделаны, нужен код.
Поэтому я сделал отдельный файл со скетчем и просто огромным количеством подробных комментариев в каждой секции действий. Так как в часах реального времени DS3231 есть функция измерения температуры, я решил использовать и ее.
Вам нужно установить еще одну библиотеку, «DS3231.rar».
Стандартная версия проекта сделана для работы с монитором последовательного порта и SD-картой, это значит, что без подключения последовательного монитора она просто не будет работать. Это не удобно, особенно если вы хотите сделать портативный датчик. Поэтому я написал другой скетч, не требующий подключения последовательного монитора и вообще не использующий его. Это сильно облегчает кодирование. В первом файле находится код для портативной версии, которая не использует последовательный порт.
Важная часть кода – строки, которые обозначаются тремя буквами в правом нижнем углу дисплея:
- «I» от «initialized», значит, что SD-карта присутствует
- «E» от «Error», значит, что SD-карта отсутствует
- «F» от «False», «Ложь», значит, что файл недоступен, хотя карта присутствует
Эти три буквы прописаны, чтобы помочь вам диагностировать проблемы/ошибки, если они появятся.
ФайлыШаг 5: Выбор источника питания
Вам нужен подходящий источник питания, его выбор зависит от того, как вы планируете использовать прибор в дальнейшем.
Вы можете использовать:
- стандартный блок питания
- 9В аккумулятор с проводным подключением/с проводами для подключения
Выбор питания очень важен для реализации проекта, так как если вы хотите сделать прибор стационарным, лучше будет использовать блок питания. Но если вы хотите сделать портативный измеритель, то ваш единственный вариант – аккумулятор.
Можно использовать маленькую хитрость – погасить дисплей, если он в данный момент не нужен. Для этого используйте/посмотрите/прочитайте сокращенный код, чтобы понять, как погасить дисплей. Я этого не делал, так как решил, что мне это не нужно. Возможно, такая опция нужна в портативной версии измерителя, я же собрал стационарный.
Шаг 6: Выбор SD-карты
Оказалось, что не все SD-карты работают с моим SD-модулем.
Исходя из своего жизненного опыта, я могу с уверенностью ответить на два вопроса:
- А они все подходят для измерителя? – нет, не все. Некоторые просто не взаимодействуют с определенным модулем. Оказалось, что все карты, не взаимодействующие с моим модулем, стандарта SDHC. Стандартные и микро-SD карты работают нормально, другие не работают совсем или работают только для чтения (данные не записываются) и настройки даты и времени слетают при каждом отсоединении карты от модуля.
- Есть разница в использовании SD-карты или микро SD-карты с адаптером? – нет, работают одинаково.
На этом я завершаю свое руководство по этому проекту.
Шаг 7: Продолжаем!
Я продолжаю дорабатывать свой проект, и решил сделать для измерителя деревянный корпус, и еще печатную плату.
Шаг 8: Экспериментальная печатная плата (не завершено, может не работать)
Для соединения всех компонентов с использованием минимального числа проводов я решил использовать печатную/макетную плату. Я так решил потому, что плат у меня много, а проводов мало. Смысла покупать новые макетные платы, когда я могу сделать печатную, я не вижу. Так как плата у меня односторонняя, провода для соединений с нижней стороной все-таки будут нужны.
Прикладываю файлы с описанием печатной платы, файл с расширением fzz (проектный файл приложения Fritzing), и .rar-архив экспортированной в PDF схемы проекта (обычная, с отмеченными соединениями и без них, она нужна из-за того, что плата односторонняя) и черно-белая схема для печати.
ФайлыШаг 9: Печатная плата Arduino Nano
Также я сделал проектную печатную плату для Arduino Nano. Микропроцессор и модули платы должны быть соединены надлежащим образом, дважды все перепроверьте.
ФайлыШаг 10: Корпус из фанеры
Для нашего проекта я решил сделать деревянный корпус из фанеры, с вырезами под дисплей и сенсор на правой стенке корпуса. Сначала вы должны решить какого размера корпус вам нужен. Я использовал плату 15х10,9 см, так что мне нужно сделать внутренний размер чуть больше этих размеров.
Шаг 11: Завершение проекта
В завершение проекта прикладываю фото окончательной версии проекта.