Εκτελέστε έναν διακομιστή ιστού στο 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.

Κουμπί Pico W Bootsel

Κρατήστε πατημένο το κουμπί BOOTSEL και συνδέστε το Pico W μέσω USB.

Μόλις συνδεθεί, αντιγράψτε το αρχείο UF2 που μόλις κατεβάσατε στο Pico.

Χρησιμοποιήστε το Thonny για να προγραμματίσετε το Pico W

Το Thonny διευκολύνει τον προγραμματισμό του Pico W και έρχεται προεγκατεστημένο στο λειτουργικό σύστημα Raspberry Pi. Μπορείτε επίσης να κατεβάστε το για Windows, Mac και Linux εδώ.

Βεβαιωθείτε ότι ο διερμηνέας σας έχει οριστεί σε MicroPython (Raspberry Pi Pico).

Thonny IDE που εκτελεί Micropython

Το Thonny θα συνδεθεί με το Raspberry Pi Pico W και μπορείτε να εκτελέσετε εντολές στο κέλυφος (το κάτω τμήμα του Thonny IDE).

Εκτελέστε σάρωση δικτύου για να επιβεβαιώσετε ότι το ασύρματο δίκτυο Pico W λειτουργεί

Thonny IDE που εκτελεί σάρωση wlan

Στο 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 που θα σερβιριστεί

Διακομιστής ιστού Pico W

Το ακόλουθο αρχείο θα είναι το αρχείο 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>

Ώρα να τα τρέξετε όλα

Διακομιστής ιστού Pico W

Κάντε κλικ στο κουμπί εκτέλεσης στο Thonny, το οποίο είναι ένα πράσινο κουμπί με ένα σύμβολο παιχνιδιού.

Θα δείτε τη διεύθυνση IP του Pico W. Αντιγράψτε την στο πρόγραμμα περιήγησης ιστού που είναι συνδεδεμένο στο ίδιο ασύρματο δίκτυο.

Κάντε κλικ στα κουμπιά και θα πρέπει να δείτε την αλλαγή.

Μπορείτε να βρείτε το Github repo εδώ που έχει όλα τα αρχεία.

Το μας Το βίντεο στο YouTube για αυτό το έργο πηγαίνει επίσης σε βαθύτερες λεπτομέρειες, όπως η εξήγηση του κώδικα..

Και αν ψάχνετε για περισσότερα έργα που θα σας εμπνεύσουν, τότε δείτε τη σειρά Paragon Projects. εδώ.

5 Σχόλια

  1. Pablo στις Ιούλιος 13, 2022 στις 4:31 μμ

    Βρέθηκε σφάλμα όταν το δοκιμάζω

    %Run -c $EDITOR_CONTENT
    Traceback (πιο πρόσφατη κλήση τελευταία):
    Αρχείο "", γραμμή 1, σε
    ImportError: δεν υπάρχει ενότητα με όνομα 'network'

  2. Charles στις Οκτώβριος 25, 2022 στις 8:51 μμ

    Στη γραμμή 100 χρησιμοποιείτε τη συνάρτηση get_html(). Όταν τρέχω τον κώδικά σας, λαμβάνω ένα σφάλμα 'get_html' isn't defined error.

  3. Gunther στις Νοέμβριος 28, 2022 στις 12:51 πμ

    Η αναζήτηση με τη λειτουργία find επιστρέφει επίσης μια τιμή εάν π.χ. το referrer περιέχει τη συμβολοσειρά 'led=xx'. Έτσι, τόσο το led_on όσο και το led_off παίρνουν ταυτόχρονα θετική τιμή και το LED απενεργοποιείται ξανά, όταν ήταν επιθυμητό να ανάψει. Για να ξεπεραστεί αυτό, η εντολή if πρέπει να επεκταθεί ώστε να ελέγχει για μια μικρή τιμή δείκτη (χρησιμοποίησα το 20 μόνο ως κανόνα):

    if (led_on > -1 και led_on -1 και led_off < 20):
    Τώρα λειτουργεί όπως αναμενόταν.

  4. Gunther στις Νοέμβριος 28, 2022 στις 12:53 πμ

    Προσπάθησα να σχολιάσω, αλλά κατά κάποιο τρόπο το σχόλιο δεν βγαίνει σωστά...

Αφήστε ένα σχόλιο