Skocz do zawartości

kaczakat

Użytkownicy
  • Zawartość

    495
  • Rejestracja

  • Ostatnio

  • Wygrane dni

    13

kaczakat zajął 1. miejsce w rankingu.
Data osiągnięcia: 7 marca.

Treści użytkownika kaczakat zdobyły tego dnia najwięcej polubień!

1 obserwujący

Informacje

  • Płeć
    Mężczyzna

Ostatnio na profilu byli

Blok z ostatnio odwiedzającymi jest wyłączony i nie jest wyświetlany innym użytkownikom.

Osiągnięcia użytkownika kaczakat

Innowator

Innowator (10/19)

  • Stały wizytator
  • Regularny bywalec
  • Za 25 postów
  • Za 5 postów
  • Za 100 postów

Odznaki

203

Reputacja

  1. Darmowy ThingSpeak ma ograniczenie do 15s, ale można zrobić tak, że jak w pole 1 kanału wpiszesz wartość, do drugi ESP to odczyta i coś z tym zrobi. Są też serwery MQTT i na telefon prosta aplikacja, na Arduino biblioteki do obsługi mgtt, tu raczej jest stałe połączenie i nasłuch na kanale. Ja używam swojego serwera Websockets w jednym ESP, inne esp mogą się do niego podłączyć jako klienci i sępić dane w czasie rzeczywistym, przykład serwera wrzuciłem w wątku obok. ESP ma ograniczenie do 4 połączeń, dlatego lepiej jest patrzeć na zewnętrzne serwery. Można też po prostu wgrać Tasmotę w ESP i ustawić komunikację między nimi, jest filmik na Youtube jak z dwóch zrobić zdalnie sterowany termostat, tu też jest ograniczenie do 4 połączeń.
  2. Generalnie to się nie wystawia na zewnątrz, router ma być takim serwerem, ma firewalla i jakieś podstawowe zabezpieczenia, lepiej przekierować porty. Wchodzisz w ustawienia sieci (każdy router ma to subtelnie inaczej, znajdziesz w Google jak w tym modelu to zrobić) i sobie przekierowujesz określone porty, np. możesz mieć przekierowany port 5333 na port 80 urządzenia 192.168.0.22 i do ESP dostaniesz się wtedy po adresie "mojanazwa.ddn.org:5333" czy jak tam sobie ustawiłeś tą nazwę dla swojego IP. Jak chcesz mieć odczyt temperatury to sobie załóż konto na ThingSpeak, możesz założyć darmowo ze 3 kanały, każdy ma 8 pól, w Arduino wrzucasz bibliotekę, podłączasz czujnik, wartość czujnika co 15s czy tam minut wysyłasz na ThingSpeak, to zostaje zapisane w serwerze i masz do tego dostęp jak do każdej strony WWW, możesz sobie obejrzeć aktualną wartość i historię na wykresie. W Androidzie możesz sobie też zainstalować widget ThingSpeak, będzie pobierał dane z serwera i prezentował wartości na pulpicie, możesz tu ustawić alarmy przekroczenia zadanego progu. https://play.google.com/store/apps/details?id=ua.livi.thingspeakmonitor&hl=en_US
  3. No właśnie mam doklejone OTA więc i tak to wysyłam online. Najbardziej rozbudowana wersja na razie zajmuje mi 8kB, 1%? Oczywiście na pewnym etapie rozbudowy strony WWW może być to konieczne, jednak nie planuję robić takich wodotrysków, rozdzielać pliki HTML, JS, CSS. Jak potrzebuję oglądać wykresy to wysyłam na serwer HA lub ThingSpeak. Gdyby to zrobić na Atmega328 z shieldem Ethernet to miałoby bardziej sens, bo Atmega nie ma flash do szastania, ale na razie to odpuściłem, ta biblioteka niby to obsługuje, ale w wersji 1.x i chyba tylko jako klient.
  4. @_LM_ teraz jest też Tasmota, wiele rzeczy, które potrzebowałem można zastąpić gotowcem, ale znowu trzeba się nauczyć jak to konfigurować, a wszystkie opcje to by była spora biblia, multum osób to opracowuje. Jest też chatGPT, miałem jedno okienko tekstowe na początku i ciągle odkładałem by się w to zagłębić, jak zrobić ich kilka wierszy, ale z jedną funkcją, tak by sobie zidentyfikowała, z którego okna jest kliknięcie, dokleiła id i komunikat, potem mi jeszcze wytłumaczył jak inkubować i która rasa jest kur znosi najwięcej jajek rocznie. Kod strony w ogóle nie musi być w ESP, można sobie go zapisać na dysku i stąd otworzyć, tylko podać numer do IP WS ESP. Miałem też wersję w SPIFF z grafikami, gierka w wisielca z kursu JS, ale zrezygnowałem jak znalazłem opcję "R"rawliteral", bez grafiki też działa OK, ma być astetyczny.
  5. Parę lat temu szukałem sposobu jak to zorganizować i niestety poradniki prezentowały tylko proste działanie, to było OK dla jednego czujnika, ale jak chciałem to oglądać na www co robi ESP na bieżąco to wymyślałem np. odświeżanie co 1s, moduł działał losowo od kilku minut do kilku godzin, a im więcej elementów na stronie tym szybciej umierał, bo robiło się z tego sporo tekstu do wysyłania. Może coś tam z tym poprawili w core przez te lata, ale nie mam już potrzeby sprawdzać. Rozwiązaniem było zrobienie tego na Websockets, czyli to co pisze @kostuch, to podobne mechanizmy, WS raczej jest aktualny, zacząłem poszukiwania od Ajax, ale do niczego nie doszedłem w Arduino, a do Websockets znalazłem fajny przykład, szybki kurs youtubowy HTML, JS, CSS na kanale pasja informatyki i zaczęło to mi działać jak chciałem. Można sobie zrobić dowolny panel sterowniczy, online, nie ma potrzeby podłączania wyświetlacza ani robienia menu. Chcę mieć DS po numerze i muszę zmienić na nowy? Wystarczy wkleić nowy numer i kliknąć SEND. Ustawić godzinę z palca - jednym suwakiem o zakresie 0-1339. W załączniku masz prosty przykład, z OTA i WIFImanager. ESP8266 core3.1.2.zip
  6. Bo serial może drukować po literce i zerować napis, który nigdy nie będzie w jednym kawałku czteroliterowym napisem "3 ON". Masz przykład w Arduino SerialEvent, tam to leci w ten deseń, że każdy przylatujący na serial znak jest dodawany do napisu, a dopiero gdy zostanie wykryty znak nowej linii '\n' napis jest uznany za kompletny, ustawiona jest flaga=1, wtedy używasz w innej części kodu tej flagi if(flaga) {blok programu sterujący switchami, zerowanie flagi, zerowanie napisu}. Jak wszystkie polecenia miałby identycznie 4 znaki to też tak można zrobić, że jak zbierzesz 4 znaki to coś z tym robisz, ale to jest wadliwe, bo w razie błędu, literka ucieknie, wszystko się poprzesuwa, dlatego lepiej jest mieć jakiś szczególny znak na końcu, albo na początku i jak masz taki znacznik to wiesz, że zbierasz literki i kiedy masz komplet. Lepiej chyba go wstawić na koniec, a na początek ewentualnie inne znaki jak chcesz zrobić jakieś rozróżnienie, że coś jest komendą, a coś napisem do użycia do np. wyświetlenia. Do porównywania napisów też są inne funkcje, zarówno do napisów string jak i tablic znaków char. I nigdzie nie musi być delay choćby 1ms.
  7. Ledy programowalne wymagają 5V i to negatywnie wpływa na energooszczędność. Przetwarzanie energii to straty. Pojemność AA to 1.2x2000mAh - straty, drugie rozwiązanie to 9Vx150mAh -straty, lepsze rozwiązanie to 18650 i 3.7V x 2500mAh. Jeśli użyjesz zwykłych led i samej Atmegi328p, może być zresztą Attiny do takiego zadania, to możesz ustawić uC na 8MHz, nawet na 1MHz i zasilać go bez żadnego przetwarzania napięcia w zakresie od 2.8-4.3V, akurat w zakresie pracy akumulatorka. Kilka led i PWM może zapewnić przyjemny dla oka efekt przy optymalnym zużyciu energii. Nawet jak zostaniesz przy programowalnych ledach to i tak lepiej użyć akumulatorka 18650, tylko tu też odjąć od pojemności straty. Jest sporo gotowych modułów zapewniających zarówno ładowanie aku jak i od razu wyjście 5V za całe 9.99PLN.
  8. Z całego kodu nie korzystałem tylko z tych ifów niby weryfikujących poprawność transmisji do DS, wywal je i od razu wydrukuj odczytaną temperaturę, to i tak tylko test dla Twoich oczu w wydruku na serial. Nie musisz czekać delay(1000), bez dodatkowych zabiegów biblioteka i tak każe funkcji zlecenia pomiaru czekać w tym miejscu na jej koniec. Trafiłem kiedyś na 10 czujników z jednego zamówienia, które działały tylko pojedynczo poza tym odczyty były bardzo niestabilne, choć krążyły w okolicach prawdopodobnych wartości, raczej wszystkie z Ali po złotypindziesiąt to podróbki, ale te były wyjątkowo nieudane.
  9. Ja używam millis, jest to bardzo proste, jak coś ma trwać minutę, ale ważne są odstępy co 1s, to wywołuję switch case co 1s, gdzie: case 1 Sprawdź czy wybudzić czujnik, jakaś zmienna++ zliczająca sekundy 15 minut, jeśli tak to wybudź czujnik i przejdź dalej case 2 odczekaj tu te 30 wywołań, np. zmienna++ i jak zrobi się większa >30 to przejdź dalej case 3 wykonaj 1 pomiar, zlicz pomiary do zmiennej będącej przy okazji indeksem tablicy i ją uzupełniaj przez te kolejne 30s, uśpij czujnik i przejdź dalej case 4 wyciągnij średnią, przekaż wynik, wyzeruj zmienne, tak by były gotowe na nowy cykl, wróć do case 1 Jest przykład migania led w blinkWithoutDelay, wystarczy tam wywalić miganie i wstawić taki switch case i masz tą część programu, która nie zakłóca reszty, którą można zrobić w analogiczny sposób. Zmienne można tworzyć w danym bloku jako static, wtedy są widoczne tylko w tym {} obszarze, ale zachowują wartości do kolejnych wywołań tego bloku w {}. Dzięki temu każdy taki blok w {} może mieć swoją zmienna++ o tej samej nazwie. Trzeba też sprawdzić jak czujnik się komunikuje, bo np. taki DS18B20 zapytasz o temperaturę i on tam sobie będzie tkwił przez cały pomiar, bo tak ma domyślnie ustawione w bibliotece Dallas Temperature, to blokuje program na prawie sekundę, można też odpowiednią funkcją wyłączyć czekanie na wynik, takim switch case wywoływanym co 100ms zlecić pomiar, przez kolejne 8 nic nie robić, w 9 odczytać, w kolejnym znowu zlecić kolejny pomiar, dzięki temu mamy odczyt co 1s, ale uC jest tym zajęty tylko 2x po około 20ms na czas transmisji One Wire. Albo jakaś biblioteka z timerem programowym: #include <DallasTemperature.h> #include <OneWire.h> #include <TickTwo.h> #define ONE_WIRE_BUS 4 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); float tempDS; void temp(); void serial1000(); void serial500(); void ledBlink(); TickTwo timer1(temp, 100); TickTwo timer2(serial500, 500); TickTwo timer3(serial1000, 1000); TickTwo timer4(ledBlink, 50); void setup() { Serial.begin(115200); timer1.start(); timer2.start(); timer3.start(); timer4.start(); sensors.setWaitForConversion(0); sensors.setResolution(12); sensors.begin(); } void loop() { timer1.update(); timer2.update(); timer3.update(); timer4.update(); } void temp() { static uint8_t ktoraSetkaSekundy=0; switch (ktoraSetkaSekundy) { case 0: sensors.requestTemperatures(); break; case 3: Serial.println("Kuku z trojki"); break; case 8: tempDS = sensors.getTempCByIndex(0); break; default: // gdy 1,2,3,4,5,6,7 i 9 nic ta funkcja nie robi poza ktoraSetkaSekundy++ break; } ktoraSetkaSekundy++; if( ktoraSetkaSekundy>9) ktoraSetkaSekundy=0; } void serial500() { Serial.println("test 500 ms"); } void serial1000() { Serial.print("Temperatura: "); Serial.println(tempDS); } void ledBlink() { static bool startujemy=0; if(! startujemy) { pinMode(LED_BUILTIN,OUTPUT); startujemy=1; } digitalWrite(LED_BUILTIN, ! digitalRead (LED_BUILTIN)); }
  10. Od razu tak dramatycznie, zerknij sobie na Youtube, można tam na hasło ESP32CAM znaleźć wiele ciekawych projektów, jakieś jeździki sterowane przez WIFI, itp. Warto się pobawić jednym takim nawet jeśli do monitoringu się nie nadaje. I oczywiście, że są moduły ESP32-S3, wystarczy zobaczyć dostępne płytki w ESP32 CORE, nawet jest taka z kamerą właśnie.
  11. No dlatego właśnie radziłem obniżenie core, ale @99teki to skompilował na 2.0.13, ja nie, w tym widzę czary. Expr. coś poprawiali z bezpieczeństwem WIFI, może temu to w nowszych wersjach zajmuje więcej, dlatego też jednak przerabiałem swój stary program, tylko on był zrobiony pod 2.5.2 dla ESP8266 i 1.0 dla ESP32, po aktualizacji musiałem zmienić też biblioteki, a potem niektóre użycia funkcji z tych bibliotek, jest sporo zabawy, odkładałem to z rok, ale w końcu przyczółek zdobyty. 2.0.5 to już raczej po tej większej łatce.
  12. ja miałem już 14, ale zaciekawiłeś mnie i skopiowałem ten projekt, nie poszło, choć błędy inne, w linii 310 rzucał się o te funkcje: (rtc_clk_cpu_freq_value(rtc_clk_cpu_freq_get())); Ale w 2.0.13 też, dopiero w wersji 1.0 wszystko się skompilowało OK: Znaczy nie testowałem wszystkich core po kolei, z 2.0.13 przeskoczyłem do 1. Zupełnie inny wynik kompilacji, pojemność flash i zajętość RAM. Czary.
  13. Wchodzi w narzędzia, manager płytek, wstukujesz ESP32, wybierasz wersję core i ją instalujesz. Wersja Arduino ma ograniczone znaczenie, akurat te rzeczy są w core, napisz jaki masz core esp32 zainstalowany, tak by @Kuba83 mógł wrzucić ten sam, ja mam już najnowszy i nie będę sprawdzał, skoro już to zrobiłeś. Z najnowszym core też to zapewne da się skompilować, sam walczyłem niedawno by przerobić program i tak dobrać nowe wersje bibliotek by wszystko się zgrało i skompilowało.
  14. Kup sobie jeden moduł do zabawy i się naciesz, do monitoringu to się nie nadaje. Byle jaka kamerka IP WIFI (znajdź sobie IP Winnes WPO1004 za 70 zł) i masz FHD, płynny obraz, obrotową kopułkę sterowaną z aplikacji, zapis filmów na SD i apkę MIPC na telefon do podglądu każdej kamerki z dowolnego miejsca na świecie, w zestawie zasilacz i elementy montażowe. Nie jest to kamera zewnętrzna ale mam taką schowaną pod dachem wiaty i całą zimę można było patrzeć na ptaszki w karmiku, jest też dwukierunkowy przesył dźwięku i nocny podgląd B/W. Można ją też podłączyć do HA, choć wtedy obraz już nie jest taki ładny jak w telefonie, po paru fikołkach podłączyłem ją też do aplikacji VMS w WIN i tu obraz jest spoko, kawałek: W opinii tej kamerki jest, że kiepski zasięg WIFI, mam takie dwie i inny model kupiony na ALI z zewnętrznymi antenami, ta z ALI to dopiero ma kiepski zasięg, jak nie widzi się z ruterem to znika z sieci, Winnes miałem w skrzynce drewnianej w budynku gospodarczym i łączyła się do routera pod wiatą przez ścianę i krzaki - są gorsze. Zresztą to wszystko chińczyki, jeden egz. może być ok, inny tragiczny. Z ESP32 CAM możesz zapisać co najwyżej kiepską fotkę lub oglądać aktualny pokaz slajdów w trybie video, ceny tych dwóch zestawów ostatecznie były by porównywalne. By łatwiej było to programować/zasilać są jeszcze podstawki do ESP CAM z portem USB za około 15zl, zasilacz, jakaś obudowa, może jeszcze obrót w jednej osi, zsumuj wszystko. Bardzo możliwe że są inne kamerki IP/WIFI - tańsze/lepsze, więcej MPx, każda może mieć niestety inną apkę, co robi śmietnik w telefonie, te z antenkami nie ruszyły ani w VMS, ani w Home Assistant, tylko apka. Oczywiście to nie są markowe rozwiązania, porządne kamery IP/WIFI zaczynają się od 1000zł, ale takie mnie nie interesowały, nie będę sprawdzał stanu depilacji narządów komara, bardziej chodziło o to czy np. chomik ma jeszcze wodę jak nas nie ma w domu. A jak kamer ma być znacznie więcej, obraz >5Mpx, to wybrałbym kamery LAN POE, WIFI się szybko zatka, a i tak jakiś kabel trzeba dociągnąć by miały zasilanie.
  15. To stary projekt: ESP32 Oscilloscope Clock using internal DACs, with WiFi and ntp sync. Mauro Pintus , Milano 2018/05/25 Wygląda, że nie używa żadnej obcej biblioteki, tylko to co w ESP32, a po dacie zgaduję, że był to core bardziej 1.0 niż aktualny. Też miałem problemy z własnymi projektami po aktualizacji do nowego core, zarówno w ESP8266 jak i ESP32. By nic nie grzebać w gotowym projekcie trzeba sobie wgrać core i wszystkie biblioteki w takiej konfiguracji, jak były w czasie tworzenia projektu. Tutaj powinien wystarczyć stary core. Nie ma znaczenia jaką masz płytkę, do kompilacji trzeba wybrać taką jak była w projekcie, przecież nie musisz mieć jej podłączonej do PC na czas samej kompilacji, w 2018 była ogólnie dostępna właściwie jedna z ESP32 WROOM, teraz to są C2/C3 S2 i wiele innych, różne zegary, radia, ilość core. Oczywiście mogły być różne warianty, że gdzieś tam led wbudowany jest na innym pinie, czy jakieś piny wyłączone bo użyte do wbudowanych fiuczerów na płytce. W ESP8266 jeszcze niektóre warianty miały pomieszane numeryki GPIO z oznaczeniami D0, D1, itd, w ESP32 zrezygnowano na szczęście z takiego podwójnego oznakowania.
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.