Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

Управление ESP32 через BLE

Программирование микроконтроллеров *Разработка под Arduino *
Tutorial

Интро


Уже сравнительно давно микроконтроллер ESP32 стал неким стандартом для множества DIY проектов. И действительно, возможность работы с Wi-Fi, Bluetooth, встроенная энергонезависимая память, а так же большое число выводов позволяют сделать массу интересных проектов.

В этой статье, мы поговорим про управление конроллером с помощью BLE используя доступные в AppStore приложения. А в следующей, если она будет, про создание собственного приложения для iOS.
Читать дальше →
Всего голосов 7: ↑7 и ↓0 +7
Просмотры 8.1K
Комментарии 2

Хранение настроек в памяти Базового устройства

Разработка под Arduino *
Из песочницы

Привет! Если Вам посчастливилось подержать в руках микроконтроллер ESP32 (мне посчастливилось больше и у меня в руках M5Stack) от китайской компании ESPRESSIF, то этот пост, возможно, будет полезен.



Бывает ситуация, когда необходимо сохранить какие-то параметры в энергонезависимой памяти (например: подсчитывать количество включений устройства за всё время или сохранять настройки Wi-Fi). Это можно сделать с лёгкостью с помощью библиотеки Preferences.


Объявим экземпляр класса Preferences, а там видно будет...


Первое, что мы должны сделать — это создать связку ключей путём вызова метода begin с парой аргументов (но можно только с одним первым): именем связки и флагом "только для чтения".


Чтобы сохранить строковое значение в памяти, нужно передать ключ и само значение в метод, имя которого состоит из двух частей: первой — put и второй — имени типа, например: String. Всё ясно и понятно. Правда, есть ещё "сырые" байты без обжарки, которым никто не хочет присвоить тип. В таком случае метод принимает ещё и третий аргумент с количеством этих байтов. С этой процедурой вроде всё.


После того, как значение было записано, можно его прочесть с помощью метода (имя которого аналогично предыдущему), где первая часть будет get. Данный метод возвращает значение для ключа соответственного типа. Помните про случай с байтами? Если Вы не знаете (или не помните) сколько байт лежит по ключу, то дёргайте метод getBytesLength с единственным аргументом — ключом, она всё посчитает и вернёт количество в size_t.


Если Вы хотите удалить определённый ключ из связки, то отдайте его единственным аргументом методу remove.


Хотите навести настоящий марафет и очистить ВСЮ связку? Вызывайте без всяких аргументов метод clear!


Когда Вы пожелаете завершить работу со связкой, то вызовите метод end без каких-либо аргументов.


Читать дальше →
Всего голосов 14: ↑10 и ↓4 +6
Просмотры 4.8K
Комментарии 7

Шлюз для UDP между Wi-Fi и LoRa

Сетевые технологии *Программирование микроконтроллеров *Сетевое оборудование

Делаем шлюз между Wi-Fi и LoRa для UDP



У меня была детская мечта — выдать каждому бытовому «безВайФайному» устройству билет в сеть, т. е. IP-адрес и порт. Спустя какое-то время я понял, что не стоит откладывать. Надо взять и сделать.


Техническое задание


Сделать шлюзом M5Stack с установленным Модулем LoRa (рисунок 1). Шлюз будет подключён к Wi-Fi-сети, в которой получит по DHCP локальный IP-адрес. Шлюз с определённой периодичностью будет вещать в «LoRa-эфир» своё имя (аналог SSID для Wi-Fi) и диапазон допустимых портов, чтоб другие устройства знали, что есть такая сеть, к которой можно подключиться и в каком диапазоне можно «повыбирать» свободный порт. Поскольку это будет прототип, аутентификация не в этот раз. Новые устройства-клиенты будут находить доступную LoRa-сеть и передавать ей выбранный порт. После того, как шлюз получил от нового клиента порт, проверяет свободен ли он, если да, то регистрирует нового клиента и начинает слушать данный порт на собственном асинхронном UDP-сервере. После регистрации клиент получит согласие или отказ на использование заявленного порта. Порядок работы отображён в таблице 1.



Рисунок 1


Таблица 1


сторона направление и данные сторона сеанс
[ клиент ] <— сигнал-маяк — [ шлюз ] 0xA1
[ клиент ] — выбранный порт —> [ шлюз ] 0xB1
[ клиент ] <— согласие или отказ — [ шлюз ] 0xA2
[ клиент ] — UPD-пакет —> [ шлюз ] 0xB2
[ клиент ] <— UPD-пакет — [ шлюз ] 0xA3
[ сеть ] <— UPD-пакет — [ шлюз ] 0xC1

Передо мной на столе лежат всякие Модули для M5Stack и скучают. Давайте возьмем LoR’у и развлечёмся с ней. Сама концепция модулей прекрасна! Что тут скажешь? Но, модули у меня первой ревизии, в которых ужаснейшая встроенная антенна, выполненная на гибкой печатной плате и приклеенная к боковой стенке корпуса. Я проводил однажды полевые тесты таких модулей (можно посмотреть на русскоязычном канале на YouTube):



Естественно, пришлось удалить эти рудименты и впаять стандартные спиралевидные антенны, которые идут в комплекте с Ra-01. После такой кастомизации дальность связи заметно улучшилась, но появился побочный момент — антенна имеет диаметр больший, чем допустимое расстояние между модулями. Пришлось отказаться от Завершающего модуля на время проекта.

Всего голосов 15: ↑15 и ↓0 +15
Просмотры 7K
Комментарии 11

ESP32 и файловая система SPIFFS

Программирование микроконтроллеров *
Tutorial


SPIFFS – (Serial Peripheral Interface Flash File System) файловая система флеш-памяти, подключаемой по последовательному периферийному интерфейсу. Простыми словами: есть микроконтроллер ESP32 (рисунок 1), у него есть встроенная перезаписываемая энергонезависимая NOR-память, в которой хранятся: настройки (Preferences), загрузчик (Bootloader), микропрограмма (скомпилированный скетч), файловая система (SPIFFS) и ещё что-нибудь, типа обновления "по воздуху" (OTA).

Читать дальше →
Всего голосов 11: ↑9 и ↓2 +7
Просмотры 24K
Комментарии 9

GSMout – приём SMS и звонков «как дома»

Программирование микроконтроллеров *Разработка под Arduino *Сотовая связь


Рисунок 1


Сегодня практически отсутствуют Интернет-ресурсы, которым бы был не нужен Ваш номер телефона. Верификация номера проходит обычно путём получения SMS с кодом или звонком, где последние цифры номера являются аргументом для подтверждения. Если Вы занимаетесь бизнесом, то наверняка сталкивались с тем, что для совершения тех или иных банковских операций необходимо подписывать их с помощью кода из SMS. Всё хорошо, когда находитесь в домашнем регионе и получить код не составит труда, гораздо сложней ситуация обстоит, если Вы находитесь в другом регионе, где роуминг не работает, т. к. Ваш телефон или SIM-карта не поддерживается местными сотовыми операторами. Одним из элегантных решений является данный проект (рисунок 1). В домашнем регионе Вы оставляете M5Stack с установленной SIM-картой, получаете белый IP у оператора, открываете порт и получаете доступ к журналу входящих SMS и звонков онлайн с любой точки мира, где есть Интернет.

Читать дальше →
Всего голосов 12: ↑11 и ↓1 +10
Просмотры 8.7K
Комментарии 17

Простой графический интерфейс для M5Stack (Arduino)

Программирование микроконтроллеров *

Привет! Сегодня мы познакомимся с такой штукой как M5 UI. Благодаря M5 UI Вы можете с помощью пары строк кода подключать всевозможные поля, кнопки, ползунки и переключатели, создавать условные слоя. Несмотря на то, что процесс подключения элементов UI очень прост, Вы также можете воспользоваться наглядным инструментом M5 UI Designer for Arduino IDE.



Рисунок 1

Читать дальше →
Всего голосов 7: ↑7 и ↓0 +7
Просмотры 5.6K
Комментарии 1

Карточная игра «Дурак» на двух M5Stack

Программирование микроконтроллеров *Разработка под Arduino *

Цель урока


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



Рисунок 1.

Читать дальше →
Всего голосов 8: ↑8 и ↓0 +8
Просмотры 7.3K
Комментарии 0