cats_shadow: (Default)

Date/Time: 2017/03/11 02:59:52 Stage: 0

Date/Time: 2017/03/11 02:59:53 Stage: 1

Date/Time: 2017/03/11 02:59:58 ADC data: 2 2 8 2 8 2 8 2

Date/Time: 2017/03/11 02:59:58 Stage: 2

Date/Time: 2017/03/11 02:59:58 Open valves: 3 5 7

Date/Time: 2017/03/11 03:00:00 Cycle is going!

Date/Time: 2017/03/11 03:00:01 Close valves: 3 5 7

Date/Time: 2017/03/11 03:00:01 Stage: 3

Date/Time: 2017/03/11 03:00:01 Water level sensor power ON

Date/Time: 2017/03/11 03:00:04 Water level sensor power OFF

Date/Time: 2017/03/11 03:00:04 Stage: 4

Date/Time: 2017/03/11 03:00:04 Water pump power ON

Date/Time: 2017/03/11 03:00:05 Water pump power OFF

Итого: в первом приближении алгоритм управления работает. Осталось приживить управление ультразвуковым датчиком для контроля уровня воды в накопительном баке и вывод состояния на внешний сервер (ну и чтение управления с него).

Как приползут от китайцев клапаны, насосы и драйверы для них — можно будет собирать полномасштабный макет.

А ещё подумать — нужна ли алфавитно-цифровая индикация, или ну её и просто натыкать светодиодов. :)

И да. Пора схемку рисовать и плату разводить.

Комментировать в исходнике

cats_shadow: (Default)

Вторая итерация «мозгов» автополивалки.

ESP8266 (NodeMcu Lua), сдвиговый регистр 74HC595.

Умеет синхронизировать часы по NTP, опрашивать датчики влажности по расписанию (cron) или по команде (нажатию кнопки). Отображает на индикаторе время начала опроса и значения АЦП (напряжения на аналоговом входе) в процессе опроса датчиков.



Комментировать в исходнике

cats_shadow: (Default)
Продолжаем разговор, начатый в прошлый раз.
Дано:
  • надо обеспечить
    • дискретные выходы — 25 шт
      • управление датчиками влажности — 10 шт.
      • управление клапанами — 10 шт
      • управление датчиками расстояния — 2 шт.
      • управление насосом — 1 шт.
      • управление индикатором — 2 шт.
    • дискретные входы — 3 шт
      • датчики расстояния — 2 шт
      • кнопка — 1 шт
    • аналоговый вход — 1 шт
  • имеется на контроллере
    • GPIO — 11 шт.
    • аналоговый вход — 1 шт.

Итого наблюдается явная недостача дискретных входов/выходов.
Вопрос коллеги «А чего ты контроллер побольше не возьмёшь?» - был отметён, как неконструктивный. :)
Первая мысль, организовать 4-х битовую адресную шину, уткнулась в наличие двоичных дешифраторов исключительно с инверсными выходами, т.е. в необходимость дополнительных инверторов там, где рассчитывал обойтись без них.
Раз с параллельностью нам облом, придётся переходить на последовательную передачу. То есть на сдвиговые регистры. Группируем сигналы по назначению и считаем.
Статические выходные сигналы не критичные по времени - 21 шт (управление клапанами, датчиками влажности и насосом). Эти выведем в сдвиговый регистр - 3GPIO.
Сигналы, критичные ко времени - 7GPIO (датчики расстояния, кнопка, индикатор).

Итого требуется всего 10GPIO и сдвиговый регистр на 3 байта. Считаем, что задача решена.

Комментировать в исходнике

cats_shadow: (Default)

Давно заметил, что поливать оконную растительность летом — та ещё задача. Шансы пересушить велики весьма. Вот и возникла мысль об автоматизации этого процесса, благо сейчас комплектующие практически любые в доступности.

Эскиз — на рисунке. Вода из основного бака (на полу) будет закачиваться в расходный (под потолком). Оттуда самотёком будет распределяться по цветочным горшкам.

Управление микроконтроллером.

На входе: уровни воды в основном и расходном баках — дискретные сигналы, степень влажности грунта в горшках — аналоговые сигналы.

На выходе: управление насосом (закачка воды в расходный бак) и электромагнитными клапанами дозаторов (собственно полив) — дискретные сигналы. Сброс информации о текущем состоянии системы на сервер.

Пока в планах использовать в качестве контроллера или Arduino, или ESP8266 (NodeMCU Lua). В последнем случае имеем «творческую задачу» впихнуть всё (12 датчиков, 10 клапанов, насос, индикацию) в 8 GPIO и 1 ADC. :) Зато в базе уже есть WiFi контроллер со всей обвязкой. В случае с Arduino потребуется дополнительный шилд или тот же ESP8266.

Датчики влажности — обычные резистивные — два электрода в землю.

Датчики уровня жидкости — ультразвуковые типа HC-SR04.

Отображение на двустрочном индикаторе типа 1602 (подключение по I2C).

Пока в макетируется первая серия — опрос датчиков влажности по таймеру или по кнопке, отображение списка «пересохших», в зависимости от требуемой влажности для конкретного растения.

Уже работает опрос одного датчика влажности с подачей на него питания в момент опроса, и отображение показаний на индикаторе. Дальше надо «решать задачу на впихивание». :)



Комментировать в исходнике

cats_shadow: (Default)

В процессе реализации одного домашнего проекта возникла идея желательности обмена данными сервером. Полез изучать «новые технологии» — NodeMCU Lua на базе ESP8266.

и плата «сенсоров» для неё

На первый взгляд — та же Arduino почти. Входов/выходов меньше (это минус), WiFi в комплекте (это плюс). И даже из Arduino IDE программируется.

Поморгал светодиодом как из Lua, так и в arduino-style. Lua — штука забавная, может и удобнее чуть будет, чем то, что под Arduino заточено.

Кстати, если скетч из Arduino IDE залить, то потом придётся обратно прошивку с Lua заливать. Или-или, но ещё перепроверю.

Не без «ложки дёгтя». Часть библиотек просто не работает (и честно предупреждают об этом). Не смог пока подключить дисплей 1602 по I2C, ни в Lua, ни библиотекой Arduino. Хотя скетч сканера устройств на шине его находит по правильному адресу.

P.S. Попутно попался вариант платы на этом же кристалле в форм-факторе Arduino Uno



Комментировать в исходнике

July 2017

S M T W T F S
      1
234567 8
910 1112 131415
16 171819202122
23242526272829
3031     

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 23rd, 2017 04:50 am
Powered by Dreamwidth Studios