- Milyen belső merevlemezt vegyek?
- Gaming notebook topik
- AMD Ryzen 9 / 7 / 5 / 3 5***(X) "Zen 3" (AM4)
- 3D nyomtatás
- OLED TV topic
- Milyen videókártyát?
- Bluetooth hangszórók
- Mikrokontrollerek Arduino környezetben (programozás, építés, tippek)
- Milyen házat vegyek?
- Gamescom 2025: Jubileumi csúcs-VGA-t villantott az ASUS
-
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
-
vargalex
félisten
válasz
agent_k #15853 üzenetére
Ha jól olvastam, a többiek már írták: developer board-al (ilyen ugye a wemos s1 mini is) nagyon nagy lesz a deep sleep fogyasztás egy csupasz esp8266-hoz képest. Ha jól láttam, a kolléga az én kódomat (is) linkelte. Nálam percenként van ébresztés, 10 percenként wifivel (addig csak RTC memóriába tárolja a mért hőmérséklet és feszültség adatokat) és küldi a szervernek HTTP POST-al. Így 1 db 18650-es cellával átlag 4-5 hónapot elmegy. 3 V alatt a szerver oldal e-mail-ban riasztást küld, hogy cseréljem a cellát.
-
válasz
agent_k #15855 üzenetére
Én egy ilyesmi 0.9V to 3.3V konvertert használok: [link] Ez azért is jó, mert ha 2.8V körülig használom az aksit, akkor még meg van a 3.3V, valamint 4.2V helyett is kisebb feszültséggel terheli.
#15852Tankblock
Nem mértem még meg soha, de ahhoz valami áramkör kellene, hogy monitorozza, addig meg nem mentem el. Gyári ESP32 adatlapot néztem csak. Közben most jut eszembe, ESP32 modult használok amihez terveztem egy egyszerűbb PCB-t, nem is a dev boardot, 2 éve csináltam, el is felejtettem már a részleteketViszont egyéb áramkörökhöz kínai kész paneleket vettem, azt már nem akartam magam megépíteni: TP4056, hőmérő modul, 0.9-3.3V konverter.
-
Tankblock
aktív tag
Milyen board? Amúgy az ESPNow spórolsz egy csomót (időben a Wifi felcsatlakoztatáshoz képest töredéke ezáltal a felhasznált energia is az lesz), anno ez még nem volt elérhető.....
Mivel oldottad meg a sleepet? Még lehet játszani a ULP vel --> azon keresztül lekérdezni a szenzort aztán ha van változás csak akkor felkelteni a magokat.....az hogy 1 v 2 cella attól is függ mekkora a kapacitása... Nálam a 2 é szetintem nincs 2000 mAh, mivel használt laptop akksiból van. Simán lehet kapni 3000mAh új Lion akkumulátort normális gyártótól (nem kínai XD )
-
válasz
agent_k #15795 üzenetére
Nekem 1db 18650 fél évig bírja kültéren erkélyen ESP32-vel. Alvó módban van, kb 10 percenként ébred, mér hőmérsékletet és párát majd egyből küldi wifi hálózaton ESPnow-al a benti ESP32-nek az adatokat. Gyári development boardot használok, nem forrasztottam le róla semmit. 2db aksival 1 évig is mennie kell. Ha kerül rá kijelző az csökkentheti az üzemidőt.
-
válasz
agent_k #15797 üzenetére
ESP8266-01-hez ilyet csináltam
(És ez az, hogy ezzel mindig pöcre megy a feltöltés, futnak rajta a kódok...) -
válasz
agent_k #15797 üzenetére
amateur
Rá se ránts, nem azért írtam
csak azt hittem vmi új kínai gyártó.
erre is simán rátölthetem a kódot és működik
Annyira nem simán. A kódot egy külön beszerzendő USBAsp programozó segítségével fogod tudni feltölteni, de a működése azonos lesz, mivel ugyanaz a μC.
van tapasztalatod vagy googli a barátom?
Nincs sok saját tapasztalatom ESP-vel, de vannak többen a topikban, akik segíteni fognak!
Amit írtam, a korábban itt olvasottak alapján írtam. Használd a keresőt itt a topikban!
-
agent_k
őstag
Arra gondoltam persze...
átnéztem többször, de richtig, hogy elírtam a fő komponens nevét... amateur"csupasz ESP8266"
és erre is simán rátölthetem a kódot és működik ahogy a wemos, küldi az adatot és örülhetek? Energiafogyasztásban van tapasztalatod vagy googli a barátom? -
-
ekkold
Topikgazda
válasz
Undoroid #15762 üzenetére
Ha a szoftver (és a processzor is) ugyanaz, akkor a harver egyéb részében lehet különbség ami miatt nem megy. A nano és az uno esetében pl. a lábak számozása miatt lehet kavarodás, az LCD rákötésében. Illetve lehet, hogy a nano-nak pont valamelyik LCD-hez használt lábával van gond. Szoktam én is 2x16-os vagy hasonló alfanumerikus LCD-t használni, mert könnyen használható, egyszerű, és olcsó - egyedül a sok vezeték zavar. Ez utóbbit úgy oldottam meg, hogy egy 74HCT595 léptetőregiszter IC-vel vezérlem, így mindössze 2db I/O láb kell hozzá. Persze így saját drájvert kellett írnom hozzá, viszont az egyszerűbb és gyorsabb lett mint a gyári. Azonban történetesen uno/nano-ra nem írtam meg a szoftvert, mert olyanon nincsen, csak BluePill-en, ESP8266-on, és arduino DUE panelen használtam eddig.
Erről egy kis cikket is írtam: [link] -
Drótszamár
őstag
Üdv!
Adott egy ESP32-es eszközhöz készült légnyomás szenzor. Van hozzá Arduino library.
Szenzor: QMP6988
Github library: [link]Arduino alatt össze-vissza hülyeségeket mér amikor nem esp32-es lapra fordítom.
Ha jól gondolom számábrázolási probléma lesz.Az elején a típus definíciót megpróbáltam áttenni ATmega 1284P procira.
Picit jobb az eredmény, de azért még nem a légnyomást kapom eredményül.
Elrontottam valamelyik típust?//kommentben az eredeti ami az esp32-őn rendben működik.
#define QMP6988_U16_t unsigned int //unsigned short
#define QMP6988_S16_t int //short
#define QMP6988_U32_t unsigned long //unsigned int
#define QMP6988_S32_t long //int
#define QMP6988_U64_t unsigned long long // Ide mi kéne?
#define QMP6988_S64_t long long //És ide?
Ide mit kéne? Ez esp32-őn 128 bites ha jól tudom. ATmega 1284P procira van ilyen?
unsigned long longÉs ide?
long long -
Janos250
őstag
válasz
ekkold #15749 üzenetére
Sokáig én is az STM32 alapúakat használtam, én is meg voltam velük elégedve. Az egyes perifériák regisztereinek cím alapján való elérése is kényelmes, jól dokumentált, így könnyen el tudtam intézni bármit, könyvtár használata nélkül.
Azért mindenre az ESP32-t használom, mert
1. a két mag más programozási logikát enged meg
2. a WiFi nálam gyakran kell, mert mindent úgy csinálok, hogy telefonról legyen vezérelhető IP alapon
3. ha már ezt használom, nem akarom keverni, mert abból csak káosz van.
4. igaz, hogy drágább, mint az STM32 (évekkel ezelőtt kb. 800 Ft-ért vettem az egyszerűbbeket STM32-ből, az ESP32 meg ma is 2000, vagy fölötte van, mióta az ÁFA bejött), de összességében nem ezen múlik a boldogság -
ekkold
Topikgazda
válasz
Janos250 #15748 üzenetére
Az ESP32 és az ESP8266 is jó processzor, mindkettő jóval erősebb mint egy sima arduino. Viszont drágábbak mint az STM, többet fogyasztanak, és nem kell mindenhez Wifi sem.
Az STM procit használva a program matekozós része (pl. a forrasztóállomásom esetében a PID) olyan gyorsan fut le, hogy szinte elhanyagolható az erre fordított idő. Az A/D konverterre várakozás, vagy pl. az opampok beállási idejét kivárni sokkal több idő. Még mindíg meg tudok lepődni, mekkora számítási teljesítménye van ennek a procinak. Van pl. arduino due panelem, ami szintén igen gyorsnak számít, de a BluePill annál is gyorsabbnak tűnik. -
Janos250
őstag
válasz
Tomika86 #15706 üzenetére
Lehet, hogy nagyon rossz megoldás, de én az egyik panelomon így csináltam:
Input feszből DC/DC konverter csinál kb 7 voltot.
A 7-ből LDO 5-öt, illetve 3.3-at.
Jumperezhető, hogy az ESP32 közvetlenül 3.3-at kapjon, vagy a Vin-re 5 V-ot.
Ez utóbbinak - elvileg stabilabbnak kéne lenni, mert közvetlenül a panelon van, nincsen hosszabb hozzávezetés. -
Tomika86
senior tag
Tanácstalan vagyok, hogy csináljam a tápellátását.
Kapcsolóüzeműt kizártam egyenlőre, vagyis biztosat nem találtam, pedig jobb lenne hatásfokot tekintve.
Ezek lesznek a kocsi 12v-ján:
Nextion 7" kijelző 5V, 430mA
Analóg 5V szenzorok ~ 50mA
ESP32 WROOM 32 3,3V, ~800mA
2db DS18B20 3,3V-on ~ 3mA
2db LM1815 áramkör, induktív szenzorral 3,3V-on ~ 15mAJelenleg 12von, biztosíték,sorban vele dióda, utána supressor dióda a föld közé 15Vos. Aztán sorban tekercs és 1000uF elektrolit kondenzátor.
Aztán 7805 a Nextion kijelzőnek
7805 az analóg szenzorokhoz és ebből az 5V-ból a 3,3V LM1117 stab ic-vel.
A gondom az hogy fűteni fog szerintem minden. Illetve az 5v-3,3v is necces.Köszönöm az eddigi segítségeket is!
-
Tomika86
senior tag
Köszönöm
A helyén a max 15Vból lenne 2db 7805 stab IC.
Egyik a Nextion kijelző.
Másik az arduino volt. De most esp32-re alakítottam át.
Ebből csinálnék TMS1117 stab icvel 3,3Vot.Lenne az SD kártya a 3,3V-on.
3db FET kimenet.
2db LM1815 ICs induktív érzékelős áramkör.
Illetve az ESP32
Nextion ha jól tudom tud 3,3Vos adatbusszal kommunikálni. -
Janos250
őstag
válasz
Tomika86 #15694 üzenetére
Csak úgy hirtelen ránézésre:
Micro SD 1/2 tippem szerint biztosan rossz, mert azokat a lábakat a belső flash használja.
Én micro SD-re a VSPI-t használom. (mert csak)
https://randomnerdtutorials.com/esp32-microsd-card-arduino/
"GPIO6 to GPIO11 are connected to the intagrated SPI flash integrated on ESP-WROOM-32"
A lapok nagy részén ki sincs vezetve lábhoz. -
Janos250
őstag
válasz
Tankblock #15687 üzenetére
Igazad van, visszanéztem, tényleg csak C-t írt a srác. Én - lévén Arduino topic - automatikusan C++ -t gondoltam. Bár sose tudom, hogy az UNO, Mega, stb hol tart a C++ verziókban. Az ESP32-re tudom, hogy az a 2011-nél. Ha valaki tudja, leírhatná, hogy okosabb legyek! :-)
-
vegyszer
addikt
Sziasztok!
Olyat lehet csinálni ESP32 szintén, hogy mind Bluetooth, mind wifi csatornán keresztül próbáljon csatlakozni, de ha az egyik sikeres, akkor a másikat hanyagolja? Esetleg prioritást adni neki, hogy akkor keressen WiFi-t, hogyha mondjuk 20s alatt se all fel a Bluetooth kapcsolat, és akkor arra is azonos időt szánjon, majd vissza az elejére.
-
Janos46
tag
Sziasztok.
Egy BH1750-et próbálgatok változó sikerrel. Betöltöm, elindul rendesen és méri a fényerőt. Egy idő után leáll és:
[BH1750] ERROR: received NACK on transmit of address
Error initialising BH1750
BH1750 Test begin
[BH1750] Device is not configured!
Újra indítva is marad ez az állapot. Azonban ha másnap ismét elindítom mér, de újra kezdi az egészet. Gondoltam hátha melegszik, habár nem érezni, de azért beraktam a hűtőbe, próbáltam sztaniollal közös potenciára hozni, de semmi nem számít.
Mi lehet az oka ennek és az alábbinak is?
Ha bármilyen programot betöltök, akkor rövid idő után az alábbit írja ki:
Érvénytelen könyvtár található ebben: C:\Users\picur\Documents\Arduino\libraries\arduino-esp32-master: nem található fejfájl (.h) itt: C:\Users\picur\Documents\Arduino\libraries\arduino-esp32-master
Ettől függetlenül működnek a programok. Az érdekesség az, hogy ha csak az üres könyvtár van, akkor is ezt írja ki. -
Janos250
őstag
"nem üti-e egyik a másikat mert ugyan azon a belső áramkörön van és hiába van több helyre kivezetve, egyidejűleg nem lehet mindkettőt használni."
Nem. Mindnek külön, független belső hardvere van.
ESP32-n bármelyik eszköz (UART,SPI, I2C, stb) lába bármelyik lábra átdefiniálható, ez csak nanosec nagyságrendű lassulást jelent.
UART-ból van három.
Serial, Serial1, Serial2. Feltöltés, debug az elsőn (Serial) megy, az 1, és a 2 szabadon használható nem ütik egymást, de a Serial1 default lábait át kell címezni, mert azt memória kezelésre használja az ESP32. Jól használhatóak.
SPI-ből kettő hardware van (VSPI,HSPI), de akármelyikre rá lehet rakni egy csomó eszközt, csak akkor a chip selectet nem automatikusra kell állítani, mert akkor az mindig a D5 lesz, és összeakaszkodnak a készülékek. Minden eszközhöz el kell határozni egy CS lábat, és azt az eszköz megszólítása előtt aktiválni, majd deaktiválni. Én csak a VSPI-t használtam, de azt több eszközzel, azaz készülékenként külön CS lábbal.
Itt egy példa:uint16_t readVSPI_MAX6675(uint8_t chipSelect){
uint8_t Hbyte;
uint8_t Lbyte;
uint16_t readed16bit ;
SPI.beginTransaction(SPISettings(100000, MSBFIRST, SPI_MODE1)); // Set the settings to work with SPI bus
digitalWrite(chipSelect, LOW); // Select slave
Hbyte = SPI.transfer(0);
Lbyte = SPI.transfer(0);
digitalWrite(chipSelect, HIGH); // Release slave again
SPI.endTransaction();
readed16bit = ((uint16_t)Hbyte)<<8 ;
readed16bit = readed16bit + Lbyte;
return readed16bit >> 6 ;
} ; // end readVSPI_MAX6675Persze több bájtot is lehet egyszerre olvasni, de itt - már nem tudom miért - így oldottam meg.
SPI-nél vigyázni kell arra, hogy:
Ha több bájtot írsz/olvasol, akkor a CS-t nem lehet háborgatni amíg mindet be nem olvastad.
Ha a default CS-t használod, akkor - általában - nem lehet a bájtokat egyesével olvasni, mert a CS aktiválása ezt-azt indít a készüléken is, ezért default CS láb esetén a több bájt olvasó függvényeket kell használni.I2C-t még nem használtam, most fogom használni EEPROM kezelésre.
Mivel I2C-nél nem kell külön CS láb, ezért nem növeli a lábak számát, ha több I2C eszközt használsz, SPI-nél viszont igen, minden eszközhöz külön CS láb kell.
Ha nem használsz sok lábú párhuzamos adatátviteli eszközt, akkor azért eléggé iparkodnod kell, ha túl akarsz futni az ESP elérhető lábain, mert elég sok az.
Pontos ADC-re nem volt szükségem, így azt nem tudom."Nextion tx, rx kell uart.
Sd kártya spi
Giroskóp i2c
Vagy ugyanazokat használják lábon?"Nem. Külön lábakat használnak alapértelmezés szerint is. Ha SPI-n csak az SD kártyát használod, mehet a default D5 CS.
-
Dißnäëß
nagyúr
Kedves Urak, elektro szakik !
IT-s vagyok, nem villanyosmérnök. Tudnátok nekem kezdő hobbistaként egy egyszerű "képletet", támpontot ajánlani arra, hogy
- mekkora terhelés
- mennyivel csökkenti
- milyen stabilizátor esetén
- a stabilizátor és Graetz-híd előtt lévő, bemeneti AC-t ?Hogy életszerű legyek: rendeltem netről egy 60VA toroid trafót, mondván, 5V AC * 1.414 = ~7V DC, a stabilizátornak pedig bőven ez alá esik az input tartománya. (Stabi és egyenirányító egyben).
Nos, megjöttek a motyók, trim potival beállítottam az 5V DC-t a kis áramkörön, dörzsölöm kezeimet nagy boldogan.
Kötöm rá a Pi1-et, valami élet van, de nem boot-ol. Pi4 - szintén nem boot-ol. Arduino Leonardo - tökéletes. Hinnye.
Rámérek terhelve az áramkört is, hát a Pi-k 4.3 illetve 4.1 V-ig is le-le szopják a feszt, miközben indulgatnak, azaz indulgatnának, és ingadozik a feszültség masszívan. Ó mondom de jóó....
Nézem a stab eszköz adatlapját, 1V dropout, hmm, akkor még mindig van 6V-om DC-n utána, elméletileg (?).. de a bemenetre eleve >=6.5V -ot ír, akkor miért hirdeti a hirdető ezt a teljes board-ot úgy, hogy Input voltage: 2.5 to 27 V AC ?
Ennek szerintem ezek alapján nem 2.5V AC az indulója, hanem jóval felette valszeg.
A célom az lett volna, hogy 2db Pi-t elvigyen, 1 Arduino-val a trafó + stabi kombó, de valszeg a Pi-k nagyobb áramfelvétele annyit ejt a feszen, hogy róluk le kell mondanom, HACSAK nem nézek valami kisebb kieg. trafót, ami 5V-ot felvisz mondjuk 8V-ra, és utána kötöm. Vagy amit egy ismerősöm mondott, hogy még vagy 10 plussz szekunder menetet a trafóra rátekerhetek, hát ezt nem akarom szétszedni nyilván... VAGY csak 3.3V-ra használom, de arra meg overkill mind a méret, mind a teljesítmény-bírás (van egy ESP-m, ahhoz jó lehet amúgy)..
Ha esetleg ezt a trafót máshol szeretném használni, milyen - új - trafót nézzek ide ? Van egy csöves erősítőből származó másik toroidom, két szekunderrel, az egyik 6.3V-os (fűtés), azzal etetve említett stabi áramkört, gyönyörűen boot-ol a két Pi és 5V DC betonstabil.
Ehhez az új trafóhoz kellene nekem valamiféle képlet, hogy a jövőben elkerülhessek ilyeneket. Tudom, hogy 6-7-8V körüli már tökjó lenne a mostani célra, de ha még többet akasztanék rá (és bírják a szekunderek), csak tudjam, hova eshet a fesz adott terhelésre, és mi fog történni nagyjából.
Szóval egy pár perc "fizikaórára" lenne szükségem.
A gyökkettős ökölszabály csak terheletlen AC-DC konverzió esetén műxik, így jó lenne tudnom, X AC-ből mennyi DC-t remélhetek, milyen terhelések esetén. Gondolom nem csak stabi, hanem dióda függő is (?)..
-
válasz
Tomika86 #15629 üzenetére
Én ilyet használok: [link]
Lehet legközelebb már nextiont vennék, bár ez se rossz ha működik. Betekintési szöge fentről és oldalról jó, másik 2 irányból nem az igazi. Elsőt amit rendeltem egy idő után csíkozni kezdett ha melegszik. Másodikat használom azóta, szerencsére azzal nincs gond. Egyedül az ára zavar a nextionnak. Ha kevés a pin esetleg, akkor egy plusz IC-t kell beiktatni ami többszörözi a pineket, most nem ugrik be a neve.ADS1115-re ha jól emlékszek 4 analog bemenet köthető. AZ ESP32 lábai azért lehet esetleg kevés, mert az AD1115-nek kell pár láp az I2C kommunikációhoz, nextionnak is kell pár, szinten SD-hez is.
-
válasz
Tomika86 #15627 üzenetére
Igen én is azt használom az időjárás állomásnál az aksi feszültség mérésére. Több, mint amire szükségem van, de mivel van hozzá minta kód és én is ezt találtam meg, ezért ezt választottam. Szerintem amihez találsz arduinos kódot az mind jó lehet.
Nekem az ADC az egyedüi hátrány. Ha valakinek sok pin kell akkor esetleg az még hátrány lehet. A jelszint alatt ha a 3.3V-ot érted az nekem például előny, többnyire ilyen alkatrészeket használtam, persze ez felhasználás függő.
A kíniai fejlesztői panelek egy részén megy az automatikus kód letöltés minden gomb megnyomása nélkül, másiknál meg csak akkor, ha lenyomom a flash gombot és lenyomva tartom. Ez nem ESP32 hiba, nem is értem mi az oka, van hogy egyik nap még jó másnaptól meg nem megy csak gombot lenyomva a letöltés.Wifi nagy előny, ESPnow-al kettő eszköz tud egymással kommunikálni wifin. Én rendeltem utóbb 2 db arduino mini-t ha esetleg kellene legyen, de ezen kívül csak ESP32-ből van 2 db. Ha vennem kellene maradnék az ESP32-nél.
-
Tomika86
senior tag
-
Tomika86
senior tag
Sziasztok!
Csak egy kérdés,
Amit mega2560ra megírtam, az működik ESP32-vel is?
Arra gondoltam, lehet inkább azzal mennék tovább, ami plussz kell, hogy 3,3Vról megy mindene.
ADC esetén a 0-5v ellenállásosztóval megoldható 3,3vra?Köszönöm
-
Istv@n
aktív tag
Sziasztok!
ESP32 boardon szeretnék eepromba írni egy tömbből, de csak akkor ha a az adott indexen lévő értékek nem azonosak.
A megvalósítást a következőképpen gondoltam:for (int i = 0; i <= 127; i++) {
if ( EEPROM.read(i) != t[i]) {
EEPROM.write(i, t[i]);
delay(20);
Serial.print("EEprom iras: ");
Serial.println(i);
}
}
EEPROM.commit();A helyzet az, hogy a for ciklus nem áll meg 127 után, hanem megy a végtelenségig....
Miért lehet ez?
Boot után, egy hasonló ciklussal íratom ki az eeprom értékeket a soros portra, és az rendben működik.... -
tonermagus
aktív tag
válasz
Janos250 #15587 üzenetére
Nagyon szépen köszönöm a részletes kifejtést.
Ez az egész ESP32, dual core-os dolog nekem teljesen új még, szóval bocsi a sok kérdésért, de még mindig van pár fekete folt:- Ha a setupban létrehozok egy taskot amit a core0-án futtatok, akkor az folyamatosan futni fog végtelen ciklusban? Nem kell többet meghívnom? Mert ebben az esetben a GPS kezelésére teljesen jó lenne. Csak a Core0 írná a változókat (fix.latitude, fix.longtitude, bearing, heading, stb...) a loopban pedig a Core1-el csak olvasnám ezeket. Csak egy darab taskom lenne, az egész programban, az is Core0-ra, és csak GPS-t csinálna végig. Ez így nagyon jól hangzik, bízom benne hogy így is van.
- A PWM-es hardveres dolgot hogy érted? Nekem ahogy írtam az volt a gond az arduval, hogy olvasgattam a PWM-ket, néha bejött egy megszakítás és már ugráltak is a PWM értékek. Ez gondolom itt is simán előfordul. Igazából 5-6 PWM portot kezelnék, illetve 2 hadwares Serial porton kommunikálnék. Bízom benne hogy ezt is szépen lekezeli az ESP32
- Wifi megszakítás: olyanon agyalok hogy tennék bele programozói módot, amikor is a webszerver élne, egy felületen átadnék neki pár változót induláskor, és ezután megy tovább a program és lekapcsolja a wifit. Létezik ilyen? Mennyire egyszerű ez a webes felületen értékátadás változóba dolog? Egyáltalán lekapcsolható-e a wifi? -
Janos250
őstag
válasz
tonermagus #15585 üzenetére
"Kicsit utánaolvasgattam"
Jó helyen olvastál. :-)
"Tehát az megoldható hogy a setupban létrehozok...."
Igen, így csináljuk.
Alapból a WiFi a core0-n fut, a loop pedig a core1-en.
Ezért én a core0-ra olyasmiket szoktam rakni, aminél nem baj, ha bejön egy WiFi megszakítás, mert én általában használom a WiFit is.
Ha van time kritikus alkalmazás, azt a loopba teszem, és a core1-re akkor nem teszek másik taskot. Ez persze nem gyakori, mert a PWM-et meg hasonlókat a hardware kezeli, nem kell vele foglalkozni, hogyan csinálja.
Ezek egymástól függetlenül párhuzamosan futnak egymás mellett.
Változó: amit Weiss válaszolt. Én olyanokat szoktam használni, hogy - ha lehet - csak egyik task írja, a többi csak olvassa."A programnyelv nagyban különbözik? Arduino IDE működik?"
Mivel az Arduinonak nincs saját programnyelve, a C++ -t használja, így mindkettőnél ugyanaz.
Az ESP32 a C++2011-et használja, ebben már vannak olyan dolgok is, ami a C++ korábbi verzióiban nincs benne, így azokat is használhatod.
A stringről egy mondat: A C++ a "string" csupa kisbetűvel típust használja, de az arduinoba beletettek egy String (nagy kezdőbetűs) stringet is. Ha pl. paraméter a string, akkor nem lehet keverni. Én általában a kisbetűset használom, de van, hogy kell a String is.
Az átjárást a kettő között a C stílusú string, vagyis a karaktertömb jelenti.
Az Arduino IDE ugyanúgy működik, mint bármelyik másik lapnál.
"összevesztek a timereken."
Az ESP32 perifériái általában "saját hardware timert" használnak.
"Vagy ezt nem így kell elképzelni"
De, jól mondod. -
tonermagus
aktív tag
válasz
Janos250 #15578 üzenetére
Igazából az ESP32-re átállás sem kizárt. Ezek szerint azzal lehet jobban járnék.
A programnyelv nagyban különbözik? Arduino IDE működik?Nekem igazából a legnagyobb problémám az egész projekt alatt az volt, a Library-k összevesztek a timereken. PWM-et olvastam, majd egy library beleszólt és az 1500-as PWM érték egyből 1765 lett. Sikerült egy másik library-t találnom, ami másik timeren használja a szervókat, de az kifejezetten Arudinohoz lett megírva. ESP32-vel beleeshetek ugyan ebbe a hibába? vagy az okosabban kezeli a timereket/interrupotokat?
Szerk: aprobó két mag... Azzal az is megoldható hogy 1 mag csak a GPS-el foglalkozik, a másik mag pedig minden mással? Az elég jól hangzik... Vagy ezt nem így kell elképzelni: Egyik szál gyakorlatilag egy loop amiben csak a GPS NMEA sorainak összeállítása a feladata, majd a fixálás elvégzése, a másik szál pedig olvassa/írja a PWM értékeket, stb... -
Janos46
tag
Sziasztok.
Immár itthonról próbálom folytatni az arduinoval kapcsolatos játszadozást, de megint abba a helyzetbe kerültem, hogy az Arduino nem ismeri fel a kinti munkáimat. A gép érzékeli amikor csatlakozok pl. ESP3288-al, de nem látom a címét a router (a cím megegyezik a kintivel 192.168.1.1) (TpLinkWR1043 | suste/headless@OpenWrt@0.8.1 Barrier Breaker 14.07) listában.
Előre is köszi a segítséget. -
Janos250
őstag
válasz
tonermagus #15576 üzenetére
Én átálltam, már rég. Amíg nem volt ESP32, addig az STM32 volt a kedvencem. Ugyanúgy Arduino rendszerben használtam, alig kellett valamit módosítani a programokon, mert a driverek - általában - meg vannak írva ugyanúgy rá Arduino alá. A különbség, hogy másik könyvtárból veszi a drivert, de ezt te nem is érzékeled. A nagyon hardver közeli dolgok persze mások. Bár egy ideje már nem használom, mert mindent ESP32-re tértem át több ok miatt: gyorsabb , két valós mag van benne, amíg az egyik foglalkozik valamivel, addig a másik pl. kezelheti a perifériákat, és az Arduinoba való illesztése is jobban sikerült - szerintem - mint az STM32-nek, gyakorlatilag elvétve kell valamit változtatni.
Összefoglalva: én mindenképpen átállnék az STM32-re, de ez mindenkinek a saját döntése kell legyen, hogy ne azt szidja utólag, aki "javasolta". Vagyis nem javasolok semmit, csak azt mondom el, én hogyan csinálnám.
-
Janos250
őstag
válasz
tonermagus #15563 üzenetére
Szerintem igen. A napokban mértem, de ha megtalálom, lemérem újra. Mivel én ESP32-vel mértem, ami ugyebár 3.3 V-os, 5V-al meg aztán végképp jó lesz. Én ennél jobbat csak az IRLB4030-at tudom.
-
ekkold
Topikgazda
Ennek több oka is van.
- Kínából rendelve kb. egy árban van a kettő (de lehet, hogy az FTDI picit drágább)
- ST-Link esetében a BluePill-en nem kell a jumpert átrakni a programozáshoz, míg soros portos esetben át kell rakni a jumpert minden programfeltöltéskor.
- ST-Link használata esetén sokkal gyorsabb feltölteni a programot, gyakorlatilag még 1 másodperc sem kell hozzá.
- BluePill oldalán külön tüskéken ott van az SWDIO, SWCLK, ezekre kényelmesebb csatlakozni.Ettől függetlenül abban igazad van, hogy sima soros porton is feltölthető a program. Tehát mindkét megoldás használható. Sőt van egy harmadik megoldás is: ha feltöltjük rá a boot-loadert, akkor onnantól a rajta levő USB-n keresztül is lehet programozni, így gyakorlatilag az USB kábelen kívül már semmi sem kell hozzá. Kipróbáltam mindhárom módszert, és nekem az ST-Link használata jött be leginkább.
(Csak zárójelben: ugye nem kevered össze az ESP32-t és az STM32-t ?)
-
Arduino IDE-vel fordított programot valahogyan le lehet menteni bináris formában, illetve után a binárist direktbe rátölteni akár az ESP32-re, akár egy arduino mini-re?
Jelenleg az IDE-ből fordítom és töltöm le a kódot, viszont ha egy könyvtár frissül, más elnevezéseket kap pár függvény, akkor át kell nézni az egész kódot, esetleg módosítani, tehát sok macerával jár. Egyszerűbb lenne egy jelenleg működő kódból binárist készíteni, ami utána nem változik, tutira működik és ha később mikrovezérlő meghibásodás miatt vagy csak egy új mikrovezérlő beiktatása miatt kellene a kódot rátölteni, akkor minden gond nélkül mehetne. Tehát ez megoldható esetleg és ha igen mi a legegyszerűbb módja a bináris készítésnek és annak direkt kontrollerre töltésének?
-
Janos46
tag
Sziasztok.
Segítsetk, hogy miképpen lehet letiltani azt, hogy ne akarja az ESP8266-ot V3.0 verzióra állandóan frissíteni, ezt nem szeretném, mert egyszer már póruljártam vele. Előre is megköszönném. -
Janos250
őstag
Viszont azt legalább sikerült azonosítanom, hogy milyen kinézetű az, ami tényleg tudja az IRLB4030 paramétereit, bár lehet ez is hamis, de akkor a fene bánja.
Amelyikben ott van középen egy bekarikázott E betű.
Pl.:
https://www.ebay.com/itm/392380507977
És ugyanezek a sorozatszámok vannak rajta:
P912D
B9P0
Ez valóban nagyon jó. Valószínű persze, hogy hamisítvány, mert Németországban 1-et lehet annyiért kapni, mint itt 10-et, de a paraméterei ugyanolyanok.
Mérésem eredményei:
Körülmények: 48 V-t kapcsol 100 ohmos ellenállásra.
eredmények:
VGs: ESP32 alacsony szintje , 1 mA-nél kisebb átfolyó áram, vagyis gyakorlatilag tökéletesen lezár. (nincs kéznél mikroA-t mutató műszerem)
VGs: ESP32 magas szintje , a FET-en (D-S) esik 7 mA, vagyis gyakorlatilag teljesen kinyit. -
Janos250
őstag
Hogy a nyavalya törné ki a hamisító kis kínait!
IRLB4030 Kínából fake!!!
Korábban rendeltem pár helyről, de 1 hely kivételével mind fake volt, sokkal magasabb a nyitófesz. Viszont nem tudom, melyik volt a valódi. Most, hogy közeledik a július 1, ismét gyorsan rendeltem pár helyről. Próbáltam kilőni, melyik lehet a hamis. Nem sikerült.
Így most van egy marék hamis IRLB4030-om, aminek jóval magasabb a nyitófeszültsége, ezért 3.3V-nál még alig nyit ki.
A valódi nagyon jó, mert az ESP32-höz kötve a magas szintnél "teljesen" kinyit, de az ebay-en, Alin árultak zöme hamis. -
Janos250
őstag
Így jár az ember, ha elhiszi, ami le van írva.
ESP32 LCD 7 segment 8 digit MAX7219 SPI
"Azt írja az újság", hogy ennek a kijelzőnek 5V táp kell, és 5V logika.
"Jenő", ugye nem szabad elhinni amit manapság ír az újság!Ezért aztán nekiálltam szintillesztővel babrálni. A végén, gondoltam, kipróbálom mit csinál szintillesztő nélkül. Ugyanazt, mint szintillesztővel. Sőt! Táp is elég neki az ESP32 3.3V tápja.
Hogy ezt miért nem írják le? Meg azt se, hogy a 2 bájtos utasítást egyben kell kiírni, mert nem mehet föl a CS a két byte között.
(Illetve, ha már tudja az ember, akkor már talál rá olyan utalást, amiből ez is kihámozható)Egyébként tetszik ez a vacak, ESP32 SPI-vel egész kényelmes. Csináltam rá egy teszt programot, már órák óta fut vele hiba nélkül.
-
Janos250
őstag
Ilyenek:
Csak abban különbözik, hogy ezen már meg vannak vastagítva az átvezetések.
Választható fesz szabályozóként van rajta két DC/DC conv, egy LDO, valamint négy FET hely, négy cstlakozó hellyel kifelé,
serial, I2C, SPI csatlakozó hely kifelé, EEPROM hely, SD kártya olvasó, az ESP32 két oldalán plusz csatlakozó sor
a külső egyéb csatlakozásokhoz, és GND, 5V, 3.3V csatlakozások a külső eszközök csatolásához.
Én ezt a saját igényeim szerint készítettem. -
Janos46
tag
Szasztok.
Segítséget kérnék, mert egy frissítésnél az ESP8266-nak a 3.0.0-ás verzióját felrakta, és azóta az eddig működőknek annyi. Megpróbltam a régebbit visszarakni (2.7), de nem találom a Könyvtár kezelásek-ben az ESP8266-nak a 3-ra frissített fájlját. Beírtam a keresőbe, de nincs közöttük, pedig az Apdata stb-ben ott van a 3.0.0. Vagy lehet hogy rosszul keresem? Elóre is megköszönöm a segítséget. -
vegyszer
addikt
Egy kérdés.
Maga a projekt, hogy két enkoder segedelmével a távcsövem mozgását követni tudjam ESP8266 helyett ESP32 segedelmével egyből működött.
De sajnos külön forrás kódfájl van a WiFi és a Bluetooth kapcsolatra. Mindkettő külön külön jól működik.
Lehet egyszerre ezt úgy összesíteni, hogy egyszerre fusson mindkét kliens, és aszerint kapcsolódjon, ahogy szeretnénk?
Mert a kódot valahogy a szemem nem látja át.
Mert én azt gondolom naivan, hogy van egy pár művelet, függvénye, és a végén lövöm ki a kapott adatot a kapcsolat módja szerint (akár mindkét fronton). De valahogy nem látom azt látom, mint szeretném... -
Dißnäëß
nagyúr
válasz
csubuka #15394 üzenetére
Van egy ESP8266-om, pontosan amit linkeltél, tökéletesen műxik. Áll, nem tudok vele mit csinálni. Szívesen eladom Neked apróért, nem ezen fogunk összeveszni, nekem (sajnos vagy sem), wifi nélküli klasszik, Leonardo tudású Arduino bőven elég a projektjeimhez. Ez kipróbáltan jó, WiFi-n keresztül már kapcsolgattam ki 1-1 endpoint-ot létrehozva rajta Node.JS-el, http-n keresztül böngészőből relét.
(Nekem ez is nagy szó volt akkor még)
Szóval privi, ha érdekel.
Vagy bárki, akit szintén.
Bocs, nem reklám meg semmi izé, csak tényleg, látom Neked kellene, ha 1 elég, akkor szívesen megválok tőle, nem kell a wifi. -
Janos250
őstag
válasz
csubuka #15391 üzenetére
Például ki lehet használni azt, hogy a kilépett angolok lehúzzák az Eu-t. A rajtuk keresztül jött cuccok a gyakorlatban tehermentesen érnek ide. Vagy, ha több darabot rendel az ember, sok helyen nem változik a szállítás.
Pl.:
https://www.aliexpress.com/item/4001340660273.html
5db. rendelése, és"Shipping: US $1.79via China Post Registered Air Mail
Estimated Delivery: 20-31 days"esetén a teljes költség US $25.19, vagyis 1500 Ft/darab ár lesz a végeredmény.
Egyébként még annyit, hogy ha valaki kész, már legyártott panelhez akarja, akkor mindig ellenőrizni kell a lábkiosztás, mert főként az USB csati közelében vannak variációk.A jelenlegi árak mellett tényleg csak akkor éri meg ESP8266-ot venni, ha kész panelba kell, mert ha pillanatnyilag nem használja is ki az ember az ESP32 adta plusz lehetőségeket (nagyobb sebesség, valódi 2 mag, sok GPIO, sok periféria hardver kezelése) a jövőben az még jól jöhet, és nem kér kenyeret, ha ott van, akkor se, ha most még nem használjuk ki.
-
Janos250
őstag
válasz
csubuka #15387 üzenetére
Valóban 4 $ (1200 Ft) körüli árra mentek le az ESP32 lapok árai, ha a hosszú szállítási idővel rendeled. Viszont akkor belecsúszol a vámolási balhéba. Ezért jelenleg - szerintem - érdemes inkább 1800-2000 Ft-ot adni érte, ha még a VÁM mizéria előtt ideér.
Igen, az ESP12 az ESP8266. -
csubuka
addikt
Sziasztok!
Azt jól látom, hogy valamennyire összecsúsztak az ESP8266 és ESP32 árak? Van egy dev board itt. Ez kamu vagy hol a trükk, mert pár száz forinttal lenne csak drágább az ESP12 (az valami 8266 variáns nem?) alapú dev boardoknál...
-
Dißnäëß
nagyúr
Sziasztok, nagyobb távolságokon (2000 négyzetméter, hosszúkás telek) milyen kábelt javasolnátok Arduino-k összekötésére, és végül a telek egyik végében lévő házban lévő Pi-vel összekötésre akár ? + táp ugye.
UTP alkalmas erre ? Szerintem 5V-t simán elviszek a benne lévő 4 érpár egyikén, zajt nem nagyon szed össze. Ha kell, szét is szedhetem, vagy nem tudom ...
Vagy ha azt mondom máshogy fogalmazva: szeretnék (tervezek) egy fűszeres és növényházat mint melléképületet, azt el szeretném látni egy marék érzékelővel, amik jelentenek be adatokat valamiféle központba (nem csak szimplán vezérelnek 1-2 szelepet), legyen ez a "központ" egy Raspberry Pi 4, szóval a házból látok mindent kvázi, csinálok rá egy kis frontend-et, akkor ezt Ti hogyan valósítanátok meg ?
Milyen kommunikációval, milyen "buszon" vagy ilyesmi .. ? Esetleges Potenciálkülönbségekre is gondolva, bár a kütyük a Pi-vel együtt a melléképületben lennének, a Pi meg wifin lógna a nappali router-én. Direkt klasszik Leonardo-kkal dolgoznék, Arduino Micro / DFRobot Beetle, semmi ESP+wifi. Tudom mehetne a Pi-ről is, GPIO van, tranyókkal illesztek, vagy maradok 3.3V-on, de igazából szeretném a rendszer autonómiáját megőrizni egy esetleges, wifi-nek kitett Pi fagyás vagy bármi anomália esetén is, egy mikrokontrollernél meg nincs megbízhatóbb elektronika jelenleg, egyszer megveszem, felprogramozom, aztán él, amíg tud, nem kell frissítgetnem meg ilyesmik, semmi ilyen nyűgök.
Köszönöm.
-
gazso75
aktív tag
Persze az tiszta volt. Igen 433mhz a freki. Meg is csináltam a 173mm drótot, szépen feltekerve.
Sajna nem lett jó, nem veszi a jelet rendesen. A teszt rf kapcsoló, kapcsolgatja a pecuban lévő relét ami 25m-re van, de az RF Reciever ami a ESP8266-re van kötve, az nem veszi a 8m-re levő csengő adóját -
Látott már valaki olyat, hogy ESP32 két BJT-s DRT/RTS auto reset áramkör külső CP2104-es USB/serial konverterrel nem megy. Gyakorlatilag az Adafruit HUZZAH32 idevágó része lett lekoppintva. El sem indul a feltöltés, egyszerűen kitimeoutol. Kézzel beállítva a szinteket működik a feltöltés, egyenként nézve szkóppal a konverter kimeneteit valamit csinál, de csak egy csatornásom van, szóval lehet időzítési probléma. Logikai analizátorom nincs. Bármi ötlet?
-
válasz
vegyszer #15320 üzenetére
Nem arról volt szó, hogy ezek az ESP-k 5V kompatibilis IO jeleket kezelnek?
Nem az ESP-k, csak az ESP8266, hivatalosan a gyártó által megerősítve. Az ESP32 kimenetei már nem 5V toleránsak. Az ESP8266 kimeneteit snapback áramkör védi, azt hiszem 6V-ig bírja, az ESP32 egyszerű dióda, kb. 3.8V fölött megsül rajta a flash chip.
Akkor ezt vajon miért tette???
Azért, mert valószínűleg megszólták miatta.
Mondjuk
egy sorozatgyártásba kerülő eszköz tervezésénél nem illik erre a toleranciára építeni. Egy házi barkács eszköznél simán elmegy, azért javasoltam, könnyítésként.
Ha mindenképp szeretnél szintillesztést, egy egyszerű feszültségosztó is megteszi.
A második verzió nem véletlenül ESP32 kompatibilis verzió? -
vegyszer
addikt
válasz
Janos250 #15302 üzenetére
Köszönöm a segítséget.
Este teszek újabb próbákat.Közben a kódom 2.0 és 2.1 verzióját is meg sikerült lelni.
Ott egy érdekes eltérés van. Bár ugyanez az ESP8266 vezérel mindent, de az enkóderek jelét valami 5V->3.3V konverteren keresztül vezetik vissza.
Az eredetiben ugyanez a kolléga meg direktben vezette vissza a jelet.Nem arról volt szó, hogy ezek az ESP-k 5V kompatibilis IO jeleket kezelnek? Akkor ezt vajon miért tette???
-
Janos250
őstag
válasz
vargalex #15303 üzenetére
"Nincs is inicializálva a Serial"
"Abban soros porton megy ki az infó nem teló, hanem PC számára. De azzal se jutok előrébb."
Persze, de azt azért feltételeztem, hogy próba erejéig csak tett bele valami kiírást, nem anélkül várta hogy a serial monitoron megjelenjen valami.
"Az AP nevének meghatározása sem ördögtől való"
Igen, de ez AP, és ha be akarsz rá jelentkezni, meg kell keresned az SSID-t, hogy be tudj rá jelentkezni, míg ha te adsz egy SSID-t, akkor azt tudod. Egyik elegánsabb, másik kényelmesebb."az AP létrejön"
Persze, aboolean result = WiFi.softAP(AP_NameChar, "stargazing");
alapján kutya kötelessége létrehozni, ha csak nem valami idétlen
karaktersorozat van az SSID-ben (AP_NameChar), vagy nem rövidebb a PW ("stargazing") 8 karakternél.
Lehet épp azért nem látja, mert nem tudja, milyen néven keresse?
Vagy valami egyéb gond van, hogy az egész valami hardver ok miatt el se indul nála?
Mondjuk resetelve marad az ESP.Én egyébként az egészet kissé másként csinálnám. Nem szeretek minden app-ot felrakni a telefonra, inkább WEB-et használok.
Más, hogy én - mint írtam - mindig direktbe létre szoktam hozni az AP-, nem is próbáltam még anélkül soha.
-
vargalex
félisten
válasz
Janos250 #15302 üzenetére
Ha erről a kódról van szó, akkor nem csoda, hogy nem jelenik meg semmi a serial monitoron... Nincs is inicializálva a Serial. Mondjuk az ESP8266 inicializálásának azért látszania kellene.
Az AP nevének meghatározása sem ördögtől való, egyszerűen felhasználja a MAC címből az utolsó 2 octetet azért, hogy egyedi legyen az SSID több eszközön egymás mellett futtatva ugyan ezt a kódot.
Egyébként maga az AP létrejön, én eddig teszteltem.... -
vegyszer
addikt
Sziasztok!
Úgy néz ki, hogy sikerült felülnöm a szopórollerre.
A modul, amim lett et: NodeMcu LoLin V3, ESP8266MOd, ESP-12E
Gyenge 3 óra alatt sikerült elérni, hogy a PC lássa.
Ismeretlen USB-s eszköz volt. Majd egyszer sikerült találni egy kb 300kb-os driver pakkot hozzá.
Azzal megy. De a fordítás és a feltöltés sokkal lassabb, mint az Uno esetén.
A szélesség miatt az encoder kábeleit "a nyák alatt" elvezetve csatlakoztattam. De érdekes módon az a kód, ami az Uno esetén működött, átállítva eme eszközre semmit nem tett, csak kérdőjelek írt ki a soros port monitoron.
Hajnali fél ötig szendevtem vél, de nem értem...Ahogy, azt se, hogy ha a Blynk példát töltöm rá, villog, ha az accesspointost, csinál WiFi-t. De az általam linkelt kód nem hozza létre a WiFi-t...
Én meg csak azt hittem, hogy megvan a hw, megvan a kód, megvan a telón az app, és csak össze kell dugni. -
vegyszer
addikt
-
vegyszer
addikt
Sziasztok!
Megjött a két enkóderem a projekthez.
Addig dúrtam a netet míg meg nem leltem egy kódot. Lásd lent
Jól értem, hogy ez egy ESP8266WiFi modulra feltöltve egyből a telón futó skysafari app számára formázva küldi tovább az adatokat WiFi-n?
Nekem csak annyi a dolgom, hogy a két enkódert a 4,5 illetve 14, 12 lábra kössem egy 5V illetve GND mellett, és már csak ellenőrizni kell, hogy a forgásirányok jók-e?
Az enkóderek jelét, hogy pl 8000 jel/360° már az appban állítom be. Maga az app valami ilyesmi típusú jelet kap:
+01234<TAB>-00045<CR>De nézegetve a ESP8266 lábait, nem találok 5V-os lábat.
Ellenben van egy VUSB, ez 5V lenne?
Valamint 12, és 14-es lába sincs. Csak D0-8, de GPIO van 16-ig. Ez lenne az?
Na itt kicsit elbizonytalanodtam.És a kód:
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <Encoder.h>
Encoder encoder0(5, 4);
Encoder encoder1(14, 12);
int inByte;
long encoder0Pos = 0;
long encoder1Pos = 0;
// Start a TCP Server on port 9876
WiFiServer server(9876);
WiFiClient client;
void setup()
{
// Set unique name of AP
uint8_t mac[WL_MAC_ADDR_LENGTH];
WiFi.softAPmacAddress(mac);
String macID = String(mac[WL_MAC_ADDR_LENGTH - 2], HEX) +
String(mac[WL_MAC_ADDR_LENGTH - 1], HEX);
macID.toUpperCase();
String AP_NameString = "ESP8266DSC_" + macID;
char AP_NameChar[AP_NameString.length() + 1];
memset(AP_NameChar, 0, AP_NameString.length() + 1);
for (int i=0; i<AP_NameString.length(); i++)
AP_NameChar[i] = AP_NameString.charAt(i);
// DONE
boolean result = WiFi.softAP(AP_NameChar, "stargazing");
if(result == true)
{
// Start the TCP server
server.begin();
pinMode(D4, OUTPUT);
digitalWrite(D4, LOW);
}
ESP.wdtDisable();
ESP.wdtEnable(WDTO_8S);
delay(100);
}
void loop()
{
if(!client.connected()) { // if client not connected
client = server.available(); // wait for it to connect
} else {
if(client.available()) {
inByte = (uint8_t)client.read(); // read char from client
if (inByte == 81) //ascii for "Q"
{
encoder0Pos = encoder0.read();
encoder1Pos = encoder1.read();
printEncoderValue(encoder0Pos);
client.print("\t");
printEncoderValue(encoder1Pos);
client.print("\r");
}
}
}
ESP.wdtFeed();
delay(50);
}
void printEncoderValue(long val)
{
unsigned long aval;
if (val < 0)
{
client.print("-");
}
else
{
client.print("+");
}
aval = abs(val);
if (aval < 10)
{
client.print("0000");
}
else if (aval < 100)
{
client.print("000");
}
else if (aval < 1000)
{
client.print("00");
}
else if (aval < 10000)
{
client.print("0");
}
client.print(aval);
}Biztosan valami nem kerek, de lehet, hogy csak nálam.
Nyissátok fel kérlek vak (és igen kezdő) szemem
Illetve a ESP8266WiFi lábkiosztási távolságra egyezik az Arduino nanoéval?
Mert akkor fottasztás helyett lehet, hogy egy
Arduino NANO Screw Terminal Expansion Board típusú ízét keresnék. -
Janos250
őstag
El tudom-e érni valahogy programból a .a típusú fájlban lévő dolgokat?
Pl:
Biztosan tudom, hogy a libvfs.a -ban benne vannak a
static vfs_entry_t* s_vfs[VFS_MAX_COUNT]
és a
static size_t s_vfs_count
változók, amiket használ is a program.
Ki tudom-e a programból íratni ezeknek az értékeit?
Ja, és ESP32 , Arduino IDE -
Janos250
őstag
válasz
vegyszer #15270 üzenetére
Ha nem nagyon sürgős, 2500 Ft postával együtt, és két héten belül (néha gyorsabban) helybe viszi a postás, vagy a futár. És ESP32, nem 8266, ami még a továbbiakban jól jöhet, hogy erősebb!
https://www.banggood.com/Geekcreit-ESP32-WiFi+bluetooth-Development-Board-Ultra-Low-Power-Consumption-Dual-Cores-Pins-Unsoldered-p-1214159.html?cur_warehouse=CN -
vegyszer
addikt
Ez a ESP8266 szerinted jó lesz nekem?
Ahogy nézem a WiFi adott, az elég nekem.
Ilyet, vagy hasonlót melyik pesti/szolnoki boltokban érdemes keresni? -
válasz
vegyszer #15263 üzenetére
Szia! Üdv itt. 👍
Alig találtam meg a kérdést a hosszú szövegben."Egyáltalán jól értem, hogy az a kód, ami egy únón elfut, egy ilyen ESP32 vagy hasonlón is elmegy egy minimális fordítási beállítás után?"
Igen, az UNO-ra megírt kódok jellemzően változtatás nélkül fordíthatóak a többi lapra. A legtöbb általános arduino kód elfut az összes arduino-ba illesztett lapon, ha valami mégsem, az valamilyen alacsony szintű módon megírt, vagy hardver-specifikus kód, pl. megszakítás vagy flash tároló használat.
Ha wifit szeretnél használni, akkor a nano board-ról lebeszélnélek, mert úgyis kell hozzá egy esp, de akkor már a programot is érdemes azon futtatni.
Ha az encoderek jele 5V-os, akkor ESP8266 lesz a te embered, mert ugyan a lap maga 3,3V-os, de az ESP32-vel ellentétben a kimenetei 5V toleránsak, így szintillesztés nélkül rá tudod kötni az encodereket.
-
Janos250
őstag
A guta megüt!
Tud valaki segíteni, mert én nem látom a hibát.Includolva van egy .h fájl, ott van a .cpp is.
A .cpp elején természetesen includolva van a .h, ahogy az a nagy könyvben meg van írva.
A .h elején ott van az
#ifndef
#define
és a végén az
#endif
, de valahogy ezeket nem látja, mert a .cpp-ben újra includolni akarja a .h-t, és emiatt újradefiniálást ír hibának.
Nem vagyok részeg, de nem látom a hibát.
A programok:fileKezeles2021maj02LibHibakeresesProba01.ino
#include "Device2VirtualFileSystem.h" ;
void setup() {
} ;
void loop() {
} ;
/*
Ezt írja hibának:
C:\Users\user\AppData\Local\Temp\arduino_build_664522\sketch\
fileKezeles2021maj02LibHibakeresesProba01.ino.cpp.o:
(.bss.acharCounter+0x0): multiple definition of `acharCounter'
C:\Users\user\AppData\Local\Temp\arduino_build_664522\sketch\
Device2VirtualFileSystem.cpp.o:(.bss.acharCounter+0x0):
first defined here
collect2.exe: error: ld returned 1 exit status
exit status 1
Hiba a(z) ESP32 Dev Module alaplapra fordításra.
*/
Ezek a fájlok:
A Device2VirtualFileSystem.h fájl tartalma:
#ifndef Device2VFS_h
#define Device2VFS_h
#include <Arduino.h>
uint8_t acharCounter ;
#endif
A Device2VirtualFileSystem.cpp fájl tartalma összesen ennyi:
#include "Device2VirtualFileSystem.h"
Látja valaki, mi a hiba?
Kösz! -
vegyszer
addikt
Szervusztok!
Az az igazság, hogy én veletek ellentétben fordítva ülök a lovon. Nem programozni szerettem volna megtanulni (az 25 évvel ezelőtt elriasztott akkor), hanem találtam egy problémát, amire megoldást is találtam. Csak az ára nem tetszett.
A feladat az, hogy egy vízszintes, és egy függőleges tengely mentén való elfordulást nagy pontossággal mérni lehessen.
Ez egy távcső kiegészítő család. Magát az adatot Bluetooth / WiFi segedelmével egy mobilon futó app kielemzve megmodja, hogy merre kell a távcsövet löködni a kívánt zobjektum megtalálásáhozUrasabb megoldás is létezik, hogyha ezt esetleg léptető motorral teszi, és követi is az égbolt látszólagos elmozdulását. Ezt hívj a csillagászati szakzsargon GoTo-nak, az előbbit push to GoTo-nak.
(ha az első feladat összejön, egy update két motor+ vezérlő után még szóba jöhet)Az egyik számomra legszimpatikusabb megoldás a DobsonDream8
Addig addig b@szta az agyam, hogy a két encoder-t meg is rendeltem. Azért, mert külön adja a muksó a vezérlő dobozt.
Igenám, de ez bő 100$. Nézve a dolog lényegét, egyre jobban kivilágosodott számomra, hogy ezt gyakorlatilag egy Arduino nano, vagy ESP32 vezérlő meg tudja tenni (hisz ő natív bt/WiFi kapcsolatot is támogat).
Egyáltalán jól értem, hogy az a kód, ami egy únón elfut, egy ilyen ESP32 vagy hasonlón is elmegy egy minimális fordítási beállítás után?
Számos hasonló projekt is van, ami 3D-ben nyomtatott alkatrészekkel vitelezi ezt ki.Így első körben egy uno bordot találtam itthon olcsón. A két OMRON E6B2-CWZ6C Rotary Encoder 2000P/R elvileg az országban van már. Nézegettem, hogy ez a 2000 jel/ciklus csatornánként értendő, azaz egy 360° os fordulat 8000 jelre bomlik, ez bőven elég a célra.
A végleges vezérlő még kiválasztás alatt van. Alapvetően nekem a DC táppal megtámogatható nano bordok tetszenek. Majd látom, hogy a végére mi is lesz belőle.Egyenlőre tervezetek
És valószínűleg kérdezni is fogok.Egyenlőre az uno Morse kódolva ki tudja titititátá-zni a nevem. Innen még van hova fejlődni...
-
Janos250
őstag
válasz
its_grandpa #15223 üzenetére
Az alapfilozófiával messzemenően egyetértek.
Már az Algol 60-at is azért kedveltem a Fortran helyett, mert Algolban lehetett
sokkal strukturáltabb programot írni, Fortranban nem. A basic sem nagyon adott arra lehetőséget, a Pascal viszont részben igen. A visualbasic persze nagyon jó strukturált és objektumosított, de ott meg egy Országh nagyszótárnyi dolgot kell megjegyezni, propertyk formájában. A Cobol meg annyira szószátyár volt, hogy csak no. A C nyelvet én gyakorlatilag kihagytam, mert a pointerek miatt gyakran hibáztam benne. Ezért szeretem a C++ -t, mert ott már kényelmesen meg van oldva.Rövid nevek, hosszú nevek: ízlés kérdése. Én jobban szeretem a hangosan beszélő neveket a halkan beszélő helyett. Hogy miért InListPassiveTarget a target helyett? Mert a manualban is így nevezik. Ízlés kérdése. (Pap és papné esete)
Ugyanez igaz a konstansra is: Én úgy gondoltam, hogy jobb az, ha ránézésre látszik, hogy a wait4ready (readyToRead_out) hossza csak 2 byte, míg az ACK 7 byte, a többi meg hosszabb. Az ACK csak ACK maradt, mert azt azért általában tudják az emberek, hogy az mi.
Az ESP32 egyébként is jeleskedik a konstansok átdefiniálásában. A jómúltkor pl egy konstans (aminek a bitjei külön-külön jelentenek valamit) esetében már vagy az ötödik átdefiniálásnál tartottam, amikor kiderült a számértéke: 0 . Ha beírták volna oda a nullát, arról ránézésre tudná az ember, hogy minden bitje bulla, mint ha egy átdefiniált sor végén van.Egyébként nem az Ada programot kódoltam át ESP32-re, hanem írtam egyet, szándékom szerint úgy, hogy minél inkább passzoljon az ESP32-höz. Ez vagy sikerült, vagy nem. Ha megnézed az Ada programját, az azért elég más. Én megnéztem. Igaz, hogy ő is kiírja az elején a verzió számot, de ezt - gondolom - ő is a netem olvasta - ugyanúgy mint én - hogy nem nagyon tudjuk, hogy miért, de ez javítja a stabilitást.
Köszönöm a tanácsaidat, fontolóra veszem őket.
Hogy neked így nem szép a program, azt sajnálom, de lesz, ami így marad. -
its_grandpa
tag
válasz
Janos250 #15219 üzenetére
Örülök, hogy átment az "üzenet". Arra próbáltam felhívni a figyelmet,hogy eredetileg arduinóra írt c kód esp-re fordítása nem csak annyiból áll, hogy átállítjuk milyen board-ra fordítson az ide.
Ne haragudj de a magic number nem lehet szándékos, a define ingyen van
Kicsit lerövidítve a programod egy sora,hogy elférjen:SPI.transferBytes(Target_response_out, Target_response_in, 21); /magic number /
Inkább így ....
#define Target_response_len 21
.
SPI.transferBytes(Target_response_out, Target_response_in, Target_response_len);Ugye mennyivel szebb a második ?
-
Janos250
őstag
A kijelzők kezeléséről jut eszembe:
Már terveztem korábban, hogy írok egy illesztést ESP32-re, hogy a kijelzőre sima fájl "C" művelettel (pl. fprintf) lehessen írni, mert az sokkal kényelmesebb, mindent, konvertálást, formázást, egyebeket elintéz magától, de eddig elmaradt. Tud esetleg valaki kész ilyen illesztést, mert ha valaki már megcsinálta, akkor fölöslegesen nem tökölök vele? Egyébként se használok kijelzőt, nálam a kijelző és a kapcsoló a mobiltelefon képernyője (Mindenkinek van valami dilije
) Korábban egyszer valamire másra nekiveselkedtem, de aztán abbamaradt, pedig definiált, hogy hogyan kell csinálni, hogy beilleszkedjen a fordítóba. Nagyjából ment is, de nem kijelzőre, csak hobbi próbaként.
-
Janos250
őstag
válasz
its_grandpa #15203 üzenetére
Igen, igazad van.
Eredetileg valahogy - a nem megfelelő inicializálás miatt - a státus lekérdezés nem igazán jól működött, ezért került be a sok delay, és úgy maradt. Valóban ki is lehet belőle szedni.
delay: nem igazán tudom, mi a helyzet vele, ettől függetlenül. Van ahol azt írják, hogy vtaskdelay-t használjunk. Az biztosan átadja a vezérlést a többi tasknak az adott időre, de van ahol azt írják, hogy a sima delay-t is ugyanerre fordítja, tehát mindegy. Majd egyszer kipróbálom.
A sok magic number szándékosan van így: az Ada könyvtárban ott van minden részletesen, az nagyon univerzális, de igen hosszú is.
Szándékosan olyat akartam, ami rövid, tömör, és az SPI kezelését is megmutatja. Az SPI-ről is tervezem, hogy írjak pár sort egyszer, mert aki csak az UART-ot használta, annak elég szokatlan a filozófiája, hogy nincs benne "csak read". Helyette úgy működik, hogy ha küldünk egy byte-ot, akkor - akár kell, akár nem - jön be is egy. Tehát úgy olvasunk, hogy kiküldünk egy kódot (sorozatot), hogy mit akarunk olvasni, aztán küldjük sorra a haszontalan kódokat, hogy velük együtt jöjjön a hasznos adat.
Elég fura ez pl. amikor a hőelem hőmérsékletét olvasom, ahol a konverter panelnak semmi adatra nincs szüksége, mégis SPI-vel úgy olvasom, hogy KÜLDÖM a felesleges adatokat, mert ezekkel párhuzamosan jön a hasznos adat. (Ez utóbbit csak azoknak írtam, akik nem szokták az SPI-t használni.) Az esp8266-on korábban nem is használtam könyvtárat, hanem a chip select és a clk lábakat mozgattam programból, és a MISO-nak megfelelőt olvastam, a MOSI-nak meg nem is volt megfelelője, mert fölösleges az adott esetben. Azóta átáltam kényelemből az SPI-re annál is.
Új hozzászólás Aktív témák
Hirdetés
Állásajánlatok
Cég: FOTC
Város: Budapest