Nadawanie i odbieranie 433MHz z procesora AVR

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
Awatar użytkownika
Tranzystor
Użytkownik
Posty: 889
Rejestracja: 28 sie 2005, 19:19
Lokalizacja: Świętochłowice
Kontakt:

Nadawanie i odbieranie 433MHz z procesora AVR

Post autor: Tranzystor » 25 lis 2007, 14:22

Witam,
buduję urządzenie wykorzystujące do przesyłu danych moduły radiowe 433MHz (Odbiornik, nadajnik). Mam mały problem, ponieważ cały program piszę w BASCOMie AVR i nie wiem jak 10 bitów zapisanych w zmiennej Word z przetwornika AC przekształcić na 10 bitów, aby przesłać je dalej do nadajnika.

To jest mój pierwszy problem, jaki napotkałem... Jak będę maił więcej pytań, napiszę w tym temacie.

Pozdrawiam ;)

ZbeeGin

Post autor: ZbeeGin » 25 lis 2007, 15:53

A w jakim standardzie układy radionadawcze wymagają danych?

Jeśli nie ma to znaczenia, to napisz program emulujący transmisję szeregową tak by zamiast 8/9 bitów przesyłała 10 bitów danych. Najpierw generujesz bit startu (stan niski), a potem w równych odstępach czasu wysyłasz poszczególne bity ze zmiennej Word i kończysz dwoma bitami stopu (stan wysoki). Ważny jest czas trwania wysztkich impulsów. Tak pracować będzie część nadawcza.
W części odbiorczej trzeba wykryć zmianę stanu linii danych z odbiornika i w takich samych odstępach czasu próbkować stan tej linii, i przepisywać go do zmiennej. Pomijając oczywiście bity startu i stopu.
Przy czym należy tak sterować przesyłem by w stanie spoczynku (nic nie nadajesz) nadajnik nie generował fali nośnej - bo i po co.


Przypatrz się także poleceniom SERIN, SEROUT. Mogą być tutaj bardzo pomocne. Wykorzystaj fakt, że zmienna WORD to jakby dwie połączone zmienne BYTE. Zatem podając ilość wysyłanych bajtów = 2; wyślesz WORD w całości. Co prawda 3 bity będą nadane niepotrzebnie, ale uprościsz sobie program.

Awatar użytkownika
Tranzystor
Użytkownik
Posty: 889
Rejestracja: 28 sie 2005, 19:19
Lokalizacja: Świętochłowice
Kontakt:

Post autor: Tranzystor » 25 lis 2007, 16:14

Dzięki ZbeeGin ;) Zobaczymy co zadziała :D Spróbuję użyć poleceń, o których wspomniałeś. Z tym, że zastanawia mnie jeszcze jaką szybkość przesyłu danych mogę wpisać do tych dwóch poleceń :?: Mogę tylko prędkości takie jak używa się w UART, czy też swoje wymyślone jak np.: 3900 bodów :?:

Pozdrawiam ;)

ZbeeGin

Post autor: ZbeeGin » 25 lis 2007, 16:20

SERIN i SEROUT to UARTy programowe, zatem prędkości nie muszą być standardowe. Byleby w systemie nadawczym jak i odbiorczym były takie same i do tego (bardzo ważne!) by szybkość taktowania procesrów była również dokładnie taka sama.

Awatar użytkownika
Tranzystor
Użytkownik
Posty: 889
Rejestracja: 28 sie 2005, 19:19
Lokalizacja: Świętochłowice
Kontakt:

Post autor: Tranzystor » 26 lis 2007, 8:02

Rozumiem, próbowałem wczoraj coś zrobić, ale nic mi się nie udało. Obydwa układy taktowane są rezonatorami kwarcowymi 8MHz. Transmisję na razie ustawiłem na 2400 bodów. Jednak są odbierane jakieś szumy :sad: Nadajnik prawdopodobnie działa jak trzeba, ale problem jest z odbiornikiem... :roll: Nadajnik oraz odbiornik zasilane są napięciem 5V. Próbowałem synchronizować oba urządzenia poprzez wysłanie krótkiego stanu wysokiego, a poźniej niskiego, odbiornik miał wtedy włączone przerwanie INT0, ale zamiast wchodzić do podprogramu przerwania wtedy gdy opadnie stan wysoki wchodził do niego co chwilę :neutral:

Nie wiecie może co się dzieje :?:

Pozdrawiam ;)

Woycek
-
Posty: 6
Rejestracja: 12 paź 2006, 13:42
Lokalizacja: Ostrów Wielkopolski

Post autor: Woycek » 26 lis 2007, 20:18

Czy mi się zdaje czy nadajnik powinien być zasilany z 12V??

Awatar użytkownika
Sagittarius
Użytkownik
Posty: 130
Rejestracja: 29 maja 2007, 9:29
Lokalizacja: Kujawsko-pomorskie
Kontakt:

Post autor: Sagittarius » 27 lis 2007, 9:31

Układ powinien pracować w zakresie od 3 do 12V, więc przy 5V nie powinno być problemu. Generowanie przerwania co chwilę? Nie wiem, jak to jest w AVR, ale powodów może być kilka. Ja radzę jednak rozejrzeć się po pokoju. Czy nie ma tam jakiegoś bezprzewodowego urządzenia? Myszka, klawiatura, pilot, model samochodu... Tu moze tkwić problem. Może nim być również zbyt blisko położony telefon komórkowy.

Awatar użytkownika
Tranzystor
Użytkownik
Posty: 889
Rejestracja: 28 sie 2005, 19:19
Lokalizacja: Świętochłowice
Kontakt:

Post autor: Tranzystor » 27 lis 2007, 14:31

Właśnie w moim domu jest mnóstwo tego rodzaju urządzeń. Telefon bezprzewodowy, myszk i klawiatura, komórka i router... Ale w końcu te urządzenie ma pracować, pomimo tego, że takie urządzenia znajdują się w domu. Nadajnik działa bez problemu, problem tkwi w moim odbiorniku i nie wiem jak rozwiązać ten problem...


Pozdrawiam ;)

Awatar użytkownika
Zenerek
Użytkownik
Posty: 335
Rejestracja: 21 lip 2006, 11:23
Lokalizacja: Bydgoszcz
Kontakt:

Post autor: Zenerek » 27 lis 2007, 14:39

Musisz sygnał zakodować przed wysłaniem, a w odbiorniku zdekoduj go. Inaczej procesor będzie reagował na wszystko co nadaje na 433MHz.

Awatar użytkownika
Tranzystor
Użytkownik
Posty: 889
Rejestracja: 28 sie 2005, 19:19
Lokalizacja: Świętochłowice
Kontakt:

Post autor: Tranzystor » 01 gru 2007, 13:36

Panowie, problem nadal występuje. Odbiornik wcale nie reaguje na to co wysyłam przez nadajnik... Na środku modułu jest cewka, może mój nadajnik nadaje na innym kanale :?: W końcu w kartach katalogowych tych modułów pisze "odstęp między kanałami 500kHz". Czy można nią pokręcić, czy całkowicie rozreguluję moduł :?:

Pozdrawiam ;)

ODPOWIEDZ