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 18 kwi 2025, o 04:39


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
    Autor Wiadomość
    PostNapisane: 10 kwi 2014, o 18:28 
    Offline
    Nowy
    Avatar użytkownika

    Dołączył(a): 22 mar 2014
    Posty: 10
    Lokalizacja: Duisburg/DE
    Pomógł: 0

    Witam,

    Wpadły mi ostatnio do rąk moduły odbiorcze CZS-3 na 433MHz.

    Obrazek

    Przyznam, że nawet fajne, małe zgrabne, ale moje próby odczytania czegokolwiek z nich kończą się niepowodzeniem.
    Informacje jakie posiadam, to moduł wyrzuca z siebie dane w postaci TTL... Na tym moja wiedza się kończy.

    Niestety już nie mam pomysłów, więc zapytam,
    Miał ktoś do czynienia już z tymi modułami i wie w jaki sposób przetworzyć to, co wypluwają one na RX?

    Będę wdzięczny za każde sensowne ukierunkowanie.

    Pozdrawiam,
    Bartek.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 kwi 2014, o 18:52 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 29 lis 2011
    Posty: 582
    Lokalizacja: okolice Wrocławia :)
    Pomógł: 24

    Według mnie jest to zwykły odbiornik radiowy 433,92MHz z modulacją AM.
    Do zastosowania go potrzebujesz odebrać i zdekodować sygnał z jego wyjścia.

    Coś w stylu RR3 Telecontrolli.

    _________________
    sig off ;(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 kwi 2014, o 19:18 
    Offline
    Użytkownik

    Dołączył(a): 25 sty 2014
    Posty: 185
    Lokalizacja: Działoszyn
    Zbananowany użytkownik

    Pomógł: 8

    Serv napisał(a):
    Przyznam, że nawet fajne, małe zgrabne, ale moje próby odczytania czegokolwiek z nich kończą się niepowodzeniem.

    to moze daj kawałek kodu w którym próbowałeś cos "działać" z tym



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 11 kwi 2014, o 18:32 
    Offline
    Nowy
    Avatar użytkownika

    Dołączył(a): 22 mar 2014
    Posty: 10
    Lokalizacja: Duisburg/DE
    Pomógł: 0

    Nie ma co pisać o moich kodach, ponieważ to były gotowe, które usiłowałem przerabiać na swój sposób.
    Cała sytuacja zmusza mnie do napisania własnego programu obsługi.
    Nurtuje mnie tylko jedna kwestia, o ile w analogówce zastosowałbym kilka filtrów i sprawa z głowy, to w cyfrówce już mam problem.
    Muszę nasłuchiwać sygnałów na wyjściu odbiornika - to jasne.
    Ale w jaki sposób mogę całą ramkę zapisać w jednej zmiennej celem porównania jej ze wzorem, bądź wyświetlenia jej na displayu?
    Ramka, łącznie z ciszą (przerwą między ramkami) w moim przypadku trwa ok. 50ms.
    A więc potrzebuję pewnie w przerwaniu zmusić jakąś funkcję żeby przez te 50ms patrzyła co się dzieje na odbiorniku i zapisała to do zmiennej. Niestety na tą chwilę to dla mnie czarna magia, więc za pomoc, ukierunkowanie, będę wielce wdzięczny.
    Ujmując możliwość, że akurat przerwanie wejdzie w czasie nadawania, czas nasłuchiwania, na moją logikę warto zwiększyć do 100ms, prawda?

    Pozdrawiam,
    Bartek.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 12 kwi 2014, o 18:38 
    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

    Postępujesz dokładnie tak samo jak przy transmisji w podczerwieni i dekodowaniu kodów pilotów RTV. Wyjście z odbiornika wpinasz pod wejście z funkcją ICP mikrokontrolera, który sprzętowo reagując na zmianę stanu tego wejścia zapamiętuje zapamiętuje stan licznika. W funkcji obsługi przerwania sprawdza się czy odstęp pomiędzy ostatnim stanem i obecnym mieści się w przyjętych granicach i jeśli tak to dopisuje się bit 0 lub 1 do zmiennej o odpowiedniej długości. Jak nie to zeruje się tą zmienną i czeka na kolejną zmianę stanu. Po odebraniu określonej ilości bitów ustawiasz dodatkową zmienną informującą, że jest gotowa ramka. W pętli głównej programu robisz co chcesz i dodatkowo sprawdzasz czy jest gotowa ramka i decydujesz co w związku z tym zrobić.

    Jeśli sam sterujesz też nadajnikiem to możesz zacząć od prostych rzeczy. Na nadajnik podajesz od 1 do 10 impulsów w ciągu sekundy, a w odbiorniku po odebraniu 1 impulsu przez sekundę zliczasz kolejne i już masz własną prymitywną komunikację z 10 różnymi komendami.


    Autor postu otrzymał pochwałę

    _________________
    Dragonus Cracovus: Biomagia



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 kwi 2014, o 10:28 
    Offline
    Nowy
    Avatar użytkownika

    Dołączył(a): 22 mar 2014
    Posty: 10
    Lokalizacja: Duisburg/DE
    Pomógł: 0

    Twój post dość sporo mi pomógł w kwestii zrozumienia mechanizmu, jednak dalej się motam podczas pisania programu.

    Fakt jest taki, że niestety nie mam możliwości sprzętowych wykonania własnego nadajnika, więc muszę się rzucić od razu na głębsze wody... Najwyżej na plecy zarzucę sobie koło ratunkowe ;)

    W zielonej książce Mirka jest wszystko dość ciekawie opisane, jednak ja nie mam pojęcia z jakim sygnałem mam do czynienia. Chciałbym zrobić coś bardzo prostego, czyli wykrycie przerw między sygnałami (znam ich czas) i sygnał ten zapisać sobie powiedzmy do zmiennej dane. Później eksperymentalnie bym sobie te dane modyfikował.
    Analizując kody Mirka, zarówno zdobyłem sporo przydatnej wiedzy, ale i jednocześnie zgłupiałem (w żadnym wypadku nie krytykuję wiedzy i sposobu jej opisania w książce - po prostu mój przypadek z moją wiedzą jakoś blokują mi poprawne zrozumienie rozwiązania).
    Ponieważ moim torem myślenia (nie sprawdzałem w praktyce, aby w razie czego nie uczyć się głupot):
    Konfiguruję i inicjuję przerwanie:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Port PD6 ustawiam jako wejście.
    No i teraz tak... W rejestrze ICP gromadzą mi się jakieś dane.
    Czy te dane mogę wywołać poprzez (TCCR1B & (1<<ICES1)) ?
    Czyli przykładowo uint16_t dane = (TCCR1B & (1<<ICES1)) ?

    Nie znam jeszcze aż tak dobrze tych komend "systemowych", a więc właśnie tu się motam, a z dość długich analiz wielu kodów doszedłem właśnie do takiego wniosku.

    Pozdrawiam,
    Bartek.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 kwi 2014, o 21:26 
    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

    Konfiguracje masz dobrą. Co do pytań to:
    -ICP1 to wejście PD6
    -stan Timera1 jest automatycznie kopiowany do rejestru ICR1
    -bit ICES1 służy do zmiany zbocza sygnału przy którym następuje kopiowanie
    Jak już będziesz miał najprostszy kod to wrzuć całość.

    _________________
    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 2 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