LCD88 - elastyczny koder ppm do aparatury
Moderatorzy: marbalon, moderatorzy2014, moderatorzy
LCD88 - elastyczny koder ppm do aparatury
Dawno temu jeszcze na forum Alexa powstała idea zrobienia nadajnika z podstawowych 'bloczków' typu dodawanie, mnożenie itp. Czyli definiujemy sobie dowolnie co się dzieje pomiędzy drązkami a tym co koder wygeneruje na wyjściu ppm.
Tak sobie powoli dłubię ten projekt od 2009, mniej więcej od roku jest już używalny (ale raczej jako wersja alfa).
Wersja alfa = działa stabilnie, ale pewne zmiany nie są dostępne jeszcze z menu, a tylko przy pomocy kompilatora
Nadszedł czas się nim pochwalić:-)
Tak wygląda przerobiony nadajnik (jako moduł nadawczy jest FrSky DHT):
Tak działa (uwaga: nudne ):
Strona projektu (w budowie, chwilowo tylko po angielsku): https://majek.sh/lcd88
Tu trochę po polsku jak to działa: https://majek.sh/pl/rc-diy-transmitter/
Kod żródłowy (GPL): https://github.com/majekw/lcd88
Ponieważ na dniach będę przerabiał kolejny nadajnik, to pewnie uda mi się tu powrzucać jak to zrobić ktok po kroku. Mam nadzieję, że nikt mi czerwonego krawata nie będzie tu kręcił za ewentualny post pod postem
Koszt kodera jest śmiesznie niski, bo powinien się zmieścić w $10 kupując gołe moduły u Chińczyków. Procesor i wyświetlacz też zostały wybrane, żeby były tanie i bezproblemowo dostępne. Stąd Arduino Pro Mini ($3), wyświetlacz graficzny 1.8" ($5) i ewentualnie konwerter napięć ($2). Niestety klawiaturę trzeba sobie już samemu sklecić, bo nie jest standardowa (6 mikroprzełączników, 6 diod 1n4148, 3 oporniki 2.2k).
I może z dyskusji uda się jakiś faq sklecić (o ile będą zainteresowani)
Tak sobie powoli dłubię ten projekt od 2009, mniej więcej od roku jest już używalny (ale raczej jako wersja alfa).
Wersja alfa = działa stabilnie, ale pewne zmiany nie są dostępne jeszcze z menu, a tylko przy pomocy kompilatora
Nadszedł czas się nim pochwalić:-)
Tak wygląda przerobiony nadajnik (jako moduł nadawczy jest FrSky DHT):
Tak działa (uwaga: nudne ):
Strona projektu (w budowie, chwilowo tylko po angielsku): https://majek.sh/lcd88
Tu trochę po polsku jak to działa: https://majek.sh/pl/rc-diy-transmitter/
Kod żródłowy (GPL): https://github.com/majekw/lcd88
Ponieważ na dniach będę przerabiał kolejny nadajnik, to pewnie uda mi się tu powrzucać jak to zrobić ktok po kroku. Mam nadzieję, że nikt mi czerwonego krawata nie będzie tu kręcił za ewentualny post pod postem
Koszt kodera jest śmiesznie niski, bo powinien się zmieścić w $10 kupując gołe moduły u Chińczyków. Procesor i wyświetlacz też zostały wybrane, żeby były tanie i bezproblemowo dostępne. Stąd Arduino Pro Mini ($3), wyświetlacz graficzny 1.8" ($5) i ewentualnie konwerter napięć ($2). Niestety klawiaturę trzeba sobie już samemu sklecić, bo nie jest standardowa (6 mikroprzełączników, 6 diod 1n4148, 3 oporniki 2.2k).
I może z dyskusji uda się jakiś faq sklecić (o ile będą zainteresowani)
Ostatnio zmieniony wtorek 22 maja 2018, 16:09 przez majek, łącznie zmieniany 4 razy.
Z tym większym może być problem. Na poczcie czeka na mnie już 2.2" (tylko driver trzeba będzie napisać), ale podejrzewam, że wolałbyś jeszcze większy
Problemy z dużym wyświetlaczem są 2:
- duże wyświetlacze nie istnieją z interfejsem SPI. Interfejs równoległy = inny (droższy) procek mający więcej nóżek = poza celem projektu
- im większa rozdzielczość, tym wolniejsze jest przerysowanie całego wyświetlacza. Obecnie jest to widoczne przy 160x128, przy trochę większym 320x200 przerysowanie będzie trwało 4 razy dłużej i może być wkurzające
Problemy z dużym wyświetlaczem są 2:
- duże wyświetlacze nie istnieją z interfejsem SPI. Interfejs równoległy = inny (droższy) procek mający więcej nóżek = poza celem projektu
- im większa rozdzielczość, tym wolniejsze jest przerysowanie całego wyświetlacza. Obecnie jest to widoczne przy 160x128, przy trochę większym 320x200 przerysowanie będzie trwało 4 razy dłużej i może być wkurzające
Dobrze myśliszmajek pisze:Z tym większym może być problem. Na poczcie czeka na mnie już 2.2" (tylko driver trzeba będzie napisać), ale podejrzewam, że wolałbyś jeszcze większy
Był moment kilka miesięcy temu że już chciałem wybebeszyć moją Aurorę ale mnie koledzy powstrzymali
Mniej więcej rozumiemProblemy z dużym wyświetlaczem są 2:
- duże wyświetlacze nie istnieją z interfejsem SPI. Interfejs równoległy = inny (droższy) procek mający więcej nóżek = poza celem projektu
- im większa rozdzielczość, tym wolniejsze jest przerysowanie całego wyświetlacza. Obecnie jest to widoczne przy 160x128, przy trochę większym 320x200 przerysowanie będzie trwało 4 razy dłużej i może być wkurzające
Chyba jednak pozostaje mi kupić jakąś używaną Aurorę i pozbawić ją obudowy.
Dzięki
Mirek
Tak żeś się napocił pisząc to w ASM, więc z przerysowywaniem nie powinno być problemu, jeśli tylko będziesz przerysowywał to co się aktualnie zmieniło a nie cały obszar LCD. A że przejście z jednego do innego ekranu w menu będzie trwało 100ms... kogo to... to nie problem.majek pisze:przerysowanie będzie trwało 4 razy dłużej i może być wkurzające
Pzdr. -----MIŚ-----
miś, dokładnie tak robię - czyszczę całość lub przerysowuję tylko jak to niezbędne. Podział ekranu na pasek statusu i resztę też ogranicza trochę obszar przy całkowitym odświeżeniu którejś części.
Ale pamiętaj, że oprócz wyczyszczenia ekranu trzeba później coś na nim narysować, więc czas robi się x2. O ile przy 160x128 nie jest to wielki problem, to te 0.5s dla 320x240 będzie już odczuwalne. Jeżeli byłyby większe rozdzielczości, to już byłoby bardzo wolno.
'Na szczęście' największe fizycznie wyświetlacze z spi jakie są dostępne tanio i bez problemów, to tylko 2.2". Do niedawna w tym rozmiarze były tylko 320x240, ale to się zmieniło i pojawiły się całkiem miłe 176x220, które sa tylko 2x większe pikselowo i na dodatek mają konwerter stanów/napięć na płytce.
Czy tak czy siak, to obydwa 2.2" mam i będę dopisywał ich obsługę
Jak się ma te wyświetlacze na biurku, to korci, żeby to zrobić teraz, ale na razie są ważniejsze rzeczy do dopisania. A obsługa drastycznie innej rozdzielczości wymaga jednak przejrzenia większości kodu, żeby wynieść cały layout 'na zewnątrz'. O ile tekst nie jest problemem, bo się inny font wrzuci i rozdzielczość zostanie zachowana, to rysunki już trzeba będzie miejscami przepisać. To co jest w najbliższej perspektywnie do zrobienia można zobaczyć tu: https://github.com/majekw/lcd88/issues
Co do 'pocenia' się w asm, to na atmele zawsze tak pisałem Poza tym była to pewnego rodzaju chęć pokazania, że da sie zrobić takie coś i na dodatek zmieścić się w 8KB
Ostatnio robiłem podejścia, żeby zrobić z tego mix asm+C, ale to grubsza robota. Chciaż na obecnym etapie mogłaby byc pomocna, za to za chwilę przestałbym się mieścić nawet w tych 32KB
Przy okazji dzięki Twojej uwadze zajrzałem w fukncję wysyłająca po spi i lekko ją 'podrasowałem'/naprawiłem
Nie jesteś ograniczony mikserami i ilością stopni ich zagnieżdżenia - można napisać dowolną funkcję definiującą co ma być i jak przeliczone. Zobacz opis 'bloczków' tutaj: https://majek.sh/pl/rc-diy-transmitter/
Nie żeby to był ideał Swoje ograniczenia też będzie miał (liczba bloczków, modeli, wykorzystanie WSZYSTKICH pinów procka bez zapasu na coś nowego itp.)
Jeszcze jedna różnica do er9x - cena i dostępność hardware. Jeżeli nie masz fizycznie 9x, to sens dziergania płytki na starej Atmega64 i wyświetlaczu mono jest kosztowo wątpliwy w porównaniu do lcd88 i na dodatek trudny dla kogoś, kto nie robił wcześniej płytek. Przy lcd88 jedyną rzeczą jaką sam musisz zrobić, to klawiatura. Precyzji to nie wymaga, a jak się uprzeć, to i na pająka można to zrobić. Cała reszta jest dostępna jako gotowe moduły.
No i jeszcze jedna różnica: er9x działa dla przeciętnego zjadacza chleba, lcd88 jeszcze nie doszedł do takiego etapu, więc tu jest minus po mojej stronie.
Czyli jak już masz 9x, to wgraj er9x. Jeżeli i tak wywalasz wszystkie bebechy, to można zastanowić się nad lcd88.
Ale pamiętaj, że oprócz wyczyszczenia ekranu trzeba później coś na nim narysować, więc czas robi się x2. O ile przy 160x128 nie jest to wielki problem, to te 0.5s dla 320x240 będzie już odczuwalne. Jeżeli byłyby większe rozdzielczości, to już byłoby bardzo wolno.
'Na szczęście' największe fizycznie wyświetlacze z spi jakie są dostępne tanio i bez problemów, to tylko 2.2". Do niedawna w tym rozmiarze były tylko 320x240, ale to się zmieniło i pojawiły się całkiem miłe 176x220, które sa tylko 2x większe pikselowo i na dodatek mają konwerter stanów/napięć na płytce.
Czy tak czy siak, to obydwa 2.2" mam i będę dopisywał ich obsługę
Jak się ma te wyświetlacze na biurku, to korci, żeby to zrobić teraz, ale na razie są ważniejsze rzeczy do dopisania. A obsługa drastycznie innej rozdzielczości wymaga jednak przejrzenia większości kodu, żeby wynieść cały layout 'na zewnątrz'. O ile tekst nie jest problemem, bo się inny font wrzuci i rozdzielczość zostanie zachowana, to rysunki już trzeba będzie miejscami przepisać. To co jest w najbliższej perspektywnie do zrobienia można zobaczyć tu: https://github.com/majekw/lcd88/issues
Co do 'pocenia' się w asm, to na atmele zawsze tak pisałem Poza tym była to pewnego rodzaju chęć pokazania, że da sie zrobić takie coś i na dodatek zmieścić się w 8KB
Ostatnio robiłem podejścia, żeby zrobić z tego mix asm+C, ale to grubsza robota. Chciaż na obecnym etapie mogłaby byc pomocna, za to za chwilę przestałbym się mieścić nawet w tych 32KB
Przy okazji dzięki Twojej uwadze zajrzałem w fukncję wysyłająca po spi i lekko ją 'podrasowałem'/naprawiłem
Na wszystkopma_ pisze:Zadam może i głupie pytanie na co więcej to będzie pozwalać niż er9x?
Nie jesteś ograniczony mikserami i ilością stopni ich zagnieżdżenia - można napisać dowolną funkcję definiującą co ma być i jak przeliczone. Zobacz opis 'bloczków' tutaj: https://majek.sh/pl/rc-diy-transmitter/
Nie żeby to był ideał Swoje ograniczenia też będzie miał (liczba bloczków, modeli, wykorzystanie WSZYSTKICH pinów procka bez zapasu na coś nowego itp.)
Jeszcze jedna różnica do er9x - cena i dostępność hardware. Jeżeli nie masz fizycznie 9x, to sens dziergania płytki na starej Atmega64 i wyświetlaczu mono jest kosztowo wątpliwy w porównaniu do lcd88 i na dodatek trudny dla kogoś, kto nie robił wcześniej płytek. Przy lcd88 jedyną rzeczą jaką sam musisz zrobić, to klawiatura. Precyzji to nie wymaga, a jak się uprzeć, to i na pająka można to zrobić. Cała reszta jest dostępna jako gotowe moduły.
No i jeszcze jedna różnica: er9x działa dla przeciętnego zjadacza chleba, lcd88 jeszcze nie doszedł do takiego etapu, więc tu jest minus po mojej stronie.
Czyli jak już masz 9x, to wgraj er9x. Jeżeli i tak wywalasz wszystkie bebechy, to można zastanowić się nad lcd88.
Ostatnio zmieniony wtorek 22 maja 2018, 16:09 przez majek, łącznie zmieniany 1 raz.
Wiesz, jakiś czas temu powstał Zbigowy modulator, do dziś mam z nim radio (to było bardzo klasyczne podejście), pakowało się to do starego radia z dołożonym modułem.
Z powodu cen miało to sens.
Dziś to chyba ma to sens tylko i wyłącznie jako hobby i to też jest ok :)
Z powodu cen miało to sens.
Dziś to chyba ma to sens tylko i wyłącznie jako hobby i to też jest ok :)
samolot max 4579/1293 analog, DJI do końca zasięgu :)
coper max 1729(na 5.8)
coper max 1729(na 5.8)
pma_, tak, to jest hobby
Ostatni 'skok' w funkcjonalności zrobiłem 1.5 roku temu, dopisałem to co mi było potrzebne do używania i zacząłem używać.
Teraz muszę zrobić kolejny nadajnik i pewne rzeczy też muszę tam dodać. A jak już odkopuję projekt to można się nim przy okazji pochwalić . To też daje 'kopa', żeby dorobić dokumentację, poznać punkt widzenia i ewentualne wymagania innych co do takiego projektu.
No i np. jedna uwaga Misia skłoniła mnie do zajrzenia do 5 letniego fragmentu kodu, który można było jescze łatwo przyspieszyć/poprawić (w sumie byłem na 100% pewny, że to poprawiłem dawno temu).
Generalnie dla mnie same plusy (motywacja, wyłapanie błędów), a może przy okazji jeszcze ktoś skorzysta.
Ostatni 'skok' w funkcjonalności zrobiłem 1.5 roku temu, dopisałem to co mi było potrzebne do używania i zacząłem używać.
Teraz muszę zrobić kolejny nadajnik i pewne rzeczy też muszę tam dodać. A jak już odkopuję projekt to można się nim przy okazji pochwalić . To też daje 'kopa', żeby dorobić dokumentację, poznać punkt widzenia i ewentualne wymagania innych co do takiego projektu.
No i np. jedna uwaga Misia skłoniła mnie do zajrzenia do 5 letniego fragmentu kodu, który można było jescze łatwo przyspieszyć/poprawić (w sumie byłem na 100% pewny, że to poprawiłem dawno temu).
Generalnie dla mnie same plusy (motywacja, wyłapanie błędów), a może przy okazji jeszcze ktoś skorzysta.
remick, jak popatrzysz na częstotliwośc commitów, to najczęsciej nie znajduję
A żeby nie bić tylko piany, tak wygląda gotowa klawiatura którą trzeba sobie niestety zrobić samemu:
A żeby nie bić tylko piany, tak wygląda gotowa klawiatura którą trzeba sobie niestety zrobić samemu:
Ostatnio zmieniony wtorek 22 maja 2018, 16:11 przez majek, łącznie zmieniany 1 raz.
Wszystkie gotowe potrzebują 5-6 pinów procka do obsługi 6 klawiszy. Moja działa na trzech
A nie chciałem kombinować z klawiaturą na 3-4 przyciski, bo to jest później rzeżba w interfejsie użytkownika. tu mam 4 kierunki, enter, esc - bardziej intuicyjnie sie nie da.
Tu też niestety wychodzi dobranie procesora 'na styk' - nie ma więcej wolnych portów, żeby obsłużyć 'normalną' klawiaturę. Ale takie wyzwania lubię
A nie chciałem kombinować z klawiaturą na 3-4 przyciski, bo to jest później rzeżba w interfejsie użytkownika. tu mam 4 kierunki, enter, esc - bardziej intuicyjnie sie nie da.
Tu też niestety wychodzi dobranie procesora 'na styk' - nie ma więcej wolnych portów, żeby obsłużyć 'normalną' klawiaturę. Ale takie wyzwania lubię