Skocz do zawartości

opp34

Użytkownicy
  • Zawartość

    23
  • Rejestracja

  • Ostatnio

Wszystko napisane przez opp34

  1. Informację o małych marginesach dopiszę do listy z punktami do zrobienia. Nie jest to aż tak prosta poprawka do wprowadzenia, ponieważ wymagałoby to też przesunięcia innych elementów - na załączonych zrzutach tego nie zaobserwujecie, w rzeczywistości jest jeszcze jedna opcjonalna kolumna, w której pojawiają się wartości, które zostały wprowadzone przez użytkownika, a nie zostały jeszcze odczytane przez procesor (jako informacja, że program wciąż pracuje w oparciu o stare ustawienia. W bazie danych są dwie identycznie struktury - wejściowa, do której trafiają wartości wpisane przez operatora, o
  2. Po prawdzie to poprzednia wersja projektu była oparta o elementy do montażu powierzchniowego. Ich lutowanie przyszło mi z trudem - nie posiadam odpowiedniego sprzętu, odpowiedniej praktyki w samym lutowaniu a do tego te elementy są tak małe, że w tej wersji przeszedłem z powrotem na elementy przewlekane. Z przyjemnością zapoznam się z opiniami na temat aplikacji - jest to pierwsza aplikacja na Androida, którą sam stworzyłem, posiadam też niewielkie obycie z projektowaniem interfejsu użytkownika. W przypadku trójkąta, jest to Floating Action Button, który jest scalony z Action Bar (paskie
  3. Pozwolę sobie na przedstawienie postępu prac w tym temacie – założyłem go, licząc na opinie i uwagi od społeczności, a ten strumyk stosunkowo szybko wysechł. Tak czy inaczej, dziękuję za udzielone odpowiedzi, obserwacje i podpowiedzi. Od ostatniego wpisu pracowałem nad poprawieniem stabilności programu, zmniejszeniem zajętości pamięci oraz testowałem przełączanie pomiędzy pracą online i offline (serwerem NTP i bazą Firebase a zegarem RTC i pamięcią wewnętrzną SPIFFS). Starałem się też ustabilizować czas cyklu (postawiłem Firebase’a na serwerze europejskim, uporządkowałem program, aby posz
  4. Pewnie nie takiej odpowiedzi oczekiwałeś - uczysz się nie tyle samego sprzętu, co programowania, podejścia i sposobu myślenia. Jak uczysz się jeździć autem, to nie uczysz się jeździć precyzyjnie fiatem 126p, a generalnie poznajesz przepisy i obsługę pojazdów silnikowych. Z tej perspektywy patrząc, płytka, którą zastosujesz, jest prawie bez znaczenia. Jednocześnie bez sensu jest stosowanie złożonych płytek, których taktowanie idzie w GHz, a pamięć jest liczona w setkach MB do przeprowadzenia prostych projektów - dużo za nie zapłacisz, posiadają dziesiątki złączy, opcji i bajerów, których i tak
  5. Powodem jest to, że po pierwszym przyciśnięciu przycisku wpadasz w pętlę while, która jest wykonywana dotąd aż wypełniony jest warunek podany w nawiasie. W Twoim przypadku jest to true. Stąd też program nie jest w stanie opuścić pętli. Proponuję, żebyś poczytał sobie o instrukcji switch lub zastosował proste if. Poniżej przykład z zastosowaniem switcha. switch(buttonState) { case 0: // jeśli buttonState = 0 { Serial.println(“1”); break; // bez tego, jeśli buttonState = 0, wykonałby się też kod przypisany do wartości 1 } case 1: // jeśli buttonState = 1 { Serial.println(“0”);
  6. Chylę czoła przed autorem, że doprowadziłeś projekt do końca, że nie przerwałeś po napotkaniu pierwszych trudności. Czytając opis, powiedziałbym, że ten projekt jest dobrym przykładem, że rzeczywistość jest znacznie bardziej złożona niż się ją prezentuje. Doceniam, że opisałeś nieprawidłowe założenia, popełnione błędy i inne potknięcia – szczególnie, że powszechne jest prezentowanie się jako perfekcyjnych, unikatowych, nieskalanych żadną porażką. Wspomniałeś, że to Twój pierwszy poważny projekt. Przypomniało mi się, jak jednego dnia znalazłem opis innego Pierwszego Projektu, w którym au
  7. Ponownie o sobie przypomnę, odświeżając stan projektu. Od ostatniego czasu testowałem podłączenia czujników analogowych - podłączenie bezpośrednio pod jedyne wejście analogowe, poprzez 74HC4051 oraz za pośrednictwem zewnętrznego przetwornika ADS1015. Było to powodowane tym, że przeczytałem opinię, że działające połączenie WiFi potrafi przeszkadzać w prawidłowej pracy wbudowanego przetwornika. Ostatecznie w trakcie testów się to nie przydarzyło, a pomiar z zastosowaniem ADS1015 nie usprawiedliwia jego ceny, toteż pozostałem przy poczciwym 74HC4051. Zastanawiałem się też nad pracą przy brak
  8. opp34

    DS18b20 z ILI9341 SPI 240x320

    Żeby przesłać informacje do monitora, w setup trzeba zainicjować wymianę danych poprzez Serial.begin(9600). W nawiasie podajesz prędkość transmisji, ważne, żeby po otwarciu monitora w Arduino IDE ustawić tę samą wartość. Do wyświetlania zarówno statycznego tekstu, jak i wartości zmiennych stosuje się funkcje print (wypisuje wartość i nie przechodzi do nowej linii) i println (wyświetla wartość i przechodzi do następnej linii). Przykładowo: Serial.print("tekst"); // w monitorze wyświetli się statyczny tekst, który został podany w nawiasie w cudzysłowie, tj. tekst, program nie przyjdzie
  9. opp34

    DS18b20 z ILI9341 SPI 240x320

    Daj znać, jeśli będą trudności z DS18B20 lub na przykład będziesz potrzebował obsłużyć więcej niż jeden czujnik. Na temat wyświetlacza się nie wypowiem, bo tego typu sprzęt nie stosowałem od dawien dawna i mógłbym tylko wprowadzić w błąd. Jedynie znalazłem ten opis. Wynika z niego, że wyświetlacz pracuje z logiką 3.3V (nie tylko zasilanie, ale też przesyłane sygnały) a arduino z logiką 5V (jeśli ustawisz wyjście w stan wysoki i zmierzysz napięcie, powinno ono wynosić około 5V). Autor wpisu zastosował najprostszą technikę, to znaczy dzielniki napięcia. Innym rozwiązaniem jest konwerter poziomów
  10. opp34

    DS18b20 z ILI9341 SPI 240x320

    Poniżej znajduje się program, który odczytuje pomiar z jednego czujnika DS18B20. Program teoretycznie powinien działać, tym niemniej zaznaczam, że go nie testowałem - przeniosłem fragmenty z innego funkcjonującego projektu. Kod się kompiluje. W setupie sieć 1 wire jest inicjalizowana, odczytywany jest adres czujnika o indeksie 0 oraz ustawiana jest jego rozdzielczość. Potem w loop jest odmierzany czas od ostatniego odczytu, a jeśli przekroczył on ustawiony czas trwania konwersji, wówczas program sprawdza, czy czujnik o podanym adresie znajduje się na sieci. Jeśli tak, następuje odczyt tem
  11. opp34

    DS18b20 z ILI9341 SPI 240x320

    Wiem, że pytanie dotyczyło przede wszystkich wyświetlacza. Ja pozwolę sobie dodać informacje na temat DS18B20. Program jest identyczny, obojętnie jaki jest sposób podłączenia, tj. standardowe z trzema przewodami lub pasożytnicze z dwoma. Jesteś w stanie jedynie odczytać, co wykrywa sieć 1 wire za pomocą isParasitePowerMode(void). Adresy nadane poszczególnym czujnikom możesz odczytać za pomocą funkcji getAddress(DeviceAddress* adres, int index). Podając indeks (numerowany od 0), funkcja zapisuje w tablicy adres czujnika. Nie jest on jednak niezbędnie potrzebny, możesz posługiwać się
  12. Jeśli ja bym to projektował, to pewnie zastosowałbym jakiś stabilizowany zasilacz na 12 V 3 A, który podłączyłbym bezpośrednio do przekaźników i zaczepów oraz do przetwornicy napięcia z napięciem wyjściowym ustawionym na 3.3 V. Przetwornica zasilałaby samo NodeMcu (i zegar RTC, jeśli jest on Tobie potrzebny). Potem łączysz masę obwodu 12 V z 3.3 V. Ogólnie proponuję, żebyś zaczął od narysowania schematu elektrycznego układu, np. w programie Eagle lub KiCad. Będzie znacznie prościej wyłapać ewentualne błędy, a Tobie potem będzie prościej złożyć układ. Natomiast od strony programisty
  13. Na temat przekaźnika przeczytaj sobie tutaj. Jest tam przykład pokazujący, co to znaczy, że przekaźnik jest sterowany stanem niskim. Uproszczając, podajesz zasilanie, które trafia na transoptory poszczególnych przekaźników. Wystawienie sygnału niskiego powoduje przepływ prądu i załączenie przekaźnika. Poza tym przypatrz się, że optoizolacja w przypadku Twojego przekaźnika jest połowicza, ponieważ zasilanie transoptora i obwodu cewki jest zwarte. Tutaj jest przykład przekaźnika, w którym zasilanie transoptora VCC i cewki JD-VCC są odseparowane. Lepszym rozwiązaniem jest, jeśli mikrokontroler i
  14. Trudno jest odpowiedzieć jednoznacznie, ponieważ podanie prostej dyrektywy include z nazwą pliku nagłówkowego nie precyzuje, jaka biblioteka jest potrzebna. Bywa, że nazwy plików w poszczególnych bibliotekach pokrywają się (zazwyczaj są to biblioteki do tych samych zadań, stąd też nie załączasz ich jednocześnie i nie stanowi to problemu). W przypadku tego artykułu zrobiłbym założenie, że chodzi o standardowe biblioteki ESP32 od producenta płytek, firmy Espressif. Pobierz je sobie stąd. Jest to paczka bibliotek, w której znajdziesz SPIFFS (biblioteka do obsługi SPI Flash File System, tj.
  15. Opisz proszę precyzyjnie, jaki jest problem. W przypadku instalowania biblioteki, przy założeniu, że programujesz w Arduino IDE, są dwie opcje. Pierwsza to zastosowanie narzędzia wbudowanego w IDE. W tym celu otwierasz IDE, przechodzisz do zakładki Tools, a potem Manage Libraries. Otwiera się okno, w którym w prawym górnym rogu możesz wpisać nazwę biblioteki, a potem ją zainstalować (znajdujesz odpowiednią na liście i przyciskasz przycisk Install). Niektóre biblioteki nie znajdziesz na liście, tak jest z biblioteką wymienioną w tym artykule. Wówczas trzeba ją zainstalować ręcznie. Aby to
  16. Jak pisałem, jedną z opcji jest zastosowanie płytki z ESP8266 na pokładzie (np. Node MCU), która pozwala na sterowanie wyjściami (w Twoim przypadku przekaźnikiem) i jednocześnie łączy się z internetem. Programuje się ją w języku C/C++. Obsługa jest łatwa i jest dużo przykładów. Do tego jesteś w stanie napisać prostą aplikację w Android Studio za pomocą Java/Kotlin. Jeśli nie znasz tych języków, nie stanowi to problemu. Do zaprojektowania jednego ekranu z opcją logowania i przyciskiem do sterowania przekaźnikiem potrzebne będą absolutne podstawy. Firebase to platforma, która pozwala n
  17. Nie podałeś zbyt dużo informacji, to też trudno się odnieść. Traktujesz ten projekt jako naukę czy też zależy Tobie na najprostszym, najtańszym rozwiązaniu? Planujesz samemu zaprojektować i zlutować płytkę czy też złożyć zestaw z modułów (np. moduł z procesorem, moduł z wyjściem przekaźnikowym itp.)? Jedną z opcji, pewnie nie za optymalną, jest ESP8266, do którego podłączony jest przekaźnik, integracja z Firebase'em oraz prosta aplikacja na androida, w której logujesz się i sterujesz przekaźnikiem. Stosunkowo prosty projekt. Jeśli interesuje Cię ta opcja i potrzebujesz ewentualnej pomoc
  18. Powrócę do innego tematu - przetwornicy oraz zasilania obwodu 3.3 V. Zmierzyłem, że w trakcie normalnej pracy pobór to ok. 80 mA, przy otwartych wszystkich zaworach dochodzi do 140 mA. W przypadku napięcia na wejściu 12 V, na wyjściu 3.3 V, moc, którą trzeba rozproszyć to P = (12 V - 3.3 V) * 0.14 A = 1.22 W. Z przeglądanych stabilizatorów wartość RthJA (thermal resistance junction-ambient) dla obudowy TO-220 wynosiła przynajmniej 50 oC/W (przykładowo dokumentacja LF33CV jest tutaj), a to przełożyłoby się na T = 1.22 W * 50 oC/W = 61 oC. W założeniach płytka znajdzie się w hermetycznej obudowi
  19. Przypomnę o sobie i sam sobie wytknę, że błędnie dobrałem wartości kondensatorów do 74HC595 oraz 74HC4051. W dokumentacji producent podaje ile powinno być kondensatorów oraz prawidłowy przedział ich wartości. Jest to opisane tutaj (power supply recommendations) oraz tutaj (layout guidelines). Na tej podstawie zmieniłem wartości oraz pozbyłem się kondensatora C4 (stosowanego, jeśli potrzebne jest napięcie VEE). Poprawiony fragment schematu:
  20. Dziękuję za podpowiedź. Nie spotkałem się z zaworami działającymi na zasadzie podobnej do wyświetlaczy w czytnikach elektronicznych. Do rozważenia w ewentualnych przyszłych wersjach projektu. W stosunku do poprzedniej wersji zaszło i tak dużo poprawek - inny procesor, utworzenie od podstaw aplikacji na androida, przeprojektowanie płytki PCB. Dużo jak na jedną osobę, nawet bezrobotną.
  21. Zastosowałem płytkę z 74HC4051, ponieważ ją posiadałem, a samego układu nie. Pierwsza wersja schematu odpowiadała temu, co zastosowałem w trakcie testów. W nowszej, znajdującej się poniżej wersji, wstawiłem scalaka. Nie jestem pewien, czy tak pozostanie – po pobieżnych poszukiwaniach znalazłem tylko jedną stronę, które posiada go w ofercie. Zabezpieczenie wyjść przed wysterowaniem było przeprowadzane programowo i w przypadku zastosowania rejestru przesuwnego oraz ustawiania pinów nim sterujących jako wyjścia i wyzerowanie ich na samym początku pracy programu przyniosło pożądany efekt. W p
  22. Po pierwsze – dziękuję za zainteresowanie tematem. Na początku postaram się odpowiedzieć na powyższe punkty, a potem opiszę poprawki wprowadzone w projekcie płytki od czasu publikacji pierwszego postu. // odpowiedzi Na razie nie planuję przesyłać płytki do realizacji. Przedstawiony projekt jest jedną z pierwszych wersji, a tych z pewnością będzie jeszcze sporo. Wejścia analogowe są podłączone do płytki firmy SparkFun. Według opisu znajdującego się na stronie producenta, płytka co prawda pozwala na stosowanie ujemnego napięcia, jednak wymaga to usunięcia zwory JP1. Domyślnie
  23. Dzień dobry, pracuję nad projektem automatycznego systemu podlewania. Projekt jest oparty na NodeMCU V2, który steruje elektrozaworami na 12 V (zawór główny oraz cztery zawory odpowiedzialne za poszczególne strefy). Do tego zastosowane zostały cztery analogowe pojemnościowe czujniki do pomiaru wilgotności ziemi, czujnik temperatury DS18S20 oraz czujnik ciśnienia atmosferycznego BMP280. Odczyt danych pomiarowych oraz sterowanie zaworami jest przeprowadzane za pośrednictwem utworzonej w tym celu aplikacji na Androida. // informacje na temat schematu Układ jest zasilany za pomocą s
×
×
  • 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.