Πίνακας περιεχομένων:
2025 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2025-01-13 06:57
Χρησιμοποιώντας το Mongoose και μερικά xChips, φτιάξαμε ένα εικονικό κουμπί πόρτας. Αντί για ένα φυσικό κουμπί για να ακούσετε το προσωπικό, μπορείτε τώρα να το κάνετε μόνοι σας.
Βήμα 1: Πράγματα που χρησιμοποιούνται σε αυτό το έργο
Συστατικά υλικού
- XinaBox CW02 x 1 Θα μπορούσατε να χρησιμοποιήσετε το CW01 αντ 'αυτού
- XinaBox IP01 x 1
- XinaBox PU01 x 1 Θα μπορούσατε απλά να χρησιμοποιήσετε το IP01 για τροφοδοσία, εάν δεν σκοπεύετε να προγραμματίσετε περισσότερες μονάδες.
- XinaBox OC03 x 1
- XinaBox XC10 x 1 Η «κόλλα» που τα κάνει όλα να λειτουργούν!
Εφαρμογές λογισμικού και διαδικτυακές υπηρεσίες
Mongoose OS Πραγματικά φοβερό και εύκολο εργαλείο ανάπτυξης IoT… και δωρεάν
Βήμα 2: Ιστορία
Στη δεξίωσή μας το προσωπικό μας έπρεπε να ανακατευτεί, έτσι αποφασίσαμε να πάρουμε το δικό μας φάρμακο και να δημιουργήσουμε ένα εικονικό κουμπί. Αυτός ο κωδικός σάς επιτρέπει να στείλετε ένα RPC (Κλήση απομακρυσμένης διαδικασίας), το οποίο μοιάζει με μια κανονική κλήση HTTP από οποιοδήποτε πρόγραμμα περιήγησης. Χρησιμοποιήσαμε το Mongoose, αφού είναι πραγματικά εύκολο και γρήγορο να δουλέψουμε και είναι η ενσωματωμένη ενημέρωση κώδικα OTA (Over The Air), σημαίνει ότι θα μπορούσαμε να εγκαταστήσουμε την τεχνολογία μας και ακόμα με τον καιρό να αναβαθμίσουμε το υλικολογισμικό, χωρίς να το διαχωρίσουμε για επαναπρογραμματισμό.
Βήμα 3: Προετοιμασία
- Εγκαταστήστε το Mongoose-OS: Ευθεία προς τα εμπρός, απλώς ακολουθήστε αυτά τα πολύ εύκολα βήματα για το λειτουργικό σας σύστημα εδώ:
- Κάντε κλικ στο IP01 και το CW02 μαζί χρησιμοποιώντας μια υποδοχή XC10. Δείτε την παρακάτω εικόνα:
- Τοποθετήστε το IP01 στη θύρα USB
- Βεβαιωθείτε ότι οι διακόπτες IP01 βρίσκονται στη θέση B και DCE.
- Μετακινήστε το Mongoose-OS στο CW02 από τη γραμμή εντολών σας. Σαν αυτό:
CD
εξαγωγή MOS_PORT = bin/mos flash esp32
Θα μπορούσατε επίσης απλά να μπείτε στην κονσόλα και να κάνετε τα περισσότερα από εκεί, αλλά εδώ το κάνουμε από τη γραμμή εντολών, οπότε η εργασία γίνεται γρήγορα. Για να μπείτε στην κονσόλα:
CD
bin/mos
Βήμα 4: Διαμόρφωση
Παρόλο που αυτά τα βήματα μπορούσαν να γίνουν σε μια μακρά δήλωση, αποφασίσαμε να τα χωρίσουμε, και επειδή θα τα αντιγράψετε και επικολλήσετε με οποιονδήποτε τρόπο, ας το διευκολύνουμε:
Ορίστε τις ακίδες I2C στο πρότυπο xChips:
bin/mos config-set i2c.scl_gpio = 14 i2c.sda_gpio = 2
Συνδέστε το CW02 στο WiFi σας:
bin/mos wifi
Αποσυνδέστε το WiFi σε λειτουργία AP και ρυθμίστε ένα όνομα τομέα, ώστε να μπορείτε να συνδεθείτε στο CW01 με όνομα κεντρικού υπολογιστή αντί να βρείτε τη σωστή διεύθυνση IP. Αυτό θα λειτουργήσει μόνο εάν:
- Αποσυνδέετε το WiFi σε λειτουργία AP όπως κάνουμε παρακάτω.
- Είτε χρησιμοποιήστε Mac είτε εγκαταστήστε το Bonjour σε μηχάνημα Windows.
bin/mos call Config. Set '{"config": {"wifi": {"ap": {"enable": false}}}}'
bin/mos call Config. Set '{"config": {"dns_sd": {"enable": true}}}' bin/mos call config. Set '{"config": {"dns_sd": {"host- όνομα ":" xinabox_switch "}}}
Και τελικά πρέπει να κάνετε επανεκκίνηση του CW02 για να λειτουργήσει το config
bin/mos call Config. Save '{"reboot": true}'
Πολύ γρήγορα μετά από αυτό θα πρέπει να μπορείτε να κάνετε ping xinabox_switch.local
Βήμα 5: Εγκατάσταση
Αποσυνδέστε το IP01 από τον υπολογιστή σας και συναρμολογήστε ένα κύκλωμα σύμφωνα με την επάνω εικόνα.
Συνδέστε το PU01 (ή εάν αποφασίσατε να κολλήσετε με το IP01) σε μια πηγή τροφοδοσίας USB. Συνδέστε καλώδια παράλληλα από τον υπάρχοντα διακόπτη σας (αφήστε το, για κάθε περίπτωση) στο OC03 (η πολικότητα δεν έχει σημασία). Δείτε το σχέδιο Fritzing.
Μόλις ενεργοποιηθεί και για να δείτε ότι μιλάτε πραγματικά με το xCW02, τι γίνεται με τη σάρωση του BUS, γνωστού και ως διαύλου I2C:
bin/mos --port ws: //xinabox_switch.local/rpc κλήση I2C. Scan
Εάν όλα λειτουργούν και το xOC03 είναι εγκατεστημένο σωστά, θα πρέπει να δείτε τον αριθμό «56» να επιστρέφεται. Αυτή είναι η διεύθυνση I2C του OC03 σε δεκαδικό (σε εξάγωνο είναι 0x38).
Βήμα 6: Προγραμματισμός
- Τώρα ανοίξτε το Mongoose σε λειτουργία κονσόλας, δείτε παραπάνω. Θα πρέπει να ανοίξει με ένα παράθυρο όπου ζητά έναν αριθμό θύρας, πληκτρολογήστε: ws: //xinabox_switch.local/rpc
- Θα επικοινωνήσει με το CW02 και θα συνειδητοποιήσει ότι η μονάδα έχει ήδη αναβοσβήνει και είναι συνδεδεμένη στο WiFi, οπότε θα δώσει μόνο 3 σημάδια ελέγχου. Κλείστε το παράθυρο και ανανεώστε τη λίστα αρχείων
- Αντιγράψτε και επικολλήστε τον παρακάτω κώδικα στο init.js και κάντε κλικ στην επιλογή αποθήκευση+επανεκκίνηση
- Το κύκλωμά σας είναι πλέον προγραμματισμένο.
Βήμα 7: Δοκιμή
Πραγματοποιήσατε τώρα μια άλλη κλήση RPC, οπότε από το τερματικό σας μπορείτε να εισαγάγετε:
bin/mos --port ws: //xinabox_switch.local/rpc κλήση Switch
… Και ο βομβητής σας θα πρέπει να πάει για 2 δευτερόλεπτα. Θα μπορούσατε επίσης να το κάνετε από - σχεδόν - οποιοδήποτε πρόγραμμα περιήγησης:
xinabox_switch.local/rpc/Switch
… Με το ίδιο αποτέλεσμα.
Βήμα 8: Επόμενο βήμα
Μπορείτε να χρησιμοποιήσετε οποιοδήποτε εργαλείο μπορεί να ενεργοποιήσει μια διεύθυνση URL. Το κάνω από μια εφαρμογή Apple που ονομάζεται Workflow, που μου επιτρέπει να το κάνω από το τηλέφωνό μου ή ως επιπλοκή από το Apple Watch μου, αλλά υπάρχουν πολλές άλλες επιλογές εκεί έξω. Εδώ είναι το σενάριο ροής εργασίας μου, αλλά με κωδικοποιημένη διεύθυνση IP: Απολαύστε!
Apple App: Workflow - εδώ με κωδικοποιημένη διεύθυνση IP
Βήμα 9: Διαγράμματα
Κύκλωμα βομβητή Εγκαταστήστε το OC03 παράλληλα με το υπάρχον κουμπί.
Κατεβάστε το εδώ.
Κύκλωμα OC03 Εγκαταστήστε το OC03 παράλληλα με το υπάρχον κουμπί.
Κατεβάστε το εδώ.
Βήμα 10: Κωδικός
init.js JavaScript Ο κύριος και μοναδικός κωδικός σας για αυτό το έργο.
φόρτωση ('api_config.js');
φόρτωση ('api_gpio.js'); φόρτωση ('api_i2c.js'); φόρτωση ('api_net.js'); φόρτωση ('api_sys.js'); φόρτωση ('api_timer.js'); φόρτωση ("api_rpc.js"); ας led = Cfg.get ('pins.led'); ας adr = 0x38; ας bus = I2C.get (); I2C.writeRegB (bus, adr, 3, 0); I2C.writeRegB (bus, adr, 1, 0); / * απενεργοποιήστε μόνο για να είστε σίγουροι */ αφήστε την καθυστέρηση = 2000; GPIO.set_mode (led, GPIO. MODE_OUTPUT); RPC.addHandler («Εναλλαγή», λειτουργία (args) {GPIO.toggle (led); I2C.writeRegB (bus, adr, 3, 0); / * σε περίπτωση που το OC03 επανασυνδεθεί * / I2C.writeRegB (bus, adr, 1, 1); Timer.set (καθυστέρηση, ψευδές, λειτουργία () {GPIO.toggle (led); I2C.writeRegB (bus, adr, 1, 0);}, null); return true;});