A következő címkéjű bejegyzések mutatása: ESP8266. Összes bejegyzés megjelenítése
A következő címkéjű bejegyzések mutatása: ESP8266. Összes bejegyzés megjelenítése

2017. március 25., szombat

Project 2017#1 - ESP8266 Programozó Github

Ahogy ígértem itt:
http://it-pro-hu.blogspot.hu/2017/03/project-20171-esp8266-programozo-3.html
kitakarítottam az ESP programozó repóját. Ez szintén tartalmazza az ESP alapú fejlesztőpaneljeimet.
A repó itt található:
https://github.com/sufzoli/suf-electronics-ESPDEV
Ha szükséged van hozzá a különböző KiCAD könyvtárakra, akkor ezeket az erre rendszeresített KiCAD github csoportom alatt találod itt:
https://github.com/orgs/suf-KiCAD

A műtét sikerült, a beteg meghalt

Kaptam két eléggé halott Electrodragon féle relé modult egy barátomtól, hogy javítsam meg.
Az első úgy nézett ki mint ami javítható:



A második teljesen halott:


Ebből meg akartam menteni a terhelés oldali sorkapcsolkat, az első modul tápoldli sorkapcsának a helyére, valamint az ESP-12-es modult, hogy feltegyem az egyik fejlesztőpanelemre.

Leszedtem a sorkapcsokat és az ESP-t a panelről.
Gyártottam egy új fejlesztőpanelt belőle:



Az építés tökéletesen sikerült. (egyre jobban megy az SMD forrasztás),
de amikor a programozót rádugtam az még az USB buszról is leesett.
Tehát a műtét sikerült, de a beteg meghalt.
Az első relé modult is megjavítottam, de miután az egy hálózati feszültségre kötött eszköz, elővigyázatossági intézkedések nélkül nem akarom kipróbálni. És erre most nincs több időm.
Folyt. köv....

2017. március 15., szerda

Project 2017#1 - ESP8266 Programozó 3.

Az ebay-en láttam mindenféle ESP-01 modul programozót. Mindegyikük egy gombot használt a Flash/Reset lekezelésére, ami számomra elfogadhatatlan. Tehát terveztem valamit. Ez nem egy önnálló programozó, hanem egy kiegészítés az ESP8266 programozómhoz. Ez semmi más mint két csatlakozó és a három fel/le húzó ellenállás:


A programozóhoz csatlakoztatva:


Munka közben, ESP-01-et programozva:


Itt vannak a beállítások ahhoz, hogy az Arduino IDE-ben működésre bírjuk:


Lehet, hogy néhány beállítás magyarázatot ígényel:
  • Azért használtam a Generic ESP8266 Module beállítást, hogy látható legyen az összes lehetőség.
  • QIO mode a leggyorsabb flash hozzáférési metódus. Miután az ESP-01-nél amúgy sem hozzáférhetőek a QIO által felhasznált GPIO lábak, ezzel nem vesztünk funkcionalitást.
  • 4M flash méret - Az eredeti 512k-s flash chipet lecseréletm 4M-ásra (http://it-pro-hu.blogspot.hu/2016/10/esp-01-mutet.html), tehát ez itt korrekt.
  • Reset Method - nodemcu - ez a legfontosabb beállítás itt, ez teszi lehetővé, hogy a programozó automatikusan, gombok nyomogatása nélkül működjön.
Azt hiszem ezzel a project-el itt végeztem. Az egyetlen dolog ami hátra van, a github repo rendbetétele.

2017. március 14., kedd

Project 2017#1 - ESP8266 Programozó 2.

A megrendelt panelek megérkeztek a SeeedStudio-tól
Megépítettem:



Tökéletesen működik.
Csak egy gyors megjegyzés magamnak: Az USB csatit kell először beforrasztani, egyébként nem férsz hozzá az lábaihoz a pákával.

2017. március 11., szombat

Project 2017#2 - ESP8266 Fejlesztő panel

Igen, nyugodtan mondhatod. Mi a jó büdös francért csinálsz mégegy ESP8266-os fejlesztőpanlet? Rengeteg van a piacon. Csak nézd meg a NodeMCU-t, Wemos D1-et, a Sparkfun, az Adafruit moduljait, csak, hogy megnevezzek párat.
A fő ok, hogy egy idióta vagyok.
Hottá akartam férni az ESP12E/F alsó oldalán található kivezetésekhez.



Csak azt nem vettem észre, hogy ezek már elérhetóek a NodeMCU v1.0-án ami ott kallódik az asztalomon.
Ezért terveztem és építettem egyet:


Ez legalább egy olyan minimális panel amin hozzáférek ezekhez a csatlakozásokhoz, nincs rajta az USB/Soros átalakító, így könnyedén illeszkedik a jövőben tervezett projectjeimbe.

Akkor most egy pár szót arról, hogy mihez akarok kezdeni ezekkel a csatlakozásokkal.
Rengeteg fórumon arról írnak, hogy ezek a lábak használhatatlanok, kizárólag a beépített flash tudja használni ezeket.
Én egy makacs alak vagyok. Nem hiszem el amit mondtak. Magam akarom kipróbálni.

Nézzük meg, mit szándékszom elérni ezzel a panellel. A továbbiakban számozott taszkoknak fogom jelölni az elérendő eredményeket.
Az alap probléma az, hogy amíg az ESP8266 egy igen nagytudású processzor, könnyen programozható Wi-Fi-vel, jó sok flash memóriával a programok és adatok tárolására, igencsak limitált a felhasználható I/O-k száma. Igen, lehet I/O extendereket használni, de az nem ugyanaz.
Nézzük meg, hogy miből főzünk:
Először is ezek a GPIO lábak állnak szbadon rendelkezésünkre:
GPIO4, GPIO5, GPIO12, GPIO13, GPIO14
Ez összesen öt, nem túl sok annak ismertében, hogy az SPI-t és az I2C-t is csak ide tudjuk kirendezni.
A GPIO16 még lehet, hogy szabad, de néhány bejegyzés szerint megzavarhatjuk vele a boot folyamatot, és szerepe van a deep sleep üzemmódnál.
Nézzük, hogy mi másunk van.
A GPIO1 és GPIO3 használható, ha feladjuk a soros portot amin a programozás zajlik és a diagnosztikai üzenetek jönnek rajta. Ezjól használható a fejlesztési időszakban, majd később diagnosztikai célra.
Miután azt a funkciót mindenképp meg akarom tartani, ezzel egyenlőre nem akarok foglalkozni.
A GPIO0-t, GPIO2-t, GPIO15-t a boot folyamat használja. Ez azt jelenti, hogy a GPIO0 és GPIO2 tápra, a GPIO15 pedig földre van kötve a normál indulás során (ez nem igaz, ha programozzuk az eszközt, vagy SD kártyáról indítjuk).
Ha nem törődünk ezknek a boot során lévő állapotával ésfigyelembe vesszük a fel és lehúzó ellenállásokat a későbbiekben akkor kimenetként használhatóak, ugyanakkor bemenetként nem ajánlott ezeket használni, mert megzavarhatják a boot folyamatot.
Van a fejemben egy egyszerű külső áramkör amivel ez kiküszöbülhető. Tehát jelöljük meg ezt TASZK#1
A GPIO6-GPIO11 a beépített FLASH memória használja (alsó oldali csatlakozások).
Itt van egy kis tábla, hogyan vannak bekötve:

GPIO6    CLK
GPIO7    SDO0      MISO
GPIO8    SDO1      MOSI
GPIO9    SDO2
GPIO10  SDO3
GPIO11  SDCMD  CS

A flash-nek folyamatosan csatlakoztatva kell lennie, tehát ezek a lábak nem használhatóak (legalábbis nem szabadon).
A rendszer két üzemmódot enged meg (lehet, hogy többet, de itt most csak a két legsűrűbben használt ESP8266 flash módról beszélünk): QIO (négycsatornás) és DIO (kétcsatornás)
QIO módban az összes SDx láb használatban van, DIO módban csak az SDO0/1. Ez azt jelenti, hogy a GPIO9/10 szabadon marad. Nézzük meg, hogy tudom-e használni ezeket. Tehát jelöljük meg ezt TASZK#2
Bizonyos dokumentumokban azt találtam, hogy a HSPI interface-t rá lehet mappelni a flash SPI lábaira. Elméletben, ha a HSPI CS jelét használjuk külső SPI eszközt köthetünk ide (4 vezetékes SPI). Ezzel meg tudom osztani az SPI lábakat a flash és a külső SPI között. Jelöljük meg ezt TASZK#3
Az ESP8266 a dokumentáció szerint tud SD kártyáról bootolni a belső flash helyett. Érdekes lenne kitalálni, hogyan működik ez. Tehát jelöljük ezt is meg  TASZK#4
Egyenőre ennyi. Ki akarom deríteni, hogy a fenti négy elképzelésem működik-e, és írni a sikerről/kudarcról.


2017. február 18., szombat

Project 2017#1 - ESP8266 Programozó 1.

Egy jó ideje nem írtam semmit (legalábbis elektronikáról). Ez nem jelenti azt, hogy nem is csináltam semmit, csak nem volt időm/kedvem írni.
Itt van az év első projectje (hogy őszinte legyek 2016-ban kezdtem, de itt az ideje befejezni).
Elkezdtem  ESP8266-al dolgozni, és mint sokan én is megvettem a NodeMCU 0.9-es panelt (évekkel ezelőtt, hogy őszinte legyek). Ez egy remek fejlesztőeszköz, kezdésnek, de én nem szeretem az ilyen előregyártott programozóval, fesszabályzóval felszerelt cuccokat a projectjeimben. A saját fesszabályzót kopasz chip-et vagy modult, ISP-t szeretek látni.
Úgy döntöttem, hogy a NodeMCU alapján építek egy ESP8266 ISP-t. Az eredeti 0.9-es NodeMCU-ra esett a választásom két okból:

  • Ez CH340G-t használ ami SO tokban van. Az újabbak CP2102-t használnak és én változatlanul rettegek a QFN toktól (Egyszer ki fogom próbálni, Ígérem)
  • Ennek van automatikus programozási képessége (RST, GPIO lábak), ami azt jelenti, hogy nem kell gombokat nyomogatnom, amikor a programozást elindítom.

Az eredeti programozó 5V tápfeszültséget használt a CH340G-hez:



Amikor elkezdtem dolgozni ezen a projecten még nem volt tiszta, hogy az ESP8266 tolerálja-e az 5V-ot, ezért úgy éreztem, hogy nem jó ötlet ezt így hagyni. Tehát minimálisan átterveztem az áramkört.
Itt az én verzióm:


Sikerült mindent egy egyoldalas panelen elhelyezni:


és otthon kimaratni/beültetni:


Remekül működik az ESP8266-os projectjeimmel.

2016. december 1., csütörtök

Titkos Project 2. - Tápegység

Végre megérkezett a pici tápegység a LED-ekhez (és persze a project többi részéhez):


2016. november 19., szombat

Titkos Project 2.

A hét elején elkövetett panelek közül kettő a második titkos projectem-hez tartozik (volt első is: https://hackaday.io/project/7424-secret-project)
Ez ESP8266-on alapul:


Ahogy láthatod az ESP-07-et választottam hozzá, ami ott hányódott az alkatrészes dobozomban.
Megpróbáltam feléleszteni a processzor panelt:


Először feltöltöttem az arduino flash példaprogramot rá (ez megmondja a flash valódi méretét is). "Mőködött", de...
...az eredmény méretes bukta volt:


Az ESP-07-es modulokat az ESP8266 időszak hajnalán vettem, hogy játszak velük. Meg sem néztem a flash méretét akkoriban. 512K van benne (mint az ESP-01-ben). Az ESP-01-ben kicseréletm a flasht, de ezen van egy fém kupak. Ezért nem éri meg küzdeni vele.
Szerencsére van egy pár ESP-12E is itthon. Lefutottam a műhelybe:


Sokkal jobb:


És gyorsan rendeltem egy pár ESP-07S-t és ESP-12F-et.

2016. november 15., kedd

Elektronika - Újabb cuccok folyt...

A szombati panelek így állnak ma:


Lassan, nem ártana írnom is a dolgokról, nem csak fotózgatnom. :-)

2016. október 14., péntek

ESP-01 műtét

Mostanában ESP8266 alapú projecteken dolgozom. Az első pillanattól kezdve meg akartam oldani a web-en keresztüli firmware upgrade-jét (OTA). A terv, hogy a böngészőből fel lehessen tölteni a fájlt az SPIFFS fájlrendszerbe (kész). Ott ellenőrizni lehessen az integritását (folyamatban). Ezek után fel lehessen upgrade-elni (kész). Ez a folyamat magától értetődően azt igényli, hogy a flash mérete legalább kétszerese legyen a bináris kódnak.
Az első működő projectem ~280K bináris lett. Ez azt jelenti, hogy az ESP-01 modul 512K flash-e nem elég.
Körülnéztem, hogy tudom-e növelni ezt. Ezt blog bejegyzést találtam:
http://tech.scargill.net/32mb-esp01/
Tetszik a flash chip cseréjének ötlete, de van néhány gondom a megvalósítással:


Úgy döntöttem, hogy keresek 150mil széles 4MByte (32Mbit) flash IC-t megbízható forrásból.
Megtaláltam. Ez a  Cypress (Spansion) S25FL132K0XMFI041 a TME-től: http://www.tme.eu/en/details/s25fl132k0xmfi041/fram-memories-integrated-circuits/cypress/
Ez többbe kerül ($0.75 darabja), de megbízhatónak tűnik és nincs lábhajlítgatás.
A csomag megjött a TME-től, így tegnap este megvolt az első műtét:


Az eredeti 512K Winbond chip-es a bal oldalon, a Spansion 4M chip-es a jobb oldalon.
Ha elindíjuk az Arduino IDE-t van benne egy CheckFlashConfig nevű példa amivel ellenőrizni lehet a flash méretét:


Az eredmény a soros monitoron látható.
Műtét előtt:

Műtét után:


Még náhány modul vár az operációra. :-)

2016. április 10., vasárnap

Mesék a házautomatizálásról - Lámpakapcsolgatás

Menjünk tovább. Ez csak egy kis kopipaszta programozás.
A kódot innen szedtem:
http://iot-playground.com/blog/2-uncategorised/40-esp8266-wifi-relay-switch-arduino-ide

Lecseréltem az SSID-t és a jelszót, rákötöttem egy 150 ohmos ellenállást, meg az első LED-et amit az alkatrészes dobozban találtam az ESP8266 megfelelő lábára. Letöltöttem a kódot, elindítottam a soros monitort a Visual Studio-ban:

Ha kapcsolódom a webszerverhez egy böngészőből, be és ki tudom kapcsolni a LED-et.

Akkor most integráljuk az OpenHAB-ba.
Nem csináltam mást, mint módosítottam a korábbi rule-okat. Először, csak hozzáadtam a http hívásokat a korábbi szabályokhoz, de ez nem volt kielégítő. A távirányítóról tudtam vezérelni a LED-et, de a böngészőből nem. Tehát kicsit jobban hozzányúltam.

Íme az eredmény:
import org.openhab.core.library.types.*
import org.openhab.core.persistence.*
import org.openhab.model.script.actions.*

rule "GarageLightRemote"
when
    Item KeeLoq_Remote_B changed from CLOSED to OPEN
then
    if(Garage_Light.state == ON)
    {
        sendCommand(Garage_Light, OFF)
    }
    else
    {
        sendCommand(Garage_Light, ON)
    }
end

rule "GarageLightOffAction"
when
    Item Garage_Light changed from ON to OFF
then
        sendHttpGetRequest("http://10.1.2.129/gpio/0")
end

rule "GarageLightOffAction"
when
    Item Garage_Light changed from OFF to ON
then
        sendHttpGetRequest("http://10.1.2.129/gpio/1") 
end
És az áramkör:

2016. április 9., szombat

Mesék a házautomatizálásról - ESP8266, Arduino, Visual Studio

Nem vagyok nagy barátja az Arduino ökoszisztémának. A hulladék fejlesztőkörnyezet, a normális debugger hiánya távol tartott tőle.
A másik oldalon, be kell vallanom, sokat fejlődött az utolsó találkozásunk óta, és egyre megkerülhetetlenebbnek tűnik.
Az OpenHAB rendszeremhez szükségem van távoli szenzorokra, beavatkozó szervekre. Nagyrészüket építeni (és nem venni) akarom. Körülnézve két könnyen használható megoldást találtam:
  • ESP8266 alapú WiFi modulok
  • MySensors.org NRF24L01+ és Arduino alapú mesh hálózat
Mindkettőt ki akarom próbálni. Miután nem igazán van arduino-m (van pár a szekrényben, de különböző gyártóktól, különböző nyűgökkel, és nem igazán illenek ebbe a projectbe), tehát az ESP8266-tal akarok először játszani.
Azt olvastam, hogy a LUA értelmező nem igazán jó nagyobb projektekhez, így eleve az Arduino környezetet választottam. Egyenlőre csak tanulom, tehát nem tudom, hova vezet.
Az első célom, hogy képes legyek GPIO-t kapcsolgatni az ESP8266-on HTTP REST API-n keresztül.
Ahogy feljebb, már jeleztem, kellően útálom az Arduino IDE-t. Korábban különböző problémákba futottam vele amikor a 3D nyomtató Marlin firmware-ét próbáltam konfigurálni. Később megtaláltam, hogy a megbízható Visual Studio-t (amit napi szinten használok a munkámban, különböző projectekhez) is használhatom, ezzel a kiegészítéssel:
http://www.visualmicro.com/
a feladatra.
Rakjuk össze a környezetet:

1. Telepítsük fel az Arduino IDE-t. Innen tölthető le: https://www.arduino.cc/download_handler.php?f=/arduino-1.6.8-windows.exe

2. Telepítsük fel a Visual Studio 2015-öt. Én a Professional kivitelt használom, de az ingyenes is megfelel. Innen tölthető le: https://go.microsoft.com/fwlink/?LinkId=615448&clcid=0x409
Bizonyosodjunk meg róla, hgy a C++ komponens telepítésre került.

3. Indítsuk el a Visual Studio-t. Menjünk a Tools/Extensions and Updates menübe. Válasszuk ki az Online pontot a baloldali panelen. Keressünk rá az Arduino-ra
Töltsük le az Arduino IDE for Visual Studio komponenes-t


Telepítsük fel és az utasításoknak megfelelően, indítsuk újra a gépet.

4. Az újraindítás után megjelenik az Arduino konfigurációja. Be kell állítanunk az Arduino IDE elérési útját és a az ESP8266 Board Manager URL-t:
http://arduino.esp8266.com/stable/package_esp8266com_index.json


Nyomjuk meg az OK gombot.

5. A menüsoron az Arduino board választó mellett kattintsunk a nagyító ikonra. Válasszuk ki a Manage Boards fület.
Nyissuk ki az ESP8266 pontot és jelöljük meg a 2.1.0-ás verziót.
A felugró ablakban nyomjunk OK-t a telepítéshez



Ezen a ponton egy kenmény hibába futottam. A gépem tartományi tag. A dolgaimat mezei felhasználóként futtatom, ami csökkentett jogokat jelent (természetesen van admin felhasználóm, de csak akkor használom, ha szükség van rá). Úgy tűnik, hogy a telepítő hibás. A profilkönyvtáram nevében van egy pont. A telepítő ezt átkonvertálta aláhúzásra bizonyos helyeken, és egy Access Denied hibát dobott - mert ugye a könyvtár nem létezett és létre sem tudta hozni.

Tehát létrehoztam a könyvtárat adminként, és adtam magamnak jogot rá. Ezután a telepítő lefutott, de az első fordításnál hibát kaptam. A hibaüzenet teljesen használhatatlannak bizonyult. Jó néhány próbálkozás, Process Monitorozás (Micosoft, korábban Sysinternals eszköz), bemásoltam a helyükre az aláhúzásos profil temp könyvtárában felejtett dolgokat. Mostmár működik, sok óra elvesztegetve.

6. Próbáljuk ki
Gyors tesztet akartam, tehát, csak létrehoztam egy demo projectet, a blink-et a Visual Studio listájáról.



Miután kiválasztottam a megfelelő board-ot (esetemben a NodeMCU v0.9-et) és soros portot, feltöltöttem a kódot és elkezdett működni.

Úgy tűnik az ESP8266 környezet kész egy bonyolultabb feladatra.