Рубрика «Разработка под Arduino»

Привет! Сегодня я решил сделать полный гайд по клавиатурам для Arduino.
Внимание! Статья ориентирована преимущественно на новичков!

Во многих проектах появляется необходимость создания возможности ввода данных пользователем. Если вам нужно реализовать большое количество кнопок(относительно), то подключать их по-отдельности становится и долго, и нерационально. Для этой цели лучше выбрать какую-нибудь клавиатуру, но как и к любому выбору, к нему нужно подходить осознано. Какие же бывают виды клавиатур и как с ними взаимодействовать?
Читать полностью »

Приветствую всех читателей раздела «DIY или Сделай сам» на Habr! Сегодня хочу рассказать об очередном своем проекте, эта статья будет о датчике протечки воды на батарейном питании. Как и в предыдущих проектах, это устройство работает на микроконтроллере nRF52832. Есть три версии этого датчика, во всех трех версиях используются готовые модули с nRF52832, в этой статье речь пойдет о средней версии в котором используется модуль YJ-17103 от HOLYIOT.
Беспроводной датчик протечки воды на nRF52832, DIY проект - 1
Читать полностью »

VM, написанная неуверенной рукой гуманитария в среде программирования Arduino с использованием быдлокода и велосипедов. А еще есть компилятор для нее из си-подобного языка, написанный на JavaScript теми же методами. Да. Уже можно спешить в комментарии, бросать камни. Ну а тех, кому все же интересно, приглашаю продолжить чтение.

Троллейбус из буханки
Читать полностью »

По умолчанию все объекты в системе FreeRTOS распределяются динамически — очереди, семафоры, таймеры, задачи (потоки), и мьютексы. Программист видит только «кучу» — область где динамически выделяется память по запросу программы или системы, а что там творится внутри – не ясно. Сколько еще осталось? Неизвестно. Не занимает ли что нибудь больше чем нужно? Кто его знает? Лично я предпочитаю решать вопросы организации памяти еще на этапе написания прошивки, не доводя до ошибок во время выполнения, когда память неожиданно закончилась.

Эта статья является логическим продолжением вчерашней про статическое распределение объектов в памяти микроконтроллера, только теперь применительно к объектам FreeRTOS. Сегодня мы научимся размещать объекты FreeRTOS статически, что позволит более четко понимать что происходит в оперативной памяти микроконтроллера, как именно расположены и сколько занимают наши объекты.

Но просто взять и начать размещать объекты FreeRTOS статически много ума не требуется — FreeRTOS начиная с версии 9.0 как раз предоставляет функции создания объектов размещенных статически. Такие функции имеют суффикс Static в названии и на эти функции имеется отличная документация с примерами. Мы же напишем удобные и красивые C++ обертки над функциями FreeRTOS, которые не только будут размещать объекты статически, но и скрывать все потроха, а также предоставлять более удобный интерфейс.

Статья рассчитана на начинающих программистов, но которые уже знакомы с основами FreeRTOS и примитивами синхронизации многопоточный программ. Поехали.
Читать полностью »

Холмс: Любезнейший, не подскажите где мы находимся?
Пастух: Вы находитесь на воздушном шаре!!!
Холмс: Вы должно быть программист.
Пастух: Да, но как вы догадались?
Холмс: Только программист мог дать столь точный и
при этом столь бесполезный ответ.

… отрывок из известного анекдота

Если Вы когда нибудь программировали под микроконтроллер, неважно, с помощью Arduino IDE или напрямую работали с компилятором для AVR, ARM, или ESP, Вы наверняка видели отчеты о завершении сборки вроде

Sketch uses 1,090 bytes (3%) of program storage space. Maximum is 30,720 bytes.
Global variables use 21 bytes (1%) of dynamic memory, leaving 2,027 bytes for local variables. Maximum is 2,048 bytes.

Или

text data bss dec hex filename
52136 1148 12076 65360 ff50 MyProject

Такие отчеты действительно являются абсолютно точными… Вот только неполными, а потому не такими уж полезными. Проблема в том, что тут учитываются только те данные, которые были распределены статически. А вот все что выделяется через new или malloc в статистику не попадает. Как результат гораздо сложнее отследить моменты когда вдруг перестает хватать памяти и прошивка начинает работать неверно. А ведь памяти в микроконтроллерах обычно не очень много, и за этим параметром стОит тщательно следить.

На вскидку я не вспомнил ни одного примера для младших и средних микроконтроллеров, где бы применение динамического выделения памяти было бы действительно оправданно. Как правило это выделение некоторого буфера или создание каких нибудь объектов в самом начале работы прошивки, после чего эти объекты так и висят в памяти до следующего ресета. А это повод аллоцировать такую память статически – сегодня этим и займемся.

Статья рассчитана на новичков (хотя совсем уж базовые вещи рассказывать не буду – ожидаю, что читатель проштудировал хоть какую нибудь книгу по C++). Поехали.

Читать полностью »

Мобильный телефон BuratinoPhone - 1

Цель проекта — изучение основ разработки под Arduino, отработка технологий изготовления печатной платы, пайки элементов, изготовления корпуса в домашних условиях. Тем, кто захочет повторить или воспользоватся решениями для своих проектов, исходники можно скачать здесь Github.
Читать полностью »

Все началось в тот момент, когда на работе в одном из ящиков со старыми радиодеталями была найдена вот такая поделка. Кто ее сделал — история умалчивает, работала ли она тоже достоверно не известно.

Nixie clock или теплый ламповый свет вам в дом - 1
Читать полностью »

Сегодня речь пойдет о домашней автоматизации, приятно ведь отдыхая где нибудь в теплом и красивом месте следить за тем как поливаются твои цветы. Это вторая система в моей квартире, первая поливает домашних животных, а в этой я уже исправил все недочеты первой итерации.

image

Концепт

При проектировании системы я отталкивался от следующих принципов:

  1. Дешево и сердито — я не хочу тратить много средств на систему, которая поливает 15 недорогих цветков. У меня не оранжерея.
  2. Автономность — она должна работать сама по расписанию, но это не исключает наличие ручного управления.
  3. Удобство — настройка полива происходит по средствам смартфона. Панельки это удобно, но не в этом случае.
  4. Гибкость — цветы в основном все разные с разными кашпо, поэтому поливать их необходимо с разной периодичностью и разным количеством воды.
  5. Удаленность — управлять можно с любой точки планеты, где есть интернет и смартфон.

Читать полностью »

Авторы поставили перед собой задачу создать самое маленькое Arduino-совместимое устройство размером 22 x 25 x 5 мм, при этом разместив на плате процессор ATSAMD21G18A (ARM Cortex-M0+, рабочая частота до 48 МГц, 256 кбайт флэш-памяти, 32 кбайт ОЗУ), цветной OLED дисплей, Wi-Fi модуль ESP8266EX, холдер для карт microSD, 3 пользовательских кнопки (+ кнопка аппаратного сброса) и RGB-светодиод. Вместо обычной расширенной коммутации, когда у Arduino-совместимых плат доступны для внешнего подключения практически все выводы микроконтроллера, PocketScreen из-за своей миниатюрности ограничивается 5 цифровыми и 3 аналоговыми выводами, плюс позволяет подключить внешнее питание.

Краудфандинговый проект: PocketScreen.
Суть проекта: крошечное устройство, совместимое с Arduino, с мощным процессором, цветным дисплеем и Wi-Fi.
Платформа: Kickstarter.
Адрес проекта: kickstarter.com/pocketscreen
Авторы: Гюркан Доган (электронщик), Флориан Келлер (программист), Бенджамин Бек (веб).
Откуда: Людвигсбург, Германия.

image

Читать полностью »

image

Здравствуйте, меня зовут Дмитрий, сегодня я расскажу как я создал GPS часы. В конце статьи будет ссылка на прошивку и CAD 3D модель.
Читать полностью »