Przejdź do głównej zawartości

[PCP] licznik piwa

Nowa kategoria, zgodnie z panującym lata temu w Usenecie obyczajem nazwana "PCP" czyli "Patrzcie Co Popełniłem".

Za jakiś czas jadę na pijacki zlot, gdzie będzie się lało bardzo, bardzo dużo piwa. A że jestem coraz starszy, tym większą mam potrzebę wiedzieć ile tak naprawdę tego dobra poszło, a nie tylko "za dużo". Stąd projekcik licznika wypitego piwa. Nie żadne tam automatyki, zwykły gadżet do klikania.


Jak na zamieszczonym zdjęciu widać, składa się on z wyświetlacza tekstowego 1602, enkodera przyrostowego (rotary encoder) i płytki developerskiej ESP8266 WeMos D1 mini.

Na dzień dzisiejszy umożliwia zliczanie wypitych piw z podziałem na małe (250 ml), średnie (330 ml) i duże (500 ml). Wyniki są wyświetlane jako ilość piw ogółem i objętość w litrach. Możliwa jest obsługa do 8 uczestników zabawy (ot, taka okrągła liczba), a ich wyniki są zapisywane w wewnętrznej pamięci Flash mikrokontrolera ESP-12E/F (SPIFFS). Funkcje edukacyjne:

  • obsługa typowego wyświetlacza LCD połączonego po I2C (TWI);
  • prosta obsługa enkodera przyrostowego;
  • dynamicznie budowane menu nawigacyjne;
  • odczyt i zapis danych z pamięci SPI Flash (SPIFFS);
  • odczyt i zapis strukturalizowanych danych w JSON (dekodowanie i enkodowanie);
  • AP tworzący własną sieć WiFi (otwartą);
  • interfejs webowy do dodawania i usuwania uczestników zabawy z dynamicznie ładowaną listą przy użyciu JavaScriptu.

W najbliższej przyszłości otrzyma on dodatkowo interfejs WWW do dodawania uczestników zabawy, powinienem chyba również przemyśleć nawigację, bo obecnie zakałapućkanie się w niewłaściwe miejsce wymaga resetu całego układu, o ile nie chce się czegoś popsuć.

Kod źródłowy programu jest dostępny w publicznym repozytorium Git, a rozpowszechniany jest na licencji GPL wersja 2.

Po zmontowaniu wszystkiego na breadboard wygląda to tak:


Komentarze

Popularne posty z tego bloga

Programowanie ESP8266 w C/C++

ESP8266 powoli ustępuje miejsca swojemu następcy ESP32, ale jest to proces wyjątkowo powolny. Może to ceny tak samych chipów jak i płytek developerskich to powodują (niewiele jest gotowych modułów w cenie poniżej $10 z przesyłką), a może rozbudowany ekosystem bibliotek do ESP8266. W każdym razie ze starszym bratem ESP32 jeszcze długo będziemy mieć do czynienia, zwłaszcza że jest to wciąż jedna z najlepszych opcji jeżeli chodzi o mikrokontrolery.

ESP8266 można programować w Lua lub w Pythonie, jednak najlepszym wyjściem jest zaprogramowanie własnego firmware w C++ lub w C - daje to największą kontrolę i zapewnia najlepszą wydajność. Jakie mamy do tego możliwości? Od najłatwiejszej do najbardziej skomplikowanej.
ESP8266 core dla Arduino Link: Github

To jest najprostsze rozwiązanie, implementacja ramówki Wiring dla ESP8266. Jakkolwiek można tę obsługę zainstalować w Arduino IDE, to nie ma to większego sensu, bo nie da się tego edytora używać do niczego poważniejszego. Pisze się to w nor…

RetroPie, bo mi się dziecko alienowało

Dziecko moje najdroższe alienowało mi się siedząc przed komputerem w swoim pokoju. Nie żebym jej zabraniał, ale skoro ma grać, to niech gra przy nas, w salonie. Przynajmniej będziemy wiedzieli w co gra.

Wymagane hardware:

Raspberry Pi 2 Mod. B,karta SD min. 8GB,gamepad na USB,telewizor
Opcjonalne w zależności od konfiguracji:

karta WiFi na USBklawiatura na USBpendrive czy inny storage na USB Jak już to wszystko mamy, to możemy robić. Zajmie to parę godzin wszystkiego.
RetroPie Obraz RetroPie pobieramy ze strony projektu, to będzie ten którego nazwa kończy się na rpi2.img.gz. Następnie obraz ten trzeba rozpakować i nagrać w standardowy sposób na kartę SD. Wkładamy kartę do RPi, podłączamy pada do USB, bootujemy naszą zabawkę i zaczynamy konfigurowanko jak zwykle z RPi (z podłączonego klawikordu i na telewizorze, albo po ludzku, po zalogowaniu przez SSH), czyli najpierw używając skryptu raspi-config rozciągamy system plików na całą kartę, reboot, pełna aktualizacja systemu, być może reboo…

Hello, Mr. Developer

Po dłuższej robocie z innymi rzeczami trafił mi się jeden mały projekt, który idealnie nadał się na rozpoznanie bojem, co tam nowego panie w światku bibliotek narzędziowych/ramówek do robienia aplikacji sieciowych - proste REST API z jednym zasobem w kilku perspektywach. Pierwsza myśl była "robiłem to meeelion razy, w jeden dzień będzie z pokryciem 100%". Ale zaraz zorientowałem się, że to dobra okazja, żeby przy okazji rozejrzeć się, czy czasem coś nowego nie pojawiło się na arenie w ciągu tych 3 czy 4 lat, kiedy tłukłem w standardzie Flask + SQLAlchemy, do porzygu. Pamiętam przecież, jak ze 3 lata temu co chwilę pojawiały się jakieś zajawki, że tu jakiś framework osiągnął niesamowite wyniki w benchmarkach, a to jakiś przełomowy koncept miał na zawsze odmienić sposób w jaki robi się webaplikacje w Pythonie, a to to, a to tamto. Poprosiłem więc o chwilę ekstra na zastanowienie się i wyruszyłem wraz z Google na poszukiwanie króla dżungli.
Jest źle, a nawet bardzo źle. Asynch…