Απομακρυσμένος μετεωρολογικός σταθμός Raspberry Pi Pico W (με ηλιακή τροφοδοσία)
Ένα πολύ ιδιαίτερο χαρακτηριστικό του Raspberry Pi Pico W είναι η λειτουργία SoftAP.
Το SoftAP σημαίνει σημείο πρόσβασης με δυνατότητα χρήσης λογισμικού, το οποίο σας επιτρέπει να μεταδίδετε ένα δίκτυο WiFi απευθείας από το Raspberry Pi Pico W.
Αυτός είναι ο λόγος για τον οποίο επιλέξαμε να κάνουμε αυτό το έργο που λειτουργεί με ηλιακή ενέργεια.
Πώς ένα ηλιακό έργο διασταυρώνεται με το SoftAP
Το θέμα είναι το εξής.
Αν θέλατε να δημιουργήσετε ένα έργο που να μετρά δεδομένα μακριά από το σπίτι σας, θα διαπιστώσετε ότι δεν θα μπορείτε να λάβετε αυτά τα δεδομένα ασύρματα.
Θα μπορούσατε κάλλιστα να χρησιμοποιήσετε το κανονικό Pico σε αυτό το σενάριο, αφού δεν θα μπορείτε να χρησιμοποιήσετε την ασύρματη ικανότητά του.
Ένα έργο που λειτουργεί με ηλιακή ενέργεια είναι πιθανώς ένα από αυτά, δεδομένου ότι πρέπει να το τοποθετήσετε σε μια ηλιόλουστη περιοχή, η οποία συνήθως είναι υπαίθρια.
Σε αυτό το σημείο έρχεται το SoftAP. Ας πούμε ότι θέλετε να μάθετε πώς είναι ο καιρός έξω. Στη συνέχεια, συνδέεστε στο SoftAP που εκπέμπει το Raspberry Pi Pico W και στη συνέχεια συνδέεστε στη διεύθυνση IP που εμφανίζει τα δεδομένα.
Αυτό είναι λίγο πολύ το καλύτερο σενάριο για το πώς μπορούμε να εκμεταλλευτούμε τα πλεονεκτήματα του Raspberry Pi Pico W.
Θέλω να πω, είναι δυνατόν να αγοράσετε ένα πρόσθετο LTE ή ένα πρόσθετο ασύρματο σύστημα μεγάλης εμβέλειας, αλλά τότε δεν θα ήταν πραγματικά ένα σεμινάριο Pico W, αφού θα μπορούσατε να χρησιμοποιήσετε αυτά τα εξαρτήματα στο κανονικό Pico.
Τι γίνεται με το Bluetooth στο Raspberry Pi Pico W;
Θα ήταν υπέροχο αν μπορούσατε να χρησιμοποιήσετε το Bluetooth, αλλά από την ημερομηνία δημοσίευσης αυτού του σεμιναρίου, το Bluetooth δεν είναι ενεργοποιημένο στο Raspberry Pi Pico W.
Την 1η Ιουλίου 2022, ο μηχανικός του Raspberry Pi και συντονιστής του φόρουμ jamesh δήλωσε ότι: "Έχουμε ήδη αρχίσει να δουλεύουμε το λογισμικό για το BT, δεν μπορώ να προσφέρω ακόμα χρονοδιάγραμμα. Το λογισμικό πρέπει να γραφτεί δοκιμασμένο, και να γραφτούν εκπαιδευτικά σεμινάρια".
Ανταλλακτικά
- Raspberry Pi Pico W
- Ηλιακό πάνελ 6V
- TP4056 Μονάδα φόρτισης USB-C
- Μπαταρία Li-Ion NR18650 3.6V
- BME688 Breakout Board
- Υποδοχή μπαταρίας για τύπο 18650
- Δίοδος Schottky
- Κεφαλίδες για το Pico W και το BME688
- Breadboard
Ενημερώστε το υλικολογισμικό του Raspberry Pi Pico W
Το υλικολογισμικό του Raspberry Pi Pico W εξακολουθεί να εξελίσσεται συνεχώς, οπότε θα ήταν καλύτερο να χρησιμοποιείτε το πιο πρόσφατο υλικολογισμικό. Για παράδειγμα, το πρώτο δημόσιο MicroPython UF2 για το Pico W έχει κάποια προβλήματα με την ασφάλεια, καθώς τα δίκτυα είναι πάντα ανοιχτά.
Ακολουθήστε αυτόν τον σύνδεσμο για να μάθετε πώς να το ενημερώσετε. Ο σύνδεσμος θα σας δείξει επίσης μια μέθοδο γρήγορης εκκίνησης για τη μετάδοση του δικού σας δικτύου WiFi.
Ηλιακή εγκατάσταση
Ο ηλιακός συλλέκτης θα πρέπει να παράγει τουλάχιστον 6 βολτ και 150mA.
Η μπαταρία θα πρέπει να είναι μπαταρία λιθίου σειράς 18650 με ονομαστική τάση 3,7V.
Η μονάδα TP4056 θα προστατεύει την μπαταρία και θα τροφοδοτεί το Pico W.
Συσκευή παρακολούθησης καιρού
Για αυτό το έργο, χρησιμοποιούμε το Πλακέτα διάσπασης BME688 σχεδιασμένη στο σπίτι.
Μπορείτε να χρησιμοποιήσετε οποιονδήποτε αισθητήρα καιρού, όπως ένα DHT11 ή DHT22, αλλά ο κώδικας και η καλωδίωση αυτού του άρθρου προορίζονται πραγματικά για ένα BME688.
Καλωδίωση
Τοποθετήστε το Pico W και το BME688 σε μια πλακέτα ψεκασμού.
Υπάρχουν τέσσερις ακίδες που πρέπει να συνδέσετε: 3.3V, GND, SCL και SDA στο BME688.
Εδώ είναι αυτά που χρησιμοποιήσαμε:
Pico W's GP1 συνδέεται με SCL;
GP0 συνδέεται με SDA;
GND συνδέεται με GND;
Αυτοί οι τρεις ακροδέκτες θα πρέπει να βρίσκονται σε ευθεία γραμμή, δίπλα στην υποδοχή micro-USB.
3V3 συνδέεται με 3V3, το οποίο βρίσκεται στην άλλη πλευρά του πίνακα.
TP4056 Μονάδα φόρτισης USB-C
Θα χρειαστεί να κολλήσετε καλώδια στο TP4056.
Είναι καλή πρακτική να συγκολλάτε καλώδια κόκκινου χρώματος στις θετικές συνδέσεις και μαύρα στις αρνητικές.
Οι ακίδες που βρίσκονται δίπλα από την υποδοχή USB-C είναι για μια εξωτερική σύνδεση τροφοδοσίας, όπως η ηλιακή μονάδα μας.
Συνδέστε αυτούς τους ακροδέκτες στον ηλιακό σας πίνακα.
Από την άλλη πλευρά, υπάρχουν ακίδες που προορίζονται για την έξοδο ισχύος. Οι ακίδες με την ένδειξη B+ και B- πρέπει να συνδεθούν με την μπαταρία.
Αποφασίσαμε να χρησιμοποιήσουμε σφιγκτήρες για να συνδέσουμε τη θήκη της μπαταρίας μας με το TP4056 σε περίπτωση που χρειαστεί να αλλάξουμε το κύκλωμα, αλλά μπορείτε να κολλήσετε τη θήκη της μπαταρίας απευθείας στο TP4056 αν θέλετε.
Δίοδος Schottky
Συνδέστε μια δίοδο Schottky στον ακροδέκτη VSYS του Pico W.
Βεβαιωθείτε ότι ο γκρίζος δακτύλιος της διόδου είναι στραμμένος προς το Pico W και ότι το άλλο άκρο είναι συνδεδεμένο στη θετική ράγα της πλακέτας ψωμιού.
Δεδομένου ότι τροφοδοτούμε το Pico με δύο εισόδους τροφοδοσίας, USB και το ηλιακό σύστημα, πρέπει να χρησιμοποιήσουμε μια δίοδο Schottky.
Δίοδος Schottky αποτρέπει την αντίστροφη τροφοδοσία και σας επιτρέπει να τρέχετε δύο τάσεις. Μάθετε περισσότερα εδώ.
Συνδέστε το TP4056 στο breadboard
Συνδέστε τη θετική έξοδο από το TP4056 στη θετική ράγα του breadboard, όπου βρίσκεται η δίοδος Schottky.
Στη συνέχεια, συνδέστε την αρνητική έξοδο από το TP4056 σε έναν αρνητικό ακροδέκτη του Raspberry Pi Pico W.
Κώδικας για τη λειτουργία του μετεωρολογικού σταθμού Raspberry Pi Pico W
Έχουμε ανεβάσει όλο τον κώδικά μας στο Github repo εδώ.
Εδώ είναι έναν οδηγό για το πώς να ανεβάζετε αρχεία στο Pico W.
Αν έχετε συνδέσει τα εξαρτήματα όπως γράφτηκε παραπάνω, θα μπορείτε να εκτελέσετε τον κώδικα χωρίς καμία αλλαγή.
Τούτου λεχθέντος, εδώ είναι μερικά πράγματα που μπορεί να θέλετε να αλλάξετε.
bme68x.py
Αυτό το σενάριο τροποποιεί την έξοδο του BME688.
Για να λάβετε ακριβείς ενδείξεις θερμοκρασίας και υψομέτρου, θα πρέπει να τροποποιήσετε αυτές τις γραμμές, οι οποίες επισημαίνονται με έντονη γραφή:
# 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
Το αρχείο main.py εκκινεί ένα σημείο πρόσβασης και εκτελεί επίσης έναν διακομιστή που παραδίδει ένα αρχείο HTML σε όποιον συνδέεται.
Στο αρχείο HTML μπορείτε να δείτε τις ενδείξεις από το BME688.
Μόλις λάβει μια σύνδεση (μέσω sockets), το Pico W θα στείλει το αρχείο index.html, αλλά πριν το στείλει, θα αντικαταστήσει κάποιες συμβολοσειρές με τα δεδομένα που λαμβάνονται από το BME688, μέσω αυτού του μπλοκ κώδικα:
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()
Όπως μπορείτε να δείτε, η γραμμή όπου λέει data = sensor.save_data('data.json') λαμβάνουμε τα δεδομένα του αισθητήρα και στη συνέχεια ο κώδικας τροποποιεί το αρχείο HTML με τις σωστές ενδείξεις για τη θερμοκρασία, την πίεση, το υψόμετρο, την υγρασία και την αγωγιμότητα των αερίων.
Υπάρχει αυτόματη ανανέωση κάθε τρία δευτερόλεπτα.
Ακολουθεί το τμήμα κώδικα που απαιτείται για τη μετάδοση του σημείου πρόσβασης στο 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)
Σημείωση: αν χρησιμοποιείτε το αρχικό υλικολογισμικό, θα πρέπει να το ενημερώσετε, διαφορετικά δεν θα μπορείτε να μετονομάσετε το SSID ή να έχετε ασύρματη ασφάλεια. Το δοκιμάσαμε στο νυχτερινό build της 15ης Ιουλίου 2022 και τελικά λειτούργησε. Υπάρχουν μερικές ακόμα ιδιορρυθμίες και σφάλματα, γι' αυτό φροντίστε να διαβάσετε την περιήγησή μας εδώ.
Σύνδεση στο σημείο πρόσβασης Pico W
Μετά την επιτυχή μετάδοση του AP, το Pico W θα αναβοσβήσει τρεις φορές με τον κωδικό που παρέχεται.
Συνδεθείτε στο AP σας, το οποίο θα πρέπει να ονομάζεται Pico-W-Weather-Station.
Πληκτρολογήστε τον κωδικό πρόσβασης #FreeThePicoW
Συνδεθείτε στο Pico χρησιμοποιώντας τη διεύθυνση IP. Αν το τρέξατε από το Thonny, θα δείτε τη διεύθυνση IP στο κέλυφος.
Διαφορετικά, μπορείτε να δοκιμάσετε 192.168.4.1 καθώς αυτή είναι συνήθως η διεύθυνση IP του Pico W και θα πρέπει να δείτε το στιγμιότυπο οθόνης στα δεξιά:
Τελείωσες
Σε αυτό το έργο, μάθατε πώς να μεταδίδετε ένα δίκτυο από τη λειτουργία SoftAP του Raspberry Pi Pico W. Μάθατε επίσης πώς να συνδέετε ένα ηλιακό πάνελ και μια μπαταρία στο Pico W.
Αν θέλετε να μάθετε περισσότερα για το Pico W, γιατί να μην διαβάσετε το τεράστιο άρθρο μας εδώ;
ΚΛΙΚ ΕΔΩ: Όλα όσα πρέπει να γνωρίζετε για το Raspberry Pi Pico W
Οι προδιαγραφές του TP4056 λένε να κρατήσετε την τάση εισόδου σε 5,5 ή 6V, ο ηλιακός συλλέκτης των 6V μπορεί να δώσει 6V και πιθανώς 7V+ σε ορισμένες περιπτώσεις. Έχω μπερδευτεί σχετικά με αυτό το τέλος. Θα μπορούσατε να μου το διευκρινίσετε;
Ευχαριστώ!
Έχω κάνει αυτό το έργο και είχα εξαιρετικά αποτελέσματα πολύ ακριβείς μετρήσεις. Αλλά έχω διαπιστώσει ένα πρόβλημα που τρέχει μόνο για περίπου 10 2 15 λεπτά και μετά σταματάει. Έχω διαπιστώσει ότι αν διαγράψω το αρχείο json είναι ο μόνος τρόπος για να το επαναφέρω και πάλι σε λειτουργία.
Υπάρχει τρόπος να σταματήσει να τα αποθηκεύει και να στέλνει μόνο δεδομένα
Πρέπει να πω ότι καλή δουλειά, συνεχίστε να τις έχετε, πλζ👍
Στο αρχείο bme68x.py η μέθοδος save_data συνεχίζει να προσθέτει γραμμές στο αρχείο Jason. Κάποια στιγμή πρέπει να γίνεται πολύ μεγάλο. Μπορείτε να τροποποιήσετε ώστε να κρατάτε μόνο τις τελευταίες x γραμμές της data_list πριν αποθηκεύσετε το αρχείο. θα πρέπει να υπολογίσετε το ιδανικό x. Θα μπορούσατε επίσης να κρατήσετε μόνο την τρέχουσα μέτρηση. Με αυτόν τον τρόπο το αρχείο θα παραμείνει αρκετά μικρό.
Μετά από 4.104 χαρακτήρες το 'data.json' γεμίζει τη μνήμη του μικροσκοπικού pico .-/
Το ερώτημα είναι: Πώς να το περιορίσετε αυτό για να φτάσει το παραπάνω έργο σε ένα λειτουργικό τέλος;
Ένα παράδειγμα / προσθήκη κώδικα (ως ενημέρωση) θα εκτιμηθεί ιδιαίτερα!
TiA - και συνεχίστε την καλή δουλειά....
ΥΓ: ένα αντίστοιχο Issue στο GitHub Repo δημοσιεύτηκε επίσης.
Η χρήση του TP 4056 για ένα τέτοιο έργο δεν αποτελεί αποτελεσματική λύση, βλ:
https://www.best-microcontroller-projects.com/tp4056.html
Ο εποικοδομητικός σχεδιασμός μπορεί να χρησιμοποιεί έναν διακόπτη MPTT Set Switch, όπως το Waveshare,
Περιγραφή εδώ:
https://www.waveshare.com/solar-power-manager.htm
Στην υγειά μας!
Υπέροχη ιδέα για το έργο! Σχεδίασε κανείς μια τρισδιάστατη εκτυπωμένη θήκη για αυτό που θέλει να μοιραστεί;
Γεια σας,
σας ευχαριστώ για το εγχειρίδιο.
Σύμφωνα με τις προδιαγραφές TP4056 LED-Anzeige Rot: (Ladevorgang), LED-Anzeige Blau: (Standby, Ladevorgang abgeschlossen)
Στην περίπτωσή μου έχω και τις δύο λυχνίες LED On στο TP4056 όταν ο ηλιακός συλλέκτης τοποθετείται κάτω από άμεσο φως. Είναι αυτό το προβλεπόμενο;
Είναι δυνατόν, ότι η μπαταρία μπορεί να φορτιστεί από την ηλιακή ενέργεια και μπορεί να παρέχει ρεύμα στο Pico ταυτόχρονα;