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

Arduino & Pi

1 461 пост 20 774 подписчика

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

1

МЕТЕО_станция на ESP32 и DHT21

МЕТЕО_станция на ESP32 и DHT21 Arduino, Метеостанция, Esp32, Длиннопост
МЕТЕО_станция на ESP32 и DHT21 Arduino, Метеостанция, Esp32, Длиннопост
МЕТЕО_станция на ESP32 и DHT21 Arduino, Метеостанция, Esp32, Длиннопост
Показать полностью 3

Кликер монет hamster kombat на arduino

19
Вопрос из ленты «Эксперты»

Как заставить мигать встроенный светодиод?

Купил платку "Контроллер ESP32 (ESP-WROOM-32) 38pin" именно такую, как на фото ниже. При включении светодиод мигал. В Arduino IDE плату прописал, залил скетч для подключения к сети WiFi, скетч заработал. Решил назад записать скетч blink, а встроенный светодиод не мигает. Светодиод не подключен к выводу 2. Но ведь первоначально светодиод мигал. Как заставить мигать этот светодиод.

Как заставить мигать встроенный светодиод? Arduino, Esp32, Помощь, Вопрос, Спроси Пикабу
20

Танковое управление ровера одним пальцем. Arduino, nrf24l01, MX1508

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

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

Показать полностью
17
Вопрос из ленты «Эксперты»

Прошу совета по UART (Arduino)

Есть два устройства (CB и HU), которые общаются по UART на 38400.
Мне нужно подменять данные, которые HU получает от CB: скажем, в последовательности 0xFF 0x11 0x00 0x00 0xXX подменить нули на свои данные.
С обработкой протокола всё понятно, вопрос про аппаратное подключение: такой способ как на рисунке сработает? Т.е. просто разорвать канал CB.Tx > HU.Rx и внедрить в него мой фильтр. Задержка в передаче на время обработки протокола приемлема.

Прошу совета по UART (Arduino) Вопрос, Спроси Пикабу, Arduino, Своими руками
40

Open source Modbus TCP — RTU конвертор

Open source Modbus TCP — RTU конвертор Linux, Электроника, Raspberry pi, Интернет вещей, Длиннопост

Добрый день коллеги, поговорим о прозрачном конверторе Modbus TCP в Modbus RTU.

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

Мы предложим свободно программируемый контроллер AntexGate с помощью которого можно получить конвертер Modbus tcp – Modbus rtu – can – profitnet – bacnet – mqtt – http – opc UA – другой протокол.

Итак, рассмотрим первую связку Modbus TCP – Modbus RTU, нам понадобится сам контроллер AntexGate либо другой компьютер с linux/windows на борту и периферией RS485.

Первое, что необходимо – это установить программный продукт Node-Red, это делается одним скриптом в командной строке:

bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/...)

Далее после установки делаем Node-red сервисом:

sudo systemctl enable nodered.service

Перезагружаем железяку:

sudo reboot

Теперь попадаем в среду нашего программного конвертора Node-red через web браузер по ссылке ip шлюза:1880

Далее настроим скрипт, который конвертирует посылку Modbus TCP в RTU, посылает в RS485/232 порт, ждет ответ и тут же преобразует ответ обратно в Modbus TCP.

Open source Modbus TCP — RTU конвертор Linux, Электроника, Raspberry pi, Интернет вещей, Длиннопост

Заходим в "меню" > "импорт"

Проект конвертора Modbus TCP <> RTU (прошу прощения в пикабу нет спойлера)

[ { "id": "22ff3060.54da6", "type": "function", "z": "de082ac2.4b8bf8", "name": "Convert TCP to RTU", "func": "var MBAPHeader = [5];\nvar crc = 0xFFFF;\n\nMBAPHeader[0]= msg.payload[0];\nMBAPHeader[1]= msg.payload[1];\nMBAPHeader[2]= msg.payload[2];\nMBAPHeader[3]= msg.payload[3];\nMBAPHeader[4]= msg.payload[4];\nflow.set('MBAP_HEADER', MBAPHeader);\n\nvar ReqLen = msg.payload[5];\nvar MBLen = (msg.payload.length)-ReqLen;\nvar MBReq = [MBLen];\n\nfor (let x=0; x < MBLen;x++){\n MBReq[x] = msg.payload[x+ReqLen];\n}\n\nfor (var req = 0; req < ReqLen; req++) {\n crc ^= MBReq[req]; // XOR byte into least sig. byte of crc\n \n for (var i = 8; i !== 0; i--) { // Loop over each bit\n if ((crc & 0x0001) !== 0) { // If the LSB is set\n crc >>= 1; // Shift right and XOR 0xA001\n crc ^= 0xA001;\n } else { // Else LSB is not set\n crc >>= 1; // Just shift right\n }\n }\n}\n\nvar MyCRC = crc.toString(16);\nMBReq[MBLen+1] = parseInt(MyCRC.substring(0,2),16);\nMBReq[MBLen] = parseInt(MyCRC.substring(2,4),16);\n\nvar buf = new Buffer(MBReq);\nmsg.payload = buf;\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 300, "y": 100, "wires": [ [ "7e62bbbc.bd8ea4" ] ], "outputLabels": [ "XO" ] }, { "id": "7e62bbbc.bd8ea4", "type": "serial request", "z": "de082ac2.4b8bf8", "name": "", "serial": "27dabad398437b7e", "x": 490, "y": 100, "wires": [ [ "db79ee80.1d792", "9e53f02d0a4e04fb" ] ] }, { "id": "db79ee80.1d792", "type": "function", "z": "de082ac2.4b8bf8", "name": "Convert RTU to TCP", "func": "if (msg.payload.length > 0) {\n var resLen = msg.payload.length - 2;\n var respond = [];\n respond[0] = flow.get('MBAP_HEADER')[0];\n respond[1] = flow.get('MBAP_HEADER')[1];\n respond[2] = flow.get('MBAP_HEADER')[2];\n respond[3] = flow.get('MBAP_HEADER')[3];\n respond[4] = flow.get('MBAP_HEADER')[4];\n respond[5] = resLen;\n\n for (let req = 6; req < resLen+6; req++) {\n respond[req]= msg.payload[req-6];\n }\n msg.payload = new Buffer(respond);\n return msg;\n} else {\n return null;\n}\n", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 640, "y": 60, "wires": [ [ "2622a1e893f52bed", "140a62f5366490d9" ] ] }, { "id": "55423964225fa869", "type": "comment", "z": "de082ac2.4b8bf8", "name": "Convert Modbus TCP to Modbus RTU", "info": "", "x": 170, "y": 40, "wires": [] }, { "id": "cbd6e86861af643d", "type": "tcp in", "z": "de082ac2.4b8bf8", "name": "Modbus TCP - IN", "server": "server", "host": "", "port": "5002", "datamode": "stream", "datatype": "buffer", "newline": "", "topic": "", "trim": false, "base64": false, "tls": "", "x": 100, "y": 100, "wires": [ [ "22ff3060.54da6", "48471bdeae3a1d30" ] ] }, { "id": "2622a1e893f52bed", "type": "tcp out", "z": "de082ac2.4b8bf8", "name": "Modbus TCP - OUT", "host": "127.0.0.1", "port": "502", "beserver": "reply", "base64": false, "end": false, "x": 850, "y": 100, "wires": [] }, { "id": "9e53f02d0a4e04fb", "type": "debug", "z": "de082ac2.4b8bf8", "name": "debug 17", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "false", "statusVal": "", "statusType": "auto", "x": 640, "y": 220, "wires": [] }, { "id": "140a62f5366490d9", "type": "debug", "z": "de082ac2.4b8bf8", "name": "debug 18", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "false", "statusVal": "", "statusType": "auto", "x": 820, "y": 200, "wires": [] }, { "id": "48471bdeae3a1d30", "type": "debug", "z": "de082ac2.4b8bf8", "name": "debug 19", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "false", "statusVal": "", "statusType": "auto", "x": 260, "y": 200, "wires": [] }, { "id": "27dabad398437b7e", "type": "serial-port", "serialport": "/dev/ttyUSB0", "serialbaud": "115200", "databits": "8", "parity": "none", "stopbits": "1", "waitfor": "", "dtr": "none", "rts": "none", "cts": "none", "dsr": "none", "newline": "5", "bin": "bin", "out": "time", "addchar": "", "responsetimeout": "1000" } ]

Open source Modbus TCP — RTU конвертор Linux, Электроника, Raspberry pi, Интернет вещей, Длиннопост

Копируем скрипт, нажимаем "Импорт"

Open source Modbus TCP — RTU конвертор Linux, Электроника, Raspberry pi, Интернет вещей, Длиннопост

Настраиваем порт для просушки в узле Modbus TCP IN, рекомендуем не использовать стандартный 502, а использовать нестандартный порт более 1024, для них не нужны дополнительные разрешения в Linux.

Open source Modbus TCP — RTU конвертор Linux, Электроника, Raspberry pi, Интернет вещей, Длиннопост

Настраиваем последовательный порт RS485/232 на скорость конечного железа, поддерживающего протокол Modbus RTU.

Open source Modbus TCP — RTU конвертор Linux, Электроника, Raspberry pi, Интернет вещей, Длиннопост

Жмем "Развернуть" и наш конвертер готов!

Open source Modbus TCP — RTU конвертор Linux, Электроника, Raspberry pi, Интернет вещей, Длиннопост

Настраиваем Ваш инструмент верхнего уровня, например Modbus TCP OPC сервер стандартно: ip_адре_ шлюза:5002:id_RTU_устройства.

Все работает стабильно, чтение и запись! Посылки как видим между запросом и ответом 100-200мс, что равно пингу. Удаленный шлюз AntexGate работает на встроенном LTE модеме.

Бонусом, для тех, у кого софт верхнего уровня поддерживает функцию Modbus RTU поверх TCP включаем это правило.

Open source Modbus TCP — RTU конвертор Linux, Электроника, Raspberry pi, Интернет вещей, Длиннопост

В Node-Red упрощаем поток и исключаем функции RTU TCP обработки, и наш проект в Node-Red становится без единой строчки кода.

Open source Modbus TCP — RTU конвертор Linux, Электроника, Raspberry pi, Интернет вещей, Длиннопост

Контроллер AntexGate в связке с Node-red является отличным универсальным решением для обработки, пересылки и хранения данных. Прошу прощения за рекламу, однако выше представленный проект Вы можете реализовать на любом железе и любой ОС.

Присоединяйтесь к нашему сообществу в Telegram

Железо можно получить на тесты, пишите на почту: info@antexcloud.ru (на три месяца для ЮР лиц и ИП)

Показать полностью 8
9
Вопрос из ленты «Эксперты»

Прошу помощи в создании. ESP32 или что-то другое?

Всем привет!
Прошу помощи в создании одной штуки.
Если надо - не безвозмездно.

ТЗ следующее:
В автомобиль, где напряжение бортсети достигает до 15 в (хотя в комментах подсказывают что будут всплески куда высокие, до 200в, но суть ясна), и эксплуатация от -30 до +30 градусов нужно установить "звездное небо" с 3-4 "кометами" в потолок.

"Звёздное небо" - оптоволоконные нити, в один торец которых стороны будут светить светодиоды, а другой будет заподлицо вмонтирован в тканевую обшивку потолка.
1 светодиод - пачка оптоволокна, и таких соответственно какое-то количество, пусть например 20 штук светодиодов на 800 оптоволокон.
Нужно будет эмпирическим методом подбирать предполагаю.
Минимальные эффекты - мерцание с высокой частотой, возможно плавная смена яркости.
Максимальные - по ситуации, может настройка цвета, яркости или какие-то другие программы.

"Кометы" - те же оптоволоконные нити, выстроенные в дугу-синусоиду-иное, и уже 1 светодиод = 1 нить.
Эффект - последовательное включение от первого до последнего светодиода, с плавным погасанием отключающихся светодиодов "комета с хвостом"
Минимальные эффекты - уметь делать этот эффект белым цветом.
Максимальные - по ситуации, может настройка цвета, яркости или какие-то другие программы.

Таких "Комет с хвостом" будет несколько штук, 2-4.
Время включения этих комет нужно будет сделать разным, и соответственно паузу между ними так же нужно иметь, а не так чтобы циклично каждые 2 секунды включались)

Так же нужно чтобы контроллер помнил последнее состояние/программу и запускался сразу после подачи питания.

Натыкивать оптику, крепить её к светодиодам, паять проводочки это без вопросов.

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

Насколько я понял, для создания такой вещи мне необходима адресная светодиодная лента, скорее всего с минимальным "пикселем" в 1 светодиод (это скорее всего микросхемка вмонтирована в сам светодиод будет)
Напряжением... в 12? вольт...
Протокол управления сказали что SPI будет приемлем.
DMX вроде как надежнее (не последовательное соединение), но его почему-то отвергли как более сложный вариант

И некая плата управления.

Мне порекомендовали посмотреть на платы ESP32
Т.к. к ним видимо можно писать программы, а так же эта плата имеет несколько выходов для SPI ленты.

Т.е. можно использовать:

1 выход на ленты с звездными небом
2 выход на комету 1
3 выход на комету 2
4 выход на комету 3

И т.д.

И для каждого выхода будет своя программа.

Ну и нужно подобрать какой-то стабилизатор питания для этого всего дела.

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

Что скажете други?

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

Самодельный боксмод

Привет! Мой первый пост на Пикабу. Не знаю как его оценят, но не суть. Я решил сделать первую самоделку в жизни и выбрал боксмод. Раньше я не занимался ни программированием, ни самоделками. Решил делать я по схеме и уже готовой прошивке. За основу взял arduino nano. Сама система будет на мосфете. Лишь бы не вышла ручная граната. На этом всё! Хорошего дня.

Отличная работа, все прочитано!