cats_shadow: (Default)

Прототип «взлетел».

Пока один датчик/клапан. Собирать полную версию на беспаечном макете — погрязнуть в сути радиотехники, которая — наука о контактах. :)

Базовый алгоритм работает, но все настройки — в коде.

В планах: ночной режим (нечего щёлкать клапанами по ночам); обратная связь через web-интерфейс (настройка параметров, отображение текущего состояния).

P.S. Их Котейшество решили, что это новая хайтек-котопоилка :)



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

cats_shadow: (Default)

Прототип «взлетел».

Пока один датчик/клапан. Собирать полную версию на беспаечном макете — погрязнуть в сути радиотехники, которая — наука о контактах. :)

Базовый алгоритм работает, но все настройки — в коде.

В планах: ночной режим (нечего щёлкать клапанами по ночам); обратная связь через web-интерфейс (настройка параметров, отображение текущего состояния).

P.S. Их Котейшество решили, что это новая хайтек-котопоилка :)



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

cats_shadow: (Default)

«Не приспособлены мы, кролики, для лазания!» или «Когда у общества нет цветовой дифференциации штанов, то нет цели! А когда нет цели…» :)

Похоже, что не заточен мой мозг под Lua. Или Lua не заточен на мою задачу, хотя есть вкусняшки типа удобной работы с сетью и типа «event-driven». Но нет. Переписал прошивку поливалки в Arduino IDE на тамошнем С-образии.

Насколько оно таки понятнее и привычнее. Запустил петлю, дёрнул прерывание... :)

P.S. Почти вся комплектуха приехала. Осталось дождаться макеток, и можно паять. Собирать проводками на беспаечном макете — совсем совсем клубок будет ненадёжный. И не отладиться будет нормально.



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

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)

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

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

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

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

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

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

%)

Mar. 11th, 2017 02:20 am
cats_shadow: (Default)

Разбираюсь с Lua. :)

Вопрос — что курили авторы языка остаётся открытым...Как минимум LSD там точно было :)

Терпеть ненавижу языки, в которых переменная может хранить то, что захотела левая задняя нога, начиная от байта, заканчивая таблицей которая сама может состоять из таблиц чего ни попадя вперемешку (в том числе и функций, и неявным списком возвращаемых значений этих функций, вычисляемых по ходу дела).

Вот точно по цитате: «Когда у общества нет цветовой дифференциации штанов, то нет цели! А когда нет цели — нет будущего!».

Строгая типизация переменных и синтаксис рулят в плане понимания того, что происходит в коде. :)



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

cats_shadow: (Default)

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

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

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



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

cats_shadow: (Default)

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

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

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



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

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

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

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

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

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)

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

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

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

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

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

Пока в планах использовать в качестве контроллера или 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



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

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



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

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 байта. Считаем, что задача решена.

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

April 2025

S M T W T F S
  12345
6 789101112
13141516171819
20212223242526
27282930   

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 14th, 2025 11:08 pm
Powered by Dreamwidth Studios