Современное животноводство — очень специфический бизнес. Главная его особенность заключается в том, что он связан с непрерывными биологическими циклами животных. Цена любой ошибки здесь чрезвычайно высока.
Сбалансированный и вовремя предложенный рацион — один из основных факторов, влияющих на увеличение надоев и прирост поголовья, а значит, и на рентабельность всего производства. От грамотного управления кормовым столом напрямую зависит эффективность кормления и здоровье животных. Это сложный технологический процесс, который подчиняется жестким нормативам. Так, крупный рогатый скот кормят 2-3 раза в сутки в зависимости от типа кормления и возраста животных. Раздача кормов поголовью, которое находится в одном помещении, не может продолжаться больше 20–30 минут. Нужно точно соблюдать дозировку: погрешность для стебельчатых кормов допускается в пределах ±15%, для концентратов — ±5%. Потери кормов, которые можно собрать после раздачи, не могут превышать 1% от их общего количества. Невозвратимые потери не допускаются.
Вот только на практике четко следовать нормативам не так просто: человеческий фактор ставит стабильную раздачу корма под большой вопрос. Рационы на кормовом столе зачастую не соответствуют рецептуре, составленной зоотехником. Бывает и так, что составленный, приготовленный и полученный животными — это три абсолютно разных рациона. График подачи корма также нарушается: человек не успел, где-то задержался, заболел, его некому было заменить и т.д. Это приводит к нарушению биологического ритма у животных и, как следствие, к снижению их продуктивности.
На процесс приготовления и раздачи корма приходится до 70% общих затрат труда: это один из самых трудоемких технологических процессов в животноводстве. Можно ли освободить человека от рутинной работы, гарантируя при этом, что животные будут обеспечены кормами точно по заданной рецептуре и строго в определенное время? Да, если доверить процесс кормления автоматике.
Рис. 1. Молочное скотоводство занимает лидирующие позиции по внедрению робототехники
Эволюция процесса кормления
Первым шагом к автоматизации кормления могут считаться стационарные смесители, которые измельчают и перемешивают грубые корма. Надежные и «работящие», они экономят массу времени и избавляют от тяжелого труда. Применяют стационарные смесители главным образом в небольших хозяйствах. Раздача из них может происходить либо вручную (полученная масса перегружается в тракторный прицеп и раздается с помощью вил и лопат), либо посредством раздающих корм механизмов.
Следующая ступень — более современные мобильные смесители-кормораздатчики. Они измельчают загружаемые из силосной траншеи объемистые корма, перемешивают его с концентратом и сами раздают животным полученную массу. Такие смесители могут быть прицепными или самоходными. Они могут использоваться как при полносмешанном и частично смешанном рационе, так и при раздельном кормлении концентратом. Встроенные электронные весы позволяют мобильным кормораздатчикам точно соблюдать дозировку.
Сегодня более 50% всех скотоводческих хозяйств в РФ используют мобильные смесители-кормораздатчики. Большинством предприятий предпочтение отдается прицепным моделям, которые на порядок дешевле самоходных: если прицепной кормораздатчик обходится в среднем в €20 тысяч, то за самоходный надо будет выложить около €250 тысяч.
Главным достижением науки и техники в области оптимизации кормления сельскохозяйственных животных на сегодняшний день может считаться полная автоматизация кормления, когда все процессы — отбор, взвешивание, дозирование, смешивание и подача кормов — происходят без участия человека.
Подвесные кормовагоны
К последнему поколению систем кормления относятся, например, системы подвесных кормовагонов. Лидирующие позиции в их разработке, производстве и внедрении занимают фирмы Pellon (Финляндия), DeLaval (Швеция) и Mullerup (Дания). В России такое оборудование впервые было установлено в 2012 году в молочном хозяйстве «Дашенька» в поселке Ротово Псковской области.
Подвесной кормовагон передвигается по смонтированному на потолке коровника монорельсу параллельно кормовому столу, рассчитывает компоненты кормовой смеси, дозирует их и раздает готовый корм в соответствии с указаниями программы. То есть выполняет действия, аналогичные действиям мобильного миксера-кормораздатчика, только обходится при этом без человека.
Единственное, что требуется здесь от человека — это обеспечить кормами складские помещения, откуда их будет отгружать автоматика. А еще человек нужен для того, чтобы запрограммировать систему: ввести в нее набор ингредиентов, состав, нормы, дозировку и т.д. Иначе говоря, ей нужно один раз подробно «объяснить», что от нее требуется, а далее весь процесс осуществлять и контролировать будет уже она сама.
Для того, чтобы раздавать в коровнике корма наземным транспортом — кормораздатчиком или трактором — нужен проход шириной 5-6 м. Подвесному кормовагону хватит 2,5 м. Таким образом экономится около 15% площади. Соответственно снижаются затраты при строительстве коровника. Кроме того, использование подвесных кормовагонов исключает попадание на кормовой стол грязи с колес техники.
Кормовагон может быть запрограммирован на раздачу как грубых кормов, так и концентратов, а также их смеси — полносмешанного монокорма. Он может раздавать корм индивидуально каждому животному или группам животных. Отдать на откуп автоматике можно даже стоимость порции, чтобы контролировать кормление в рамках бюджета: для этого нужно всего лишь заранее вбить в программу цену ингредиентов.
Рис. 2. Автоматическая система для раздачи корма DeLaval
Автоматическая выпойка телят
Автоматические системы выпойки телят — еще один пример того, как с помощью высоких технологий решаются задачи оптимизации кормления сельскохозяйственных животных. Такое оборудование выпускается целым рядом производителей: в их числе Urban, Delaval, Milkline и многие другие. Голландская фирма Lely считается одним из первопроходцев в этой области, а самой передовой ее разработкой признана система Lely Calm.
Главное преимущество такой системы заключается в том, что она максимально приспособлена к естественному поведению телят и позволяет им пить молоко в любое время в течение всего дня — что называется, «по требованию». Молоко (или его заменитель) в системе сохраняет оптимальную температуру на протяжении 24-х часов в сутки: оно не остывает, как при выпойке вручную.
На каждого теленка надевается ошейник с транспондером. Система следит за тем, сколько раз он подходит к соске и сколько молока выпивает. Можно настроить автоматику так, чтобы она выдавала каждому животному определенный объем при каждом подходе. Теленок, который уже употребил свою норму, молока не получит. Если животное пропускает кормление, система сообщает об этом, чтобы оператор мог выяснить, в чем дело.
Грязь или насекомые попасть в молоко не могут: система промывается автоматически. Производителями роботов предусмотрен и другой полезный функционал: например, возможность добавлять в молоко лекарства или витамины (только для тех животных, которые в этом нуждаются) и функция дезинфекции соски после каждого теленка.
Но и это еще не все. Система анализирует особенности питания теленка (частоту, размер порции и т.д.) с тем, чтобы впоследствии под него подстроиться. То есть память «кормомамы», как называют такие системы, хранит всю информацию о каждом животном. Правда, последнее слово все равно остается за человеком — он располагает информационным дисплеем, на котором отображаются все данные о работе «кормомамы», и с помощью клавиш управления может в любой момент внести в нее свои коррективы.
Кстати, сама же автоматика и помогает и «отлучить» от нее теленка. По достижению 2-х месячного возраста она перестает его кормить, давая вместо корма обычную воду. Сделав несколько попыток, теленок перестает подходить к соске, после чего быстро переходит на грубые и концентрированные корма.
Рис. 3. Система автоматической выпойки телят Urban
Автоматическая система выпаса
Выпас коров на обычном пастбище часто ведет к низкой эффективности использования кормовых ресурсов из-за вытаптывания угодий и загрязнения их фекалиями. Намного целесообразнее показывают себя так называемые «фронтальные» пастбища, на которых участок со свежей порцией растительного корма под скармливание его животным ограничивается электроизгородями. Это, с одной стороны, позволяет значительно повысить эффективность использования кормовых ресурсов пастбища. С другой — существенно увеличивает трудозатраты, так как переставлять электроизгородь на новый участок пастбища приходится вручную.
Для того, чтобы минимизировать затраты ручного труда при выпасе скота на «фронтальном» пастбище, фирмой Lely разработана автоматическая система выпаса Voyager. Это два мобильных робота, которые соединены между собой токопроводящей проволокой, ограничивающей участок для выпаса животных.
Роботы перемещаются на определенные расстояния через заданные промежутки времени, при этом каждый раз освобождая новый участок. Режим их движения (расстояние и интервалы между перемещениями) устанавливается оператором и зависит от величины стада, размера «фронтального» пастбища и используемого кормового рациона.
Рис. 4. Автоматическая система выпаса Voyager
Обратная сторона автоматизации
По прогнозам экспертов, объем рынка сельскохозяйственных роботов к 2024 году достигнет $74,1 млрд. Их производство вырастет почти в 20 раз: до 600 тысяч единиц техники. Ожидается, что в ближайшее время станут доступными ряд инноваций в автоматизации кормления, которые сегодня находятся на этапе испытаний или на стадии разработки прототипов.
Рис. 5. Процесс перехода сельского хозяйства на робототехнику будет стремительным
Однако, как и любые высокотехнологичные решения, роботизированные системы кормления имеют свои недостатки. Самый главный из них — это высокая цена: так, для фермы на 200 коров инвестиции в автоматизацию процесса кормления составят не менее €450–500 тыс. А ведь нужна еще техника для кормозаготовки, склад для кормов, силосные ямы, подъездные пути и коммуникации.
Автоматика нуждается в контроле со стороны человека, который будет наблюдать за ее работой, корректировать рационы и вовремя проводить техническое обслуживание. Использование роботизированных систем в хозяйстве со слабым менеджментом — напрасная трата денег. Ни одно чудо техники не дает результатов, если на установившей его ферме отсутствует грамотный персонал, способный управлять сложными технологическими процессами. К сожалению, статистика по нехватке квалифицированных специалистов для «цифрового» животноводства выглядит удручающе.
С одной стороны, автоматизация требует приобретения новых умений и навыков, повышения квалификации персонала. С другой, полагаясь на сенсоры и диагностические датчики, человек попадает от них в зависимость, утрачивая самостоятельность в принятии решений. В особенности это касается молодого поколения, которое слишком сильно доверяет технике. Именно поэтому некоторые животноводы, особенно те, кто вырос в окружении животных, скептически относятся к инновациям.
Еще одна проблема связана с необходимостью перепланировки старых коровников под работу новых автоматических систем. Причем даже после реконструкции многие фермы не могут на 100% соответствовать современным технологическим требованиям.
Тем не менее, автоматизация позволяет повысить общую экономическую эффективность хозяйства, добиться более высоких результатов при одновременном сокращении рисков, сделать труд в этой области более интересным и привлекательным для человека. При этом нужно понимать, что технологические и бизнес-процессы поднимают требования к профессии животновода на новый уровень. Вместе с очевидными выгодами новые технологии приносят и новые вызовы, на которые приходится отвечать.
Комментарии (49)
Fox_exe
07.12.2019 21:24+1Вместо кучи if/else можно заюзать весьма полезную функцию «map» и менять температуру плавно (если это возможно и целесообразно):
void calculate_water_temp(void *pvParameters) { while (true) { if (heating_mode != 3) { max_water_temp = map(temp_outside, -30, -10, 85, 50); } vTaskDelay(1000 / portTICK_RATE_MS); } }
Dimulya
08.12.2019 14:07Спасибо за предложение! Да, вы правы, оно и возможно и целесообразно. И функцию map знакома почти любому ардуинщику по преобразованию AnalogRead в напряжение. Я думал об этом, но потом стало лень вычислять диапазоны для мапинга. Когда ни будь я так и сделаю.
Serge78rus
07.12.2019 22:31Зачем заводить отдельную задачу для сторожевого таймера — если Вам достаточно контролировать только то, что живет RTOS, что у Вас и реализовано, то сторожевой таймер вполне можно сбрасывать и в idle задаче.
Dimulya
08.12.2019 14:08А как к ней обратится? Есть какой то отдельный метод? У нас ведь нет хэндла для idle задачи.
Serge78rus
08.12.2019 14:37В файле настройки опций RTOS — FreeRTOSConfig.h есть макро #define configUSE_IDLE_HOOK, его надо установить в 1. При этом, когда все задачи находятся в состоянии ожидания, RTOS будет вызывать функцию vApplicationIdleHook(), которая обявлена как weak (__attribute__((weak)) для компиляторов gcc и g++, для других может быть как то по другому) и может быть переопределена на пользовательскую.
VT100
08.12.2019 22:55Так таймер должен контролировать не работу Idle, а зависание задач. Каждая критичная (имеющая дело с внешней средой) задача должна сообщить ему, что не зависла в ожидании данных или готовности аппаратуры.
Serge78rus
09.12.2019 10:18Для умеренно критичных к сбоям применений достаточно контролировать именно Idle: если какая-либо задача зависнет, то она не будет попадать в состояние ожидания и, соответственно, Idle задача не будет вызываться, что приведет к срабатыванию ватчдога. Если же задача застрянет в бесконечном состоянии ожидания, то это уже не сбой, а ошибка в логике программы, а бороться с ошибками программиста с помощью сторожевого таймера — порочный путь. Хочу напомнить, что в оригинале у автора сброс ватчдога осуществляется отдельной задачей и никак не контролирует корректность работы других задач, а лишь работу самой ОС.
Для очень критичных приложений можно организовать контроль времени цикла каждой задачи, но это потребует организации двойного ватчдога — программного, с независимым счетчиком времени для каждой задачи, и аппаратного, контролирующего работу программного.
Anrikigai
08.12.2019 10:05Вот это все за неделю? Включая разобраться со средой, отладкой на железе???
В любом случае очень здорово.
Пожалуй, только вопросы:
1) Увидев «FreeRTOS» и «Blynk» в одном флаконе, я сначла подумал, что Blynk будет использоваться не как «черный ящик», а через API. Не было нужды, все и так прекрасно работает?
Просто сталкиваюсь с проблемами при пропадании Интернета — реконнекты Блинка блокируют все чуть ли не на пол минуты. Не будет ли глюков, если шедулер будет многократно аварийно завершать такие попытки (при гудках и т.п.)?
Я для отладки просто на роутере блокировал данному хосту Интернет, и через несколько раз наичналась нестабильность.
2) Насколько отладчик экономит время при написании таких не слишком больших задач по сравнению с обычной отладочной печатью в serial?
На бесплатном PlatformIO под VScode, насколько я понял, аппаратная отладка становится доступной только при оформлении платной подписки.Dimulya
08.12.2019 21:53На самом деле неделя рабочего времени это ни мало, ни много, 7*8=56 часов. Занимался я этим по вечерам и выходным, так что месяц то провозился.
По вопросам:
1) Проблем нет, всё просто работает. К API Blynk я обращался из кода, для пробы, там ничего сложного, но зачем? :) Что могу сказать по отсутствию инета и реконнектам Blynk, бывает что я забываю заплатить за инет и плата работает без инета, вроде всё в порядке, но я не проверял в это время сработку сигнализации, что бы таски с гудками и морганием работали. На днях попробую поставить дом на охрану и выключить роутер.
2) Если честно, то не очень то и экономит, может процентов на 10 побыстрее. :) Но сам процесс с использованием отладчика мне нравится больше. Тут дело в том, что в отладке ESP32 средствами VisualGDB не поддерживаются так называемые «живые переменные», это когда можно смотреть значения переменных не останавливая контроллер. Т.е. нужно поставить точку останова, что бы посмотреть, если бы эта фича поддерживалась, было бы прям удобно и быстрее.safari2012
09.12.2019 18:06Я так делаю, код из обычного настенного выключателя, если blynk или wifi зависает, всё реконнектится автоматически периодичность проверки настраивается (для удобства настройки/отладки вынесено в глобальные переменные), локальная работа выключателя не блокируется. RTOS не использую, есть много удобных механизмов типа диспетчеризации задач типа TimeAlarms. Аптайм несколько лет.
Заголовок спойлераunsigned long // счетчики таймеров для: WifiLoopTime = millis(), // проверки wifi BlynkLoopTime = 0; // проверки коннекта к серверу blynk setup() WiFi.mode(WIFI_STA); WiFi.begin(); WiFi.setAutoReconnect(true); Blynk.config("***************", IPAddress(***********), 8442); Blynk.connect(1666); // 5sec loop() if (WiFi.status() == WL_CONNECTED) { if (Blynk.connected()) Blynk.run(); else if (millis()> BlynkLoopTime+20000) { BlynkLoopTime=millis(); Blynk.connect(1666); } httpServer.handleClient(); } else { if (millis()> WifiLoopTime+20000) { Serial.println("WI-FI Not connected"); WiFi.mode(WIFI_OFF); Serial.println("WI-FI disconnecting"); WiFi.begin(); Serial.println("WI-FI connecting."); WifiLoopTime=millis(); } else if (millis()> Seconds+1000) { Seconds=millis(); Serial.print("."); } }
Anrikigai
08.12.2019 11:50Прошу прощения, я с FreeRTOS пока дела не имел. И, поизучав внимательнее код, удивился, что в smart_home_2019.ino не вижу, к примеру, #include «freertos/FreeRTOS.h». На вид самые обычные инклуды.
Также не нашел, как в smart_home_2019.ino подцепляются таски (tasks_functions.ino).
Или на гитхабе только кусочки проекта? Можете пояснить?Serge78rus
08.12.2019 12:13Также не нашел, как в smart_home_2019.ino подцепляются таски (tasks_functions.ino).
В конце функции setup() ряд вызовов функций xTaskCreate()Anrikigai
08.12.2019 12:22Да, вызовы вижу. Я не понимаю, как система без #include знает, что они находятся в tasks_functions.ino
Вряд ли это зарезериврованное имя файла.
Ну да ладно, у вас среда разработки другая. У меня ж вообще не .ino, а main.c главный файл…
Все равно много интересного увидел.Serge78rus
08.12.2019 12:47+1Ну да ладно, у вас среда разработки другая.
Это не у меня, а у автора. Я ардуиновскими и околоардуиновскими софтверными инструментами не пользуюсь. Полагаю, что часть «магии» просто скрыта от пользователя, ведь подключить заголовочники можно и через опции командной строки компилятора (для gcc и g++ это -include).
Dimulya
08.12.2019 21:57А, вы про это. Скорее всего среда разработки считает, что файлы с разрешением ino в одной папке находятся как бы в одном пространстве имён. Такое же поведение и Arduino IDE.
Но, ссылку на метод для рестарта, который был изначально в из tasks_functions.ino, в smart_home_2019.ino не было видно, пришлось перенести этот метод в smart_home_2019.ino.
Dimulya
08.12.2019 21:55На гитхабе весь код, который написал я. В visual GDB это всё как то компилируется без #include «freertos/FreeRTOS.h» и прочего. Какая то чёрная магия, но всё вроде работает :) Таски подцепляются в конце setup().
kotyara12
09.12.2019 19:23Для ESP32 в ArduinoIDE FreeRTOS подключена «по умолчанию», #include «freertos/FreeRTOS.h» уже не нужен. Пользовательский скетч для ESP32 — это просто задача FreeRTOS, которая запускается на ядре процессора CORE1, на CORE0 выполняется сама RTOS. Для VisualGDB не знаю, но вероятно, реализовано похожим образом.
vortupin
08.12.2019 14:37Практически каждая статья жителя России об «умном доме» (sic!) по своей сути описывает «наколенное изобретательство велосипеда», то-бишь программируемого термостата. Я понимаю, что
… хотелось поприседать мозгами, пописать что то для души...
— это основополагающее (а не отсутствие знаний о том, что такие дивайсы уже «сто лет в обед» изобретены и продаются буквально за «копейки» (дешевые варианты, без Alexa и WiFi), но не «стрёмно»-ли писать свой говнокод для подобной, достаточно важной функции? Пусть код и простенький, но без тестирования про-QA я бы, лично, не рискнул.
Еще вот этот момент удивил:управление температурой теплоносителя в зависимости от температуры на улице или вручную
— а при чем тут улица-то? Вы, часом, не улицу ли греете? :DNdochp
08.12.2019 17:37Ну так есть модель дома и его теплоотдачи. Обогреватель в стабильном режиме должен вкачивать столько же джоулей, сколько уходит сквозь стены. А это зависит от уличной температуры. Через температуру в доме это можно мерить, но кажется с большими волнами — чтобы получить управляющий сигнал нужно получить изменение температуры в доме. То есть снизить комфорт жителей.
Anrikigai
08.12.2019 18:30Могу предположить, что если сделать все время низкую температуру теплоносителя, в холод ее будет не хватать. Скажем, если мощность котла недостаточна.
Но зачем такая точность, почему все время зимой не держать 85 градусов (а летом 70) — тоже не очень понимаю.
Еще можно аналогию провести с «почему инверторный кндиционер лучше обычного».
Одно дело большой гистерезис (разница температур между включением и выключением), а другое — плавное регулирование мощности.
Возможно здесь изменение температуры — такой аналог управления мощностью?
Но котел все равно ведь вкл/выкл сам делает…
Ну т.е. разве что избежать слишком частых включений/выключений, что имеет некоторый смысл.Dimulya
08.12.2019 22:25Если честно, я придумал этот кусок кода год назад, и сейчас уже не помню, почему мне тогда не понравилась высокая температура в трубах. В этом году просто перенёс на esp32. По сути да, можно и без этого.
Dimulya
08.12.2019 22:06Странный комментарий. Если вам так удобно, считайте что я грею улицу.
vortupin
09.12.2019 22:50Чем он «странный»? Не «страннее», чем очередное «изобретение велосипеда из говна и палок». А вы вообще когда-нибудь дело с обыкновенными, производящимися десятки лет, программируемыми термостатами, имели? (правда, понятное дело, функций «включения сирены» и «управления фонарем» в них нет :)
vsergoog
10.12.2019 11:29Проблема подобных комментариев в том, что никто и никогда не дает ссылку на готовый продукт.
А человеку, может, было интересно сделать из говна и палок термостат, да еще и иметь возможность получить некую инфографику. При этом, он не знает, что ему далее может потребоваться, что будет лишним, а что он захочет добавить.vortupin
11.12.2019 05:03«Какие руки, какие ноги?!» Удав из мультикаКакие ссылки? Тут, все-таки, хабр, а не форум для блондинок — запросить google/yandex «программируемый термостат купить» должно уметь 100% посетителей, не говоря уж о «разработчиках микроконтроллерных приложений».
То, что автору было интересно — я и не сомневался (подобно авторам 99% постов с подобным содержимым — их тут на хабре, как...), что и сразу написал. Удивление вызвало то, что автор данной наколенной поделки меряет… температуру «за бортом». Все, что нужно — это расположить термостат в доме, по возможности, подальше от радиаторов (чтобы измерял, так сказать, «амбиентную температуру» — вот и все, и весь секрет Полишинеля).
Уже более 15 лет я пользуюсь простенькими программируемыми термостатами от Honeywell. Работают, лучше чем часы (там чаще нужно смазывать — это о grandfather clock, или менять батарейки), раз в три года сменил батареечку — и все. Работают вне зависимости от наличия интернета или электричества. А вот обеспечить аварийное питания для oil boiler-а — это задача, реально заслуживающая внимания (но отнюдь не кустарных поделок на ардуине).
Про «инфографику» отопления я, с вашего позволения, промолчу, чтобы грязно не ругаться. Вся «инфографика» — это счета за oil (три бака в год уходит примерно); копеечные колебания плюс/минус не в счет, но вот после weatherization (это утепление дома, «халявное», в моем случае) разница была заметна и без «инфографики» — лучший «инфограф» это свой собственный кошелек :)
ser-mk
08.12.2019 17:57При подключении отладчика Windows устанавливает на него неподходящие драйвера, которые необходимо поменять с помощью программы Zadig, там всё просто, не буду описывать.
Странно у меня все из коробки заработало с этой платой. Вам пришлось переустанавливать драйвера?
SimSonic
08.12.2019 19:30Спасибо за статью. Очень вовремя!
Не более как неделю запустил в ещё пока строящемся доме отопление от котла. Котел умеет как eBUS, так и простой вход З/Р.
Установщики предлагали систему EktoControl (11к), но я в ней не увидел необходимости.
Имеется в наличии пара wemos d1 mini pro (v1.1), один ds18b20, решил как раз на этих выходных попробовать сделать управление для котла.
На си писал давно, но тулинг меня начал убивать :) может я просто зря решил не хватать Ардуино, а попытаться использовать NonOS / RTOS SDK.
Попробовал по их инструкциям, надо сделать в Windows кучу софта, ок. Не завелось. Попробовал CLion + esp8266 plugin. Ну вроде что-то работало, но подсказки кода нет.
Сейчас рабочий вариант нашел только VSCode + PlatformIO на основе NonOS. Но расстраивает свежее сообщение в гитхабе, что NonOS всё.Anrikigai
08.12.2019 21:18VSCode + PlatformIO на основе NonOS
А почему не VSCode + PlatformIO на основе Ардуино?
[env:ttgo-t1]
Удобного шедулера в NonOS все равно нет. В чем ее прелесть? А так — куча ардуионовских библиотек подходит…
platform = espressif32
board = ttgo-t1
framework = arduino
SimSonic
09.12.2019 05:26Оправдаюсь тем, что не знаю в полной мере, что такое Ардуино и вся это железячство. А так как на Си писал, решил, что этот путь может оказаться прямее.
Сейчас вижу, что, скорее всего, был неправ.
А с ограничением на таски пока не столкнулся. В целом хочу сделать достаточно простую вещь — временами опрашивать 18b20, по формуле считать когда вкл/выкл котёл, дёргать реле, а заодно отправлять всё измеренное и произошедшее по mqtt.
Так как в доме не живу, а зимой даже планирую некоторое время его не посещать, хотелось бы знать, что там всё ОКъ — скорее всего куплю самый-самый дешёвый 3g-модем (покрытие норм) с раздачей Wi-Fi.Dimulya
09.12.2019 09:02Можно ещё датчик движения повесить или концевик на дверь, что бы знать что никто не залез внутрь. Ну и дальше как время/желание позволит — датчик дыма, датчик протечки :) код на все эти вещи несложный. Главное что бы датчики работали норм, иначе долгий дебаг и всё такое.
Redwid
08.12.2019 22:02Самодельный Nest получился.
А зачем днём поддерживать +20 если дома никого нет?
ИМХО +16 достаточно, и повышать к желаемой температуре ко времени прихода домой.Dimulya
08.12.2019 22:05Это можно поменять, в тёплую погоду обычно ставлю меньше. Но вообще, на 3 градуса дом разогревается, почти в любой мороз, за пару часов. Если выставить меньше, то бывает холодновато по приезду.
alievRU
08.12.2019 22:05+1Тоже присматриваюсь freertos на esp32. Сейчас работает похожий проект (для гаража сделал), связка: дома — esp32+LoRa и srm32+lora Переодически вылазят какие-то фантомы в данных (раз в сутки или в 2-e), все сделано через loop. Спасибо за реальный пример rtos — сяду перелопачивать!
vsergoog
10.12.2019 10:44Как то однажды мне тоже надоело разглядывать лапшу из arduino кода при добавлении очередного датчика. По этому, вспомнив, что я все-таки программист, написал событийную систему, где каждое устройство, это некий объект, способный передавать сигналы другим объектам. В итоге, получилась довольно легко расширяемая система, в которой отдельно пишутся объекты (датчики или устройства), а отдельно задаются связи между ними. В моем проекте, это делалось при старте, но можно было и на лету.
Freertos у меня не было, потому как в загашнике валялись только платы arduino uno.
Реализовал на этом проект поливалки с парой датчиков влажности, дисплеем, кнопками для задания уровней срабатывания датчиков. Потом добавил часы реального времени и управление досветкой растений в зависимости от длинны суток, включалась она утром и вечером. Хотел даже написать статью, но писать статьи для меня сложнее чем писать код. Если вдруг кому то интересно, то проект лежит здесь.
И да, писать в arduino ide — сущий ад, проще один раз прикрутить qt creator.
pyur
я ещё только собираюсь брать быка за рога, но тоже смутила перспектива программировать ESP32 из Arduino IDE, как самая рекомендуемая. искал варианты. ещё советуют VS Code, но к поделкам на Electron'е у меня тоже мало доверия, несмотря на то, что VS Code очень хвалят.
хотелось что-то вроде привычных Atmel Studio, Visual Studio.
спасибо вам за содержательную и полезную во многих смыслах статью.
Fox_exe
Arduino в Visual Studio? Да легко: есть плагин Visual micro.
Gritsuk
Я в процессе, как раз пытаюсь приручить платку TTGO на основе ESP32. В том материале, которым руководствуюсь, используется Эклипс и соответствующий плагин. Говорят, работает, но у меня пока не вышло:)
romanetz_omsk
На сайте espressif исчерпывающий мануал. Рекомендую под линуксом пробовать.
Peter1010
Для vs code есть PlatformIO, очень удобно.
Gritsuk
Спасибо за совет, удалось прошить плату из VS Code с PlatformIO каким-то тестовым проектом. Проблемы остались — собирается 5 минут, кодировка в терминале не та, но вектор, похоже, верный
Peter1010
>собирается 5 минут
Собирается или собирается + заливается? У меня только первая сборка только долгая. А дальше у меня собирается секунд за 30.
Ещё стоит посмотреть в сторону конфигурации сборки. Я для себя остановился на
;Build options
build_flags = -std=c++14 -Wno-unknown-pragmas
kypluk
Посмотрите platformio. Она позволяет генерировать все необходимые настройки для разных ide и редакторов (например clion, vscode начинают просто работать без каких либо расширений), и полезной фичей будет взрослая работа с пакетами ( как pip или npm)