Εκτελέστε έναν διακομιστή ιστού στο Raspberry Pi Pico W
Αυτό το πρόγραμμα μπορεί να θεωρηθεί ως το "Hello World!" του Pico W. Επιδεικνύει πώς να συνδεθείτε στο Wi-Fi, πώς να εκτελέσετε έναν διακομιστή ιστού HTTP στο Pico W και πώς να ελέγχετε τις ακίδες GPIO.
Αν ψάχνετε για ένα γρήγορο και εύκολο project για να ξεκινήσετε με το Pico σας, αυτό είναι για εσάς!
Βήματα για να αναβοσβήνετε LED μέσω WiFi στο Pico W
Υπάρχουν τρία κυρίαρχα θέματα για να γίνει αυτό.
Ρύθμιση του MicroPython
Πρώτα, πρέπει να ρυθμίσετε το MicroPython. Κατεβάστε το αρχείο UF2 εδώ που προορίζεται ειδικά για το Pico W.
Κρατήστε πατημένο το κουμπί BOOTSEL και συνδέστε το Pico W μέσω USB.
Μόλις συνδεθεί, αντιγράψτε το αρχείο UF2 που μόλις κατεβάσατε στο Pico.
Χρησιμοποιήστε το Thonny για να προγραμματίσετε το Pico W
Το Thonny διευκολύνει τον προγραμματισμό του Pico W και έρχεται προεγκατεστημένο στο λειτουργικό σύστημα Raspberry Pi. Μπορείτε επίσης να κατεβάστε το για Windows, Mac και Linux εδώ.
Βεβαιωθείτε ότι ο διερμηνέας σας έχει οριστεί σε MicroPython (Raspberry Pi Pico).
Το Thonny θα συνδεθεί με το Raspberry Pi Pico W και μπορείτε να εκτελέσετε εντολές στο κέλυφος (το κάτω τμήμα του Thonny IDE).
Εκτελέστε σάρωση δικτύου για να επιβεβαιώσετε ότι το ασύρματο δίκτυο Pico W λειτουργεί
Στο Shell, μπορείτε να εκτελέσετε αυτόν τον κώδικα για να ελέγξετε αν το ασύρματο τσιπ σας λειτουργεί.
Χρησιμοποιήστε αυτόν τον κωδικό για να εκτυπώσετε όλα τα διαθέσιμα ασύρματα δίκτυα στην περιοχή σας.
import network
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
print(wlan.scan())
Προγραμματίστε τον διακομιστή ιστού
Δημιουργήστε ένα λεξικό με όνομα secrets.py και χρησιμοποιήστε το ακόλουθο περιεχόμενο, αντικαθιστώντας την τιμή για τα ssid και pw με το δίκτυό σας.
secrets = {
'ssid': 'Replace-this-with-your-Wi-Fi-Name',
'pw': 'Replace-this-with-your-Wi-Fi-Password'
}
Στη συνέχεια, δημιουργήστε main.py που θα φιλοξενεί τον κύριο κώδικά σας. Καθώς ο κώδικας είναι πολλές γραμμές, μπορείτε να το βρείτε εδώ στο Github μας.
Δημιουργήστε τη σελίδα HTML που θα σερβιριστεί
Το ακόλουθο αρχείο θα είναι το αρχείο HTML που θα σερβίρεται όταν φορτώνετε τη διεύθυνση IP του Pico W. Αποθηκεύστε το ως index.html
Πρόκειται για μια απλή σελίδα με δύο κουμπιά που σας επιτρέπουν να ενεργοποιείτε και να απενεργοποιείτε τις λυχνίες LED του Pico W.
<!DOCTYPE html>
<html>
<head>
<title>Pico W</title>
</head>
<body>
<h1>Pico W</h1>
<p>Control the onboard LED</p>
<a href=\"?led=on\"><button>ON</button></a>
<a href=\"?led=off\"><button>OFF</button></a>
</body>
</html>
Ώρα να τα τρέξετε όλα
Κάντε κλικ στο κουμπί εκτέλεσης στο Thonny, το οποίο είναι ένα πράσινο κουμπί με ένα σύμβολο παιχνιδιού.
Θα δείτε τη διεύθυνση IP του Pico W. Αντιγράψτε την στο πρόγραμμα περιήγησης ιστού που είναι συνδεδεμένο στο ίδιο ασύρματο δίκτυο.
Κάντε κλικ στα κουμπιά και θα πρέπει να δείτε την αλλαγή.
Μπορείτε να βρείτε το Github repo εδώ που έχει όλα τα αρχεία.
Και αν ψάχνετε για περισσότερα έργα που θα σας εμπνεύσουν, τότε δείτε τη σειρά Paragon Projects. εδώ.
Βρέθηκε σφάλμα όταν το δοκιμάζω
%Run -c $EDITOR_CONTENT
Traceback (πιο πρόσφατη κλήση τελευταία):
Αρχείο "", γραμμή 1, σε
ImportError: δεν υπάρχει ενότητα με όνομα 'network'
Γεια σου Pablo - βεβαιωθείτε ότι χρησιμοποιείτε το πιο πρόσφατο αρχείο UF2 για το Pico W (όχι μόνο για το Pico) - το οποίο βρίσκεται εδώ. https://www.raspberrypi.com/documentation/microcontrollers/micropython.html
Η μονάδα δικτύου είναι στάνταρ!
Στη γραμμή 100 χρησιμοποιείτε τη συνάρτηση get_html(). Όταν τρέχω τον κώδικά σας, λαμβάνω ένα σφάλμα 'get_html' isn't defined error.
Η αναζήτηση με τη λειτουργία find επιστρέφει επίσης μια τιμή εάν π.χ. το referrer περιέχει τη συμβολοσειρά 'led=xx'. Έτσι, τόσο το led_on όσο και το led_off παίρνουν ταυτόχρονα θετική τιμή και το LED απενεργοποιείται ξανά, όταν ήταν επιθυμητό να ανάψει. Για να ξεπεραστεί αυτό, η εντολή if πρέπει να επεκταθεί ώστε να ελέγχει για μια μικρή τιμή δείκτη (χρησιμοποίησα το 20 μόνο ως κανόνα):
if (led_on > -1 και led_on -1 και led_off < 20):
Τώρα λειτουργεί όπως αναμενόταν.
J'ai résolu le problème en ajoutant la ligne :
r = r[:50]
avant
led_on = r.find('?led=on')
led_off = r.find('?led=off')
Cela retire les caractères superflus de la requête
Προσπάθησα να σχολιάσω, αλλά κατά κάποιο τρόπο το σχόλιο δεν βγαίνει σωστά...