hu:esp:start

Differences

This shows you the differences between two versions of the page.

hu:esp:start [2020/04/01 15:15]
hu:esp:start [2022/04/21 15:03] ()
 1:  1:
 +====== ESP8266 ======
 +{{tag>esp8266 wifi iot}}
 +{{ :wiki:modul:esp_01.png?150|ESP-01}}
 +
 +Az ESP-t tárgyaló fejezetet két részre bontottam:
 +
 +  * Ezen az oldalon ismertetem az ESP-1, ESP-12 és ESP-32 modulokat
 +  * A nodeMCU saját fejezetet kapott itt: [[hu:esp:nodemcu|nodeMCU]]
 +
 +=== Az ESP-8266 termékcsalád ===
 +
 +Az ESP8266 egy nagyon kedvező árazású, 4 dolláros (jellemzően legfeljebb 10 dolláros) Wi-Fi modul. Lehetővé teszi a bemenetek és a kimenetek vezérlését, csakúgy mint egy Arduino, de a Wi-Fi-vel is rendelkezik, ráadásul az [[hu:arduino:start#arduino_ide|Arduino IDE]]-vel is programozható, és az [[hu:arduino:start#arduino|Arduino]]-val is csatolható (pl. a [[hu:arduino:start#arduino_soros_kommunikacio|soros port]]okon keresztül).
 +
 +Néhány jellemző alkalmazás:
 +  * webszerverként használható
 +  * HTTP kéréseket küldhet
 +  * kimeneteket vezérel
 +  * bemeneteket olvas és megszakításokat kezel
 +  * emaileket küld
 +  * tweeteket küld
 +
 +Az ESP név a sanghaji székhelyű kínai gyártóra, az **Espressif Systems**-re utal. Ők fejlesztették ki ezt az "önjáró" kommunikációs modult, mely jellemzően az "alap" Wifi kommunikációján kívül több más rendszert és kommunikációs lehetőséget is integrál, például a [[[[hu:comm:bus_bluetooth|Bluetooth]]|Bluetoooth]]-t vagy a [[hu:comm:bus_lora#lora|LoRaWAN]]-t.
 +
 +A modulok így egy [[hu:comm:bus_wifi|Wi-Fi]] csipet és egy MCU-t (mikrokontroller egység) foglalnak magukba, és szinte az összes ismert automatizálási rendszer integrálta már ezeket, így az [[hu:arduino:start|Arduino]] is. 
 +
 +A modulok [[hu:comm:tcp_ip|TCP/IP]] protokollja egyszerű, többnyire 2 betűs Hayes- stílusú AT parancsokkal vezérelhető, a dokumentációját eredetileg a gyártó csak kínai nyelven adta ki, nem kis közösségi munka volt lefordítani "emberi" nyelvekre. A helyzet szerencsére idővel megváltozott, a gyártó parancs-dokumentációja itt található: https://www.espressif.com/sites/default/files/documentation/4a-esp8266_at_instruction_set_en.pdf
 +
 +A modul több kiadásban kerül forgalomba, ezek közül néhány:
 +
 +
 +  * ESP-8266
 +  * ESP-01
 +  * ESP-32
 +  * nodeMCU
 +
 +A modulok 3,3V-os [[hu:main:dict#ttl|TTL]] jelszinten üzemelnek, az 5V-os rendszerekhez közvetlenül nem mindegyik köthető. Az újabb modulokon a belső memória mérete az alap 512k-ról már legalább 1MB-re emelkedett. 
 +
 +=== Az ESP-8266 perifériák ===
 +  * 17 GPIOs
 +  * SPI
 +  * I²C (szoftveres megvalósítás)
 +  * I²S DMA-val
 +  * UART
 +  * 10-bit ADC
 +
 +=== Technikai jellemzők ===
 +  * Üzemi hőmérséklet: -40 ℃ .. +125 ℃
 +  * Tápfeszültség: 4.5V .. 9V (nodeMCU: 12V max), USB-tápellátás
 +  * Áramfelvétel: folyamatos felvétel ≈70mA (200mA Max)
 +  * Készenléti állapot: <200uA
 +
 +
 +
 +
 +==== ESP8266 oldalak és adatlapok ====
 +[[https://arduino-esp8266.readthedocs.io/en/2.4.1/|ESP8266 Arduino Core’s documentation]] \\
 +{{:wiki:downloads:esp8266_datasheet_5_2.pdf |ESP8266EX}} \\
 +
 +
 +
 +Ez a modul az ESP 8266 sorozat legkisebb és egyben legolcsóbb egysége. Az ESP-01 árának megfelelően kissé korlátozott szolgáltatásokat nyújt, messze nem alkalmas minden "AT" parancs fogadására és feszültségszabályzás hiányában csak a 3,3V-os üzemre alkalmas - a tápellátásáról gondoskodni kell.
 +
 +==== Az ESP-01 modul technikai jellemzői ====
 +
 +  * 2 digiális pin találató rajta (GPIO0 és GPIO2)
 +  * wifi b / g / n támogatás
 +  * 8 MB külső QSPI flash memória (1MByte)
 +  * 32 bites Tensilica Xtensa LX106 processzor (80 MHz)
 +  * 3.3V tápfeszültség (vigyázat, az áramfelvétele akár 300mA-ig is emelkedhet)
 +  * NYÁK-ra integrált antenna
 +  * 2 * 4 PIN
 +
 +==== Az ESP-01 PIN kiosztása ====
 +{{:wiki:modul:esp01_pin.png|Az ESP-01 PIN kiosztása}}
 +
 +^nr^pin^leírás|
 +|1|GND|Grund|
 +|2|GPIO1 / U0TXD|Serial [[hu:comm:start#uart|UART]] TX port|
 +|3|GPIO2|Szabadon felhasználható PIN, felfutáskor a boot-eljárást választja ki ([[hu:esp:start#esp8266_boot_opciok|lásd fent]]), Vcc-re kell felhúzni egy (2k-10k) ellenállással|
 +|4|CHIP_EN / CH-PD|Chip engedélyezés. HI: be, a chip működik, LO: kikapcsol, alacsony áramfelvétel|
 +|5|GPIO0 / SPI_CS2|Szabadon felhasználható PIN, felfutáskor a boot-eljárást választja ki ([[hu:esp:start#esp8266_boot_opciok|lásd fent]]), Vcc-re kell felhúzni egy (2k-10k) ellenállással|
 +|6|EXT_RSTB|Külső RESET szignál. LO: Reset aktív, HI: nincs reset|
 +|7|GPIO3 / U0RXD|Serial UART RX port|
 +|8|Vcc|Táp: 3,3V (A 3,3V a maximum, ennél többet nem visel el)|
 +||COMM LED|kék színű, a kommunikációt jelzi|
 +||POWER LED|Vörös színű, a modul bekapcsolt állapotát jelzi|
 +
 +
 +  * A jellemző pin áram 6mA, de maximum 12mA lehet
 +  * Alvó módhoz (SLEEP-MODE) a GPIO16-ot az EXT-RSTB-re kell kötni. Ébresztéshez a lekötés után a GPIO16-ot LOW-ban kell hagyni.
 +  * Újraindításhoz (RESET) a GPIO15-öt LOW, a GPIO16-ot HIGH-ba kell kapcsolni.
 +  * A táp maximuma 3,6 V lehet, efölött a modul tönkremegy.
 +  * Teljes áramfelvétel maximuma 100 mA.
 +
 +==== Az ESP-01 Arduino összekötése ====
 +
 +{{:wiki:modul:esp01_arduino.png?600|Az ESP-01 Arduino összekötése}}
 +
 +**Alkatrészjegyzék:**
 +
 +  * Arduino UNO, vagy valami hasonló vezérlő
 +  * ESP-01 modul
 +  * 2 x 3K3kΩ (1..10kΩ) ellenállás a CH_PD és a RESET portok felhúzásához
 +  * 3 x 220Ω ellenállás az UART feszültségosztóhoz
 +  * 3,3 V-os szabályozott tápegység az ESP8266-hoz (nem érdemes a tápot az Arduino 3,3 V-os csatlakozójáról lekötni, mert az ESP8266-nek nagy az áramfelvétele)
 +  * breadboard
 +
 +A külső 3,3V-os tápegység grundját mindenképpen érdemes az Arduino grundjával összekötni, így a TTL jelszintek nem fognak egymáshoz képest elcsúszni. Az Arduino TX kommunikációs portját egy feszültségosztón keresztül kell az ESP-hez kötni, az Arduino 5V-os TTL-jét 3,3V-ra kell mérsékelni. Ellenkező irányban ez nem szükséges, a 3,3V HI még értelmezhető 5V HI-nak is (lásd [[hu:arduino:start#ttl_logikai_szintek|TTL jelszintek]]).
 +A CH_PD és RESET portok LO aktiv bemenetek, ezeket (3K3kΩ-os (1..10kΩ)) felhúzóellenállásokkal kell HI szinte állítani.
 +
 +http://www.deviceplus.com/how-tos/arduino-guide/esp8266-setup-tutorial-using-arduino/
 +
 +==== ESP-01 "Deep Sleep" ====
 +A mélyalvás funkció, ami sokkal alacsonyabb fogyasztást eredményez stand-by módban, hivatalosan nem érhető el az ESP-01 modulhoz, bekapcsolásához egy kicsit hekkelni kell, a GPIO16 portot közvetlenül az IC-n kell lekötni a RESET (EXT_RSTB) pinhez, így:
 +
 +{{:wiki:modul:esp_01_deep_sleep.png?200|ESP-01 "Deep Sleep"}}
 +
 +==== ESP-01 illesztőmodulok ====
 +Az illesztőmodulok egyrészt az 5V-os tápból 3,3V-os, az ESP-t nem leégető tápot konvertálnak, de ami fontosabb, az 5V-os TTL TX, RX jeleket is automatikusan (ide-oda) 3,3V-ra alakítják. Nyilván, ezt a feladatot meg lehet oldani ellenállásokkal is, de mennyivel egyszerűbb "konyhakészen" venni ezeket az átalakítókat.
 +
 +
 +^ESP-01 UART illesztőmodul^ESP-01 USB illesztőmodul|
 +|- 5V / 3.3V tápfeszültség konverzió \\ - 5V / 3.3V TX / RX konverzió \\ - UART modulhoz csatlakoztatható|- 5V / 3.3V tápfeszültség konverzió \\ - 5V / 3.3V TX / RX konverzió \\ - USB (serial) csatlakozó \\ - Kondenzátor a dinamikus áramfelvételekhez \\ - CH340 UART-IC (PC driver kell hozzá)|
 +|{{:wiki:arduino:esp01_adapter.png?200|ESP-01 UART illesztőmodul}}|{{:wiki:arduino:esp01_adapter_usb.png?200|ESP-01 USB illesztőmodul}}|
 +
 +
 +
 +Az illesztőmodulokon keresztül a PC-ESP-01 kommunikáció (teszt) legegyszerűbben a [[hu:arduino:soft_basic#termite|Termite program]]mal valósítható meg.
 +==== Az ESP-01 szoftver ====
 +
 +Az alábbi szoftverrel érdemes tesztelni az ESP modult. A parancsokat az [[hu:arduino:soft_basic#arduino_ide_soros_monitor|IDE soros monitor]]on keresztül lehet megadni, és a válaszok is oda fognak megérkezni. A biztos kommunikáció céljából a sebességét érdemes az alapértelmezett 11.500 baud-ról 9.600-ra visszavenni. Ezt a modulon a "AT+IPR=9600" paranccsal lehet megtenni. A kommunikációhoz az [[hu:arduino:soft_basic#arduino_ide_soros_monitor|IDE soros monitor]]on a sorvég figyelést “Both NL & CR“ módba kell állítani.
 +
 +<code c>
 + const   byte   rxPin     2 ;   // Wire this to Tx Pin of ESP8266 
 + const   byte   txPin     3 ;   // Wire this to Rx Pin of ESP8266 
 + 
 + // We'll use a software serial interface to connect to ESP8266 
 + SoftwareSerial  ESP8266   ( rxPin ,   txPin ) ; 
 + 
 + void   setup ( )   
 +   Serial . begin ( 9600 ) ; 
 + 
 + // You may need to uncomment this block for the first run: 
 + //  ESP8266.begin(115200); // Change this to the factory baudrate used by ESP8266 
 + //  delay(1000); 
 + // 
 + //  Serial.println("Setting BAUDRATE to 9600"); 
 + //  ESP8266.println("AT+IPR=9600"); 
 + // 
 +   ESP8266 . begin ( 9600 ) ;  
 +  
 + 
 + bool   okReceived     false ; 
 + 
 + void   loop ( )   
 + 
 +   if   ( Serial . available ( )   >   0 ) 
 +   
 +     String   command     Serial . readStringUntil ( '\n' ) ; 
 +     Serial . println ( "Command Sent: "     command ) ; 
 +     Serial . println ( ) ; 
 +     ESP8266 . println ( command ) ; 
 +   
 + 
 +   int   responseCounter     0 ; 
 +   if   ( ESP8266 . available ( )   >   0 ) 
 +   
 +     while   ( ESP8266 . available ( )   >   0 ) 
 +     
 +       if   ( responseCounter   ==   0 ) 
 +       
 +         Serial . println ( "Response Received:" ) ; 
 +       
 +      
 +       String   response     ESP8266 . readStringUntil ( '\n' ) ; 
 +       Serial . println ( response ) ; 
 +       responseCounter ++ ; 
 +     
 +     Serial . println ( ) ; 
 +     Serial . println ( "============" ) ; 
 +     Serial . println ( ) ; 
 +   
 + 
 +  
 + 
 +</code>
 +
 +===== ESP-12 =====
 +==== Az ESP-12 PIN kiosztása ====
 +{{:wiki:modul:esp12.png?400|Az ESP-12 PIN kiosztása}}
 +
 +===== ESP8266 12-E =====
 +{{:hu:esp:esp8266_12_e_pin.png?400|ESP8266 12-E}}
 +
 +===== ESP32 =====
 +{{ :wiki:modul:geekcreit_esp32.png?200|Geekcreit ESP32}}Az ESP32 az ESP8266 utódja (2016-ban került kiadásra), habár az előd, a ESP8266 sem tekinthető "kifutott" modellnek. Ezen a modulon az integrált Wi-fi mellett egy dual-mode Bluetooth is megtalálható. Meg még egy csomó minden más:
 +
 +CPU: 
 +  * Xtensa kétmagos (vagy egymagos) 32 bites LX6 mikroprocesszor, amely 160 vagy 240 MHz-en üzemel és akár 600 DMIPS
 +  * Ultra alacsony teljesítményű (ULP) társprocesszor
 +
 +Memória: 
 +  * 520 kB SRAM
 +
 +Vezeték nélküli kapcsolat:
 +  * Wi-Fi: 802.11 b / g / n / e / i
 +  * Bluetooth: v4.2 BR / EDR és BLE
 +
 +Üzemmódok:
 +  * AP, STA, vagy AP+STA
 +
 +Periferikus interfészek:
 +  * 12 bites SAR ADC legfeljebb 18 csatorna
 +  * 2 × 8 bites DAC-ok
 +  * 10 × érintésérzékelő ( kapacitív érzékelő GPIO)
 +  * Hőmérséklet szenzor
 +  * 4 × SPI
 +  * 2 × I²S interfész
 +  * 2 × I²C interfész
 +  * 3 × UART
 +  * SD / SDIO / CE-ATA / MMC / eMMC kártyavezérlő
 +  * SDIO / SPI slave vezérlő
 +  * Ethernet MAC-cal és Precision Time Protocol-lal
 +  * CAN 2.0 busz
 +  * Infravörös távirányító (TX / RX, legfeljebb 8 csatorna)
 +  * Motor PWM
 +  * LED PWM (max. 16 csatorna)
 +  * Hall effekt érzékelő
 +  * Ultra alacsony teljesítményű analóg előerősítő
 +
 +https://esp-idf.readthedocs.io
 +
 +===== ESPlorer =====
 +Az ESPlorer egy multiplatform eszköz / program, mellyel az ESP8266 funkciói elérhetők és minden AT parancs kiadható, tesztelhető.
 +
 +Elérése: https://github.com/4refr0nt/ESPlorer \\
 +Bővebb leírása: http://www.esp8266.com/viewtopic.php?f=22&t=882
 +
 +
 +
 +