Hirdetés
- Tudjuk, de nem tesszük: a magyarok többsége nem törődik adatai védelmével
- Mesébe illő csodakábelt tervezett a GeForce-ok leégése ellen a Segotep?
- Irodát kért, de gyárat kapott Elon Musk a Samsungtól
- Nyílt forráskódú lett a legegyszerűbben használható AI tartalomgeneráló
- Hazavághatja a MicroSD memóriakártyák piacát a Biwin-féle Mini SSD
-
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
"Ha valamelyik esp lenne, akkor a kódok is máshogy néznek ki vagy ugyanaz használható, mint a két fenti vezérlőn?"
Is-is. Azok a könyvtárak, amik a a szokásos digitalRead(), digitalWrite(), pinMode() függvényeket használják, azok simán mennek átírás nélkül.
A WS2812 RGB led meghajtás egy más téma, az már nagyon erősen ki van centizve a szükséges sebesség miatt az adott típusú lapokra.
Mint korábban írtam, elég nagy a káosz a könyvtárak terén, de vannak jól bevált példányok. Én évekkel ezelőtt egyszer a DHT11-et akartam használni, de a különböző könyvtárak között mindig kavarodás volt, ezért inkább írtam egy sajátot, ami a triviális GPIO kezeléssel és időzítéssel olvassa az adatokat, így erről pontosan tudtam, hogyan működik, mit csinál. Persze, az még odébb van, hogy te is saját könyvtárakat csinálj.
Hasonlóan voltam a Adafruit_NeoPixel.h-val is. Inkább csináltam ESP32-re egy sajátot, ami ugyan csak az ESP32-n működik, de annak a lehetőségeit kihasználja, és pontosan tudom, hogy mit csinál, így elég hosszú led szalagot elég gyorsan tudok kezelni.
Az Adafruit_NeoPixel.h - bár rég néztem, de úgy emlékszem - tud többféle processzort kezelni.Aryes:
Régebben, hogy ennyien használjátok, megnéztem ezt az attiny85-t. Tetszik, hogy pici, egyszer még lehet, hogy én is kipróbálom :-)
Bár az okos konnektorokban, miegymásban használt ESP is igen pici, de azt meg nemigen lehet kapni. -
Gyakorlatilag magasabb szinten (setup, loop, változók kezelése stb. ) ugyanazt a kódot tudod futtatni, de például a i/o portok, időzítők kezelése teljesen más a két architektúrán, ezért ezeket ha közvetlenül próbálod kezelni, akkor át kell írni, de ha lib-eken keresztül, akkor a megfelelő lib-et kell csak hozzá letölteni (pl. dht11_esp8266), és akkor maga a program ugyanaz marad. Sokszor a lib-ek eleve úgy vannak megírva, hogy le tudják kezelni a különböző hardvereket, vagy a fordító automatikusan a saját architektúrához tartozó lib-et használja, ilyenkor semmi dolgod nincs.
Remélem érthetően írtam.
Ebben az esetben ajánlom az esp8266-ot, pl. wemos d1 mini, mert azon minden rajta van, ami a működéshez szükséges, és komplett webszervert tudsz rá tenni, rákapcsolódsz az otthoni routerre és a telefonodon tudsz vele kommunikálni.
Arra figyelj még, hogy míg az uno, nano stb 5V tápot kérnek, az esp-k 3.3V-ot (a wemos d1 mini ezt onboard konverterrel elő tudja magának állítani usb 5v-ból), ez a szenzorokkal való összeköttetést is meghatározza. Van, ami gyárilag el van látva szintillesztéssel, van, hogy anélkül is működik gond nélkül, de néha Neked kell megoldani. Ez utóbbi velem egyszer fordult csak elő. -
Sanki
addikt
-
Az attól függ, hogy mire szeretnéd majd használni. Pl hc-05 Bluetooth modul, ami soros portot képez az uno és a gép/telefon közt, sima Serial könyvtárral tudod használni. Vagy ha wifi kell, akkor valamelyik esp (esp8266-> wemos d1 mini vagy esp32->lolin32) modul, de akkor a felhasználás céljától függően érdemes az egész programot eleve magán az esp-n futtatni.
-
haxiboy
veterán
válasz
Janos250
#12589
üzenetére
Mobilokra is lehet már szinte bármiben fejleszteni.
Én C#-ban írom az androidos alkalmazásaim
(Xamarin)De nem is a nyelv a kérdéses szerintem, hanem az alapok.
A bojleres kommentre : Valószínű nagyon sok részegységgel kommunikál, amik szintén zárt rendszerek. Ha például a webes felületen beállítom hogy ne 2 hanem 3 zuhanyzás legyen elérhető minden este, ki tudja melyik modullal kommunikál ilyenkor.
Esélyesebb hogy valamilyen köztes eszközzel fogom megoldani a dolgot, és az eszközön emulálom a gyári webes api-t.
Még nem néztem utána tüzetesebben de létezik olyan board ami mint az ESP32 csak wifi+bt helyett egyszerre 2 wifi található rajt? Vagy az ESP32 tud egyszerre csatlakozni több eszközhöz wifin? Bojler -> ESP32 <- Router? -
Janos250
őstag
válasz
motoflug
#12580
üzenetére
Hát, a hőkamerás térkép, az elég nagy falat ám!
Ha programozást akarsz tanulni, akkor a Java és a C++ ami a leginkább javasolható. A Java a mobiltelefonok miatt potenciálisan hasznos, a C++ meg minden szempontból. A Java alapja is a C++. Ha C++ -t tanulsz, akkor a "származékainak" (pl. Java, PHP, stb.) a
megtanulása könnyen megy. Csak elő kell venni egy leírást, megnézni mi a plusz pl. PHP-ban, és azt hogyan kell használni, vagy
pl. mi a különbség a Java és a C++ könyvtár szerkezetében, meg ilyesmik.
Én manapság mindenkinek Arduino ügyben az ESP32-t szoktam javasolni, mert:
- Olcsó, gyors, és rengeteg mindent tud.
- A szabványos C++ -t tudja, nem csak a régi szabványokat, hanem a C++11-et is. Bár a 11-ben még előfordulnak gondok. Van persze, amit már a 14-ből is tud.
- Valószínűsíthető, hogy folyamatos lesz a fejlesztés, mert a GCC-t folyamatosan fejlesztik, és ha a gyártó valamilyen ok miatt levenné róla a kezét - ami persze nem valószínű - akkor is lelkes emberek írják máris, hogyan tegyük be az újabb GCC fordítót.
- Operáció rendszert (freeRTOS) használ, amit ha akarunk észreveszünk, ha akarunk nem, de vannak előnyös API-jai.
- Valós hardware két magja van, amit szintén, ha akarunk észreveszünk, ha akarunk nem. Az Arduino programok automatikusan az 1-es magra kerülnek. A 0-ás magon fut pl. a WiFi kezelés, így nem kell aggódnunk, hogy egy leterhelés megakasztja. Ha van valami "ráérős" feladatunk, azt alacsony prioritással tehetjük a 0-ás magra, ott szépen elvan. Pl. szenzorok figyelése, stb.
- A szabványos párhuzamos programozást is támogatja. Pl. link -
válasz
haxiboy
#12581
üzenetére
Ha jól tudom, az STM32 uC-eken kifejezetten meg lehet tiltani a firmware kiolvasását, és 99,9%, hogy a gyártó ezt meg is tette. Reverse engineering-re lesz szükség, indítanod kell magad ellen egy MITM támadást
és lehallgatni a köztes kommunikációt.
És úgy látnék neki, hogy ha wifis a cucc, egy ESP32 vagy ESP8266-ra írnék egy programot, ami az egész kommunikációt átküldi soros porton számítógépre. -
Szerintetek egy arduino uno, vagy esp32 elég erős ahhoz, hogy internetes rádiót streameljen fm transmitterrel? Lenne hozzá egy érintő kijelző is, ahol lehetne váltani a csatornák közt, mondjuk. Elég lenne 10 db rádió adó. Olyat láttam Youtube-on, hogy sima internetes rádió, hangszóróval, nekem az a része nem kell, adott a régi rádió, csak nagyon recseg már rajta minden adás.
B verzió, régi androidos telefonra csatlakoztatok jack-en egy fm transmittert... de az arduinós verzió izgalmasabb. -
Sziasztok! Dolgozott már valaki MCP23017 ic-vel? Mennyire megbízható? Lenne egy projektem, ahol egy meglévő 5V-os μC-t szeretnék lecserélni valamire, amit én magam tudok programozni, és van rajta wifi. A nehéz benne az, hogy összesen 20db I/O portot kellene tudnia kezelni. ESP8266+MCP23017 port extenderre gondoltam, mert az ESP32 portjai ha jól tudom nem 5V toleránsak, a 8266 portjai meg igen. Szóba jöhetne még egy arduino nano firmata fw-el + ESP8266, de az nem sokban különbözne attól, mint ha MCP23017-t használnék, illetve arduino nano + esp csak wifi kapcsolatra AT parancsokkal, de ez utóbbi nem túl szimpatikus.
Van olyan Arduino IDE kompatibilis μC, ami egyben tud 20 I/O portot, wifit, és 5V-ról működik? -
ecaddsell
aktív tag
válasz
gyapo11
#12562
üzenetére
ESP32
#include "xtensa/core-macros.h"uint32_t start, stop;...start = xthal_get_ccount();<kód amit mérni akarsz>stop = xthal_get_ccount();A különbséget meg kiírod soros porton, USB-n stb.
Hiába mutatod meg a forrás valami programnak, ha a háttérben az interruptok viszik az időt, meg néha cache miss van a nagyobb kód miatt, ez lehet csak ESP32, vagy mondjuk STM32-nél meg pl. bus matrix hozzáférés korlát van (az STM32 bus matrixot érdemes kicsit megnézni, tanulságos, hogy működik egy modern MCU).
A profilerek is tényleges futást mérnek és sok esetben egyszerűbb tickcount-ot nézni (ez majdnem mindenütt van) mint a toolokkal (ha van egyáltalán) küzdeni.Egyébként az iopin toggle is ugyanez. Az állapotváltás közzé teszed a kódot amit mérsz és szkópon vagy multiméteren nézed az eredményt. Itt is a HW bütykölés csupán a pin váltás nézése.
De felőlem azt csinálsz amit akarsz, elég sok infót bedobtam már, lehet többiek tudnak olyan progiról amit keresel, nem hiszem, hogy olyan egyszerűen működik mint gondolod, legalábbis ha tényleg komoly időzítési kritériumok vannak.
-
ecaddsell
aktív tag
válasz
gyapo11
#12555
üzenetére
Ha semmi mást nem csinál csak direktbe pineket matat az arduino is gyors (nem 100kHz), nézd meg itt (korábban is javasoltam, hogy keress rá a pin toggle-re):
https://arduino.stackexchange.com/questions/24452/pin-toggle-speedAz ESP32 10 MHz (tegnap rosszul írtam):
https://www.esp32.com/viewtopic.php?t=15952.75x gyorsabb, ami nem annyira sok.
STM32F103-nál 18MHz-et lehet elérni, de mondjuk az a kód nem hasonlítható a többihez, mert nem fordított kód, hanem assembly-ben megírt, előre feltöltött regiszterekkel operál.
https://stackoverflow.com/questions/59708656/stm32f103c8-gpio-speed-limit
Vsz. az ESP32 meg az arduino is gyorsabb lenne, ha így lenne megírva.Összességében azért ezek az értékek jól mutatják kb. mit lehet várni. Az STM32 egy nagyon flexibilis rendszer, de hobby szinten nehéz használni, az arduino a másik véglet, az ESP32 meg valahol a kettő között (csak ne kelljen assembly-ben használni, ne legyenek idő kritikus részek benne...).
Viszont az órajelen felül a nagyobb adatoknál is hátrányban van az arduino rövid proci szóhossz miatt.
-
Janos250
őstag
válasz
gyapo11
#12551
üzenetére
Már nem pontosan emlékszem, de régebben próbaként csináltam olyan programozható led szalag meghajtást ESP32-n, hogy while-ban figyeltem a gépi ciklusok számát (a 80 Mhz-est, mert csak azt lehet), így elég pontosan lehetett időzíteni még a 200 körüli nanosec-eket is. Nem mértem hányszor ment le, de néhányszor le kellett menjen 200 nanosec alatt, mert másként pontatlan lett volna. Viszont az ESP32 oprendszere - ha nem tiltod le a megszakítást - egy millisec-enként megszakít talán 6-8 microsec időtartamra, mert akkor nézi meg, kell-e taskot váltani. Ha kell, akkor parkolópályára kerülsz egy ideig. Az oprendszer által kezelt megszakításokból kétféle van: az egyik csak egész millisecenként adja rá a vezérlést, a másik meg azonnal. Régebben használtam, már nem nagyon emlékszem rá :-(
Az se mindegy, melyik magra teszed. A nullás kezeli a WiFit és a BT-ot, oda nem érdemes rakni időkritikus dolgokat. -
ecaddsell
aktív tag
válasz
gyapo11
#12551
üzenetére
Csak az ESP32-ről vannak ilyen téren tapasztalataim, ami gyors de van néhány buktatója.
Ha csak output pin-t váltogatsz akkor azt akár 4MHz-el is meg tudja tenni, azaz a loop idő microsec alatti (nem mértem meg, a neten megtalálható már mások megtették).Számomra az első pofon amibe beleszaladtam az ESP32-vel az az interrupt latency volt. Ugye ez az az idő ami eltelik a között, hogy valami input pin-re jelet adsz és a kód eljut odáig, hogy elkezdi futtatni az első általad kért utasítást. Ez pedig nagyságrendileg 2 microsec. Ha nincs semmi kritikus időzítésed akkor nem hangzik soknak, de ha kiszámolod, hogy egy 240 MHz-es magnak ez hány gépi kódú utasítás akkor kijön 1 döbbenetesen nagy szám, kb. 500 utasítás (ennek nagy részéért az RTOS felel, ha ez vigasztal).
Ebből talán már látszik, hogy maga proci gyors, elég komplex műveleteket végezve (ezt nem megszakításban) 64 bites ill. double számokkal (sima float van HW-esen), nagy tömbökben stb. sosem volt gondom ezzel. Viszont a nagy interrupt latency az azt jelenti, hogy ha nagyon sok a megszakítás az nagyon vissza tudja fogni és kevésbé kiszámíthatóvá teszi.
Ebbe sajnos akkor futottam bele amikor a 10 digit/s-es frekimérő felbontását szerettem volna javítani, amihez 10 000 mérés kellett volna másodpercenként (ha a jelnek van ennyi periódusa).Az STM32-vel ilyen gond nincs (mondjuk egy F103-ra eleve aligha varázsolsz valami oprendszert ami bezavarjon) viszont a blue pill-t leszámítva nincs értékelhető Arduino támogatása (vagy legalábbis amikor néztem nem volt) és pl. a nagyobb F407-nek (ebben már van float) már nem mellékesen a legkisebb tokozás is a már nem éppen barátságos 100pin (akkor sem barátságos amikor gyártatod a NYÁK-ot, részletek eléggé off).
Nálam a megoldás az volt, hogy még egy CPLD-t teszek a már eleve külön panelen lévő CPLD mellé ami a gyors logikát kezeli, ha már az ESP32 ebben nem jó. Ennek a VHDL kódját már meg is csináltam és működni látszott amikor parkolópályára került egy kicsit ez a projekt (sőt most per pill. felújítás miatt minden ami ehhez kell le van fóliázva...).
Az igazi az lenne, ha lenne kis pin számú (nem BGA) CPLD nagyobb logikával megfizethető áron (sajnos a gyártók ezen a vonalon alig fejlesztenek, nekik ez nem business). Az arduino/ESP32 tök jó arra, hogy user interfész logikázzon és azt gyorsan össze is lehet dobni, de ha valami tényleg gyors kell legyen ahhoz HW logika kell.
Egyébként ha rákeresel arra, hogy pin toggle majdnem minden infót készen kapsz, de 1 blue pill. (meg programozó ha nincs) nem akkora befektetés és ha nincs is szkópod a legtöbb multiméter sokkal többet tud mint amilyen sebességgel ezek tudják a pint módosítani (pl. az elég olcsó ANENG AN8008 10MHz-ig).
-
gyapo11
őstag
Ha valakinek van egy nagyobbacska programja arduinoban, kíváncsi lennék a loop időre, hogy 1 másodperc alatt hányszor fut le. Egyszer egy számláló cikussal mértem, az 100 kHz fölött volt kicsivel, nyilván egy több soros program lassabb. Akár ez a legutóbbi Nyirike hőmérő, vagy egy programozható ledszalag meghajtó, ilyesmi.
Érdekelne még az esp32 és stm32 is, hogy ott az órajel többletnek megfelel-e a loop idő rövidülése.
Persze csak delay nélküli programok játszanak, illetve esp32-n talán még ez se akadály a két mag miatt. -
Janos250
őstag
válasz
gyapo11
#12509
üzenetére
"adni-venni kell byte-okat"
Az ESP32 RMT-je (ReMoTe) ezt (is) csinálja.
"vagy van jobb ötlet?"
Nem jobb, más:
Egy titkos algoritmussal az adó az utoljára adott N db. kódból generálja a következőt. A vevő tudja az algoritmust. Ha elvész a szinkron, akkor, ha az adó ad egymásután N db. kódot, akkor a vevőnél helyreáll a szinkron.
Akkumulátort cseréltél,és nem nyit a távirányító. Megnyomod egymásután mondjuk 15-ször, és már nyit. -
Janos250
őstag
Így, hogy tökölődök ezekkel az okos konnektorokkal, egyre jobban tetszik ez a TUYA TYWE2S körömnyi kis vacak.
Kisebb még az ESP01-nél is, mégis több használható IO lába van. Ahol a hely szűkös, szerintem jó megoldás.
Ugyanúgy ESP8266 (az 1M memória miatt szokás ESP8255-nek is nevezni). Ha egyszerűbben lehetne rendelni, vennék belőle. -
Janos250
őstag
válasz
gyapo11
#12486
üzenetére
"Semmi kedvem nincs ilyet leprogramozni semmilyen nyelven"
Nem is kell, ezt már mások megtették.Amit leírtál, az tipikusan az "okos otthon" probléma: bamba user számára emészthető módon megfogalmazható szabályrendszert leírni. Ezt netes közösségek már elég jól körbejárták, van pár kiforrott irány, módszer. Kérdés, hogy érdemes-e egy sajátot csinálni, vagy a kiforrott, kidolgozott, hiba javított módszerek valamelyikét alkalmazni. Van itt a PH-n is egy topicja, de aki ezt a témát akarja kezdeni, az sokra nem megy vele. Ezeknek az elve, hogy van egy központi szerver, tipikusan valamelyik málna, vagy annak klónja, amihez kapcsolódnak az egyes eszközök, kontrollerek, szenzorok, stb. Pl. ESP8266-os konnektor, vagy akármi küldi a jelet a központ felé, az "szórja" az üzenetet, illetve feldolgozza. Ennek a feldolgozónak lehet különböző szabályok szerint (ezek egyike pl. a Node Red) megadni az utasításokat, szabályokat. De például lehet hang utasításokkal is vezérelni. Részletesebben nem ismerem, csak az egyik ismerősömnél láttam, hogy amikor megérkeztünk a házához, akkor bemondta a telefonjába, hogy "Hi Google", amire a Home assintant (ha jól emlékszem) figyelő állapotba került, és ezek után azt mondta neki hogy "home" vagy valami hasonlót, és felgyulladt a villany, miegymás.
Tehát ezt csak gondolatébresztőként írom, hogy nem gazdaságosabb-e egy jól kiforrott rendszert átvenni, mint egy sajátot létrehozni. -
gyapo11
őstag
válasz
cog777
#12483
üzenetére
Lehet logikat modositani ugy hogy nem inditod ujra?
Nem tudom, a plc-khez én se értek, de ilyet szeretnék. Inkább egyszer dolgozzak vele többet, mint minden apró módosításnál mindent leállítani, mert jön a reset.
Ha egy szelep megszűnik a programban, akkor nincs mit tenni, le kell választani a hardware-ből és vége. Esetleg azt a portot megkapja valami más, szóval veszélyes is lehet otthagyni és nem rácsatlakoztatni az új eszközt. Ha változik a hw, akkor az már nem annyira simple user feladat.
Ezt a módosítást kifejezetten arra az esetre gondolom, amikor apró változtatások kellenek, mert nem jól találta ki a user, hogy 1 percig világítson a lámpa vegy kettőig. Még az is lehet, hogy ezek a paraméterek egy külön adatblokkban csücsülnek, és a parser onnan olvassa ki az adott sor értelmezésekor, így még könnyebben módosíthatók. Az időzítő minden beolvasáskor összeveti a futó időt a fölső határral, és ha túllépte egy adatmódosulás miatt, akkor leáll. Abban az egy loopban lehet, hogy hosszabb lesz, de a következőben már jó.Pl 3 blokkbol egyet kitorolt a felhasznalo. Mi legyen ha eppen a masodik volt futas alatt. stb.
Szerintem megvárnám a loop végét, és akkor olvasnám be a programot, illetve az elején a változásokat, amit még a pc írt oda, hogy ne az arduinonak kelljen kitotózni, hogy a változások milyen portokat érintenek. A megszűnő vagy megjelenő eszközök portját, alapállapotát, időzítőket, hogy amikor a parser elölről kezdi beolvasni a sorokat, akkor már minden be legyen állítva. Az időzítőkön még gondolkodnom kell, ott még nem látok tisztán.
Mindenképpen megjegyzem az esp32+python ajánlást. Mindkettő ismeretlen egyelőre, jócskán kell tanulnom hozzájuk, de a jövő arrafelé mutat.
-
cog777
őstag
válasz
gyapo11
#12480
üzenetére
Ja, ertem. Sajnos PLC-hez nem ertek. Lehet logikat modositani ugy hogy nem inditod ujra?
Felvetodik a kerdes bennem mi van ha egy szelepet kinyitsz, majd modositod a programot ugy hogy kitorlod a szelepet a programbol. Akkor az nyitva marad.
Mar pedig ha nem szakember programozza, akkor siman elofordulhat.Ugy kepzelem el hogy allapotgep szerut kell osszerakni valos idoben. Ezt le lehetne irni egy fajlban, es ezt beolvasni. Minden blokk/allapot egy feladatot reprezental. A fajl ujrabeolvasasakor ertesiteni kell a blokkokat a valtozasrol/illetve ujraszervezni a blokkok kozti kapcsolatokat ha modosult a logika.
Elso korben mindenkeppen reset-es megoldast kepzelnek el (ahol mindennek megvan a maga biztonsagos es alap allapota) mert mar az onmagaban is szep feladat.
Masodik korben megprobalnam megoldani hogy hogyan kezeljem a valos idoben megvaltozott allapotokat. Pl 3 blokkbol egyet kitorolt a felhasznalo. Mi legyen ha eppen a masodik volt futas alatt. stb.En esp-ben gondolkodnek, mert python-ban pl ujra lehet tolteni a modulokat anelkul hogy a program tovabbi resze leallna. (pl hibajavitasra jo, ahol a szelep nyitas modult frissited)
Tovabba tud webszerverkent mukodni, es tavolrol racsatlakozva megnezni a naplojat. Tovabbgondolva, akar egy blokk diagram szerkesztot is meg lehetne valositani
ahol megtervezed a folyamatot. Igy csak egy bongeszo kell...Persze te dontod el mi szamodra a megfelelo.
Erdekes a feladat. Remelem irsz felole hogy haladsz.@Janos250: wow Node Red is erdekesnek tunik...
-
gyapo11
őstag
válasz
cog777
#12478
üzenetére
A python egy programnyelv. Akkor az esp-ben a python értelmező futna, és byte kód helyett python forrást kellene átküldeni? Ez azzal járna, mintha arduino forrást vinnék át, vagyis reset. Ha egy csomó kapcsoló, relé, triak, szelep, motor van valamilyen állapotban, időzítők futnak, akkor egy reset nem túl jó. Ha elmentem az állapotokat, és reset után beolvasom, akkor talán folytatható minden ugyanonnan, de ezt ha lehet elkerülném. Lehet olyan program, ahol semmi ilyesmi nincs, ott nyugodtan lehet resetelni.
Az alapötlet az, hogy nem vadi új programokat töltök rá, hanem az ott levőt kicsit változtatva. PL. hozzáadok új feladatokat vagy törlök másokat, ez az egyszerűbb, a bonyolultabb, hogy meglévő feladatok változnak, ezen még gondolkodnom kell hogyan tudom egyeztetni az aktuális állapotot az új részekkel. Pl. megy a szivattyú 5 perc időzítéssel, most 3 percnél tart, az új programban viszont 7 vagy 2 perc időzítés van, egyiknél 2 perccel meg kell hosszabbítani az időzítést, a másik esetben viszont azonnal ki kell kapcsolni a szivattyút.
Lehet, hogy ezt is a pc-vel kell feldolgozni, és infót tenni a byte kód mellé, hogy mit kell csinálni, jobb ha nem akarom ezt is bezsúfolni az arduinoba. -
Janos250
őstag
válasz
Melorin
#12445
üzenetére
Ezek a ledek zabálnak rendesen. Tehát led táplálása: külső, 5V-os táp. Értelemszerűen a GND és a +5V közé.
Arduino táplálása pl.USB-ről. Led szalag, Arduino összekötés: GND-GND, megfelelő pin(Arduinon)- dataszalagon).
Amikor összekötötted az Arduinot,és a szalagot, adj USB-t az Arduinora. Elvileg az Arduino elindul,semmi egyéb. Utána add a tápot a szalagra, hogy lásd,mi történik. Elvileg működik a szalag.
Azért én mindenképpen a fordított polaritásra gondolnék! Én is vettem a múltkoriban olyan tápból egy nyalábbal, amin fordítva van a csatiba bekötve a polaritás, azaz 0 belül, + kívül. Mellesleg én is WS2812-höz használom őket,konverter közbeiktatásával.
(Végre normális könyvtárba raktam a régebben elkészült ESP32-re való WS2812 meghajtó drivereket. Most(is) látom, mennyire jó az ESP32: 8 led szalagot tud(na) párhuzamosan kezelni különböző mintákkal) -
Volkov
senior tag
Sziasztok!
ESP32-n található BLE-vel kapcsolatban szeretnék segítséget kérni.
Arduino-ban van a kód, a beépített keresővel letölthető libary-t használom. (BLEDevice.h)
Van egy eszköz (ő a server) amihez kliens módban kell csatakoznom az ESP32-vel.
A gondom az, hogy teljesen random, hogy mikor csatlakozik össze a két eszköz.
Próbáltam úgy, hogy scan-ellem 5mp-ig, majd mikor megvan a megfelelő serviceUUID, akkor connect, ha nincs akkor újra az egész, de egy sokszor átugrik a megtalált eszközön csatlakozás helyett.
Próbáltam úgy, hogy scan, majd mivel tudom a MAC address-t, azzal csatlakozom mindenképpen (nem a scan-ből nyerttel), de ez is esetleges, nem stabil.
Próbáltam teljesen törölni a scan-t, hogy csak direktbe a mac address legyen, ekkor unhalded excption-nal elköszön az egész
Szóval a kérdés, hogy szükséges-e a scan?
Lehet fixen mac alapon csatlakozni?Google a barátom, van pár példa, de amit találtam, az mind a beépített példa client kódra épül.
Köszönöm!
-
válasz
férfiállat
#12422
üzenetére
Tanács tőlem: szerezz egy UNO-t, mert nem létezik olyan feladat, amihez UNO-ra ne írt volna valaki példakódot+library-t. Nagyon gyorsan megtanulható rajta mindenféle periféria, szenzor kezelése. Könnyű tápot biztosítani neki, 2db ceruzaelemtől és egy 18650 li-ion cellától a powerbank-on át a 9-12V fali adapterig kb. mindenről működni fog. Prototipizálj, gyakorolj rajta, és ha már úgy működik, ahogy szeretnéd, felejtsd el az UNO-t gyorsan, és vegyél valódi projektekhez Arduino Nano-t, Arduino Pro Micro-t vagy ESP32-t.

-
-
Janos250
őstag
Na, ki mennyire ér rá, mert meg kellett próbálnom a PlatformIO-t is, de hát, az nagyon macerás. Szedem elő a kérdéseim, hátha tud valaki válaszolni: (ESP32)
1. a .h fájlnak van az elején egy typedef. Szerintem teljesen szabályos, az Arduino IDE alatt le is fordul, és működik feltöltve, de a PlatformIO azt mondja, hogy:
" warning: 'typedef' was ignored in this declaration"
Aztán később a mainben persze hiányolja. Mi lehet az oka?
2. az osztály desktruktorát nem fogadja el, pedig A. IDE alatt simán ment. (próbára kommenteltem, de nem maradhat így)
3. a linker kihoz egy csomó "undefined reference to" hibát a .h-ban lévő tagfüggvényekre, amik szintén hiba nélkül mentekFogalmam sincs, mi lehet olyan hiba, ami az Arduino IDE alatt nem jön elő, de PIO alatt igen.
-
htc07
addikt
Sziasztok,
Valaki használ ilyen am2302+esp01s kombót hőméréshez?
Az lenne a kérdésem, hogy ki lehet-e kapcsolni valahogy a szenzoros lapkán a pwr led-et? (nem az ESP led-jét, ez az ESP nélkül is világít)
Legrosszabb esetben lefestem majd valamivel, de hátha megoldható szoftveresen is.
Amúgy a cucc maga teljesen jól működik és tetszik a koncepciója is, iotguru-val a logolás is meg van oldva.
-
Janos250
őstag
válasz
cidalain
#12365
üzenetére
Van olcsó ESP32 lap, amin bótilag rajta van a micro SD foglalat.
Pl.:
ESP32Cam kamerával együtt 4.52 $
Eldobod a kamerát, és van egy olcsó ESP32 lapod. Igaz, elég kevés az I/O lába, mert sok le van foglalva a kamera csatlakozójának.
Vagy van ilyen is:
ami már hangra van kihegyezve 15$-ért
Igaz, ez 15 $, de ha megnézed, mi van rajta, rájössz, hogy ha nekiállsz a szükségeseket összepakolni, az is kerül ennyibe.Biztos vannak még már alternatívák is, ha találsz olcsó micro SD kártyás lapot, oszd meg az infót, bár én ezekre álltam rá, ha nem kell SD kártya:
DOIT ESP32 lap, a teljes használható lábkiosztással, 4.5 $Ui.: Lehet, a kamera is jó lesz valamire, van hozzá elég jó szoftver.
-
válasz
cidalain
#12363
üzenetére
Ha az arduino nano-t lecseréled esp32-re, az SD kártyát pedig például ilyen módon hozzá kötve minden külső hardver nélkül tudsz zenét lejátszani az esp32 i2s kimenetén keresztül. (Na persze hangszóró és vmilyen végfokra szükség lesz, de azt fillérekből, diszkrét alkatrészekből össze lehet hozni). Esetleg a belső (~3Mbyte) flash memóriát kihasználva SD kártya nélkül is.
Amúgy tök jó ötlet ez a kis bizgentyű, gratulálok!
Kár, hogy nekem nem jutott ilyen eszembe. 
-
Janos250
őstag
A WS2812 egyik vége bemenet, a másik meg kimenet, amire újabb ledsort köthetsz, és így tovább, akár a 10-et is (gondolom, de ennyit még soha nem próbáltam) felfűzhetsz. Persze, akkor az idő is hosszabbodik, nem tudom, hogy mondjuk egy Uno mennyit bír, mert én ESP32-ben gondolkodom.
-
Ha mondjuk egy uno-ról beszélnénk, egy kimenet terhelhetősége ha jól emlékszem 25mA source (magas jelszint), 40mA drain módban (alacsony jelszint), ha jól tudom, nagyjából az összes atmega AVR hasonló, de még egy esp8266-nak is 17-20mA a terhelhetősége, miközben egy WS281x led din lábának a bemeneti ellenállása több kohm, esetleg Mohm is lehet, vagyis pusztán digitális bemenetekkel szerintem nem lehet túlterhelni egy ilyen kimenetet, legalábbis 10 bemenet erre nem valószínű, hogy elég lenne. A táppal más a helyzet, mivel 1db ledsor áramfelvétele önmagában is tetemes lehet, nem árt kiszámítani/kimérni, mekkora táp bírja el a 10 ledsort.
-
Janos250
őstag
Közben rájöttem, hogy nekem is van egy nagyon hasonló régről, amit el is felejtettem, mert soha nem használtam. Saját programot kellett volna installálni a telefonra, regisztrálni valahova, miegymás, ezért hagytam a francba. Van benne egy ESP8255, de nem lehet programozni, mert az Rx,Tx lábak közvetlenül egy ARM proci lábaira mennek, tehát valahogy ő programozza. Persze, az enyém csak hasonló, mint a Tied. Továbbá nem is mindenkit üt meg a guta, ha az ezredik applikációt kell telepíteni a telefonjára, és regisztrálni a kis kínaiakhoz.
Összefoglalva: lehet jó. -
htc07
addikt
válasz
puritan
#12272
üzenetére
Az UPC routereden a WAN IP cím / külső cím / nem tudom hogy hívja az UPC, ha megegyezik az ipcimed.hu-n látott címmel, akkor publikus a címed. Ha nem, akkor nem lehet portot nyitni kívülről.
Port átirányításhoz meg az kell, hogy tudd a belső eszköz (ESP) IP címét (lehetőleg legyen statikus, ne változzon - ez másik sztori: [link] ), külső és belső portnak célszerű ugyanazt a számot megadni ha szabad. A népszerűbb szolgáltatásoknak megvan a saját dedikált portjuk, pl. http 80, ssh 22, ftp 21, https 443).
Amikor betöltesz egy https weboldalt, akkor (általában) a :443 porthoz csatlakozol, pl. prohardver.hu:443 , csak ezt a böngészők elrejtik.
-
puritan
csendes tag
Kedves aryes, gyapo11, Janos250!
Köszönöm a segítséget, de egyelőre elveszek az információk tengerében. Valóban a hálózati beállításokkal van gondom, meglehetősen hiányosak, vagy inkább a nullához közelítenek az ismereteim ezen a téren.
UPC netem van, egyelőre nem tudom, hogy NAT mögött vagyok-e vagy sem, a whatismyip.com nem talált IPv6-ot. A router beállításai között megtaláltam az ESP-t, és a MAC címét is látom, de nem tudom, hogy kell külső portot ráirányítani. Regisztráltam a dynDNS.hu-ra is.Háát... nem sok haladás, majd túlórázok még a dologgal néhány este, aztán majd csak lesz valami...
-
válasz
Janos250
#12267
üzenetére
Megpróbáltam ahogy írtad. Megnéztem a router IP-jét és megadtam az ESP-nek 60000-ret port forwardinggal. Sajnos nem tudok rá belépni. Mit hagytam ki?
A router mondjuk valamiért nem akarja elmenteni, pedig a saját gépemet mikor belőttem azt elmentette, lehet nem jó portot adok meg?
-
Janos250
őstag
Erről jut eszembe: tud valaki valamit az IPv6 esetleges használatáról ESP-n?
-
Janos250
őstag
"Ha beállítottam azokat amiket mondtál, utána hogy tudom dyndns nélkül elérni az ESP-t routeren keresztül? Kell egy ip, port és gondolom jelszó."
Valahogy így:
http://xxx.xxx.xxx.xxx:yyyyy
ahol:
xxx.xxx.xxx.xxx az az IP, ami a routered külső IP címe. Pl a www.whatismyip.com megmutatja, ha a belső hálóról hívod.
yyyyy pedig az a külső port, amit a routerben az ESP belső ip címére irányítottál. Jelszó alapesetben nem kell.
Vezérlésekre javasolom a Tasmota kipróbálását.
dynDNS-re pedig az ingyenesen is használható www.dyndns.hu-t. Nem kell tőle megijedni, kényelmes.
Ha IPV6-od van, akkor kérni kell az IPv4-re visszaállítást.
Ha a szolgáltatód NAT-ol, akkor meg annak megszüntetését, ami néha egyszerű, néha nem.Hopp, látom, közben kaptál részletes választ. Mindegy, nem törlöm.
-
-
válasz
puritan
#12263
üzenetére
Szia! Ha jól érzékelem, nem arduinoval, hanem hálózati beállításokkal kapcsolatos inkább a problémád.
Először is az otthoni routered beállításai között keresd meg a dhcp beállításait, és az ESP MAC címéhez rendelj statikus IP címet. Ehhez aztán port forwardingot kell beállítani. Vagy ha létre tudsz hozni VPN szervert, azzal sokkal biztonságosabb lesz, mert kisebb támadási felületet biztosít az otthoni hálózatodnak. Én ezt egy raspberry-vel oldottam meg, de van olyan router, ami alapból tud ilyet.
A neheze ezután jön: kívülről el tudod érni az otthoni hálózatodat? Ha nem, akkor szolgáltatói NAT mögött vagy. A szolgáltatótól kérned kell, hogy vegyen ki a NAT mögül.
Ha ez megvan , akkor kellhet még egy dyndns, ha sűrűn változik a routered ip címe.Ha ez mind valamiért nem kivitelezhető, akkor esetleg ha van webszervered és tudsz PHP-ban programozni, azon keresztül is meg lehet oldani.
-
puritan
csendes tag
Üdv mindenkinek!
Egy kis segítséget szeretnék kérni!
Kb. egy éve találkoztam az Arduinoval, azóta foglalkozom vele szórakozásból, vagyis eléggé kezdőnek tartom magam. Uno, és Nano alapon több dolgot is kipróbáltam, többnyire sikerrel megoldottam, amit szerettem volna. Most viszont elakadtam. Vettem egy Wemos D1 minit, aminek ugye az a lényeges tulajdonsága, hogy Wifi modul is van benne, és könnyedén kapcsolódik a netre. A konkrét feladat az lenne, hogy távolról szeretnék vezérelni egy termosztátot. Két irányba indultam el, de egyik sem volt sikeres.Az egyik irány, az ESP2286-osok tipikus példaprogramja, a led kapcsolgatás Web felületről. Ezt a linkelten kívül több változatban is megtaláltam, de mindegyiknek az volt a hibája, hogy csak az otthoni hálózaton belülről működik kívülről nem. De ha működne is, nem tudom hogyan lehet megoldani a dinamikus IP cím problémáját.
A másik irány a Blynk alkalmazás volt. Ennél mobilra telepített alkalmazás csatlakozik a Blynk szerveréhez, és az előre elkészített kis "eszközöket" pl, kijelző, nyomógomb, léptetőgomb, stb. lehet egymás mellé rakosgatni az alkalmazásban, és a megadott kódokat kell a saját kódunkba beilleszteni, amivel végül is vezérelhető lenne az eszközünk. Ennek az a hibája, hogy csak az egyik irányba mennek az adatok, tehát a Wemoshoz csatlakoztatott hőmérő értékét szépen látni a mobiltelefonon, de a mobilon megadott számszerű értéket az istennek nem lehet a Wemoshoz eljuttatni.
Az lenne a kérésem, hogy milyen egyszerű módszert javasoltok, aminek a segítségével webről működtethetem a Wemost?
-
Na, szóval kiderült, hogy ha a powerOff() metódust használom, akkor nem megy deep sleepbe a modul, arra a hibernate() való, így sikerült 1 mA alá mennem fogyasztásban. Ezt csak a gagyibb multiméteremmel tudtam mérni, szóval pontosan nem tudom, mennyi az annyi. Kicsit kellett trükközni, mert a GxEPD "elfelejti", hogy hibernálva volt a display mikor az ESP32 deep sleepbe megy, és nem reseteli. Sajnos az egész ojjektum nem fér bele az RTC RAM-ba így az osztályba vettem fel egy RTC_DATA_ATTR változót.
-
Tankblock
aktív tag
válasz
Janos250
#12159
üzenetére
Mentsük meg a routert a felesleges Wifi kapcsolatoktól
Ha jól sejtem akkor egy Raspiról mehetne a MQTT, Home Automation és a router funkciója is amire a teljes esp mesh fel tudna kapcsolódni.... Van benne kihívás. Komplett rendszert akár árulni is lehetne..... Gondolkodom, hogy mibe tegyek energiát, mert a Xiaomi pl Zigbee-t csinál és pár dolláros szenzorral ami évekig képes menni egy gombelemről nem biztos, hogy tudok versenyezni, bár vannak ötleteim. -
Tankblock
aktív tag
-
Janos250
őstag
válasz
patesz
#12136
üzenetére
Már többször írtam, de továbbra sem értem, miért akartok az ESP8266-on software serial használni, amikor ott van a hardware serial!
Pontosabb, biztonságosabb, kényelmesebb, stb.
Még példányosítani se kell, mert a HardwareSerial.cpp-ben eleve példányosítva van.
HardwareSerial Serial(UART0);
HardwareSerial Serial1(UART1);Vagy van valami gond az ESP8266 hardware seriallel, amit én nem tudok?
Mintapéldák vannak a neten.
Itt is van róla némi leírás, de elég kevés, pedig az ESP8266 többi részéről részletes tutorial van, mintapéldákkal. Ez főként azoknak ajánlható, aki most ismerkednek az ESP8266-tal.
https://iotbyhvm.ooo/esp8266-tutorials/
A lényeg, hogy a Serial használható adásra vételre egyaránt, a Serial1 pedig csak adásra.
Pont ugyanúgy kell használni, mint a software serialt, csak nem kell include az elején, hanem a setupban a Serial.begin(9600) vagy más baudrate után símán használható.
Itt is van egy mintapélda:
https://create.arduino.cc/projecthub/pawan-kumar3/serial-communication-between-nodemcu-and-arduino-640819
Ez is folyamatosan a hardware serialt használja:
https://www.esploradores.com/wp-content/uploads/2018/04/A-Beginners-Guide-to-the-ESP8266-1.pdf
Ebben is sok egyéb hasznos példa is van. -
-
Bogyo72
csendes tag
Na de amiért ide tévedtem a fórumra.
Elsőként tisztáznám, hogy halmozottan hátrányos helyzetben vagyok.
Sem az elektronikához, sem a programozáshoz nem értek, csak nagyon-nagyon alap szinten.Mint fentebb írtam nekem is pont ilyen lapom van, az alapja egy Arduino MEGA2560. Ehhez csatolnék egy 433MHz-es adóvevő, [link] vevő oldalát. Az adó egy Pro Mini-re van kötve. A probléma, hogy a vétel csak közvetlen közelről működik, akkor is ritkán sikerül (antenna is van a cuccon). Ugyan ez a felállás UNO-ra kötött vevővel tökéletesen működik, több szoba, fal távolságból is. Kipróbáltam már több lib-et, kom. sebességet, de semmi, egyszerűen nem megy.
Most egy öszvér megoldásra gondolok, hogy ha már úgy is itt van a lapon egy ESP8266, akkor arra kötöm, a vevőt és ha működik, a vett adatokat átküldöm a Megának. -
Bogyo72
csendes tag
válasz
patesz
#12120
üzenetére
Szia!
Én is ilyen lapot vettem a megoldandó feladathoz. Én így oldottam meg a kommunikációt.
Küldés az ESP felé:
if(myRTC.minutes % 4 == 0 && myRTC.seconds == 7 && kiiras != myRTC.minutes){ char kuld_buff[20]; sprintf(kuld_buff, "%.2f,%.2f,%.2f", (double)adatok.viz_hofok, (double)szoba_ho, (double)adatok.pellet_mennyiseg); Serial3.println(kuld_buff); memset(kuld_buff, 0, sizeof(kuld_buff)); adatok_mentese(); kiiras = myRTC.minutes; }ESP felől jövő adat vétele:
if(Serial3.available() > 0){ String text = Serial3.readString(); char buff[text.length()]; for(i=0; i<(int)text.length(); i++){ buff[i] = text[i]; } sscanf(buff, "%3d,%2d,%2d,%2d,%4d,%2d,%1d,%2d", &signal, &hours, &minutes, &seconds, &year, &month, &dayofweek, &day); memset(buff, 0, sizeof(buff)); } -
patesz
csendes tag
Sziasztok,
Segítséget szeretnék kérni Tőletek.
Amatőr szinten programozgatok különböző dolgokat.
A jelenlegi projektem során egy Arduino Mega és az ESP8266 modul közötti kétirányú kapcsolat megteremtése lenne a cél, Blynk vezérléssel.
Nem sima Mega board-ot használok, hanem az itt látható [link] RobotDyn verziót.
Ebbe a lapba már integrálva van az esp. Alapvetően tök jó minden.
Blynk általi ESP vezérlés, majd itt keletkező adatok Mega felé továbbítása és ott kiolvasása soros kommunikáció segítségével működik, azonban a Mega által kiolvasott szenzor adatokat nem tudom ESP felé továbbitani és ott mondjuk Serial.println paranccsal kiíratni(, valamint Blynk appon belül kezelni).
A konkrét eset az lenne, hogy Blynk appban lenyomok egy gombot, ami aktivál egy mérést egy lézeres távmérő segítségével (ez megvan), a távolságérték már a MEGA boardon generálódik (ez is megvan. pl serial.print paranccsal ki tudom íratni), majd ez az érték vissza irányú kommunikációban az ESP-n keresztül a Blynk appban is megjelenik (ennek megoldása hiányzik).
ESPSofwareSerial, ArduinoJson és egyéb megoldásokat is próbálom, valamint nagyon sok fórumot olvasok de nem sikerül összehoznom.
Valaki csinált már hasonlót?
Általánosságban van valami titka a megoldásnak? Rossz úton járhatok?
Lenne valaki aki le tudná írni, hogy mik a főbb lépések amelyeket meg kell tennem hogy vissza felé is tudjak kommunikálni?
Előre is nagyon köszönöm a segítséget.
üdv,
patesz -
Vettem egy ilyen einkes ESP32 modult. Nagyon jó, tud mindent ami kell /mondjuk az eink felbontása gyászos, de ezt most hagyjuk/, viszont deep sleepben 1,6 mA-t eszik, ami nevetségesen sok. Volt rajta egy led, azt leforrasztottam. Ha 3,3 V-ról táplálom meg, megkerülve az LDO-t, nincs változás. Ha kihúzom a display kábelét, akkor kb. 1,1 mA-t fogyaszt, ami szintén fura, mert a displaynek csak néhány uA-t kellene fogyasztania kikapcsolva. Próbáltam üres sketcket rátölteni ami rögtön sleepbe megy, de ugyan az. Ez a bekötési ábra, hátha segít. Látott valaki ilyet, van valakinek ilyen modulja?
-
Izeka82
csendes tag
válasz
Tankblock
#12101
üzenetére
Van itthon egy IRF520-as fet modulom, most kipróbáltam, és sajnos nem jó. A negatív ágat szakítja, és ezzel pont az ellenkezőjét érem el, nagyon megugrik a fogyasztás a kikapcsolás után. Pont a pozitív ágat kellene szakítanom. Lehet feladom ezt a rádiós dolgot, és rendelek egy kisebb méretű esp-t.
-
válasz
nyirzoz
#12089
üzenetére
Az szuper, így mondjuk nincs jelentősége tényleg a DC-DC konverternek, mert a napelem úgy is tölti. MQTT-hez mit használsz? Raspberry-n futtatod? Ez lenne a következő lépés amire gondoltam, hogy valamilyen módon nagyobb adatbázisban tárolnám az adatokat.
Jelenleg az ESP32-n egy tömbbe gyűjtöm az adatokat, ahova max 1 napnyi adatot tudok eltárolni. Jó lenne, ha ennél több adatról is lenne információ. MQTT és nodered-ről olvastam eddig, mint opció, de mint a kettőhöz kell egy rpi, amihez meg eddig nem volt szerencsém, de gondolom a leírások alapján belehet üzemelni utánajárással.
-
válasz
DigitXT
#12081
üzenetére
Mind a kettő, értékelésekben is megmérték és én is megmértem egy opus BT-vel. 3200-3400 mAh-t tudott mind a kettő, amit vettem. [link]
11.11 akcióban 2 db vásárlásával 750 Ft-ból is kihozható darabja.
(#12080) nyirzoz
Nekem is így néz ki, a napelemet nem kötöttem rá. Viszont az aksi és az ESP közé ment a DC-DC konverter. Te miért nem tettél oda? Ki tudnád tolni vele a működési időt. -
válasz
Izeka82
#12060
üzenetére
ESP32-vel mérek hőmérsékletet és páratartalmat, 5 vagy 10 percenként ébresztem alvó módból és Wifi-n küldöm tovább az adatokat. 1db 18650-es aksiról (aliról rendeltem 1000 Ft 3400 mAh) 6 hónapot működik. Erkélyen van, így nem a legpontosabb eredményt adja (ház hője miatt), de közelítésnek jó. Ez az aksi szempontjából azt jelenti, hogy a ház hője miatt nem fog -20 fokba kerülni az aksi, de -5 fok már biztos volt és így decembertől május/júniusig működött (4.2 V -> 2.85 V). Tehetsz rá napelemet, ami tovább tölti napközben.
-
vargalex
félisten
válasz
gyapo11
#12075
üzenetére
Akkor már nagyon közel vagyunk az ESP8266 deep sleep fogyasztásához (ha túl nem léptük), így felesleges vacakolni vele. Az rf modult és a hőmérőket szerintem nyugodtan lehet GPIO-ról hajtani (én is azt teszem), így csak akkor terhelik a tápot, ha nincs deep sleep. Sőt, ha ESP8266, akkor nyilván az RF modul is felesleges...
-
Tankblock
aktív tag
válasz
Izeka82
#12060
üzenetére
Hello,
Több megoldás is van erre a problémára.
8MHz állítsd be a belső órát,
Amint lehet deep sleep
Ami fogyasztó nem kell azt kapcsold ki - MOS FET el szakítsd meg a táp vonalat.
LEDek, feszültség konverterek kiforrasztására javaslom, sztem step up sem feltétlenül kell.Nekem egy AtTiny13A van a projectem elején és ezzel egy évben 2x töltöm a 2 db 18650 cellát, 5 percenként mérek és MQTTbe Wifire ESP8266-val..
-
Janos250
őstag
Nem találok most rá jó leírást, mert a Google egyre használhatatlanabb :-(
Sorra olyan oldalakat hoz előre, amelyből valamelyik keresett szó hiányzik, de ezt legalább jelzi is, meg reklám oldalakra irányít.
Az egyes portok default pinjei itt vannak:
https://circuits4you.com/2018/12/31/esp32-hardware-serial2-example/
Az UART rx,tx a GPIO9, GPIO10-et használja, tehát át kell irányítani, mert az SPI flash kezelés is használja ezeket a pineket.Valamint: "The three serial ports on the ESP32 (U0UXD, U1UXD and U2UXD) 3.3 V level. They are called UART0, UART1 and UART2.
UART0 is normally used by the serial monitor. UART2 (Serial2) is available on the GPIO pins 16 (RxD2) and 17 (TxD2). UART1 is connected to GPIO 9 and 10, but these are not available because they are connected the integrated SPI flash. Fortunately ESP32 has multiplexing features, and so pins can be changed in code. This can be done with the begin command: Serial1.begin(9600,SERIAL_8N1, 21, 22);. With this command we define GPIO pin 21 for RxD1 and 22 for TxD1."
http://www.weigu.lu/microcontroller/tips_tricks/esp32_tips_tricks/index.html -
Janos250
őstag
-
válasz
Tankblock
#12052
üzenetére
Szia!
Így néz ki a forrás eleje:
#define FASTLED_ALLOW_INTERRUPTS 0#include <FastLED.h>#include <WiFi.h>#include <WiFiClient.h>#include <ESPmDNS.h>#include <Nextion.h>//kijelző konfigHardwareSerial Serial2(2); // Activate Serial communication 2 on ESP32 (RX=GPIO16 and TX=GPIO17)Nextion myNextion(nextion, 9600); //create a Nextion object named myNextion using the nextion serial port//wifi kapcoslódási adatokconst char* host="ESP32_controller";const char* ssid="------";const char* wifi_jelszo="------";//ablak nyitas erzekelo valtozokint ablakPIN1=12; //ablak1 nyitás érzékelő PIN//mozgaserzekelo valtozokint mozgasPIN1=14; //erzekelo1 PINEz pedig a hibaüzenet:
Többszörös könyvtárak találhatók ehhez: "FastLED.h"
Használt: C:\Users\User\Documents\Arduino\libraries\FastLED
In file included from C:\Users\User\Documents\esp32\source_code\center_controller\center_controller.ino:6:0:Többszörös könyvtárak találhatók ehhez: "WiFi.h"
C:\Users\User\Documents\Arduino\libraries\Nextion/Nextion.h:5:28: fatal error: SoftwareSerial.h: No such file or directory
Használt: C:\Users\User\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\libraries\WiFi
compilation terminated.Nem használt: C:\Program
Többszörös könyvtárak találhatók ehhez: "ESPmDNS.h"
Használt: C:\Users\User\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\libraries\ESPmDNSTöbbszörös könyvtárak találhatók ehhez: "Nextion.h"
Használt: C:\Users\User\Documents\Arduino\libraries\Nextion
exit status 1
Hiba a(z) ESP32 Dev Module alaplapra fordításra.A wifi.h-ből csaj 1 van, az arduino library közül töröltem.
A softwareserial probléma is ismerős, ott a nextion.h-ból kell kommentelgetni jó pár helyen, hogy ne software serial legen, hanem az ESP32 hardveres 2. serial lábai legyenek megszólítva közvetlenül.#Janos250 (12043): ha csak a nextion library-t hagyom benne, és a többit kikommentelem, akor is a töbszörös könyvtárra hisztizik a program.
-
Tankblock
aktív tag
Szia,
bemásolnád mi a hiba?
Nekem van projectem, igaz nem használok Arduinot, hanem ESP-idf et c++ szal.
CSak nyitottam egy plusz UART ot és megnéztem mit kell küldeni a Nextionnak, és fut két task, egy Tx és egy Rx... MQTT-n keresztül megy a villanykapcsolók és egy BMP280 szenzor adatokat tolok át meg vissza....#define TXD_PIN (GPIO_NUM_17)
#define RXD_PIN (GPIO_NUM_16)
#define nUART (UART_NUM_2)void initNextion() {
const uart_config_t uart_config = {
.baud_rate = 115200,
.data_bits = UART_DATA_8_BITS,
.parity = UART_PARITY_DISABLE,
.stop_bits = UART_STOP_BITS_1,
.flow_ctrl = UART_HW_FLOWCTRL_DISABLE
};
uart_param_config(nUART, &uart_config);
uart_set_pin(nUART, TXD_PIN, RXD_PIN, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE);
// We won't use a buffer for sending data.
uart_driver_install(nUART, RX_BUF_SIZE * 2, 0, 0, NULL, 0);
}
int sendData(const char* logName, const char* data)
{
const int len = strlen(data);
const int txBytes = uart_write_bytes(nUART, data, len);
ESP_LOGI(logName, "Wrote %d bytes\n", txBytes);
ESP_LOGI(logName, "#%s#\n", data);
return txBytes;
}
void TxTask(void * parameters) {
string store ="";
//store += "page0.temp1.txt=\"11\"";
//store += endData;
//UBaseType_t ip;
int qL;
mqttTopic x;
while (1) {
// OK so here is where you can play around and change values or add text and/or numeric fields to the Nextion and update them
qL = uxQueueMessagesWaiting(queueTopic);
for(int i = 0; i< qL;i++)
{
xQueueReceive(queueTopic,&x,portMAX_DELAY);
store.clear();
if( x.sTopic == "livingroom/lightswitch/status")
{
store += "page2.livingroom.val=";
store += (x.sData=="ON") ?"1":"0";
store += endData;
sendData(TX_TASK_TAG, store.c_str());
}....void RxTask(void * parameters) {....
string sdata;
while (1) {
sdata.clear();
xEventGroupWaitBits(wifi_event_group, CONNECTED_BIT, false,true, 5000 / portTICK_PERIOD_MS);
const int rxBytes = uart_read_bytes(nUART, data, RX_BUF_SIZE, 500 / portTICK_RATE_MS);
if (rxBytes > 0) {
data[rxBytes] = 0;
ESP_LOGI(RX_TASK_TAG, "Read %d bytes: '%s'", rxBytes, data);
ESP_LOG_BUFFER_HEXDUMP(RX_TASK_TAG, data, rxBytes, ESP_LOG_INFO);
sdata += (char *)data;
printf("RxTask: #%s#",sdata.c_str());
if(sdata == "livingroom ON") {
esp_mqtt_client_publish(client, "livingroom/lightswitch/switch", "ON", 0, 0, 0);
}
Valahogy így .... -
Köszönöm mindenkinek a hozzászólásokat!
_q: nem esp32-vel fogom, szerintem sima uno-val. Az esp32 amúgy is csak 1V-ig tudna mérni, a servo-nak meg 5V kell, nem hiszem, hogy össze merném kötni a kettőt, mert véletlenül rákerül az 5V az adc-re, aztán kiszáll belőle a füst, ami működteti.
Gergosz2: nagyjából értem, amiről beszélsz, de ha esetleg kapcsolási rajzot is tudnál hozzá mellékelni, azért hálás lennék.
Az analóg jel mérése nem kimondottan lenne fontos, az általad javasolt módszerrel ugyanis digitális jelet is elő lehetne állítani, ami tökéletesen megfelelne a célra, tudniillik lenne egy stall trigger jel, a köztes értékekre nem igazán vagyok kíváncsi. Milliohmos ellenállást honnan vegyek? Nem lesz az egész borzasztóan zajérzékeny?
" Egyrészt azért mert elpirítanál rajta I^2*R teljesítményt"
Nem lenne ott akkora veszteség, mert a servo-nak csak pillanatokra ugrik meg az áramfelvétele, de valóban, elfűtenék vele egy kis energiát.
"másrészt a motor villamos időálandóját is eltolod vele."
Ezt ki tudnád fejteni? -
Gergosz2
veterán
1 ohm elég sok lenne, nem tenném oda. Egyrészt azért mert elpirítanál rajta I^2*R teljesítményt, másrészt a motor villamos időálandóját is eltolod vele.
Én tennék be egy pár milliohmos söntöt, amit egy rail-to-rail műveleti erőlködőbe kötnék be. Még itt kéne hozzá feszültség referencia is, de ha nem control a cél akkor 3V3 nagy impedanciás leosztásával is megcsinálhatod. Aztán az opamp erősítését úgy lőném be, hogy 0 és 3V3 közötti jelet kapjak. A végére meg mehetne egy aluláteresztő szűrő, amit beköthetnél az AD bemenetére.
Nem hiszem, hogy szar AD lenne az ESP-be, ezzel jól kéne mennie.
-
gazso75
aktív tag
-
Sziasztok!
ESP32 + Nextion kijelzővel van valakinek tapasztalata?
Az a konkrét gondom, hogy ha a nextion.h library-t hozzáadom a kódhoz, akkor az összes library-re azt írja, hogy többszörös hivatkozás. (FastLED.h, WIFI.h, stb.)
Amit kiveszem a nextion-t, egyből minden rendebe lesz.Amit már próbáltam:
- library könyvtár törlése,
- teljes környezet eltávolítása, törlése.Kipróbáltam többféle nextion library-t, és mindegyiknél előforduló probléma.
Mindenből a legfrissebb van telepítve.
Kb így kezdődik a forráskód:
HardwareSerial Serial2(2);#include <WiFi.h>#include <FastLED.h>#include <Nextion.h>Nextion myNextion(nextion, 9600);A furcsa, hogy ha kikommentelem ezeket a sorokat, akkor is előjön a hiba:
// HardwareSerial Serial2(2);#include <WiFi.h>#include <FastLED.h>// #include <Nextion.h>// Nextion myNextion(nextion, 9600);Ötlete van valakinek?
Ha a hivatalos library-t használom, akkor még van 10 librrayvan bővül a duplikációs hibaüzenet lista: ITEADLIB_Arduino_Nextion
Próbáltam az Arduino SDK library kezelőjében letölthető Nextion library-t is, akkor is ugyanez volt a hiba.
-
Janos250
őstag
"The ESP32 has 4 SPI interfaces. SPI0 is used as a cache controller for accessing the EMIF and SPI1 is used in master mode only. These two SPI interfaces may be treated as a part of the core system and not be used for general purpose applications. However, SPI2 (called the HSPI from now on) and SPI3 (called the VSPI now onwards) are the interface ports of preference for interfacing to SPI devices."
http://iot-bits.com/esp32/esp32-spi-tutorial-part-1/
Ezt én úgy értelmezem, hogy kettőt lehet használni, de részemről ez csak sejtés.Ez is arra vall, hogy kettő használható:
https://github.com/espressif/arduino-esp32/blob/master/libraries/SPI/examples/SPI_Multiple_Buses/SPI_Multiple_Buses.ino -
BTminishop
aktív tag
sziasztok,
Wemos D1Mini ESP8266-tal fogok dolgozni egy projekten. Az a problémám, hogy kevés az analóg láb (konkrétan 1
). Erre a problémára mi a tanács? Valamilyen Shield? Arra is már gondoltam, hogy egy arduino minivel kommunikál, ami végzi a méréseket, az esp pedig továbbítja a webszerverre az adatokat. Köszi a tippeket előre. -
Azt én értem, hogy az a kérdés, de ha tudod is, hogy van kész megoldás, ami még tetszik is, és amúgy se otthon akarod összetenni, hanem venni szeretnél valamit készen, akkor miért nem veszel egy Sonoff-ot és alakítod át...
Az ESP32 csórikám amúgy is piszkosul unatkozni fog egy darab szenzorral.
-
g0dl
addikt
Hali ESP32 ből szeretnék wifi alapon lekérdezhető szenzort építeni ( hőmérséklet páratartalom)
Létezik valamilyen kész táp és ház megoldás amibe ez belerakható?
Olyanra gondolok, hogy pl. a konnektorba bedugható és valami kulturált (és biztonságos) megjelenést biztosító cuccot lehessen belőle összerakni.
A legjobb lenne valami tescogazdaságos sonoff s26 szerű doboz. -
DanielLong
senior tag
Sziasztok!
Van esetleg itt valakinek tapasztalata Nordic és/vagy Texas Instrument BLE mikrokontrollerekkel? Gondolok itt CC2650 és nrf52840-re például. Van egy elég nagy projektem, amit korábban ESP32-vel készítettem el Arduino környezetben, de muszáj lesz kisebb fogyasztású utód után néznem. A CC2650-et próbáltam a napokban, be kell valljam a TI nálam nagyon mélyre került, miután a kétéves példa alkalmazásokat csak az akkori CCS, Compiler és BLE Stack verzióval tudtam lefordítani... Rengeteget szenvedtem vele, plusz számomra nevetséges, hogy nincs egy basic, egyszerű out-of-the-box példatár, amiből könnyen lehetne copy-pastelni. A Nordicot tervezem kipróbálni legközelebb.Az is érdekelne, ha valaki adna tippeket, hogy miből kupáljam magam ki beágyazott programozásban. Egyetemi anyagok, könyv címek jöhetnek angolul is. Az alapok megvannak, de mondjuk callbackek, RTOS taskok írása nem menne fejből, ezeket szeretném alaposan átvenni.
-
válasz
Johnny_vT
#11996
üzenetére
Az megvan, hogy a BT is 2.4GHz-en kommunikál?
Minek kell külön arduino meg wifi modul, ha egy darab ESP-vel meg tudnád oldani az egészet? Nem kell router sem, az ESP access pointot tud létre hozni és telefonon rá is tudsz arra kapcsolódni.
Bár tény, hogy a wifi (tcp) kapcsolat overhead-je miatt bizonyos dolgoknál nagy lehet a késleltetés, de udp módban egy telefonos app-al ezt nagyjából ki lehet küszöbölni (ha máshogy nem megy). Lásd Victoryus kolléga korábbi hozzászólásait a témában.
Nyílt terepen elvileg 100m távolságot át tudsz hidalni vele, ha mégsem, akkor úgy tudom lehet belőle külső antennás változatot is venni. -
Janos250
őstag
válasz
DigitXT
#11889
üzenetére
"az Arduino-féle String implementáció egy nagy sz"
"nem igazán ajánlott használni."
Így igaz. A nagybetűs String valóban gyengécske, de azt is mondjuk meg, hogy mit érdemes használni:
a kisbetűs string viszont jó.
Ismét mondom, hogy nem ötegapám UNO, NANO, MEGA lapja az, amit érdemes használni, hanem valami korszerűbb,
ami - mondhatni - nem drágább, de sokkal többet tud, és az UNO-ra, stb.-re írt programok símán áttehetők rá,
ha nincs benne valami nagyon hardware közeli dolog.
Mint már többször mondtam, én mostanság az ESP32-t használom.
5 dollárért megvehető postával együtt.
https://www.banggood.com/Geekcreit-30-Pin-ESP32-Development-Board-WiFibluetooth-Ultra-Low-Power-Consumption-Dual-Cores-ESP-32-ESP-32S-Board-p-1461896.html?rmmds=search&cur_warehouse=CN
Vagy az UNO mintájára:
https://www.banggood.com/LILYGO-TTGO-ESP32-WiFi-bluetooth-Board-4MB-Flash-UNO-D1-R32-Development-Board-p-1163967.html?rmmds=search&cur_warehouse=CN
Megnéztem a régi Arduino String osztályát. Bizony elég sok tagfüggvény nincs benne, ami a C++ -ban benne van. Példának az appendet vettem,
hogy a részletesebb infók netről megtekinthetők legyenek.
Ha már itt tartottam, még pár - szintén netről szedett - példát is beleraktam.
A mostani C++11 számos olyan dolgot is tartalmaz, amit az ősrégiek nem.
Használhatjuk az alábbiakat:#include <array>#include <atomic>#include <chrono>#include <condition_variable>#include <forward_list>#include <future>#include <initializer_list>#include <mutex>#include <random>#include <ratio>#include <regex>#include <scoped_allocator>#include <system_error>#include <thread>#include <tuple>#include <typeindex>#include <type_traits>#include <unordered_map>#include <unordered_set>
Ezek közül is raktam be példákat. Hogy miért jobb pl. az array, achrono, athreadhasználata? Mert ez szabványos, bárhol ugyanígy fut, nem olyasmit tanulunk meg, amit máshol nem tudunk használni.
Íme:
Eredetileg ez egyetlen program lenne, de PH szerkesztője valamiért darabokra szedte.#define __cplusplus 201103L#include <iostream>#include <string>#include <sstream>#include <array>#include <iterator>#include <chrono>#include <ctime>#include <thread>//ESP32 Dev Modulevoid setup() {//http://www.cplusplus.com/reference/string/string/append/std::string str;std::string str2="Writing ";std::string str3="print 10 and then 5 more";// used in the same order as described above:str.append(str2); // "Writing "str.append(str3,6,3); // "10 "str.append("dots are cool",5); // "dots "str.append("here: "); // "here: "str.append(10u,'.'); // ".........."str.append(str3.begin()+8,str3.end()); // " and then 5 more"// str.append<int>(5,0x2E); // "....."std::cout << str << '\n';/*//A String (nagy S) a regi Arduino string kezelese// ebben nincs append, forditasi hibat jelezString xstr;String xstr2="Writing ";String xstr3="print 10 and then 5 more";// used in the same order as described above:xstr.append(xstr2); // "Writing "xstr.append(xstr3,6,3); // "10 "xstr.append("dots are cool",5); // "dots "xstr.append("here: "); // "here: "xstr.append(10u,'.'); // ".........."xstr.append(xstr3.begin()+8,xstr3.end()); // " and then 5 more"*///Ez is egy netrol vett pelda//https://stackoverflow.com/questions/2066184/how-to-use-c-string-streams-to-append-intstd::stringstream stream("Something ");stream.seekp(0, std::ios::end);stream << 12345;std::cout << stream.str();// C++11 array//https://en.cppreference.com/w/cpp/container/array// construction uses aggregate initializationstd::array<int, 3> a1{ {1, 2, 3} }; // double-braces required in C++11 prior to the CWG 1270 revision// (not needed in C++11 after the revision and in C++14 and beyond)std::array<int, 3> a2 = {1, 2, 3}; // never required after =std::array<std::string, 2> a3 = { std::string("a"), "b" };// container operations are supportedstd::sort(a1.begin(), a1.end());std::reverse_copy(a2.begin(), a2.end(),std::ostream_iterator<int>(std::cout, " "));std::cout << '\n';// ranged for loop is supportedfor(const auto& s: a3)std::cout << s << ' ';// C++11 chrono//https://en.cppreference.com/w/cpp/chronoauto start = std::chrono::system_clock::now();std::cout << "f(42) = " << fibonacci(42) << '\n';auto end = std::chrono::system_clock::now();std::chrono::duration<double> elapsed_seconds = end-start;std::time_t end_time = std::chrono::system_clock::to_time_t(end);std::cout << "finished computation at " << std::ctime(&end_time)<< "elapsed time: " << elapsed_seconds.count() << "s\n";// C++11 thread//https://en.cppreference.com/w/cpp/thread//https://thispointer.com/c-11-multithreading-part-1-three-different-ways-to-create-threads/std::thread threadObj1(thread_function);std::thread threadObj2(thread_function);if(threadObj1.get_id() != threadObj2.get_id())std::cout<<"Both Threads have different IDs"<<std::endl;std::cout<<"From Main Thread :: ID of Thread 1 = "<<threadObj1.get_id()<<std::endl;std::cout<<"From Main Thread :: ID of Thread 2 = "<<threadObj2.get_id()<<std::endl;threadObj1.join();threadObj2.join();}void loop() {}// mert a chrono minta hasznaljalong fibonacci(unsigned n){if (n < 2) return n;return fibonacci(n-1) + fibonacci(n-2);}//// mert a thread minta hasznaljavoid thread_function(){std::cout<<"Inside Thread :: ID = "<<std::this_thread::get_id()<<std::endl;} -
zsolti_20
senior tag
Fuhh köszönöm mindenkinek, nem hittem volna, hogy ennyi válasz érkezik majd.
Az ESP8266-ról le kellett mondanom, mert kifogytam a pinekből. Viszont a megán bőven van minden ami csak kell. Azért is választottam az utóbbit mert több leírást találok hozzá.
Nem értem az ESP8266-on miért csak D8-ig vannak a digitális pinek. -
Janos250
őstag
válasz
zsolti_20
#11880
üzenetére
Mindig azt szoktam mondani, hogy mi a csudáért akarjuk egy nanoban, unoban tornászmutatványokat végezve elhelyezni az alig férő kódot, amikor sokkal korszerűbb elemei is vannak az Arduino vonalnak. És ez nem a mega, hanem pl. STM32, ESP8266, ESP32. Ezekben ugyanaz a program ugyanúgy fut le (általában), de sokkal nagyobb a memória, több a perifériás lehetőség, vagyis minden szempontból jóval korszerűbbek úgy, hogy gyakorlatilag nem, vagy alig drágábbak, mint pl. egy UNO.
-
Janos250
őstag
Új hozzászólás Aktív témák
- TCL LCD és LED TV-k
- ASUS ROG csúcslap érkezett, ezúttal a "lopakodó" fajtából
- Megbüntették, ezért feloszlatná az EU-t Elon Musk
- Dell notebook topic
- Pánik a memóriapiacon
- The Game Awards 2025 - Íme a nyertesek!
- Project Motor Racing-Straight4 Studios
- Xiaomi 14T Pro - teljes a család?
- Programozás topic
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- További aktív témák...
- Intel Core i5 10400F/GeForce RTX 4060/16GB DDR4 RAM/500GB SSD konfig eladó
- AMD Ryzen 7 5700/Radeon 7800XT/32GB DDR4 RAM/1TB SSD konfig eladó
- Iphone 13 128Gb, 100% akku, gyönyörű, sok tartozék
- AMD Ryzen 7 5700X3D/GeForce RTX 4070 12GB/32GB DDR4 RAM/1TB SSD konfig eladó
- Ryzen 5 4500/ GeForce RTX 3070/16GB DDR4 RAM/512GB M.2 SSD konfig eladó sok-sok garival
- Apple iPhone 13 Mini 128GB,Újszerű,Adatkabel,12 hónap garanciával
- HIBÁTLAN iPhone 14 Pro 128GB Space Black -1 ÉV GARANCIA - Kártyafüggetlen
- Apple iPhone 15 128GB, Kártyafüggetlen, 1 Év Garanciával
- GYÖNYÖRŰ iPhone 13 mini 128GB Blue -1 ÉV GARANCIA - Kártyafüggetlen, MS3847
- ÁRGARANCIA!Épített KomPhone i5 10400F 16/32/64GB RAM RX 7600 8GB GAMER PC termékbeszámítással
Állásajánlatok
Cég: ATW Internet Kft.
Város: Budapest
Cég: BroadBit Hungary Kft.
Város: Budakeszi

(Xamarin)
ahol megtervezed a folyamatot. Igy csak egy bongeszo kell...



Kár, hogy nekem nem jutott ilyen eszembe.
Sem az elektronikához, sem a programozáshoz nem értek, csak nagyon-nagyon alap szinten.

). Erre a problémára mi a tanács? Valamilyen Shield? Arra is már gondoltam, hogy egy arduino minivel kommunikál, ami végzi a méréseket, az esp pedig továbbítja a webszerverre az adatokat. Köszi a tippeket előre.
ekkold

