- AMD vs. INTEL vs. NVIDIA
- Intel Core i5 / i7 / i9 "Alder Lake-Raptor Lake/Refresh" (LGA1700)
- Fejhallgató erősítő és DAC topik
- Fájdalmasan gyenge kijelzőt válaszott a Switch 2-höz a Nintendo
- Extrém tűrőképességgel reklámozza új tápkonnektorát az ASUS
- Apple asztali gépek
- Gaming notebook topik
- Hobby elektronika
- HiFi műszaki szemmel - sztereó hangrendszerek
- Kisebb gond akadt az ASUS egyik felsőpolcos vízhűtésével
-
PROHARDVER!
Arduino hardverrel és szoftverrel foglakozó téma. Minden mikrovezérlő ami arduinoval programozható, és minden arduino program, board, és hardverrel kapcsolatos kérdések helye.
Új hozzászólás Aktív témák
-
Janos250
őstag
válasz
Teasüti #7208 üzenetére
"történt már veletek, hogy a watchdog reboot-ol, mert nincs etetve a Core 0-n?"
Igen :-(
Én megkerültem a problémát: A loopból hívom meg a taskot újra és újra, és amikor a task elvégezte a dolgát, kilép [vTaskDelete(NULL)].
Még nem igazán sikerült tisztán látnom kutya ügyében. Mindjárt az első, hogy ők hányan vannak: minden Core-nak, vagy minden tasknak van egy-egy? Aztán, hogy hogyan lehet törölni?
"Én eddig azt hittem az RTOS fel is tudja függeszteni az adott folyamatot, hogy cpu időt adjon a többi folyamatnak."
Én is azt hittem, de ez se igazán így van. Továbbá én korábban azt hittem, hogy a core1-en nincs megszaggatás, ott mehetnek a realtime dolgok. Na, ez se így van: ott is van interrupt.
Ezt írják:
"Also make sure you disable interrupt watchdog on CPU1 when not using RTOS" "(Also disable the tick interrupt app watchdog, as Ivan said, otherwise it'll complain.)" "A OS-Environment on CPU0,
and pure "undisturbed" power on CPU1."
Na, de ezt hogyan csinálom Arduino alatt? A szokásos Arduinos módszer még - úgy tűnik - nincs implementálva :-(
A PCNT_ENTER_CRITICAL használatában is vannak homályos dolgok. És még számos egyéb is."Amúgy nem gáz, hogy ezeket itt tárgyaljuk ki? Engem nem zavar, de nem tudom azoknak zavaró-e, akik a vanilla Arduino-n dolgoznak."
Miért nem? Szerintem azért, mert előbb-utóbb mások is áttérnek korszerűbb procikra az Arduino alatt, és így látják, mire térjenek át: ESP8266, ESP32, STM, stb.
Pl. ha én nem olvastam volna ezt a topicot, nem érdekelt volna a WS2812 led szalag. Azért kezdtem el kiváncsiskodni, mert itt olvastam. Vagy pl. Te se biztos, hogy ESP32-t használnál, ha nem olvastad volna ezt a topicot. Nekünk már volt belőle hasznunk. Reméljük másnak is.
Egyébként a topicnak van egy gazdája, ha nem akarja, hogy ilyesmiről itt szó essen, majd szól, hogy húzzunk el külön el topicba. Én így gondolom. -
Teasüti
nagyúr
Janos250 és aki ESP-zik:
történt már veletek, hogy a watchdog reboot-ol, mert nincs etetve a Core 0-n?
Task watchdog got triggered. The following tasks did not feed the watchdog in time...
És akkor mutatja mely folyamatok futottak éppen.
Végtelen ciklusban megy egy, ami 100%-ra hajtja valószínűleg az első magot.
Beraktam egy delay(100)-at és most működik.Hogy kellene optimalizálni ezt a folyamatot?
Én eddig azt hittem az RTOS fel is tudja függeszteni az adott folyamatot, hogy cpu időt adjon a többi folyamatnak. Így nem voltam rest bedobálni több folyamatot is ide-oda, bár igaz mindegyik másikban van egy kicsi delay(), még ha mikroszekundumokban mérhető is.
Vagy etetni kéne a watchdog-ot?Amúgy nem gáz, hogy ezeket itt tárgyaljuk ki? Engem nem zavar, de nem tudom azoknak zavaró-e, akik a vanilla Arduino-n dolgoznak.
-
Teasüti
nagyúr
Basic? Viccelsz? C++ és Java jobban megy (a nullához képest jobb
), akkor már neki állhatnék a natív Android-nak is.
Még nem tudom mi fog kisülni ebből a pfod-ból (várom a postást, hogy hozza már a második ESP32-met, mert az első már be van építve és én le nem mászok a garázsba ilyen hidegben laptoppal a hónom alatt), de tetszik ez a megközelítés, hogy mikroböngészőbe küldünk pár bájtos oldalakat. Persze BLE-n keresztül, Janos250 bevett.módszere túl könnyű lenne. -
szuszinho
őstag
válasz
Janos250 #7201 üzenetére
Nem akarom megtanulni az AT parancsokat, csak az AT paranccsal ellenőrizni, hogy visszakapom-e az OK-t, mert akkor minden jó.
Most odáig jutottam el, hogy felmegy a fw az ESP-re, de az AT parancsra nem kapok választ, így nem tudom, jó-e? Tovább nem haladtam a projekttel. -
Janos250
őstag
válasz
szuszinho #7199 üzenetére
Hú, akkor nem tudom :-(
Én amikor pár éve ráálltam az ESP-re, akkor már volt a 12E, ill. a NodeMCU klónjai, én azokkal kezdtem. Azokban van elég memória, hogy feltöltsük rá az Arduino rendszert. Megtanulhatod az ESP-n az AT parancsok használatát, de előbb-utóbb úgyis átállsz valami nagyobbra, és akkor már semmi hasznát nem veszed az AT parancsok ismeretének.
Én ezt
vagy ezt
Ezt még nem használtam, de nekem tetszik
Ezen meg van plusz GND, VCC, és I/O port csatlakozás, amiből mindig kevés van.Vagy ha egy kicsit több pénzt szánsz rá, akkor ez már alapvető minőségi ugrás
-
Dalee
aktív tag
Próbálok egy fűtés projektet összehozni NodeMcu ESP8266 ESP-12E alapon.
A kapcsolás elég egyszerű:
- ESP8266
- DS18B20 hőmérő (onewire kommunikáció)
- relé modul
- állapotjelző LED-ek.
- szabvány USB telefon töltő tápnak.Az alábbi szoftveres komponenseket telepítettem:
- Web szerver (a vezérlés adatok megváltoztatása, hőmérséklet figyelés) ESP Web lapos működéséhez ezt a tutort használtam.)
- E-mail küldés. A hőmérsékletet e-mail-en is küldöm meghatározott időközönként
- Time szerver elérés (log-hoz)
- SPIFFS file rendszerben mért értékek loggolása
- FTP szerver (log adatok letöltése)
- fűtőszál vezérlése relén keresztülAlapban megy is minden, de pár óra elteltével (vagy ha dolgozok az otthoni hálózaton hamarabb) a ESP leszakad a hálózatról és vagy visszakapcsolódik vagy nem, vagy magával rántja fűtés vezérlést vagy nem.
Elég sok WIFI van a környéken, ezért a laptop is gyakran leszakad, szóval elég szar a WIFI, viszont a ESP-nek elvileg újból kellene csatlakozni, illetve nem szabadna megállítani a loop folyamatokat ha jól olvastam.
Gondoltam használom a watchdog timert, de arról azt találtam, hogy a WIFI, WEB könyvtárak kezelik (resetelik), ezért az sem jó megoldás.A flash-re logoltam a loop ciklusban 4 másodpercenként a HEAP-et, hátha elfogy a RAM, de azon sem látszik semmi RAM fogyás, stabilan 20 kb szabad hely van.
Próbálkoztam a WIFI manager könytár autoconnect funkciójával, azzal is meghal a rendszer egy idő után ugyanúgy.
Most 30 percenként resetelem a ESP-t. Így ment egyfolytában 3 napot, de szombat délután egy 30 perces resetet követően, elfelejtette az eddigi router csatlakozási adatokat és szabványos 192.168.4.1-es címen lévő WIFI beállító lapot adta fel a loop-ig el sem jutott.
Nektek is ilyen bizonytalan a működése a WIFI-nek. Van ötlet, hogy mi lehet a hiba vagy, hogy találjam meg mi okozhatja?
Segítségeteket előre is köszönöm.
-
Janos250
őstag
válasz
szuszinho #7195 üzenetére
Az ESP8266 önmagában többet tud, mit az UNO.
Mióta portolták az Arduinot az ESP-re, azóta nem célszerű az AT parancsokat küldözgetni, hanem az UNO-n futó programot szőröstül/bőröstül átrakjuk az ESP-re, és azon futtatjuk. Az UNO-t meg eltesszük emlékbe.
Az AT parancsokkal a WiFit vezérelnénk, de az ESP-n a WiFi kezelésére kész osztályok vannak, amik SOKKAL kényelmesebbek.
Lehet, hogy valami régi irodalom alapján próbálod, amikor még így kellett?
Az UNO előnye az ESP8266-hoz képest, hogy több I/O portja van.
Ha kell a sok I/O port, akkor meg az ESP32 a célszerű. egy-két ezer Ft körül van ebay-en, attól függ, mikor és hol. Most 11.11-én ismét kb. 1300 Ft volt.
Az ESP8266-os lapból is van egy csomó, Neked melyik van? -
Teasüti
nagyúr
válasz
Janos250 #7192 üzenetére
Neeem, bár nem vagyok biztos melyik problémára célzol.
Amivel most küzdök, az egy BLE alkalmazás telefonra.
Mivel nem szeretnék megtanulni Android alkalmazást fejleszteni - nyilvánvaló okokból -, ezért a Play-en keresgélek vmi használható után. A Blynk egy egész ügyes kis alkalmazás lehetne, de nincs kész BLE támogatás egyetlen Espressif MCU-hoz se, hát még az ESP32-höz.
Az UART programok szépen működnek, de nem parancssorból szeretném vezérelni a cuccot.
Most vmi pfodApp nevezetűt próbálgatok.
Ennek sincs ESP32 támogatása - nem meglepő módon -, viszont az általa használt library pofon egyszerű (na jó azért kezdőként kell némi idő míg visszafejti az ember) és a meglévő BLE modulokhoz való UART porton kommunikál. Ezt a library-t akarom módosítani úgy, hogy ne a Serial stream-re tolja ki az adatokat, hanem a Kolban féle BLE UART függvényekbe. Elméletileg nem egy nagy munka átírni a library-t.
Csak mikor megláttam, hogy a Serial-t példányosítja és annak a print függvényeit használja, akkor hirtelen azt hittem elég volna copy&paste módon bedobálni a BLE notify() függvénybe mindent, ami ott megy át.
Persze aztán rájöttem ez se nem praktikus, se nem egyszerűen kivitelezhető.Amúgy okkal csináltam egy topikot ezeknek a témáknak, mert itt mindezt off-ba rakja a nép vmi oknál fogva.
-
Janos250
őstag
válasz
Teasüti #7191 üzenetére
Ugye nem a másik topicban tárgyalt áthallásos problémát akarod szoftveresen megoldani? Mert az nem fog menni! Ez az átka a nagy energiatakarékosságnak, hogy olyan pici áramok mennek, hogy akár a Kossuth rádió is bezavar. Muszáj ellenállással mesterségesen megterhelni. Én a soros átvitelnél tapasztaltam ugyanezt: kb 20 centis vezeték a két IC között, és a csomagok 10-20 százaléka CRC hibásan érkezett.
Mit akarsz variálni?
"Az ESP32-n a HardwareSerial.cpp fájlba kell belenyúlnod. (hardware\espressif\esp32\cores\esp32)"
"int HardwareSerial::read(void)
{
if(available()) {akarmi =uartRead(_uart);
Itt megcsinálod amit akarsz
return itt meg adod neki ami jó Neked!
}
return -1;
}"Az szerintem nem lesz egy ördöngősség! Egyszerűen az uartRead(_uart); rész után csinálsz valamit, nem azonnal adod a returnnek.
-
Janos250
őstag
válasz
Teasüti #7188 üzenetére
Mélyrehatóan nem, de valami:
Az ESP32-n a HardwareSerial.cpp fájlba kell belenyúlnod. (hardware\espressif\esp32\cores\esp32)
A Stream osztály virtuális függvényként megadja, hogy minden gyerekének (pl az egyes processzorok serialjei) kötelezően miket kell tartalmaznia,
ezzel nagyjából biztosít egy bizonyos kompatibilitást.
(class HardwareSerial: public Stream)int HardwareSerial::read(void)
{
if(available()) {
return uartRead(_uart);
}
return -1;
}}
size_t HardwareSerial::write(uint8_t c)
{
uartWrite(_uart, c);
return 1;
}Mint látható, használják az esp32-hal-uart.c fájlból az uartRead-et az meg a hardware\espressif\esp32\tools\sdk\lib\xQueueReceive.a assembly fájl tartalmát.
Érdemes még egy pillantást vetni a HardwareSerial.cpp fájl include-ok utáni első sorára: HardwareSerial Serial(0);
Itt példányosítja előre a mi beavatkozásunk nélkül "Serial" néven a 0-ás UART-hoz kapcsolva. Ezért nem kell őt nekünk példányosítani. -
szuszinho
őstag
Sziasztok,
Próbálnám használni az ESP8266 modulomat UNO-val.
Odáig már eljutottam, hogy firmware-t tudok a modulon frissíteni, de bármit csinálok, az AT parancsra nincs válasz. Igaz, nem vagyok biztos abban, hogy melyik a legfrissebb fw.
Az UNO RESET a GND-be van kötve, és rámértem a 3.3V-ra, és az is jó. (3.32V) -
Janos250
őstag
Na, az UNO feeling kedvelőinek megjelent az ESP32 is "UNO-szerű" kivitelben:
https://www.ebay.com/itm/MINI-Wemos-D1-TTGO-UNO-R3-D1-R32-ESP32-CH340-WIFI-Bluetooth-Devolopment-Board-4M/263305416343?hash=item3d4e39ce97:g:ZRcAAOSwIJlaAZr4 -
Janos250
őstag
Srácok!
Valaki használta már ESP32-n a CCOUNT-ot? (getCycleCount(), vagy hasonlók)
A guta megüt vele, összevissza adatokat ad, és nem tudom, mi a bánatos Télapó a baja.
Ez egy uint32_t regiszter, ami az órajelciklusokat számlálja, de az uint32_t 240 Mhz-nél tizenegynéhány másodpercenként átfordul, tehát így időzítésre nem igazán jó.
Lehet resetelni (XTHAL_SET_CCOUNT(0)), úgy már jó lenne, de a getCycleCount() a program futása során ugyanarra az utasítássorra egyre nagyobb értékeket ad, még a delay() is egyre lassabb lesz. Mintha egyre csak lassulna, lassulna a gép.
Próbálta már valaki? -
brickm
őstag
válasz
gyapo11 #7168 üzenetére
Sziasztok!
Riasztóközpontom open-collectoros kimenetét szeretném GPIO-ra kötni és kommunikáltatni a hálózaton.
Ehhez szeretnék egy ESP 8266-os modult vásárolni, de láttam, hogy elég sok fajta van.
Az lenne a kérdésem, hogy melyik verzió, melyik tipus lenne nekem a legmegfelelőbb, van egy arduino megám is, lehetőleg azzal legkompatibilisebb változatot szeretném. -
Teasüti
nagyúr
Szeretném megköszönni ezúton is a rengeteg segítséget!
Igazán leköteleztek.
Alább látható az ESP32 vezéreltre ws2812 projektem.
Idővel szeretném interaktívvá tenni, a tacho és speed jelek kiolvasásával, meg épp készülőben van egy saját tervezésű féklámpa is 5730-as ledek felhasználásával (nagyon durvák ezek a fél wattos ledek, 5 db-ot próbáltam ki a prototípuson, de még 8%-on is bántja a szemem. 100%-on meg mintha napba néznék, instant vakufoltok.
Na ezt egy kicsit túllőttem 95 db ilyen leddel...).
Szóval egy szó mint száz, még keresem a bajt így sűrűn fogtok hallani felőlem. :] -
válasz
fpeter84 #7156 üzenetére
Tápfeszültség témához off: nemrég teszteltem, hogy lefelé meddig lehet menni. Kínai klón UNO lap +5V-ra két ceruzaelemről vidáman üzemel, sőt, két közepesen töltött ceruzaakksiról is, ami 2,8V.
On: szeretnék egy UNO és egy Wemos d1 mini lapot összekötni, i2c-n megy majd a kommunikáció. A Wemos az UNO +5V-ról kapja a tápfeszültséget, de ugye az esp 3,3V-ról üzemel, amit a wemos onboard regulátorral állít elő magának az 5V-ból. Van értelme a 3,3V-ot is közösíteni a két lap közt? -
Janos250
őstag
válasz
Teasüti #7140 üzenetére
Elnézve a macerát, kezd az az érzésem támadni, hogy igaza volt annak, aki megírta "gyalog" módszerrel a WS2812 RGB led szalag programozását az ESP32-re, mert az legalább egyszerű, és működik. Mivel nagy a sebesség, és van 2 mag, nem szorít az idő, hogy hardware alapon kezeljük a szalagot, bár kétségkívül az a szebb, ezért meg kellene próbálni, valami egyszerűbb, áttekinthetőbb megoldást találni rá.
-
Teasüti
nagyúr
Próbálom visszakövetni a forráskódot hol lehetnek a pixelek eltárolva.
Ha megnézem a
digitalLeds_updatePixels(strand_t * pStrand)
kódját a .cpp fájlban, akkor ebből apState->buf_data[0 + i * 3] = pStrand->pixels[i].g;
pState->buf_data[1 + i * 3] = pStrand->pixels[i].r;
pState->buf_data[2 + i * 3] = pStrand->pixels[i].b;
rész érdekes nekem. Az itt lévőpixels[]
az lesz, ami a STRANDS[] objektumban van definiálva.Aztán ott van egyszer a szalag definíció a programban:
strand_t STRANDS[] = { // Avoid using any of the strapping pins on the ESP32
{.rmtChannel = 1, .gpioNum = 17, .ledType = LED_WS2812B_V3, .brightLimit = 32, .numPixels = 93,
.pixels = nullptr, ._stateVars = nullptr},Csak tippelek, de a
.pixels
az az ami érdekes lehet nekem.Ez a .h fájlban így néz ki:
typedef struct {
int rmtChannel;
int gpioNum;
int ledType;
int brightLimit;
int numPixels;
pixelColor_t * pixels;
void * _stateVars;
} strand_t;Itt a
pixelColor_t * pixels;
amit keresnem kell.
Felette meg is vannak az egyes komponensei a pixeleknek:inline pixelColor_t pixelFromRGB(uint8_t r, uint8_t g, uint8_t b)
{
pixelColor_t v;
v.r = r;
v.g = g;
v.b = b;
v.w = 0;
return v;
}Már csak a pStrand maradt hátra az egyedüli elemeként a puzzle-nak, amit még nem egészen tudtam lekövetni, mi hogy mikor és hol kerül meghívásra.
Jelenleg úgy sejtem a*pStrand
az lényegében egy&STRANDS[i]
lesz. Na megyek alámerülni megint...szerk: oh ba.meg MEGVAN! Hisz ezzel indul a függvény meghívás a loop()-ban.
for (int i = 0; i < STRANDCNT; i++) {
strand_t * pStrand = &STRANDS[i];
rainbow(pStrand, 0, 2000);
scanner(pStrand, 0, 2000);
digitalLeds_resetPixels(pStrand);
}
Azt hittem ez globális lesz, mert mindenhol előfordul ez a név.
Közben meg ha jól értem, akkor a loop() deklarálja és innen kerül átadásra a függvényeknek, ahol meg újra lesz deklarálva helyi változóként minden egyes függvényben külön-külön.Akkor azt hiszem ezzel a helyére került minden eleme a puzzle-nak.
Elméletben. Jöhet a gyakorlat... -
Janos250
őstag
válasz
Tankblock #7119 üzenetére
Ki, de kiakadt.
A demo2 már sokkal logikusabb.
Teasüti, azt nézd!
https://github.com/MartyMacGyver/ESP32-Digital-RGB-LED-Drivers/tree/master/esp-idf
Ezt a részét tedd a setupba:
gpioSetup(16, OUTPUT, LOW);
gpioSetup(17, OUTPUT, LOW);
gpioSetup(18, OUTPUT, LOW);
gpioSetup(19, OUTPUT, LOW);
if (digitalLeds_initStrands(STRANDS, STRANDCNT)) {
ets_printf("Init FAILURE: halting\n");
while (true) {};Ezt meg a loopba:
for (int i = 0; i < STRANDCNT; i++) {
strand_t * pStrand = &STRANDS;
rainbow(pStrand, 0, 2000);
digitalLeds_resetPixels(pStrand);
}Minden egyéb mehet az elejére a setup elé.
A millis() és a delay() deklarációját kommentezd ki!
Innen:
https://github.com/MartyMacGyver/ESP32-Digital-RGB-LED-Drivers/tree/master/arduino-esp32/demo1a
esp32_digital_led_lib.h és a esp32_digital_led_lib.cpp fájlpkat másold be oda, ahol a programod van. -
Tankblock
aktív tag
válasz
Teasüti #7120 üzenetére
Hello,
Csak azért vannak a pointerek, mert a 8 csatornát másként teljesen általánosan kezelni nem egyszerű.
A mit miértért, meg javaslom, hogy nézd meg a esp32_technical_reference_manual_en -t. 14.2.1 RMT arcitecture elmagyarázza a HW működést a Remote Controller Peripheral nak. -
Janos250
őstag
válasz
Teasüti #7112 üzenetére
Nem okozol gondot.
Igen, az a deklaráció. Egy vektor, aminek minden eleme egy struktúra, ami tartalmazza az adott led paramétereit.
A pStrand az egy strand_t* típusú pointer:class Scannerer {
private:
strand_t * pStrand;strand_t STRANDS[] : a STRANDS[] egy vektor, aminek minden eleme strand_t típusú.
A strand_t egy struktúra, ezért adod meg neki így a kezdőértékeket, pl.: .rmtChannel = 1typedef struct {
int rmtChannel;
int gpioNum;
int ledType;
int brightLimit;
int numPixels;
pixelColor_t * pixels;
void * _stateVars;
} strand_t;tehát tartalmazza az adott ledsor paramétereit (esp32_digital_led_lib.h).
A ledType pedig ezek közül valamelyik:
enum led_types {
LED_WS2812_V1,
LED_WS2812B_V1,
LED_WS2812B_V2,
LED_WS2812B_V3,
LED_WS2813_V1,
LED_WS2813_V2,
LED_WS2813_V3,
LED_SK6812_V1,
LED_SK6812W_V1,
}; -
Teasüti
nagyúr
válasz
Tankblock #7113 üzenetére
Szia!
Erről volna szó:
[link]
Arduino IDE alatt. Jövő héten működésre szeretnék bírni egy projektet, így a megszokott környezetben szeretném berúgni a vasat. Az ESP-IDF-fel való ismerkedés inkább hosszabb távon realizálható.
De megvettem hozzá Kolban könyvét, szóval talán lesz egy épkézláb tananyagom hozzá. -
Teasüti
nagyúr
válasz
Janos250 #7111 üzenetére
Elnézést ha túl sok gondot okozok, nem akarlak feltartani a saját munkáddal!
Csak nem tudom hirtelen hová forduljak segítségért, próbáltam keresgélni az adott library-vel kapcsolatban, de semmit nem találtam még a github-os repo-n kívül, meg egy fórum bejegyzésen kívül, ahol a készítő maga kérdezett vmit.Nekem úgy tűnik, hogy a demóban ez volna talán a deklaráció:
strand_t STRANDS[] = { // Avoid using any of the strapping pins on the ESP32
{.rmtChannel = 1, .gpioNum = 17, .ledType = LED_WS2812B_V3, .brightLimit = 32, .numPixels = 93,
.pixels = nullptr, ._stateVars = nullptr},
};
int STRANDCNT = sizeof(STRANDS)/sizeof(STRANDS[0]);Viszont a programozási ismereteim idáig nem terjednek, így nem tudom mi ez:
strand_t STRANDS[]
. Ez egy objektumként deklarált tömb volna? Az object array leírások nem igazán hasonlítanak erre a kódra. A kapcsos zárójelben lévő elemek is elég furák, mi az a pont minden egyes paraméter előtt? Meg hol van melyik változó milyen típus?És ha jól látom, akkor a frissítés az már a rainbow és a scanner függvényekből történik, vagyis eredendően más megközelítést használ mint én eddig. Én ram-ba írtam az eredményt és azt dolgoztam fel, mielőtt burst write-tal kiment a szalagra - és tulajdonképpen az egész library-ből csak annyit használtam, hogy tolja ki a szalagra az általam felállított byte tömböt.
Ha ennyit el tudnék érni ezzel az ESP-n, hogy írja ki a saját byte tömbömet a szalagra, annyi nekem bőven elég lenne. Nem kell semmi más funkció.Ha megnézem a Scanner osztályát (a class használata nekem kicsit magas, régen sem találtam elég bő lére eresztett leírást a szintaktikájáról, a spéci szimbólumok magyarázatáról), akkor ott látok pár parancsot, ami nekem kell ide, mint a
digitalLeds_updatePixels(pStrand);
valamint adigitalLeds_resetPixels(strands[i]);
parancsok. Viszont nem látom, hogy a pStrand az minek van deklarálva. Az egy tömb lenne?MÁS
Mi a probléma a kapcsoló üzemű táppal?
Stabilizált a táp ill. vannak bypass kondik a lap előtt?
Valószínűleg nem ide tartozik, de én PC táppal tapasztaltam hasonló problémákat, amit meg egy a közelében lévő másik fogyasztó csap le állandóan. A táp egy gőzelszívó ventilátor felett helyezkedik el és valahányszor kikapcsolják a ventilátort, a PC táp reset-el vmiért. Először azt hittem a Nano hülyül meg, televágtam bypass kondikkal, meg ESD védelemmel és még alufóliával árnyékoltam.De még így is levágta, aztán rájöttem, hogy nem a Nano reset-el (készenléti áramról kapja a tápot), hanem a táp maga kapcsol ki.
-
Janos250
őstag
válasz
Teasüti #7110 üzenetére
Hú, nehezet kérdeztél!
Én annak idején csak betöltöttem az elején pár demót, lefuttattam, hogy működnek-e, részletesebben nem foglalkoztam vele.Megnéztem ezt a demót és a libraryt.
A demó meglehetősen el van bonyolítva, de nem tűnik túlzottan vészesnek a library használata.
Persze, lehet, hogy a gyakorlat mást mutat. Majd megpróbálok valami nagyon egyszerű programocskát írni a használatára, de most azzal szívok, hogy az ESP32 mellé tettem a dobozba a kapcsoló üzemű táp panelt, és rendszeresen megbolondul, építhetem át.Persze, ha valaki már használta ezt a libraryt, akkor közösen várjuk az instrukciókat.
-
szuszinho
őstag
Sziasztok,
Megnéztem jópár leírást, videót, de nem tudom működésre bírni az ESP8266-ot. UNO-val próbálom, de a feltöltés mindig hibával elszáll.
Tudtok egy jó leírást hozzá?Köszi!
-
Janos250
őstag
válasz
Teasüti #7090 üzenetére
Téglásítani szerintem nem lehet.
Sebesség:
Nekem a 921600-on minden második harmadik feltöltés ki szokott akadni, ezért én
115200-on programozom, bár így tovább tart.
Nekem jelenleg a Node32S típus van beállítva, de használtam már Doit-ra állítva is.
Nem tapasztaltam lényegi különbséget. Ott nincs Flash Mode választási lehetőség.
Én a feltöltéseknél a "Q" (négyszeres) módot nem szoktam semmilyen lapnál használni, mindig csak a
"D" (dupla) módot használom, tulajdonképpen nem is tudom, melyik lapnál lehet, és melyiknél nemNéhány megjegyzés Neked is, és azoknak, akik ezután kezdik használni:
Az első teendők egyike: azonosítani kell, hogy a mi panelunkon melyik láb melyik GPIO, mert a panelokon többféleképpen van feliratozva.
Az ESP32 chipnek 34 GPIO lába van: (0-19, 21-23, 25-27, 32-39), de az Espressif ESP-WROOM-32 tokozásban a GPIO6, GPIO7, GPIO8, GPIO9, GPIO10, GPIO11 ki van ugyan vezetve a 17-22 lábakra, de nem használható, mert az a memóriát kezeli.
A panelok ezeket a lábakat általában nem is vezetik tüskére.
Mivel az 1-es soros port alapból a GPIO9, GPIO10 –et használja, ezért ezeket át kell irányítani, ha az 1-es soros portot használni akarjuk.
Pl.:
#define Serial1_RXPIN 26
#define Serial1_TXPIN 27
pinMode(Serial1_RXPIN,INPUT_PULLUP);
Serial1.begin(115200, SERIAL_8N1, Serial1_RXPIN, Serial1_TXPIN) ;A Serial2-t használat előtt példányosítani is kell , a Serial-t, Serial1-et nem, azok előre példányosítva vannak, mint pl. az UNO-nál a Serial.
Egy kis plusz infó:
esp32-hal-gpio.h:
//GPIO FUNCTIONS
#define INPUT 0x0100000001
#define OUTPUT 0x0200000010
#define PULLUP 0x0400000100
#define INPUT_PULLUP 0x0500000101
#define PULLDOWN 0x0800001000
#define INPUT_PULLDOWN 0x0900001001
#define OPEN_DRAIN 0x1000010000
#define OUTPUT_OPEN_DRAIN 0x1200010010
innen látható, melyik bit mit jelenttypedef enum {
WIFI_MODE_NULL = 0, /**< null mode */
WIFI_MODE_STA, /**< WiFi station mode */
WIFI_MODE_AP, /**< WiFi soft-AP mode */
WIFI_MODE_APSTA, /**< WiFi station + soft-AP mode */
WIFI_MODE_MAX
} wifi_mode_t;Melegedést én nem néztem, de ma még megnézem.
-
Teasüti
nagyúr
válasz
Janos250 #7077 üzenetére
Szia!
ESP32 WROOM 38pin vezérlőm megérkezett a minap. Most raktam fel Arduino alá az alaplapi meghajtókat.
Viszont lett egy rakás új menüpont az Eszközök menüben. Ezeket te hogy állítottad be? Jó az alapbeállítás? El tudom rontani (téglásítani)?
Köszönöm!Illetve normális az ha melegszik a lap? Olyan 30-40 fokos lehet, pedig semmit nem csináltam még vele csak lóg az usb-n.
-
Tankblock
aktív tag
ESP32-IDF hát ööö még bugos is, pl
ledc_set_fade_with_step fv ha a scale attribútummal oszt még akkor is ha az nulla...
eredmény győzelmi zászló.... -
Teasüti
nagyúr
válasz
Tankblock #7076 üzenetére
Lehet kellene egy ESP32 ESP-IDF topic, hogy ezt ne offoljuk szét.
Az a maréknyi ember, aki ebben járatos mind ide jár.
Aki a legtöbbet ESP-zik, ő meg Arduino alatt programoz.
Aki meg más IDF-et használ, ő meg nem ESP-zik. Így hirtelen akik eszembe jutottak.
Esetleg lehetne egy Arduino komplementer topik. Aki Arduinózik az ne kapjon szívrohamot, ha betéved ide. Minden más platform meg mehetne külön.
Amúgy necces úgy topikot nyitni, hogy nem tudok hozzátenni semmit. -
Tankblock
aktív tag
válasz
Teasüti #7069 üzenetére
Hello,
Én élvezem, hogy végre eclipse alatt tudok fordítani, és nem az Arduino IDE-be vagyok korlátozva. C nyelvet sem mostanság használtam, és van lehetőség C++ is.
Nem vagyunk egyformák, nekem a Win10 egy csalódás, és kacsingatok az új Ubuntu 17.10 után.
A dokumentáció hiányosságai okoznak fejfájást. Nem minden működik a leírtak szerint az ESP-IDF ben. Van még rajta mit csiszolni.
Az interrupt kezelést kellene megtanulnom, pont ez az ami idegesít, mert a leírtakból pont nem lehet megcsinálni amit szerettem volna --> ledc fade végén interruptban visszafele fadelni szeretném A technikai sheet szerint az összes channel tud a végén interruptot. A HW képességei lenyűgözőek. A tudásom meg igen kevés.
Feltűnö h az Arduino ideben írt villogtatás 65% lassabb --> túl nagy az overhead.
ESP-IDF ben ezek mennek eddig :
RTOS Task kezelés, Queue, Semaphore/Mutex - > binary semaphoret értem , de nem használtam
i2c scannert sikerül már írnom.
Led villogtatás is megy.
MQTT-re üzenet küldés. igaz ez kész library-t használva.
Most küzdök a ledc -vel.Lehet kellene egy ESP32 ESP-IDF topic, hogy ezt ne offoljuk szét.
-
Tankblock
aktív tag
válasz
JozsBiker #7072 üzenetére
Hello,
Meglehet, hogy igazad van. ESP8266 köré terveztem a projectet, ha már volt itthon. és RTC is.
Wifi-t szerettem volna mert NTP vel egyszerű a sync, és ha lesz időm akkor webservert vagy akár még MQTT vel is lehet pl riasztást beállítani. A HW ben a GPIO2 n van egy 100 Ohm ellenállás után egy buzzer is. Na az a része a softwarenek sincs még kész.
Amit élveztem eddig ebben a projectben :
- az a nyák tervezés -> előtte 0 tapasztalatom volt Eaglel és nyáktervezőt sem láttam középsuli óta.
- balzafa doboz készítés -> előtte 0 tapasztalatom volt ilyenel
- működik érzés. mégha tudom hogy félkész is.A project szigorúan itthonra készült, belegondolva, hogy mennyi időt tettem bele, és a 60 Neopixel kör sem olyan olcsó. Ez nekem csak hobby, így nem feltétlen a mindenek feletti ésszerű tervezés és kivitelezés a cél.
Ha kész lesz akkor nagyszerű karácsonyi ajándék lehet pl szülőknek egy második darab ahol az elvétett hibákat már nem követem el újra. -
Teasüti
nagyúr
válasz
Tankblock #7068 üzenetére
Érzésre esp-idf is erősen fejlesztés alatt van.
Hát mit ne mondjak, nekem eddig egy hatalmas csalódás.
Nem igaz, hogy 2017-ben az appok világában nem tudnak felhúzni egy normális frontend-et.
Neeem, e helyett csomagolj ki 20000 apró fájlt, meg parancssorból telepíts a Github repojából.
És most felraktam vmi 2 giga hangyaf.sznyi fájlocskát és még egy szövegszerkesztőt is külön rakjak fel magamnak mert azt nem tartalmaz.
Azt hittem elsőre ez vmi vicc, de sajnos teljesen komoly.
Pont ezek miatt nem használok Linux-ot se. -
Tankblock
aktív tag
válasz
Teasüti #7067 üzenetére
Hello,
Ez engem is érdekelne, amúgy se szeretném használi tovább az arduinot, és egy kicsit programozni.
Eddig csak annyit tudok amit a demokban leírtak, vagy amit a pcbreflux csatornáján lehet tanulni a youtubon.
Érzésre esp-idf is erősen fejlesztés alatt van. a esp32 forumja iszonyat lassú. A frissen regisztrálóknak a moderátor nézi és engedélyezi a hozzászólását.Referencia alapján kezdtem a küzdelmet.
-
Teasüti
nagyúr
Szép estét!
ESP-IDF kapcsán van vmi bevezető a programozásba vhol? Vagy vmi közösség, ahol vannak "howto"-k?
Szeretnék belevágni a natív programozásába (mert megőszülök, mire az Arduino Core funkcionalitása teljes körű lesz), de azon kapom magam, hogy igazából sehol nem írnak arról hogy kell programozni.
Vannak példaprogramok, meg van API referencia és hardveres referencia is. De nem találtam még kezdőknek szóló tutorialt. A legtöbb írás addig terjed, hogy hogy kell felrakni a fejlesztőkörnyezetet és hogy kell feltölteni a Hello World példaprogramot. De azt nem, hogy hogyan írjak programot.
Erre vmi útmutató?
Köszönöm! -
Tankblock
aktív tag
Hallo,
Valaki esetleg ESP32 programozik ESP-IDF el?
Lenne egy kérdésem,
ledc re interruptot hogy lehet hozzárakni?ledc_fade_func_install(0);
ledc_isr_register(&ledc_isr_fnc, NULL, ESP_INTR_FLAG_IRAM , NULL);setupban tovább
printf("1. LEDC fade up to duty = %d\n", LEDC_TEST_DUTY);
után amikor az interrput jönne belehal...
for (ch = 0; ch < LEDC_TEST_CH_NUM; ch++) {
ledc_set_fade_with_time(ledc_channel[ch].speed_mode,
ledc_channel[ch].channel, LEDC_TEST_DUTY, LEDC_TEST_FADE_TIME);
ledc_fade_start(ledc_channel[ch].speed_mode,
ledc_channel[ch].channel, LEDC_FADE_NO_WAIT);
}
vTaskDelay()ahol: --> itt ugye nem szabad printF használni, de ha másra cserélem akkor is megpusztul.
void IRAM_ATTR ledc_isr_fnc( void * arg) {
printf("OMG, it is works \n");
} -
Janos250
őstag
válasz
vargalex #7023 üzenetére
És ha a CCOUNT-hoz számolod az időt, amennyit aludni szükséges?
Akkor legalább nem összegződnek a hibák. Bár nem tudom, hogy deep sleepben inkrementálódik-e, soha nem próbáltam.
Azoknak, akiket még esetleg érdekel a CCOUNT használata,de nem ismerik, ESP32-re egy minta:unsigned elozo = 0 ;
void setup() {
Serial.begin(115200) ;
Serial.println(" xthal_get_ccount() ");
}
void loop() {
unsigned a = xthal_get_ccount();
Serial.print(" xthal_get_ccount() erteke = ");
Serial.println(a);
Serial.print(" kulonbseg = ");
Serial.println(a - elozo);
elozo = a ;
delay(1000);
}kiírás:
xthal_get_ccount() erteke = 1927227995
kulonbseg = 240000000
xthal_get_ccount() erteke = 2167227995
kulonbseg = 240000000 -
fpeter84
senior tag
Mi értelme ennek az RF-es túlbonyolításnak? Miért nem külső RTC ami az INT lábával adott időben ébreszti? Egy DS3231 fillérekből kijön, a fogyasztása cirka zéró, évekig elmegy egy 2032-es elemről - adott esetben az elem akár el is hagyható, a cellára közvetlenül rá lehet kötni a vbat bemenetét...
(Mondjuk ezt alapból tudnia kellene az ESP-nek a belső RTC-vel is - tartok tőle csak szoftveres oldalról nincsen meg hozzá a megfelelő támogatás)
-
gyapo11
őstag
válasz
vargalex #7023 üzenetére
Jó nagy tekercsek kellenek a passzív vevőhöz, az egész szoba körül, de elvileg megoldható. De ha van vezeték, akkor már elviheted az esp-ig, és akkor van táp, nem kell az akkus spórolás. Igazából az egész házat kellene körbekerülni a tekerccsel, és akkor akárhol lehet a mérőpont.
Viszont ha van RTC-d az esp mellett, akkor azzal nem lehet 10 percenként alarmot generálni az ébresztéshez? Vagy ha az nincs, akkor egy oszcillátor meg egy számláló cmos ic-kből. -
vargalex
félisten
Sziasztok!
Kis ötletelésre / tapasztalatra lenne szükségem.
Úgy gondoltam, hogy ledobok (még) néhány ESP8266-ot DS18B20-al a lakás különböző pontjaira. Ezek nem feltétlenül olyan helyen lennének, ahol elérhető valamilyen konnektor, így akkus táplálásra gondoltam. Ezt 18650-es cellákkal, HT7333-al fogom megvalósítani. Hőmérséklet olvasás percenként történik (akku feszültséggel együtt). A minél hosszabb akkuidő biztosítása miatt az ESP-t 2 mérés között deep sleep-be teszem, a wifi kapcsolatot csak 10 mérésenként építem fel, így a közben mért eredményeket RTC memóriában tárolom. A kódot megírtam, szépen működik minden.
Egyetlen problémám van, amivel úgy tűnik, hogy senki nem foglalkozik (legalábbis, amilyen deep sleep megoldásokat találtam). Ez pedig az, hogy az összes megvalósításban egyszerűen fix időtartamig küldik deep sleep-be az eszközt. Nekem viszont az kellene, hogy fix időközönként történjen meg a mérés és küldje a post-ot a szerverre. Ezt próbáltam megoldani úgy, hogy a szükséges deep sleep időből levonom az indulás óta eltelt időt (a micros() függvénnyel). Több kevesebb sikerrel megy, de úgy tűnik, hogy a deep sleep időzítése sem teljesen korrekt (mintha kevesebb idő telne el, mint kellene). Most éppen valamilyen korrekciós tényezővel próbálom még szorozni, de ugye a kód futása sem mindig pontosan azonos ideig tart (jellemzően a DS18B20 inicializálása és kiolvasási ideje ingadozik valamennyit).
Be lehetne még kavarni az NTP-t, de ahhoz vagy minden kiolvasásnál mégis csatlakoznom kell a wifi-hez, vagy csak 10 percenként a post-ot tudom szinkronizálni valamilyen egzakt időponthoz. Viszont a wifi folyamatos felébresztése nyilván növeli a fogyasztást (a wifi modul bekapcsolása és a nem deep sleep-ben töltött idő jelentős növekedése miatt is).Bármilyen ötletet várok.
-
válasz
Victoryus #7021 üzenetére
A Wemos D1 az direkt olyan kialakítású, mint az UNO, a shield-ek elvileg kompatibilisek, leszámítva, hogy a csatlakozósor legtöbb lába nincs bekötve, mivel ugye az esp-nek kevesebb a kimenete. Tehát csak azokat a lábakat tudod használni. Na meg persze a táp is különbözik, mert az esp-nek 3v3 kell.
-
Esp32 lappal is lehet használni a shield v5-öt meg a motorvezérlőt?
-
Dalee
aktív tag
Probálkoztam ESP8266-on time server használatával (NPT client library). A könyvtár csak az időt, illetve az epoch időt szolgáltatja. A dátum megállapításához szükséges, hogy az epoch idő átalakításra kerüljön év, hónap, napra. Ehhez találtam egy könyvtárt, mely több forrásfájlt tartalmaz (Time.h, Time.cpp, TimeLib,stb...).
A sketch/library-ban létrehozva Time könyvtárt, az include <TimeLib.h> nem találja a TimeLib.h-t.
Hogy lehet a program számáta láthatóvá tenni egy könyvtár különböző nevű, a könyvtár nevével nem egyező fájlokat?
-
csubuka
addikt
válasz
csubuka #7002 üzenetére
Az elején tesztüzemben amúgy egy sima DS18B20 hőmérséklet szenzor alapján akarom változtatni a fordulatot, azt könnyen tudom ellenőrizni a való életben akár kézbe vétellel.
Ámde amin agyaltam, hogy ez a 0-10V PWM vagy analóg kimenet szabályzásra elég gyakori. Ventik meg LED akármiknek is ilyen kell. Nincsen erre egy már kész panel, ami rámegy az Arduino 5V PWM kimenetére vagy az ESP3.3V-os PWM kimenetére és az alapján előállítja a kimenő jelet a kívánt 0-10V sávban?
*Nem abszolút célom elmerülni az elektronika részében, bár kétségkívül érdekes ez és hasznos. De limitál az idő és a fontos a működő rendszer és a sikerélmény lenne
-
csubuka
addikt
válasz
gyapo11 #7001 üzenetére
Köszönöm szépen válaszod!
A bemenő PWM jelszint okés, 3.3V-os. Azzal nincs gond. A frekije kérdéses.
A kimenet PWM feszültségszintjének növeléséhez viszont akkor utána kell néznem, hogy mi kell.
(#6998) aryes: Valóban ez így a ki-be kapcsolást megoldaná kellemesen, de azért azzal is lehet spórolni, hogyha mindig a kellő intenzitással kapcsol be a rendszer és nem maxira pörgetve. Maxin kicsit túl nagy sebeséggel jön a friss levegő amúgy, szóval az nem teljesen kellemes.
Főleg ha csak pár ember kerül be, akkor kicsit túltolná a maxi fordulattal a dolgokat a szellőzés. De az totálisan igaz, hogy így mondjuk éjszakára leállhatna a rendszer szépen, szóval a vezérlésben nem árt ennek is szerepet adni. Mondjuk ugyanakkor ha nincs bent ember, akkor szépen beállítja a megfelelő CO2 szintet és mivel nem lesz mi eltolja ezért magától lekapcsol.
(#7000) Gergosz2: Természetesen, három szenzor opció van.
1) Az első CO2, ami képes 0-4V analóg jelet is szolgáltatni (UAET és PWM mellett). Arduino-val ez lehet, hogy okésabb. A PWM jel feldolgozása akár nehezebb is lehet, mint ezé. De az ESP csak 0-1V között tud analóg-digitális konverziót aszsem, szóval az nem adja, komplikáltabbá tenné a dolgot feleslegesen.
2) CO2, ami UART vagy PWM jelet tud kiadni. A PWM frekije számíthat a dolog egyszerű vagy bonyolult megítélésében. Ugyanakkor lehet az UART lenne a legkorrektebb megoldás.
3) Mindenféle gáz érzékelő (VOC), I2C kapcsolattal. Bár ilyen szűk helyen sok embernél a CO2 lenne a leginkább releváns "szennyező". Ennyi erővel akár páratartalomra is rá lehetne menni, csak érdemesebb a legrelevánsabbra vagy a legolcsóbbra, de azért nem olyan egetverő összegek ezek
-
fpeter84
senior tag
Játszott e már itt valaki valamelyik bluetooth 4.0 modullal BLE observer módot? Hiába guglizok, nem találtam egyelőre olyat hogy bármelyik modul/chipset speciális firmware nélkül egyszerű AT paranccsal BLE observer módba váltható lenne és ha broadcast-et hall akkor kiírja amit vett... Nincsen párosítás, oda-vissza kommunikáció. Az adó időnként küld egy broadcast-et és ha valaki hallja akkor azt tesz vele amit akar...
Vettem egy ilyen TPMS készletet (beépített verzió) és ennek a működését térképezem fel, hogy ne csak a saját androidos szoftverével lehessen használni, hanem pl egy otthoni szerver tudja venni a riportjait induláskor/érkezéskor, és küldhessen egy figyelmeztető emailt ha anomáliát érzékel...
Linux alól bluez stack-el már sikerült megoldanom. Találtam egy python wrappert a bluetoothctl-hez, amivel tökéletesen sikerült dekódolnom a mért nyomás, hőmérséklet, elemállapot és hirtelen nyomásvesztés adatmezőket, de ha lenne olyan pár $-os BT 4.0 modul amivel meg tudom ugyanezt valósítani AT parancsokkal, akkor lehet megírnám ESP-re is ugyanezt...
Vagy lehet rossz kulcsszavakkal keresek? Az observer/broadcaster helyett más kifejezésre kellene vadásznom?
-
csubuka
addikt
válasz
Gergosz2 #6994 üzenetére
Köszönöm a választ Neked is!
A CO2 szenzor 0-2000ppm között méri a szén-dioxid koncentrációt a levegőben. Ennek függvényében kiad magából PWM jelet, valamint UART kommunikációt is képes folytatni, hogy elárulja az éppen mért értéket.
Nem nagyon vannak alkatrészeim, sem tudásom arra, hogy erősítőt hozzak létre sajnos. Inkább az Arduino-programozós irányba mennék el, ott csak a tudás hiányzik
. Akár ESP-n is ha meg lehet oldani, akkor jöhet
Van az is.
A problémáim ott lennének, hogy hogyan lehet a kimenet PWM frekijét babrálni pl. Illetve feldolgozni a bejövő PWM jelet, aminek xy frekije van. Valamennyi külső kapcsolást akkor mindenképpen építeni kell majd eszerint...
(#6996) Vladi: A helyzet pikantériáját mi sem jelzi jobban, minthogy olyat nem szabad tenni. A nyitott ablak egyrészt ugye üzleti titok kiszivárgását eredményezheti
Komolyan. Sajnos. Valamint valami jogszabályi baromság is van, hogy miért nem lehet azon az oldalon nyitható ablak, ami már csak hab a tortán.
-
csubuka
addikt
Sziasztok!
Egy kis segítséget szeretnék kérni egy Arduino-val létrehozott szabályzó kérdésében.
Egy EC motoros (állandó mágneses rotor, elektromosan kommutált DC) által hajtott levegő ventit kellene szabályozni (a fordulatszámán keresztül a szállított friss levegő térfogatáramot) egy szoba CO2 koncentrációjának egy értéken való tartására. PI szabályzó szükséges gondolom.
Erre abszolút vannak gyári megoldások, annak függvényében lenne érdemes használni azokat, hogy szerintetek mennyi idő egy ilyet összepakolni egy Arduino-n vagy ESP-n? Magának a CO2 szenzornak PWM vagy UART kimenete van...
A venti fordulatszáma 0-10V-os analóg jellel vagy PWM jellel szabályozható.
Köszönöm a segítségeteket előre is :-) Hátha nem elvetendő ötlet, mert izgalmasan hangzik.
*Egy parának az biztos jelen van, hogy 10V-os PWM jelet kell kimenetnek előállítani.
-
Janos250
őstag
Nem tudok róla sokat, mert végülis nem használom (mire begyakorlom , addigra megírom a C++ programot is, és az azt csinálja, amit én akarok.)
Itt van róla egy ábra:
https://www.survivingwithandroid.com/wp-content/uploads/2016/10/mqtt_publisher_subscriber-1.png
innen:
https://www.survivingwithandroid.com/2016/10/mqtt-protocol-tutorial.html
Olyasmi a hardvereknek, mint egy fórum az embereknek.
Van egy központi szerver, a hardverek (pl. arduinoval ellátott szenzorok, stb.) neki küldik a továbbítandó adatokat.
Ennek a szervernek a neve "MQTT Broker"
Aki küldi, az a "Publisher".
A "Broker" továbbküldi az adatokat a bejelentkezett telefonokra, számítógépekre, vagy arduinokra. Az ő nevük "Subsciber".
Hogy melyiknek küldje, annak a szűrésnek "topic" a neve. (Mint az embereknél, hogy ki melyik topicra íratkozott fel)
MQTT Brokernek főként a málnát ajánlják, arduinos verzióról nem tudok. Rajta futó szoftverként ajánlják többnyire a "Mosquitto"-t.
A "Subsciber" lehet pl. telefonon egy androidos MQTT kliens.ESP32: Publishing messages to MQTT topic:
https://techtutorialsx.com/2017/04/24/esp32-publishing-messages-to-mqtt-topic/
How to use Arduino ESP32 MQTTS with MQTTS Mosquitto broker:
http://www.iotsharing.com/2017/08/how-to-use-esp32-mqtts-with-mqtts-mosquitto-broker-tls-ssl.html
How to use MQTT and Arduino ESP32 to build a simple Smart home system:
http://www.iotsharing.com/2017/05/how-to-use-mqtt-to-build-smart-home-arduino-esp32.html -
Tankblock
aktív tag
válasz
S.Milan #6977 üzenetére
Hello,
nincs mit, használd egészséggel.
A relével meg óvatosan, főleg ha AC kapcsolgatsz vele.Elsőre nem értettem a problémádat, és úgy látom mobilról nem jó ötlet válaszolgatni, mert nem láttam át a kódot egybe.
HW ismeret sosem árt. Anno ESP-01 volt néhány órám rájönni, hogy mit lehet és mit nem.... -
S.Milan
csendes tag
Sziasztok,,
Wemos D1 mini-t használok relé vezérléshez.
A problémám az lenne, hogy amikor áramszünet van és a Wemos újraindul akkor minidig behúzza a reléket.
Olyan mintha végig ellenőrizné hogy minden láb működik e.A becsatolt programkód, jól működik.
Van erre vala mi megoldás, hogy ne működtesse a relét újraindítás után?
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#define CONTACT1 4
#define RELAY1 2
#define RELAY2 0
int prevState1;
char ssid[] = "test"; //SSID of your Wi-Fi router
char pass[] = "test1"; //Password of your Wi-Fi router
IPAddress server(192, 168, 1, 136);
const char *inTopic = "domoticz/out";
const char *outTopic = "domoticz/in";
const char *onmsg1 = "{\"idx\" : 3,\"nvalue\" : 1 }";
const char *offmsg1 = "{\"idx\" : 3,\"nvalue\" : 0 }";
const char *onmsg2 = "{\"idx\" : 4,\"nvalue\" : 1 }";
const char *offmsg2 = "{\"idx\" : 4,\"nvalue\" : 0 }";
void callback(char* topic, byte* payload, unsigned int length) {
Serial.print("Message arrived [");
Serial.print(topic);
Serial.print("] ");
for (int i=0;i<length;i++) {
Serial.print((char)payload[i]);
}
Serial.println();
if((char)payload[0] == '3') {
digitalWrite(RELAY1, LOW);
delay(500);
digitalWrite(RELAY1, HIGH);
}
if((char)payload[0] == '4') {
digitalWrite(RELAY2, LOW);
delay(500);
digitalWrite(RELAY2, HIGH);
}
}
WiFiClient espClient;
PubSubClient client(espClient);
void reconnect() {
// Loop until we're reconnected
while (!client.connected()) {
Serial.print("Attempting MQTT connection...");
// Attempt to connect
if (client.connect("espClient")) {
Serial.println("connected");
// Once connected, publish an announcement...
client.publish(outTopic,"Az espClient-nek sikerült csatlakozni az MQTT szerverhez");
// ... and resubscribe
client.subscribe(inTopic);
} else {
Serial.print("failed, rc=");
Serial.print(client.state());
Serial.println(" try again in 5 seconds");
// Wait 5 seconds before retrying
delay(5000);
}
}
}
void setup() {
pinMode(CONTACT1, INPUT);
pinMode(RELAY1, OUTPUT);
pinMode(RELAY2, OUTPUT);
digitalWrite(CONTACT1, HIGH);
digitalWrite(RELAY1, HIGH);
digitalWrite(RELAY2, HIGH);
Serial.begin(115200);
delay(10);
// Connect to Wi-Fi network
Serial.println();
Serial.println();
Serial.print("Connecting to...");
Serial.println(ssid);
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("Wi-Fi connected successfully");
client.setServer(server, 1883);
client.setCallback(callback);
}
void loop() {
int curState1 = digitalRead(CONTACT1);
Serial.println(curState1);
if (!client.connected()) {
reconnect();
}
if (curState1 != prevState1){
prevState1=curState1;
if (prevState1 == LOW){
client.publish(outTopic, offmsg1);
client.publish(outTopic, offmsg2);
}
if (prevState1 == HIGH){
client.publish(outTopic, onmsg1);
client.publish(outTopic, onmsg2);
}
}
client.loop();
} -
szabifotos
senior tag
válasz
Janos250 #6912 üzenetére
Köszönöm mindenkinek a segítséget. Tehát PI+ router helyett elég egy harmadik ESP, amin webszerver fut, és erre kapcsolódunk telefonnal, hogy lássuk az állást.
Én úgy képzelem, hogy amint bekapcsoljuk a klienseket, azok felcsatlakoznak, és automatikusan kiíródik a versenyzők neve a html oldalon a számokkal. Így megoldható lenne, hogy azonosítható az oldalról, hogy ki játszik, nem csak #versenyző1 #versenyző2 lenne.
A jelküldés hogyan oldható meg? pl. Nyomás történik A0 bemeneten, akkor html kéréssel léptet egy számot az oldalon. Valami ilyesmi kellene...
Nem mondom el mihez kellene pontosan, de nem is jut eszembe milyen projektben használhatnak hasonlót, hogy példa kódot keressek
-
Tankblock
aktív tag
válasz
Janos250 #6942 üzenetére
Hello,
Ha lenne annyi időm... már nem lenne
[link] de van akinek sikerül...
Maradtam a jó öreg Raspi 3 Mosquitto / Nodered párosnál, s ha már itt tartunk akkor a SonOff Touch egyet be is üzemeltem ma.
Alexa köszöni jól el van, szobában a fő villany már szépen kapcsolható web/Alexa/touch alapon....
esp32 nél a freeRtos vagyok úgy hogy jó lenne minden részét végigpróbálni, de a TaskNotify még nincs kész. Talán a hétvégén marad némi felesleges időm....
-
Köszönöm! Egyelőre csak gondolkodok/tervezgetek, amíg nincsenek itt az alkatrészek. Úgy néz ki rendelek akkor egy esp32-es vezérlőt is.
Végül is most 4 tervem van csak: hőmérés+kijelzés, led szalag vezérlése karácsonyra, led mátrix vezérlése feliratokkal, 1-2 guruló robot amit lehet távirányítani, aztán majd szumó.
Végül is tényleg túlgondoltam, mert annyi elég, hogy maradjon bent a körben, érzékelje hol a széle, és ha talál valamit maga előtt tolja ki. -
Janos250
őstag
válasz
Tankblock #6927 üzenetére
Ha már itt tartunk!
MQTT brokert telepítettél már ESP32-re?
Korábban, mikor néztem, nekem nem sikerült találnom, mindenütt a mosquittot ajánlották, de az meg - ugye? - nem megy ESP-n?
Ezért én félre is tettem a dolgot, és maradtam egy egyszerű server/client megoldásnál, pedig nálam is egy központi szerver van, ami tulajdonképpen a broker szerepét játssza, a topicok pedig valahol vannak.Hogy miért ragaszkodom az ESP-hez? Csak!
-
Janos250
őstag
válasz
Victoryus #6932 üzenetére
Mindkettőben van.
Én az ESP32-t javasolom mindenkinek. Nem sokkal drágább, viszont több szabad GPIO van. Továbbá a két mag se hátrány, mert a user programja önállóan fut egy magon, a rendszeré meg a másikon, ha nem variáljuk át.Na, közben látom, már kaptál jó választ, amivel én is egyetértek.
-
Tankblock
aktív tag
válasz
Victoryus #6932 üzenetére
1 szavazat az ESP32 re, ha minnéél kevesebb komponensből szeretnéd megoldani.
OKok:
sokkal töb GPIO lába van mint a ESP8266 nak, 2 core így nem kell yield() szórakozni.
Elegendő számítási kapacítása van hogy kiszolgáljon.
Bluetooth is van ráadásként....Vagy SMT32 ből és egy Wifi ESP8266 a kommunikációhoz , de ezt nem biztos, hogy én választanám.
Vagy Esetleg egy sima ESP8266 ha kell GPIO extenderrel ha kell.
Kérdés, mit szeretnél, mennyi GPIO lábra van szükséged. Javaslatom előszöt nézd meg mennyi szenzort szeretnél használni, milyen modulokat, hol lehet egyszerűsíteni (pl I2C több modult felrakni) és az alapján válasz ha megvan a system design......
SzerK: Ultrahang szenzor nem lát részleteket, a legközelebbi viszhangot tudod detektálni. arra kamera kell Rasperry Pi pl elegendő számítási teljesítménye van erre.
Sima LED Mátrix vezérlésre a ESP8266 is elegendő....
-
Melyik az a kütyü, amiben van alapból wifi és arduino kompatibilis? ESP8266? Illetve van esetleg ami jobban megérné? Esp32?
2 robotot építenék, amik lehetnek távirányítósak, vagy lehetnek "önállóak", és mondjuk egy körből kéne kitolniuk egymást, mintha szumóznának.
Ha szumó lesz, akkor honnan tudja az egyik robot, hogy a másiknak éppen melyik részét támadja? Nyilván könnyebb lenne kitenni az ellenfelet ha oldalba kapja, mint ha szembe. Lát az ultrahang szenzor részleteket?
A másik amire még használnám, led matrix vezérlésére, és wifin kapná meg amit ki kéne írni. Ez gondolom lehetséges.
Egyelőre még mindig csak a 2 motoros kisautós készletem van meg, a másik pakk bolyong valahol már egy hónapja, így nem haladtam előre... -
Janos250
őstag
Eléggé elkanyarodtunk az eredeti témától, vagyis, hogy a telefonnak kell-e sűrűn pollozni, vagy a szerver magától is tud adatot küldeni, ha változás van. Az elnevezés számomra másodlagos, tehát akkor szerver és kliens szavak nélkül így fogalmaznék:
Ha az ESP-n létrehozok a WiFiServer osztálynak egy példányát (ne nevezzük szervernek, hanem mondjuk kiskutyának), akkor egy másik ESP-n meg a WiFiClient osztálynak létrehozok egy példányát (ne nevezzük kliensnek, hanem mondjuk kismacskának), akkor, ha a kiskutya változást érzékel, anélkül is tud adatot küldeni a kismacskának, hogy kismacska pollozna.Persze ebből az egész eszmefuttatásból szabifotos - a kérdező - egy fikarcnyit se profitál.
Ő legtöbbet Tanblock hozzászólásából profitálhat:
https://prohardver.hu/tema/arduino/hsz_6927-6927.html -
válasz
Janos250 #6923 üzenetére
A telnet más tészta, mint a http kapcsolat.
De ha arról akarsz meggyőzni, hogy az esp-n fut egy telnet szerver, és te egy telnet klienssel bejelentkezel rá pc-ről, akkor ezek után az esp kérés nélkül tud adatot küldeni a pc-re a telnet kliensnek, akkor arra csak azt tudom mondani, hogy egy fenét.Ugyanis a kérés a kliens felől akkor kezdődik, amikor bejelentkezel vele a szerverről, és akkor zárul, mikor kijelentkezel. Ha te kijelentkezés után is tudnál az esp szerverről adatot küldeni a pc-s kliensre, oly módon, hogy a célgépen elindul a putty, és felépül a telnet kapcsolat,
akkor lenne igazad. De fogadjunk, hogy erre még Te sem vagy képes. -
Janos250
őstag
Akkor ha pl. PC-ről belépsz egy telnet szerverre mondjuk putty-al, és küldesz oda adatot, akkor a Te géped lesz a szerver, és a "szerver", amihez csatlakoztál, az lesz a kliens? És ha a "szerver" küld adatot valamelyik kliensre, mondjuk egy másik putty-ra, akkor ki a szerver, és ki a kliens. Lehet a nomenklatúrán vitatkozni, de egy biztos: ha ESP-n létrehozok egy szerver objektumot (WiFiServer szerveremNeve(port)), arra be lehet jelentkezni távolról kliensként, és a szerver a bejelentkezett kliensekre kérés nélkül tud adatot küldeni. Ha nem hiszed, felrakok ideiglenesen egy ilyen szervert, belépünk mindketten putty-al, vagy mással, én gépelek, és Te megkapod, anélkül, hogy kérnéd. Mondom, nevezhetjük bárminek, de ennek Arduinon szerver a neve.
-
Janos250
őstag
Rendben, legyen, nekem aztán tökmindegy.
Én éppen hogy nem arra gondoltam, hogy "néhány plusz klón UNO vagy NANO megvásárlásával", hanem, hogy miután a legalapabb dolgokat megtanulta, "elhajítja" ezt az olcsó kitet, és áttér ízlése szerint valamelyik korszerűbbre (pl. STM32, ESP), amik gyakorlatilag nem, vagy alig drágábbak, és ahhoz vesz valami szenzor készletet, szervo-, léptető motort, meg ilyesmit. Egy 12ezres készletben természetesen több minden van, azzal sokkal messzebbre jut. Vannak persze, akik "végleg" maradnak az UNO szintjén, az is egy verzió, azzal is nagyon sok mindent meg lehet csinálni, bár néha csak tótágast állva. Viszont a linkelt "UNO R3 Prototype Shield" lapot akkor is jónak tartom UNO-hoz.
Ez az én véleményem, másé meg más. -
Janos250
őstag
válasz
szabifotos #6907 üzenetére
Én is az ESP-t javasolom:
1. verzió:
2 db. ESP. router nélkül.
Egyik ESP csak állomás, másik AP (vagy is)
Az állomás bejelentkezik a másikra, mint AP-re, és küldi az adatokat.
Az AP számol, és egy szervert (azon egy WEB szervert) futtat, ami küldi a pillanatnyi állást.
A frissítés gyakoriságát Te állítod be
(<meta http-equiv=\"refresh\" content=\"5 url=http://192.168.4.1\">) ez pl. 5 secenként frissít.2. verzió:
3 ESP.
Egy AP, a másik kettő állomás, ők küldik az adatokat az AP-n lévő szervernek, az feldolgozza, és futtat egy WEB szervert, ami kiszolgálja a bíró bácsit.3. werzió:
Az előzők bármelyike azzal a különbséggel, hogy mindenki csak állomás, de van egy router, arra kell bejelentkezni, és azon keresztül történik a kommunikáció. Ez szükség esetén interneten keresztül távoli elérést is biztosítAz írásról, olvasásról itt
https://prohardver.hu/tema/arduino/hsz_6890-6890.html
írtam pár sort.Hány kliens kapcsolódhat?
Nekem az ESP8266-on 3 simán ment, 4 döglődött, 5 pedig egyáltalán nem ment.
ESP32-n 8-ig próbáltam, addig hiba nélkül ment.
Én többnyire ESP32-t használok akkor is, ha nem kellene, mert a múltkor egy akciónál 1100 Ft-ért vettem párat, most el vagyok látva. -
válasz
szabifotos #6910 üzenetére
Én mindenképp dedikált eszközt készítenék. Vagy vegyél egy mobiltelefont, amit csak erre használsz, és odaadod a bíró kezébe, de ugye az is dedikált eszköz.
Nyilván nem az ő telefonját fogod használni, kivéve, ha ő is szeretné, és mondjuk a play-ről tölthető appot csinálsz, vagy ugyanaz a bíró többször is képbe kerül.
Most már mondd el, mi ez a verseny.
Ha html felület lenne, lehetne a te telefonod a router, és a bíró is arra csatlakozik, de ahogy szó volt róla, a html erre szerintem lassú. Esetleg valamilyen ajax-os megoldás lehetne, ha már webes felület, vagy HTML5 push, de erre megint nem tudom, hogy alkalmas-e az esp. -
szabifotos
senior tag
Mármint feleslegesen erős oda? Minimum kettő, mert ugye két versenyző. Távolság passz. Átlagos wifi térerő elég lenne. Bár láttam külső antennás esp-t is valahol...
Lehetne dedikált eszköz is, saját kijelzővel de haladjunk a korral. Ma már minden okos telefonra hangolható. Ezért gondoltam, hogy helyi webszerver és telóról mehetne. Szervernek megintcsak azért nem jó telefon, mert nem felhasználóbarát. "Figyeljen bíró bácsi: átalakítjuk a tlóját szerverré, addig tessék ide adni. "
Csak a kezébe nyomni és működik felcsatlakozás után.Hmm.. lehet lassú a html, mire reagálna. Próbáltam már relét kapcsolni. ott is kellett kb. 3sec a reaction-re.
Akkor hogyan gondoljam újra az egészet? -
válasz
szabifotos #6907 üzenetére
A pi szerintem eléggé overkill erre a feladatra, én szervernek is inkább esp-t használnék, valamilyen lcd kijelzővel, bár nem tudom, router nélkül hány kapcsolatot tud kezelni. Nem írtad mekkora távolságot kellene áthidalni, mennyire kell bővíthetőnek lennie.
Ha router kellene, azt szerintem egy mobiltelefonnal ki lehet váltani, illetve maga a telefon is lehetne a szerver. -
szabifotos
senior tag
Sziasztok!
A következőt tervezgetem. Játékállást kell számolgatni. Pontosabban Digital pineken beérkező jelekre számoljon egy counter, wireless.
A terv: 2db NodeMcu esp modul csatlakozik egy helyi hálón AP-re (router vagy RasPi) és egyik versenyző az egyik modul, másik a másik. Az állást egy webszerveren látnánk pl.
0 .............-........ 0
Kis Pista ........ Nagy Janinulláz, gombok stb mondjuk egy html felületen.
Mindezt el lehetne érni telefonról, vagy akár külön Pi modullal dedikált "bírói" eszközt csinálni neki.
Node ESP+ mondjuk MQTT+ Pi? Vagy tenyérnyi router?
hogyan oldanátok meg? Esetleg valakinek van hasonló kódja példának? -
Janos250
őstag
"Át lehet méretezni, azaz, hogy több legyen a program memória és kevesebb az SPIFFS?"
Elvileg az IDE-ben be lehet állítani, de soha nem próbáltam, hogy tudja-e kezelni. Háttértárként (tehát adatokat fájlba írni rá, és olvasni) kezelni biztosan tudja a maradékot, próbáltam, kényelmes. Ugyanúgy történik a fájl kezelés, mint a szokásos. (megnyitjuk, írjuk vagy olvassuk, bezárjuk)
"Másik kérdés, hogy lehet a legegyszerűbben interneten keresztül adatot (byte szinten) küldeni és fogadni az ESP8266 és egy számítógép között (a számítógépen is C++ programot írnék)?"
Az ESP-n pl. így(a lényege):
WiFiServer EnServerem(port);
WiFiClient serverClientAmirolOlvasunk;
WiFiClient serverClientAmireIrunk;olvasás:
len = 0;
while(serverClientAmirolOlvasunk.available()) {
len++;
sbuf[len-1] = serverClient.read();
} ;Írás:
serverClientAmireIrunk.write(sbuf, len);PC-n nem tudom, de a PC-n az így küldött adatokat putty tudja fogadni, illetve oda ha ír, azt az ESP olvassa.
PC ügyben majd a windows hozzáértők válaszolnak. -
Dalee
aktív tag
ESP8266 ESP12E lapon van 4 MB flash. Alapból Arduino IDE 1 Mb-ot lát belőle program memóriaként. Át lehet méretezni, azaz, hogy több legyen a program memória és kevesebb az SPIFFS?
Másik kérdés, hogy lehet a legegyszerűbben interneten keresztül adatot (byte szinten) küldeni és fogadni az ESP8266 és egy számítógép között (a számítógépen is C++ programot írnék)?
-
válasz
fpeter84 #6881 üzenetére
Ha kültéren, hidegnek lesz kitéve, szerintem a két AA jobb megoldás, mint a li cella, utóbbi ha jól tudom nem szereti a mínusz fokokat.
Az esp konverter nélküli megoldást próbáld ki, hátha működik, én az 5V-os UNO lappal kísérleteztem, 3V-ról még szervókat is tudok mozgatni. -
fpeter84
senior tag
válasz
Janos250 #6880 üzenetére
Feltételezem a rajta lévő kapcsüzemű táp + AMS1117-nél lehet sokkal jobb üresjárati áramú tápot kreálni hozzá. Azt még nem álmodtam meg, hogy 2xAA elemről vagy 1x3.7V Li akkuról menjen e... Annak még utána kell nézni/ki kell próbálni hogy mit szólna az ESP a táp nélkül közvetlenül két AA elemről járatáshoz - gondolok itt a kicsit gyengülő elem állapotra, hogy meddig képes stabilan elindulni még róla. Ha pedig Li akku, akkor kell elé egy 1 fokozatú táp (nem kell 5V), aminek a létező legkisebb az üresjárati pazarlása...
Közben már keresgélek, de konkrét választ még nem találtam a mAh/várható készenléti állapot kérdésre... Régebbről rémlik egy videó, ahol az illető gombelemről járatta az ESP-t, és mintha közel 1 hónapos készenlét lett volna a konklúzió. No ezzel ki tudnék egyezni, akkor két AA-ról járatva nem kellene túl gyakran elemet cserélni
-
Janos250
őstag
válasz
fpeter84 #6878 üzenetére
A Wemos miért ne lenne jó?
Készenléti időről nem tudok mit mondani, mert én a gyakorlatban állandóan bekapcsolva tartok mindent, mert a hozzá kapcsolt áramkör egyébként is sokat zabál, ahhoz az ESP fogyasztása már nem számottevő.
A szerver épületben van, egy router mellett. Az állomások pedig mobiltelefon megosztott WiFijén keresztül kapcsolódnak a nethez, mert emberke hordozza.Így az altatás/ébresztés is csak elmélet nálam.
-
gyapo11
őstag
3-5 ezer Ft-ért lehet venni az ebayen valami pic-es modult, ami kvázi szkópként is használható, az analóg bemenetén leméri a feszt és az usb-n át a pc folyamatosan olvassa. Talán pár kHz-et írtak, most nem néztem utána. Szerintem ezt még az arduino is bírja.
De szerintem akár olcsóbban és jobbat is lehetne találni. Mit ajánlanátok? Arduinoból is vannak gyorsabbak, vagy az esp is 80 Mhz-es, csak nem tudom van-e analóg bemenete, vagy valami stm-es modul, pl. ez 3.75 $-ért, bár ez csak 72 MHz-es.
Szóval max 4000 Ft, minél gyorsabban tudja küldeni a mérési eredményeket. A virtuális soros portnak gondolom maxon kell járnia, vagy szóba jöhet a ramban tárolás, és onnan áttöltés, ehhez elegendő méretű ram kell a processzorban. -
fpeter84
senior tag
Köszönöm a tippeket!
tvamos: úgynézem ez a Ti platform elég borsos árú - jobban preferálom a filléres kínai megoldásokat - ahogy nézem a kész dev cuccok 30-40$-tól tartanak a csillagos ég felé... A referencia nyákterve pedig elég összetett ráadásul QFN IC-vel, így a hobbi projektekből kiesik...
ESP: no erre nem is gondoltam alacsony fogyasztású alternatívaként... Van Wemos D1 R2-ből és több - ez gondolom kevésbé alkalmas a célra - de van natúr ESP12 modulból is pár itthon. Meg van OpenWrt-s routerem is a házban, szóval adhatja magát a dolog, hogy az legyen a szerver... Milyen készenléti időt sikerült eddig elérni vele, ha csak pár percenként jelentkezik be? Interrupt-ra fel tud éledni alvásból, ha esemény van körülötte és jelentenie kellene?
-
Janos250
őstag
válasz
Gergosz2 #6876 üzenetére
Mindent a megfelelő helyre!
Van, amihez külön arduino lap is kell, de az ESP-hez nem kell, mert ő egyben az is.
Power:
Energiatakarékosságot minden rendszeren csak altatással lehet elérni. Hogyan néz ez ki ESP esetén?
Van egy ESP, szenzorral, és pici elemmel. Az élete zömében altatjuk, csak időnként ébresztjük fel annyi időre, hogy beolvassa a szenzor adatát, és elküldje.
Na, de biztos, hogy akkor a másik fogadni tudja? Itt jön a WiFi előnye.
Biztosan van a közelben egy olyan hely, ahol van elég energia és hely. Oda telepítjük az állandóan ébren lévő ESP-t. Ő fogadja az éppen felébredt adatgyűjtő adatait,
és amikor az az állomás felébredt egy pillanatra, akinek az üzenet szól, az megkérdezi az állandóan ébren lévő szervert, hogy küldött-e valaki adatot a számára.
Mivel a WiFi igen széles körben alkalmazott, mindenfélék elég olcsón kaphatók hozzá: routerek, jel erősítők (pl. Mantistek nagyon jó), stb.
Tehát innen kezdve csak ujjgyakorlat és C++ kérdése, hogy mit csinálunk meg.
Természetesen azt is meg lehet csinálni, hogy NRF üzen egy másiknak, és az szórja, vagy ha nem bírja, akkor átrakja más platformra és úgy továbbítja, szórja.Persze mindenki saját maga dönti el, mit csinál, kinek mi a kedvezőbb.
Mi leírjuk a lehetőségeket, ő meg választ. -
Janos250
őstag
válasz
fpeter84 #6873 üzenetére
Pap és papné esete!
Mindenki a saját kedvencére esküszik.
Nekem egy hasonló működik, jelenleg még nem üzemszerűen, ESP-vel.
Be lehet rá jelentkezni telnet jelleggel, és bármelyik kliens által küldött adatot továbbítja az összes többinek, mert nálam épp ez kell.
Egy fogja majd üzemszerűen küldeni, a többi meg várja az adatokat. Lehet putty-al is bejelentkezni, küldeni is, fogadni is.
WEBen meg lehet követni, kik vannak éppen bejelentkezve.Ja, és természetesen arduinoval.
Ha akarod, írsz privátot, és bejelentkezésekkel kipróbálhatod interneten keresztül.
-
vargalex
félisten
Az ESP8266 bármelyik PIN-jét használhatod I2C-re (is). Csak default-ban a GPIO4, illetve GPIO5 az sda/scl.
-
Dalee
aktív tag
A NodeMcu ESP8266 EPS12E tartalmaz ugye 4 MB flasht.
Ezért gondolom az SPI pineket nem tudom felhasználni. Kiestek a soros lábak (Rxd0,txd0), a GPIO0 a programozásnál használatos.
Fentiek alapján jól értelmezem, hogy 8 portot lehet a felül használni:
D0 - GPIO16
D1 - GPIO05
D2 - GPIO04
D4 - GPIO02
D5 - GPIO14
D6 - GPIO12
D7 - GPIO13
D8 - GPIO15Illetve ebben a 8 portban van az i2C busz (GPIO4,5)?
-
Janos250
őstag
válasz
gyapo11 #6854 üzenetére
"nem biztos, hogy ezeket egy gyári appal akarnám egyesével kapcsolgatni távolról. Akkor már kellene visszaigazolás is, hogy megtörtént-e a kapcsolás, vagy volt valami akadály. Volt-e áramszünet, resetelt-e valamelyik eszköz. Inkább rábíznám ezt egy arduinora "
Én is ezt próbáltam gagyarászni, csak nem biztos, hogy érthető volt. Ha weben keresztül használod, megvan a visszaigazolás. Pl., ha a lámpa fel van kapcsolva, akkor a kikapcsoló gomb jelenik meg, ill. fordítva.
"Persze ekkor már nem kell sonoff, csak relémodul."
A Sonoff az arduino (ESP8266) + relémodul egy panelra rakva.
"Már a wifiben sem tudnék igazán megbízni. A Tplink router a gyári fw-ekkel pár naponta dobta el a wifit"
Nálam a router működik, bár előfordul néha, hogy a klens arduino lekapcsolódik.
Az általam alkalmozott:
WiFi.setAutoReconnect(true);
illetve:
while (WiFi.status() != WL_CONNECTED ){
// Serial.println("try reconnect");
// digitalWrite(LED_BUILTIN, ledDark);
WiFi.begin(ssid, password );
delay(1000); // min 1000
} -
Janos250
őstag
Itt hivatkoznak egy cikkre, hogy 32Mbitesre cserélte valaki az ESP8266 memóriáját.
Próbált már valaki ilyesmit?
https://prohardver.hu/tema/okos_otthon_smart_home/hsz_937-937.html -
Janos250
őstag
válasz
gyapo11 #6834 üzenetére
"Soros portot hogy érem el? "
Így (első ábrán be vannak jelölve a helyek, oda teszel tüskéket):
https://github.com/arendst/Sonoff-Tasmota/wiki/GPIO-Locations"hogy töltöm át? "
Így:
Sonoffra feltöltés:
GND,VCC, Tx->Rx, Rx->tx bekötve,
Reset gomb benyomva tartva dugjuk be a PC-be az USB csatit.
Tehát a reset gomb nyomva tartása mellett adunk rá tápot.Természetesen a 230-ba ne legyen bedugva, mert mint tudjuk, az a vezeték amiben áram van, ugyanúgy néz ki, mint amiben nincs, csak a fogása más
"Meg az IDE-ben (1.8.0) se találok ESP8266-ot"
IDE-ben:
file/beállítások/További alaplap-kezelő URL-ek -hez beírod:
http://arduino.esp8266.com/staging/package_esp8266com_index.json
Utána látod az eszközök/alaplap/alaplapkezelő felületen
típus összes és látod
utána more info, akkor megjelenik a telepítés gomb
telepíted"Hanem írok egy programot, ami akár időpontokhoz akár más feltételekhez kötve kapcsolgatja a relét."
A loop-ba azt írsz amit akarsz, ugyanúgy, mint bármelyik másik lapnál, amire Arduino alatti programot teszel.
Ez is egy ESP8266, Arduino alatt (is) programozható lap, mint pl. az UNO. -
gyapo11
őstag
válasz
Janos250 #6833 üzenetére
Arra gondoltam, hogy nem webes elérést programozni, az benne van gyárilag. Hanem írok egy programot, ami akár időpontokhoz akár más feltételekhez kötve kapcsolgatja a relét. Azt sem értem, hogy a gyárilag benne levő program nem kavarodik-e össze az általam rátöltöttel. Soros portot hogy érem el, hogy töltöm át? Meg az IDE-ben (1.8.0) se találok ESP8266-ot, még ennek is utána kell néznem. Lehet maradok az arduinonál és a relé modulnál.
-
Janos250
őstag
válasz
gyapo11 #6831 üzenetére
Igen, már többször volt róla szó, de most nem keresgélem, inkább bekopizom, amit magamnak mentettem le régebben.
#define RELAY 12
#define LED 13Pin functions:
After having put another firmware onto the ESP8266,
we would probably want to be able to control the relay again,
and for that we need the pin number.Function GPIO NodeMCU
Button 0 3
Relay 12 6
Green LED 13 7
Spare (pin 5) 14 5The LED on the board is actually a red/green bi-color led,
but the red side is only connected to the RF module,
which in my version isn’t mounted.ESP8266 van benne, úgy kell programozni.
Én a következő beállításokkal használom:
Generic ESP8266 Module/ DIO / 1M(512K SPIFFS)/ Disabled/None/ck/40Mhz/80Mhz/115200Ez meg egy egyszerű minta program, bár úgy rémlik, mintha a led fordítva lenne bekötve:
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
uint8_t relePin = 12 ;
uint8_t greenLEDpin = 13 ;void lampaBe () {
digitalWrite(12, HIGH) ;
digitalWrite(13, HIGH) ;
Serial.println("be");
} ;void lampaKi () {
digitalWrite(relePin, LOW) ;
digitalWrite(greenLEDpin, LOW) ;
Serial.println("ki");
} ;ESP8266WebServer server(80);
void handle_index() {
String sParameter = server.arg("lampa");
if (sParameter == "be")
lampaBe () ;
else
if (sParameter == "ki")
lampaKi () ;
Serial.println(sParameter);String s = "<html>\r\n";
s += "<!DOCTYPE HTML>\r\n";
s += "<head>\r\n";
s += "<meta http-equiv=\"refresh\" content=\"5 url=http://192.168.4.1\">\r\n";
s += "<meta charset=\"UTF-8\">\r\n";
s += "<title>SONOFF</title>\r\n" ;
s += "</head>\r\n";
s += "<body>\r\n";
s += " <font size =\"7\"> \r\n" ;
s += "\r\n";
s += "\r\n";
s += " <BR>\r\n";
s += " <BR>\r\n";
s += " <a href=http://192.168.4.1/?lampa=be>bekapcs</a>\r\n" ;
s += " <a href=http://192.168.4.1/?lampa=ki>kikapcs</a>\r\n" ;
s += "</body>\r\n";
s += "</html>\n";server.send(200, "text/html", s);
delay(100);
}void setup(void)
{
pinMode(relePin, OUTPUT);
digitalWrite(relePin, LOW) ;
pinMode(greenLEDpin, OUTPUT);
digitalWrite(greenLEDpin, LOW) ;
Serial.begin(9600);
delay(2000); // 2s késleltetés az ESP8266 feléledéshezWiFi.mode(WIFI_AP); // AccessPoint
WiFi.softAP("Sonoff-02","legyenegyjelszo"); // SSID, pw
server.begin(); // start the HTTP server
server.on("/", handle_index); // ezt hajtsa végre, ha a rootba lépünk
}void loop(void)
{
server.handleClient();
delay(500);
} -
szabifotos
senior tag
válasz
vargalex #6826 üzenetére
De 5V-os. Egyszer már meg is csináltam hogy működjön régebben, most nem tudom mi lehet a gond. Kapcsolni kapcsol, tehát behúz a relé ha valamelyik HIGH pinre kötöm. A gond, hogy wifin nem változtatja az állapotát. ESP app-ban nyomkodom villog a led, de a relé nem vált...
SZERK: Jut eszembe... Lehet tranzisztort tettem közé...
-
Janos250
őstag
válasz
vargalex #6819 üzenetére
NEM !!!!!!!!!!!!!!!
Formailag ugyan kérdés, de a kérdőjel után az ELKÜLDENDŐ ADATOT szerepeltetem.
A szerver nem automatikusan válaszol, hanem a kérésre lefut egy C++ metódus. Abban szabom meg, hogy mi történjék.
Pl. válaszoljon rá,
vagy ne válaszoljon, hanem valami egész mást csináljon (pl. állítsa a fűtést -10-el lentebb)
vagy tárolja le valahova a linkben megkapott adatokat
vagy több mindent is ezek közül.Ez nem a megszokott szerver használat, de lehet így is.
Kezdeményezni valóban nem a szerver kezdeményez, de a nálam előforduló feladatokban nem is kell, mert a szenzort kezelő kliens dönti el, mikor küldjön.
Persze a "telnetserver", ahogy a neten hivatkoznak rá, az könnyebben érthető, és jól használható, ha az emberfia kijavította a hibát. Ezt is használom, másodpercenként pár kiló adatot küld egy "szenzor" a telnet szervernek, ami részben tárolja, részben továbbküldi mindenkinek, aki be van jelentkezve. ESP8266-on 4 bejelentkezett kliensig ment, ESP32-nél 8-ig próbáltam, addig ment. (tovább nem volt türelmem)
-
Janos250
őstag
válasz
vargalex #6791 üzenetére
Én mindkettőt használom feltöltésre, adatgyűjtésre.
A client módszerre a "telnetserver" jó keresőszó. (ESP32-re a multitelnetre leggyakrabban bejövő program hibás! A for ciklusban break kell)
A webszervert is használom adatgyűjtésre, mind get, mind post módszerrel.
Az ő feladatára:
- a feltöltéshez a client,
- lekérdezéshez a webes módszert gondolom jobbnak, de ha csak az egyiket akarja megtanulni, akkor a web mindkettőre jó. -
Janos250
őstag
válasz
BTminishop #6780 üzenetére
Én is azt javasolom, hogy az arduinon csinálj egy WEB szervert, ahhoz egy WEB lappal könnyen tudsz csatlakozni, és könnyen tudod kezelni. Egyszerűbb mint az app, és univerzálisabb. Nem kell semmit feltölteni a telefonra, böngészőből működik. Ez sokkal könnyebb, mint appot írni.
ESP8266-on a ESP8266WebServer.h
ESP32-n a WebServer.h (az ESP8266WebServer-ból átírtat!)
szervereket használjuk. (ez nem annyira egyértelmű, mert többféle is van, de ezek a legjobbak.)
Én mindenkinek javasolom az ESP32-t. Már az ára is lement 2eFt alá, és már az arduino rendszerbe illesztés is elég tűrhetően meg van oldva. Akár az UNO-ra írt programok is - többnyire - változtatás nélkül futnak rajta, nagy sebességgel. -
Janos250
őstag
"Milyen macerára gondolsz?"
Én régen, amikor foglalkoztam vele, jó időbe telt, mire rájöttem, hogyan is kell programozni. Más is panaszkodott rá. Én végül rájöttem, de azóta már nem emlékszem, hogyan. A múltkor, mikor valaki kérdezte, elővettem egyet, megpróbáltam programozni. Nem ment, hagytam a csudába. Pedig emlékszem, hogy régebben végül símán ment.Az unon van polyfuse? Ezt eddig nem is tudtam. Igaz, ezer éve nem vettem a kezembe unot. Már jó ideje csak ESP-t és STM-et használok.
Nemrég jött meg ez a lap:
http://www.ebay.com/itm/Open407V-D-Core407V-Development-Board-Standard-STM32F4-DISCOVERY-ARM-Cortex-M4-/172740399220?var=&hash=item2838215074:m:mXcPXqbE1cuL4cDPC68OwOg2600 Ft-ért, de még nem próbáltam. Most erre leszek kiváncsi, de nincs rá időm kipróbálni. Ennyiért STM32F407 ajándék, ha rendesen megy.
-
Janos250
őstag
válasz
gyáliSanyi #6690 üzenetére
Persze! Gyakorlatilag ugyanaz, csak centire kisebb.
Mellesleg a szeptember 11 körül linkelt akcióban 300 Ft volt darabja szállítással együtt.
Én is rendeltem - fogalmam sincs minek, azon kívül, hogy olcsó, mert itthon meg 1990 Ft + szállításért árulja egy ismert webáruház - 5 darabot. Jó darabig nem küldték, hogy nincs raktáron, hátha lemondom a rendelést. Aztán végül postára adták a Banggood szerint. Akkor volt 1100 Ft az ESP32 is, de azt azóta se küldték. Várom, mi történik, mert abból még kellene is, de azóta 1800 Ft. Végülis a halom cuccból minden postára lett adva, van ami már meg is érkezett, csak az ESP32 a "Back Order". Érdemes néha nézni az ilyen akciókat, mert időnként nagyon olcsón lehet vásárolni. Olyan dolgokat is, ami az embernek soha nem kell -
Janos250
őstag
válasz
Teasüti #6659 üzenetére
Az arduino is a main.cpp-t futtatja, akkor is, ha az el van rejtve a szemeink elöl.
Viszont megtalálható, nálam a
C:\Arduino\arduino-1.8.2\hardware\espressif\esp32\cores\esp32
könyvtárban. Itt látható, hogy elvileg inkludolva vannak:
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "Arduino.h"
A gyakorlatban - nem tudom miért - nekem mégis néha inkludolnom kellett a könyvtár fájljait a programban.
C:\Arduino\arduino-1.8.2\hardware\espressif\esp32\tools\sdk\include\freertos\freertos
helyről.Itt van némi leírás:
https://techtutorialsx.com/2017/05/06/esp32-arduino-using-freertos-functions/Itt fel vannak sorolva a függvények, hogy melyik mit csinál.
http://www.freertos.org/a00125.htmlHa meg akarod nézni, itt van nekem egy próbálkozásom:
http://kkft.bme.hu/~johnny/ESP32mintaTobbTask-CoreKiirasBeallitas.inoValami itt van a BT-ről, de nem használtam, csak könyvjelzőztem
https://techtutorialsx.com/2017/07/17/esp32-bluetooth-advertising-a-spp-service-with-sdp/Mellesleg én a mobiltelefonnal is WiFin keresztül tartom a kapcsolatot,
internet megosztás módszerrel, és nem zavar semmit.
Új hozzászólás Aktív témák
Hirdetés
- AMD vs. INTEL vs. NVIDIA
- Magisk
- Kerékpársportok
- Intel Core i5 / i7 / i9 "Alder Lake-Raptor Lake/Refresh" (LGA1700)
- Fejhallgató erősítő és DAC topik
- Megjelent a Poco F7, eurós ára is van már
- Counter-Strike: Global Offensive (CS:GO) / Counter-Strike 2 (CS2)
- Debrecen és környéke adok-veszek-beszélgetek
- Bemutatkozott a Fairphone 6
- Anglia - élmények, tapasztalatok
- További aktív témák...
- Csere-Beszámítás! Akciós Gamer PC! R5 5500 / GTX 1070Ti Rog Strix / 32GB D4 / 500GB SSD
- ThinkPad L13 Gen5 13.3" FHD+ IPS Ultra 5 125U 16GB 512GB NVMe ujjlolv IR kam gar
- Új Bontatlan Sony WH-1000xm5 bluetooth fejhallgató.
- Eredeti Bose QuietComfort Bluetooth fejhallgató
- X1 Carbon 9th 14" 4K UHD+ IPS i7-1185G7 32GB 512GB NVMe ujjlolv IR kam gar
- AKCIÓ! Gigabyte H510M i5 10400F 16GB DDR4 512GB SSD GTX 1080Ti 11GB Rampage SHIVA Zalman 600W
- Telefon felváráslás!! iPhone 15/iPhone 15 Plus/iPhone 15 Pro/iPhone 15 Pro Max
- LG 65BX - 65" OLED - 4K 120Hz 1ms - NVIDIA G-Sync - FreeSync Premium - HDMI 2.1 - PS5 és Xbox Ready!
- BESZÁMÍTÁS! Asus B760M i7 12700KF 32GB DDR4 512GB SSD RX 6800 16GB Rampage SHIVA FSP 700W
- 127 - Lenovo Legion Pro 7 (16IRX9H) - Intel Core i9-14900HX, RTX 4080 (ELKELT)
Állásajánlatok
Cég: PC Trade Systems Kft.
Város: Szeged
Cég: CAMERA-PRO Hungary Kft
Város: Budapest