ESP8266 += Arduino?

ArduinoESP8266Nevím, jestli je to dobře, nebo špatně, ale opět se objevila novinka ve vývojových prostředcích pro oblíbený WiFi modul s čipem ESP8266. Tentokrát jde o verzi vývojového prostředí Arduino. Na stránkách projektu adruino ESP8266 se rodí verze, která se nainstaluje do běžného IDE pro Arduino a má umožnit psaní aplikací ve stejném duchu, jako psaní pro jakékoliv jiné Arduino…Po instalaci se ve vývojových deskách objeví nová položka “ESP8266”

SS20150328103014

A dále pak několik příkladů v záložce s příklady:

SS20150328102912

Překlad proběhne bez potíží a příklad blikající LED v mém ESP-01 běží. Do složitějších věcí bych se zatím ale nepouštěl, neboť sám autor uvádí, že se jedná o rannou verzi, která bude obsahovat určitě chyby. Na jednu stranu vítám možnost jednoduchého psaní aplikací pro ESP8266, ale na stranu druhou se trošku obávám o to, abychom za chvíli nebyli obklopeni špatně naprogramovanými Wifi moduly, které budou zbytečně znečišťovat už tak zaneřáděné pásmo 2.4GHz…

41 komentářů u „ESP8266 += Arduino?“

  1. Zdravim, chcel by som sa opytat na parveci – nie som elektrotech. specialista, ale skusam Arduino Nano a ESP8266. Mam najnovsiu versiu ESP8266 -1 – updateowal som ju cez internet AT version:0.30.0.0(Jul 3 2015 19:35:49) SDK version:1.2.0 Ai-Thinker Technology Co.,Ltd. Build:1.2.0.6 Jul 14 2015 11:39:59.

    Chcel by som napisat skript v Arduine, kt. by spustal v urcitych intervaloch externu linku PHP (server v Google Cloud) a ukladal mi tam informacie zo snimaca. Vsetko by sa dalo naprogramovat, len mam problem, ze ked ze Arduino zdrojovy kod posielam prikazy, Arduino a ESP8266 nereaguje. Ked rucne vkladam v Arduino IDE serial monitore, tak na prikazy reaguje.

    Mozete mi prosim pomoct s jednoduchym skriptom, pre odosielanie AT prikazov? Popr. aj ked som skusal skripty z internetu, nefungovali mi – neviem ci to nie je tym, ze by som mal firmware downgradeovat na nizsiu verziu?

    Za kazdu informaciu vopred velmi pekne dakujem. Andrej

    1. Takže abych to shrnul – pokud posíláte příkazy do ESP ze sériového terminálu, tak vše funguje. Pokud to ale uděláte z Arduina Nano, tak to nejde. Pokud to tak je, tak zkuste následující:
      1. Je třeba ověřit, že Arduino skutečně vysílá správná data na správné rychlosti
      2. pokud ano, tak může být potíž v časování – zkuste mezi jednotlivé příkazy vložit prozatím nějaké delay() s dostatečně dlouhou periodou
      3. Arduino Nano má pouze jeden HW sériový port – posíláte to přes něj, nebo přes SoftwareSerial? Pokud přes HW port, tak je třeba mít odpojený USB, protože FTDI/CH380 čip na Arduinu může komunikaci ovlivňovat

      1. Zdravim,

        1. skusal som nastavit ESP na 9600 ale standardne ho pouzivam na 115200. Celkovo to mam zapojene nasledovne – USB kabel z PC do Arduino Nano -> ESP8266
        2. skusal som uz aj jednoduchy skript, ktory posle prikaz AT, ten string AT sa vypise ale Serial monitor mi nedava odpoved. Ked zadam AT cez vstupny riadok v serial monitore, tak mi vrati OK
        3. standardne ked skusam, tak idem asi cez HW seriovy port (neviem sam 🙂 Ale skusal som aj skripty cez Software Serial.

        Celko, neviem ci to robi aj Vam, ale napr. zadavm prikazy a niekedy mi ich zoberie, da pekne odpoved, niekedy ich akoby pomeni a vrati ERROR, ked to skusim par krat, opat vrati OK. Cele je to nejake divne.

        Aktualny script, ktory skusam. Ale nejde to velmi dobre.
        // Basic serial communication with ESP8266
        // Uses serial monitor for communication with ESP8266
        //
        // Pins
        // Arduino pin 2 (RX) to ESP8266 TX
        #include
        SoftwareSerial esp8266(2,3);

        void setup()
        {
        Serial.begin(115200);
        esp8266.begin(115200); // your esp’s baud rate might be different
        }

        void loop()
        {
        esp8266.println(“AT”);
        delay(1000);
        esp8266.println(“AT+RST”);
        delay(1000);
        esp8266.println(“AT+CIPMUX=1”);
        delay(1000);
        esp8266.println(“AT+CIPSTART=4,\”TCP\”,\”130.211.51.204\”,80″);
        delay(1000);
        esp8266.println(“AT+CIPSEND=4,67”);
        delay(1000);
        esp8266.println(“GET /logger/add.php HTTP/1.1 Host: 130.211.51.204 Connection: close”);
        if(esp8266.available()) // check if the esp is sending a message
        {
        while(esp8266.available())
        {
        // The esp has data so display its output to the serial window
        char c = esp8266.read(); // read the next character.
        Serial.write(c);
        }
        }
        }

        A.

        1. Začněte tím, že ESP nastavíte na 9600Bd a ten SoftwareSerial taky. Pak zkuste jednoduchý echo skript, který bude přeposílat data z HW serial na ten SW serial a naopak a ověřte to v terminálu… Pak uvidíme, co dál.

          1. Hmm, zmenil som AT+CIOBAUD=9600 cize na 9600, aj v sripte som zmenil vsetko na 9600.

            Stale hadze nedokonalosti. Este otazocka – nemam riesit to, ze mi v serial monitore hadze aj ine znaky? Na pozadi to je v poriadku? Mozno to len zbytocne riesim.

            Co sa tyka posledneho kroku a to odosielania GET na PHP stranku este skusim doma na svojej wifine, ci nahodou tu nie je nieco blokovane. Uvidime. Velka vdaka za informacie. Este povenujem tomu dnesny den a koniec – 3 dni stacili 🙂

          2. Este k tomu echo skriptu – posielanie udajov z HW na SW a opacne – neviem presne o co ide. Ako by som to mohol otestovat?

            Vdaka

            A.

          3. Prostě napíšete skript, který bude to, co přijde ze SoftwareSerial… Asi nějak takhle:
            #include

            SoftwareSerial esp(2, 3); // RX, TX

            void setup()
            {
            Serial.begin(57600);
            esp.begin(9600);
            }

            void loop()
            {
            if (esp.available())
            Serial.write(esp.read());
            if (Serial.available())
            esp.write(Serial.read());
            }
            No a v konzole Arduina zkuste poslat pár příkazů do ESP (aspoň AT a enter – mělo by se vrátit OK)

          4. Hmm, ani doma mi to nejde, ale aspon zacalo vypisovat hlasku zo servera (Apache), ze je timeout. Zmenil som na Apache serveri timeout na 3000, ale aj tak problem. A to vypisuje, iba ked zadavam rucne AT prikazy.

            Pomozte ked vas este nieco napada. Vdaka

            A.

  2. Áno, keď zapojím rx, TX a do arduino nahram prázdny skript, tak cez seriál monitor môžem zadavat príkazy. Na AT pekne vráti OK a taktiez aj ostatné AT príkazy fungujú. Je e pravda, že niekedy idú pekne všetky, niekedy niektorý rozhadze znaky a musím zadat niekoľko krát za sebou.

    Samostatná kapitola je, keď posielam príkazy z programu. Tam to rozhadzuje ešte viac.

    A keď napr. Postupne manualne za dávam príkazy na odoslanie GET aby mi spustilo PHP skript na serveri, tak tam mi vráti Timeout request. To bude možno ďalší problém, ale to by som riešil neskôr.

    Aj Vam pri zadávaní AT príkazov niekedy rozhadzuje text a musíte zadavat viac krát?

    Netreba nejako preinstalovat COm port v PC? Vo Windowse mam nastavit na tento port tiež rýchlosť 9600? Vdaka

    1. Skusil som uploadnut Vas skript. Ked pustim Serial monitor a nic nerobim, tak mi znacne vypisovat bodky. Ked zadam AT prikaz, vypise par bodiek a potom OK.

      A.

    2. Tak to je něco špatně – komolení příkazů znamená, že to máte buď špatně zapojené (nevím, co znamená “prázdny skript”), nebo ještě taky to nezvládá napájecí zdroj. Pošlete podrobné schéma zapojení…

  3. No, je pravda, ze ked som zapojil Arduino Nano a na neho ESP8266, tak ESP neslo – prudovo to asi nestihalo. Tak som VCC a GND zapojil z Arduino Uno. Cize Arduino UNO pouzivam cisto ako zdroj 🙂 Neviem ci je to OK, to ma len tak napadlo 🙂 Ale ako pisete, mozno je to aj tym, lebo som teraz skusal miesto Arduino UNo zapojit USB baterku a vtedy mi vobec nesko ESP a potom som dal napajanie z adaptera na mobilny telefon a tam to zase inak chaosilo.

    Cize podla vas je potrebne to zapojit spolu s LD33R stabilizatorom?

    A.

    1. zdravim,
      kdyz to napajite odjinud – mate spojene zeme(GND)?

      tzn.
      UNO 3.3V –> ESP VCC
      UNO GND –> Nano GND –> ESP GND

      pokud to tak neni, vysvetlilo by to ty “divne” znaky …

  4. Nie, urcite si nerobim srandu. Ja sa velmi do elektroniky nevyznam. Ja som chcel skor potom riesit dalsie veci. No a nenapajal som to s 5V, na Arduino Uno som dal do PINu 3,3V.

    1. A kam jste zapojoval tu USB baterku? No nic – tak to fungovat nebude určitě – ESP bere až kolem 300mA a pin Arduina Uno 3.3V má zatížitelnost 50mA – viz. https://www.arduino.cc/en/Main/arduinoBoardUno . Zapojte to pořádně se stabilizátorem, který dá odpovídající proud. Taky by tam měly být převodníky úrovní 3V3 na TTL a zpět na TX a RX pinech, ale už jsem slyšel o tom, že ESP to nějak ustojí (já bych to tak rozhodně ale nedělal). Pak pošlete schéma a nejlíp někde uveřejněte fotku když to nepojede ať se s tím dá pracovat dál…

      1. OK, skusim pozapaja ako pisete. Ja som pozeral na internete navody a je to kadejako, ale asi nie spravne. Len aby som sa rychlejsie pohol dopredu. Cize budem potrebovat Arduino Nano, ESP 8266, TTL-232R-3V3 a stabilizator napatia (nejaky pozhanam a poradim sa). Co sa tyka schemy, vy nejaku nemate?

        Vdaka za cas, naozaj ste mi pomohol. Uz som si myslel, ze vsetko mam pokazene. Mam teraz nadej. Zajtra to skusim donastavit a dufam, ze mi to uz pojde.

        Pekny vecer

        A.

          1. Dobry den,

            tak, dokupil som vsetko potrebne, pozapajal a uz to slape. Pekne stabilne, nie je problem. Dakujem velmi za pomoc. Uz budem vediet, ze musim mat vsetko poriadne pozapajane, lebo nieco take, ze el. napatie a prud mozu robit problem v serial monitor komuniacii, to ma ani nenapadlo. Este raz velka vdaka a vsetko dobre.

            Andrej

  5. Dobrý den, chtěl jsem se zeptat proč mi do esp nejde nahrát kód a hlásí mi to při nahrávání neustále chybu:

    warning: espcomm_send_command: wrong direction/command: 0x00 0x08, expected 0x01 0x08

    warning: espcomm_sync failed
    error: espcomm_open failed
    error: espcomm_upload_mem failed

    Hledal jsem na mnoha webech řešení, ale bohužel nic smysluplného a funkčního jsem nenašel. CHtěl bych Vás tedy poprosit o radu.
    Děkuji Vám

      1. Děkuji moc za radu nakonec se mi to podařilo zprovoznit, teď si ale lámu hlavu nad tím, jak zasílat informace o poloze gamepadu připojeného k Pc do modulu ESP, který by pak tuto informaci přeposlal přes (TX RX) do Arduino Nano, ve kterém mám již vytvořený regulátor pro ss motor.
        Pokud byste měl nějaký nápad moc by mi to pomohlo Děkuji Vám moc za vaši radu.

        1. Takže abych se v tom orientoval – máte gamepad připojený k PC a jde o to z toho PC přes sadu protokolů IP dostat informace o poloze do Arduina? Aplikaci do PC jste schopen napsat takovou, aby získala polohu gamepadu a odeslala ji na UDP/TCP soket?

  6. Přemýšlel jsem jestli by nebylo jednoduší vytvořit si někde zdarma na webhostingu mysql databazi a tam zapisovat udaje o poloze a pak je z toho vyčítat?

    1. No to záleží na tom, k čemu to celé potřebujete. Nesnadnější je napsat do PC serverovou aplikaci, která bude “číhat” na nějakém portu. Po připojení klienta začne periodicky odesílat informace o poloze (opět netuším, jak často je pro Vás dostačující). Pokud se klient odpojí, nebo se rozpadne spojení, tak začne opět číhat (port ve stavu Listen). Do ESP bych pak napsal jednoduchého TCP klienta, který se připojí na zadanou ip adresu, přijme informace, rozparsuje, ověří správnost a odešle na TXD. Protokol bych nejspíš volil textový kvůli ladění. Myslím, že by to nemuselo být příliš obtížné. Pokud vydefinujete protokol na TCP straně a TXD straně, tak můžu napsat kostru, se kterou si budete moct hrát. Pokud budete chtít MySQL databázi, tak to bude podstatně složitější…

        1. Aha, takže se nejspíš jedná o celkem realtime záležitost – do toho bych raději MySQL netahal pokud to není nutné…

  7. Takže doba kdy budu obnovovat data by měla být pod 500ms aby to mělo význam

  8. na výběr je tam TCP a UDP protokol ne? Asi bych zvolil ten UDP, protože nebude vadit když to nebude 100% spolehlivé ten přenos.

    1. To ano. Navíc taky bude přenos rychlejší, ale na druhou stranu zase nebudete mít možnost zjistit, že je protistrana připojená (to bychom ale mohli obejít tím, že ESP bude periodicky hlásit zpět svoji přítomnost).

  9. Ano to je dobrý nápad. Já se ted dívám na různé podklady pro vytvoření serverové aplikace a našel jsem pár tipů na vytvoření pomocí Delphi. Nevíte dá se tato aplikace vytvořit i ve Visual Studiu? protože s ním mám pár zkušností. A s Deplphi jsem nikdy nedělal.

    1. Určitě se dá vytvořit prakticky v jakémkoliv jazyce, pokud získáte knihovny pro přístup k gamepadu (ip komunikace je už dneska nejspíš standard…). S Delphi jsem dělal, takže bych snad pomoci dokázal, ale budu za to celé něco chtít 🙂

  10. Dobře já teda moc děkuji alepspoň za Vaše typy, pokusím se něco sám sesmolit máme to ve škole jako projekt a pokud bych si nevěděl rady tak se na vás obrátím a domluvili bychom se že byste mi s tím pomohl a určitě bychom se vyrovnali 🙂 Děkuji za Vaši nabídku jsem rád že v případě svého neuspěchu bych se na Vás mohl obrátit 😉

    1. Není zač… Jen pro upřesnění – když jsem napsal, že za to budu “něco chtít”, tak jsem tím myslel můj standardní přístup – pokud se jedná o zájmový projekt, tak jen trvám na tom, že vše, na čem se podílím já, je pod Open Source licencí, mám právo zveřejnění na těchto stránkách, a dostanu případně nějaké fotografie hotového produktu apod… Pokud se jedná o komerční projekt, tak teprve pak se začneme bavit o penězích, nebo jiné formě vyrovnání…

  11. Dobře chápu, je to zajímavá nabídka ja to s kolegou promyslím a dám vám vědět.

Komentáře nejsou povoleny.