Zdalna stacja pogodowa Raspberry Pi Pico W (zasilana energią słoneczną)
Szczególną cechą Raspberry Pi Pico W jest funkcja SoftAP.
SoftAP to skrót od software-enabled access point, który pozwala na rozgłaszanie sieci WiFi bezpośrednio z Raspberry Pi Pico W.
Właśnie dlatego zdecydowaliśmy się na projekt zasilany energią słoneczną.
Jak projekt zasilany energią słoneczną łączy się z SoftAP
Problem wygląda następująco.
Jeśli chcesz stworzyć projekt, który mierzyłby dane z dala od domu, okaże się, że nie będziesz w stanie uzyskać tych danych bezprzewodowo.
W tym scenariuszu równie dobrze można użyć zwykłego Pico, ponieważ nie będzie można korzystać z jego funkcji bezprzewodowych.
Projekt zasilany energią słoneczną jest prawdopodobnie jednym z nich, biorąc pod uwagę, że trzeba go umieścić w nasłonecznionym miejscu, które zwykle znajduje się na zewnątrz.
W tym miejscu pojawia się SoftAP. Powiedzmy, że chcesz wiedzieć, jaka jest pogoda na zewnątrz. Następnie należy połączyć się z SoftAP, który jest nadawany przez Raspberry Pi Pico W, a następnie zalogować się na adres IP, który wyświetla dane.
Jest to najlepszy scenariusz tego, jak możemy wykorzystać zalety Raspberry Pi Pico W.
To znaczy, można kupić dodatek LTE lub dodatek bezprzewodowy dalekiego zasięgu, ale wtedy nie byłby to tak naprawdę samouczek Pico W, ponieważ można by po prostu użyć tych komponentów na zwykłym Pico.
Co z Bluetooth na Raspberry Pi Pico W?
Byłoby wspaniale, gdybyś mógł korzystać z Bluetooth, ale w dniu publikacji tego samouczka Bluetooth nie jest włączony w Raspberry Pi Pico W.
1 lipca 2022 r. inżynier Raspberry Pi i moderator forum jamesh powiedział: "Rozpoczęliśmy już prace nad oprogramowaniem dla BT, nie mogę jeszcze zaoferować harmonogramu. Oprogramowanie musi zostać napisane, przetestowane, a samouczki napisane".
Części
- Raspberry Pi Pico W
- Panel słoneczny 6V
- Moduł ładowania TP4056 USB-C
- Akumulator litowo-jonowy NR18650 3,6 V
- BME688 Breakout Board
- Uchwyt na akumulator typu 18650
- Dioda Schottky'ego
- Nagłówki dla Pico W i BME688
- Tablica ogłoszeń
Aktualizacja oprogramowania układowego Raspberry Pi Pico W
Oprogramowanie układowe Raspberry Pi Pico W wciąż ewoluuje, więc najlepiej byłoby używać najnowszego oprogramowania układowego. Na przykład pierwszy publiczny MicroPython UF2 dla Pico W ma pewne problemy z bezpieczeństwem, ponieważ sieci są zawsze otwarte.
Kliknij ten link, aby dowiedzieć się, jak go zaktualizować. Link pokaże również szybką metodę rozgłaszania własnej sieci WiFi.
Konfiguracja solarna
Panel słoneczny powinien generować co najmniej 6 V i 150 mA.
Akumulator powinien być akumulatorem litowym serii 18650 o napięciu nominalnym 3,7 V.
Moduł TP4056 będzie chronił baterię i zasilał Pico W.
Urządzenie do śledzenia pogody
W tym projekcie używamy naszego Płytka wyłączająca BME688 zaprojektowana we własnym zakresie.
Możesz użyć dowolnego czujnika pogodowego, takiego jak DHT11 lub DHT22, ale kod i okablowanie w tym artykule są naprawdę przeznaczone dla BME688.
Okablowanie
Umieść Pico W i BME688 na płytce prototypowej.
Istnieją cztery piny, które należy podłączyć: 3.3V, GND, SCL i SDA na BME688.
Oto, czego użyliśmy:
Pico W's GP1 łączy się z SCL;
GP0 łączy się z SDA;
GND łączy się z GND;
Te trzy piny powinny znajdować się w jednej linii, obok gniazda micro-USB.
3V3 łączy się z 3V3który znajduje się po drugiej stronie płyty.
Moduł ładowania TP4056 USB-C
Konieczne będzie przylutowanie przewodów do TP4056.
Dobrą praktyką jest lutowanie czerwonych przewodów do połączeń dodatnich, a czarnych do ujemnych.
Piny obok złącza USB-C służą do podłączenia zewnętrznego zasilania, takiego jak nasz moduł solarny.
Podłącz te styki do panelu słonecznego.
Po drugiej stronie znajdują się piny przeznaczone dla wyjścia zasilania. Piny oznaczone jako B+ i B- muszą być podłączone do akumulatora.
Zdecydowaliśmy się użyć zacisków, aby podłączyć nasz uchwyt baterii do TP4056 na wypadek konieczności zmiany obwodu, ale jeśli chcesz, możesz przylutować uchwyt baterii bezpośrednio do TP4056.
Dioda Schottky'ego
Podłącz diodę Schottky'ego do pinu VSYS urządzenia Pico W.
Upewnij się, że szary pierścień na diodzie jest skierowany w stronę Pico W, a drugi koniec jest podłączony do dodatniej szyny na płytce drukowanej.
Ponieważ zasilamy Pico z dwóch wejść zasilania, USB i systemu solarnego, musimy użyć diody Schottky'ego.
Dioda Schottky'ego Zapobiega zasilaniu zwrotnemu i umożliwia pracę z dwoma napięciami. Więcej informacji tutaj.
Podłącz TP4056 do płytki drukowanej
Podłącz dodatnie wyjście z TP4056 do dodatniej szyny płytki drukowanej, gdzie znajduje się dioda Schottky'ego.
Następnie podłącz ujemne wyjście z TP4056 do ujemnego pinu Raspberry Pi Pico W.
Kod do uruchomienia stacji pogodowej Raspberry Pi Pico W
Przesłaliśmy cały nasz kod do Github repo tutaj.
Oto przewodnik dotyczący przesyłania plików do Pico W.
Jeśli podłączyłeś komponenty zgodnie z powyższym opisem, będziesz mógł uruchomić kod bez żadnych zmian.
To powiedziawszy, oto kilka rzeczy, które możesz chcieć zmienić.
bme68x.py
Ten skrypt modyfikuje dane wyjściowe BME688.
Aby uzyskać dokładne odczyty temperatury i wysokości, należy zmodyfikować te linie, zaznaczone pogrubioną czcionką:
# change this to match the location's pressure (hPa) at sea level
# bme68x.sea_level_pressure = 1013.25
<strong> self.bme68x.sea_level_pressure = 1013</strong>
# You will usually have to add an offset to account for the temperature of
# the sensor. This is usually around 5 degrees but varies by use. Use a
# separate temperature sensor to calibrate this one.
<strong>self.temperature_offset = -9</strong>
main.py
Plik main.py uruchamia punkt dostępu, a także uruchamia serwer, który dostarcza plik HTML każdemu, kto się połączy.
Plik HTML jest miejscem, w którym można zobaczyć odczyty z BME688.
Po otrzymaniu połączenia (przez gniazda) Pico W wyśle plik index.html, ale przed wysłaniem zastąpi niektóre ciągi danymi pobranymi z BME688 za pomocą tego bloku kodu:
data = {
'T': 0,
'P': 0,
'A': 0,
'H': 0,
'G': 0,
}
...
def get_html(html_name):
with open(html_name, 'r') as file:
html = file.read()
return html
...
sensor = bme68x.BME68X()
...
response = get_html('index.html')
data = sensor.save_data('data.json')
blink_onboard_led(1, 0.2)
response = response.replace('id_temp', str(data['T']))
response = response.replace('id_pres', str(data['P']))
response = response.replace('id_alti', str(data['A']))
response = response.replace('id_humi', str(data['H']))
response = response.replace('id_gas', str(data['G']))
print_data(data)
conn.send(response)
conn.close()
Jak widać, linia, w której jest napisane data = sensor.save_data('data.json') to miejsce, w którym pobieramy dane czujnika, a następnie kod modyfikuje plik HTML o prawidłowe odczyty temperatury, ciśnienia, wysokości, wilgotności i przewodności gazu.
Automatyczne odświeżanie następuje co trzy sekundy.
Poniżej znajduje się blok kodu wymagany do rozgłaszania punktu dostępowego na Raspberry Pi Pico W:
essid = 'Pico-W-Weather-Station'
password = '#FreeThePicoW'
ap = network.WLAN(network.AP_IF)
ap.active(True)
ap.config(essid=essid, password=password)
while ap.active() == False:
pass
print('Connection successfull')
print(ap.ifconfig())
# Create sensor object
sensor = bme68x.BME68X()
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('', 80))
s.listen(3)
blink_onboard_led(3, 0.2)
Uwaga: jeśli używasz oryginalnego oprogramowania układowego, powinieneś je zaktualizować, w przeciwnym razie nie będziesz w stanie zmienić nazwy SSID ani mieć zabezpieczeń sieci bezprzewodowej. Przetestowaliśmy to na nocnej kompilacji z 15 lipca 2022 r. i w końcu zadziałało. Jest jeszcze kilka dziwactw i błędów, więc koniecznie przeczytaj naszą instrukcję tutaj.
KLIKNIJ TUTAJ: Rozgłaszanie sieci WiFi (punkt dostępu SoftAP)
Łączenie z punktem dostępu Pico W
Po pomyślnym nadaniu punktu dostępowego urządzenie Pico W zamiga trzy razy podanym kodem.
Połącz się z punktem dostępowym, który powinien mieć nazwę Pico-W-Weather-Station.
Wpisz hasło #FreeThePicoW
Połącz się z Pico, używając adresu IP. Jeśli uruchomiłeś go z Thonny, zobaczysz adres IP w powłoce.
W przeciwnym razie możesz spróbować 192.168.4.1 ponieważ jest to najczęściej adres IP Pico W i powinieneś zobaczyć zrzut ekranu po prawej stronie:
Skończyłeś
W tym projekcie nauczyłeś się, jak rozgłaszać sieć za pomocą funkcji SoftAP Raspberry Pi Pico W. Dowiedziałeś się również, jak podłączyć panel słoneczny i baterię do Pico W.
Jeśli chcesz dowiedzieć się więcej o Pico W, Dlaczego nie przeczytać naszego mega artykułu tutaj?
KLIKNIJ TUTAJ: Wszystko, co musisz wiedzieć o Raspberry Pi Pico W
Specyfikacja TP4056 mówi, aby utrzymać napięcie wejściowe w 5,5 V lub 6 V, panel słoneczny o napięciu 6 V może dać 6 V i prawdopodobnie 7 V + w niektórych przypadkach. Jestem trochę zdezorientowany. Czy mógłbyś to wyjaśnić?
Dzięki!
Zrobiłem ten projekt i miałem świetne wyniki, bardzo dokładne odczyty. Ale napotkałem problem, działa tylko przez około 10-15 minut, a następnie zatrzymuje się. Odkryłem, że usunięcie pliku json jest jedynym sposobem na przywrócenie działania.
Czy istnieje sposób na zatrzymanie ich przechowywania i po prostu wysyłanie danych?
Muszę powiedzieć, że dobra robota, niech przychodzą plz👍
W pliku bme68x.py metoda save_data ciągle dodaje linie do pliku Jason. W pewnym momencie musi on stać się zbyt duży. Można zmodyfikować tę metodę tak, aby przed zapisaniem pliku zachowywała tylko x ostatnich wierszy z listy data_list. Trzeba będzie określić idealną wartość x. Można też zachować tylko bieżący pomiar. W ten sposób plik pozostanie wystarczająco mały.
Po 4.104 znakach "data.json" wypełnia pamięć malutkiego pico .-/
Pytanie brzmi: Jak to ograniczyć, aby powyższy projekt był funkcjonalny?
Przykład / dodanie kodu (jako aktualizacja) byłoby bardzo mile widziane!
TiA - i kontynuuj dobrą pracę... .
PS: opublikowano również odpowiedni błąd w GitHub Repo.
Używanie TP 4056 do takiego projektu nie jest skutecznym rozwiązaniem, patrz:
https://www.best-microcontroller-projects.com/tp4056.html
Konstruktywny projekt może wykorzystywać przełącznik MPTT Set Switch, taki jak Waveshare,
Opis tutaj:
https://www.waveshare.com/solar-power-manager.htm
Dzięki!
Świetny pomysł na projekt! Czy ktoś zaprojektował obudowę z nadrukiem 3D, którą chciałby się podzielić?
Cześć,
dziękuję za instrukcję.
Zgodnie ze specyfikacją TP4056 LED-Anzeige Rot: (Ladevorgang), LED-Anzeige Blau: (Standby, Ladevorgang abgeschlossen)
W moim przypadku mam włączone obie diody LED na TP4056, gdy panel słoneczny jest umieszczony w bezpośrednim świetle. Czy jest to zamierzone?
Czy to możliwe, że bateria może być ładowana z baterii słonecznej i może jednocześnie zasilać Pico?