Фиаско. История одной самоделки IoT |
||
МЕНЮ Искусственный интеллект Поиск Регистрация на сайте Помощь проекту ТЕМЫ Новости ИИ Искусственный интеллект Разработка ИИГолосовой помощник Городские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Техническое зрение Чат-боты Авторизация |
2018-10-15 14:15 Большинство статей пишется по принципу «Я/мы это сделал/и, глядите как круто!». Эта же публикация посвящается провальному проекту. Добро пожаловать под кат…
Это продолжение моей публикации Разработка умных устройств на примере контроллера теплого пола на ESP8266 Начнем издалека
Я живу в небольшом доме, который построен по моему проекту. Планировка — евротрешка, коридор, кухня-гостиная на первом этаже, с/у, детская и спальня на втором. Из нестандартного — стены арболит, фундамент УШП, отопление исключительно ТП. При этом перекрытия деревянные, на втором этаже плавающий пол, ТП — в плите ГВЛ. На первом этаже 3 петли труб ТП (фактически одно помещение), на втором — тоже три, но каждая петля отвечает за одно помещение (спальня, с/у, детская), За тепло отвечает настенный газовый котел 14кВт. Управляет котлом китайский программируемый на неделю беспроводной термостат. В каждый день недели у него четыре периода, в каждый период можно задать нужную температуру. Мозги на батарейке, реле спрятано. Работает отлично. Но мне часто нужно больше чем есть. Захотел я покомнатное регулирование температуры. Посмотрел я предлагаемые решения, ничего мне не понравилось. И попалось мне на глаза слово «Ардуино». А по специальности я — программист. И понеслось… Железо
В железе я не силен. Макетную плату спаять — это верх моих способностей. Но Ардуино — такая простая штука, что я понял — даже с моими познаниями электроники я способен сделать контроллер температуры в доме, который меня устроит. Датчики температуры
У меня не любовь к проводам в интерьере. Я пытаюсь их исключить или скрыть, если исключить не получается. И несколько извилистым путем я пришел к использованию в качестве датчиков температуры в комнатах использовать беспроводные датчики от китайских метеостанций. Датчики долго работают от батареек и вещают на частоте 433мГц. Вполне симпатичные, можно выбрать разного цвета, с экраном и без экрана. Забегая вперед скажу — каждый производитель метеостанции изобретает свой протокол передачи данных датчиком. В процессе экспериментов я анализировал протоколы 5 типов датчиков — у них у всех разные форматы передачи данных. Я разработал библиотеку, которая принимает данные от 4 типов датчиков. С пятым связываться не стал — его протокол не похож на остальные отсутствием границ пакетов. Основным инструментом анализа данных стал китайский логический анализатор. Без подобного инструмента выполнить анализ протоколов — практически не реально. Стоит совсем немного, пользоваться просто — рекомендую приобрести всем ардуинщикам. Сигнал с данными отладки Приведу примеры датчиков и их особенности. 3...6 каналы — данные для отладки
В итоге блок приемника реализовал на Arduino Pro Mini c отдачей данных по i2c slave. Arduino Mega
Это первая платформа, на которой я сделал контроллер. Мой контроллер имел командный интерфейс, управлялся посредством вводимых через UART команд. На том этапе, я планировал сделать WEB-интерфейс на ESP8266 и общение ее с Мегой по UART. У меня есть плата Mega от Robotdyn, совмещенная с ESP8266 и вот на этой плате я планировал построить свою разработку. Особое достоинство платы — большое число внешних портов. Но в процессе знакомства с ESP8266 я понял, что этот небольшой чип вполне способен совместить в себе функции контроллера и интерфейса. ESP8266
Я использовал вариант платы WeMos D1 mini, у нее небольшие размеры и достаточное для меня количество выводов — с учетом использования расширителя портов. Для этой платы есть огромное количество библиотек. Например me-no-dev/ESPAsyncWebServer — отличная библиотека web-сервера с поддержкой web-сокетов. Собрал я контроллер на этой плате. Разработал web-интерфейс. Все красиво работает. Но по непонятной мне причине — аптайм не больше суток. Или я что-то сделал криво, или какая-то из используемых библиотек кривая. К тому же, есть ограничение на 5 одновременных подключений. При превышении — рестарт или даже зависание (не смотря на имеющийся watchdog. с зависаниями я поборолся использованием внешнего watchdog'а). С учетом того что мой web-интерфейс состоит из почти десятка файлов, а браузеры загружают страницы в 5 параллельных потоков — добиться рестарта элементарно. Для себя я решил — эта плата может использоваться только в качестве клиента. Стал искать другие решения. Скрины интерфейса ESP32
Это вроде как наследник ESP8266. В ESP32 всего больше — частоты, памяти, ног, … Но вот беда — библиотека me-no-dev/ESPAsyncWebServer на ней не работает в плане web-сокетов. Совсем. Вылетает. Что-то связанное с многопоточностью. Другой библиотеки web-сервера с поддержкой web-сокетов я не нашел. SOC
На данном этапе я принял решение использовать плату с linux — ничего более подходящего не придумал. Мои требования к плате. Вроде их не много:
Orange Pi i96
Данная плата подходила по всем параметрам — нет видео-выхода, WiFi, встроенная flash память, слот SD карты. Можно поставить Ubuntu или DietPi на встроенную память. Но беда этой платы — ее ПО. Нельзя сделать точку доступа. Ну а самая большая проблема — при рестарте меняется MAC адрес и ничего с этим сделать не получилось. В топку. (На момент написания статьи, на 4pda, в ветке посвященной аналогу этой платы (2g IOT) появилось сообщение о том что возможно победить смену MAC) Onion Omega 2+
Шикарная документация. С прошивкой из коробки все завелось, экран не нужен, UART не обязателен. SSH по-умолчанию включен. Node.js поставилось (версии 4.х, но мне не принципиально). Поставились (с помощью бубна) библиотеки sqlite и i2c для Node.js. Интерфейс в интерьере Логика контроллера Я уже описывал архитектуру ПО контроллера — она не изменилась (т.е. управление текстовыми командами, передаваемыми по web-сокету). Web-интерфейс перекочевал с ESP8266 c косметическими изменениями. Многие процедуры/функции кода контроллера были просто транслированы с С++ на JS. Другое дело, что наличие linux (OpenWRT) дало мне возможность использовать SQL базу данных — sqlite. Таким образом всю логику я организовал на SQL запросах. Это фактически мой первый опыт работы с sqlite. Особенно мне понравилась возможность использования in-memory базы данных — я все временные и текущие данные расположил в этой базе (например — данные датчиков, данные о текущей требуемой температуре, ...). Исходники Я обычно делюсь идеями, а не исходниками. Мне кажется это стимулирует умственную активность, мою и читателей. Хотите получить исходники — пишите в личку. Сборка Собрал я все в железе, расположил в коробочке. Далее — ресурсные испытания. После недельного аптайма — я решил что тест пройден. Можно инсталлировать. Коробочка Инсталляция
Этот этап прошел весьма успешно. Повесил коробочку рядом с коллектором, установил и подключил термоголовки. Я очень порадовался своей идее все данные, настройки и параметры хранить в базе данных — я на лету смог сконфигурировать соответствие реле и зон, таким образом, который не планировался, а именно — три реле на одну зону, а все остальные реле — передвинуть (изначальная идея была одна зона — одно реле). В проекте было заложено использование набора сервисных датчиков DS18B20, для контроля температуры теплоносителя на подаче, в обратке каждой петли теплого пола, и общая температура обратки — эти датчики также были успешно подключены и настроены (вся настройка — указать понятное наименование датчика). Подключил реле котла. Запуск
Контроллер заработал как планировалось. Для теста я решил чуть поднять температуру в одной из комнат на втором этаже. Котел стал перегреваться и отключаться. И тут пригодились сервисные датчики. Оказалось, что температура воды на выходе из петли этой комнаты всего на пару десятых долей градуса меньше чем на входе! Вода не остывает! Это значит, что тепло она не отдает. А во всем доме тепло при любой температуре за бортом (цель была чуть понизить температуру на втором этаже). Значит все тепло дает первый этаж, а ТП на втором этаже еле греет пол. Как следствие — покомнатное регулирование отопления в таких условиях не возможно. Заключение
Таким образом, влияние физики и конструктивных особенностей моего дома поставили крест на моей разработке. Не смотря на то, что сам контроллер работает отлично, в системе отопления моего дома я применить его не могу. Возможно я сделаю ему downgrade, чтобы он управлял климатом в доме аналогично китайскому термостату — по данным одного датчика, но пока не вижу смысла. Вместе с тем, что проект в целом не удачен, в процессе разработки я познакомился со многими технологиями, с которыми ранее был практически незнаком:
Таким образом я на неудавшемся проекте получил большой опыт, который возможно пригодится на других проектах. P.S. Идеальная плата для DIY В процессе написания статьи обнаружилась еще одна неприятность с Omega-2 — модуль стал зависать. Жестко, ресет не помогает, только отключение питания. В чем проблема — пока не знаю. Может не нравится повышенное питание — сейчас ему подается 3.8В. Попробую заменить модуль питания. Не смотря на то, что проект не выполняет своих функций, пока что оставлю его в режиме термометра (как говорится, что на Ардуино не делай — получится метеостанция). Но в любом случае, тема мне интересна, я хочу добиться 100% доступности системы 24/7. Если замена блока питания не поможет, попробую систему LinkIt Smart 7688. Она вроде аппаратно идентична Омеге. Может быть будет более стабильна. Источник: habr.com Комментарии: |
|