Fórum témák
» Több friss téma |
Idézet: „Arduino alatt pointer” Ami sima C, illetve C++ néhány plusz könyvtárral megbolondítva. A char típusú változóban egyetlen karaktert tárolhatsz, ami kevés az SSID és a password számára. Ezért kell egy memóriaterület, ahol egymás után eltárolod a kívánt karaktereket. Szokás ezt tömbnek is nevezni. Az alábbi két deklaráció egymással egyenértékű: const char* ssid = "V188"; const char ssid[] = "V188"; Bármelyiket is használod, hivatkozhatsz a tömb egy elemére ebben formában: ssid[x]. A hozzászólás módosítva: Feb 11, 2018
Oké. De amit én csinálok:
Van egy String, egy file beolvasás eredménye. A string neve "s". Az adatok úgy néznek ki benne hogy: wifissid:Teszthalozat wifipass:jelszo ...... és még sok minden más változó (wifissid) elválasztva kettőspontal majd az értéke (Teszthalozat) végén ENTER Egy funkcióhívással megmondom mit keresek. Mondjuk wifissid. Ezt a witch nevű változóban tárolom. Megkeressük a witch tartalmának pozícióját (wifissid) az "s" stringben. Hozzáadok +1-et a kettőspont miatt. Ez a "from" változó innen kezdődik az amit ki akarok szedni a szövegből, ami a to-ig tart (ENTERT keresek "from"-tól) Nos akkor a what-ba bepattintom a szöveget from-tól to-ig. EDDIG TÖKÉLETES. És innen érdekes: Ezt az adatot (mondjuk keressük a szövegben a wifissid nevét) a wifissid nevű változóba kellene bepattintani, ami egyébként globális változó. Tehát a witch-et valahogy mutató pointerként hozzá kéne "társítani" az értékét tartalmazó változóhoz (wifissid) hogy a what (hálózat neve) oda kerüljön ahová kell. Tehát ha a wifissid-t keresem a kikukázott szöveg a wifissid globális változóba kerüljön, de ha mondjuk a wifipass-t keresem akkor az meg abba. Mindezt úgy hogy a egy funkció hívás legyen:
Melynek eredményeként a wifissid változómban benne az érték a s nevű string-ből.
1. Kódot rajk be, ne képmentést.
2. A string C++ cucc, sok helyet foglal. Általában mikrokontrolleren inkább char tömböt használnak. 3. Ezt nem értem: "Tehát a witch-et valahogy mutató pointerként hozzá kéne "társítani" az értékét tartalmazó változóhoz (wifissid) hogy a what (hálózat neve) oda kerüljön ahová kell."
Csak egy ötlet: strcpy, memcpy az értékadás helyett?
Szia!
Alakul közben. A kóddal az a baj, hogy szétesik itt. Arról van szó, ha megadom hogy witch = wifissid akkor a szövegbe keresse meg azt hogy "wifissid:" és ami utána van azt tegye bele a wifissid változóba. Tehát ha a stringben az van hogy wifissid:Teszt (és éppen erre vagyok kíváncsi) akkor
legyen a hatás. Erről az oldalról tájékozódom most: Pointer-Arduino
Az a rész már rendben van. Most már csak azon dolgozok, hogy egy használható függvény legyen belőle. És ehhez kell a pointer.
Ez a mostani kísérleti kódom
Itt a vége kb:
MOst már csak át kell pakolni. Sajnos még mindig az van, hogy a kért paramétert meg kell adnom String-ként, és az ugyan olyan nevű változót (célt) mint pointer-t, de ezt majd még kikalapálom valahogy.
Sziasztok!
Köszönöm a segítséget, és a tanácsot mindenkinek. Sajnos csak képként tudom az eredményt bepakolni ide, mert a kódban az ENTER keresése \n itt a weblapon összekuszálja a kódot és teljesen szétesik. Végül úgy döntöttem, hogy érték visszaadós-ra csinálom meg. Így a MINEK az értékét keresem részhez nem kell pointer. Ám kiegészítettem azzal, hogy melyik string-ben keresünk amihez már az adott string mutatója szükséges. A végső eredmény a képen, ha valakinek szüksége van rá vagy ötletet ad annak örülök, értelmesebb teljesebb formában látható lesz majd a WifiManager-Extra nevű tervezett cikkben.
Én is azt hittem, hogy összekuszálja, de csak az előnézet olyan.
Sziasztok!
Finishébe érkezek az (én csak úgy hívom hogy WifiManager Extra) nevű projectemnek. Abban kérném a segítségeteket, hogy adjatok ötleteket milyen paramétereket fűzzek még bele a project-be. Ami most van Wifihez: WifiSSID, WifiPassword, IP, Mask, Gateway MQTT brokerhez: Broker address Broker port Broker login Broker password topic prefix: Ezt azért tettem bele mert pl az Adafruit esetében egy feed elé be kell pakolni azt hogy: {username}/feeds/ Milyen ötletetek lenne, mi az amit még meg kellene, lehetne adni egy üres termék esetén felkészülve az user kódra?
Wifimanager-extra
Sziasztok! Meséltem róla, készül egy váz amivel nem kell hardcode-olni felhasználó specifikus adatokat úgymint wifissid, wifipass, és MQTT. Ez azért jó, mert ha változtatsz mondjuk a wifi jelszón, akkor nem kell kiszerelned a lakásban az összes kapcsolót és konnektort rákötni a laptopra újra programozásért. A lényege hogy a filerendszerben található setup.txt fileből kiszedi az adatokat és létrehoz globális változókat. Ezeket felhasználva kapcsolódik wifire, majd kapcsolódik MQTT szerverhez és elküld egy teszt üzenetet. Ha mindez sikerül akkor rendben vagyunk. Ha nem, akárhol akad el, AP-ra vált, a 192.168.2.1 címet begépelve bejön egy weblap ahol meg lehet adni az inithez szükséges adatokat. Kérnélek titeket akinek van ideje, nézze át, tesztelje, véleményezze. SPIFFS-t használ, tehát az első használat előtt a data könyvtárat (benne a main.html) fel kell tölteni az ESP file rendszerére. Ez most még egy komplett progi, később fogom majd egy függvényhívássá formálni. Mindenféle ötletet szívesen veszek. Ha pedig ki lett kupálva teljesen, esetleg még feljavítva egyéb ötletekkel akkor a cikket is megírom hozzá.
Nem kell kiszerelni a beépített ESP egységeket újraprogramozáskor, a lefordított Arduino kódot is fel tudod tölteni Wifin keresztül ESP-re, ez az OTA frissítés.
Már linkeltem ezt az oldlalt. Bővebben: Link Itt 4 féle OTA lehetőséget írnak le, én Weboldalról történő feltöltést használom. "/update" Weboldalon kiválasztod a .bin fájlt és megnyomod a feltöltés gombot. Ennyi az egész kód ami kell hozzá ESP8266WebServer-nél. B
Ez pedig a leírása A hozzászólás módosítva: Feb 17, 2018
Igen. Ez igaz. Viszont én szerettem volna egy kicsit "kereskedelmibb" pofát kölcsönözni neki.
Ami a terveim közt szerepel, hogy legyen neki egy user szintű hozzáférése ahol csak a wifi-vel lehet játszani, esetleg user-expert-ben IP címekkel, meg legyen egy fejlesztői ahol aztán belekalapálhatsz mindent. A terv amiért ez készült, hogy minden egyes 63mm-es konnektor aljzatba, és villanykapcsoló helyére pakolok egy ESP-t. A villanykapcsoló helyén pl TFT kijelző amely amellett hogy villanykapcsoló, még szobatermosztát is. Viszont ha cserélem a wifikódot (mi mást ugye), akkor ne kelljen Arduinóval szüttyögni. A feleségemnek nem is menne. + egy user-nél ne legyen forráskód nem igaz? A kiszerelés nélküli firmware update egy másik jó dolog, köszi, de jó ötlet! A hozzászólás módosítva: Feb 17, 2018
igen az ota lehetőséget nem is a projektedhez írtam, inkább csak fenn akadt a szemem az usb-n keresztüli frissítésen.
Még egy ötlet: ESP meglévő villanykapcsolóba pakolása macerás lehet mert legtöbbször csak a fázis megy oda és kellene a nulla is. Legalább is amiket én láttam kész esp kapcsoló egységeket azoknál így volt. Mondjuk a Sonoff terméke. Viszont vannak egész pofás kinézetű 433Mhz es kapcsolók amik működnek a régi kapcsoló helyére beszerelve is. Azokat meg lehet vezérelni ESP-vel 433 RF modul segítségével. ITT pont erről ötletelgettünk.
Igen. Tapasztaltam én is.
Két megoldás van. 1: Kapcsolók alatt szokott lenni az ajtó mellett konnektor. Abba felülről jón az áldás, tehát ami hiányzik fel lehet vezetni. 2: Fentről kell új kábelt behúzni. Ami szerintem manapság nem lehet gond, mert ha csak egy szálat húztak oda akkor eleve elcseszték, ha pedig MTK vezetéket... Nos én azt se preferálom.
Hali.
Adott egy ESP12E, és egy BME280 szenzor. Sikerült minden adatot kiolvasni, viszont a légnyomás adat nem pontos. Szerintetek lehet ezt valahogy kalibrálni?Mert mondjuk egy időjárás állomásban első használatkor kalibrálom a tengerszintfeletti magasságomra, esetleg egy pontos értékre, és onnantól jó, itt viszont nem tudom hogyan lehet ezt megcsinálni. Előre is köszi! A hozzászólás módosítva: Feb 24, 2018
Szia. Mennyire nem pontos? Én is használok ilyen szenzorokat, szerintem elég pontos, bár nem tudom mennyire, nincs viszonyítási alapom.
Ennél is be lehet állítani a tengerszint feletti légnyomást:
de lehet hogy azt a magasság kiszámításánál használja csak:
A hozzászólás módosítva: Feb 24, 2018
A légnyomást - a mérési hely magasságának ismeretében - át kell számolni a tengerszintre. Bővebben: Link
Közelítő formula: P0 = Pm /( 1 - magasság/44330)^5.255 ahol Pm az általunk mért, P0 pedig a tengerszintre átszámított légnyomás, [Pa]-ban megadva a magasságot pedig [m]-ben adjuk meg Még durvább közelítés: Lakóhelyemen egyszerűen 1440 Pa-t hozzáadok a mért értékekhez. A hozzászólás módosítva: Feb 24, 2018
A BME280 szenszor nektek mukodik folyamatosan? Nalam maghatarozatlan (mikor tobb, mikor kevesebb) ido utan mintha elvesztene a szenzort az ESP, megszakad a kapcsolat es nem olvas belole erteket, I2C kapcsolat alatt.
A hozzászólás módosítva: Feb 25, 2018
Nekem tökéletesen működik. STM32 MCU-val használom.
PIC mikrokontrollerrel is tökéletes, 15 másodpercenként kérem el az adatot.
Na sikerült úgy kalibrálnom hogy 13hPa-t hozzáadok az értékhez és igy tizedpontosságu lett a meteorológiai állomásommal!A magasságot a nyomásbol számolja úgyhogy nem túl pontos..
DHT22-vel tesztelem, dht páratartalomban talán pontosabb, hőmérsékletben ugyan annyik az értékek.Viszont a DHT gyakran elszáll és nem ad jelet.. A másik bajom hogy néha lefagy és nem érem el akkor újra kell indítani, van hogy 1 van hogy 12 óra után.. A szervert ha nem 80as portra hanem bármi másra írom nem érem el az adott portokon, az miért lehet? Köszi mindenkinek!
Nekem esp12f és megy (kb 20cm dróton).
Azt nem mered elárulni milyen fizikai kivitelben készült el az I2C büszke?
Akkor közelebb lennénk a problémához.
Itt van. Kép.
Megy-megy aztán egyszer csak "nan" az érték. Még nem bírt ki 24 órát egy futtába. csak hőmérőként használtam A hozzászólás módosítva: Feb 26, 2018
Szia. Ha nem vezeték kontakt probléma, akkor a BME leforrasztását nézném meg. Egy kis flux és rámelegítenék.
Köszi de ebből nem derült ki a lényeg ... A 2 panel között hány km drót van ?!
Sziasztok!
Egy ESP-12E modullal és egy DHT11 szenzorral küzdök. Arduino Ticker.h hibával kapcsolatosan szeretném tanácsotokat kérni. Biztos én csinálok valamit rosszul, de sajnos nem jövök rá mi a hiba. A kód ez:
A terminálban pedig a következő jelenik meg:
Ha a mainban hívom meg a ReadDHTSensor(); függvényt (most kikommentezve), akkor szépen írja az eredményt, Tickerből ez nem jó. Mit rontok el? Köszönöm a tippeket! |
Bejelentkezés
Hirdetés |