Fórum témák
» Több friss téma |
Szia, éppen az openai-val szórakozok. Gondoltam beírom a kérdésed oda... A válasza a következő:
Az ESP8266 mikrovezérlő soros porton keresztül történő kommunikációja alapvetően csak a 7-bites ASCII kódot használja. Azonban, ha kiterjesztett ASCII karaktereket, ékezetes betűket, vagy más speciális karaktereket szeretne küldeni, akkor az ESP8266-nak meg kell adni, hogy mely karakterkódolást használjon a kommunikáció során. Ehhez először be kell állítani az Arduino IDE soros portját azon a karakterkódoláson, amelyet használni szeretne. Ehhez nyissa meg az Arduino IDE soros portjának ablakát, majd kattintson a bal alsó sarokban található fogaskerék ikonra. Ezután válassza ki a kívánt karakterkódolást az "Encoding" menüpontból. Ha a kívánt karakterkódolást beállította, akkor az ESP8266-nak meg kell adnia, hogy milyen karakterkódolást használjon a kommunikáció során. Ehhez az ESP8266-nak küldenie kell egy speciális karaktert a soros porton keresztül, amely jelzi a fogadó oldalnak, hogy melyik karakterkódolást használja. Az UTF-8 karakterkódolást általában használják a kiterjesztett ASCII karakterek, ékezetes betűk és más speciális karakterek küldésére. Az UTF-8 karakterkódolást használó speciális karakter az ASCII kódolásban a hexa-decimális értékű 0xC2, majd utána a speciális karakter hexa-decimális kódja következik. Például, ha küldeni szeretne egy ékezetes "á" karaktert, akkor az ESP8266-nak küldenie kell az ASCII kódolásban a hexa-decimális értékű 0xC3, majd utána a "á" karakter hexa-decimális kódját (0xA1). Íme egy példa kód arra, hogy hogyan küldjön ékezetes betűket az ESP8266-n keresztül a soros porton: c++ #include <ESP8266WiFi.h> void setup() { Serial.begin(115200); Serial.print("\xC3\xA1"); // küldés "á" karakter } void loop() { // kód } Fontos megjegyezni, hogy a fogadó oldalnak is meg kell adnia a karakterkódolást, hogy helyesen értelmezhesse a küldött karaktereket.
Köszi. Ügyes az AI.
A gondom csak annyi, hogy nem a soros monitoron szeretném megjeleníteni a karaktereket. A progi rövid leírása: HTML oldalról fogad X hosszúságú karaktert (betű, szám, stb) az ESP, és ezeket a karaktereket némi feldolgozás után továbbküldi soros porton egy másik MCU-nak. A fogadó MCU tudja értelmezni a pl. ékezetes karaktereket.
Html-el vigyázni kell, ott mindenféle spec "kicserélt" karaktert is kaphatsz, pl https://www.html.am/reference/html-special-characters.cfm
Előbb ezt kell tisztázni mit kapsz a html-ből, ha ezt tovább kell küldened, akkor a fenti ákombákomot át kell konvertálnod, pl utf8-ra, VT100-ra, akármire, amit a vevő oldal meg tud jeleníteni. Az az "X" hosszúság is módosulhat az ákombákom hosszával
A Html szövegbevitel korlátozódik az ASCII és az ASCII Extended karakterekre. Tehát 32-255.
Pont ezt linkeltem, benne az ékezetes, meg óhéber abc... Továbbra is azt kell tisztáznod, a vevő oldal milyen karakterkészletet tud megjeleniteni, az esp-el erre kell konvertálnod a html ákombákom-ot
A hozzászólás módosítva: Feb 24, 2023
Sziasztok!
ESP32 mikrovezérlő segítségével szeretnék adatokat beolvasni egy külső AD konverterről (MCP33131). Az átvitel a chip select láb lehúzásával kezdődik, majd ennek magas szintre állításával fejeződik be. Az a problémám, hogy a chip select láb lehúzása és az órajel (10MHz) megjelenése között sok idő telik el (3.5us, amely a csatolt szkóp ábrán látszik). Közel azonos időben kellene történnie, hogy folyamatosan tudjam az adatokat olvasni. Találkoztatok már hasonló problémával? Mi lehet a megoldás? A válaszokat előre is köszönöm! Itt látható a forráskód:
Meg kellene nézni az SPI.transfer16 forrását. Valószínűleg ennyi ideig tart, amíg elindítja az átvitelt, valamit csinál még előtte.
Az SS-nek nem adtál értéket?
Köszönöm!
Átnéztem az SPI könyvtárat és közben találtam egy esp32-hal-spi könyvtárat is, ami hardver közelibb. Ennél már nincs késleltetés (max 100ns) a CS láb lehúzása és az órajel között. A VSPI lábakon max 8MHz-en, a HSPI lábakon pedig 20MHz-en is sikerült adatvesztés nélkül továbbítanom értékeket. Holnap megpróbálom olvasni az AD konvertert is. Jelenleg 1 mikroszekundum van az órajel ciklusok között, tehát elméletileg 2 mikroszekundumonként tudok majd mintát venni. Jó lenne lemenni még kevesebb időre a két órajel ciklus között, de arra még sajnos nem jöttem rá, hogyan tudnék.
Elnézést, azt a két sort elfelejtettem kivenni, az előző kódból maradt bent.
Ezt használtam a CS láb vezérlésére, ebben az esetben nem kellett külön beállítanom kimenetnek:
Szerintem ezen tovább gyorsítani csak DMA-val lehet. Találtam egy könyvtárat, hátha segít. Bővebben: Link
Köszönöm! Kipróbáltam, de ezzel sajnos nem sikerült lemennem 25us alá, az SPI órajeltől független ez az idő a két adatcsomag között. Sajnos nem találok rá beállítási lehetőséget.
Sziasztok!
Olyan segítséget keresnék, aki penge ESP és ESP GSM modul programozásban! Köszönöm!
Sziasztok.
Egy ES8266 -ot és egy ESP32 -öt szeretnék I2C buszon összekötni, a 32-es kérdezzen és a 8266-os vállaszoljon, de a nativ könyvtárak nem jönnek be. Ha mindkettö 8266, vagy 32 ugy igen, de nem sikerült a kettőt összehozzam. Esetleg van-e valakinek tapasztalata. Serial -on is megfelelne, úgy sem sikerült. A hozzászólás módosítva: Ápr 12, 2023
Üdv Mindenkinek ! Amatőrként egy nagyon kezdő projektbe fogtam bele. Egy ESP NODEMCU 12E modullal, és egy DHT22 hőmérséklet és páratartalom mérő szenzorral játszogatok Web szerveren keresztül akartam elérni az adatokat: Nagyon kezdőkét angol weboldalakról pl Instrucktables vettem a lehetőségeket, és végül sikerült is megoldanom a feladatot. Ráment egy és fél napom, a keresések és a próbálgatások miatt. Az lenne a kérdésem hogy mi lehet annak az oka, ha már valaki veszi a fáradtságot és egy komplett weboldalat szentel ennek az amúgy egyszerű feladatnak, hogy a megadott kódok pontatlanok, és nem a leírásban is szereplő eredményeket kapom, annak ellenére hogy ügyeltem arra , hogy a leírásban szereplő verziójú könyvtárakat telepítettem és mindent pontosan a leírtak alapján végeztem.. PL volt olyan hiba hogy az adatok pl Hőmérséklet Celsius fokban is, és Farenheit fokban is irreális értékeket mutattak pl +23 foknál - 3,5 fokot. Másik hasonló projektban a firmwerben a D5 Pinre kíírt lábkiosztásnál a D1 pinre rakva működött csak helyesen. Néha a hálózatot nem ismerte fel az eszköz. Több verziót is kipróbáltam mire meglett a valóban működő kód. Ha már egy ennyire egyszerű feladatnál ennyi hibalehetőség van mire számítsak egy komolyabb feladat pl időjárás állomás elkészítésénél , ha mások által megírt kódokra kellek hagyatkozni?
Szia.
Ha nem akarsz kodolni, van alternativa ESPEasy firmware.
Szia!
Én úgy érzem, hogy a 23°C foknál mért 3,5%C hiba az nem szoftver hanem mérési probléma. A DHT22 nem analóg jelet szolgáltat ahol a programod rosszul számol, hanem digitálisan elküldi a mért értéket amit ki kell jelezned. Itt már tárgyaltunk a szenzorok mérési pontatlanságáról. Amikor én méregettem negy vagy öt darab pontosnak hitt higanyos mérőhöz viszonyítottam. De a higanyos mérők is egymáshoz képest 4°C szortak.
Ugyanazt a szenzort használtam az összes tesztelt projektben. Szerintem a megírt kóddal lehet valami hiba ,mert az adott szenzor két másik hasonló projektben jól működik. De azt végképp nem értem hogyan lehet, hogy az adott kódban a DHT22 data lábat kiossztják a D5 pinre és énnekem pedig csak akkor működik ha a D1-re rakom. Látom egyértelműen a kódban hogy oda programozták.
Idézet: „De azt végképp nem értem hogyan lehet, hogy az adott kódban a DHT22 data lábat kiossztják a D5 pinre és énnekem pedig csak akkor működik ha a D1-re rakom.” Nézd meg a modul lábkiosztását! D1= GPIO5
Akkor ha úgy gondolod, hasonlítsd össze ezzel.
Igazad van ezt eléggé elnéztem....
Igen ez lett a jó megoldás amivel működik.. Viszont a többi hibaforrást továbbra sem értem mi okozza, más hasonló projektekben. Gondolok itt szerver csatlakozási problémákra szenzor pontatlanságokra
További kérdésem az lenne ,hogy tud e valaki hasonló projektet linkelni , ahol szintén web szerveren keresztül láthatom az adatokat, Home Asistant nélkül. Olyan projektre gondolok ahol már kicsit komolyabb időjárás állomásról lenne szó, pl szélsebesség és csapadék mennyiség mérővel kiegészítve? Valós időbeli mérésekre gondolok , Nincs szükségem régebbi statisztikák összehasonlítására.
A hozzászólás módosítva: Ápr 14, 2023
Sziasztok.
Probálok megvalositani egy I2c kapcsolatot egy ESP8266 - szolga és egy ESP32 - mester között. Segitségre lenne szükség. A minta kod - az 1_3, kifogástalanul müködik, de az 1_4, ahol ott vannak a hőmérők, vagyis amit kellene hogy csináljon igazából, ott már nem müködik, mind össze-vissza adatokat kap a mester ESP. Az 1_3 -al jeloltek a minta kod, az 1_4 -esek lennének a megvalósitás. Kösz
A kuldo_1_4-ből hiányzik a Wire.setClock(25000UL); sor. Ez nem lehet gond?
Bocs, valószínűleg hülyeséget írtam, a órajelet a master oldalon kell csak beállítani. Ezt találtam ami segíthet, a 7-es posztban vannak hasznos információk.
A hozzászólás módosítva: Ápr 16, 2023
Az _1_4 es perifériásból ki spóróltam egy „boolean”-t, gondoltam hogy az zavar be a küldésbe, de azelőtt sem ment.
Idézet: - 2.0.7 -es verziot használom, mind a két kod lefordul 32-re és 8266-ra is, de a feltöltésnél nem használhatom ugyanazt a lapka beállítást.„a 7-es poszt” A lényeg, az _1_3 -asok rendesen müködnek. Lehetséges hogy az „OneWire” bezavar a „Wire” müködésébe ? Más magyarázatot én nem tudok, de az is hogy lehetséges ? Az már felülmúl engem hogy ezt kideritsem A hozzászólás módosítva: Ápr 16, 2023
Biztosan észrevehető hogy úgy próbáltam megszerkeszteni hogy az adatok legyenek készen már a továbbításra, ne a kéréskor álljon neki mérni, ami nyilvánvaló hogy nagy késéssel járna
Szaisztok!
Az elektronikában kezdőktől jövök ide. ESP32 vásárlása előtt vagyok. PIC-ben igen sok problémát megoldottam már, de annak vannak korlátai, de előnyei is. A dSPIC timer interrup-ot értem. Ott az MPLAB-ban lehet szimulálni a futásidőt. Annak segítségével fel lehet regiszter szinten programozni a timert. No de, ott úgy működik a dolog, hogy mikor meghívódik a timer interrupton lévő függvény a flag-et törölni kell. Majd a timert előre meghatározott értéktől kell indítani a függvény végén. Azaz ki lehet számítani az MPLAB-al, hogy mennyi utasítás ciklusba kerül az interrupt futása. Így a Timert annyival kevesebbről lehet indítani, így halál pontos időzítéseket lehet csinálni. Akkor a kérdés: ESP32-t Arduino IDE ben lehet programozni ha jól tudom. Ott nincs ciklus számlálás, nem tudom beállítani rendesen esetleg. De a kérdés legfontosabb része. Semelyik példakódban nem találtam utalást a timer overflow flag kinullázására. Egyszerűen egy függvény és kész. Hogyan működik pontosan? A függvény meghívásakor kinullázza a timert, majd 2-4 utasítás ciklussal eltolja(mert annyiba kerül a nullázás és értékadás) és indítja a függvénytől függetlenül, vagy a függvény visszatérésekor nulláz és indít? Precíz időzítéshez ez kellene nagyon, de nem tudom hogyan oldották ezt meg. Esetleg én is írhatok ilyen függvényeket? Arduino IDE-ben van, vagy más IDE-ben lehet szimulálni az időt, mint az MPLAB--ban? |
Bejelentkezés
Hirdetés |