MicroPython IoT Rover Βασισμένο στο WEMOS D1 (ESP-8266EX): 7 βήματα (με εικόνες)
MicroPython IoT Rover Βασισμένο στο WEMOS D1 (ESP-8266EX): 7 βήματα (με εικόνες)
Anonim
Image
Image
MicroPython IoT Rover Βασισμένο στο WEMOS D1 (ESP-8266EX)
MicroPython IoT Rover Βασισμένο στο WEMOS D1 (ESP-8266EX)

** Ενημέρωση: Δημοσίευσα ένα νέο βίντεο για το v2 με λόγχη **

Φιλοξενώ εργαστήρια ρομποτικής για μικρά παιδιά και πάντα αναζητώ οικονομικές πλατφόρμες για να δημιουργήσω ενδιαφέροντα έργα. Ενώ οι κλώνοι Arduino είναι φθηνοί, χρησιμοποιεί τη γλώσσα C/C ++ που δεν γνωρίζουν τα παιδιά. Επίσης, δεν διαθέτει ενσωματωμένο WiFi που είναι απαραίτητο για έργα IoT. Από την άλλη πλευρά, ενώ το Raspberry Pi διαθέτει WIFI και τα παιδιά μπορούν να το προγραμματίσουν χρησιμοποιώντας Python, εξακολουθεί να είναι μια ακριβή πλατφόρμα για τον έλεγχο λίγων λιμένων GPIO για ενεργοποίηση και απενεργοποίηση συσκευών. Χρειάζομαι κάτι ενδιάμεσο που να έχει δυνατότητες WIFI και Python. Φαίνεται ότι βρήκα την απάντησή μου στο MicroPython που έπεσε πάνω σε έναν φτηνό πίνακα που βασίζεται σε ESP8266.

Τι είναι το Micropython;

Σύμφωνα με τον ιστότοπό του, το MicroPython είναι μια άπαχη και αποτελεσματική εφαρμογή των γλωσσών προγραμματισμού Python 3 που περιλαμβάνει ένα μικρό υποσύνολο της τυπικής βιβλιοθήκης Python και είναι βελτιστοποιημένη για να λειτουργεί σε μικροελεγκτές και σε περιορισμένο περιβάλλον (όπως το ESP8266). Είναι ουσιαστικά Python IDE σε ένα τσιπ. Ένα σημαντικό πλεονέκτημα είναι ότι μπορείτε να δημιουργήσετε κώδικα και να τον αλλάξετε εν κινήσει χρησιμοποιώντας ένα πρόγραμμα περιήγησης ιστού που ονομάζεται Webrepl. (Προσπαθήστε να το κάνετε αυτό στο Arduino.) Μπορείτε επίσης να δείτε δεδομένα αισθητήρων σε πραγματικό χρόνο στο Webrepl αντί να βασίζεστε στην καταγραφή δεδομένων ή σε μια οθόνη LED στο Arduino.

Τι είναι το ESP8266;

Εν ολίγοις, σκεφτείτε το ως Arduino με ενσωματωμένη δυνατότητα δικτύου. Μπορείτε να χρησιμοποιήσετε το Arduino IDE για να προγραμματίσετε πίνακες ESP8266 σε C/C ++ ή να τον αναβοσβήσετε με NodeMCU ή MicroPython. Σε αυτό το έργο, θα αναβοσβήνω το MicroPython σε έναν πίνακα ESP8266.

Αποφάσισα να πάρω ένα WEMOS D1 που βασίζεται στο ESP8266-12EX για αυτό το απλό έργο όπου θα πλοηγηθώ σε ένα αυτοκίνητο 2WD χρησιμοποιώντας ένα πρόγραμμα περιήγησης ιστού. Υπάρχουν άλλοι πίνακες που έχουν σχεδιαστεί για το MicroPython αλλά ήθελα κάτι φτηνό που θα μπορούσα να το πετάξω αν δεν πληρούσε τα κριτήριά μου. Όπως ήταν αναμενόμενο, πληρούσε όλες τις απαιτήσεις μου και πιθανότατα θα ενσωματώσω το WeMos και το Micropython σε μελλοντικά έργα.

Βήμα 1: Μέρη

Ανταλλακτικά
Ανταλλακτικά
Ανταλλακτικά
Ανταλλακτικά
Ανταλλακτικά
Ανταλλακτικά
Ανταλλακτικά
Ανταλλακτικά
  • Wemos D1 ή οποιαδήποτε πλακέτα με βάση ESP8266
  • Ασπίδα κινητήρα (χρησιμοποιώ ένα φθηνό L293D από το AliExpress)
  • Υποδοχές μπαταρίας για 4 x AA και 9V (4 x μπαταρίες AA είναι για κινητήρες και 9V για την πλακέτα Wemos)
  • Πλαίσιο αυτοκινήτου 2WD
  • Καλώδια Dupont

Μπορεί να χρειαστεί ένα κολλητήρι, ένα κατσαβίδι και ένα πιστόλι κόλλας για να τα συνδυάσετε όλα.

Βήμα 2: Συναρμολόγηση υλικού

Συναρμολόγηση υλικού
Συναρμολόγηση υλικού
Συναρμολόγηση υλικού
Συναρμολόγηση υλικού
Συναρμολόγηση υλικού
Συναρμολόγηση υλικού

Αρχικά, συναρμολογήστε το πλαίσιο σύμφωνα με τις οδηγίες.

Στη συνέχεια, κολλήστε ζεστά άλλα εξαρτήματα όπως φαίνεται.

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

Τοποθετήθηκε ένας μικρός διακόπτης στη θήκη μπαταρίας 4AA. Αυτό θα ενεργοποιήσει/απενεργοποιήσει την τροφοδοσία του κινητήρα.

Βήμα 3: Καλωδίωση

Καλωδίωση
Καλωδίωση
Καλωδίωση
Καλωδίωση
Καλωδίωση
Καλωδίωση

Ακολουθήστε το διάγραμμα καλωδίωσης όπως φαίνεται.

Wemos to Motor Shield:

D1 IN2

D2 IN1 D3 IN4 ** παραλείψτε D4 D5 IN3 GND -> GND

Motor Shield to Motor/Power:

Ένα τερματικό -> Αριστερό μοτέρ

Β τερματικό -> Δεξιό μοτέρ VCC -> Μπαταρία (+) GND -> Μπαταρία (-)

Βήμα 4: Εγκατάσταση MicroPython

Πρώτον, το Wemos διαθέτει σειριακό/τσιπ USB βασισμένο στο CH304G. Αυτό είναι το ίδιο τσιπ που βρίσκεται σε φθηνούς κλώνους Arduino και πρέπει να εγκαταστήσετε ένα κατάλληλο πρόγραμμα οδήγησης για Mac ή PC. Ακολουθήστε τις οδηγίες σε αυτόν τον ιστότοπο για να εγκαταστήσετε το πρόγραμμα οδήγησης.

Συνδέστε το Wemos στον υπολογιστή σας και επιβεβαιώστε ότι ο υπολογιστής σας θα μπορούσε να εντοπίσει το Wemos. Σε Mac, εκτελέστε την ακόλουθη εντολή και θα δείτε μια συσκευή που ονομάζεται /dev/tty.wchusbserial640.

$ ls -lt /dev /tty* | κεφάλι

crw-rw-rw- 1 τροχός ρίζας 17, 4 Μαρτίου 2 23:31 /dev/tty.wchusbserial640

Εάν χρησιμοποιείτε υπολογιστή, μπορείτε να χρησιμοποιήσετε αυτό το Instructable ως αναφορά.

Στη συνέχεια, θα χρειαστεί να ρυθμίσετε το Python 2 ή 3 στον υπολογιστή σας, καθώς το εργαλείο flash, esptool.py, βασίζεται στην Python. Ενώ ο οδηγός MicroPython μπορεί να δηλώνει ότι το εργαλείο λειτουργεί μόνο με Python 2.7, ήμουν σε θέση να το εκτελέσω στο Python 3 χωρίς προβλήματα. Κάντε λήψη της πιο πρόσφατης Python από τη διεύθυνση https://www.python.org και ακολουθήστε τις οδηγίες εγκατάστασης για τον υπολογιστή ή το Mac σας.

Τέλος, θα χρειαστεί να εγκαταστήσετε το MicroPython στο Wemos. Ο ιστότοπος MicroPython διαθέτει ένα εξαιρετικό σεμινάριο για τον τρόπο ρύθμισης του MicroPython στο ESP8266. Απλώς ακολουθήστε τις οδηγίες εγκατάστασης στην ενότητα Ξεκινώντας με το MicroPython στο ESP8266.

Παρακάτω είναι οι εντολές που χρησιμοποίησα:

$ esptool.py --port /dev/tty.wchusbserial640 erase_flash

esptool.py v1.3 Σύνδεση…. Εκτέλεση στέλεχος φλας Cesanta… Διαγραφή φλας (αυτό μπορεί να διαρκέσει λίγο)… Η διαγραφή πήρε 10,5 δευτερόλεπτο

$ esptool.py --port /dev/tty.wchusbserial640 write_flash -fm dio -fs 32m -ff 40m 0x00000 esp8266-20170108 -v1.8.7.bin

esptool.py v1.3 Σύνδεση…. Εκτέλεση στέλεχος λάμψης Cesanta… Τα παράθυρα φλας που έχουν οριστεί σε 0x0240 Έγραψαν 589824 byte στα 0x0 σε 50,8 δευτερόλεπτα (92,8 kbit/s)… Φεύγοντας…

Το MicroPython είναι πλέον εγκατεστημένο στον πίνακα σας!

Βήμα 5: Ρύθμιση δικτύου

Ρύθμιση δικτύου
Ρύθμιση δικτύου

Ενώ το MicroPython είναι τώρα εγκατεστημένο στο Wemos σας, δεν είναι ακόμα συνδεδεμένο στο δίκτυό σας. Θα πρέπει πρώτα να ενεργοποιήσετε το δίκτυο. Σε Mac, εκτελέστε την εντολή SCREEN για να ξεκινήσει η σειριακή τερματική συνεδρία στο Wemos.

$ screen /dev/tty.wchusbserial640 115200

Όταν δείτε μια κενή οθόνη, πατήστε ΕΠΙΣΤΡΟΦΗ για να δείτε μια προτροπή:

>>

(Σημείωση: Για έξοδο, πληκτρολογήστε CTRL-A CTRL-)

Τώρα, ας ενεργοποιήσουμε την πρόσβαση σε webclient. Πληκτρολογήστε "εισαγωγή webrepl_setup" για να εκτελέσετε το πρόγραμμα εγκατάστασης. Πληκτρολογήστε E για να ενεργοποιήσετε το WebREPL και, στη συνέχεια, ορίστε τον κωδικό πρόσβασης. Επανεκκινήστε για να ενεργοποιήσετε τις αλλαγές.

>> εισαγωγή webrepl_setup

Κατάσταση αυτόματης εκκίνησης του δαίμονα WebREPL: απενεργοποιημένο Θα θέλατε (Ε) να ενεργοποιήσετε ή (Δ) να το ενεργοποιήσετε για εκκίνηση; (Κενή γραμμή για διακοπή)> E Για να ενεργοποιήσετε το WebREPL, πρέπει να ορίσετε κωδικό πρόσβασης για αυτόν Νέος κωδικός πρόσβασης: xxxxx Επιβεβαίωση κωδικού πρόσβασης: xxxxx Οι αλλαγές θα ενεργοποιηθούν μετά την επανεκκίνηση Θέλετε να κάνετε επανεκκίνηση τώρα; (y/n) y

Τέλος, κατεβάστε το πρόγραμμα -πελάτη Webrepl στο μηχάνημά σας. Αυτό είναι προαιρετικό, αλλά ο πελάτης έρχεται με άλλα χρήσιμα εργαλεία που μπορεί να θέλετε να χρησιμοποιήσετε αργότερα. Για παράδειγμα, το webrepl_cli.py είναι μια εντολή για αντιγραφή αρχείων στο Wemos σε σύνταξη τύπου scp. Χρησιμοποιήστε το git για λήψη του προγράμματος -πελάτη. (Εγκαταστήστε το εργαλείο git αν δεν το έχετε ακόμα.)

git clone

Ανοίξτε το πρόγραμμα περιήγησης ιστού και στο πεδίο URL, εισαγάγετε τη θέση της τοποθεσίας αρχείου του προγράμματος -πελάτη που κατεβάσατε, όπως:

αρχείο: ///Users/xxxxx/wemos/webrepl/webrepl.html

Αυτό θα πρέπει να εμφανίζει το πρόγραμμα -πελάτη webrepl στο πρόγραμμα περιήγησής σας. Για να μπορέσετε να συνδεθείτε σε αυτό, πρέπει πρώτα να συνδεθείτε στο WIFi Access Point. Αν κοιτάξετε το διαθέσιμο WIFI για τον υπολογιστή σας, θα δείτε ότι ένα δίκτυο ξεκινά με MicroPython-xxxx. Συνδεθείτε σε αυτό το δίκτυο. (Προειδοποίηση: Μόλις συνδεθείτε σε αυτό το δίκτυο, θα χάσετε την πρόσβασή σας στο Διαδίκτυο.)

Επιστρέψτε στον πελάτη webrepl και κάντε κλικ στο Σύνδεση. Θα πρέπει να ζητήσει κωδικό πρόσβασης. Εισαγάγετε τον κωδικό πρόσβασης Wemos και πρέπει να συνδεθείτε.

Καλώς ήλθατε στο MicroPython!

Κωδικός πρόσβασης: WebREPL συνδεδεμένος >>>

Το Wemos σας εξακολουθεί να λειτουργεί σε λειτουργία AccessPoint. Παρόλο που αυτό είναι εντάξει, προτιμώ να λειτουργεί σε Λειτουργία σταθμού όπου συνδέεται με το WIFI του σπιτιού μου, έτσι ώστε ο υπολογιστής μου να μπορεί να έχει πρόσβαση μέσω του οικιακού WIFI και να εξακολουθεί να έχει πρόσβαση στο Διαδίκτυο. Για να το κάνετε αυτό, θα πρέπει να δημιουργήσετε ένα αρχείο που ονομάζεται boot.py με διαμόρφωση δικτύου και να το ανεβάσετε στο Wemos.

Εδώ είναι ένα δείγμα boot.py. Αλλάξτε το ssid και τον κωδικό πρόσβασης στο οικιακό σας δίκτυο WIFI. Επίσης, θέλω να του δώσω μια στατική IP 192.168.0.32. Αλλάξτε το στη διαθέσιμη διεύθυνση IP WIFI του σπιτιού σας.

boot.py (μπορείτε να το κατεβάσετε από κάτω)

εισαγωγή gc

εισαγωγή webrepl def do_connect (): εισαγωγή δικτύου sta_if = network. WLAN (network. STA_IF) αν όχι sta_if.isconnected (): print ('Connect to network…') sta_if.active (True) sta_if.ifconfig (('192.168. 0.32 ',' 255.255.255.0 ',' 192.168.0.1 ',' 192.168.0.1 ')) sta_if.connect (' ',' ') ενώ δεν sta_if.isconnected (): pass print (' network config: ', sta_if.ifconfig ()) do_connect () webrepl.start () gc.collect ()

Χρησιμοποιήστε τη φόρμα πελάτη Webrepl "Αποστολή αρχείου" για να στείλετε το αρχείο boot.py στο Wemos σας. Πατήστε το κουμπί επαναφοράς για επανεκκίνηση. Εάν εξακολουθείτε να είστε συνδεδεμένοι μέσω USB χρησιμοποιώντας την εντολή SCREEN, θα δείτε:

σύνδεση στο δίκτυο… διαμόρφωση δικτύου: ('192.168.0.32', '255.255.255.0', '192.168.0.1', '192.168.0.1') Ο δαίμονας WebREPL ξεκίνησε στις ws: //192.168.4.1: 8266 Δαίμονας WebREPL που ξεκίνησε σε ws: //192.168.0.32: 8266 Η εκκίνηση του webrepl σε κανονική λειτουργία δεν μπόρεσε να ανοίξει το αρχείο «main.py» για ανάγνωση του MicroPython v1.8.7-7-gb5a1a20a3 στις 2017-01-09. Ενότητα ESP με ESP8266 Πληκτρολογήστε "help ()" για περισσότερες πληροφορίες. >>>

Αυτό επιβεβαιώνει ότι το Wemos σας είναι συνδεδεμένο στο WIFI του σπιτιού σας χρησιμοποιώντας τη διεύθυνση ipaddress του 192.168.0.32.

Μπορείτε να κάνετε ping σε αυτήν τη διεύθυνση IP για επικύρωση.

$ ping 192.168.0.32

PING 192.168.0.32 (192.168.0.32): 56 byte δεδομένων

64 byte από 192.168.0.32: icmp_seq = 0 ttl = 255 time = 9.334 ms 64 bytes από 192.168.0.32: icmp_seq = 1 ttl = 255 time = 11.071 ms..

Βήμα 6: Εγκατάσταση κύριου προγράμματος

Εγκατάσταση κύριου προγράμματος
Εγκατάσταση κύριου προγράμματος
Εγκατάσταση κύριου προγράμματος
Εγκατάσταση κύριου προγράμματος

Τέλος, θα χρειαστεί να εγκαταστήσετε το κύριο πρόγραμμα που θα συνεχίσει να εκτελείται στο Wemos σας.

Επιστρέψτε στο πρόγραμμα περιήγησης ιστού και εκτελέστε το πρόγραμμα -πελάτη webrepl. Αλλάξτε τη διεύθυνση IP στη διεύθυνση IP του Wemos. Στην περίπτωσή μου, τώρα είναι 192.168.0.32. Εισαγάγετε τον κωδικό πρόσβασης Wemos και θα πρέπει τώρα να είστε συνδεδεμένοι στο Wemos.

Ας ανεβάσουμε το συνημμένο πρόγραμμα main.py. Κατεβάστε το συνημμένο αρχείο στον υπολογιστή σας. Κάντε κλικ στο Επιλογή αρχείου για να επιλέξετε το κατεβασμένο main.py και και κάντε κλικ στο Αποστολή στη συσκευή.

Θα χρειαστεί να πατήσετε το κουμπί Rest για να φορτώσετε το πρόγραμμα main.py. Αφού πατήσετε το κουμπί Επαναφορά, θα δείτε:

σύνδεση στο δίκτυο…

διαμόρφωση δικτύου: ('192.168.0.32', '255.255.255.0', '192.168.0.1', '192.168.0.1')

Ο δαίμονας WebREPL ξεκίνησε στο ws: //192.168.4.1: 8266 Ο δαίμονας WebREPL ξεκίνησε στο ws: //192.168.0.32: 8266 Ξεκίνησε την αναπαραγωγή ιστού σε κανονική λειτουργία Ακούγοντας, συνδέστε το πρόγραμμα περιήγησής σας σε…

Αυτό σημαίνει ότι το πρόγραμμα main.py είναι ενεργοποιημένο και εμφανίζεται στη θύρα 80.

Για δοκιμή, ανοίξτε το πρόγραμμα περιήγησης ιστού και εισαγάγετε

Αυτό θα πρέπει να εμφανίζει την οθόνη ελέγχου του αυτοκινήτου όπως φαίνεται στο βίντεο. Εάν τα καλώδια σας είναι σωστά συνδεδεμένα, τα κουμπιά ελέγχου θα στείλουν τα κατάλληλα σήματα στις θύρες GPIO για να μετακινήσετε το αυτοκίνητο.

Βήμα 7: Μελλοντικές βελτιώσεις

Τα ακόλουθα στοιχεία υποχρεώσεων είναι στη λίστα μου v2:

  • Χρησιμοποιήστε το PWM για να ελέγξετε την ταχύτητα του κινητήρα
  • Βελτίωση διεπαφής ιστού. Perhapsσως χρησιμοποιήστε ένα πλαίσιο aREST. Δεν πιστεύω ότι το aREST lib είναι διαθέσιμο στο MicroPython αυτή τη στιγμή, οπότε ίσως χρειαστεί να το χακάρω.

Σας ευχαριστούμε που διαβάσατε αυτό το Instructable. Ακολουθήστε με στο Facebook, το Youtube και το Instructables για περισσότερα έργα στο μέλλον.