Сообщество - Arduino & Pi
Добавить пост

Arduino & Pi

1 378 постов 20 571 подписчик

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

Разработка IoT-шлюза на базе Raspberry CM3+

Разработка IoT-шлюза на базе Raspberry CM3+ Raspberry pi, Интернет вещей, Промышленность, Программирование, Автоматизация, Длиннопост

Рисунок 1 — Плата устройства

Большой опыт работы в сфере промышленной автоматизации и АСУТП, казалось бы, должен способствовать тому, что со временем уже много всего видел и много всего знаешь. Но не тут-то было. Оказывается, иногда могут возникать задачи и проекты, которые трудно реализовать стандартными средствами. Так под один крупный проект по мониторингу и управлению в «облаке» одного небезызвестного завода N требовалось найти подходящее железо. Однако оказалось, что в России по требованиям помехозащищенности устройства и открытости системы ничего подходящего не существует. Попытка заказать идеально подходящее нам устройство из-за рубежа провалилась, поскольку на территорию нашей страны оборудование с пометкой «IoT» весьма трудно ввести в промышленных масштабах. Другие же поставщики не устроили сроками доставки в 12 недель при небольших объемах и ценой. Поэтому в голове родилась и плотно осела мысль о создании своего устройства. Причем такого, чтобы оно было универсальным и подходило не только конкретно под этот один проект, а под множество других. В итоге от момента зарождения идеи, подбора поставщиков и корпуса, разработки платы, её отладки и тестирования, написания инструкций и технической документации прошло весьма много времени. Но зато теперь я держу с легким трепетом в руках полностью законченное и рабочее устройство, и могу заявлять, что мы это сделали!

Почему именно Raspberry?


Raspberry Pi – это небольшой и дешевый универсальный микрокомпьютер, гибко настраиваемый под любые задачи. С 2014 года он выпускается как самостоятельный вычислительный модуль Compute Module, то есть из привычной платы с различными интерфейсами и разъемами осталось только самое важное: процессор, ПЗУ и ОЗУ. Такое исполнение позволяет использовать это устройство для любых мыслимых и немыслимых задач, все лишь упирается в возможности фантазии для создания обвязки вокруг модуля. Стоит также заметить, что с момента выхода в свет первой версии устройства вышло уже три версии модулей, а после выхода Raspberry Pi 4, вероятно, стоит ожидать еще и четвертую версию в скором времени. Всё это говорит о том, что разработчики активно развивают свой продукт, увеличивают его мощность и быстродействие, и что их устройство пользуется определенной популярностью у людей. Эта популярность не беспочвенна: за всё это время они зарекомендовали себя как надежные устройства, способные решать задачи различного уровня в любых условиях, даже в космосе. Также программировать на Raspberry Pi условно просто, они обладают большим количеством интеграторов по всему миру.


Открытая операционная система Linux позволяет устанавливать на устройство абсолютно любое программное обеспечение в зависимости от требуемой задачи. Например для решений в области умного дома возможны стыковки с OpenHab, Home Assistant, iRidiumMobile, NodeRed и др. Для промышленности возможна установка SCADA-систем, таких как CODESYS, Rapid SCADA, OpenSCADA с возможностью использовать устройство как шлюз для передачи данных на верхний уровень по протоколам MQTT, http, REST API или CoAP. Также возможна интеграция с различными облачными сервисами.

Что по интерфейсам?

Разработка IoT-шлюза на базе Raspberry CM3+ Raspberry pi, Интернет вещей, Промышленность, Программирование, Автоматизация, Длиннопост

Рисунок 2 — Вид платы сверху и снизу

Устройство в минимальном исполнение поддерживает следующие интерфейсы:


- RS485 х 2;

- RS232 х 1;

- CanBus х 1;

- 1-Wire х 1;

- USB х 1;

- Ethernet х 1;

- SMA x 2;

- SIM х 1;

- miniPCIe х 2;

- HDMI 4k х 1;

- MicroUSB х 1;

- MicroSD х 1;

- GPIO х 1.

- LED х 1 (программируемый);


Вышеописанные интерфейсы позволяют внедрить устройство практический в любой проект. А дополнительные аппаратные модули для установки в слоты Mini PCI-e от сторонних производителей решают проблему с наличием связи и интернета у устройства. Такой путь с установкой модулей связи нами был выбран не случайно, поскольку наличие USB-адаптеров (так называемых «свистков») является не очень надежным и качественным вариантом, а установка промышленных роутеров по типу Robustel R2000-3P является дорогостоящим (около 12 т.р.). Поэтому мы остановились на установке двух разъемов под модули Mini PCI-e, которые можно использовать по собственному желанию:


3G, LTE, GPRS модуль (HUAWEI MU709s-2, цена: 2,5 т.р.);

Wi-Fi модуль с возможностью подключения к нему направленной антенны;

NB-IoT модуль;

LoraWan модуль для построения сети «интернет вещей».


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

Дополнительные решения

- Аппаратный watchdog;

- Аппаратные часы реального времени;

- Энергонезависимая память EEPROM;

- Металлический корпус и крышки (алюминий 3 мм);

- Диапазон питания 9-36 В;

- Температурный диапазон -25...+80°C (по документам, тесты еще не проводились).

Разработка IoT-шлюза на базе Raspberry CM3+ Raspberry pi, Интернет вещей, Промышленность, Программирование, Автоматизация, Длиннопост

Рисунок 3 — Устройство AntexGate в корпусе

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

Сенсорная скрипка на Arduino

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

Сенсорная скрипка на Arduino Arduino, Своими руками, Длиннопост

В одном китайском интернет-магазине была куплена детская игрушка - электрическая скрипка на трех батарейках АА. Скрипка и пластиковый смычок с резинкой от трусов вместо тетивы. Алгоритм работы был такой. Смычок используется лишь для вида, а звуки извлекаются второй рукой. При зажимании струн пальцами левой руки воспроизводилась мелодия. Одно нажимание на струны - одна нота. В памяти микросхемы около 4 или 5 мелодий. Звук теоретически напоминал скрипку, но слишком громко и резко.


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


Новый алгоритм такой. При зажимании рукой струн начинает воспроизводиться mp3 мелодия. В момент отпускания струны мелодия ставится на паузу. При повторном нажимании воспроизведение продолжается. Чтобы мелодия не заикалась, пауза включается не сразу, а через полсекунды или секунду. То есть, пока держишь или перебираешь струны, мелодия воспроизводится. Остается только в такт водить смычком второй рукой. Убираешь пальцы со струн, все замолкает. Аплодисменты.


P.S. К сожалению китайский алгоритм понотного воспроизведения реализовать не удалось, а в принципе он тоже прикольный (кроме звука).


Используемые детали:

- Arduino Nano, а лучше Pro Mini (для энергосбережения);

- mp3 плеер DFPlayer (китайский аналог);

- сенсорная кнопка ttp223;

- тактовые кнопки с длинными кнопками (чтоб длины хватило с учетом толщины корпуса) 2 шт;

- Движковый (ползунковый) выключатель с длинным рычагом (чтоб длины хватило с учетом толщины корпуса) 1 шт;

- резисторы 1кОм и 10 кОм;

- конденсаторы SMD разных номиналов в диапазоне 0~50 пФ, для настройки чувствительности струн;

- провода, термоусадка, изолента и т.п.


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


Схема:

Сенсорная скрипка на Arduino Arduino, Своими руками, Длиннопост
Сенсорная скрипка на Arduino Arduino, Своими руками, Длиннопост

Реализация:


Подключаем модуль кнопки TTP223 к пину D2, а сенсор припаиваем к струнам дополнительным проводом.


Подключаем кнопки 2 и 3 с подтягивающими к земле (pull-down) резисторами 10 кОм к пинам D3 и D4.


Подключаем DFPlayer к питанию, а также RX и TX через резисторы 1кОм к пинам D10 и D11: TX от плеера к RX Arduino, а RX плеера к TX Arduino.


Динамик подключаем к выводам DFPlayer SPK1 и SPK2 не более 3Вт. Возможно, потребуется установить резистор 1кОм, чтобы звук был лучше.


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


В корпусе были просверлены отверстия под кнопки и переключатели, а одна кнопка задействована из старой схемы. Также было сделано отверстие под microSD/TF Card сбоку.


Крепление Arduino и DFPlayer’а было сделано из куска разъема PCI старой материнской платы. Я его распилил вдоль ножовкой, вытащил контакты. Нарезал по размеру. Получилась пластиковая планка с отверстиями для ножек модулей с нужным шагом. Ее на проволоку припаял к корпусу, залил термоклеем. Получился разъем, куда удобно вставлять модули. Но, поскольку в разобранном PCI разъеме контактов уже нет, немного переделал выводы плат. Перепаял ножки таким образом, чтобы снизу была достаточная длина для вставки в импровизированный разъем, а сверху ножка тоже торчала для подпайки навесным монтажом.


То же самое сделал с кнопками: на проволоку припаял к корпусу, залил термоклеем.


Кнопка на пине 3 - это перемотка трека вперед ( короткое нажатие) и назад (длинное нажатие).

Кнопка на пине 4 - это громкость. Короткое нажатие - увеличение громкости на единицу, длинное нажатие - уменьшение сразу на 3 единицы (чтоб не маяться с длинными нажатиями).

Остальные кнопки в процессе разработки и переделки девайса самовыпилились.

Сенсорная скрипка на Arduino Arduino, Своими руками, Длиннопост
Сенсорная скрипка на Arduino Arduino, Своими руками, Длиннопост
Сенсорная скрипка на Arduino Arduino, Своими руками, Длиннопост
Сенсорная скрипка на Arduino Arduino, Своими руками, Длиннопост

Энергосбережение:


После полной отладки и тройной перепроверки выпаял светодиоды RX, TX, LED13 и питания с Arduino.


Подключил питание через VIN в обход стабилизатора напряжения.


Стандартные батарейки заменил на первые попавшиеся аккумуляторы размера AA. Плата питается от 4,5В. Этого достаточно.


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


Подводные камни:


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


Основная сложность была с сенсорными струнами. Сначала сенсор был реализован силами самой Arduino через библиотеку CapacitiveSensor. Срабатывания сенсора были не предсказуемыми. В какой-то момент подвернулась красная сенсорная кнопка TTP223. Удобство заключается в том, что на плате сразу распаяна микросхема с автоподстройкой сенсора и возможностью за счет добавления конденсатора регулировать чувствительность сенсора. Также можно подпаяться к сенсору со специальной площадки или сразу на конденсатор.


Кстати, с автоподстройкой есть один неприятный момент. Кнопка самокалибруется при подаче питания. В даташите написано, что первые 0,5 секунды нельзя касаться кнопки. Если включаешь питание игрушки, при этом держась рукой за струны - струны перестают работать до следующей автокалибровки. Надо просто отпустить струны и подождать пару секунд. Та же история, когда на пластиковом корпусе накапливается статика. Но вообще в реальной жизни это не сильно портит удовольствие и случается редко.


Еще один нюанс, это при подборе конденсатора для кнопки TTP223 необходимо тестировать чувствительность сенсорных струн именно в собранном корпусе. Иначе может быть такая ситуация, что струны начнут срабатывать на расстоянии нескольких сантиметров от руки или наоборот, только если браться за них двумя руками. На чувствительность влияет всё. И корпус и длина струн, и длина провода от сенсорной кнопки, припаянной к струнам. Поэтому я и не указал емкость конденсатора. На фотографии видно, что у меня запаяны два конденсатора в параллель, потому что не оказалось нужной емкости. Кстати конденсаторы были выпаяны из старой материнской платы компьютера. Проблема smd конденсаторов, что по ним никак не определить номинал. Благо нашелся правильный мультиметр. С какой-то не нужной платы нашел два подходящих, и то пришлось запараллелить. Диапазон конденсаторов настройки из даташита на TTP223 0~50пФ.


Mp3 модуль DFPlayer также оказался с особенностями. Поскольку у меня был китайский аналог, то возникали проблемы с управлением. В итоге реализована самая простая схема без обратной связи и энергосбережения. Просто отдаем команды плееру от Arduino без обратной связи. Библиотека DFRobotDFPlayerMini не во всех версиях оказалась совместима с модулем плеера. В итоге методом тыка подошла версия 1.0.5 с ограничениями. Ну и еще неприятный момент, связанный с невнимательностью – ошибка полярности или подача напряжения на неправильные пины убивают модуль плеера сразу без возможности восстановления. В Ардуине можно хотя-бы диод шоттки заменить или регулятор напряжения.


Проект на Github

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

Motor Shield 2 А L298P Arduino / Ardublock

Motor Shield 2 А L298P Arduino / Ardublock Arduino, Ardublock, Видео
Motor Shield 2 А L298P Arduino / Ardublock Arduino, Ardublock, Видео
Показать полностью 2

USB COM - Manager - Arduino / ArduBlock Управление компьютером

4/7 сегментный индикатор TM1637 - Вики Учебник Arduino / Ardublock

4/7 сегментный индикатор TM1637 - Вики Учебник Arduino / Ardublock Arduino, Ardublock, Видео, Длиннопост
4/7 сегментный индикатор TM1637 - Вики Учебник Arduino / Ardublock Arduino, Ardublock, Видео, Длиннопост
4/7 сегментный индикатор TM1637 - Вики Учебник Arduino / Ardublock Arduino, Ardublock, Видео, Длиннопост
4/7 сегментный индикатор TM1637 - Вики Учебник Arduino / Ardublock Arduino, Ardublock, Видео, Длиннопост
Показать полностью 4

Плата для хранения данных на SD Карте - Вики учебник Arduino / Ardublock

Плата для хранения данных на SD Карте - Вики учебник Arduino / Ardublock Ardublock, Arduino, Arduinogeek, Видео, Длиннопост
Плата для хранения данных на SD Карте - Вики учебник Arduino / Ardublock Ardublock, Arduino, Arduinogeek, Видео, Длиннопост
Плата для хранения данных на SD Карте - Вики учебник Arduino / Ardublock Ardublock, Arduino, Arduinogeek, Видео, Длиннопост
Плата для хранения данных на SD Карте - Вики учебник Arduino / Ardublock Ardublock, Arduino, Arduinogeek, Видео, Длиннопост
Плата для хранения данных на SD Карте - Вики учебник Arduino / Ardublock Ardublock, Arduino, Arduinogeek, Видео, Длиннопост
Показать полностью 5

Книга - Мобильныи китаискии робот на Arduino / ArduBlock

Подключение Дисплея 12864B3 128х64 SPI - Arduino / ArduBlock

Данный материал рассчитан для лиц старше 4 лет / младше 10 лет 

Подключение Дисплея 12864B3 128х64 SPI - Arduino / ArduBlock Arduino, Ardublock, Видео
Подключение Дисплея 12864B3 128х64 SPI - Arduino / ArduBlock Arduino, Ardublock, Видео
Подключение Дисплея 12864B3 128х64 SPI - Arduino / ArduBlock Arduino, Ardublock, Видео
Показать полностью 3
Отличная работа, все прочитано!