В этом тексте я попробовал выполнить обзор аппаратной начинки автомобилей, которые работают на сжиженном пропане. Попробовал разобраться, что там из агрегатов и зачем.
![](http://webcf.waybackmachine.org/web/20230306041452im_/https://habrastorage.org/getpro/habr/hub/479/657/b87/479657b871482c25c8f0a6f32efec586.png)
Программирование микроконтроллеров *
Учимся программировать микроконтроллеры
Новости
Укроп на камнях
![](https://webcf.waybackmachine.org/web/20230306041452im_/https://habrastorage.org/getpro/habr/upload_files/892/6d9/27d/8926d927d1086fc74b77a952c4daa048.jpg)
Покупая одновременно микрозелень и коньяк можно поймать оценивающий взгляд. Не объяснять же каждому, что набор для выращивания приобретается в научных целях. За 98 рублей мы получаем пластиковый контейнер, минеральную вату, пакет семян и инструкцию. «Выдержать в темноте 2 дня… снять крышку… поставить на солнце… периодически поливать». Такие нехитрые действия помогут вырастить небольшое количество полезных растений.
Приблизительно два года назад я приобрел такой набор и успешно вырастил небольшое количество редиса. В это же время ко мне попала книга Уильяма Тексье «Гидропоника для всех». Помимо информации, относящейся к растениям, книга содержит много упрощенных картинок гидропонных установок. Именно Тексье повинен в идее превратить пластиковую коробочку с минеральной ватой в нечто большее.
Starting Electronics: руководство по веб-серверам на Arduino. Часть 7. Отображение DI и AI входов при помощи AJAX
![](https://webcf.waybackmachine.org/web/20230306041452im_/https://habrastorage.org/webt/yo/ny/cq/yonycqhypilhipvabswqucrekgi.jpeg)
От переводчика. Автор руководства медленно, но неуклонно ведёт заинтересованного читателя к пониманию работы веб-серверов на Arduino и всему из этого вытекающему: поняв как это работает, можно самостоятельно создавать очень интересные IoT проекты, функционал которых ограничен только вашей фантазией.
На этом уроке рассматривается динамическое отображение на веб-странице состояния кнопок и аналогового входа при помощи AJAX. Скетч из этого урока можно легко модифицировать для отображения любого (в разумных пределах, конечно) количества кнопок и аналоговых входов, а также доработать код для отображения других параметров контроллера Arduino.
Принцип определения дальности между радио трансиверами
Настал второй за 11 лет случай, когда в профессии программист‑микроконтроллеров понадобилась математика. Она нужна чтобы решить задачу из радиотехники.
В этом тексте показан алгоритм определения дальности между радио трансиверами.
Истории
Оптимизированный доступ к GPIO и не только, часть вторая
Уважаемые жители Habr‑а, В данной статье, речь пойдет о доступе к GPIO, и другим регистрам, используя C++.
Несколько лет назад, я подготовил статью, о том, как можно используя constexpr‑клаcсы, серьезно оптимизировать доступ к GPIO‑порту, таким образом, чтобы команда «PA0.set()» — превращалась в одну‑три ассемблерных инструкции, в зависимости от обстоятельств. Этот класс лишь выглядел обычным, который оптимизировался компилятором. Фактически, это была высокоуровневая оптимизация низкоуровневого кода. Теоретически возможно было перегрузить оператор равенства и писать просто PA0=1 или PA0=0, фактически это вызывало inline инструкцию, позволяющую добавить еще и барьерную инструкцию.
Больше года назад, я потерял доступ к аккаунту Habr, и не мог восстановить его. Однако, спустя некоторое время, эксперименты по оптимальному доступу к полям регистров продолжились. И это привело к использованию нехитрых конструкций, построенных на шаблонах. Сегодня, я расскажу к чему привели эти эксперименты.
Итак. Задача состояла в том, чтобы максимально описать любой регистр, и получить доступ к нему, удобным способом. Я несколько раз пытался различными способами формализовать описание, и мои попытки привели меня к следующему коду.
HabraTab: извлечение и модернизация движка (о, сколько нам открытий чудных...)
![](https://webcf.waybackmachine.org/web/20230306041452im_/https://habrastorage.org/webt/ya/8p/s_/ya8ps_p1d2u9xasbis5gq4oslsm.jpeg)
Недавно на Хабре вышла статья «HabraTab — девайс для хаброзависимых», которая вызвала неподдельный интерес у хабропользователей и, можно сказать, произвела своего рода фурор (на данный момент рейтинг статьи +137).
Действительно, проект довольно интересный как своей концепцией, так и исполнением, как программным, так железным и даже дизайнерским — девайс выглядит весьма своеобразно и оригинально.
Каждый нашёл в нём что-то своё, сам девайс меня не заинтересовал, но зато заинтересовал код, который может получать данные (кроме Хабра) с различных сайтов в интернете и затем эти данные использовать в IoT системах. Также этот код можно использовать для получения данных со встроенных веб-интерфейсов различных устройств в локальной сети, чему можно найти множество применений в реальных проектах по автоматизации (и не только).
Автор любезно открыл код, что сделало возможным его исследование и модернизацию, чем я с большим удовольствием и занялся. Далее я представлю результаты своих изысканий по этой теме.
Итак, начнём…
Часы, которые раскрашивают время
![](https://webcf.waybackmachine.org/web/20230306041452im_/https://habrastorage.org/getpro/habr/upload_files/22a/1b7/177/22a1b7177d216e69d72811e7bda036b4.jpeg)
Время можно узнавать, используя песок, воду, положение солнца, перемещение стрелок на циферблате, электронными циферками… Казалось бы, человечество исчерпало все возможные способы измерения времени. Но нет. Представляем вам часы, которые показывают время... цветом! Хорошая новость: вы сами сможете собрать такие же.
Искусство кройки и шитья или возможность заменить игры в портативной игровой консоли SUP
![](https://webcf.waybackmachine.org/web/20230306041452im_/https://habrastorage.org/getpro/habr/upload_files/a0c/605/c52/a0c605c522c2ef7fb8168c38e30d3742.jpg)
Всем привет, меня зовут Александр. Увлекаюсь программированием и разработкой электроники в свободное время. Мне бы хотелось поведать Вам, товарищи, историю одного программатора.
Starting Electronics: руководство по веб-серверам на Arduino. Часть 6. Автоматическое AJAX взаимодействие с веб-сервером
![](https://webcf.waybackmachine.org/web/20230306041452im_/https://habrastorage.org/webt/lj/ld/h5/ljldh5pcgoxkys7hmrkx54fzeqy.jpeg)
От переводчика. На шестом уроке мы добрались до практически полезного кода — с его помощью можно создать работающий пример «бесшовного» автоматического взаимодействия между клиентом (страницей в веб-браузере) и Arduino веб-сервером, который передаёт данные о состоянии подключённого оборудования и внутренних переменных.
Тут нужно помнить, что это только «концептуальный» и базовый пример такого взаимодействия, максимально упрощённый для лучшего понимания начинающими сути самой технологии. Когда вы поймёте принцип, то далее сможете как угодно улучшать и модернизировать этот код. Например, уделить внимание его быстродействию и безопасности.
Разработка и тестирование программного обеспечения для микроконтроллеров на Python
![](https://webcf.waybackmachine.org/web/20230306041452im_/https://habrastorage.org/getpro/habr/upload_files/477/e9a/54f/477e9a54fcdd6384638beb524ab12035.png)
Рынок интернета вещей растет значительными темпами и разработка кода для микроконтроллеров важна для любых проектов, где подразумевается наличие какого‑либо вспомогательного оборудования или носимого устройства. Для разработки программного обеспечения под встраиваемые микроконтроллеры сейчас (кроме C/C++) можно использовать многие другие технологии (например, TinyGo, Dart/Flutter, Rust), так же как и Python в наборе библиотек MicroPython, который работает как со своей платой (pyboard), так и с другими микроконтроллерами (например платами на процессорах ESP8266 или STM32). В этой статье мы рассмотрим общие подходы к разработке и тестированию программного обеспечения для микроконтроллеров с использованием Python.
Настольная динамическая балансировка маховика
![](https://webcf.waybackmachine.org/web/20230306041452im_/https://habrastorage.org/getpro/habr/upload_files/682/340/93a/68234093a6f9928bde014e2a663b178c.png)
Решил реализовать найденный на просторах интернета проект, но для него нужны были гироскопы. Для гироскопа нужен маховик, но последний имеет динамический дисбаланс. В этой статье разберём метод борьбы с вибрацией этого самого маховика.
NORUAS — домашний Саурон, но это не точно…
![](https://webcf.waybackmachine.org/web/20230306041452im_/https://habrastorage.org/getpro/habr/upload_files/416/b22/a49/416b22a496ef1a88ca8929799d106bc7.png)
Являясь постоянным посетителем Хабра довольно долгий период времени, стал свидетелем того, как многие сегодня уже обыденные технологии были предметом острого внимания на ресурсе в период их появления.
Еще совсем недавно 3D-печать будоражила умы читателей, завораживала своей перспективностью, открывала широкие возможности для творчества, но была недоступна для простого обывателя. Сейчас 3D-принтер можно легко приобрести на китайском рынке по приемлемой цене. Технология 3D-печати не прекратила своего развития. Меняются способы печати, появляются более скоростные модели принтеров. Но сама технология стала привычным для нас явлением.
Немного позднее грянула эпоха IoT и ресурс запестрел статьями про интернет вещей. Автоматизация быта человека привела к появлению множества умных устройств, а их интеграция в единую систему приблизила нас к будущему еще на один шаг, породив концепцию умного дома. Своевременное появление линейки микроконтроллеров от фирмы Espressif Systems с поддержкой Wi-Fi также способствовало бурному развитию IoT. Сегодня любой желающий может купить умное устройство в магазине или собрать его самостоятельно, ознакомившись с инструкциями из интернета.
В последнее время очень популярна тема машинного обучения. Темпы её развития настолько стремительны, что мы не успеваем отследить этапы её развития. Ещё вчера мы умилялись общению с голосовым помощником, а сегодня ставим задачи генерации изображений высокого качества или просим сгенерировать программный код на основе краткого технического задания. Мы уже привыкли что бытовая техника понимает голосовые команды, камеры и телефоны автоматически распознают лица и накладывают нужные нам фильтры, социальные сети или информационные порталы выдают точные и нужные нам рекомендации. И за все этим стоит работа армии незаменимых помощников - моделей машинного обучения, на обучение которых было потрачено и ещё будет потрачено огромное количество человеко-часов, аппаратных ресурсов и терабайт данных. И все эти технологические достижения в совокупности дают нам отличную возможность не только быть их потребителями, а созидать и творить, реализовывать свои самые смелые идеи.
Обзор M5Stack ATOM Lite — маленького, но очень гордого устройства
![](https://webcf.waybackmachine.org/web/20230306041452im_/https://habrastorage.org/getpro/habr/upload_files/17d/9dc/883/17d9dc8839b0f6adfe88f59b0a03e9d8.jpg)
Наверное, практически каждому, кто имеет отношение к разработке под микроконтроллеры, знаком контроллер ESP32. На нём создаются системы умного дома, роботы, квадрокоптеры и многое другое. Отдельным плюсом этого контроллера является невообразимое количество плат и модулей на его основе. Достаточно зайти на tindie.com и можно увидеть всю палитру идей. Но сегодня, я хотел бы провести небольшой обзор устройства на базе ESP32 от компании M5Stack — M5Stack ATOM Lite.
Переделка ККМ Атол в термопринтер
![](https://webcf.waybackmachine.org/web/20230306041452im_/https://habrastorage.org/getpro/habr/upload_files/5fe/9e2/aff/5fe9e2aff2afeabe233f1627e9a7307b.png)
Некоторое время назад я увлекался тем, то писал самодельные прошивки для различных готовых устройств. Так, например, сделал пульт для управления солярием из пульта от охранной сигнализации. А что, смотрите сами:
— корпус есть отличный;
— уже встроена клавиатура и не просто, а более‑менее надежная;
— есть светодиодные индикаторы и динамик (пищалка);
— корпус штатно крепится к стене;
— все собрано красиво и на вид надежно.
Внутри есть платка с AVR микроконтроллером, разъемом внутрисхемного программирования. Что осталось:
— вывести наружу com порт для подключения к серверу;
— приделать реле для включения пускателя солярия;
— подключить блок питания;
— и главное — написать саму прошивку.
Starting Electronics: руководство по веб-серверам на Arduino. Часть 5. AJAX взаимодействие с веб-сервером
![](https://webcf.waybackmachine.org/web/20230306041452im_/https://habrastorage.org/webt/m6/sg/f-/m6sgf-uf3vbt-merg_1ycesmknm.jpeg)
От переводчика. С каждой новой статьёй уроки руководство становится всё более и более практичным и вот мы уже добрались до AJAX взаимодействия между клиентом (браузером) и сервером. Отсюда всего один шаг до практического применения кода и знаний, описанных в этом руководстве.
AJAX позволяет обновлять данные с контроллера на веб-странице, без необходимости каждый раз перезагружать саму страницу, что делает этот метод популярным и часто применяемым на практике, поэтому стоит уделить этому уроку достаточно вашего внимания, а также поэкспериментировать с кодом из этой статьи.
Размышления на тему развития робототехники в России
![](https://webcf.waybackmachine.org/web/20230306041452im_/https://habrastorage.org/getpro/habr/upload_files/ad6/6b8/8b6/ad66b88b63e29ec167be92edeacccf53.png)
Решил написать свои размышления по поводу развития робототехники в россии и что должно быть в федеральной программе робототехники предложенной В.В. Путиным.
Обзор периферийной библиотеки FIL для микроконтроллеров STM32
![](https://webcf.waybackmachine.org/web/20230306041452im_/https://habrastorage.org/getpro/habr/upload_files/993/5ce/a29/9935cea29624bc77d65b735b22aa0fce.jpg)
Приветствую всех читателей моей первой статьи. Меня зовут Назаров Александр, я программист и резидент Ресурсного центра робототехники - структурного подразделения Донского государственного технического университета. Наши проекты направлены, в основном на мобильную робототехнику и его составляющие: изготовление механических узлов и их сборка, проектирование электрических схем и программирование микроконтроллеров.
В этом материале, речь пойдет о поиске решения проблемы, возникающей при обучении новых резидентов центра основам программирования микроконтроллеров - высокий порог вхождения обучающихся заставляет сотрудников проводить дополнительные занятия и постоянно повторять с каждым новым набором путь от основ к сути. Статья несет больше ознакомительный и обзорный характер для резидентов Ресурсного центра робототехники. Однако, материал и наработки по проекту могут представлять интерес для внешних специалистов.
Первый взгляд на Arduino Lab for MicroPython и сравнение с Thonny IDE
![image](https://webcf.waybackmachine.org/web/20230306041452im_/https://habrastorage.org/webt/wi/ln/ru/wilnru2rsfvx4--3ro9h5s8m4t8.png)
В ноябре 2022 года Arduino объявили, что MicroPython стал частью их экосистемы. Вместе с этим разработчики выпустили новую IDE — Arduino Lab for MicroPython. Но чем она лучше той же Thonny, которую до сих пор используют для программирования микроконтроллеров на Python? Давайте разбираться.
EBYTE MA01-AACX2240: программирование работы реле
![](https://webcf.waybackmachine.org/web/20230306041452im_/https://habrastorage.org/webt/60/kv/tm/60kvtmmgzsdzg-zpolenwhnb_gg.jpeg)
Продолжаем изучение внешнего RS485/ModbusRTU блока расширения MA01-AACX2240 компании EBYTE. Сегодня мы разберём устройство Modbus RTU регистров, принципов доступа к ним и получения информации от MA01-AACX2240 и управления его работой.
А также разберём практические примеры скетчей и программирования блока MA01-AACX2240. Особую ценность нашему исследованию придаёт то, что подобная информация отсутствует в интернете и мы выступим тут в качестве пионеров и первопроходцев на этом непростом пути.
В результате MA01-AACX2240 и все блоки линейки MA0x-xxCXxxx0 станут доступны для практического использования.
Итак…
STM8L подробное руководство первых шагов
![](https://webcf.waybackmachine.org/web/20230306041452im_/https://habrastorage.org/getpro/habr/upload_files/337/d54/688/337d546881fa9d440bb996bd352a2b82.jpeg)
Речь пойдет о маломощном микроконтроллере STM8L001J3. Постараюсь подробно рассказать о необходимых шагах для прошивки "hello world" и различных подводных камнях.
Вклад авторов
-
YuriPanchul 1564.5 -
EasyLy 1198.6 -
iliasam 930.6 -
Indemsys 822.0 -
smart_alex 812.0 -
dlinyj 741.0 -
GarryC 597.4 -
haqreu 575.0 -
iiiytn1k 504.0 -
aabzel 485.0