TG Telegram Group & Channel
IDEA (IoT, DIY, ESP, Automatics) | United States America (US)
Create: Update:

​​Отличие ESP32 от ESP2866 - UART

Делаю проект "Умной трости" для слабовидящих. В части функционала присутствует отправка GPS координат на сервер для поиска ближайшей остановки общественного транспорта. Сначала делал на ESP8266, но по мере роста задач, пришлось перейти на ESP32.

Основная причина, конечно, это большее количество GPIO - ножек у нее как у сороконожки. Но сегодня не об этом, а о том, как я заставлял одновременно работать GPS модуль и GSM модем.

Выбора у меня особого не было, это оказались SIM800L и NEO-M8N.

Особенность данного комплекта в том, что и GSM, и GPS работают по последовательному интерфейсу, иначе говоря - UART.

ESP8266 имеет один аппаратный последовательный интерфейс, плюс есть возможность делать программную симуляцию на любых (почти) указанных ножках. Это всем известный SoftwareSerial, с использованием которого написано 99% всех примеров кода.

Я решил для большей красоты сделать все на M5Stack. Это такая аппаратная реализация, где большинство плюшек уже распаяно и собрано в красивый корпус, но по сути это та же ESP32. Преимущества:

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

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

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

По факту, ни один модуль не завелся. От слова "никак". А дружелюбный микропитон оказался настолько плохо документирован, а графическое программирование настолько нудным, что.... Да, пришлось опять лезть в Arduino IDE. Там хотя бы примеров полно.

Однако, не завелось и там. Ни на родных, ни на самописных примерах кода.

На всякий случай напомню, что до этого дня полноценно с ESP32 я не работал, поэтому не особо представлял о возможностях его UART и об особенностях M5Stack в частности.

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

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

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

Дальше пошли мои открытия, относительно совместной работы. Оказывается, когда мы объявляем внутри программы об использовании последовательного интерфейса, мы должны делать так:

HardwareSerial GPS(0);
HardwareSerial GSM(2);

Где цифра в скобочках - это номер UART интерфейса ESP32. Нулевой это GPIO 1 - RX и 3 -TX, а второй - это GPIO 17 - RX и 16 - TX

Самое смешное в том, что инициализировать порт можно как по-простому, например, GPS.begin(9600), так и по-полной, например: GSM.begin (115200, SERIAL8N1, 16, 17).

Да, мы указываем ноги, если пишем полностью!

Если дойдут руки, то обязательно проверю, что будет, если тот же Serial(2) использовать на других GPIO. Реальная интрига!

А пока впечатления такие: 3 UART на одну ESP32 - это прямо много. Считайте, что у вас будет одновременно работать все, что только можно захотеть: LORA для опроса дальних датчиков, GPS для уточнения своего местоположения и SMS-управление, если надо. Жаль, нету LORA под рукой, я бы попробовал.

Задавайте вопросы в комментариях, отвечу.

​​Отличие ESP32 от ESP2866 - UART

Делаю проект "Умной трости" для слабовидящих. В части функционала присутствует отправка GPS координат на сервер для поиска ближайшей остановки общественного транспорта. Сначала делал на ESP8266, но по мере роста задач, пришлось перейти на ESP32.

Основная причина, конечно, это большее количество GPIO - ножек у нее как у сороконожки. Но сегодня не об этом, а о том, как я заставлял одновременно работать GPS модуль и GSM модем.

Выбора у меня особого не было, это оказались SIM800L и NEO-M8N.

Особенность данного комплекта в том, что и GSM, и GPS работают по последовательному интерфейсу, иначе говоря - UART.

ESP8266 имеет один аппаратный последовательный интерфейс, плюс есть возможность делать программную симуляцию на любых (почти) указанных ножках. Это всем известный SoftwareSerial, с использованием которого написано 99% всех примеров кода.

Я решил для большей красоты сделать все на M5Stack. Это такая аппаратная реализация, где большинство плюшек уже распаяно и собрано в красивый корпус, но по сути это та же ESP32. Преимущества:

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

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

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

По факту, ни один модуль не завелся. От слова "никак". А дружелюбный микропитон оказался настолько плохо документирован, а графическое программирование настолько нудным, что.... Да, пришлось опять лезть в Arduino IDE. Там хотя бы примеров полно.

Однако, не завелось и там. Ни на родных, ни на самописных примерах кода.

На всякий случай напомню, что до этого дня полноценно с ESP32 я не работал, поэтому не особо представлял о возможностях его UART и об особенностях M5Stack в частности.

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

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

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

Дальше пошли мои открытия, относительно совместной работы. Оказывается, когда мы объявляем внутри программы об использовании последовательного интерфейса, мы должны делать так:

HardwareSerial GPS(0);
HardwareSerial GSM(2);

Где цифра в скобочках - это номер UART интерфейса ESP32. Нулевой это GPIO 1 - RX и 3 -TX, а второй - это GPIO 17 - RX и 16 - TX

Самое смешное в том, что инициализировать порт можно как по-простому, например, GPS.begin(9600), так и по-полной, например: GSM.begin (115200, SERIAL8N1, 16, 17).

Да, мы указываем ноги, если пишем полностью!

Если дойдут руки, то обязательно проверю, что будет, если тот же Serial(2) использовать на других GPIO. Реальная интрига!

А пока впечатления такие: 3 UART на одну ESP32 - это прямо много. Считайте, что у вас будет одновременно работать все, что только можно захотеть: LORA для опроса дальних датчиков, GPS для уточнения своего местоположения и SMS-управление, если надо. Жаль, нету LORA под рукой, я бы попробовал.

Задавайте вопросы в комментариях, отвечу.


>>Click here to continue<<

IDEA (IoT, DIY, ESP, Automatics)






Share with your best friend
VIEW MORE

United States America Popular Telegram Group (US)