ESP32 и GY-NEO6MV2 Не удается получить данные с GPS
- Войдите на сайт для отправки комментариев
Коллеги, приветствую!
Пытаюсь подружить ESP32 и GY-NEO6MV2.
Для начала воспользовался рекомендациями из http://arduino.ru/forum/obshchii/gy-gps6mv2-arduino-ne-rabotaet#comment-363161 (с применением arduino nano) с целью проверки работоспособности модуля. Все хорошо, модуль передает данные в монитор порта.
Далее, что бы в своем проекте использовать данные с GPS попытался по аналогии просто прочитать данные с модуля GPS уже на ESP32. И вот тут возникли сложности. К какому выводу я бы не подключал вывод TX GY... не получается считать данные. Пробовал подключить к GPIO13, GPIO12, GPIO14, GPIO27, GPIO26
Подскажите, что дела не так. Куда (аппаратно) нужно подключить модуль GPS к ESP32, что бы хотя бы считать с него данные и вывести в монитор порта.
Код при тестировании применял взятый по ссылке выше, но все же продублирую его сюда.
#include <SoftwareSerial.h> SoftwareSerial nss(3, 4); void setup(void) { Serial.begin(115200); nss.begin(9600); Serial.println("Fun begins:"); } void loop(void) { if (nss.available()) Serial.write(nss.read()); }
А откуда уверенность, что SoftwareSerial поддерживается esp32?
Зачем вообще использовать софтверный порт при наличии аппаратных?
Да, подключил сейчас вот так:
В таком подключении работает (подключился к UART2). Но вот дело в том, что подключить необходимо к ESP t-call. А на распиновке этой платы указано, что 16 и 17 пины не используются (NC)
А к аппаратному UART0 (TX0, RX0) подключится не получается, вроде как из за того, что они используются для подключения через USB. Где у ESP32 t-call UART1 не знаю. В мануалах найти не могу.
Ломаю голову.
А откуда уверенность, что SoftwareSerial поддерживается esp32?
Поддерживается, стандартный, искаропки.
Поддерживается, стандартный, искаропки.
У меня, почему то, команда nss.begin(9600); приводит к перехагрузке.
Зачем вообще использовать софтверный порт при наличии аппаратных?
А с аппаратными на ESP8266 совсем пичалька. Serial1 заточен только на передачу, видимо, для отладки. Т.е у него есть вывод TX а RX - тютю. А Serial2 - не настоящий, это тот же Serial0, у которого по команде Serial.swap() ноги RX и TX переключаются на другие физические выводы, грубо говоря, с 0 и 1 на 14 15, сам Serial остается тем же, вместе с тем, что у него на момент переключения было в буфере.
У меня, почему то, команда nss.begin(9600); приводит к перехагрузке.
А у меня - нет, к нему JDY-40 подключен. Видимо, потому, что я использую правильные наименования выводов, не 3, 4, а D3, D4
Upd: всё вышенаписанное мной верно для NodeMCU
Вот распиновка моей платы. Нет ни UART1, ни UART2 :(
По сему вопрос с подключением GPS остается открытым. Не придумал пока, как подключить.
Коллеги, как на ESP32 организовать программный UART или другое решение... Читал, что на ESP32 любые выводы можно переназначить, т.е. программный UART2 назначить не на 16 и 17 выводы, а другие пины. Но тут хотелось бы отметить, что сделать это нужно в рамках Arduino IDE
"программный UART" - это SoftwareSerial.
Тебе ДетСимен уже ответил - прописывай пины правильно и все будет работать
Тебе ДетСимен уже ответил - прописывай пины правильно и все будет работать
Я такую плату впервые вижу.
"программный UART" - это SoftwareSerial.
Тебе ДетСимен уже ответил - прописывай пины правильно и все будет работать
3 и 4 тоже можно, но это не имя цифрового порта, а GPIO )))
В скетче указаны сейчас 32 и 33 пины. Именно GPIO32 и GPIO33
Код вот такой
Но все равно уходит на перезагрузку вот с таким сообщением в мониторе:
Вот распиновка моей платы. Нет ни UART1, ни UART2 :(
По сему вопрос с подключением GPS остается открытым. Не придумал пока, как подключить.
Ну так возьмите другую плату.
Как бы "железо" подбирается под задачу, а не наоборот.
Ну так возьмите другую плату.
Как бы "железо" подбирается под задачу, а не наоборот.
Так я по этому эту плату и взял, потому, как мне модуль SIM800L нужен был, а он тут уже на одной плате с контроллером смонтирован.
Есть еще вот такая плата. У нее то как рас есть выводы UART2 на 16 и 17 пинах. И с этой платой GPS превосходно работает. Но первая плата взята как раз под задачи.
В скетче указаны сейчас 32 и 33 пины. Именно GPIO32 и GPIO33
Вы проверяли, что эти пины имеют эти номера?
если подключить к пину 32 или 33 светодиод(с резистором!), а в коде прописать digitalWrite(32, HIGH) -светится будет?
Попробуйте и напишите в форум, иначе будет бродить впустую
Код опробован с номерами пинов 32 и 33. Светодиод мигает.
а если попробовать переназначить пины хардового Сериала, например Serial2?
Сорри, увидел что вы это уже пробовали - в сообщении #2. Ну так что мешает сделать последний шаг и указать вместо 16 и 17 свои пины, те же 32 и 33?
Вроде как SoftwareSerial для ESP32 работает только на gpio 1, 3, 6-11, 20, 24, 28-30 все остальные - return
Вроде как SoftwareSerial для ESP32 работает только на gpio 1, 3, 6-11, 20, 24, 28-30 все остальные - return
Тогда все плохо. На t-call из перечисленных есть только 1 и 3... но это как раз UART0, который не получается использовать.
Сорри, увидел что вы это уже пробовали - в сообщении #2. Ну так что мешает сделать последний шаг и указать вместо 16 и 17 свои пины, те же 32 и 33?
Неожиданно, но РАБОТАЕТ!!! Я в просто заменил номера пинов с 16 и 17 на 32 и 33. И работает все это с аппаратной библиотекой.
Вроде как SoftwareSerial для ESP32 работает только на gpio 1, 3, 6-11, 20, 24, 28-30 все остальные - return
Тогда все плохо. На t-call из перечисленных есть только 1 и 3... но это как раз UART0, который не получается использовать.
вот и используй аппаратный UART0.
оно у тебя сейчас к type-c USB через микросхему адаптера USB-UART подключено.
а ты переконфигурируй сериал на другие свободные пины:
Serial.begin(115200, SERIAL_8N1, RX_pin, TX_pin);
как это должно работать - во время загрузки скетча UART0 будет работать через TYPE-C, a после загрузки скетча переподключится на пины RX_pin TX_pin.
!только вот этого не нужно:
#include
оно просто Serial
*пока писал - заработало. ну, ок.
Коллеги, всем спасибо за участие в решение вопроса. Без Вас бы не справился.
Сорри, увидел что вы это уже пробовали - в сообщении #2. Ну так что мешает сделать последний шаг и указать вместо 16 и 17 свои пины, те же 32 и 33?
Неожиданно, но РАБОТАЕТ!!! Я в просто заменил номера пинов с 16 и 17 на 32 и 33. И работает все это с аппаратной библиотекой.
а что в этом неожиданного? Сказано же, что у ЕСП аппаратный сериал можно назначить на любые пины
!только вот этого не нужно: #include оно просто Serial *пока писал - заработало. ну, ок.
Учёл, поправил, проверил. РАБОТАЕТ. Спасибо!
Коллеги, продолжаем разговор...
Сейчас код выглядит вот так:
Но дело в том, что так же в коде назначены пины для модуля SIM800L
Вот эти пины:
И снова ищу выход из ситуации. Есть идеи?
SerialMon - что к нему подключено?
SerialMon - что к нему подключено?
Монитор порта...
SerialMon - что к нему подключено?
Монитор порта...
аппаратно что к нему подключено?
что за монитор порта?
Аппаратно к выводам GPIO26 и GPIO27 подключен модуль SIM800L
К выводам GPIO32 и GPIO33 подключен GY-NEO6MV2
Монитор порта:
Аппаратно к выводам GPIO26 и GPIO27 подключен модуль SIM800L
К выводам GPIO32 и GPIO33 подключен GY-NEO6MV2
Монитор порта:
специально в гугл полез - точно та глючная фигня в иде называется "монитор порта"
так вот... нет у тебя монитора порта - ты в туда собрался GPS подключать, почти подключил, но кривая снова тебя не втуда увела.
заново - у тебя один свободный сериал0 - перечитай заново мой пост выше и сделай, как я написал.
как жить без монитора порта? - отладку SMS-сками будешь производить.
та, да... или по блютузу. о_О
Была у меня такая идея, что бы экран применять для отладки. Думал, может другой вариант есть.
Принял. Спасибо.
Коллеги, продолжаем разговор...
Сейчас код выглядит вот так:
Стесняюсь спросить... Почему вы пытаетесь рулить GSM модулем используя библиотеку для GPS ?
Стесняюсь спросить... Почему вы пытаетесь рулить GSM модулем используя библиотеку для GPS ?
А почему Вы так решили? Изначально вопрос был в подключении GPS модуля к ESP32. При решении этой задачи использовалась библиотека GPS. А с модулем GSM общение происходит по серийному порту. Без библиотек. Через АТ команды.
На картинку посмотрел.
Была у меня такая идея, что бы экран применять для отладки. Думал, может другой вариант есть.
не пойму, в чем проблема. Сколько аппаратных Сериалов у ЕСП32 - три: Serial, Serial1 и Serial2. Cколько вам нужно в программе - тоже три - для GPS. для GSM и для Монитора порта.
так в чем дело то?
так в чем дело то?
да. в чём дело? каких вам сериалов ещё не хватает?(с)
не пойму, в чем проблема. Сколько аппаратных Сериалов у ЕСП32 - три: Serial, Serial1 и Serial2. Cколько вам нужно в программе - тоже три - для GPS. для GSM и для Монитора порта.
так в чем дело то?
Возможно что то не так делал, но через Serial2 у меня не заработал GPS.
Сегодня вечером попробую еще раз. По результатам отпишусь.
не пойму, в чем проблема. Сколько аппаратных Сериалов у ЕСП32 - три: Serial, Serial1 и Serial2. Cколько вам нужно в программе - тоже три - для GPS. для GSM и для Монитора порта.
так в чем дело то?
Спасибо, друже!!! Сейчас вот так... РАБОТАЕТ!!!
Руки кривые изначально не позволили сделать по правильному.