Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam

Пикабу Игры +1000 бесплатных онлайн игр

Щелкните блоки, чтобы они улетели в 3D. Разблокируйте куб, чтобы овладеть головоломками

Разбери Кубик

Головоломки, 3D, Обучающая

Играть
Возглавьте отряд стражей, чтобы изгнать злого чародея Харона. Отправляйтесь в опасное путешествие, полное приключений. Играть можно онлайн абсолютно бесплатно и без регистрации.

Королевство Дом

Казуальные, Настольные, Стратегии

Играть
Модное кулинарное Шоу! Игра в ресторан, приготовление блюд, декорирование домов и преображение внешности героев.

Кулинарные истории

Казуальные, Новеллы, Симуляторы

Играть
Болты и гайки - это головоломка, в которой вам нужно откручивать болты с досок! Ваша задача - выбрать правильный болт для откручивания, чтобы вы могли открутить все доски! Соревнуйтесь с друзьями и коллегами!

Болты и Гайки

Казуальные, Головоломки, Логическая

Играть
Скайдом - пожалуй, самая красочная и интересная головоломка с действительно уникальными режимами игры!

Скайдом

Три в ряд, Головоломки, Казуальные

Играть

Топ прошлой недели

  • Oskanov Oskanov 8 постов
  • alekseyJHL alekseyJHL 6 постов
  • XpyMy XpyMy 1 пост
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Новости Пикабу Помощь Кодекс Пикабу Реклама О компании
Команда Пикабу Награды Контакты О проекте Зал славы
Промокоды Скидки Работа Курсы Блоги
Купоны Biggeek Купоны AliExpress Купоны М.Видео Купоны YandexTravel Купоны Lamoda
Мобильное приложение

Esp32

С этим тегом используют

Arduino Электроника Самоделки YouTube Esp8266 Своими руками Ardublock Все
141 пост сначала свежее
79
Chelll63
2 года назад
Лига программистов

Сделай сам. Сканер J1939 на ESP32⁠⁠

По профессиональной своей деятельности случаются задачи по оперативной диагностике промышленной техники. В моем случае силовые агрегаты техники, как правило, дизельные двигатели самостоятельно или в паре с автоматической трансмиссией. Система управления силовых агрегатов построена на CAN шине и использует протокол J1939.

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

Конечно правда жизни такова, что не использовать импортные компоненты и программные решения уже невозможно, и поэтому в конечном устройстве из отечественного - желание и время.. ну и денег немного. И даже исходники были выложены на “не наш” Github, но это из-за github pages для демонстрации веб интерфейса. В конце концов хватит работать в стол и пришло время тоже бесплатно что-то отдать обществу.

Продукт довольно нишевый и не предназначен для широких масс, но тем не менее я надеюсь, что мои наработки позволят кому нибудь получить ответы на какие-то свои вопросы или быстро стартануть свой проект, если возникнет необходимость использовать подобный стек. А стек здесь такой - в качестве сервера ESP32. В качестве языка backend - c++ в качестве фреймворка бэкенда - ESP-IDF. Для фронтенда использовал Vue3, Typescript, Vite…

Обзор устройства начну с конца, постепенно раскрывая детали:

Онлайн демо веб интерфейса

Комплектующие:

Корпус

Кабель

Контроллер

Преобразователь напряжения

Приемопередатчик CAN


Схема:

Сделай сам. Сканер J1939 на ESP32 IT, Open Source, Esp32, Образование, Программирование, Can, Длиннопост

Прошивка:

Проект

Программа для прошивки


Железо и backend:

Код тут

По схеме тут все просто - используются готовые компоненты. Задача понижающего преобразователя напряжения - получить 5v из бортовой сети двигателя (24-28v). На плате Devkit ESP32 имеется свой преобразователь и он из 5v делает 3.3v, что и используется непосредственно ESP32. На входе преобразователя я еще дополнительно припаял диод как элементарную защиту от переполюсовки, хотя по идее можно поставить диодный мост и тогда по поводу перепутать плюс и минус можно не заморачиваться. А переполюсовка тут актуальная тема т.к. у разных производителей на одном и том же разъеме плюсы и минусы на тех же пинах, но поменяны местами. CAN трансивер необходим для преобразования физического уровня CAN шины для работы с обычными цифровыми пинами микроконтроллера.

Для создания программы для микроконтроллера использовался VS Code с установленным официальным расширением от Espressif - Espressif IDF. Может быть используя Arduino платформу какие то вещи можно было бы сделать удобнее, но был интерес въехать и потрогать немного FreeRTOS как бы непосредственно. Немного непривычно поначалу, но если разобраться, то все хорошо. Могу сказать, что система сборки у Espressif норм.

Микроконтроллер при старте инициализирует SPIFFS хранилище (аналог файлового хранилища, где хранятся файлы фронтенда), поднимает точку доступа, файловый сервер, websocket сервер, инициализирует CAN драйвер, начинает слушать CAN шину и при получении сообщений рассылать их всем websocket клиентам подключенным к серверу. Кстати CAN драйвер в ESP32 называется TWAI , что , как я понял , связано с какими-то лицензионными заморочками.

Особенностью файлового сервера является то, что при запросе клиентом файла он пытается отдать этот файл , а если его нет, то пытается отдать заархивированный файл {имяфайла}.{расширение}.gz и только если нет ни того ни другого отвечает ошибкой. Что касается протокола J1939, то на микроконтроллере реализовано только чтение обычных сообщений , широковещательных сообщений переданных по транспортному протоколу (более 8 байт) и отправка простых (8 байт) сообщений в шину. По задумке устройство может отправлять в шину только сообщения об очистке сохраненных ошибок, но тот же самый механизм используется при отправке сообщений для управления желаемой скоростью вращения двигателя и желаемой передачи АКПП. Расшифровка же сообщений происходит в браузере клиента.

Фото:

Сделай сам. Сканер J1939 на ESP32 IT, Open Source, Esp32, Образование, Программирование, Can, Длиннопост
Сделай сам. Сканер J1939 на ESP32 IT, Open Source, Esp32, Образование, Программирование, Can, Длиннопост
Сделай сам. Сканер J1939 на ESP32 IT, Open Source, Esp32, Образование, Программирование, Can, Длиннопост
Сделай сам. Сканер J1939 на ESP32 IT, Open Source, Esp32, Образование, Программирование, Can, Длиннопост

Frontend:

Код тут

Для веб интерфейса использовал современные инструменты веб разработки последних ревизий:

TypeScript

Vue3

Vite

VueUse

Echarts

AnimateCss

W3Css

FuseJs

AJV

IndexedDb


Проект веб приложения имеет 3 сценария сборки:


build_preview - собирает проект для предпросмотра на локальном сервере (preview)


build_embedded - собирает проект непосредственно для микроконтроллера. Генерируются только архивированные файлы gz. Разделение на части не производится т.к. опытным путем установлено, что файловый сервер ESP32 быстрее отдает один файл побольше чем несколько разделенных файлов. Весь проект в архивированном виде имеет размер 498kB и отлично помещается в памяти ESP.


build_deploy - этот сценарий добавлен недавно и создает файлы для публикации приложения на github pages. Пример настройки альтернативного именования файлов, поскольку сборка по умолчанию (preview) генерирует файл с символом “_” в начале, что в результате порождает ошибку при скачивании файла браузером.


Помню в начале знакомства с веб разработкой у меня было непонимание - где конкретно находятся файлы веб приложения и как они исполняются. И если у кого-то возникает такой вопрос, то работает это все так: При обращении из браузера (клиента) к какой-либо странице, сервер отвечает файлом index.html. В этом файле есть список файлов веб приложения и браузер запрашивает эти файлы с сервера, разархивирует и далее действует по инструкциям из этих файлов. Таким образом файлы веб приложения изначально находятся на сервере, скачиваются и выполняются браузером.

На веб приложение ушло больше всего времени. Изначально я сделал все с использованием замечательной библиотеки element-plus, но почему-то выловил жесткую утечку памяти и месяц бился с этим явлением. Постепенно заменяя компоненты из element-plus самописными.


Общий алгоритм работы приложения такой- приложение получает массив байт от микроконтроллера, далее этот массив декодируется с помощью данных из JSON файла. (Как я искал и парсил доступную инфу по J1939 - тема для отдельной статьи.)


Поскольку вся спецификация протокола довольно объемна, то хранить ее на мк не выйдет , по крайней мере в стандартной комплектации ESP32 Devkit с 4 Mb флеш памяти. В связи с чем решено было хранить данные для декодирования параметров и передаваемых ошибок на стороне клиента в браузере. При первой загрузке веб приложения эти файлы создаются автоматически, но имеют немного данных для декодирования и можно изменить данные в этом файле в текстовом редакторе или загрузить по указанным в приложении ссылкам.

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

Поиск по параметрам осуществляется с помощью FuseJS через интеграцию VueUse. Вообще библиотека VueUse должна быть дефолтной частью проекта на Vue3 поскольку содержит огромное количество очень полезных функций, которые намного облегчают код и работают напрямую с реактивными объектами Vue.

В приложении есть возможность строить графики изменения параметров. Добавление параметра на график осуществляется включением соответствующего переключателя в меню параметра. Графики строятся используя гениальный Echarts и в коде в частности есть пример переключения темы графика “на лету”.


И все это дело собирается в 498Kb! По моему не плохо. Собранные файлы помещаются в папку spiffs_images проекта для микроконтроллера и сохраняются в его памяти при прошивке. Из этой области памяти файловый сервер ESP32 отдает файлы по запросу браузера.


Среди вопросов по работе остался момент периодической “заморозке” вебсокет сообщений, которые были замечены из браузеров на линуксе и на андройде, причем периодичность их появления не зависит ни от чего. Из браузеров виндовса подобная проблема ни разу не проявила себя, что наталкивает на мысль о какой-то глубокой малозаметной ошибке в реализации протокола либо на стороне ESP либо на клиентской стороне.

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


Фото в “полях”:

Сделай сам. Сканер J1939 на ESP32 IT, Open Source, Esp32, Образование, Программирование, Can, Длиннопост
Сделай сам. Сканер J1939 на ESP32 IT, Open Source, Esp32, Образование, Программирование, Can, Длиннопост

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

Показать полностью 7
[моё] IT Open Source Esp32 Образование Программирование Can Длиннопост
23
VydroKombinat
VydroKombinat
2 года назад
Arduino & Pi

Поиск устройства умного дома⁠⁠

Всём привет. У меня назрела необходимость в устройстве для включения и управления адресной светодиодной лентой голосовым управлением через сервисы Яндекса с Алисой.

Что необходимо:
1) -Алиса, включи подсветку
2) -Алиса, включи режим 2 ( включается какой-то режим, например цветовое колесо)
3) -Алиса, сделай красный цвет
4) -Алиса, уменьши яркость

Что не подходит:
-Платные mqtp сервисы
-Сервисы сомнительного качества с отправкой данных на сомнительные сервера
-Работа только с интернетом. Хочется локальную штуку через вафлю.

Что можно использовать? Есть ли готовые драйвера? Какую ленту помимо ws серий можно использовать?

Arduino Esp32 Умный дом Текст
52
16
ardublock
ardublock
2 года назад
ArduBlock

ESP Block - Первый старт в ESP 8266 12F + Светодиоды и кнопки!⁠⁠

Показать полностью 5
[моё] Ardublock Arduino YouTube Электроника Самоделки Esp8266 Esp32 Видео Длиннопост
1
118
Merlin1st
Merlin1st
3 года назад

Проект длиною в 2+ года⁠⁠

Наконец допилил свой хобби проект, с которым возился уже два года. Ну так, изредка периодически что-то допиливал, периодически ждал нужных компонент с али :). Все началось с того что захотелось домашние часы, которые не нужно переводить и им не нужно подводить время. Закончилось часами погодной станцией, с синхронизацией времени через интернет, с датчиками температуры, влажности, давления, CO2. Еще есть логирование всех датчиков и рисование графиков на веб интерфейсе. Кнопок на девайсе в принципе нет, при старте через мобильный конфигурируется к какому Wi-Fi подключиться и дальше оно все само. Единственны недостаток без подключения к интернету время не выставить. Потом уже, оно сохраняется во внутреннем RTC модуле и при пропаданиях интернета или электричества время не сбивается. Попутно купил еще 3D принтер, когда понял что все это нужно упаковать в какой-то более-менее достойный корпус. Все это едет на контроллере ESP32.

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

[моё] Электроника Arduino Хобби Самоделки Esp32 Программирование Видео
40
493
TwFi
TwFi
3 года назад
Arduino & Pi

Самодельный WiFi танк. ESP-32 + Arduino⁠⁠

Всем привет, хочу поделится с вами своим танком.

Самодельный WiFi танк. ESP-32 + Arduino Arduino, Esp32, Самоделки, Своими руками, Электроника, Микроконтроллеры, Робот, Видео, Длиннопост

Я cделал танк для того, чтобы научится делать подобные машинки и набраться побольше опыта с платами Arduino и ESP. Ну и вообще просто захотелось собрать что-то такое что б ездило и жужжало =)


Основные компоненты, которые я использовал:

*Модуль ESP-32-cam – в роли камеры и контроллера, который отвечает за роботу с WiFi.

*Arduino Nano – контроллер, который отвечает за управление двигателями и прием/обработку данных с датчиков.

*L298N – драйвер для двигателей (выбран из-за харизматичного вида).

*Датчики, которые есть на борту – ультразвуковой дальномер US-025; барометр BMP280; модуль акселерометр и гироскоп MPU-6050; термометр и гигрометр DHT-11, датчик Холла A3144 в роли импровизированного тахометра.

*Бортовое питание – два аккумулятора 18650 2000 мА*ч; повышайка MT3608; зарядка usb type-c.

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

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


Важно!

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


Вид танка спереди. Можно увидеть зеленую плату с двумя «вылупнями» – это ультразвуковой датчик, немного похоже на глаза. Выше в очень аккуратном вырезе притаилась камера и хотя ее характеристики позволяют ей снимать мир в потрясающем разрешении в 2Мп (1600x1200) при практическом использовании ее разрешение меньше – 800x600.

Самодельный WiFi танк. ESP-32 + Arduino Arduino, Esp32, Самоделки, Своими руками, Электроника, Микроконтроллеры, Робот, Видео, Длиннопост

Левый борт. Большинство датчиков размещены (с комфортом) на нижней зеленой плате, на правом краю платы можно увидеть рычажок который переключает танк в бесшумный режим – не будет пищать зуммер, который в свою очередь нужен для подачи танком служебных и оповещающих сигналов для разгона зевак на улице (что б не задавили танк). Так же видно торчащий как палка провод в правом нижнем углу, это датчик Холла, который закреплен напротив ведущей звездочки для подсчета ее оборотов (способ не очень, но работает). Этажом выше расположена Arduino Nano, отсюда она может эффективно распоряжаться своими подчиненными – датчиками и двигателями и общаться по выделенному каналу связи со своей подружкой ESP.

Самодельный WiFi танк. ESP-32 + Arduino Arduino, Esp32, Самоделки, Своими руками, Электроника, Микроконтроллеры, Робот, Видео, Длиннопост

Правый борт танка. Тут можно увидеть: кнопку управления питанием, справа на белой коробке (корпус ESP) находиться красный рычажок, переводящий ESP в режим прошивки, чуть выше кнопка, выполняющая самую важную функцию – перезагрузку ESP. Слева на корме удобно устроился драйвер для двигателей L298N, его радиатор является важным элементом в дизайне танка. Ниже под гусеницей можно наблюдать два болта которые скрепляют крышку танка с его основным корпусом через петлю, данный элемент крепления намеренно сделан побольше для обеспечения структурной целостности и придания характерного вида танка.

Самодельный WiFi танк. ESP-32 + Arduino Arduino, Esp32, Самоделки, Своими руками, Электроника, Микроконтроллеры, Робот, Видео, Длиннопост

Танк с открытой крышкой, вид спереди. Металлическая крышка выполняет несколько функций: обеспечивает эффективное использование пространства, облегчает монтаж элементов и самое главное придает танку бронирование (а танк ведь обязан его иметь). И просто это круто выглядит.

Самодельный WiFi танк. ESP-32 + Arduino Arduino, Esp32, Самоделки, Своими руками, Электроника, Микроконтроллеры, Робот, Видео, Длиннопост

Танк с открытой крышкой, вид от кормы. На этой фотографии видно танковую батарею, моторы, спрятанный шнурок для прошивки ESP, плату зарядки аккумуляторов, которая позволяет танку быть в духе современности – type-C же. Можно еще увидеть кривой монтаж и вырез крышки, но все это элегантно скрывается не в фокусе.

Самодельный WiFi танк. ESP-32 + Arduino Arduino, Esp32, Самоделки, Своими руками, Электроника, Микроконтроллеры, Робот, Видео, Длиннопост

Танк, вид от кормы – на зарядке. Снизу прикручен бампер, благодаря чему к танку можно прицепить трос для помощи своим менее везучим братьям.

Самодельный WiFi танк. ESP-32 + Arduino Arduino, Esp32, Самоделки, Своими руками, Электроника, Микроконтроллеры, Робот, Видео, Длиннопост

Разобранный корпус для ESP. Сам корпус был сделан из остатков сигнализации (датчик движения), внутри обклеен фольгой для экранирования ESP от помех (и просто для красоты). Антенна взята от старого роутера. Данная коробка отлично дополняет стиль танка «из чего было – с того и собрал».

Самодельный WiFi танк. ESP-32 + Arduino Arduino, Esp32, Самоделки, Своими руками, Электроника, Микроконтроллеры, Робот, Видео, Длиннопост

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

Самодельный WiFi танк. ESP-32 + Arduino Arduino, Esp32, Самоделки, Своими руками, Электроника, Микроконтроллеры, Робот, Видео, Длиннопост

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


Главный экран приложения. Вверху в шапке можно видеть всю нужную информацию, например качество связи, заряд батареи, последнюю отданную команду движения и пару-тройку датчиков. Внизу управление. Слева выход, журнал. Справа настройки, данные датчиков и кнопка послать звуковой сигнал. Уровень сигнала ноль, потому что это уровень сигнала от репитера (вторая ESP, в роли маршрутизатора для увеличения радиуса действия), но на тот момент танк был подключен напрямую.

Самодельный WiFi танк. ESP-32 + Arduino Arduino, Esp32, Самоделки, Своими руками, Электроника, Микроконтроллеры, Робот, Видео, Длиннопост

Экран настроек. Можно поменять размер картинки, качество видео. Из прикольного автонастройка качества видео, если связь ухудшается и видео начинает идти с задержками, то приложение автоматически посылает сигнал танку для перенастройки качества сигнала. Работает не прям что идеально, но вполне сносно. Так же есть галочка для снятия защиты двигателей, не смотря на название двигатели оно не защищает, это защищает сам танк от зависания, когда на низком заряде двигатели выжимают последние капли из батареи и напряжения не хватает для контроллеров (да можно было бы сделать раздельное питание, но мне хотелось единое).

Самодельный WiFi танк. ESP-32 + Arduino Arduino, Esp32, Самоделки, Своими руками, Электроника, Микроконтроллеры, Робот, Видео, Длиннопост

Экран данных с датчиков. Ничего такого просто датчики, просто данные. Часть из них к тому же не очень-то и настроена.

Самодельный WiFi танк. ESP-32 + Arduino Arduino, Esp32, Самоделки, Своими руками, Электроника, Микроконтроллеры, Робот, Видео, Длиннопост

Демонстрация работы танка ниже на видео. Видео ускорено в 3 раза.

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

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


Бонусная фотография – танк на вечерней прогулке

Самодельный WiFi танк. ESP-32 + Arduino Arduino, Esp32, Самоделки, Своими руками, Электроника, Микроконтроллеры, Робот, Видео, Длиннопост
Показать полностью 13 1
[моё] Arduino Esp32 Самоделки Своими руками Электроника Микроконтроллеры Робот Видео Длиннопост
53
83
STLee
STLee
3 года назад
Сообщество любителей спектрума

Таки заработало⁠⁠

Здравствуйте "Сообщество любителей спектрума" и все не равнодушные.


Периодически в интернете попадаются посты вызывающие ностальгию.

Хочется поиграть в игрушки на первом своём компьютере ZX Spectrum (Ленинград 48К).

Эмулятор спектрума, фи.

Иду на авито смотреть на старичков, а жаба говорит: - Нафига оно тебе надо, валяться? А не заработает? Ладно, посмотрел и хватит.

Но не сегодня. Попалось видео на ютюб "5$ ZX Spectrum 128k спаять за вечер" от Алекс Екб.

Сейчас видео и ссылки на файлы к сожалению удалены (у автора возникли проблемы с лицензией на использование других открытых проектов в его разработке). Здесь видео осталось, без файлов https://novids.com/video/-198790427_456403656#

Проект на ESP32.

Как сказал автор: "А как известно, если если нечто выглядит как утка, плавает как утка и крякает как утка, то это, вероятно, и есть утка. Так что если немного постараться и встроить небольшую платку в клавиатуру, можно получить экземпляр спекки почти не отличимый от оригинала".

Короче, я повёлся и оно заработало.

Загружаю программы с ноутбука, для конвертации образов игр типа TAP, TZX в аудиофайл использую программу Tape2WAV. На клавиши F1-F12 можно сохранить состояние загруженной игры. Т.е. в 12 игр можно загрузить моментально. 

Выглядит схема так: (Прошивку автора выкладывать не буду, ниже будут ссылки на альтернативные проекты на ESP32 с сайта zx-pk.ru).

Таки заработало Zx Spectrum, Ностальгия, Проект, Esp32, Видео, Текст, Длиннопост

У меня так:

Таки заработало Zx Spectrum, Ностальгия, Проект, Esp32, Видео, Текст, Длиннопост
Таки заработало Zx Spectrum, Ностальгия, Проект, Esp32, Видео, Текст, Длиннопост
Таки заработало Zx Spectrum, Ностальгия, Проект, Esp32, Видео, Текст, Длиннопост

Видео с демонстрацией работы:

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

Аудиопроцессор AY-3-8912 эмулирует.

Ну и ссылки:

https://zx-pk.ru/threads/33197-zx-espectrum-eshche-odin-(no-ne-menee-klevyj)-zx16-48-128-2-3-ay-na-esp32-esp32-psram.html

https://zx-pk.ru/threads/33136-single-board-zx-spectrum-128-...

Показать полностью 4 4
[моё] Zx Spectrum Ностальгия Проект Esp32 Видео Текст Длиннопост
24
10
DespeK8610
3 года назад
Arduino & Pi

Ищу M5Stack Core2 в Москве⁠⁠

Сила Пикабу, помоги! Для проекта нужен M5Stack Core2.

Ближайшая возможная доставка с алиэкспресса - аж в конце июня.

Мб у кого-нибудь есть, кто готов продать? Если в Москве или в СПБ - вообще идеально!

Arduino Esp32 Сила Пикабу Текст Без рейтинга Помощь
4
187
octopoly
3 года назад
TECHNO BROTHER

Народная дозиметрия. Бюджетный дозиметр своими руками⁠⁠

Введение в проект DIY-дозиметра


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


Сегодня мы соберем простой бюджетный дозиметр на базе WIFI-контроллера ESP32 и платы RadSens. RadSens - готовый I2C-модуль для газоразрядного счетчика Гейгера-Мюллера. В качестве сенсора будет использована надежная и распространенная трубка СБМ20-1. Впрочем, вместо нее к модулю можно подключить любую другую трубку - J305, M4011, СТС-5 и др.

Народная дозиметрия. Бюджетный дозиметр своими руками Arduino, Электроника, Самоделки, Своими руками, Дозиметр, Радиация, Программирование, Esp32, Интернет вещей, Измерения, Радиолюбители, Радиоэлектроника, Техника, Конструктор, Длиннопост

Целью статьи является создание максимально подробной инструкции по сборке. Если повторить описанные шаги сможет самый юный инженер-дозиметрист - мы достигли успеха.

Но сначала, как принято, немного истории и теории…

Матчасть по газоразрядным трубкам

История счётчика Гейгера-Мюллера

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

Народная дозиметрия. Бюджетный дозиметр своими руками Arduino, Электроника, Самоделки, Своими руками, Дозиметр, Радиация, Программирование, Esp32, Интернет вещей, Измерения, Радиолюбители, Радиоэлектроника, Техника, Конструктор, Длиннопост

Ганс Гейгер (слева) работал вместе с Эрнестом Резерфордом (справа) с 1907 по 1913 г. (рис. 1)

В 1925 году под началом Ганса Гейгера Вальтер Мюллер создаёт ещё несколько типов счётчиков с чувствительностью к каждому открытому на тот момент виду излучения, а именно для α-, β- и γ-излучения (нейтроны были открыты только в 1932 году).

Как показало время, надёжный, дешёвый и простой счетчик Гейгера-Мюллера остаётся одним из самых распространённых способов измерения уровня радиации как в быту, так и в промышленности.

Принцип работы трубки Гейгера-Мюллера

Принцип работы основан на эффекте ударной ионизации газа в межэлектродном пространстве под действием радиоактивных частиц.

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

Народная дозиметрия. Бюджетный дозиметр своими руками Arduino, Электроника, Самоделки, Своими руками, Дозиметр, Радиация, Программирование, Esp32, Интернет вещей, Измерения, Радиолюбители, Радиоэлектроника, Техника, Конструктор, Длиннопост

Участок схемы со счётчиком Гейгера-Мюллера (рис. 2)

В исходном состоянии газовый промежуток между электродами имеет высокое сопротивление, и тока в цепи нет. Когда заряженная частица с высокой энергией сталкивается с элементами конструкции датчика (корпус, баллон, катод), она выбивает некоторое количество электронов, которые оказываются в промежутке между электродами. Под действием ускоряющего напряжения электроны устремляются к аноду. Процесс многократно повторяется, и количество электронов увеличивается, что приводит к разряду между катодом и анодом. В состоянии разряда промежуток в межэлектродном пространстве становится токопроводящим, что вызывает скачок тока в нагрузочном резисторе.

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

Компоненты для сборки дозиметра своими руками

Важнейшим критерием при выборе платы и комплектующих выступала стоимость используемых компонентов. Мы ставили задачу сделать дозиметр максимально бюджетным.

Для создания дозиметра-радиометра были выбраны следующие компоненты:


1) Модуль дозиметра - RadSens (от 3900 руб.)


RadSens - готовый модуль в сборе с популярной трубкой СБМ-20. Не требует ничего кроме установки библиотеки в менеджере библиотек Arduino. Дозиметр готов к работе “из коробки”.


2) Плата ESP8266 / ESP32 (от 700 руб.)


Модуль RadSens имеет интерфейс I2C, совместим с Arduino, esp, Raspberry. Но цены на ардуинки в последнее время совсем не радуют…


3) OLED-экран диагональю 0.96” (от 300 руб.)


Можно взять любой экран с I2C. Но OLED-экран позволяет добавлять простую анимацию и цветовую маркировку текущего уровня радиации.


4) Модуль бузера (пищалки) для звуковой индикации импульсов (от 80 руб.)


Бузер предназначен для звукового информирования пользователя, когда нет доступа к информации на экране.


5) Кнопка-выключатель (от 60 руб.)


6) Макетная плата 120*80 мм (от 130 руб.)


Плата используется для удобного (эротичного) размещения и организации проводки между элементами.


Итоговая стоимость сборки - 5170 рублей.


Самый дешёвый дозиметр на маркетплейсе Ozon - 8700 рублей.

Процесс сборки самодельного дозиметра

Необходимо произвести следующие шаги:


1) Припаять к макетной плате элементы в желаемом положении


2) Соединить все элементы по предложенной схеме


3) Проверить правильность подключения сначала визуально, затем подключив ESP к USB


4) Подключить библиотеку RadSens и плату ESP32 в Arduino IDE


5)Добавить код в IDE и загрузить его

Шаг 1. Подключение


Для подключения нам потребуется припаять все элементы и соединить их. Пины SDA и SCL на RadSens и OLED-экране требуется подключить к портам D22 (SCL) и D21 (SDA), они обмениваются данными по интерфейсу I2C, важно их не перепутать.

Народная дозиметрия. Бюджетный дозиметр своими руками Arduino, Электроника, Самоделки, Своими руками, Дозиметр, Радиация, Программирование, Esp32, Интернет вещей, Измерения, Радиолюбители, Радиоэлектроника, Техника, Конструктор, Длиннопост

Остальное подключить согласно схеме на рис. 4.

Народная дозиметрия. Бюджетный дозиметр своими руками Arduino, Электроника, Самоделки, Своими руками, Дозиметр, Радиация, Программирование, Esp32, Интернет вещей, Измерения, Радиолюбители, Радиоэлектроника, Техника, Конструктор, Длиннопост

Схема подключения модулей к ESP32 (рис. 4)

На фото один из вариантов компоновки дозиметра.

Народная дозиметрия. Бюджетный дозиметр своими руками Arduino, Электроника, Самоделки, Своими руками, Дозиметр, Радиация, Программирование, Esp32, Интернет вещей, Измерения, Радиолюбители, Радиоэлектроника, Техника, Конструктор, Длиннопост

Шаг 2. Подключение библиотек RadSens, ESP32, GyverOLED


Подключение расширения для плат в Arduino IDE для платы ESP32 осуществляется следующим образом:

Arduino -> Инструменты -> Плата -> Менеджер плат -> Написать “ESP32” в поисковой строке.

Народная дозиметрия. Бюджетный дозиметр своими руками Arduino, Электроника, Самоделки, Своими руками, Дозиметр, Радиация, Программирование, Esp32, Интернет вещей, Измерения, Радиолюбители, Радиоэлектроника, Техника, Конструктор, Длиннопост

Шаг первый — переход в менеджер плат

Народная дозиметрия. Бюджетный дозиметр своими руками Arduino, Электроника, Самоделки, Своими руками, Дозиметр, Радиация, Программирование, Esp32, Интернет вещей, Измерения, Радиолюбители, Радиоэлектроника, Техника, Конструктор, Длиннопост

Шаг второй — пишем в поисковике «ESP32» и устанавливаем единственный дистрибутив

Далее необходимо выбрать необходимую нам плату. Для этого переходим во вкладку “Инструменты”, выбираем раздел “Плата”, далее выбираем “ESP32 Dev Module” в подразделе “ESP32 Arduino”.

Народная дозиметрия. Бюджетный дозиметр своими руками Arduino, Электроника, Самоделки, Своими руками, Дозиметр, Радиация, Программирование, Esp32, Интернет вещей, Измерения, Радиолюбители, Радиоэлектроника, Техника, Конструктор, Длиннопост

Шаг третий — необходимо выбрать «ESP32 Dev Module»

Готово! Перейдем к установке библиотеки.


Для установки библиотеки RadSens необходимо проделать почти такую же операцию:


Arduino -> Скетч -> Подключить библиотеку -> Управлять библиотеками -> Написать “RadSens” в поисковой строке.

Народная дозиметрия. Бюджетный дозиметр своими руками Arduino, Электроника, Самоделки, Своими руками, Дозиметр, Радиация, Программирование, Esp32, Интернет вещей, Измерения, Радиолюбители, Радиоэлектроника, Техника, Конструктор, Длиннопост

Шаг первый — заходим в менеджер библиотек

Народная дозиметрия. Бюджетный дозиметр своими руками Arduino, Электроника, Самоделки, Своими руками, Дозиметр, Радиация, Программирование, Esp32, Интернет вещей, Измерения, Радиолюбители, Радиоэлектроника, Техника, Конструктор, Длиннопост

Шаг второй — пишем в поиске «RadSens» и устанавливаем нашу официальную библиотеку

Далее необходимо установить библиотеку GyverOLED в менеджере библиотек тем же путём.

Народная дозиметрия. Бюджетный дозиметр своими руками Arduino, Электроника, Самоделки, Своими руками, Дозиметр, Радиация, Программирование, Esp32, Интернет вещей, Измерения, Радиолюбители, Радиоэлектроника, Техника, Конструктор, Длиннопост

Необходимо написать «GyverOLED» в поисковике и установить библиотеку

Теперь мы готовы переходить к программированию.

Шаг 3. Код

Код был написан с использованием библиотеки для OLED от Алекса Гавера. Она проста в изучении и поддерживает вывод русского языка без дополнительных манипуляций. Допустимо использовать U8G2, Adafruit или любой удобную вам библиотеку.


Код вы можете найти в примерах библиотеки RadSens в Arduino IDE или скопировать отсюда:


// Подключаем необходимые библиотеки
#include <radSens1v2.h> // Библиотека RadSens
#include <Wire.h> // I2C-библиотека
#include <GyverOLED.h> // Библиотека для OLED Gyver'а идеально подойдёт для понимания методики работы с OLED-экраном, к тому же тут сразу есть русский шрифт
#define buz 18 // Устанавливаем управляющий пин пьезоизлучателя. Если вы выбрали другой управляющий пин - замените значение
GyverOLED<SSD1306_128x64, OLED_NO_BUFFER> oled; // Инициализируем OLED-экран
ClimateGuard_RadSens1v2 radSens(RS_DEFAULT_I2C_ADDRESS); // Инициализируем RadSens
uint32_t timer_cnt; // Таймер опроса интенсивности излучения и импульсов для OLED-экрана
uint32_t timer_imp; // Таймер опроса импульсов для пьезоизлучателя
uint32_t timer_oled; // таймер обновления дисплея
float dynval; // Переменная для динамического значения интенсивности
float statval; // Переменная для статического значения интенсивности
uint32_t impval; // Переменная для кол-ва импульсов
uint32_t pulsesPrev; // Переменная, содержащая кол-во импульсов за прошлый цикл
void setup() {
pinMode(buz, OUTPUT); // Инициализируем пьезоизлучатель как получатель данных
ledcSetup(1, 500, 8); // Инициализируем ШИМ (только для ESP, для Arduino это необходимо стереть)
ledcAttachPin(buz, 1); // Задаём пин вывода пьезоизлучателя для ШИМа (только для ESP, для Arduino это необходимо стереть)
oled.init(); // Инициализируем OLED в коде
oled.flipV(1); // Я перевернул экран для удобства
oled.flipH(1); // Для нормального отображения после переворота нужно инвертировать текст по горизонтали
oled.clear();
oled.setScale(2); // Устанавливаем размер шрифта
radSens.radSens_init();
oled.clear();
radSens.setSensitivity(105); // Задаем чувствительность трубки (если вы заменили СБМ-20 на другую - проверьте чувствительность в документации и измените значение в скобках)
int16_t sensval = radSens.getSensitivity();
oled.setCursor(10, 2);
oled.print("Чувствит:");
oled.setCursor(42, 4);
oled.print(sensval);
delay(4000);
oled.clear();
pulsesPrev = radSens.getNumberOfPulses(); //Обнуляем значение перед началом работы пьезоизлучателя для предотвращения длинных тресков
}
void beep(int deltime) { // Функция, описывающая время и частоту пищания пьезоизлучателя
ledcWriteTone(1, 500); // Включаем на частоте 500 Гц
delay(3);
ledcWriteTone(1, 0); // Выключаем
delay(deltime);
}
/*
void beep(int deltime){
tone(buz, 500, deltime)
} та же функция для Arduino */
void loop() {
if (millis() - timer_imp > 250) { // Функция, создающая "треск" пьезоизлучателя
timer_imp = millis();
int pulses = radSens.getNumberOfPulses();
if (pulses > pulsesPrev) {
for (int i = 0; i < (pulses - pulsesPrev); i++) {
beep(30); // Вы можете изменить параметр, если хотите, чтобы интервал между тресками был больше или меньше
}
pulsesPrev = pulses;
}
}
if (millis() - timer_cnt > 1000) { // Записываем в объявленные глобальные переменные необходимые значения
timer_cnt = millis();
dynval = radSens.getRadIntensyDynamic();
statval = radSens.getRadIntensyStatic();
impval = radSens.getNumberOfPulses();
}
if (millis() - timer_oled > 1000) { // Записываем переменные в строки и выводим их на OLED-экран
timer_oled = millis();
String dynint = "Дин: ";  // Динамическое значение в мкР/ч
dynint += dynval;
String statint = "Ст: ";  // Усреднённое за 500 секунд значение в мкР/ч
statint += statval;
String nimp = "Имп: "; // Количество имульсов с момента включения
nimp += impval;
oled.setCursor(0, 1);
oled.print(dynint);
oled.setCursor(0, 3);
oled.print(statint);
oled.setCursor(0, 5);
oled.print(nimp);
}
}

Тестирование самодельного дозиметра


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

Народная дозиметрия. Бюджетный дозиметр своими руками Arduino, Электроника, Самоделки, Своими руками, Дозиметр, Радиация, Программирование, Esp32, Интернет вещей, Измерения, Радиолюбители, Радиоэлектроника, Техника, Конструктор, Длиннопост

Показатели естественного фона и при поднесении сульфата калия

Стандартный уровень радиации в помещении - 15-20 мкР/ч. При прямом контакте сульфат калия получаем 32-39 мкР/ч, что вдвое выше нормы.
При контакте с сульфатом натрия через оргстекло толщиной 4 мм уровень радиации практически не менялся, что указывает на мягкое бета-излучение

В качестве заключения

Несмотря на всю эстетическую привлекательность, проект является сугубо домашним и предназначен, в большей части, для измерения порошков, предметов старины и прочих вещей, непонятным образом попавших в ваш дом :)

В рамках следующего материала постараемся разработать портативный и многофункциональный дозиметр с возможностью вывода информации (графиков, минимумов, максимумов) на экран и выгрузкой статистики в мобильное приложение на Блине.


А какие возможности в следующей версии DIY-дозиметра хотели бы видеть вы? Оставляйте свои предложения в комментариях!



Отдельная благодарность магазину «Duino» и мастерской «HelloBarsuki» за предоставленные материалы для статьи!

Показать полностью 13
[моё] Arduino Электроника Самоделки Своими руками Дозиметр Радиация Программирование Esp32 Интернет вещей Измерения Радиолюбители Радиоэлектроника Техника Конструктор Длиннопост
30
Посты не найдены
О Нас
О Пикабу
Контакты
Реклама
Сообщить об ошибке
Сообщить о нарушении законодательства
Отзывы и предложения
Новости Пикабу
RSS
Информация
Помощь
Кодекс Пикабу
Награды
Команда Пикабу
Бан-лист
Конфиденциальность
Правила соцсети
О рекомендациях
Наши проекты
Блоги
Работа
Промокоды
Игры
Скидки
Курсы
Зал славы
Mobile
Мобильное приложение
Партнёры
Промокоды Biggeek
Промокоды Маркет Деливери
Промокоды Яндекс Путешествия
Промокоды М.Видео
Промокоды в Ленте Онлайн
Промокоды Тефаль
Промокоды Сбермаркет
Промокоды Спортмастер
Постила
Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии