Сообщество - Arduino & Pi

Arduino & Pi

1 493 поста 20 825 подписчиков

Популярные теги в сообществе:

49

Arduino. Первый опыт. Школьный звонок и недоwebserver.

Добрый день. Хочу поделиться с вами первым горьким (или не очень) опытом. Было решено изучить что-же такое arduino и как его практически можно было использовать. Естественно решил сделать замену школьному звонку, с возможностью управления по локальной сети без поднятия web сервера и с записью расписания звонков на microsd карту.
Что использовалось:

- arduino mega 2560;
- ethernet модуль enc28j60;
- модуль MicroSD Card Adapter на базе LVC125A;
- твердотельное реле на базе G3MB-202P;
- модуль часов реального времени DS3231M;
- макетная плата 70*90;
- кривые руки;
- нулевые знания в arduino и С++;
- боль и слезы.

Что в итоге вышло:

Теперь по порядку.

Поскольку познания в C++ у меня были совершенно никакие, поэтому было решено брать arduino mega 2560, для того чтобы был запас памяти, ввиду работы со строками (массивами). Модули взял какие были в продаже, не изучив возможные проблемы работу с ними (первая ошибка). По отдельности все модули, кроме модуля реального времени работали нормально, RTC модуль потом пришлось заменить на DS3231. В целом с данным модулем проблем дальше не было, ибо он подключается к шине (интерфейсу I2C).

Этап слез и боли.

Когда уже где-то на горизонте замаячил финал и сладостное предвкушение от результата работы, жизнь вновь окунула меня в жесткие реалии. Ethernet модуль и microsd ну никак не хотели работать вместе. Данные модули подключаются к шине (интерфейсу) ICSP и вроде как все должно работать сразу и без проблем. Изучение теории интерфейса ICSP и поиск по форумам ничего не дал. Я грешил на модуль microsd, купил второй такой же, и ничего.....
Работа полностью встала, но решение все же нашлось, даже два: 1. купить модуль другого производителя на другом чипе; 2. исправить недоразумение инженерной мысли создателя сего модуля. Решение заключалось в том, что нужно было кинуть перемычку с 13 ноги LVC125A на резистор R1 и всё. Иначе данный модуль не давал возможность работать другим модулям на данном интерфейсе (это если утрировать).

Вытираем слезы и радуемся, мы не настолько плохи.

Чтобы все это дело не паять к arduino было решено сделать шилд для выноса шины ICSP, I2C и кнопки ресет. Купил макетную плату, отпилил лишнее, припаял пины в местах выводов интерфейсов и кнопки ресет. Любителей качественной пайки и перфекционистов прошу не смотреть.

Справа внизу подключен модуль RTC.

Еще подсказка для новичков, твердотельное реле нельзя проверить мультиметром и говоря русским языком твердотельное реле работает только под нагрузкой (я использовал обычную лампу накаливая). И еще, ногу DC+ реле я подключил через тумблер, для возможности отключения звонка.

Все это дело отлично вписалось в корпус роутера D-Link DIR-400.

На этом я аппаратной частью можно и закончить.

Программная часть.

Поскольку памяти у нас достаточно, я решил не экономить и использовать строки, вместе с глобальными переменными, да это плохо, но с моими скудными знаниями это было неплохое решение.
Используемые библиотеки:

- EtherCard.h;

- SD.h;

- DS3231.h;.

Почему именно они.

DS3231.h - может показывать в

ремя в unixtime и в виде hh:mm:ss в формате string. Также умеет работать с днями недели.

SD.h - ничего особенного, просто с ней получилось сразу подружиться.

EtherCard.h - выбор библиотеки для работы с сетью стал для меня камнем преткновения. Поскольку мне хотелось отсылать расписание по сети, получать ответ, синхронизацию по NTP и все это делать со своего сайта (или приложения), а также не хотелось поднимать web сервер (как многие рекомендуют), выбор пал на данную библиотеку. Суть решения свелась к тому, что я отсылаю запрос вида http://ip/?command=команда, arduino парсит запрос и ищет нужные вхождения в строке. После чего шлет http ответ, либо 200 OK, либо 404 not found, это в упрощенной версии. (этот момент более подробно описан в скетче). А в нормальной реализации arduino возвращает json строку и сайт обрабатывает её. В Json строке может быть получено текущее время на arduino, логи за определенный период, текущий урок и пр. информация. Данная реализация находится в стадии допиливания и поэтому пока её не выкладываю.

В основном используется пока что три команды:

http://ip/?3bells=now - дает тройной звонок;

http://ip/?acttim=timenow - принудительная синхронизация с NTP сервером

http://ip/?nwrasp=08:00:00=08:45:00=... (макс. 20 звонков) - передаем новое расписание по сети и сохраняем его на карту.


Прилагаю ссылку на код скетча на ваш суд, код старался максимально комментировать.

Ссылка


p.s. какие проблемы выявлены:
1. иногда запрос не доходит до arduino и приходиться повторно отправлять команду.
2. при проблемах с локальной сетью, не всегда корректно загружается.


Отдельное спасибо @pangoleen.

Показать полностью 3
43

Игра - Волк собирает яица на Arduino uno + OLED 128x64

Знаменитая игра, которая стала символом целой эпохи для всех школьников конца восьмидесятых – начала девяностых.


Идея предельно проста – Волк должен собирать яйца, катящиеся по специальным желобам, и не дать им упасть. При помощи четырех кнопок управления героя можно поворачивать к этим желобам, и нужно постараться сделать это в тот момент, когда яйца уже почти падают. По мере прохождения, яиц становится все больше, и они начинают катиться быстрее, так что для того, чтобы далеко продвинуться в этой игре, нужно быть очень внимательным и сосредоточенным. Хорошая реакция и чувство ритма – ключевые качества, к которым предъявляются требования в игре Волк Ловит Яйца. Уронить можно всего три яйца, и если это произойдет, игру придется начать сначала.


Соберите схему на макетной плате, загрузите прошивку с программой (игрой) и добро пожаловать в мир 90х игр. Удивите своих друзей, родителей и родственников своей новой самодельной мини приставкой.

Показать полностью 1
12

Вертикальный Робот Рисовальщик на Arduino Uno + L293D / L298N

Видео курс содержит подробные видео по настройке программы для робота рисовальщика. Файлы программы, файлы конфигурации, и несколько примеров. Схема подключения моторов.

72

Металлический корпус для Raspberry Pi

Компания SilverStone представила компактный корпус под названием PI01. Новинка интересна тем, что предназначена не для ПК, а для одноплатных компьютеров Raspberry Pi.


Корпус универсальным и подходит практически для всех моделей "малинового" компьютера. Заявлена совместимость с моделями Raspberry Pi 3B+, 3B, 2B и 1B+, у них одинаковые габариты и внешние порты расположены на одних и тех же местах.

ы

Корпус выполнен из алюминия и служит дополнительным радиатором для платы. Для передачи тепла к корпусу в комплекте с SilverStone PI01 поставляется два небольших алюминиевых радиатора, которые крепятся к чипам и корпусу с помощью термопрокладок.

SilverStone PI01 выполнен в чёрном цвете. Его габариты 90 × 62 × 28 мм (объём 0,16 л) и весит 55 г. Имеются отверстия для крепления к стене или другой вертикальной поверхности.


Новинка поступит в продажу 25 апреля. Цена корпуса SilverStone PI01 для Raspberry Pi составит ~ $20.

Источник: 3dnews.ru

Показать полностью 4
110

Мой первый урок по языку программирования XOD IDE.

Привет, друзья.


Представляю первый мой урок по визуальному языку XOD IDE для микроконтроллеров. Язык разрабатывается российской компанией Амперка.

Сайт языка программирования - https://xod.io/

GitHub - https://github.com/xodio/xod


Обещают летом включить в программу помощь на русском языке.


Программирование осуществляется с помощью блоков, это т.н. ноды. Также сами ноды можно создать из самих же нодов и на С++.


Как раз из нодов я  написал библиотеки для аналогового датчика температуры LM35 https://xod.io/libs/vitaliysh/lm35-thermometer/lm35-thermome... и датчика освещенности i2c

GY-302 BH175 https://xod.io/libs/vitaliysh/bh1750/bh1750/



В следующих уроках я планирую рассказать как писать эти ноды для новичков.


Не пинайте сильно. Это первый опыт. Сейчас подъезжает новый микрофон и звук будет лучше.

Показать полностью 1
511

GSM/GPRS/Wi-Fi+Blynk сигнализация на Arduino

Приветствую всех. В предыдущих частях я рассказал, как сделать GSM сигнализацию на ардуино. Затронул тему изготовления беспроводных датчиков для неё. Обещал сделать датчик, работающий по Wi-Fi. И в итоге так увлёкся, что переработал весь проект.


Итак, я решил, что мобильный GPRS это конечно хорошо, но будет ещё лучше, если сигнализация сможет подключаться к домашней Wi-Fi сети и общаться со смартфоном через интернет и мобильное приложение. Для этого мне понадобилась отдельная плата с Wi-Fi модулем. Я подключил к ардуине плату NodeMcu v3 с чипом esp8266. Управление сигнализацией реализовал со смартфона в приложении Blynk.


Для новой сигнализации спроектировал печатную плату, на которой могут разместиться:


- Arduino Nano V3.0

- NodeMcu v3 для выхода в интернет.

- SIM800L для мобильной связи.

- Радиомодуль NRF24L01 для приёма сигналов от беспроводных датчиков.

- ИК-приёмник

- Датчик температуры DS18B20.

- Термистор.

- Микроволновый датчик движения RCWL-0516.

- Зуммер.

- Микрофон.

- MOSFET транзисторы AO3400A для включения платы NodeMcu и внешних маломощных устройств.

- Разъёмы для подключения других датчиков

- Переключение на резервный источник питания


Кроме того, к свободным пинам могут подключаться любые другие ардуиновские датчики и модули.


Т.к. сигнализация модульная, можно выбрать ту конфигурацию, которая нужна именно Вам.


Связь может осуществляться через SIM800L или NodeMcu на выбор, либо с обоими модулями одновременно (рекомендуется). В последнем случае имеет два независимых канала связи, что более надёжно.

Ардуино и NodeMcu общаются по шине I2C. На плате выведены разъёмы для подключения датчиков по этой шине.

После сборки получаем неприметную коробочку, которую можно спрятать в недоступном месте. Идеально в сочетании с беспроводными датчиками.

Распиновка новой платы немного отличается от схемы предыдущего проекта. Поэтому я решил вынести прошивки в отдельный проект. Дальше будут выходить обновления только для этой платы. Новая версия скетча Signalka.ino подходит и для старого проекта. Ею можно обновляться. Необходимо лишь привести в соответствие номера зарезервированных пинов в файле https://github.com/wisenheimer/Signaling-Blynk/blob/master/l...


Прошивка для NodeMcu написана в среде Arduino IDE. Чтобы собрать проект, необходимо установить библиотеку для esp8266. Как это сделать, можете почитать, например, здесь https://habr.com/ru/post/371853/

Хочу обратить внимание, что с последней версией библиотеки у меня проект не заработал. Плата не хотела подключаться к серверам Blynk. Пришлось откатиться на версию 2.4.2. И проблема исчезла.


Для управления сигнализацией через плату NodeMcu нам надо создать в телефоне приложение Blynk. Это такой конструктор, в котором собирается мобильное приложение из готовых визуальных элементов - виджетов. За каждый виджет нужно платить местной валютой - энергией. Бесплатно даётся 2000 энергии. Если не уложиться в эту сумму, то дополнительную энергию можно докупить за реальные деньги. Мы же из соображений бережливости соберём приложение, которое стоит ровно 2000 энергии.


В статье я не буду затрагивать технические детали по созданию приложения Blynk, настройке и работе сигнализации. Всё это я изложил в файле описания проекта

https://github.com/wisenheimer/Signaling-Blynk/blob/master/R...

Перейдите туда, и следуя инструкции, создайте вот такое приложение:

После запуска и подключения к серверу Blynk увидим следующее:

В терминал будут выводиться сообщения сигнализации. Так же из него можно отправлять в сигнализацию команды управления (AT, СМС и DTMF команды).

Кнопки ALARM, GUARD и EMAIL в данной конфигурации означают флаги управления сигнализацией. Любой флаг можно включить и отключить из приложения нажатием на кнопку.


ALARM - флаг тревоги. Устанавливается в 1 при срабатывании одного из датчиков. Сбрасывается самостоятельно при завершении режима тревоги.

GUARD - флаг постановки на охрану.

EMAIL - флаг отправки сообщений сигнализации на указанную электронную почту. Так же включается и отключается из приложения.


Далее следует перечисление датчиков и их текущее показание. В данном примере у нас подключено два датчика:

18B20 - это датчик температуры DS18B20, распаянный на плате.

RADAR - микроволновый датчик движения RCWL-0516.


При срабатывании датчика на экране телефона появится сообщение тревоги

Если плата NodeMcu потеряет связь с сервером Blynk, то на телефон так же придёт сообщение.

Эти же сообщения отправятся на указанный вами в настройках e-mail.


Как видите, интерфейс очень простой. И при этом полностью функционален. Позволяет осуществлять полный контроль над сигнализацией. И при этом полностью бесплатен!

Можно было бы добавить графики и дополнительные визуальные плюшки. Для этого понадобилось бы докупить энергии. Каждый в праве доработать проект под себя. Я же ограничусь бесплатной версией.


Теперь несколько слов о том, как создать и подключить беспроводной Wi-Fi датчик.

В предыдущей своей статье я описал беспроводной датчик на ардуино с ИК-передатчиком.

Wi-Fi датчик представляет из себя тоже самое, только для связи мы используем радиомодули nRF24L01. Передающий в датчике, принимающий в сигнализации. Под этот модуль уже предусмотрено место на плате сигнализации. Учтите, что при его использовании будут заняты 9, 10, 11, 12 и 13 пины платы ардуино. По этой причине не возможно одновременное использование ИК и Wi-Fi приёмников.


Схема соединения выглядит следующим образом

Скетч проекта лежит по этой ссылке


https://github.com/wisenheimer/Signaling-Blynk/blob/master/n...


Там необходимо будет указать свои датчики, подключенные к ардуино.

В скетче задано два датчика. Вам нужно только вписать свои.

Sensor sens[SENS_NUM]=
{
Sensor(DOOR_PIN,DIGITAL_SENSOR, "DOOR", HIGH, 0),
Sensor(5, DIGITAL_SENSOR, "MOVE", LOW)
};

Первый датчик это геркон, второй - датчик движения.

Пин DOOR_PIN зарезервирован под геркон и соответствует 4 пину ардуины.


При срабатывании любого из этих датчиков по Wi-Fi будет отправлено сообщение RF_CODE, которое примет сигнализация, и включит режим тревоги.


Соответственно в скетче сигнализации нужно аналогично прописать беспроводной датчик


Sensor sens[SENS_NUM]={
Sensor(DOOR_PIN, DIGITAL_SENSOR,"DOOR",  HIGH, 0),
Sensor(DOOR_PIN, DS18B20,  "18B20", LOW, 10, 45),
Sensor(A7,  TERMISTOR,  "TERM",  LOW, 10, 45),
Sensor(6,  DIGITAL_SENSOR,"RADAR",LOW),
#if RF_ENABLE // Датчик с Wi-Fi модулем nRF24L01
Sensor( RF24_SENSOR, "Koridor",RF0_CODE),

Sensor( RF24_SENSOR, "Zal",RF1_CODE)

#endif
};

В примере заданы два беспроводных Wi-Fi датчика, где

RF24_SENSOR - тип датчика

"Koridor" и "Zal" - имена датчиков, которые будут выводиться в сообщениях

RF0_CODE и RF1_CODE - индивидуальные коды RF_CODE, которые отправляют датчики при срабатывании.


В будущем постараюсь добавить поддержку Blynk в прошивку ардуино с модемом SIM800L. Чтобы можно было обойтись без NodeMcu. Пока на всё это не хватает времени.


Скачать проект можно по ссылке https://github.com/wisenheimer/Signaling-Blynk

Показать полностью 9
66

Статьи от CusDeb, опубликованные в Linux Format в 2018

В процессе разработки сервиса cusdeb.com и инструмента Pieman наша команда получает кучу опыта, которым время от времени хочет поделиться с сообществом. Пикабу является с этой точки зрения идеальным ресурсом, который позволяет высказаться. Однако, этот ресурс – не единственное место, куда мы отправляем наши статьи. В 2018-м году в 4-х выпусках русскоязычной версии журнала Linux Format было опубликовано 5 статей, которые были написаны в процессе работы над CusDeb и, как следствие, прямо или косвенно связаны с одноплатными компьютерами.

Статьи от CusDeb, опубликованные в Linux Format в 2018

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

«Nextcloud: не только хранилище». Nextcloud принято противопоставлять Dropbox'у как его свободный аналог, который можно развернуть на собственных вычислительных мощностях. Однако, это однобокий взгляд на платформу, – Nextcloud способен заменить не только Dropbox, но и Google Calendar, Skype или Hangouts, а также многое другое. Лично я очень доволен получившимся материалом, но он не всегда был таким – до него был долгий и мучительный процесс работы по упаковке замечательных идей, которые лежат в основе статьи, в слова. Этот процесс был зафиксирован в нашей самой первой статье на Пикабу – «Домашнее облачное хранилище данных на Raspberry Pi и Nextcloud», а позднее в другой статье, но уже в нашем блоге – «От ownCloud к Nextcloud».

«Raspbian: сборка образа», часть 1 и часть 2. Серия статей, основная цель которой – рассказать как работают такие инструменты, как pi-gen, официальный сборщик образов Raspbian, и конечно же Pieman, который разрабатывается нашей командой и поддерживает уже не только Raspberry Pi, но и Orange Pi.

«Devuan: плод нелюбви к systemd». В рамках этой статьи мы попытались рассказать о причинах раскола сообщества разработчиков Debian, появления ответвления от этого дистрибутива под названием Devuan, а также о многом другом. Разработчики Devuan предлагают пользователям альтернативный вариант развития Debian, как если бы он никогда не встретился с системным менеджером systemd. (Первый раз мы задумались о том, что необходимо рассказать о Devuan, когда добавили поддержку этого дистрибутива в Pieman, а позднее – в CusDeb.)

«Alpine + Docker: поваренная книга разработчика». Эта статья рассказывает о некоторых тонкостях работы с Docker'ом. Примечательно, что в ней, помимо всего прочего, в качестве примера рассматривается Docker-образ с QEMU, контейнер на основе которого, в свою очередь, используется для эмуляции устройств для тестирования собранных на cusdeb.com образов для Raspberry Pi онлайн. Об этой фиче мы подробно писали в нашем предыдущем посте.

Показать полностью 1
Отличная работа, все прочитано!