ethanak Lipiec 25, 2024 Autor tematu Udostępnij Lipiec 25, 2024 @99teki no niestety - większość bibliotek działa tylko z githuba bo arduinowscy paczkodzieje przespali jeden etap rozwoju, a np. IRremote czy AsyncHTTPSClient raczej nie ma szans jak ktoś nie zrobi działającego forka
99teki Lipiec 25, 2024 Udostępnij Lipiec 25, 2024 (edytowany) - proszę o podanie żródła biblioteki BMP280. - znalazłem jakieś biblioteki dla BMP280 ale dalej mam "exit status 1 Compilation error: no matching function for call to 'BMP280::BMP280(uint8_t&)' " moduł thermo.cpp , line 47 Edytowano Lipiec 25, 2024 przez 99teki
ethanak Lipiec 25, 2024 Autor tematu Udostępnij Lipiec 25, 2024 No i dlatego chcę zrobić release z binarkami - bo skompilowanie tego może być trochę trudne. 1
ethanak Lipiec 31, 2024 Autor tematu Udostępnij Lipiec 31, 2024 Na razie 99.9 % działa na zwykłym devkicie i na xiao s3 (docelowe moduły). 80% działa na zdalnym czujniku, ale to kwestia dopasowania do C3 i Lolin Lite. Nie udało mi sie uruchomić komunikacji z esp8266, ale chyba to oleję: różnica ceny najtańszego modułu 8266 i 32C3 jest z gatunku pomijalnych...
ethanak Sierpień 6, 2024 Autor tematu Udostępnij Sierpień 6, 2024 No, bliżej końca softu - na razie leży tylko współpraca z TalkBackiem na Androidzie, ale on się gubi jeśli usuwa się kontener div zawierający zogniskowany element (button). Do dogrania. Kodu na razie nie wrzucam, ale taka ciekawostka do wykorzystania w ESPAsyncWebServer. Często bowiem zachodzi potrzeba przekazania do przeglądarki jakiegoś tekstu w JSONie, Funkcja robi to eskejpując wszystkie podejrzane znaczki i dodając przy okazji cudzysłów na początku i na końcu: static void jsonstr(AsyncResponseStream *stream, const char *txt) { uint8_t znak; uint16_t znak16; stream->printf("\""); while (znak=*txt++) { if (znak == '"' || znak=='\'') { stream->printf("\\%c",znak); continue; } if (znak == '\n') { stream->printf("\\n"); continue; } if (znak == '\\') { stream->printf("\\\\"); continue; } if (znak >= 0x20 && znak <=0x7e) { stream->printf("%c",znak); continue; } if (!(znak & 0x80)) { stream->printf("\\u%04x",znak); continue; } int n; if ((znak & 0xe0) == 0xc0) n=1; else if ((znak & 0xf0) == 0xf0) n=2; else break; znak16 = znak & 0x1f; while (n--) { znak=*txt; if ((znak & 0xc0) != 0x80) break; znak16 = (znak16 << 6) | (znak & 0x3f); txt++; } stream->printf("\\u%04x",znak16); } stream->printf("\""); } Przykładowe wykorzystanie: Chcemy otrzymać coś takiego: {"idx":numerek,"content":treść} Funkcja która zwraca to do przeglądarki może wyglądać tak: static void handleGetCostam(AsyncWebServerRequest *request) { AsyncResponseStream *response = request->beginResponseStream("application/json"); int jakis_indeks = 17; const char *jakis_tekst="To jest \"Jakiś tytuł\"\nze specjalnymi znakami \\"; response->printf("{\"idx\":%d, \"content\":", jakis_indeks); jsonstr(response, jakis_tekst); response->printf("}"); request->send(response); } Oczywiście można tu użyć jakichś zmiennych pobieranych np. z bazy danych, czujników lub preferencji! No i tak jak swego czasu napisałem - urządzenie ma się zmieścić na płytce stykowej 170 dziur: Urządzenie oprócz obowiązkowych ESP32 i dekodera I2S zawiera czujnik BMP280 i odbiornik podczerwieni. Dla wygody przycisk reset został umieszczony na płytce, ale w gotowym urządzeniu musi znajdować się gdzieś w dostępnym miejscu na obudowie, a w jego miejsce można podłączyć wtyk dla zewnętrznego DHT22 lub DS18B20. Oczywiście, można w prosty sposób podłączyć zegarek z eepromem: Otwory w płytce są łatwo dostępne, wystarczą cztery męsko-żeńskie przewody. W gotowej konstrukcji zegarem powinien być umieszczony tak, aby można było wymienić baterię bez konieczności rozbierania całego urządzenia. Oczywiście płytka stykowa to nie jest najlepsze rozwiązanie - chciałem tylko pokazać że można to wykonać prawie bez lutowania (trzeba wlutować piny do S3, wzmacniacza i czujnika BMP oraz podlutować jakieś przewody do padów na module S3 potrzebne do podłączenia resetu). Ukońćzenie kursu lutowania na Forbocie powinno wystarczyć
_LM_ Sierpień 9, 2024 Udostępnij Sierpień 9, 2024 Kilka pytań co do wyświetlania wyników w przeglądarce, ile całościowo zajmuje miejsca w pamięci strona ze stylami, js i całą resztą, pisałeś to ręcznie czy korzystałeś z jakiegoś narzędzia do projektowania www, jak z responsywnością i czy działa to jak web app?
ethanak Sierpień 9, 2024 Autor tematu Udostępnij Sierpień 9, 2024 25 minut temu, _LM_ napisał: ile całościowo zajmuje miejsca w pamięci strona ze stylami, js i całą resztą $ ls -l www razem 48 -rw-rw-r-- 1 ethanak ethanak 2134 sie 6 14:46 calendar.html -rw-rw-r-- 1 ethanak ethanak 2309 sie 6 14:01 events.html -rw-rw-r-- 1 ethanak ethanak 1910 lip 24 09:11 favicon.shtml -rw-rw-r-- 1 ethanak ethanak 2171 lip 25 10:18 index_ap.shtml -rw-rw-r-- 1 ethanak ethanak 7186 sie 5 18:24 index.shtml -rw-rw-r-- 1 ethanak ethanak 2771 sie 5 11:32 pogodynka.css -rw-rw-r-- 1 ethanak ethanak 19083 sie 6 18:09 pogodynka.js To ląduje we flashu (rozszerzenie shtml jest trochę mylące, nie zwracaj uwagi). Można by było trochę przyoszczędzić ale jakoś nie miałem motywacji Zawsze mogę to zgzipować i serwować gzipy, przeglądarka sobie poradzi, tylko za dużo nie oszczędzę. W css siedzi sobie jeszcze coś niepotrzebnego, ale to kilkadziesiąt bajtów do usunięcia. Pisałem wszystko ręcznie. Działa jak web app (cokolwiek byś miał na myśli), z responsywnością nie ma problemu (to przecież działa na lokalnej sieci).
_LM_ Sierpień 9, 2024 Udostępnij Sierpień 9, 2024 SHTML? Co to jest? Tj: da się wygooglować no ale wolę z pierwszej ręki wiadomości. Web app może źle to napisałem, chodzi o to czy instalowana jest aplikacja w przeglądarce
ethanak Sierpień 9, 2024 Autor tematu Udostępnij Sierpień 9, 2024 4 minuty temu, _LM_ napisał: czy instalowana jest aplikacja w przeglądarce Nie, nic nie jest instalowane. Wchodzisz na stronę i jedziesz. shtml to oryginalnie oznaczenie starej technologii tworzenia dynamicznych stron wyłącznie za pomocą Apacza, bez żadnych php. Użyłem tego rozszerzenia bo edytor traktuje to jako html, a skrypt który automatycznie robi z tego plik w C++ wie, że to nie jest zwykły tekst i nie tworzy automatycznego handlera.
_LM_ Sierpień 9, 2024 Udostępnij Sierpień 9, 2024 (edytowany) Dzięki za odp. Jak widzę że cały ten serwis zajmuje około 30kB to wiem że jeszcze sporo mam do nauczenia się. Edytowano Sierpień 9, 2024 przez _LM_
ethanak Sierpień 9, 2024 Autor tematu Udostępnij Sierpień 9, 2024 Jutro wrzucę kod (jeśli chcesz binarkę to mam dwie wersje, dla zwykłego DevKit i dla Xiao S3, będziesz mógł wypróbować bez szukania bibliotek tylko napisz która potrzebna). Zajrzyj do katalogu www i do server.cpp
_LM_ Sierpień 9, 2024 Udostępnij Sierpień 9, 2024 (edytowany) Dzięki, po prostu potrzebuję odniesienia, nie lubię tych htmlów cssów jsów i innych podobnych. Potrzebowałem wiedzieć ile powinna taka strona www zajmować pamięci. Narzędzie którego używam do generowania tworzy kolosy od 100kB w górę. Edytowano Sierpień 9, 2024 przez _LM_
ethanak Sierpień 10, 2024 Autor tematu Udostępnij Sierpień 10, 2024 No więc taka przedostatnia (chyba) wersja. Działa normalnie, jest jeszcze parę literówek w komunikatach i trochę za dużo pisze po serialu - ale w sumie wersja używalna. Naa XIAO S3 działa z 16-bitowym głosem Mbroli (instrukcja przy następnej okazji). Biblioteka BMP280 to https://github.com/dvarrel/BMP280.git A kod (na razie bez zdalnego termometru): Pogotest3.zip 1
ethanak Sierpień 24, 2024 Autor tematu Udostępnij Sierpień 24, 2024 (edytowany) Zewnętrzny termometr chyba ukończony - wygląda tak: Trochę duży, ale to kwestia zastosowanego akumulatora - w moim przypadku 900mAh. Pewnie można znaleźć mniejszy - no, ale to ma być urządzenie do pokazu i prawdopodobnie do zdemontowania. Użyłem płytki XIAO ESP32C3 ze względu na wbudowaną ładowarkę. Tzw. "schemat" (a właściwie parę kresek): Zamiast DHT22 można użyć DS18B20 - nie wymaga to żadnych zmian, jedynie po podłączeniu do terminala serial należy odpowiednio ustawić typ czujnika. Wyłącznik nie jest ujęty na schemacie - po prostu odłącza akumulator. Rezystory 0805 po prostu wzięte z szuflady (akurat takie miałem) i wlutowane bezpośrednio na płytce XIAO. Kod trochę prowizoryczny (raczej do poczytania), ale na oko działający: Pogoext.zip Edytowano Sierpień 24, 2024 przez ethanak 1
Pomocna odpowiedź
Bądź aktywny - zaloguj się lub utwórz konto!
Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony
Utwórz konto w ~20 sekund!
Zarejestruj nowe konto, to proste!
Zarejestruj się »Zaloguj się
Posiadasz własne konto? Użyj go!
Zaloguj się »