Wi-FI Esp8266 Esp-01 как подружить с arduino UNO ?

Тема в разделе "Arduino & Shields", создана пользователем ampedr, 17 окт 2015.

  1. ampedr

    ampedr Нерд

    Есть в наличии шилд: Esp8266 Esp-01, и не могу подключить его к своему Arduino UNO (китайская)
    Начал разбираться как его подключить, нашёл распиновку, в курсе, что работает он строго от 3,3v
    Подключил к arduino UNO как и было везде рекомендовано:
    пины VCC + CH_PD к 3.3v на ардуине.
    пин GND - на землю ардуины
    пины TXD и RXD к цифровым входам ардуино, например D10 и D11 (потом в скетче их обозначаю)
    Остальные три пина не подключаю никуда.

    Простенький скетч для теста:
    Код (Text):

    #include <SoftwareSerial.h> //Подключаем библиотеку работы с Последовательным портом
    SoftwareSerial mySerial(10, 11); // RX, TX (Создаем виртуальный порт Esp. подключаем на цифровые пины 10 и 11 порты TX, RX от Esp)

    void setup()
    {// Открываем последовательный порт компьютера, устанавливаем скорость 9600
    Serial.begin(9600);
     Serial.setTimeout(500);

    // set the data rate for the SoftwareSerial port
    mySerial.begin(9600); //Открываем последовательный порт Esp, устанавливаем скорость 9600. Внимание!! убедитесь что Esp работает именно на этой скорости!!
    mySerial.println("AT"); // Отправляем тестовую команду АТ в созданный порт, если всё работает в ответе должно прийти ОК
    }

    void loop() // run over and over
    {
    if (mySerial.available()) //Если есть данные в порте Esp, то передать их в последовательный порт компьютера
    Serial.write(mySerial.read());
    if (Serial.available()) //Если есть данные в порте компьютера, то передать их в последовательный порт Esp
    mySerial.write(Serial.read());

    }
     
    Данный скетч просто позволяет отправлять AT команды и получать с них ответы, но ответа ни на какие команды нету.
    При включении Arduino UNO с подключенным таким образом шилдом Esp8266, на нем загорается красный светодиод, а в сети Wi-Fi появляется открытая точка доступа: AI-THINKER_****** к ней можно подключиться, правда там ничего нету вообще.
    Моя задача просто отправлять AT команды и получать на них ответы с шилда, больше ничего не требуется. С этим бьюсь целый день, и так не могу понять что я не так делаю.

    Что я пробовал делать:
    1) Менять в скетче цифровые пины местами, и тестировать.
    2) Втыкать пины TXD и RXD с Esp8266 на такие-же пины ардуины (D0 и D1), и потом так-же их менять местами.
    3) Менять скорость порта, и портов, выставляя вместо 9600 другие значения рекомендованные в интернете, например 57600 или 115200 и так далее, и так-же комбинируя.
    В итоге посылая команду AT, долгожданного ответа OK я так и не получил.

    И что я НЕ пробовал сделать, так это запитывать шиллд отдельным питанием, потому что у меня его попросту нету (то есть блок питания на 12v стандартный есть, а девайса который отрегулировал бы 12v до нужных 3.3v нету).
    Но тут есть несколько спорных моментов, а обязательно ли отдельно запитывать этот шиллд если точка доступа и так появляется? Логично предположить, что питания ему хватает, хотя я тут могу ошибаться.
    Далее, гуглив по этому вопросу, читал, что все подключали напрямую к arduino UNO и запитывали от него, и всё было ок у большинства, команды AT работали у них прекрасно.
    Единственный спорный момент, о котором я читал, что мол некоторые Arduino UNO общаются на цифровых портах посредством только 5v и если шилд посылает команды 3.3v то мол может не сработать, хотя ардуина UNO у меня самая распространенная, как и у подавляющего большинства.

    Буду очень рад, если что то посоветуете, что ещё можно попробовать.
    И немного оффтопа, буду рад, если посоветуете нормальные стабилизаторы напряжения с 12v до 5v и так-же стабилизатор с 12v до 3.3v, потому что все блоки питания у меня дают на выходе 12v и через резисторы резать их не очень хочется, проще найти нормальные девайсы которые преобразуют в нужный вольтаж.
    Благодарю за внимание.
     
  2. Megakoteyka

    Megakoteyka Оракул Модератор

  3. ampedr

    ampedr Нерд

    Благодарю, а с esp8266 может кто нибудь подсказать? если сталкивались с этим чудо шилдом.
     
  4. Megakoteyka

    Megakoteyka Оракул Модератор

    http://forum.amperka.ru/search/6048243/ - ищите в темах Игоря.
    А вообще хорошо бы сперва пользоваться поиском, он не для красоты придуман.
     
  5. ampedr

    ampedr Нерд

    А что я должен найти поиском? Как подключить esp8266 к холодильнику, или например к raspberry PI ? Мне это не интересно, для меня важно подключить его конкретно к arduino UNO, и прежде чем задать вопрос, я хорошенько погуглил на предмет подключения esp8266 к UNO, сделал всё согласно инструкциям, но не работает, почему не работает - ответа в интернете не нашёл, в том числе и на данном форуме. Поэтому я создал тему с просьбой помочь, и, как мне кажется, довольно развернуто озвучил проблему.
    Если кто в курсе что я не так делаю, буду признателен если кто нибудь поможет.
     
  6. ИгорьК

    ИгорьК Гуру

    Понимаете, ответ ответу рознь. Отвечающий хотя бы должен понимать кто перед ним.
    Скажите, Вы на каком уровне освоения Ардуино находитесь? Что Вы уже сделали? Что умеете?
    Модуль ESP8266 - не для новичков. Там столько всего замешано вместе.
    Если Вы только купили Ардуино и этот модуль и надеетесь что-то сделать с ним, советую просто повторить чей-нибудь проект. Хотя бы на макетке. И проект найдите такой, чтобы Вам было понятно что к чему.

    Кроме того. Лично я ни разу не соединил вместе ESP и Ардуино (если она пятивольтовая) напрямую. Всегда только через модуль согласования уровней. Не стоит перегружать ESP пятью вольтами даже по входу. Она для этого не предназначена категорически.

    Все Ардуины от +2.7 вольта считают за единицу. В этом отношении проблем с согласованием не возникает. Но, если при этом на модуль идет хорошие 3.3 вольта, а не меньше.

    Что касается источников питания... Здесь тоже нет однозначного короткого ответа. Есть импульсные и линейные модули. Разницу знаете? В продаже на Амперке я не видел. Ищите на Али - они там есть. и на 3.3 и на 5 вольт.

    В общем, начинать с ESP8266 кроме как с точного копирования чужого проекта не советую.
     
  7. ampedr

    ampedr Нерд

    Спасибо за ответ, в ардуино я да, новичок, особенно плохо разбираюсь в тонкостях с питанием.
    Касаемо ESP8266, есть распиновка по которой я подключил, у других людей по такой схеме всё работает с точно такой же arduino UNO, у меня - нет. И я на этом этапе даже понять не могу в чем дело, может банально прислали брак, как сейчас на алиэкспресс это распространено, а я тут гадаю, почему оно не работает. Пока лично у меня подозрение на нехватку питания с ардуины, а ардуина её берет соответственно от USB компьютера, по поводу импульсных и линейных не в курсе тоже.... а этому ESP8266 какой тип питания надо помимо вольтового? К ESP8266 я изначально кроме 3,3v с ардуины не подключал, а то что в ардуине 3,3v нормально выдаётся, замерял мультиметром, но это вольты, остальных свойств типа ампер, линейности\импульсности или например сопротивления, об этом я без понятия.
    Кстати, тот факт, что при подключении всей описанной выше схемы появляется точка доступа, это может обозначать, что устройству питания хватило как надо, или не показатель?
     
  8. ИгорьК

    ИгорьК Гуру

    ESP8266 вполне хватает питания от Уно. А вот что с его входами при прямом подключении к пятивольтовым выходам я Вам сказать не могу.
    Я еще с браком в ESP не сталкивался. Хотя все может быть.
    Если Вы взялись работать с ESP - ваш обязательный инструмент должен быть PL2303:
    [​IMG]
    Без него Вы так и будете тыкаться. А второй инструмент Esplorer.
     
    Последнее редактирование: 18 окт 2015
  9. ampedr

    ampedr Нерд

    ИгорьК спасибо вам, помогли советом, и проблема решилась.
    Аналогичный переходник usb2uart у меня был, сейчас воспользовался софтом ESPlorer, и благодаря нему выяснил, что мой ESP8266 работает строго на четности 115200, и я его хоть и тестировал в arduino UNO, но по всей видимости забыл при такой четности поменять местами RX и TX на контроллере, сейчас ещё раз попробовал, подключив как положено к arduino UNO и выставив четность 115200 в скетче - всё заработало прекрасно, команды выполняются, в том числе и через скетчи arduino UNO или через него же по отладочному порту.

    Остался небольшой вопросик на всякий случай, по поводу команды AT+CWSAP которая создаёт точку доступа, если я эту команду запущу в бесконечном цикле, не выйдет ли из строя шилд из за регулярно создаваемой новой сети?
     
  10. ИгорьК

    ИгорьК Гуру

    Не выйдет. А зачем так делать? Что за эксперимент?
     
  11. ampedr

    ampedr Нерд

    Задумок много, в частности интересно можно ли с помощью этого чуда например реализовать некий флуд-рекламу в WI-FI сетях, точка доступа может называться и русскими буквами до 32 символов, а если постоянно выполнять AT+CWSAP каждую секунду с новым текстом, то пространство методично будет заполняться нужным текстом, но выдержит ли такие шутки ESP8266 или сгорит...
    В остальном всё понятно, очень классная штука, брал за пару баксов в качестве простенького вай фая, а тут кухонный комбаин целый.
     
  12. ИгорьК

    ИгорьК Гуру

    Креативно :) Попробуйте. Невелика потеря если что :)
     
  13. Romk

    Romk Нуб

    Я прошиваю ESP при помощи UNO с "удаленным мозгом", всё отлично. Помигал светодиодом на esp (пример Blink);
    подключился к домашней точке, получил IP ;
    с помощю сервиса Blynk "подрыгал" GPIO2 (http://docs.blynk.cc/#hardware-set-ups-esp8266-standalone);

    в общем сама ESP работает
    но с помощью связки :
    if (mySerial.available()){
    Serial.write(mySerial.read());
    }
    if (Serial.available()){
    mySerial.write(Serial.read());
    }
    ни чего внятного от ESP получить не удается. на AT команды не реагирует вообще, ESP вообще не отвечает((

    Вопрос: на ESP что-то должно быть залито, что бы она отвечала на AT команды?
    P.S.:
    учел
    tx -> rx
    rx -> tx
    tx из УНЫ подключил к ESP через делитель
     
    Последнее редактирование: 9 фев 2016
  14. asgorski

    asgorski Нуб

    Всем добрый день!

    После долгих мытарств на UNO заработал вот такой код:
    Код (C++):
    #include <SoftwareSerial.h> //Подключаем библиотеку работы с Последовательным портом
    SoftwareSerial mySerial(6, 5);

    void setup()
    {
    Serial.begin(9600);
    //Serial.setTimeout(500);

    // set the data rate for the SoftwareSerial port
    mySerial.begin(112500); //Открываем последовательный порт Esp, устанавливаем скорость 9600. Внимание!! убедитесь что Esp работает именно на этой скорости!!
    mySerial.println("AT"); // Отправляем тестовую команду АТ в созданный порт, если всё работает в ответе должно прийти ОК

    Serial.println("Start working!!!");
    }

    void loop() // run over and over
    {
    if (mySerial.available()){
      Serial.println(mySerial.readString());
    }

    String txt_in="";

    if (Serial.available()) {
      txt_in=Serial.readString();
      Serial.println(txt_in);
      mySerial.println(txt_in);

    }
    }
     
  15. Domrist

    Domrist Нуб

    А по какой схеме ты подсоединял esp8266 к ардуине?Я подключал ПИТАНИЕ И ch_pd от ардуины на контакт питания 3.3 V на ардуине,но esp начинает греется и по твоему скетчу нету ответа в серийном порте