Skocz do zawartości

TPInk - stacja pogodowa z e-papierem


TPReal

Pomocna odpowiedź

Podoba Ci się ten projekt? Zostaw pozytywny komentarz i daj znać autorowi, że zbudował coś fajnego!

Masz uwagi? Napisz kulturalnie co warto zmienić. Doceń pracę autora nad konstrukcją oraz opisem.

Bardzo ładne (sam robię pogodynkę, więc wszystko w tym temacie mi się podoba). Pytanie tylko: po co pobierasz dane o świętach z jakiegoś obcego serwera? Moim zdaniem dużo prościej jest to wbudować w program (tablica świąt stałych z rozróżnieniem czy to dzień wolny od pracy oraz tablica dat Wielkanocy na najbliższe ileś tam lat).

  • Lubię! 1
Link do komentarza
Share on other sites

(edytowany)

@ethanak Najpierw myślałem stablicować święta, ale ja po prostu lubię jak rzeczy działają automatycznie 🙂 I tak już miałem kod do pobierania JSONa (do pogody), calendarific jest darmowe, więc to nie był żaden problem pobierać stamtąd. Poza tym w ten sposób w konfiguracji podaję kraj dla którego chcę święta, i gotowe. Gdybym się kiedyś przeprowadził do innego kraju to wystarczy zmienić w konfiguracji lokalizację do pogody i właśnie kraj do świąt 🙂 bez zmian w repo.

No albo gdyby ktoś gdzieś chciał zbudować sobie taką samą ramkę z mojego kodu... ale to się nie wydarzy, bo kod nawet nie jest obecnie publiczny.

Edytowano przez TPReal
  • Lubię! 1
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

@TPReal Wow genialny projekt 😮 mnie to zawsze jarają takie ramki, sam się wiele razy przymierzałem do zrobienia jakiegoś zegara zintegrowanego z jakimś API, Slackiem, whatsupem czy czymś ale wyszło jak wyszło...

Orientujesz się czy da się zastosować wyświetlacz z demontażu np. ze starego kindla?

Link do komentarza
Share on other sites

Super projekt!

Mógłbyś opisać w jaki sposób uzyskujesz szary kolor na wyświetlaczu? W dokumentacji trójkolorowego ekranu znalazłem tylko funkcję do wysyłania czarnego i czerwonego obrazu:

void EPD_xxx_Display(const UBYTE *blackimage, const UBYTE *ryimage);
Link do komentarza
Share on other sites

@ewraw Dzięki 🙂

Ten konkretnie ekran to przestarzały model, już nie sprzedawany, a niestety w każdym modelu mnóstwo rzeczy jest inaczej. Postudiowałem trochę datasheety kilku modeli Waveshare i wyglądają jakby je w dużej mierze robiły zupełnie osobne zespoły. Niektóre mają osobny bufor na obraz czarny a osobny na czerwony, a inne mają jeden bufor, 3 bity na piksel, i w tym każdy kolor ma inny kod, ale żaden z tych bitów nie steruje bezpośrednio czerwonym. Poza tym jest coś co się nazywa LUT, to jest dokładna instrukcja dla ekranu jak ma migać napięciami w ekranie żeby ustawić piksel na określony kolor. Niektóre ekrany mają osobną sekwencję LUT na kolor czarny, biały, szary i czerwony, a inne pamiętają co wyświetlały poprzednio i mają osobną sekwencję LUT na przejście czarny->biały, czarny->szary itd. Niektóre ekrany mają w sterowniku zapisane sekwencje LUT, a innym trzeba po załączeniu je przesłać, wtedy cała sekwencja (kilkadziesiąt bajtów) jest po prostu zapisana w datasheecie i trzeba ją wysłać po SPI. Widziałem że niektórzy też dali radę pohackować trochę, i podmieniali LUT na własny, dzięki czemu ekran smużył, ale na przykład odświeżał się w pół sekundy zamiast 15 sekund. A na koniec warto też pamiętać, że w tych datasheetach jest masa błędów.

Przechodząc do rzeczy, w załączniku wrzucam datasheet tego konkretnego ekranu, który miałem, i na stronie 14 jest opisany format bufora. Są trzy bity na piksel i opisane są tam 2 kolory szare i 4 czerwone. To nie jest prawda, nie wiem dlaczego ale trzy z tych czerwonych są identyczne jak szary, czarny i biały, natomiast te dwa szare są identyczne ze sobą. Prawdopodobnie jest tak po prostu dlatego, że wgrany w sterownik LUT dla tych sekwencji tak wygląda, jest na przykład identyczny dla tych dwóch szarych. A jako że nie znalazłem nigdzie pasującego opisu samego formatu LUT, nie umiem tego zmienić, chociaż na pewno się da (bo ten ekran ma w sterowniku zapisany LUT, ale można też wgrać własny).

W każdym razie nie korzystałem z żadnej gotowej biblioteki do tego ekranu tylko napisałem swoją na podstawie datasheeta oraz czytania masy różnego kodu, i wtedy szary uzyskuje się dość łatwo. To jest ten szary którym wyświetlam pasy pokazujące gdzie jest noc na wykresie. Ale zrobiłem też sobie inny szary, użyty na przykład do narysowania przeszłej części wykresu, który jest po prostu szachownicą pikseli czarnych i szarych.

Repozytorium demo, z którego najbardziej korzystałem, jest tutaj, nie jestem teraz pewien który to był z tych "7in5", ale to da się wywnioskować po rozdzielczości. Jest tam też kod w Pythonie, ale... różni się pewnymi szczegółami.

Natomiast ta funkcja EPD_xxx_Display być może akceptuje jakieś odcienie szarości, bo w tym buforze może być więcej niż jeden bit na piksel. Wszystko zależy od ekranu 🙂

7.5inch_e-paper-b-Specification.pdf

  • Lubię! 1
  • Pomogłeś! 1
Link do komentarza
Share on other sites

Wow, to jest wspaniałe. 
Zamawiam ekran i RPI Zero. A zanim przyjdzie.. Widział ktoś, jakiś emulator e-INK po SPI? zwirtualizowałbym to z chęcią i zaczął pisać widok :)
A może @TPReal, udostępniasz kod źródłowy na GitHubie? :) z chęcią bym podejrzał.
 

  • Lubię! 2
Link do komentarza
Share on other sites

@piotr-jarosz witam na forum 🙂 

Dnia 3.11.2020 o 10:25, piotr-jarosz napisał:

Widział ktoś, jakiś emulator e-INK po SPI? zwirtualizowałbym to z chęcią i zaczął pisać widok 🙂

Raczej nie znajdziesz tego typu rozwiązania - zdecydowanie szybciej przyjdzie paczka z zamówionymi częściami 😉

Link do komentarza
Share on other sites

@piotr-jarosz 

Hej, dzięki!

Tak jak napisałem, ja składam obrazek tekstowo w SVG, potem wyciągam piksele przez imagemagick. Zamiast tego można skonwertować ten SVG na PNG i podejrzeć, ja to sobie tak emulowałem. Nie radzę podgladać SVG bezpośrednio bo imagemagick ma trochę biedny ten renderer i można się potem zdziwić że inaczej wychodzi.

Co do kodu... chyba nie jestem jeszcze gotowy na to, żeby ktoś go oglądał 🙂

Link do komentarza
Share on other sites

7 godzin temu, Treker napisał:

@piotr-jarosz witam na forum 🙂 

Raczej nie znajdziesz tego typu rozwiązania - zdecydowanie szybciej przyjdzie paczka z zamówionymi częściami 😉

@treker

A tak, witam 🙂

Ale z tego co patrzę na samą specyfikę SPI i e-INK, to nie będzie trudne do zasymulowania, postaram się w tygodniu znaleźć czas i zobaczymy co uda się wyrzeźbić 🙂
Już nawet nie chodzi o ten jeden projekt - przyszłościowo, w przypadku innych narzędzi, moim zdaniem wygodniej prototypować na zwirtualizowanym e-papierze niż na fizycznym nośniku 🙂

@TPReal Rozumiem Twoje obawy przed publikacją kodu 🙂 miałem takie same przed pierwszym lockdownem, kiedy zacząłem pisać swoje side projekty - po publikacji pierwszego i wyszerowaniu do kilku kolegów, żeby mogli ocenić, pomóc znaleźć błędy, publikowanie stało się łatwiejsze 🙂 polecam, bardzo dużo kontruktywnej krytyki można zgarnąć 🙂
 

  • Lubię! 1
Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.