Mikrokontroller programozás esp-link segítségével

ESP8266, ESP32 chipek és az ESP-xx modulok. Programozási nyelvek, trükkök, hardware tippek.
Avatar
SzLacus
Tranzisztorgyógyász
Hozzászólások: 175
Csatlakozott: 2012. május 20. vasárnap, 6:00

Re: Mikrokontroller programozás esp-link segítségével

Hozzászólás Szerző: SzLacus »

Segítségre szorulok, mint már sokszor.
Felépítettem egy nano és ESP-01 párost azzal a céllal, hogy a nanoba wifi-n keresztül lehessen felprogramozni.
Az esp-be bejátszottam az esp-link-et, (itt kell kifejeznem külön csodálatomat csabeszkq tudása előtt) ami az ebben a témában korábban közzétett sémával kapcsolódik a nano-hoz. A nanoba benyomtam egy alap villogót azzal a kis kiegészítéssel, hogy ha a soros porton adott karakter jön, akkor a villogás üteme változik. A villogás ütemében a nano a soros potrján a TIKK, TAKK üzeneteket küldözget.
Az ESP-01-et betoltam az AP-m alá, ahol a kapott IP-n elérhető, és az esp-link uC Consol oldalán keresztül a nano tikk-takja látszik, a kiküldött karakterre a villogás üteme változik, és a "uc reset" küldésére a reset létre jön. Ennek alapján azt gondolom, hogy a kapcsolat az ESP és a nano között rendben van.
Következő lépésben a programmers.txt állományba bemásoltam a fentebb megadott sorokat, a saját környezetemhez igazítva.

Kód: Egész kijelölése

esp8266.program.extra_params=-Pnet:esp-link-nodemcu:23
Ebben a sorban az esp-link-nodemcu rész helyett a modul IP címét (192.168.11.113) írtam amit a hálózatomon kapott.
Az Arduino programozók között megjelent az "ESP8266 2 Wifi Programmer" amit ki is választottam.
Az Arduino port beállítások között viszont nem jelent meg az IP cím amit ki kéne tudnom választani.
A nanomat lehúztam a gépről, hiszen most már WIFI irányból szeretném macerálni.
A programozás indításakor hibaüzenet jön, hogy a COM8 (ezen volt előtte a nano) nem található.
Újraindítottam az Arduino sdk-t gondolva, hogy majd utána felismeri a változott helyzetet, de nem segített, a com 8-at reklamálta továbbra is.

Mit néztem be? Valamit még állítanom kellett volna, hogy a kapcsolat összejöjjön?

Keretrendszer 1.6.11 Windows 8.1 alatt.

Előre köszönöm a segítséget.
Avatar
csabeszq
Bitfaragó
Hozzászólások: 678
Csatlakozott: 2012. szeptember 5. szerda, 6:00

Re: Mikrokontroller programozás esp-link segítségével

Hozzászólás Szerző: csabeszq »

Nekem nem sikerült a soros monitorba integrálni az esp-linket.
Ráklikkelsz a web-oldalon a uc-console-ra, az a soros monitorod.

Kép itt:
http://jeelabs.org/img/2016/jemesp-console.png

Külső programozóként kell feltölteni (shift + feltöltés gomb).
Avatar
SzLacus
Tranzisztorgyógyász
Hozzászólások: 175
Csatlakozott: 2012. május 20. vasárnap, 6:00

Re: Mikrokontroller programozás esp-link segítségével

Hozzászólás Szerző: SzLacus »

Köszönöm, a uc-console oldal nálam is működik, ebből következtettem, hogy az összeközés fizikailag rendben kell hogy legyen.

A shift módosító hatásával nem voltam tisztában, de most már tudom, és látom is a hatását.
De annyira még nem vagyok boldog, mert most a cégben vagyok, és itt birizgálom a szerkezetet. Az itteni AP bemutatása után be is ugrott a hálóra, kapott egy itteni IP címet. A programmers.txt-ben átírtam a megfelelő sort, és a shift+feltöltést alkalmazva még mindíg hibát kapok.
Most azonban már más a panasza, ugyanis az otthoni IP-re szeretne feltölteni, csak hát jelenleg más az IP.
Nekifutok, hogy kiderítsem, hova mentette az otthoni IP címet, amit itt bent hiába keres.

Köszi a segítséget, a shift-el most már jó irányba megy a feltöltési kísérletem, ki kell mazsolázzam az IP problémát.
Avatar
SzLacus
Tranzisztorgyógyász
Hozzászólások: 175
Csatlakozott: 2012. május 20. vasárnap, 6:00

Re: Mikrokontroller programozás esp-link segítségével

Hozzászólás Szerző: SzLacus »

Az Arduino újra indítása után felolvassa az új címet, ez hamarabb is eszembe juthatott volna. :-(
De az öröm még mindíg nem teljes, mert én 64 bites W8.1-en játszadozom, a hiba pedig 32 bitesre utal. És valószínűleg ez a gond, mert a jó IP-re induló feltöltés is hibára fut. A hibaüzenet pedig:

Kód: Egész kijelölése

         Using Port                    : net:192.168.188.128:23
         Using Programmer              : stk500v1
avrdude: ser_open(): network connects are currently notimplemented for Win32 environments

avrdude done.  Thank you.
Nem teljesen értem a dolgot, hiszen az avrdude nem változik, soros porton pedig fel tudom programozni a nano-t.
Ennek mi a megoldása?
Avatar
csabeszq
Bitfaragó
Hozzászólások: 678
Csatlakozott: 2012. szeptember 5. szerda, 6:00

Re: Mikrokontroller programozás esp-link segítségével

Hozzászólás Szerző: csabeszq »

Azt írja az avr-dude, hogy Windows alatt nem érhető el a net. Az a gond, hogy az avrflash sem fog menni win alatt.
Avatar
SzLacus
Tranzisztorgyógyász
Hozzászólások: 175
Csatlakozott: 2012. május 20. vasárnap, 6:00

Re: Mikrokontroller programozás esp-link segítségével

Hozzászólás Szerző: SzLacus »

Hoopácska. Ezt most a nem jó hírek közé teszem, és persze megköszönöm megint a segítséget.
Itt az ideje, hogy kinyíljon a világ, mert állítólag van élet a windowson kívül is. :-)
Mi a praktikus megoldás? Virtuális gép a win alatt, vagy valami önálló játszótér, mint mondjuk a málna?
Két cuccot hurcolni, monitoron, billentyűzeten, hálózaton, stb osztozkodni nem tűnik perspektivikus megoldásnak.
Más hogyan csinálja?
Avatar
csabeszq
Bitfaragó
Hozzászólások: 678
Csatlakozott: 2012. szeptember 5. szerda, 6:00

Re: Mikrokontroller programozás esp-link segítségével

Hozzászólás Szerző: csabeszq »

Tegnap késő volt már, húztam aludni.

Leírás itt:
http://domoticx.com/esp8266-wifi-esp-link-firmware/

Javaslatok:
- csinálj egy HW Virtual Serial Port-ot Windows alatt a 2323-as portra
Another option is to use a serial-to-tcp port forwarding driver and point that to port 2323 of esp-link. On windows users have reported success with HW Virtual Serial Port
- vagy telepítsd a Cygwin-t windows-ra és próbáld ki az avrflash-t hogy működik-e

Kód: Egész kijelölése

avrflash ipcimem kod.hex
Ha működik parancssorból, akkor elmondom, hogyan lehet Arduino-ra rákötni. Elsőnek a HW virtual serial portot próbálnám meg.
Avatar
SzLacus
Tranzisztorgyógyász
Hozzászólások: 175
Csatlakozott: 2012. május 20. vasárnap, 6:00

Re: Mikrokontroller programozás esp-link segítségével

Hozzászólás Szerző: SzLacus »

Soha nem késő a segítség, aludni meg mindenkinek kell. Kivéve az ördögöt, aki állítólag soha nem alszik. :-)
Elindulok a HW Virtual Serial Port irányába, aztán jelentkezem a fejleményekkel.
Avatar
csabeszq
Bitfaragó
Hozzászólások: 678
Csatlakozott: 2012. szeptember 5. szerda, 6:00

Re: Mikrokontroller programozás esp-link segítségével

Hozzászólás Szerző: csabeszq »

A legújabb esp-link-be (3.0 alfa) iszonyú ütős cuccok mentek bele.

Az egyik, amit én írtam, a web-szerver. A másik, hogy Arduino-val tudsz TCP portot nyitni.
Ezt most arra használom, hogy a kerti locsolóhoz letöltsem az időjárás-előrejelzést.

Még nem minden frankó, mert nagy válaszokat nem kezel, de beküldtem egy foltot, hogy ha túl nagy a csomag, akkor darabokban küldje át.
https://github.com/jeelabs/esp-link/pull/213
Avatar
SzLacus
Tranzisztorgyógyász
Hozzászólások: 175
Csatlakozott: 2012. május 20. vasárnap, 6:00

Re: Mikrokontroller programozás esp-link segítségével

Hozzászólás Szerző: SzLacus »

Vannak bíztató jelek, de siker az még nincs. Telepítettem a gépemre Virtual Serial Port programot, és létrehoztam vele egy portot, történetesen a 18-ast. Soros paremétereket nem tudok állítani, mert azok inaktívak, de próba cseresznye. Ha fizikai portra dugom a nano.t, akkor a COM 8-ason látom. Mintának álljon itt egy hibátlan feltöltés logja ami a COM8-ra megy, ez mindenkinek ismerős.

Kód: Egész kijelölése

avrdude: Version 6.0.1, compiled on Apr 15 2015 at 19:59:58
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2009 Joerg Wunsch

         System wide configuration file is "C:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf"

         Using Port                    : COM8
         Using Programmer              : arduino
         Overriding Baud Rate          : 57600
         AVR Part                      : ATmega328P
         Chip Erase delay              : 9000 us
         PAGEL                         : PD7
         BS2                           : PC2
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom        65    20     4    0 no       1024    4      0  3600  3600 0xff 0xff
           flash         65     6   128    0 yes     32768  128    256  4500  4500 0xff 0xff
           lfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           lock           0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00

         Programmer Type : Arduino
         Description     : Arduino
         Hardware Version: 2
         Firmware Version: 1.16
         Vtarget         : 0.0 V
         Varef           : 0.0 V
         Oscillator      : Off
         SCK period      : 0.1 us

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.01s

avrdude: Device signature = 0x1e950f
avrdude: reading input file "C:\Users\Laci\AppData\Local\Temp\build9251708ece7ee09b944aea485111e70d.tmp/Blink_WIFI.ino.hex"
avrdude: writing flash (2232 bytes):

Writing | ################################################## | 100% 1.15s

avrdude: 2232 bytes of flash written
avrdude: verifying flash memory against C:\Users\Laci\AppData\Local\Temp\build9251708ece7ee09b944aea485111e70d.tmp/Blink_WIFI.ino.hex:
avrdude: load data flash data from input file C:\Users\Laci\AppData\Local\Temp\build9251708ece7ee09b944aea485111e70d.tmp/Blink_WIFI.ino.hex:
avrdude: input file C:\Users\Laci\AppData\Local\Temp\build9251708ece7ee09b944aea485111e70d.tmp/Blink_WIFI.ino.hex contains 2232 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.96s

avrdude: verifying ...
avrdude: 2232 bytes of flash verified

avrdude done.  Thank you.
Ha lehúzom az USB-ről és a virtuális 18-asra átállítom, akkor a következő lesz a log.

Kód: Egész kijelölése

avrdude: Version 6.0.1, compiled on Apr 15 2015 at 19:59:58
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2009 Joerg Wunsch

         System wide configuration file is "C:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf"

         Using Port                    : COM18
         Using Programmer              : arduino
         Overriding Baud Rate          : 57600
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x65
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x65
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x65
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x65
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x65
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x65
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x65
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x65
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x65
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x65

avrdude done.  Thank you.

Hiba a feltöltés során. A hiba elhárítása a http://www.arduino.cc/en/Guide/ oldalon a Troubleshooting#upload alatt került leírásra.
Nem megy neki reset, tehát akkor adok neki kézzel, vagy ezt megtehetem az esp-link uC console oldaláról is. Ekkor a log a következőt mutatja.

Kód: Egész kijelölése

avrdude: Version 6.0.1, compiled on Apr 15 2015 at 19:59:58
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2009 Joerg Wunsch

         System wide configuration file is "C:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf"

         Using Port                    : COM18
         Using Programmer              : arduino
         Overriding Baud Rate          : 57600
         AVR Part                      : ATmega328P
         Chip Erase delay              : 9000 us
         PAGEL                         : PD7
         BS2                           : PC2
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom        65    20     4    0 no       1024    4      0  3600  3600 0xff 0xff
           flash         65     6   128    0 yes     32768  128    256  4500  4500 0xff 0xff
           lfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           lock           0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00

         Programmer Type : Arduino
         Description     : Arduino
         Hardware Version: 2
         Firmware Version: 1.16
         Vtarget         : 0.0 V
         Varef           : 0.0 V
         Oscillator      : Off
         SCK period      : 0.1 us

avrdude: stk500_initialize(): (a) protocol error, expect=0x14, resp=0x4c
avrdude: initialization failed, rc=-1
         Double check connections and try again, or use -F to override
         this check.

avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x4f

avrdude done.  Thank you.

kiválasztott 
 port nem elérhető vagy az alappanel nincs csatlakoztatva
A helyzet jobb, de nem elég jó, mert még mindíg protokol errorra fut a kapcsolat. Az eleje már hasonlít, de amikor a feltöltésbe kezdene, akkor valamilyen ellenőrzésen elbukik a kapcsolat.
A neten vannak a resetre vonatkozó utalások, hogy mikor, meg milyen hosszan kell, de úgy gondolom, hogy a reset az jókor megy és észre is veszi.

Mit kapcsolok ki a hibaüzenetben felajánlott -F opcióval? És hol kell az említett opciót beletennem?
Szóval még nem működik, forgatom, mint múkus a mogyorót, majd csak megmutatja magát a megfejtés.
Avatar
csabeszq
Bitfaragó
Hozzászólások: 678
Csatlakozott: 2012. szeptember 5. szerda, 6:00

Re: Mikrokontroller programozás esp-link segítségével

Hozzászólás Szerző: csabeszq »

1. Neked semmi szükséged a virtuális COM porton bitrátára. Az adatforgalom hálózaton zajlik, semmi köze az UART-hoz.
2. Esp-link alatt nem használhat a bootloader más bitrátát, mint a kódod. Ha nano-t használsz, akkor az esp-link-en 57600-az állíts be, ha UNO-t, akkor 115200-at. Más bitráta nem fog menni. Nem használhat a kód / bootloader kétféle bitrátát.
3. Ha végképp nincs más ötletet, hálózati analizátorral (wireshark), ellenőrizheted, hogy mit kommunkál az ESP és a PC.

Nálad a protocol error gyanús. Azért gyanús, mert 0x4F-et kap 0x14 helyett. Ha az esp-link-en az UART másképp van beállítva, akkor simán lehet ez az eltérés oka.

Amire érdemes figyelned, hogy az ESP-ig a kommunikáció hálózaton megy, az ESP-től megy UART-on. Magyarul a hiba az ESP és az MCU között lehet. Legalábbis elsőre, de ezt egy hálózati csomagfigyelővel megnézheted, hogy a kiküldött csomag az ESP-ig okés-e.

4. ha már van kód az Arduino-n, akkor inkább húzd le, mert az ESP-t be fogja zavarni, hogy más bitrátán küld a jelenlegi Arduino, mint amit be akarsz neki állítani. Húzd le az RX/TX kábeleket, mielőtt bitrátát állítasz, így nem fog belezavarni.
Avatar
csabeszq
Bitfaragó
Hozzászólások: 678
Csatlakozott: 2012. szeptember 5. szerda, 6:00

Re: Mikrokontroller programozás esp-link segítségével

Hozzászólás Szerző: csabeszq »

5. ha a 23-as portot használod esp-link-en 2323 helyett, akkor elvileg autoresetel. Ezt a HW soros porton kellene valahol beállítanod.
Avatar
SzLacus
Tranzisztorgyógyász
Hozzászólások: 175
Csatlakozott: 2012. május 20. vasárnap, 6:00

Re: Mikrokontroller programozás esp-link segítségével

Hozzászólás Szerző: SzLacus »

Sajnos tegnap nem tudtam foglalkozni a dologgal, meg ma sem nagyon jutok hozzá, de jön a hétvége. :-)

Az esp-link bitráta 57600-on van azt már korábbi infóban is megtaláltam, hogy ezt kell használni, nem lehet eltérni a bootloaderhez definiálttól.
A virtuális sorosport a 23-at használja alapbeállításként, én pedig nem változtattam rajta.
Van kód az arduinón, egy blink ami másodperdenként tikk-takk-ot üzen ki a soros porton. Ez akár lehet is lehet gond, de amikor a reset megjön, akkor a bootloaderé lesz a lehetőség, és a tikk-takk nem juthat szóhoz. Más kérdés, és nyomozni való feladatom, hogy hova tűnik az automata reset.
Amikor kézzel resetet nyomok, akkor a fentebb beszúrt log szerint annak van hatása, a kommunikáció tovább megy, nekem úgy tűnik, hogy megtalálja a nano-t. Utána kell járnom a bootloader folyamatnak, abból el dönthető, hogy mi az amin a reset után át tud még lendülni. A reset nélküli logban látszik, hogy 10-szer próbálkozik vele. Ha ezen túljut, akkor kiírja a többi információt. Azt gondolom, hogy ezt a kapcsolat felvételnél olvasott adat alapján teszi, de hogy mindent a nano-ból olvas, vagy a beolvasott azonosító alapján a saját konf állományából írja a képernyőre, hogy milyen adatok tartoznak a felismert eszközhöz, azt nem tudom.
Ezt követően megint jönne egy "összebeszélés", amin már kisiklik, nem azt kapja amit vár.
Hogy e közben a nano még a bootloaderrel várakozik, vagy már elengedte a boot folyamatot, és elindulhat a loop, amiben a tikk-takk üzenet zavarja meg a folyamatot, azt ki fogom deríteni, a javaslatodnak megfelelően "elnémítom" a programomat.
Ezzel együtt az a gyanúm, hogy nem fogom megúszni a hálózati analízist, mert ha a bootloader elkapja a folyamatot, akkor a programom nem tud szóhoz jutni, vagyis nem ugathat bele a feltöltésbe. Márpedig a csatolt log mutatja, hogy nem az jön, amit várunk, ezen el is hasal a folyamat.
Arról van valami infója valakinek, hogy a logban megoldásnak ajánlott -F opciót hol kell bejuttatnoma folymatba, hogy kihagyja a második ellenőrzést?

Erről a log részről beszélek.

Kód: Egész kijelölése

Double check connections and try again, or use -F to override this check.
Még valami. A bootloader működését meg lehet találni, vagy a forrását kell olvasgatni és megérteni, ami már magasabb szintű feladvány.
Oci
Újonc
Újonc
Hozzászólások: 12
Csatlakozott: 2014. november 15. szombat, 11:28

Re: Mikrokontroller programozás esp-link segítségével

Hozzászólás Szerző: Oci »

Üdv mindenki!
Erősen próbálkozom esp-linken keresztül flashelni egy 3.3v-os mini-t, direkt ezért feltettem a raspberry pi-re az arduino ide-t. Nincs másik linuxos gépem egyelőre, de remélem ezzel is elindul...
A programmers.txt-ben a változtatások megtörténtek, esp ip címét megadtam, 23-as port, programozó a listában meg is jelent. Kiválasztom, meg a board-ot is, shift+klikk az írásra, kód lefordul (alap blink kóddal próbálnám először) és ezt a hibát adja vissza az ide írás helyett:

Kód: Egész kijelölése

avrdude: ser_open(): can't open device "/dev/ttyS0": No such file or directory
Nem vagyok nagyon jártas a linuxban, de mintha soros portot keresne... Ja, a Pi-re még soha semmi nem volt usb-n rádugva.
Avatar
csabeszq
Bitfaragó
Hozzászólások: 678
Csatlakozott: 2012. szeptember 5. szerda, 6:00

Re: Mikrokontroller programozás esp-link segítségével

Hozzászólás Szerző: csabeszq »

A ttyS0 az hardver sorosport. Tudod, a 9 tüskés, Arduino alatt nem használatos.

ttyUSB0, vagy ttyACM0, vagy ilyesmi kellene
Válasz küldése