Skocz do zawartości

TPInk - stacja pogodowa z e-papierem


TPReal

Pomocna odpowiedź

23 godziny temu, piotr-jarosz napisał:

Ale z tego co patrzę na samą specyfikę SPI i e-INK, to nie będzie trudne do zasymulowania

Specyfikacja e-INK, przynajmniej tych Waveshare, jest, oględnie mówiąc, straszna. Różne ekrany mają różne sekwencje startowe (właściwe kolejności wysyłania komend), przykładowe programy wysyłają komendy w innej kolejności niż opisuje specyfikacja, a wśród nich komendy o kodach, które w ogóle się w specyfikacji nie pojawiają, struktura LUT jest w ogóle nieudokumentowana (patrz mój post wyżej w tym temacie), różne struktury buforów obrazu, kolory faktyczne inne niż w specyfikacji, i sporo innych quirków, na które trafiłem (a nie przejrzałem nawet wszystkich specyfikacji ani przykładowego kodu wszystkich ekranów, tylko kilku). Pisanie uniwersalnego emulatora tych ekranów brzmi mi jak dobre zadanie dla potępionych dusz w piekle 🙂

Jak chodzi o kod, no cóż, wystarczy mi że w pracy ludzie patrzą na cały kod, który napiszę 🙂 To, co piszę prywatnie, na razie zostawię dla siebie. Chyba że jesteś zainteresowany jakimś konkretnym kawałkiem logiki czy czymś.

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

Dnia 9.11.2020 o 11:32, TPReal napisał:

Specyfikacja e-INK, przynajmniej tych Waveshare, jest, oględnie mówiąc, straszna. Różne ekrany mają różne sekwencje startowe (właściwe kolejności wysyłania komend), przykładowe programy wysyłają komendy w innej kolejności niż opisuje specyfikacja, a wśród nich komendy o kodach, które w ogóle się w specyfikacji nie pojawiają, struktura LUT jest w ogóle nieudokumentowana (patrz mój post wyżej w tym temacie), różne struktury buforów obrazu, kolory faktyczne inne niż w specyfikacji, i sporo innych quirków, na które trafiłem (a nie przejrzałem nawet wszystkich specyfikacji ani przykładowego kodu wszystkich ekranów, tylko kilku). Pisanie uniwersalnego emulatora tych ekranów brzmi mi jak dobre zadanie dla potępionych dusz w piekle 🙂

Zrobiłem dokładniejszy rekonesans. Jest dokładnie tak jak mówisz, o ile emulacja samego SPI to nie problem i przekazywanie dalej, o tyle już emulowanie wyświetlaczy to już inna bajka. 
 

Cytat

Jak chodzi o kod, no cóż, wystarczy mi że w pracy ludzie patrzą na cały kod, który napiszę 🙂 To, co piszę prywatnie, na razie zostawię dla siebie. Chyba że jesteś zainteresowany jakimś konkretnym kawałkiem logiki czy czymś.

Na całe moje szczęście mój kod hobbystyczny mieści się w innych obszarach niż to, co piszę zawodowo 🙂 Powodzenia! pochwalę się jak doprowadzę swój projekt do działania.

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

Ważna uwaga dla wszystkich, którzy chcą zbudować podobną ramkę (w tym mnie ;))

HAT dla Raspberry nie działa z Raspberry Pi Zero [W], źródło: https://github.com/waveshare/e-Paper/issues/99 .

Cytat

Dear customer,
Thank you for your information.
Because when it is directly plugged into the HAT, the entire circuit is working under 5V voltage, so the Raspberry Pi zero may restart due to power supply problems (it is normal if it is connected to Raspberry Pi 3B or Raspberry Pi 4B)
Regarding this problem on zero, we have noticed and are discussing how to solve it.
Please use PH2.0 to connect 3.3V at present.

Zbudowałem sobie wersję mini takiej ramki na RPi Zero i miałem problemy z uruchomieniem ekranu - zawsze po zimnym boocie systemu próba uruchomienia ekranu kończyła się crashem sesji - dopiero za drugim razem działało (screeny poniżej).

Resized_20201125_105751.thumb.jpg.9086b25a2827d196bf414262289e09e2.jpgResized_20201125_123911.thumb.jpg.e610c049a8e2eea8088dc4c7a2a7a195.jpgResized_20201125_221129.thumb.jpg.1d11305342637881cf668acaab296a52.jpg

Rozwiązania programowego nie ma - trzeba podłączyć RPi przez kabel - tak, jak w oryginalnym projekcie. Tak więc paradoksalnie brak miejsca w ramce uratował twórcę oryginalnej ramki przed trudnymi do zdiagnozowania problemami 🙂

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

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ł.
 

@piotr-jarosz, jak chcesz, obejrzyj kod mojej małej stacyjki. Architektura jest zbudowana pod ekran z przyciskami i umożliwia przełączanie trybów na dodatkowe ekrany. Dodatkowo oprogramowałem automatyczne rozpoznawanie, czy skrypty działają na Raspberry czy na PC i w zależności od tego działają nieco inaczej (na przykład na PC generuje ekrany do pliku, na Raspberry - na e-paper; na PC dodałem też opcję symulowania wciskania przycisków, żeby móc łatwo testować rozwiązanie).

Jeżeli chcesz uruchomić na PC, to:

1. Zainstaluj Pythona

2. Zadbaj o doinstalowanie odpowiednich pakietów. Na PC chyba wystarczy Pillow, w katalogu z Pythonem uruchom:

python.exe -m pip install Pillow

3. Załóż konto na openweathermap.org i utwórz klucz API (trzeba go wpisać w weathermodule.py)

4. Uzupełnij współrzędne geograficzne

5. Upewnij się, że ścieżki w fileoutput.py wskazują na istniejące miejsce

W tej chwili działa tylko przycisk 1, wpisz w konsoli "1" i wciśnij Enter żeby przełączyć tryb. Wciśnięcie samego Enter zakończy działanie.

Niedługo opublikuję na mojej stronie internetowej (https://spooksoft.pl) edytor czcionek, z którego skorzystałem, żeby poprawić trochę wygląd tekstu na ekranie. Python daje sobie oczywiście radę z czcionkami TrueType, ale problem polega na tym, że próbuje renderować je z antyaliasingiem, a na ekranie e-papierowym mamy tylko czarny i biały. Nawiasem, edytor ten pozwala też na generowanie czcionek dla Teensy/ILI9341_t3, jeżeli ktoś korzysta.

Możecie mnie trochę pogonić, bo już dawno miałem ten edytor opisać i opublikować, ale zajmuję się jakimis stacjami pogodowymi czy coś 😉

Aha, jeżeli będziesz potrzebować pomocy z jakimś fragmentem skryptu, to pisz w tym wątku, postaram się pomóc.

RaspberryDisplay.zip

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

@spook O kurczę, to faktycznie miałem trochę szczęścia. Testowałem przez HAT i działało, ale na Pi 2, więc bym faktycznie się zdziwił że mi nie działa na Zero.

Natomiast jeżeli przyczyną problemów jest podpięcie zasilania 5V, to chyba nie chodzi o wydajność prądową, bo piny 5V są bezpośrednio połączone ze źródłem zasilania Pi, więc można z nich brać duży prąd o ile tylko zasilacz tyle daje (no, 5A bym nie polecał, ale 0.5A spokojnie). Do tego na stronie piszą że moc jest 38mW przy 3.3V..5V, to wychodzi jakieś 12mA. Więc w sumie nie rozumiem na czym polega problem.

Przyjemnie wygląda ta twoja rameczka 🙂

  • Lubię! 2
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, też się trochę zdziwiłem, ale tak pisze ekipa z Waveshare. Może ekran powoduje chwilowy przysiad, który destabilizuje RPi? Nawet w przypadku tego małego ekraniku wystarczyło, żeby położyć sesję zdalną. Skończyłem używając RPi 3.

I jeszcze jedna wskazówka dla tych, którzy chcą skonstruować podobną ramkę. Warto rozważyć, czy nie warto poświęcić 3 kolorów na rzecz szybszego odświeżania: mam tu na myśli fakt, że trójkolorowe ekrany potrzebują na to mnóstwo czasu. Mały ekranik, z którego korzystam, wykonuje pełny cykl odświeżania 16 sekund (z zegarkiem w ręku). Dla porównania dwukolorowy ekran e-paper 7.5", 800x480 na pełny cykl odświeżania potrzebuje "zaledwie" 5 sekund. To daje trochę więcej miejsca manewru podczas programowania - można poszaleć i renderować ekran częściej.

Żeby było jasne: nie mówię wielokolorowym ekranom nie. Ale jestem przekonany, że jest to istotna kwestia do rozważenia. Ja zdecydowałem się w końcu właśnie na ekran dwukolorowy - jak skończę go projektować, to pewnie podrzucę jakiś opis.

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

@Libik Hej bardzo fajnie zrobione. Ja akurat wolałem zrobić więcej sam a mniej korzystać z gotowych rozwiązań ale na pewno się przez to duuużo bardziej napracowałam 🙂

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

Jeżeli dobrze zrozumiałem, to jeden Raspberry przesyła dane do wyświetlenia dla drugiego? Wiem, że RPi Zero jest wolniejsze od RPi4, ale czy naprawdę aż tak? W moim przypadku prawie cały development robiłem na pececie, a jedynie deployowałem na RPi Zero, co sprowadzało się z grubsza do ssh, git pull i sudo reboot (albo python3 raspberrydisplay żeby uruchomić skrypt na szybko do testów). Użycie aż dwóch komputerów wydaje mi się strasznym overkillem - na upartego taką stację można byłoby zrobić spokojnie na jakimś ESP32 - jeżeli pomiędzy odświeżeniami jest minimum minuta, to nawet Arduino Uno w takim czasie dałoby radę wygenerować odpowiedni obrazek.

Co było aż tak wolnego w RPi Zero, że nie mogło ono samo pobierać i przetwarzać danych? Przecież tam jest 1GHz procesor na pokładzie. Na potrzeby zasiorbania JSONa z Internetu, przetworzenia go i wygenerowania bitmapy, a potem przepchnięcia jej na e-papier to jest aż za dużo.

 

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

26 minut temu, spook napisał:

Jeżeli dobrze zrozumiałem, to jeden Raspberry przesyła dane do wyświetlenia dla drugiego? Wiem, że RPi Zero jest wolniejsze od RPi4, ale czy naprawdę aż tak? W moim przypadku prawie cały development robiłem na pececie, a jedynie deployowałem na RPi Zero, co sprowadzało się z grubsza do ssh, git pull i sudo reboot (albo python3 raspberrydisplay żeby uruchomić skrypt na szybko do testów). Użycie aż dwóch komputerów wydaje mi się strasznym overkillem - na upartego taką stację można byłoby zrobić spokojnie na jakimś ESP32 - jeżeli pomiędzy odświeżeniami jest minimum minuta, to nawet Arduino Uno w takim czasie dałoby radę wygenerować odpowiedni obrazek.

Co było aż tak wolnego w RPi Zero, że nie mogło ono samo pobierać i przetwarzać danych? Przecież tam jest 1GHz procesor na pokładzie. Na potrzeby zasiorbania JSONa z Internetu, przetworzenia go i wygenerowania bitmapy, a potem przepchnięcia jej na e-papier to jest aż za dużo.

 

Generalnie chciałem zrobić żeby raspberry pi zero odbierał tylko zdjęcia, ponieważ planowałem mieć różne wersje ekranów (slajdy), np w interwale 30m żeby się zmieniał pomiędzy zdjęciami a danymi. 
A przez to że jakiekolwiek modyfikacje na RPIzero były wolne to stwierdziłem ze nie mam ochoty tam więcej zaglądać ale masz racje mogłem teoretycznie użyć ssh żeby przerzucać zdjęcia. Tylko ze w serverach czułem się bardziej komfortowo a chciałem mieć cos szybko gotowe, na pewno przemyśle to i zmienie jak będę miał chwile, tez powinno być bezpieczniejsze przez to ze nie mam żadnej autentykacji.

Raspberry pi 4 używam tez do innych rzeczy i to mój centralny punkt, wiec nie miałem problemu dodać tam tego 😄

 

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.