Термометр & гигрометр на ATMEGA 328P-MU - Поднимаем уровень ARDUINO разработок.
Здравствуйте уважаемые читатели блога Mysku. Сегодня хочу поделиться одним из своих Ардуино проектов. Когда-то, не очень что бы давно я где-то на просторах интернета узнал об Ардуино. Влился я в это дело довольно быстро, уровень вхождения там не высокий. Через некоторое время уже собрав кучу датчиков, сенсоров для умного дома стал ловить себя на мысли что как то это все не по уму. Модули, большие незамысловатые коробки, куча проводов и термоклея :). Смотря на свою коробку с датчиком темературы и например на датчик температуры того же Сяоми, понимал что хочется что бы выглядел как у Сяоми но в тоже время что бы его можно было как хочешь перепрограмировать как мой в коробке размерами 10см на 6см с проводами и термоклеем. И наверное тогда и было положено начало моим DIY ардуино проектам на PCB платах.
В сегодняшней статье речь пойдет о датчике температуры и влажности на базе процессора atmega328p-mu. Это более «мелкая» версия(абсолютный аналог) изветного всем ардуинщикам процессора atmega328p-au (Arduino Uno, Pro Mini, Nano). Если кто то ранее читал мои статьи то знает что я предпочитаю Mysensors. Что это? Это очень простая и хорошо проработанная и что немаловажно отлично описанная библиотека под Ардуино ИДЕ (и не только) для создания IOT радиосетей на частотах 2.4Ггц, 915, 868, 433 Мгц, а так же проводных сетей на интерфейсе 485, возможно не все упомянул, тк протокол постоянно развивается, все время что то добавляется.
Первое что было сделано, это собственно сам датчик на PCB плате. Делал без оглядки на корпус, по принципу, главное сделать датчик а уж корпус как нибудь да напечатаю,… да уж, не делайте так :). По сути сам датчик это та же ардуинка Про Мини, радиомодуль nRF24l01, датчик температуры и влажности SHT20, только без проводов и термоклея. Из «прибамбасов» это внешняя SPI флешка для прошивки по воздуху(для работы требуется бутлоадер ДуалОптибут, в последствии я перестал их(флешки) ставить на платы, тк пара прошивок по воздуху и полбатарейки нет) и «крипто микра» ATSHA204A так сказать для полного железного комплекта(в Mysensors для активации подписей, шифрования и тп достаточно просто указатать в начале скетча нужные #def)
Саму плату делал в программе Диптрейс, посмотрев видеоуроки на Ютубе, вначале показалось это чем то «адским», но на самом деле все оказалось не так уж и сложно. Платы заказывал в Китае на сайте jlcpcb.com, 2 бакса, любой цвет, и через 2 недели вы уже получаете на руки 10 штук «своего творения» :).
Следующим этапом была разработка корпуса. О, это как оказалось еще та проблемка. Вообщем легких путей не искал, решил осваивать Солид Воркс. Как оказалось это совсем не как с Диптрейс. Тем не менее все же рекомендую именно этот редактор к изучению. Процесс обучения растянулся на месяц неспешного просмотра видеоуроков на Ютубе и повторения материалов урока в редакторе. В процессе разработки корпуса стало понятно что делать плату устройства без учета параметров будующего корпуса это плохое решение, из сериии вставляем палки в свои же колеса. По итогу версий плат вышло три с учетом установки платы в корпус, и думаю и это не последний вариант.
В начале разработки корпуса идея была печатать его на FDM 3D принтере, но чем дальше в лес тем становилось понятнее что все мои хотелки оно не способно воспроизвести. К моменту как это понимание пришло уже узнал о другой технологии 3D печати — SLA. Недолго думая и впечатлившись качеством печати была оформлена хотелка на Али — ANYCUBIC Фотон.
Напишу сразу, сейчас, на основе моего опыта на момент написания этой статьи,… ох уж и крутяцкая эта чудо штуковина!!! Корпус который был спроектирован в редакторе конечно и напечатался не с первого раза и доработок была куча. Ну по другому наверное и не бывает. В итоге получил тот результат который хотел. Довольно миниатюрное устройство, хороший DIY корпус с очень точной детализацией, кнпочки, шрифты, все как предствалял в голове. В заднюю крышку добавил магнитик, теперь можно легко крепить и на железные поверхности.
Это попытки напечатать туже модель на FDM принтере:
Так как девайс получился небольшой, но это все же ардуинка, то озадачился выводом миниатюрных разьемов для программирования. И соответственно к разьемам был сделан небольшой переходничек для удобного соединения с програматором и TTL конвертером.
Код программы достаточно прост. Для работы с датчиком SHT20 был использован пример библиотеки DFRobot. Впринципе любой скетч, для любого датчика можно за 5 минут преватить в скетч для работы в сети Mysensors.
Контролером умного дома является Мажордомо(думаю многим известная система), написан модуль Mysensors(пожалуй одна из лучших реализаций поддержки протокола Mysensors в контролерах)
Проект естественно открытый и рекомендованный к повторению. Все детали разработки, файлы плат, прошивка, 3d модели корпуса выложены на сайте www.openhardware.io
На все вопросы по данной разработке, помощь в освоении MySensors обращайтесь в чат @mysensors_rus
я не вижу серьезных преимуществ перед настроенным FDM просто. И там и там неиделаьно, но вполне приемлимо для очень широкого круга задач. Причем у FDM нет недостатков SLA бюджетного как малой области печати и запаха расходников (которые вроде и дороже, точно не знаю)
нет, даже очень настроенный FDM не повторит. Я не о фотках корпуса в статье, там принтера настроены не под мелкую печать. Но и на настроенных того не сделать…
У автора проблема скорее не в SLA, а в самой модели, экспортированной с крупной сеткой. Поэтому результат такой ребристый :)
С другой стороны, использовать SLA для корпусов крупнее пары см — это несколько странно :)
Именно, поначалу делал экспорт с дефолтными настройками из Солид Воркса. Там корпус в районе 4 см, но дело не в размере а в посадочных местах под плату, в прорезях кнопок, мелких сквозных отверстиях, такое недоступно на FDM
Фотополимерники, на мой взгляд, оправданы для создания мастер-моделей для последующего литья, для которых важен внешний вид, или для каких-то единичных художественных миниатюр :)
Хотя, может быть, имеет смысл использовать их и для мелких корпусов типа брелков или часов.
Ну если брать первый 3д-принтер мне кажется с ним возни с настройками меньше, а печатает лучше, стоит всего вдвое дороже примерно. Вопрос ещё про прочность…
Всякие панельки для экранчиков или кнопок/датчиков на стену аккуратные.
Фотополимерник — для внешнего вида, для небольших дизайнерских вещей :) Потому что возни больше, печатает долго (хотя и не всегда дольше FDM), расходники более дорогие и вредные :)
FDM — для функциональности, для более крупных и/или массовых изделий :)
Ну при прочих равных, почему нет. Пока пытаюсь понять какие минусы кроме цены и цены расходников. Если только это, то меня устроит. Просто пока с принтерами дел не имел, но хочу побаловаться.
Минусы — малые размеры печатной области, долгая печать, стоимость смолы, ее механические свойства, возня с промывкой/досветкой.
Плюсы — хорошее качество печати, особенно это проявляется на моделях с высокой детализацией.
На самом деле я тоже давно уже поглядываю на тот же Аникубик Фотон-С, но на вопрос своей жабы «И что ты будешь на нем печатать, чего не можешь напечатать на имеющемся FDM?» я пока ответа не нашел :)
да, смола от аникубик чем то похожа на искуственный мрамор, твердая с малым запасом гибкости, смола ванхао, чем то напоминает прорезининую пластмассу, мне она больше нравится, но на ней труднее печатать, настройку надо полностью кастомной делать, увеличивать время засветок
В основном — да. Говорят, есть смола, близкая по механическим свойствам к ABS, но ее поискать еще, да и цена там уже совсем серьезная :)
Но это я так, по слухам, вычитанным в инете, лучше сами поройтесь по этому вопросу на тематических ресурсах :)
смол вообще дофига, есть прям резина, есть такие что по свойствам как карбон получается, прочные, гнутся, хрен поломаешь. но тут засада, засветить такие смолы вообще нереально на китайских принтерах. надо мощьность проектора повышать в разы. или покупать нормальный принтер >300000р
Ну да, я же и написал — ее еще поискать, чтобы и работала с таким принтером и свойства имела подходящие :) Ну и цена у нее будет в разы выше обычных ширпотребных смол :)
SLA это и есть «фотополимерник». Просто его возможности как бы избыточны для банальных корпусов. Плюс еще нужно понимать что на бюджетном не сделаешь крупный корпус, не влезет. Дороже расходники, намного более долгая печать. Нужно продумывать модель, что бы не оставалось замкнутых полостей с жидким полимером. Корпус от ТС должен неплохо напечататься на нормальном настроенном FDM принтере, я модельки посмотрел в Куре. Прорези для него не являются чем то фантастическим. Но, смотря какие были запросы у ТС.
Это реклама некоего mysensors? Или рассказ о трудностях печати корпуса? Причем качество для SLA действительно не впечатляет. И листинг в полобзора впечатлил…
Судя по всему нет. Видимо считают что это реклама какая-то. А правда в том, что это открытый проект с очень низким порогом входа, позволяющий легко организовывать управление беспроводными устройствами.
Нормальный и логичный сайт. То что нет новомодных html5 и котиков не переводит его в раздел запутанных. Вся информация разбита по разделам, это ардуина, это датчики, это шлюз на малинке. Юзаю mysensors на двух датчиках: давления и освещенности, под которые не было готового проекта. Запилены через Flprog, и третий месяц вполне себе стабильно живут.
Не-не-не, я скорее против этих html5 и js, я про что куда и зачем и как резонно спросил Олег Артамонов, где документация?
Посмотрите на тот же esphome, намного понятнее выглядит, хотя тоже не идеален.
Листинг я хз как свернуть, на других порталах это без проблем, например Хабр. По поводу SLA, что можете предложить из доступного для народа на данный момент? Там я печатал слоем в 100микрон, можно в 25 уйти, но полимер жалко было, тк тогда я только осваивал этот апарат. Ну и детали прям из-под принтера, вообще без обработки. Это сейчас я их уже надфилями обрабатываю(места поддержек)
Это русскоязычный форум. На англоязычном постоянно куча народу и помогают в течение часа точно. Вы бы для начала разобрались что такое MySensors, а потом уже сарказмировали.
Набор ардуиновских библиотек :)
Кстати, на Хабре один комментатор спросил про описание протокола обмена сообщениями между нодами и центром, оказалось, что такого описания вообще нет :)
Там еще забавная тема с логгингом, вроде логирует много и подробно, но все логи нечитаемые человеком. На сайте есть расшифровщик, но он давно не обновлялся и расшифровывает только часть сообщений, а то что расшифровал, потом дальше ищешь на форуме с комментариями разработчиков, т.к. документации нет. Ну сорцы тоже можно почитать, но это для сильных духом.
Хотя нередко все работает сразу и по инструкциям, которых у них все же полно.
сочувствую Вам, когда я пришел в этот чат, то просто отключил уведомления ;). шитнешитпостинг это субъективизм, люди спрашивают, им отвечают, это главное.
Уведомления у меня отключены принципиально. Но заходить и листать вникать что там настрочили на 1000 постов просто не имеет никакого смысла. В основном заметил там именно шитпостинг не относящийся к теме.
Как бы датчик BME280 получше будет. Да и проще готовую ESP взять и не ваять ничего. Результат получше будет. Но если процесс интересен и руки занять, то в обзоре всё для этого
Когда наиграешься с поделками на батарейках беспроводных, приходишь к тому что при ремонте делаешь проект и тащишь проводку по хате для питания и данных.
Датчик температуры в комнате весьма условен и сильно зависит от его расположения. А когда делаешь климат, то настраиваешь систему один раз и забываешь про него
Я пошел по аналогичному пути — собрал 10 беспроводных датчиков, раскидал их по помещениям дома + в теплице один. Работает всё хорошо. Правда в малинке, на которой Domotics крутится, последний регулярно падает. хз что ему нужно.
приходишь к тому что при ремонте делаешь проект и тащишь проводку по хате для питания и данных
а по истечении полу года — год, вам захочется поменять место расположение дивана/шкафа/холодильника/телевизора и проводной датчик оказывается «не на своем месте» ((((
Когда делаешь климат, то датчик никуда не двигается, какие данные глубоко пофиг, показометр это для любопытных, пока работает климат смотреть нам нечего.
Если задача понтануться перед пацанами дворовыми, то тут свистелки и перделки с выводом на телефон и эротическим массажем. Вобщем кому что надо :)
Двухъядерный микроконтроллер на 240 МГц с полуметром флэши и оперативки, с жрущим энергию WiFi — только для того чтобы считать с пары датчиков и передать на десяток метров несколько байт? :)
Почему нет? Зато стандартная среда, интеграция в любой менеджер «умного дома», и т. д.
8 ядер, 6-12 гигов памяти, 3-6 камер в сосвременных смартфонах не смущают? Где большинство только смотрит «ленту» ВК и «чатится в чатиках».
Почему Вы считаете критерием «востребованности» частоту, объём flash и Wi-Fi?
А не себестоимость, время разработки, поддержки, и т. д.?
Вот я хочу счётчик воды. Казалось бы, импульсы можно на NE555 считать. Удобно это? Нет. Нужен экран. Хочется хороший экран. Нужно иметь возможность считывать данные удалённо и, наоборот, передавать их на сервер. Arduino и «шильды»? Зачем? Всё практически есть в ESPxx.
Можно делать самому, можно просто взять один из множества готовых «конструкторов» и просто реализовать то, что нужно.
Не нужно свои цели, критерии, пути с непоколебимым максимализмом распространять на всех.
Почему Вы считаете критерием «востребованности» частоту, объём flash и Wi-Fi?
А не себестоимость, время разработки, поддержки, и т. д.?
Вот давайте не будет про «разработку». Ардуино — это не разработка, а собирание кубиков, так что существенной разницы между атмегами и ESP в этом отношении нет. Поддержка — то же самое, в 99% ардуиновских «разработках» поддержка выливается в поиск в интернетах ответа на вопрос «почему не работает этот скетч». Опять же — что на атмегах, что на ESP. Себестоимость в единичных экземплярах различается на уровне стоимости бутылки газировки.
Про счетчик воды с красивым экраном даже комментировать не буду :)
Почему ардуино не разработка? Написание программы не разработка? Не нравятся именно платы arduino — не проблема, используйте nrf5, stm32, esp8266, esp32. Это просто среда разработки, а то что на практически любой вопрос можно найти ответ и даже готовый код — это же плюс, разве нет?
Потому что почти никто из ардуиновских «разработчиков» понятия не имеет как там работает все то, что они «разработали» :)
«Скачал скетч NNN, а он не работает, помогите!» — самый распространенный метод отладки в такой «разработке» :)
В общих чертах — да, в курсе. Речь ведь про программирование микроконтроллеров? :)
Ну и не нужно сравнивать теплое с мягким — знание архитектурных особенностей платформы и знание того что и почему делает программа :)
Ну я как-то хочу показать, что это не двоичное состояние программирует и знает все потроха, до загрузил скетч и не программист. Есть куча градаций и для работы каких-то программ необязательно знать досконально, как не нужно знать, как устроена машина под капотом, чтобы ехать.
Загрузил скетч, не зная как он работает — не разработчик :) Написал сам или загрузил скетч и разобрался как он работает (чтобы мог исправить/переделать его работу) — уже разработчик :)
не нужно знать, как устроена машина под капотом, чтобы ехать
Правильно, потому что ехать — это шофер. А спроектировать машину — это разработчик, и там уже не получится не знать как устроена машина :)
Не спроектировать машину (это уровень написания компилятора скорее или описания hdl процессора), а заставить её ехать по нужной траектории (написать программу для черепашки LOGO), aka выполнить коду функции.
Ну не используйте что они там наразрабатывали, пишите свое с нуля, чем ардуино само по себе то не угодило? :) Это просто ide. Никто не мешает на уровне регистров фигачить :-) Вот тоже ардуино, как и положено код частично нагуглен :)
void activateLpComp() {
NRF_LPCOMP->PSEL = LPCOMP_PSEL_PSEL_AnalogInput0; // monitor AIN0 (i.e. pin P0.02 on nRF52832).
while (!(NRF_LPCOMP->PSEL == LPCOMP_PSEL_PSEL_AnalogInput0)) {}
NRF_LPCOMP->REFSEL=LPCOMP_REFSEL_REFSEL_Ref4_8Vdd;
while (!(NRF_LPCOMP->REFSEL==LPCOMP_REFSEL_REFSEL_Ref4_8Vdd)) {}
NRF_LPCOMP->HYST = LPCOMP_HYST_HYST_Hyst50mV;
while (NRF_LPCOMP->HYST != LPCOMP_HYST_HYST_Hyst50mV) {}
NRF_LPCOMP->ANADETECT=0; //detect CROSS events on PIR detection pin
while (NRF_LPCOMP->ANADETECT!=0) {}
NRF_LPCOMP->INTENSET=B1000; //Enable interrupt for CROSS event
while (!(((NRF_LPCOMP->INTENSET)&B1000)==B1000))
NRF_LPCOMP->ENABLE=1; //Enable LPCOMP
while (!(NRF_LPCOMP->ENABLE==1)) {}
NRF_LPCOMP->TASKS_START=1; //start the LPCOMP
while (!(NRF_LPCOMP->EVENTS_READY)) {}
NVIC_SetPriority(LPCOMP_IRQn, 15);
NVIC_ClearPendingIRQ(LPCOMP_IRQn);
NVIC_EnableIRQ(LPCOMP_IRQn);
}
Ничем, для своей ниши — неплохая вещь :) Печалит только уровень подавляющего большинства ардуинщиков и распространение проектов, сляпанных кое-как без понимания как оно работает :)
Ну, я не знаю… Это как самому сделать в доме отопление: трубы вкривь и вкось, из половины соединений капает вода, батареи стоят на полу на кирпичах… И выставить это в инет «Во, оказывается делать отопление — легко, я за пару дней справился! Вот проект для желающих повторить: ...» :)
За труды и продвижение технологий в массы конечно Вам большой плюс, но при наличии готового датчика температуры+влажности+давления от Хлаоми за 10 у.е., такое повторять будет только большой любитель рукоблудия.
Могу ошибаться, но вы отправляете данные каждую минуту. А не часто ли это? Хотя бы раз в 5 минут, или даже 10, ИМХО, хватило бы. Да и расход батарейки был бы меньше.
Это настраиваемо пользователем(обратите внимание на скрин интерфейса в Мажордомо, на датчик можно отправить настройку интервала для данных в минутах, интервала отправки показаний батарейки в часах, включение/отключение индикации светодиодом), стандартно в ПО установлено 2 минуты и только если данные изменились на определенное значение.
Ага, ну тогда ещё ок. У нас (на фирме, где работаю) старые датчики на атмеге, Далласе для температуры и CC1000 на 433мгц. Высылают данные на центральное устройство каждые 15 минут, с коррекцией CRC, подтверждением получения, но без шифрования. Используется батарейка типоразмера АА, но на 3.7В. работает около 5ти лет на одной батареи
Посмотрел проекты, есть весьма интересные. Добавил в закладки ) Есть уже статистика на сколько в рабочем режиме (без экспериментов с перепрошивками) хватает батарейки? Также многие проекты со ссылками на ебай, но везде пустота. Чтонибудь продается или это излишки от заказа плат по 10 штук сдавались. Ну и если в продаже таки чтото появляется то варианты только через ебай? Какбы из Мск в Мск на ебае покупать некомфортно до пупырок )))
Счетчик импульсов заинтересовал люто. Обзор планируется?
Лучше поставить какой-нить микропотребляющий аппаратный счетчик и просто считывать с него значения с нужным периодом :) Тогда не понадобятся такие огромные аккумуляторы :)
Это батарейки, AA/2. Они там потому что там реализовано считывание NAMUR(если вы понмаете о чем я, и не очень хочется на таких датчиках менять батарейки раз в год.
Сразу о минусе — пихать в один корпус и плату и датчик температуры… он будет завышать температуру. Только вынос. или термоизоляция.
Из обзора не ясно как дела с автономностью.
Вы теоретик? я практик. Это не так, завышать не будет. Там нечему грется, это cпяшее устройство и это atmega328. Вот фото девайса на кортексе4, уж он то греется, но опять же если оно спящее, то это снимает проблему. На фото сьем температуры прям с чипа(влагомер почвы посередине). С автономностью все нормально, больше года точно, надеюсь что и больше пары лет будет.
Вы теоретик? я практик. Это не так, завышать не будет.
Так я тоже не с пустого порожня говорю.
Я сейчас только понял что у вас снял показания отправил и все. У меня просто все в онлайне скажем так, по сему видимо такие отличия.
А случайно не вы писали где-то на своем блоке/сайте про попытку разработки автономного датчика влажности с передачей по радиоканалу и долгой автономностью? Вроде там питание задумывалось от литиевой таблетки-батарейки.
512-Kbit, 1.65V SPI Serial Flash Memory — AT25DF512C-SSHN-B — U1
(очень желательно наличие буквы D, просто AT25F512C работает в диапозоне 2.7-3.6v что не очень подходит для желающих обновлятся по воздуху)
Mini NRF24L01 + 2.4GHz 1.27MM RF — nRF24l01 1.27 SMD — U2
ATMEGA328P-MU QFN32 — U3
CRYPTO AUTHENTICATION, 1 WIRE — ATSHA204A-STUCZ-T — U4
Не проще было взять современный nRF5x, где все это (в бОльшем объеме) на борту? Ах, да, arduino )
Замер датчиков каждую минуту, передача через GSM-канал каждые 15 минут. Без единого скетча :) И обратите внимание на правый нижний график — напряжение батареи. Это при том, что до 15-16 числа станция работала от аккумулятора без подзарядки от солнечной панельки :)
Это коммерческий заказ, так что приводить схемы не имею права :(
Но в общих чертах так:
— аккумулятор NiMH из трех элементов по 4200 мА*ч (последовательно)
— микроконтроллер серии STM32L с подключенными кварцами 8 МГц для рабочей частоты и 32.768 кГц для часов реального времени (RTC)
— GSM-модем SIM-800
— 10 аналоговых входов
— отдельный вход датчика направления ветра
— 2 цифровых — для импульсов анемометра и датчика дождя
— модуль питания, следящий за зарядом аккумулятора и подключающий или отключающий солнечную панель для подзарядки аккумулятора, все это в аппаратном виде, на компараторах и мосфетах
— счетчик анемометра — отдельная микросхема, ширина счетчика — 32 бит, в ней же пара сотен байт памяти для хранения данных во время спички микроконтроллера
— счетчик дождя — по прерыванию на микроконтроллере
— встроенный (на плате) барометр BMP180
— 4-мегабайтная флэш (AT45DB321) для сохранения измерений
— небольшой OLED-дисплей 128х64 для настройки
— солнечная панель (вроде на 0.2 Ватта)
К аналоговым входам подключаются всевозможные датчики — влажности, температуры, влажности почвы, увлажнения листа и т.п. У всех у них выходное значение — аналоговый сигнал 0-2 В. Питание на все аналоговые датчики коммутируемое, микроконтроллер включает его перед измерением и отключает после считывания показаний.
Большую часть времени микроконтроллер в глубокой спячке с потреблением меньше 1 мкА — отключено все кроме вачдога и RTC, все выводы в третьем состоянии, содержимое памяти теряется (кроме нескольких ячеек RTC). Вообще вся станция в этот период потребляет около 40 мкА, из которых половина — модуль питания со своими компараторами и стабилизаторами, почти все остальное — флэш, барометр, счетчик анемометра. Все это (кроме счетчика) вводится в глубокий сон. Модему, дисплею и аналоговым датчикам питание отрубается.
Через заданный промежуток времени контроллер просыпается по будильнику (RTC), включает питание датчиков, будит барометр и снимает показания. После этого опять все отключает и засыпает. Когда приходит время отправки данных на сервер, включается питание модема, он заводится и данные всех измерений (минимум, максимум, среднее) с последней передачи отправляются серверу. Если не получилось отправить — сохраняются во флэш. Если отправились, то проверяется нет ли во флэш неотправленных данных и если есть — отправляются и они. После чего станция несколько секунд ждет команды от сервера и если команды не поступают, то опять засыпает.
Все параметры могут быть заданы с сервера. Тем же путем может прилететь обновление прошивки станции.
Сама станция (без внешних датчиков) — это одна плата размером примерно 8х12 см (много места занимают разъемы для внешних датчиков).
Вот как-то так :)
Спасибо! Мне интересно ваше мнение, как разработчика на STM32. Я в настоящий момент на начальном уровне разбираюсь в восьмибитных контроллерах STM8, но хочу перейти на STM32. В таких сложных проектах, как вы описали, используются готовые библиотеки типа SPL и LL, или у вас все свое самописное? Использовалась ли какая-нибудь RTOS? Какую среду разработки использовали для написания прошивки?
Я думаю, что перейти будет несложно — документация у них однотипная, а в дебри архитектуры Вам вряд ли придется лезть слишком глубоко :) Я наоборот — хочу для интереса повозиться с STM8, попробовать сделать на них пару вещей для дома, уже приобрел пяток STM8L151 :)
Да, я использую SPL, в основном для настройки переферии. Иначе все равно придется или изобретать свою SPL или запоминать битовые маски в разных регистрах. В критичных ко времени выполнения местах работаю напрямую с регистрами. Пару раз использовал CUBE, но использовал так — создал в CUBE проект, в нем настроил нужную мне периферию, а потом просто выдернул нужный файл исходников из проекта CUBE в свой проект :) Так было, например, когда я делал подключение своего девайса по USB как HID-устройства, без драйверов. Потом мне еще пришлось нормально перелопатить этот кубовский исходник (и информацию по USB HID) чтобы заставить его работать как мне нужно :)
Исходники библиотек я всегда сразу копирую в свой проект, потому что иногда приходится менять в них какие-то моменты. Плюс к этому я копирую в проект файлы настройки линкера и стартовый файл на ассемблере — они в IAR обычно лежат в общих папках среды и по умолчанию среда работает с ними оттуда, не предполагая, что они будут меняться пользователем. У меня — часто меняются :) Например, для бутлодера и для приложения, работающего на контроллере с таким бутлодером.
RTOS — нет, не использую. Пока не было задачи, в которой ее использование было бы оправдано.
Среда разработки — IAR. Понятно, что денег на ее покупку у меня никогда не было и вряд ли когда-то будут, так что… :)
Это коммерческий проект для агрометеорологов. Мне заказывали написание прошивки для станций, вылившееся еще и в переделку почти всего железа :) Так что увы, видеть эти графики могут только коммерческие пользователи и разработчики :( Картинки рисует сайт, я его не касался, но думаю, что это какие-то библиотечные WEB-графики, не думаю, что веб-программист сам писал их на HTML и CSS :) Хотя кто знает…
это ж HighCharts, (точнее HighStock) бесплатно для некомерческого пользования. Даёшь ему json в виде [[tm, value],...,[tm, value]] и вот он график, столбиками, линией, с заливкой и т.п.
Visual Studio еще никто не сделал.
Code — неплохая, но еще игрушечная
В Студии — и под Линукс, и по Виндовс хоть на ++ хоть на C#, и для Андроида, и для iOS и на Phyton и вообще для всего-всего
Да и Ардуина есть с ESP32
Иностранное:
— программа для проектирования платы
— компоненты
— микроконтроллер и радиомодуль
— изготовление платы
— программа для проектирования корпуса
— 3д принтер для изготовления корпуса
— припой/паяльник (наверняка)
— программа для разработки микропрограммы
— 99% кода микропрограммы (библиотека mysensors)
— фотоаппарат
— холодильник (возможно российская сборка около 20%)
— ютюб
— ПК+компоненты/монитор/ОС, использованные для разработки
Российское
— разработка платы/работа (в принципе важный пункт)
— 0.1% кода микропрограммы
— 20% холодильника
— пластик для принтера (вероятно)
Но, естественно, не отменяет того, что автор молодец.
Ну а поделу показали бы хотя бы близкое по уровню свое.
Ваш скетч занимает 11 кБ (и это очень неплохой результат для ардуинщика) :) В моем последнем не слишком большом проекте (месяц вместе с отладкой) примерно в 22 раза больше исходного кода, написанного мной. В более раннем проекте — больше 350 кБ исходников. В еще более раннем — 300 кБ исходников на C/C++ и больше 500 кБ исходников на Verilog :)
это просто экземпл, поэтому и 11кб. На самом деле при всех хотелках и той логике работы которая мне нужна там так — Скетч использует 32992 байт. Поэтому все в основном на кортексах в доме
конечне не ком.разработки, это слава богу не мой хлеб, но как хобби вполне достаточно килобайт ;) а ваша разработка не ваша ((((… я начинаю Вас понимать
На самом деле это и для меня не является хлебом :) Просто предложили шабашку, очень хорошая оплата за месяц довольно простой работы в свободное время :)
У меня есть и мои проекты, которые даже посложнее этого коммерческого. Вот, например, просто из интереса ковырялся с одной штукой:
Но, естественно, не отменяет того, что автор молодец.
Бесспорно :) Его уровень ардуинства на голову выше 99% всех остальных — он хотя бы смог сделать нормальную единую плату и нормальный корпус :) Большинству и это недоступно :)
Берк — талант. Спасибо за интересный проект. Тот, кто хоть что-то сделал своими руками понимает, насколько это сложно разработать подобное законченное и довольно красивое изделие. Нужны не только глубокие знания, но и воля. Берк, не обращайте внимание на злобные шипения, удачи Вам и дальнейших интересных проектов!
У меня к Вам один вопрос — почему диптрейс, а не easyeda? Попробовал диптрейс — ужас, а не инструмент, в easyeda все гораздо проще.
Спасибо за оценку. Я внимание особо на сэмплах не заостряю, но так как и сам любитель иногда потролить то могу и ковырнуть «палкой кучу», чтоб дальше лилось)). Ну а впереди еще куча инфы, так что кому всем г… метам просьба почистить лопаты и приготовится)).
Почему не изидата, хз, я там пробовал, не сложилось у меня с ней, не то что бы не освоил, просто почему то неудобно мне в ней, не моя, а Диптрейс зашел. Вот Альтиум еще ничего… Впринципе по этому и Солид а не Фьюжин например, пробовал второе, тоже не мое.
Господа, а есть еще какая-нибудь система поддерживающая Modbus RTU кроме OpenHab?
Как-то тыкал палочкой MajorDoMo, но он вроде только Modbus TCP умеет.
С другой стороны, использовать SLA для корпусов крупнее пары см — это несколько странно :)
Хотя, может быть, имеет смысл использовать их и для мелких корпусов типа брелков или часов.
Всякие панельки для экранчиков или кнопок/датчиков на стену аккуратные.
FDM — для функциональности, для более крупных и/или массовых изделий :)
Мне печатать много и не надо и пока склоняюсь к такому.
Плюсы — хорошее качество печати, особенно это проявляется на моделях с высокой детализацией.
На самом деле я тоже давно уже поглядываю на тот же Аникубик Фотон-С, но на вопрос своей жабы «И что ты будешь на нем печатать, чего не можешь напечатать на имеющемся FDM?» я пока ответа не нашел :)
Но это я так, по слухам, вычитанным в инете, лучше сами поройтесь по этому вопросу на тематических ресурсах :)
работает в основном тексте обзора. В комментариях нет
mySKU.me/blog/aliexpress/72638.html
О, вроде и в комментарии сработало
Посмотрите на тот же esphome, намного понятнее выглядит, хотя тоже не идеален.
вэлкам
Кстати, на Хабре один комментатор спросил про описание протокола обмена сообщениями между нодами и центром, оказалось, что такого описания вообще нет :)
:)))
Хотя нередко все работает сразу и по инструкциям, которых у них все же полно.
Хотя окружение диктует, конечно, но бороться можно, я вот всю родню от вайбера отвадил…
Классная тема! Сложновато для меня, но потенциал весьма и весьма
Датчик температуры в комнате весьма условен и сильно зависит от его расположения. А когда делаешь климат, то настраиваешь систему один раз и забываешь про него
Нравится Вам занятие, занимайтесь… какого… Вы с выпученными глазами пытаетесь загрузить им по шею других?
Если задача понтануться перед пацанами дворовыми, то тут свистелки и перделки с выводом на телефон и эротическим массажем. Вобщем кому что надо :)
8 ядер, 6-12 гигов памяти, 3-6 камер в сосвременных смартфонах не смущают? Где большинство только смотрит «ленту» ВК и «чатится в чатиках».
Почему Вы считаете критерием «востребованности» частоту, объём flash и Wi-Fi?
А не себестоимость, время разработки, поддержки, и т. д.?
Вот я хочу счётчик воды. Казалось бы, импульсы можно на NE555 считать. Удобно это? Нет. Нужен экран. Хочется хороший экран. Нужно иметь возможность считывать данные удалённо и, наоборот, передавать их на сервер. Arduino и «шильды»? Зачем? Всё практически есть в ESPxx.
Можно делать самому, можно просто взять один из множества готовых «конструкторов» и просто реализовать то, что нужно.
Не нужно свои цели, критерии, пути с непоколебимым максимализмом распространять на всех.
Про счетчик воды с красивым экраном даже комментировать не буду :)
«Скачал скетч NNN, а он не работает, помогите!» — самый распространенный метод отладки в такой «разработке» :)
Ну и не нужно сравнивать теплое с мягким — знание архитектурных особенностей платформы и знание того что и почему делает программа :)
Правильно, потому что ехать — это шофер. А спроектировать машину — это разработчик, и там уже не получится не знать как устроена машина :)
Ну, я не знаю… Это как самому сделать в доме отопление: трубы вкривь и вкось, из половины соединений капает вода, батареи стоят на полу на кирпичах… И выставить это в инет «Во, оказывается делать отопление — легко, я за пару дней справился! Вот проект для желающих повторить: ...» :)
habr.com/ru/post/452558/
Счетчик импульсов заинтересовал люто. Обзор планируется?
www.openhardware.io/view/658/EFEKTA-Two-channel-Pulse-Counter-or-nRF52
Из обзора не ясно как дела с автономностью.
Я сейчас только понял что у вас снял показания отправил и все. У меня просто все в онлайне скажем так, по сему видимо такие отличия.
Инфа о статусе будет в группе…
меня прям печалят индивидуумы, типа кул программеры,… покажите ваши
Замер датчиков каждую минуту, передача через GSM-канал каждые 15 минут. Без единого скетча :) И обратите внимание на правый нижний график — напряжение батареи. Это при том, что до 15-16 числа станция работала от аккумулятора без подзарядки от солнечной панельки :)
Но в общих чертах так:
— аккумулятор NiMH из трех элементов по 4200 мА*ч (последовательно)
— микроконтроллер серии STM32L с подключенными кварцами 8 МГц для рабочей частоты и 32.768 кГц для часов реального времени (RTC)
— GSM-модем SIM-800
— 10 аналоговых входов
— отдельный вход датчика направления ветра
— 2 цифровых — для импульсов анемометра и датчика дождя
— модуль питания, следящий за зарядом аккумулятора и подключающий или отключающий солнечную панель для подзарядки аккумулятора, все это в аппаратном виде, на компараторах и мосфетах
— счетчик анемометра — отдельная микросхема, ширина счетчика — 32 бит, в ней же пара сотен байт памяти для хранения данных во время спички микроконтроллера
— счетчик дождя — по прерыванию на микроконтроллере
— встроенный (на плате) барометр BMP180
— 4-мегабайтная флэш (AT45DB321) для сохранения измерений
— небольшой OLED-дисплей 128х64 для настройки
— солнечная панель (вроде на 0.2 Ватта)
К аналоговым входам подключаются всевозможные датчики — влажности, температуры, влажности почвы, увлажнения листа и т.п. У всех у них выходное значение — аналоговый сигнал 0-2 В. Питание на все аналоговые датчики коммутируемое, микроконтроллер включает его перед измерением и отключает после считывания показаний.
Большую часть времени микроконтроллер в глубокой спячке с потреблением меньше 1 мкА — отключено все кроме вачдога и RTC, все выводы в третьем состоянии, содержимое памяти теряется (кроме нескольких ячеек RTC). Вообще вся станция в этот период потребляет около 40 мкА, из которых половина — модуль питания со своими компараторами и стабилизаторами, почти все остальное — флэш, барометр, счетчик анемометра. Все это (кроме счетчика) вводится в глубокий сон. Модему, дисплею и аналоговым датчикам питание отрубается.
Через заданный промежуток времени контроллер просыпается по будильнику (RTC), включает питание датчиков, будит барометр и снимает показания. После этого опять все отключает и засыпает. Когда приходит время отправки данных на сервер, включается питание модема, он заводится и данные всех измерений (минимум, максимум, среднее) с последней передачи отправляются серверу. Если не получилось отправить — сохраняются во флэш. Если отправились, то проверяется нет ли во флэш неотправленных данных и если есть — отправляются и они. После чего станция несколько секунд ждет команды от сервера и если команды не поступают, то опять засыпает.
Все параметры могут быть заданы с сервера. Тем же путем может прилететь обновление прошивки станции.
Сама станция (без внешних датчиков) — это одна плата размером примерно 8х12 см (много места занимают разъемы для внешних датчиков).
Вот как-то так :)
Да, я использую SPL, в основном для настройки переферии. Иначе все равно придется или изобретать свою SPL или запоминать битовые маски в разных регистрах. В критичных ко времени выполнения местах работаю напрямую с регистрами. Пару раз использовал CUBE, но использовал так — создал в CUBE проект, в нем настроил нужную мне периферию, а потом просто выдернул нужный файл исходников из проекта CUBE в свой проект :) Так было, например, когда я делал подключение своего девайса по USB как HID-устройства, без драйверов. Потом мне еще пришлось нормально перелопатить этот кубовский исходник (и информацию по USB HID) чтобы заставить его работать как мне нужно :)
Исходники библиотек я всегда сразу копирую в свой проект, потому что иногда приходится менять в них какие-то моменты. Плюс к этому я копирую в проект файлы настройки линкера и стартовый файл на ассемблере — они в IAR обычно лежат в общих папках среды и по умолчанию среда работает с ними оттуда, не предполагая, что они будут меняться пользователем. У меня — часто меняются :) Например, для бутлодера и для приложения, работающего на контроллере с таким бутлодером.
RTOS — нет, не использую. Пока не было задачи, в которой ее использование было бы оправдано.
Среда разработки — IAR. Понятно, что денег на ее покупку у меня никогда не было и вряд ли когда-то будут, так что… :)
У меня тоже куча девайсов и у каждого куча графиков.
Visual Studio еще никто не сделал.
Code — неплохая, но еще игрушечная
В Студии — и под Линукс, и по Виндовс хоть на ++ хоть на C#, и для Андроида, и для iOS и на Phyton и вообще для всего-всего
Да и Ардуина есть с ESP32
Но сама работа — в целом хорошо.
— программа для проектирования платы
— компоненты
— микроконтроллер и радиомодуль
— изготовление платы
— программа для проектирования корпуса
— 3д принтер для изготовления корпуса
— припой/паяльник (наверняка)
— программа для разработки микропрограммы
— 99% кода микропрограммы (библиотека mysensors)
— фотоаппарат
— холодильник (возможно российская сборка около 20%)
— ютюб
— ПК+компоненты/монитор/ОС, использованные для разработки
Российское
— разработка платы/работа (в принципе важный пункт)
— 0.1% кода микропрограммы
— 20% холодильника
— пластик для принтера (вероятно)
Но, естественно, не отменяет того, что автор молодец.
при том там не весь мой функционал добавлен
// *************************** master slave mode is not initialized in this version, ..stub *******************************
У меня есть и мои проекты, которые даже посложнее этого коммерческого. Вот, например, просто из интереса ковырялся с одной штукой:
Выделенные файлы — полностью мои :)
У меня к Вам один вопрос — почему диптрейс, а не easyeda? Попробовал диптрейс — ужас, а не инструмент, в easyeda все гораздо проще.
Почему не изидата, хз, я там пробовал, не сложилось у меня с ней, не то что бы не освоил, просто почему то неудобно мне в ней, не моя, а Диптрейс зашел. Вот Альтиум еще ничего… Впринципе по этому и Солид а не Фьюжин например, пробовал второе, тоже не мое.
Тем паче, с полезными ссылками и практическими наглядными примерами. И-своими руками и головой.
Как-то тыкал палочкой MajorDoMo, но он вроде только Modbus TCP умеет.
4pda.ru/2019/05/20/357569/