Dziś postanowiłem opisać projekt nad którym pracowałem ładne kilka dni a jest to zdalny (WiFi na ESP 8266) mini wyświetlacz (128×64 OLED) pokazujący na bieżąco stan OctoPrinta*. Motywacją projektu było to, że drukarkę mam za sobą poza zasięgiem wzroku a nie zawsze mam miejsce na ekranie aby mieć otwartą kartę ze stroną OctoPrinta aby widzieć postęp wydruku. Rozwiązanie sprawdza się wręcz genialnie umożliwiając łatwy dostęp “rzutem oka” do aktualnego paska postępu oraz stanu temperatur drukarki. Do całości zaprojektowałem dość dobrze spasowaną obudowę. Aby osiągnąć ten cel w górnej części umieściłem sam wyświetlacz a w podstawce ESP8266 zostawiając między nimi tunel na kable ale po kolei. Zaczynajmy…
* Drukarze zapewne wiedzą czym jest OctoPrint i bardzo chętnie go używają. Dla tych którzy nie wiedzą – jest to oprogramowanie uruchamiane najczęściej na Raspberry Pi służące do zarządzania naszą drukarką 3D, zdalnego podglądu kamery, stanu wydruku itd.
Potrzebne części
Poza samym wydrukiem obudowy projektu potrzebne nam będzie kilka części:
- 1x ESP8266 (ja użyłem NodeMCU v2)
- 1x SSD1306 (wyświetlacz OLED 128×64)
- 4x Przewód F-F 20cm (ja użyłem zestawu 40 sztuk z Nettigo)
- Ładowarka MicroUSB do późniejszego zasilenia gotowego systemu
Schemat podłączenia
Programowanie modułu
Kod dla modułu ESP8266 napisałem w Arduino IDE do którego potrzebne będzie doinstalowanie bibliotek:
Sterownik ESP8266 instalujemy za pomocą Menedżera Bibliotek w Arduino IDE, natomiast sterownik płytki wymaga w Preferencjach Arduino IDE wpisania linku http://arduino.esp8266.com/stable/package_esp8266com_index.json w dodatkowych adresach URL dla Menedżera Płytek a następnie skorzystania z Menedżera Płytek. Jako płytkę dla projektu wybieramy NodeMCU V1 (mimo korzystania z V2) gdyż V2 nie jest dostępne a profil dla V1 korzysta z tego samego procesora co V2.
Kod źródłowy projektu dostępny jest na GitHubie: click
Kod źródłowy należy jednak nieco dostosować (na samej górze) – poniżej opis:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
// ZMIENNE DO ZMIANY // const char *ssid = "NAZWA SSID SIECI WIFI"; const char *password = "HASLO SIECI WIFI"; // Uzyj normalnego adresu bez konczacego znaku / // Jeżeli masz zabezpieczoną instalację autoryzacją HTTP wpisz link w formie: http://login:haslo@host const String octoprint_url = "http://ADRES DO OCTOPRINTA"; // OctoPrint API Key dostępny w OctoPrincie (Settings->API - upewnij się czy API jest Enabled) const String octoprint_key = "KLUCZ API"; const unsigned short delay_printing = 1000; // Częstotliwość odświeżania podczas wydruku const unsigned short delay_nonprinting = 5000; // Częstotliwość odświeżania podczas stanu spoczynku const unsigned short delay_error = 10000; // Częstotliwość ponawiania próby po ewentualnym błędzie HTTP const unsigned short contrast_printing = 20; // Kontrast w czasie wydruku lub pauzy [1-255] const unsigned short contrast_idle = 1; // Kontrast w czasie stanu spoczynku [1-255] (w połowie czasu idle_timeout wyświetlacz będzie ciemniejszy 2x) const unsigned short idle_timeout = 60*5; // Czas do wyłączenia wyświetlacza po skończeniu wydruku [s] const bool debug = false; // Zmień na true jeśli masz problemy z konfiguracją i połącz się Monitorem Szeregowym z częstotliwością 115200 |
Jak widać z powyższej konfiguracji – po zakończeniu wydruku wyświetlacz zostanie przyciemniony a następnie wyłączony. Jest to funkcja którą dopisałem tuż przed publikacją artykułu w czasie praktycznych testów wykończeniowych :)
Obudowa / stojak
Elementem projektu jest również stojak którego pliki znajdziecie na Thingiverse. Po wydrukowaniu stojaka wystarczy przecisnąć kabelki przez środek a następnie wsunąć ESP8266 w stojak od dołu a wyświetlacz w górny moduł i w zależności od wybranej wersji: przykręcić wszystko śrubkami M2x12 lub skleić.
Mój patent na przeciśnięcie kabli tunelem (tymczasowo zdjęte obudowy złącz)
NodeMCU należy wcisnąć lekko pod skosem (celując portem USB w otwór)
Kabelki można przecisnąć przez otwory na śruby (przed ponownym założeniem obudowy złącz)
Port MicroUSB powinien pasować idealnie :)
Niestety nie mam zdjęcia montażu wyświetlacza ale również powinien wejść ładnie. Jeśli nie chciałby się trzymać wystarczy go lekko podkleić (mi wystarczył klej w sztyfcie ;).
Gotowy projekt
Drukarka w czasie wydruku
Drukarka w stanie spoczynku
Projekt w akcji
Pliki do pobrania
Link do projektu na Thingiverse: click
Disclaimer: W kilku miejscach (szczególnie na GitHubie) występuje podpis SysAdminSH. Spokojnie – to ja :)
Ech… powoli dojrzewam do zrobienia czegoś takiego, tylko z większym wyświetlaczem i sygnalizacją dźwiękową zakończenia druku…
Generalnie też planowałem coś większego – nie zwróciłem tylko uwagi na wymiary OLED’a a na zdjęciu wyglądał na dużo większy – no ale generalnie wszystko się ładnie zmieściło. Myślałem o dźwięku ale dałem sobie spokój bo dźwięk i tak mam w telefonie (Pushover)
Ech… trochę to trwało – ale dojrzałem i zrobiłem :) Nie chcę powielać artykułów – opis jest na Forbocie: opis
Fajnie działa :)
Popracował bym jeszcze trochę nad jakością wykonania ten front z wyświetlaczem aż się prosi o zakrycie go w całości ciemną cienką pleksą. Mocno kuje w oczy miejsce w którym kończy się wyświetlacz. A szkoda bo projekt naprawdę bardzo ciekawy, tylko nie dopracowany. Pozdrawiam :D
Dopracowując front połamałem 2 wyświetlacze i został mi ostatni więc już nie eksperymentowałem dalej :D