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



Teraz jest 19 kwi 2024, o 10:17


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
Autor Wiadomość
PostNapisane: 19 wrz 2014, o 08:26 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 sie 2012
Posty: 97
Lokalizacja: Tarnów
Pomógł: 2

Witam

Mam uniwersalny pilot 433MHz ze stałym kodem i próbuję zrobić do niego odbiornik. Wykorzystałem w tym celu taki oto moduł radiowy:

Obrazek

Udało mi się odebrać dane z pilota i je zinterpretować przy użyciu Input Capture. Nie działa to jeszcze tak jakbym chciał ponieważ krótkie naciśnięcie przycisku nie jest odbierane, dopiero dłuższe taka jakby nie każda ramka była interpretowana poprawie. Ale rzecz w tym że zastanawia mnie format danych, ramka odbierana na wyjściu modułu odbiornika wygląda następująco:

Obrazek

gdzie:
-pierwszy poziom wysoki trwa 917 us
- następnie poziom niski 560 us
- znowu krótki poziom wysoki 208 us
- i najdłuższy poziom niski 1260 us
Z tego co udało mi się dowiedzieć na temat tego modułu są wykorzystywane z biblioteką Wirtual Wire do Arduino tylko tam dane odbierane i wysyłane są na UART, gdzie standardowa ramka jest kodowana w NRZ i zarówno 0 jak i 1 logiczne trwa tyle samo.
Może ktoś miał kontakt z podobnymi modułami i podpowie jak lepiej zinterpretować to kodowanie i ulepszyć odbiór danych.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 wrz 2014, o 10:09 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Możliwe, że czekasz na dodatkowe zbocze, które nie nadchodzi. Tutaj do rozróżnienia bitów wystarczy czas trwania stanu wysokiego. Podczas krótkiego trzymania przycisku idzie jedna ramka i pewnie odbierasz ją jako niekompletną z powodu podanego powyżej. Jak trzymasz dłużej to początek kolejnej ramki niejako daje zakończenie dekodowania pierwszej ramki.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 wrz 2014, o 10:56 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 sie 2012
Posty: 97
Lokalizacja: Tarnów
Pomógł: 2

Kiedy trzymam przycisk dłuższą chwilę wtedy odbieram coś takiego:

Obrazek

Gdzie przerwa pomiędzy ramkami wynosi ponad 11 ms.

Sama obsługa ICP wygląda tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Czyli rozróżniam tak jakby 4 stany, długi i krótki wysoki oraz długi i krótki niski. Długi wysoki i krótki niski to powiedzmy jeden, a krótki wysoki i długi niski to zero. W osobnej pętli głównej po otrzymaniu pełnej ramki sobie to przetwarzam na dane:

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


Działać tak jak powiedziałem to działa, co prawda przy odległości 20 cm (z anteną) przyciśnięcie przycisku powinno być natychmiast wykryte, a ja muszę go przytrzymać sekundę/dwie, więc jest pewne opóźnienie. Natomiast zastanawia mnie to w jaki sposób można by było te dane puścić na UART tak jak w tej bibliotece Virtual Wire dla Arduino. UART odpiera dane w kodzie NRZ a tutaj prawdę mówiąc nie wiem jak określić ten kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 wrz 2014, o 11:11 
Offline
Użytkownik

Dołączył(a): 20 wrz 2013
Posty: 647
Zbananowany użytkownik

Pomógł: 101

The River napisał(a):
puścić na UART tak jak w tej bibliotece Virtual Wire dla Arduino


Virtual Wire nie ma nic wspólnego z UART

_________________
+++++[>++++<-]>[>++++++<-]>.---------.+++.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 wrz 2014, o 11:26 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 sie 2012
Posty: 97
Lokalizacja: Tarnów
Pomógł: 2

Faktycznie coś pomyliłem, spróbuje napisać obsługę ICP skupiając się tylko na czasie trwania stanu wysokiego.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 wrz 2014, o 18:29 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 sie 2012
Posty: 97
Lokalizacja: Tarnów
Pomógł: 2

Tak, czytałem rozdział o dekodowaniu RC5 i znam ten temat dlatego tutaj w podobny sposób próbowałem odczytać dane z modułu radiowego. Udało mi się poprawić obsługę ICP i teraz znacznie szybciej następuje odczyt danych. Co więcej za pomocą nadajnika udało mi się wygenerować podobną ramkę i "przyuczyć" nowego pilota. Problem jednak w tym, co jest trochę dziwne, że zarówno pierwszy pilot z którego odczytywałem ramke jak i "mój" nadajnik generują jedynke w postacji ok.850 us stan wysoki, 550 us stan niski (razem 1,4 ms). Natomiast sklonowany pilot zachowuje tą samą długość bitu (1,4 ms) ale zmiania już proporcje na ok 1100us stan wysoki i 300 us stan niski, co powoduje że funkcja do odbioru danych działa tylko na pierwszym pilocie. Po modyfikacji polegającej na zwiększeniu akceptowanych przedziałów czasowych odczytuje również drugi pilot. Problem jednak pojawia się gdy chce za pomocą sklonowanego pilota przyuczyć następny pilot. Wtedy odbierana są już jakieś impulsy nie przypominające prawidłowej ramki.
Coś musze dalej robić nie tak bo zasięg jaki uzyskałem przy antenie 34 cm to ok 10 metrów (15 to absolutne maksimum).



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 wrz 2014, o 19:41 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

W wyżej pokazanym kodzie obsługi przerwania brakuje zablokowania modyfikacji tablicy jeśli jest akurat przetwarzana w głównej pętli programu:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Co do zasięgu to mocno zależy on od napięcia zasilania, a nadajnik można zasilać od 2,5 do 12 V. Długość anteny możesz skracać sukcesywnie co 2 mm i sprawdzać zasięg. Porównując moc nadajnika do innych modułów to 100 m powinieneś spokojnie uzyskać.

_________________
Dragonus Cracovus: Biomagia



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: 7 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

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


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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO