Spisu treści:
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-13 06:58
Ten projekt to fajny sposób na pokazanie czasu i pogody w małym, wygodnym opakowaniu. Wyjaśnię projekt, jak działa i pokażę kod tutaj.
Możesz nacisnąć różne przyciski, aby wyświetlić aktualną pogodę w określonej lokalizacji, a także temperaturę i ciśnienie. Widok domyślny to czas, który jest pobierany z serwera NTP.
Nie ma potrzeby ustawiania czasu, ponieważ czas jest synchronizowany z serwerem NTP i jest bardzo dokładny. W tej konfiguracji mam czas i lokalny adres IP. Możesz zmienić kod, aby zawierał datę, pogodę, ciśnienie i temperaturę, które będą wyświetlane na ekranie głównym lub na przyciskach.
Krok 1: Schemat
Schemat jest stosunkowo prosty i łatwy do wykonania
śledzić. Istnieje plik gerber, jeśli chcesz kręcić własną płytką drukowaną. Cały obwód jest zasilany napięciem 5V pochodzącym z połączenia micro USB. Dzięki temu obwód jest prosty i łatwy do zasilania. Napięcie 5 V jest podawane do regulatora o niskim spadku napięcia 3,3 V LM 3940, który daje 3,3 V do ESP8266. W ESP8266 jest złącze USB, jednak zdecydowałem się go nie używać, ponieważ 5 V również napędza LCD.
3,3 V musi być używane z ESP8266, nie można go bezpośrednio zasilać 5 V, ponieważ zabije to płytkę.
Dwa dotykowe przełączniki są podłączone do D5 i D6 i są skonfigurowane w kodzie, aby wyświetlać różne informacje na ekranie. Mam te ustawione na temperaturę/ciśnienie i prognozę.
Wszystkie komponenty można łatwo przylutować ręcznie do płyty perforowanej lub gerber jest dostępny w moim GitHub pod adresem
Krok 2: Kodeks
github.com/allenelectronics/esp8266stacja pogodowa
Kod jest skompilowany w środowisku Arduino IDE i do działania wymaga pewnej konfiguracji
Po pierwsze, musisz zainstalować płytkę ESP8266 do IDE, aby wgrać na nią kod.
Szczegółowe instrukcje, jak to zrobić, znajdują się tutaj:
Aby uzyskać funkcjonalność pogodową, wybrałem RemoteMe, które zbiera dane pogodowe bezpośrednio z API i generuje kod, który można wstawić do swojego kodu. Musisz się zarejestrować i skonfigurować strumień danych na ich stronie internetowej:
Dokumentację dotyczącą RemoteMe można znaleźć tutaj:
Istnieje kilka konkretnych definicji, które są unikalne dla Twojej konfiguracji, które musisz uzupełnić przed przesłaniem:
#define WIFI_NAME „SSID JEST TUTAJ”
#define WIFI_PASSWORD „HASŁO JEST TUTAJ”
#define DEVICE_ID 1
#define DEVICE_NAME "UZYSKAJ Z REMOTEME. ORG"
#define TOKEN „UZYSKAJ Z REMOTEME. ORG”
Definicje tutaj muszą być ustawione przez Ciebie na podstawie danych Wi-Fi i tokena otrzymanego od RemoteMe.
Musisz upewnić się, że wszystkie te biblioteki są zainstalowane i zawarte w kodzie. Dołączyłem linki do tych, które są trudniejsze do zdobycia.
#include //https://github.com/remoteme/RemoteMeArduinoLibrary
#włączać
#włączać
#włączać
#włączać
Ostatnią częścią wymagającą zmiany jest Twoja lokalizacja, ponieważ ten projekt nie korzysta z GPS. Musisz zmodyfikować ciąg „LOCATION”:
else if(buttonState2 == NISKI && prevButtonState2== WYSOKI){
Serial.print("LOKALIZACJA\n");
Serial.println(fc);
lcd.clear();
lcd.print("LOKALIZACJA");
lcd.setCursor(0, 1);
lcd.print(fc);
lcd.setCursor(0, 0);
opóźnienie(5000);
prevButtonState2 = buttonState2;
Krok 3: Kompilacja
Kompilacja
W tym czasie nie miałem dostępu do drukarki 3d, to był mój ostatni projekt wykorzystujący pudełko z półki. Użyłem łatwo dostępnej obudowy panelu alarmowego, która jest przeznaczona dla LCD 16x2.
Link: https://www.ebay.co.uk/itm/86-Plastic-project-box-enclosure-case-for-diy-LCD1602-meter-tester-with-buttGA/363214674235?hash=item549148193b:g: IvQAAOSwNXpcFFrv
Wszystko jest upchnięte wewnątrz obudowy, wyświetlacz LCD 16x2 jest przyklejony do przedniego panelu z płytką drukowaną na gorąco.
Krok 4: Wniosek
Wniosek
Jest to zgrabny projekt cyfrowego zegara stacjonarnego, który nie wymaga regulacji ani ustawiania, pobiera czas z serwera NTP i wyświetla go na wyraźnym podświetlanym wyświetlaczu LCD.
Nie jest to rozwiązanie dla początkujących, ponieważ wymagana jest pewna konfiguracja kodu, a także strumienie danych. Jeśli masz jakieś pytania lub uwagi, zostaw mi komentarz.