Модуль ESP8266 выдает случайные/мусорные символы при внешнем питании (но работает на Arduino 5v и 3.3v)

Резюме: при питании Arduino 5 В и 3,3 В модуль ESP8266 выдает загрузочные сообщения и отвечает на AT-команды на последовательном терминале при 115200 бод как -

загрузочное сообщение:

<random/garbage characters>
Ai-Thinker Technology Co. Ltd.
ready

Вывод команды "АТ":

OK

Выход "AT+GMR":

AT version:1.2.0.0(Jul 1 2016 20:04:45)
SDK version:1.5.4.1(39cb9a32)
Ai-Thinker Technology Co. Ltd.
Dec 2 2016 14:21:16
OK

в то время как при использовании внешнего источника питания 3,3 В (пробовали использовать несколько источников питания — подробности далее) в загрузочном сообщении есть мусорные/случайные символы, а ответ на AT-команду также содержит мусорные символы.

Хотя 5v и 3.3v Arduino решили проблему для меня, но не рекомендуется использовать их для включения ESP, так как Arduino

  • 5v может быть опасным для ESP (нагревается через несколько минут после подключения) и,
  • 3.3v может не хватать тока (опасно для чипа Arduino/Atmega),

так что теперь, похоже, мне нужно добиться того, что контакты Arduino 5v и 3v3 доставляют на Vcc ESP с использованием внешнего источника питания.


Подробности: я купил модуль ESP8266 у amazon и пытался заставить его пройти некоторые базовые тесты, такие как запуск AT-команды через последовательный монитор, планируя перейти к части программирования позже. Вот что я пробовал до сих пор. входная мощность для модуля ESP.

Попытка 1 (неудачная):

AC ---> Выходной адаптер постоянного тока 5 В/1 А ---> AMS1117 (3,3 В) --> Vcc ESP8266

Согласно информации в статье iotbytes , я подал ~ 3,3 В (измерено с помощью вольтметра) на Vcc ESP8266 с контакта № 2 ams1117 и использовал все конденсаторы со значениями, как предложено в посте.

  • (Наблюдение):
    синий светодиод быстро мигает, красный светодиод горит постоянно,
    появляется SSID AI Thinker, к которому я могу подключиться (192.168.4.2) через свой ноутбук и могу пропинговать 192.168.4.1
    Последовательный монитор заполняется значениями мусора на все скорости передачи, кроме 115200. На 115200 последовательный монитор молчит, и я получаю 2/3 символов мусора в ответ на AT-команду.
  • (Распиновка): Используются контакты № 2 (выход 3,3 В) и № 3 (земля) Ams1117 для питания модуля. Остальные другие штыревые соединения такие же, как в статье на medium.com .

    Esp8266 | Arduino
    ------------------
    RX      | RX
    TX      | TX
    GPIO 0  | None
    GPIO 2  | None
    
    
    Arduino | Arduino
    -------------------
    Reset   | GND
    
    Esp8266 | AMS1117
    ------------------
    Vcc     | 3.3v 
    CH_PD   | 3.3v (/Vcc of esp8266)   tried via jumper as well as 100 Ohm resistor
    GND     | GND 
    

После этого я попытался двигаться дальше, переведя ESP8266 в режим программирования, следуя видео . Пришлось добавить только 1 "дополнительное" подключение -

Esp8266 | Esp8266
------------------
GPIO0   | GND (From AMS1117)

И, при загрузке программы мигания светодиодов esp8266, получил скорость загрузки (@9600/115200) -

Глобальные переменные используют 27968 байт (34%) динамической памяти, оставляя 53952 байта для локальных переменных. Максимум 81920 байт. предупреждение: сбой espcomm_sync ошибка: сбой espcomm_open ошибка: сбой espcomm_upload_mem ошибка: сбой espcomm_upload_mem

попытался добавить резистор 1k с GPIO-Ground, но это не сработало!

Попытка 2 (неудачная):

Аккумулятор 9В/1А ---> Понижающий преобразователь (настроен на выход 3,3В) --> Vcc ESP8266

  • (Наблюдение):
    Синий светодиод мигает один раз и остается выключенным (пока я не отключу и снова не подключу Vcc), красный светодиод горит постоянно.
    Появляется SSID AI Thinker и может подключиться/пинговать его
    Serial Monitor.... фигня в ответ на AT команду.

  • (Распиновка):

    Esp8266 | Arduino
    ------------------
    (Same as Attempt1)
    
    Arduino | Arduino
    ------------------
    (Same as Attempt1)
    
    Esp8266 | Buck Converter
    ------------------
    Vcc     | 3.3v
    CH_PD   | 3.3v (/Vcc of esp8266) - tried via jumper as well as 100 Ohm resistor
    GND     | GND 
    

Попытка 3 (неудачная):

Переменный ток ---> Выходной адаптер постоянного тока 5 В/1 А ---> Понижающий преобразователь (настроен на выход 3,3 В) --> Vcc ESP8266

  • (Наблюдение): То же, что и в Попытке 2
  • (Распиновка): То же, что и Attempt2

Попытка 4 (проход):

Arduino (5v и 3v3) ---> Vcc ESP8266

  • (Наблюдение):

    Синий светодиод мигает один раз и остается выключенным (пока я не наберу команду через последовательный монитор), красный светодиод горит постоянно. Появится SSID AI Thinker, и он сможет подключиться к нему или пропинговать его. Последовательный монитор фиксирует загрузочное/приветственное сообщение ESP8266 и отвечает на AT-команды со скоростью 115200 бод.

  • (Распиновка):

    Esp8266 | Arduino
    ------------------
    RX      | RX
    TX      | TX
    GPIO 0  | None
    GPIO 2  | None
    Vcc     | 3.3v (also tried 5v) 
    CH_PD   | 3.3v (/Vcc of esp8266)   tried via jumper as well as 100 Ohm resistor
    GND     | GND 
    
    
    Arduino | Arduino
    -------------------
    Reset   | GND
    

Примечание: Arduino питается от USB-порта (a-b) ноутбука.

С чем может быть связано такое поведение ЭЦН с внешним источником питания? Я могу опубликовать больше информации, если требуется. Любая помощь/предложение может быть очень полезным.

"Любая помощь/предложение" - купить приличный блок питания. Если у вас нет схем и вы не можете посмотреть на пульсации VCC с помощью прицела, обсуждать особо нечего.
Спасибо @DmitryGrigoryev, я могу сделать и опубликовать схемы (схемы?) для всех 4 корпусов. У меня нет осциллографа :( .
Схемы бы не помешали. Мне просто пришло в голову, что вы, возможно, забыли подключить GND Arduino к GND ESP, когда ESP питается от внешнего источника. Может ли это быть проблемой? Если нет, опубликуйте принципиальные схемы: тогда больше людей захотят взглянуть на ваш вопрос.
@DmitryGrigoryev - Да, вы правы. Я не подключал GND Arduino к GND ESP - когда ESP питался от внешнего источника (Попытки 1-3). Я упомянул все соединения в разделе распиновки и обязательно упомянул бы об этом в разделе распиновки как -- Arduino (GND) | AMS1117/понижающий преобразователь (GND) . Я не уверен, что это может быть потенциальной причиной, но если вы порекомендуете, я могу попробовать это.
Ну да: сигналы TX и RX нуждаются в GND для замыкания цепи, как это делает VCC.
Еще раз спасибо @DmitryGrigoryev, ваш предыдущий ответ был последней недостающей частью этой головоломки :) Теперь модуль отвечает на команды AT / AT + GMR на внешнем источнике питания. Вы можете опубликовать свой предыдущий комментарий в качестве ответа.

Ответы (1)

Вам не хватает соединения GND между ESP и Arduino при внешнем питании ESP. Как правило, устройства, которые совместно используют сигналы, основанные на напряжении, также должны иметь общую землю. В противном случае без общего опорного напряжения становится бессмысленным: сигнал +5 В на Arduino может восприниматься как -1 В на ESP (при условии, что разница между напряжениями заземления составляет 6 В).

Вы также можете рассуждать с точки зрения тока: когда Arduino устанавливает высокий уровень на своем выводе TX и начинает течь ток, как этот ток возвращается обратно в Arduino?