Strona 1 z 2

LCD88 - elastyczny koder ppm do aparatury

: niedziela 22 cze 2014, 23:09
autor: majek
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):
Obrazek

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

: niedziela 22 cze 2014, 23:18
autor: Verid
No, no - zawsze chciałem upchnąć bebechy aparatury do obudowy po game padzie żeby to małe i kompaktowe było. Wygląda na to że doczekałem się bebechów właściwych gabarytów.
:mrgreen: :mrgreen:

: niedziela 22 cze 2014, 23:32
autor: majek
Jeżeli zmieścisz tam ten wyświetlacz i sam sobie jakoś wydziergasz płytkę pod klawiaturę, żeby się zmieściło, to powinno się udać. Chociaż sam wyświetlacz może być trochę za duży na pada.

: poniedziałek 23 cze 2014, 00:07
autor: rycerz100
A ja trochę w druga stronę zapytam ;-)
Da się jakiś sporo większy wyświetlacz zaadoptować ?
Może bym w końcu do walizy wetknął i RC :-P

: poniedziałek 23 cze 2014, 00:16
autor: majek
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 :-P

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

: poniedziałek 23 cze 2014, 00:25
autor: rycerz100
majek 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 :-P
Dobrze myślisz :-)
Był moment kilka miesięcy temu że już chciałem wybebeszyć moją Aurorę ale mnie koledzy powstrzymali :lol:
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 :-?
Mniej więcej rozumiem ;-)
Chyba jednak pozostaje mi kupić jakąś używaną Aurorę i pozbawić ją obudowy.
Dzięki

: poniedziałek 23 cze 2014, 01:34
autor: miś
majek pisze:przerysowanie będzie trwało 4 razy dłużej i może być wkurzające :-?
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.

: poniedziałek 23 cze 2014, 08:26
autor: pma_
Zadam może i głupie pytanie na co więcej to będzie pozwalać niż er9x?

: poniedziałek 23 cze 2014, 08:34
autor: majek
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 :mrgreen:
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 :-P

Przy okazji dzięki Twojej uwadze zajrzałem w fukncję wysyłająca po spi i lekko ją 'podrasowałem'/naprawiłem :-)

pma_ pisze:Zadam może i głupie pytanie na co więcej to będzie pozwalać niż er9x?
Na wszystko :-)
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.

: poniedziałek 23 cze 2014, 15:27
autor: pma_
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 :)

: poniedziałek 23 cze 2014, 17:48
autor: majek
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ć :-P . 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.

: poniedziałek 23 cze 2014, 18:54
autor: remick
Kurde majek, wiedziałem, że ty to z tych co lubią dłubać w kodzie (jeszcze z czasów rex'a) no ale tutaj to pełen "rispekt" !!!
Że też znajdujesz czas na takie coś!

: poniedziałek 23 cze 2014, 19:08
autor: majek
remick, jak popatrzysz na częstotliwośc commitów, to najczęsciej nie znajduję :-P

A żeby nie bić tylko piany, tak wygląda gotowa klawiatura którą trzeba sobie niestety zrobić samemu:
Obrazek
Obrazek

: poniedziałek 23 cze 2014, 20:20
autor: pma_
Trzeba było użyć gotowej z kamerek :)

: poniedziałek 23 cze 2014, 20:27
autor: majek
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ę :-P