Skocz do zawartości

UART i RTC


alladyn21

Pomocna odpowiedź

Witam Panowie

Jakiś czas temu napisałem prosty program do zarządzania domowym ogródkiem i to działa

Ale po jakimś czasie jest to dla mnie za mało (nie działa tak jak wg mnie powinno) tzn nie jest łatwe w obsłudze

Ponieważ cały program jest napisany w oparciu o alarmy zegara rtc (każda zmiana jaką chce przeprowadzić musi być robiona w kodzie) na dłuższą metę jest to dość żmudne

Chciał bym użyć do tego UART ale zwykłe sample nie rozwiązują mojego problemu

mam pare zmiennych i są one cyframi (godzinami)

i np chce zmienić alarm z godziny 11 na godzine 9

i drugi alarm z godziny 21 na 22

jak zrobić to za pomocą uart?

__________

Komentarz dodany przez: Treker

Link do komentarza
Share on other sites

W programie musisz przewidzieć jakąś interakcję z użytkownikiem/operatorem. W zależności od swoich upodobań taki rodzaj współpracy wybierasz. To może być wyświetlacz LCD i proste przyciski, mogą być jakieś gałki do pokręcania, enkodery BCD lub nawet UART - ale on sam niewiele daje, bo tylko kanał przesyłania informacji. Po drugiej stronie musi być coś, co te dane łyka i wysyła własne, np. "dorosły" komputer z klawiaturą, ekranem i programem emulacji terminala szeregowego. Jednak to chyba niezbyt dobry pomysł, by zatrudniać PC lub notebooka do komunikacji z prostym sterowniczkiem. Pomyśl raczej o rozwiązaniach z lokalnym wyświetlaczem i klawiszkami. UART miałby sens gdybyś te kable musiał ciągnąć prze dwa piętra do swojego pokoju lub gdybyś gadał ze sterownikiem zdalnie przez jakiś moduł radiowy. Jeżeli możesz do swojego komputerka podejść i coś wyklikać, UART nie jest Ci potrzebny.

A jeśli już byś chciał koniecznie w ten sposób to zrobić, po prostu używasz bibliotek do wysyłania i odbierania ciągów znaków - bo to przesyła UART. Np. wysyłasz tekst: "Podaj godzinę podlewania" po czym dostajesz w sterowniku to co wstukałeś na klawiaturze, np. "15:20". Analizujesz kolejne znaki: 1,5,:,2,0, i zamieniasz je na liczby 15 i 20, które zapamiętujesz w swoich ustawieniach jako godziny i minuty. Jeśli ktoś odpisał "Odwal się" to w odebranym ciągu znaków nie znajdujesz cyfr więc wypisujesz "Co jest grane? Nic nie rozumiem. Spróbuj jeszcze raz." itd. To z grubsza tyle.

Link do komentarza
Share on other sites

arduino będzie podłączone w niedługim czasie do malinki z malinką będę się komunikował juz w dowolny sposób ale ona sama będzie zarządzać arduino przez uart

nie do konca rozumiem to co opisałeś 😋 jak byś to napisał w małym samplu kodem był bym wdzięczny 🙂 bo resztę sobie juz opracuje

zakładając

if (dh.hour >= godzinaWlaczenia && dh.hour <= godzinaWylaczenia) {
<wykonaj pętle>
}

to jak podać mu godzinewlaczenia i godzinewylaczenia?

Link do komentarza
Share on other sites

Tu masz opis biblioteki serial - to ona odpowiada za komunikację Arduino przez UART:

https://www.arduino.cc/en/Reference/Serial

"Nie do końca rozumiem" dlaczego tam jeszcze nie zajrzałeś - przecież te strony to podstawa dla piszących kod dla tego komputerka. Masz do tego dostęp nawet w swoim IDE.

EDIT:

"bo resztę sobie juz opracuje" - i tu się mylisz. Wyobraź sobie, że zbudowałeś samochód: podwozie, układ kierowniczy, hamulcowy, silnik, skrzynia automat, podgrzewana kierownica, pedały, fotele, bagażnik, lakier metalic i nawet klima - no wszystko czego można zapragnąć. Ale zapomniałeś zrobić drzwi. Czy możesz to zrobić metodą prostego "opracowania"? Nie. Będziesz musiał pruć diaxą świeżutką karoserię, wspawać zawiasy, zamki, zrobić zupełnie inne burty, nowe słupki, szyby, progi itd. W takiej sytuacji jesteś. Moim zdaniem będziesz musiał przemyśleć i przebudować całą strukturę kodu, bo komunikacja ze światem to czasem 80% programu. Ale lepiej późno niż później.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

alladyn21, Seriously?

Oczekujesz że ktoś napisze za Ciebie kod tylko po to żebyś za 3 dni wrócił bo "Niczego nie dotykałem i nie działa!"?

marek1707 jest najbardziej "fachową" osobą jaką spotkałem na jakimkolwiek forum.

I niesamowicie cierpliwą.

Treker, widzisz jak się kończy dział Arduino? 90% postów wewnątrz i pytania typu "Niczego nie próbowałem i nic nie działa!!!11!". //wiem, wiem.

Link do komentarza
Share on other sites

Nie jest tak źle. Kolega nie oczekiwał, że ktoś za niego napisze kod bo jak sam wspomniał "resztę już sobie opracuje". Faktycznie mógł się poczuć spuszczony na drzewo, bo zamiast jednej-dwóch linijek kodu dostał link do całej strony tekstu i jeszcze jakieś sprawy z samochodami. Musiałby przez cały manual przebrnąć by na końcu znaleźć przykład (akurat pierwszy z brzegu) pokazujący jak wczytać liczbę int przysłaną znakami przez port szeregowy. Fakt, czytanie nie jest najprostszą rzeczą więc nie możemy oczekiwać aż takich wysiłków od początkujących. Zamiast "filozofować" jak jakiś potłuczony trzeba było od razu napisać:

int x = Serial.parseInt();

i mógłby wciągać tyle zmiennych ile mu dusza zapragnie. Inna sprawa, że pewnie nic by mu z tego nie przyszło, bo wstawienie w obecnie pracującym kodzie linijek wciąż wczytujących zmienne rozwaliłoby całą strukturę, ale to już jest wnioskowanie bardzo odległe od np. wycinania drzwi.

Nie chcę by Kolega alladyn21 opuścił nasze Forum jako zignorowany fachowiec, któremu naprawdę brakuje tylko słowa a napisze cały poemat. Jeżeli mimo urazy jeszcze tutaj zajrzy, proponuję restart naszych stosunków i chwilę zastanowienia. Może moglibyśmy polecić jakąś książkę o programowaniu, żeby w zaciszu domowym zrozumiał, że programy nie kończą się na jednej prostej pętli i te co bardziej zagmatwane trzeba projektować wcześniej? Nieee, przecież trzeba by tyle przeczytać... No to może chociaż numer strony? Pliiz.

Link do komentarza
Share on other sites

Marek dzieki za odpowiedz 🙂 jedno zdanie dalo mi tyle ze napisalem caly projekt od nowa i juz wszystko dziala tak jak bym tego chcial 🙂 bede jednak zmuszony zalozyc inny temat bo o ile samo programowanie arduino z lekkimi podpowiedziami gdzie szukac i czego dalo rade tak z reszta sobie nie poradzę 🙂

Mianowicie chce podpiac arduino pod nowo zakupione raspberry zeby reszte projektu napisac na nim ale Juz na samym poczatku mam problemy 🙁

Raspberry mialo by odbierac i wysylać inforamcje po szeregowym monitorze a inforamcje ktore odbiera logowac w pliku txt ( data godzina temperatura i wilgotnosc) pozniej serwer na malince i ladny wykres na www jesli tylko nakierujecie mnie co mam przeczytac zeby to zrobic to sobie poradze 🙂 sorka za takie nazwanie ale internet teraz pelen niemilych ludzi, a fora sa od pomagania 😃

Ps program ma blisko 1k linijek kodu wiec nie jestem jakims noobem co nic nie dotykal i nie dziala 🙂 po prostu nie wiem nieraz jak odszukac pomocy bo nie wiem jak zadac pytanie 😋

Link do komentarza
Share on other sites

Raspberry działa na bazie linuxa, więc zawsze możesz najpierw napisać program na PC, a później przekompilować na malinkę.

Do wyboru masz dwie opcje: możesz wykorzystać UART wbudowany w RPi albo podłączyć przez USB konwerter USB-serial. Co ciekawe ta druga opcja jest dużo łatiwiejsza, właściwie wygląda identycznie jak w przypadku PC. Po podłączeniu konwertera powinno pojawić się urządzenie /dev/ttyUSB0, przez które możesz się komunikować - wszystko znajdzie google.

Natomiast wbudowany UART to nieco trudniejsza sprawa. Po pierwsze na nim pojawiają się komunikaty systemowe podczas uruchamiania linuxa - można to wyłączyć, znowu google pomoże.

Następny problem jest taki, że UART jest wykorzystywany do logowania użytkownika. Trzeba więc zmienić konfigurację i wyłączyć konsolę podłączoną do UART-a. Oczywiście wcześniej warto zadbać o inną metodę łączenia z Malinką (np. przez ssh).

To też jest opisane w sieci - google znajdzie wszystko. Na początek jednak polecałbym konwerter USB-serial - to duuużo łatwiejsza opcja.

Ps 1k kodu to chyba żaden dowód na nie-bycie noobem. Wybacz, ale to po pierwsze bardzo mało, a po drugie nie bądźmy marksistami, nie zawsze ilosć przechodzi w jakość...

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • 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.