Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA w 2025? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 13 kwi 2025, o 16:59


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 
    Autor Wiadomość
    PostNapisane: 8 mar 2016, o 08:47 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 01 sty 2014
    Posty: 243
    Pomógł: 9

    Witam

    Jakiś czas temu popełniłem sterownik do mojej kotłowni oparty na platformie Arduino Mega. Wymyśliłem sobie, żeby nie bawić się w obsługę z przycisków i tworzenia menu wielopoziomowego, że zamiast tego dołożę Ethernet Shield napiszę aplikację na Windowsa i będę parametry ustawiał z komputera. Działa mi to bez problemu. Wykorzystałem rozwiązanie z Bluebooka o komunikacji UDP i parsowaniu danych. Dla przykładu jak chcę ustawić bieżący czas w module RTC to wysyłam komendę 11^2016^03^08^08^30, jak chcę ustawić powiedzmy jakieś inne parametry to np wysyłam komendę 12^5^10^20^ i to działa poprawnie. Podobnie rozwiązałem sprawę odczytu parametrów. Kiedy na komputerze chcę odczytać bieżący czas z modułu RTC w sterowniku to wysyłam komendę 21^, wówczas sterownik parsuje to jako komendę odczytu czasu i wysyła pakiet zwrotny o przykładowo następującej treści 21^2016^03^08^08^30.

    Teraz postanowiłem sobie zrobić "powtarzacz" na biurko. Czyli moduł arduino uno z lcd tak by mi pokazywał aktualne parametry sterownika. Jak zamontuję ethernet shield nie ma problemu i wszystko działa. Ale ja chciałem iść krok dalej i zrobić sobie bardziej mobilną wersję wykorzystującą moduł Atnel-WiFi z płytką Air i tu pojawił się problem. Udało mi się poprawnie skonfigurować moduł WiFi. Udaje mi się wysyłać komendy RS`em, które docierają do sterownika. Komendy zwrotne są odbierane przez moduł WiFi i przekazywane do arduino i tu pojawia się problem prawdopodobnie albo ze specyfikacją arduino, albo czegoś nie wiem na temat jego konfiguracji. Otóż arduino to co odbiera z RS232 na linii RX jakoby przepisuje na linię TX. Rozumiem, że jak chcę korzystać z szeregowego monitora to takie coś musi być. To co moduł odbierze to przepisze na TX tak by komputer mógł odczytać, ale jak nie korzystam z tego to efekt jest niepożądany. Dla przykładu chcę odczytać czas. Powtarzacz wysyła komendę 21^. Sterownik odpowiada 21^2016^03^08^08^30. Powtarzacz odbiera dane od sterownika i przepisuje je na linię TX i tym samym do sterownika ponownie dociera 21^2016^03^08^08^30 ten widzi początek 21^ i z automatu odpisuje czas z modułu RTC do powtarzacza, ten przepisuje i komunikacja mi się zapętla...

    Stąd moje pytanie czy ktoś wie jak rozwiązać problem komunikacji szeregowej w arduino?

    _________________
    http://www.ate-zbaszyn.eu



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 8 mar 2016, o 08:53 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 20 sie 2013
    Posty: 795
    Lokalizacja: Poznań
    Pomógł: 59

    Jeśli chcesz podejrzeć na serial monitor to, co odbierasz z wifi, to musisz utworzyć drugi rs(uart) jako softserial i tam podpiąć przejściówkę do kompa.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 8 mar 2016, o 09:06 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 19 cze 2014
    Posty: 820
    Lokalizacja: Tam gdzie PYRY są
    Pomógł: 64

    Nie wiem, czy dobrze zrozumiałem Twój problem, ale rozumiem, że chcesz odpytywać jeden sterownik po jednym RSie przez dwa różne urządzenia.
    Ja bym spróbował dodać coś na zasadzie adresu urządzenia odpytującego. Np arduino UNO ma dar powiedzmy 02 a MEGA 01.
    I teraz wysyłasz zapytanie z 02 np #02#21^ lub #01#21^ a sterownik odpowiednio odpowida z takim samym początkiem. Sterowniki odbierają wszystko ale reagują tylko na swoje kawałki.

    _________________
    IntegraMETEO
    WordCLOCK
    IntegraTOUCH



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 8 mar 2016, o 09:44 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 01 sty 2014
    Posty: 243
    Pomógł: 9

    Panowie żebyśmy się dobrze zrozumieli. Ja chcę mieć komunikację typowo UDP. Moduł Atnel-WiFi jest jak gdyby interfejsem RS232-Ethernet.
    Sterownik nie chcę odpytywać po RS tylko po udp. Sterownik ma kartę ethernet i on czeka aż wleci jakiś pakiet. Jak nadejdzie to jest od razu traktowany funkcją:
    Składnia: [ Pobierz ] [ Ukryj ]
    język cpp
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Jak odpowiednio zinterpretuje nagłówek to podejmuje odpowiednie czynności i jeśli np zaczyna się 21^ to odsyła również po udp odpowiedź z aktualnym czasem sterownika np 21^2016^03^08^09^25^30^. W powtarzaczu również czeka podobna funkcja parsująca, która stwierdza na podstawie początku do pierwszego tokena, że przyleciał czas a nie odczyt temperatur czy aktualne nastawy. Tylko sprawa wygląda tak, że sterownik odpowiada po udp, leci to do wifi, ale z wifi to już nie jest udp tylko RS232. W powtarzaczu nie ma już:
    Składnia: [ Pobierz ] [ Ukryj ]
    język cpp
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    tylko
    Składnia: [ Pobierz ] [ Ukryj ]
    język cpp
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    gdzie do odbioru stringa używam void serialEvent() {...}

    Problemem jest to, że co mi wypluje WiFi na RX arduino to samo pojawia się na TX i WiFi odsyła ponownie to co otrzymał. Moduł WiFi jest sprawny to dziwne zachowanie arduino i podejrzewam, że spowodowane jest funkcjonalnością szeregowego monitora, który działa tak a nie inaczej. Myślałem tylko, że jest to problem do przeskoczenia. Ewentualnie pozostanie mi przeprogramować sterownik tak by innymi tokenami odpytywać a zupełnie innymi odpowiadać, ale problem gdzieś tam jednak pozostanie.

    _________________
    http://www.ate-zbaszyn.eu



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 8 mar 2016, o 11:52 
    Offline
    Użytkownik

    Dołączył(a): 20 lip 2015
    Posty: 83
    Pomógł: 6

    Sprawdź może poprzez putty czy ten problem występuje, ewentualnie może masz zwarcie pomiędzy RX i TX?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 8 mar 2016, o 11:55 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 20 sie 2013
    Posty: 795
    Lokalizacja: Poznań
    Pomógł: 59

    Zapodaj schemat podłączenia arduino z wifi i szeregowego monitora. Coś wprowadza echo albo coś jest źle podłączone. Dlaczego tak wnioskuję? Ano dlatego, że arduino uno do serial monitora używa pinów 0 i 1. Zakładam, że do wifi użyłeś również tych pinów. Tu właśnie może być problem.


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 8 mar 2016, o 13:17 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 01 sty 2014
    Posty: 243
    Pomógł: 9

    @icer_cmg - tak mam właśnie podpięte. Zatem jedynym rozwiązaniem będzie stworzenie programowego RS232 bo uno ma tylko ten jeden sprzętowy wykorzystywany także przez monitor.

    Jak wrócę z pracy to sprawdzę to rozwiązanie.

    _________________
    http://www.ate-zbaszyn.eu



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 8 mar 2016, o 21:02 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 01 sty 2014
    Posty: 243
    Pomógł: 9

    Już po testach. Działa wyśmienicie. Rozwiązaniem okazało się użycie programowej emulacji portu RS232 SoftwareSerial() . Sprzętowo się zapętlało ze względu na szeregowy monitor.

    Jak zawsze można na Was liczyć! Dzięki :)

    _________________
    http://www.ate-zbaszyn.eu



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    Wyświetl posty nie starsze niż:  Sortuj wg  
    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


    Nie możesz rozpoczynać nowych wątków
    Nie możesz odpowiadać w wątkach
    Nie możesz edytować swoich postów
    Nie możesz usuwać swoich postów
    Nie możesz dodawać załączników

    Szukaj:
    Skocz do:  
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO