AT parancsor, bináris átvitel

ESP8266, ESP32 chipek és az ESP-xx modulok. Programozási nyelvek, trükkök, hardware tippek.
YellowDog
DrótVégénSzéndarab
Hozzászólások: 48
Csatlakozott: 2016. február 28. vasárnap, 18:41

AT parancsor, bináris átvitel

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

Sziasztok!

Jó ideje olvasom a fórumot, de megfogalmazódott bennem pár kérdést, amelyekkel kapcsolatban nem találtam (egyértelmű) információt, sajnos máshol sem. Elkészültem pár hete egy Amiga 1200-as számítógéphez illeszthető 4MB bővítővel, de szeretném még pár dologgal "megfűszerezni" mielőtt nyákgyártatásra kerülne a sor. Ezek közül az egyik egy Amiga - PC kapcsolat volna, fálj transzfert szeretnék megvalósítani, és az ESP8266 WiFI modulra esett a választásom ;-) Ez kerülne a gépbe és a routerhez kapcsolódva érné el a helyi hálózatban található PC-t. Pár hete rendelkezem már egy példánnyal, és az itteni leírás szerint szépen működik is a kliens illetve szerver mód, egyelőre egy nano board illetve PC soros terminál segítségével próbálgatom. Amit szeretnék megkérdezni:
1. bináris átvitel megvalósítható az alap AT parancsos firmware mellett, vagy csak ASCII kódok mennek át?
2. amennyiben nem, úgy gondolom az Arduino-ban történő programozással igen, de ez esetben továbbra is használhatóak az AT parancsok, vagy azok teljes mértékben kiválthatók a programban? Gondolok itt a WiFi konfigurálásra, amelyet nekem mindenképpen Amiga, tehát kliens oldalról kell megoldanom.

Köszönöm a segítséget előre is.
Avatar
SanyiSay
Elektronbűvölő
Hozzászólások: 1031
Csatlakozott: 2009. február 28. szombat, 7:00

Re: Sikerélmény: LUA helyett Arduino

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

Üdv.

AT parancsos fórum.
viewtopic.php?f=23&t=1724
Ezt csak azért mondom, ha netán AT parancsokkal érnél el sikereket oda írhatod.
Sajnos mint látod AT parancsokkal nem sok tapasztalat gyűlt össze. Csak a "hivatalos" Róbert féle összefoglaló.

Röviden összefoglalva:
- AT parancsot használva: ESP-re töltesz egy firmware-t ami soros portot figyeli és onnan kapja az utasításokat.
- Arduino Ide vagy egyéb módon felprogramozva az ESP: te írod a firmware-t, sokkal több a lehetőséged. Természetesen nincsenek AT parancsok, de lehetnek, ha megírod.
Én is soros portot és terminal programot használok fejlesztés közben, ellenőrzésre és hogy vezéreljem az ESP-t.

ESP -PC fájlátvitelre én még csak FTP kliensként és Böngészőn át fel letöltéssel használtam, az megy szépen, bár még van vele munka, hogy értsem is. Olyant megoldást hogy FTP szerver legyen az ESP, nem találtam.
OTA frissítés is megy hiba nélkül. jelenleg nálam stabilabb mint a soros. :)

Egyszóval konkrét megoldás nincs a tarsolyban, de részekben már működik csak össze kell hangolni, vagy keresgélni hátha valaki már megtette.
YellowDog
DrótVégénSzéndarab
Hozzászólások: 48
Csatlakozott: 2016. február 28. vasárnap, 18:41

Re: Sikerélmény: LUA helyett Arduino

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

Köszönöm a válaszod. Akkor ezek szerint jól sejtettem, hogy az Arduinoban megírt program is gyakorlatilag egy firmware, tehát a gyárit felülírja emiatt annak funkciói így elvesznek. Ettől egy kicsit félek, teljesen ismeretlen terület, ezért első körben még maradnék az AT parancsos megoldásnál, a lényeg, hogy bináris adatátvitelt tudjak létrehozni, viszont attól tartok lehet csak az ASCII megy át... Az ESP-t ebben az esetben természetesen a kliens oldalon szeretném használni, a szerver a PC lesz, amelyre már elkészült a program, természetesen egyelőre a tesztelés kívánalmainak megfelelően.
Arduino esetében megvalósítható, hogy induláskor valamilyen módon kintről kapja az inicializáláshoz szükséges információkat, pl. ip-cím, illetve az elérhető hálózatok listája kiküldhető valahová ahonnan a visszaérkezett válasznak megfelelő helyhez kapcsolódik?

Még annyi jutott eszembe, párhuzamos adatátvitel megoldható, úgy értem van esetleg olyan típus aminek 8 ki/bemenete volna és bájtonként lehetne így kommunikálni az esp-vel?
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Sikerélmény: LUA helyett Arduino

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

Bármikor visszarakhatod az AT parancsos firmware-t.
Az AT parancsok közt van SSID listázás. Olvasd el az AT-s cikket.

Paralell adatátvitel minek? Ott a sorosport :)
Nem byte, hanem HEX kódot vigyél át....
Avatar
SanyiSay
Elektronbűvölő
Hozzászólások: 1031
Csatlakozott: 2009. február 28. szombat, 7:00

Re: Sikerélmény: LUA helyett Arduino

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

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

  
byte inChar;
if (Serial.available() > 0) {
    inChar = Serial.read();
    Serial.print(inChar+8, byte());
}
Ezt kipróbáltam HTerm terminállal, és ha Decimal számot küldök önmagában az ESP-re akkor egy Byte-on jön vissza az összeadás eredménye.
Nincs ASCII probléma.
Avatar
SanyiSay
Elektronbűvölő
Hozzászólások: 1031
Csatlakozott: 2009. február 28. szombat, 7:00

Re: Sikerélmény: LUA helyett Arduino

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

ESP programozásánál is bármikor tetszés szerint módosíthatod a wifi, vagy bármely kapcsolatot. Inkább az a kérdés hogy hálózat szempontjából mi az optimális.
Van DNS hogy neve is legyen ne csak IP száma az ESP-nek. Bár ez win alatt nem működik csak Bonjour telepítése után. Viszont azt is be lehet állítani hogy automatikusan felismerje hálózati ezköznek a PC, ha jól rémlik SSDP a neve. Ezt egyszer teszteltem.
YellowDog
DrótVégénSzéndarab
Hozzászólások: 48
Csatlakozott: 2016. február 28. vasárnap, 18:41

Re: Sikerélmény: LUA helyett Arduino

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

A bájt alatt természetesen én is HEX kódot értetem, csak az első próbálkozásaimnál pl. a 0 vagyis $00 nem ment át, az valamiért elveszik illetve nem tudom nem-e fájl végének veszi az ESP, na még próbálkozom, hiszen "normál" nem bináris átvitelnél a vezérlőkódok bezavarhatnak, nem véletlenül van két féle átvitel, csak itt AT parancs szinten nem találok váltásra lehetőséget. Az is eszembe jutott, ha nem átlátszó az átviteli út $00-$FF-ig, akkor lehet az 7. bitet 1-be teszem, így ugye a 128-tól tartó ASCII karakterek mennének, majd minden nyolc bájt átküldése után összeraknám a 7. biteket és külön átküldöm, a vételi oldalon pedig összerakom. Így ugyan 9 bájt kell a 8 küldéséhez, de legalább működhet, elviekben. De az is lehet, ezt a lépést kihagyom és megpróbálkozom az Arduino féle program megvalósítással. A párhuzamosítás azért lett volna jó nekem, mert programból könnyebben összerakom a biteket, mintha a cpld-re bízom, persze az sem megoldhatatlan.
YellowDog
DrótVégénSzéndarab
Hozzászólások: 48
Csatlakozott: 2016. február 28. vasárnap, 18:41

Re: Sikerélmény: LUA helyett Arduino

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

SanyiSay írta:ESP programozásánál is bármikor tetszés szerint módosíthatod a wifi, vagy bármely kapcsolatot. Inkább az a kérdés hogy hálózat szempontjából mi az optimális.
Van DNS hogy neve is legyen ne csak IP száma az ESP-nek. Bár ez win alatt nem működik csak Bonjour telepítése után. Viszont azt is be lehet állítani hogy automatikusan felismerje hálózati ezköznek a PC, ha jól rémlik SSDP a neve. Ezt egyszer teszteltem.
Ezt a részét nem akarom túlbonyolítani, adott PC oldalon a szerverprogi, ehhez kell a PC ip címét valamint a programban használt port számát megadva az ESP-nek küldenie az adatokat, valamint onnan fogadnia. Természetesen előtte a beállított SSID-nek megfelelő helyhez csatlakoznia, vagy ha az nem található, akkor kilistázza az elérhetőeket, pl. első csatlakozásnál is erre szükség van. De ez már az Amiga oldali (kliens) program feladata. A lényeg, hogy ezen paramétereket nem írhatom bele a firmware-be, hanem bekapcsolás után a program mondjuk egy paraméterfájlból (lehet sima txt) veszi és adja át a soros porton keresztül az ESP számára ezeket.
Esetleg az megoldható, hogy kívülről, tehát soros portról elérjem az ESP eeprom területét (ha szükséges a módosítás) és onnan olvassa a konfigot? Van egyáltalán ilyen nem felejtő terület benne?
Avatar
SanyiSay
Elektronbűvölő
Hozzászólások: 1031
Csatlakozott: 2009. február 28. szombat, 7:00

Re: Sikerélmény: LUA helyett Arduino

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

Van nem felejtő felület, Flash a neve. :)
Ide kerül a firmware, és ebből alakul ki a fájlrendszer ( SPIFFS ), de ugyanebből van az Eeprom felület is emulálva szükség esetén, mert eeprom nincs rajta. Fájlkezelés és eeprom kezelés egyszerű. sorosport kezelés megint. Innen már nincs messze hogy feltölts egy txt álományt a kapott adatokkal. Én is config.txt ben tárolom a wifi csatlakozás valamint a készülék működési adatait. Így tuti nincs gond az eeprommal ha nem használom, és fájlt lehet fel vagy letölteni szemben az eeprommal. EEprom régebben összeakadhatott a fájlrendszerrel, most nem tudom hogy áll. Fájlrendszer mérete pedig még kérdéses, több féle beállítható de nem működik mind, de ezt is javítják, és én sem jártam pontosan utána mi lehet az oka. Szóval vannak még utánanézni valók, de pár száz kilós fájlméretig szépen működik.

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

File f = SPIFFS.open("/w_conf.txt", "w");
if (!f) {
   Serial.print(F("file open failed\n"));
}
f.println(string_adat);
f.flush(); 
f.close();
Mondjuk Így néz ki egy sor kíírása fájlba.
Avatar
SanyiSay
Elektronbűvölő
Hozzászólások: 1031
Csatlakozott: 2009. február 28. szombat, 7:00

Re: Sikerélmény: LUA helyett Arduino

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

Ami még fontos hogy ezekhez már olyan modul szükséges amiben nem 25Q40-es flash van. Nagyobbakban 25Q32 es található.
YellowDog
DrótVégénSzéndarab
Hozzászólások: 48
Csatlakozott: 2016. február 28. vasárnap, 18:41

Re: Sikerélmény: LUA helyett Arduino

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

Na éjjel volt egy kis időm, még mindig az "AT" verziónál tartok, de úgy néz ki megy az adatátvitel szépen :-) Viszont a sebességgel nem igazán vagyok megelégedve, 230400bps-nál az átviteli sebesség kb. 6kB/s az elméleti, illetve általam kb. várt 20kB/s helyett. Igaz a mérésem nem a legpontosabb, kb 2k-s fájlal tudtam probálkozni, mivel 2048-nál nagyobbra nem tudom állítani az átviendő bájtok számát. Tehát darabolnom kell, de ez talán holnapra marad. A soros sebességet még tudnám feljebb vinni, a soros-usb adapter 921600-ig ugyan engedi, de itt már a MAX232 szintillesztőm valószínüleg lassú, 460800-on viszont még megy, ott viszont már a CoolTerm nem, a Windows-os meg nem tud fájlt küldeni.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Sikerélmény: LUA helyett Arduino

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

A sorosportod örülj hogy megy!
http://www.atmel.com/images/atmel-8271- ... mplete.pdf
Clipboard01.jpg
Jobboldali oszlop az Arduinoban megvalósított...
Rel. hiba max. 0.5% lehet.

Az ESP állandóan szinkronizál, hibajavít....
Olvasnivaló:
http://www.tavir.hu/iot-2-arduino-at
Nincs meg a kellő jogosultságod a hozzászóláshoz csatolt állományok megtekintéséhez.
YellowDog
DrótVégénSzéndarab
Hozzászólások: 48
Csatlakozott: 2016. február 28. vasárnap, 18:41

Re: Sikerélmény: LUA helyett Arduino

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

Egyelőre nincs Arduino a kapcsolásban, a PC soros portján keresztül (CoolTerm) írok és küldök fájlt az ESP-nek, amely továbbítja WiFi-n keresztül a PC-n futó szerverprogramomnak. Egyelőre 460800-al is megy a kommunikáció az ESP-vel :-) A nagyobb sebességeket jelen pillanatban eszközhiány miatt nem tudom kipróbálni, ezért most a fájlméretet szeretném megnövelni, hogy pontosabb képet kapjak azzal kapcsolatban, mennyire "áll" a 10bps = 1 bájt/s elméleti átviteli sebesség, mert egyelőre nagyon nem, illetve mennyire tudom azt megközelíteni. A 10-20kB/s nagyon kevés, szeretném a 100kB/s körüli értéket elérni, hogy használható legyen a technológia.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Sikerélmény: LUA helyett Arduino

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

Ez kontroller, nem erőmű!
NEM erre való eredetileg sem....
Avatar
SanyiSay
Elektronbűvölő
Hozzászólások: 1031
Csatlakozott: 2009. február 28. szombat, 7:00

Re: Sikerélmény: LUA helyett Arduino

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

Nálam az arduino ESP-re 921600 bauddal tölt fel fixen. Azt nem állítom hogy hiba nélkül, de annyira kis hibaszázalékkal hogy max néha rányomok még egyszer a küldésre. Mondjuk kedvenc FTDI csatolóm épp besértődött és nem akar dolgozni, de a NodeMCU alapon lévő CP210 bírja szépen. Már nekem is eszembe jutott hogy utánanézzek a hibaaránynak, és egy jobb minőségű USB kábelnek, valamint az usb csatoló és ESP közötti kábelen is lehetne javítani. Egyenlőre a kis hibaszázalék miatt elodáztam. Azért adatforgalmazásra nem biztos hogy így használnám. :)
Válasz küldése