Witam, Przymierzam się do stworzenia prostego samochodziku zdalnie sterowanego za pomocą gotowych modułów (odbiornik i nadajnik). Chodzi mi o sterowanie 4 silniczkami. Czy takie coś jak z aukcji numer 2550576201 zdało by egzamin? Jeżeli tak to jak to obsłużyć?
Hmm nie za bardzo rozumiem. A nie dało by się zrobić tak:
Procesor A - procesor do którego podłączony jest nadajnik
Procesor B - procesor do którego podłączony jest odbiornik.
I, jeżeli na pinie na przykład PA0 procesora A pojawi się jedynka, to wystaw na pinie PB0 procesora B jedynkę(i tym samym załączając silniczek numer 1) ??
A jeżeli na pinie PA1 procesora A pojawi się jedynka to wystaw na pinie PB1 procesora B jedynkę(załączając tym samym silniczek numer 2) ?
Jak się w ogóle obsługuję takie moduły co podałem?
Co byś nie robił, musisz zrobić tak, by do nadajnika dochodził tylko jeden sygnał, niosący informację o czterech sygnałach - wysyłanie szeregowe. Oczywiście, widzę, że masz możliwość pracy z procesorkami, więc sprawa jest bardzo ułatwiona. Możesz wysłać ciąg 10000000 reprezentujący załączenie na przykład PA0, albo 01000000 reprezentujący PA1 i tak dalej - ważne jest, by te dane poszły na wyjście szeregowo, i z tej formy w odbiorniku dało się je zdekodować na równoległe.
Twoim problemem będzie co innego - każdy odbiornik, poza sygnałem z nadajnika, odbiera także szumy, sygnały z innych nadajników, itp. Musisz umieć odebrać spośród tych szumów interesujący Cie sygnał - tutaj pojawia się tzw. suma kontrolna CRC. Dlatego też łatwiej byłoby wykorzystać gotowy komplet modulator / demodulator, który zresztą może być wysterowany także przez mikroprocesor.
Dodano po 4 [minuty]:
Spróbuj sobie przeanalizować datasheet modulatora MC145026 i komplementarnego demodulatora MC145028. W każdym pilocie (o niskim skomplikowaniu) dane są wysyłane poprzez jeden kanał, różne są natomiast komendy wysłane przez tego pilota.
Zestaw który chcesz kupić to tylko moduł odbiornika / nadajnika pracującego na częstotliwości 433MHz aby zapewnić prawidłową transmisję danych wymagane jest aby wysyłane dane były kodowane lub wysłana paczka danych miała sumę kontrolą . Dzięki temu zapewniasz prawidłową komunikacją a właściwie prawidłowy odbiór wysłanych danych a co za tym idzie prawidłowe wykonywanie danych rozkazów wysłanych z nadajnika . Sposób w jaki to rozwiążesz jest dowolny można sprzętowo ( zaproponowane układy ) lub programowo przez własny algorytm kodowania lub obliczanie sum kontrolnych . Aby wszystko było jasne bez kodowania czy sum kontrolnych transmisja będzie działać ale odbiornik będzie odbierał wszystkie śmieci jakie są w eterze powodując spadek czułości i niewłaściwe wykonywanie wysłanych rozkazów . Sama idea sterowania jest dowolna najprościej to wysyłać 8bitową ramkę danych przypisując po dwa bity na silnik np 00 stop , 01 w prawo , 10 w lewo , 11 hamowanie to dla jednego silnika analogicznie pozostałe bity i silniki , wszystko zależy od umiejętności programistycznych . Proste testy możesz wykonać korzystając z sprzętowej możliwości układu UART danego procesora , następnie stworzyć łącze bezprzewodowe pomiędzy układami wykorzystując moduły radiowe .
Hmm...ale nie rozumiem jak połączyć nadajnik z procesorem i z MC145026. Czy chodzi o takie połączenie:
Atmega32 PA0...PA7 - MC145026 A1...A8 i z pinu Dout na nadajnik ??
I co dalej?
bogdan_p Chodzi Ci o to aby podać na przykład na PORTA sekwencje 00011011 tak? A jak to później w odbiorniku podzielić na te cztery dwu-bitowe sekwencje ??
Chodzi Ci o to aby podać na przykład na PORTA sekwencje 00011011 tak? A jak to później w odbiorniku podzielić na te cztery dwu-bitowe sekwencje ??
Nie na żaden port tylko na jeden pin w postaci szeregowej np w Bascomie takim poleceniem dla UART jest Print , można wysłać to w dowolnej formie hex , bin , ciąg cyfrowo/literowy . W odbiorniku po odebraniu polecenia porównujesz go z warunkami , jeżeli wysyłasz dane w postaci bin to odebrane 8bitowe daną np "rozkaz" traktujesz jako słowo 8bitowe czyli rozkaz.0 , rozkaz.1 rozkaz.2 itp chyba nie ma teraz problemu aby z tego wyodrębnić dane dla jednego silnika . Można również sprawdzać całe słowo w postaci hex , bin lub wysyłać i sprawdzać w postaci dziesiętnej jak komu wygodnej , również można jeszcze inaczej wysyłać ciąg literowo / cyfrowy np P1 - wprawo silnik1 , L2 w lewo silnik2 , S1 / S2 silniki 1 / 2 stop itp . Jeżeli piszesz w Bascomie odsyłam do mojego tematu o sterowaniu przez RS232 zobacz sobie przykłady programowe jak to można zrealizować .
Co do kodowania sprzętowego to w koderze ustalasz adres który musi być zgodny z adresem dekodera tylko w takiej sytuacji oba układy " dogadają się " w koderze / dekoderze masz 4bitową szynę danych przez którą prowadzisz transmisję danych oczywiście możesz korzystać z 4bitów jak i z jednego na Elektrodzie jest kilka tematów o tych układach zobacz je sobie zrozumiesz na czym to polega .
to odebrane 8bitowe daną np "rozkaz" traktujesz jako słowo 8bitowe czyli rozkaz.0 , rozkaz.1 rozkaz.2
nie za bardzo to rozumiem
Dodano po 3 [minuty]:
bogdan_p wrote:
Można również sprawdzać całe słowo w postaci hex , bin lub wysyłać i sprawdzać w postaci dziesiętnej jak komu wygodnej , również można jeszcze inaczej wysyłać ciąg literowo / cyfrowy
Czy mógłbyś to wytłumaczyć trochę bardziej łopatologicznie?
Do Szanownego Założyciela tematu i przyszłych Czytających:
Nie wpędzajcie siebie i innych w kłopoty przez bezmyślne stosowanie urządzeń na nieodpowiednią częstotliwość np. 433MHz ("bo tanio i łatwo kupić" itp. tłumaczenia).
https://www.elektroda.pl/rtvforum/topic2168895.html tam linki.
Szukajcie urządzeń, modułów na 868MHz, ew. na 27MHz, 40.68MHz
PS: na 27MHz i 40.68MHz są gotowe modele zdalnie sterowane - także bardzo tanie
PS2: Gdzie jest powiedziane że model ma być sterowany cyfrowo ? Analogowe układy RC były, są i będą stosowane, literatura na ten temat jest bogata - nie wszystko ma być "z klawiatury".
Ja nie rozumiem jak chcesz napisać program zdalnego sterowania nie znając podstaw .
Wysyłasz szeregowo daną która jest 8bitowa przy jej wysłaniu i analizie po odebraniu traktujesz ją dokładnie tak jak 8bitowy port z tą różnicą że ma ona swoją symboliczną nazwę " rozkaz " przykład dla 3 poleceń 3 mikrowyłaczniki (P1- 3)
nadawanie :
IF P1=0 THEN rozkaz = b00000000 > stop
IF P2=0 THEN rozkaz = b00000001 > prawo
IF P3=0 THEN rozkaz = b00000010 > lewo
Odbiór
IF rozkaz = b00000000 THEN > skok do programu stop <
IF rozkaz = b00000001 THEN > skok do programu prawo <
IF rozkaz = b00000010 THEN > skok do programu lewo <
w tym przypadku wysyłasz i sprawdzasz całą daną o nazwie rozkaz , analogicznie będzie to w formie hex czy dziesiętnej dla pojedynczego bitu ( jeden rozkaz )
nad
IF P2 = 0 THEN rozkaz.1 = 1
odb
IF rozkaz.1 = 1 THEN > skok do programu prawo <
to cała filozofia , dla danych literowo / cyfrowych po odebraniu danej można ją sprawdzać na identycznej zasadzie lub rozdzielić poddając analizie po kolei jest składniki . Po raz kolejny odsyłam do tematu o sterowaniu przez RS232 i dokładnej analizie programów , bo jeżeli tego nie rozumiesz to na razie daj sobie spokój aż pogłębisz swoją wiedzę .
PS2: Gdzie jest powiedziane że model ma być sterowany cyfrowo ? Analogowe układy RC były, są i będą stosowane, literatura na ten temat jest bogata - nie wszystko ma być "z klawiatury".
Rozumiem w pełni Twoją niechęć do wciskania wszędzie układów cyfrowych, ale sam Autor zasugerował operacje na jedynkach i zerach w procesorze, co sam automatyczne zrozumiałem jako chęć do zrealizowania transmisji cyfrowej przez autora.