Παρασκευή 25 Μαΐου 2018

micro:bit και NodeRED. Πως να συνδέσεις εύκολα συσκευές στο Internet.

To nodeRED είναι μια πλατφόρμα που αναπτύχθηκε από την ΙΒΜ και μας επιτρέπει να προγραμματίσουμε εφαρμογές χρησιμοποιώντας ένα γραφικό περιβάλλον ροής δεδομένων (DataFlow). Στην πράξη ενώνουμε κουτάκια που κάνουν διάφορες λειτουργίες (π.χ. διαβάζουν έναν αισθητήρα, ένα μήνυμα από μια σειριακή πόρτα κ.ο.κ. με βελάκια που προσδιορίζουν την κατεύθυνση της πληροφορίας. Μπορούμε να φτιάξουμε έτσι συστήματα που να ενσωματώνουν το λεγόμενο διαδίκτυο των πραγμάτων (Internet of Things IoT). Μια τέτοια ροή (flow) στο nodeRED μπορείτε να δείτε στην επόμενη εικόνα: Στο βίντεο που ακολουθεί μπορείτε να δείτε μια ροή (flow) η οποία παίρνει δεδομένα από το επιταχυνσιόμετρο ενός micro:bit που είναι συνδεδεμένο με usb με έναν υπολογιστή και τα απεικονίζει γραφικά σε μια ιστοσελίδα ως ένα "κοντέρ". Το πρόγραμμα που τρέχει στο micro:bit φαίνεται στην επόμενη εικόνα:

Και μπορείτε να το δείτε καλύτερα εδώ:https://makecode.microbit.org/_65max9gFb27q
Και οι τιμές του επιταχυνσιόμετρου απεικονίζονται σε μια ιστοσελίδα όπως αυτή που φαίνεται στην επόμενη εικόνα:

Βλέποντας το βίντεο μπορεί κανείς να αντιληφθεί καλύτερα τη διαδικασία:

Ένα ρομποτικό αυτοκινητάκι πολλαπλών λειτουργιών με το micro:bit

Στο βίντεο μπορείτε να δείτε ένα ρομποτικό αυτοκινητάκι που έχει σαν μυαλό του ένα micro:bit και λειτουργεί είτε αυτόνομα (αποφεύγει εμπόδια χρησιμοποιώντας έναν αισθητήρα υπερήχων), είτε τηλεκατευθυνόμενα (ο τηλεχειρισμός του γίνεται από ένα δεύτερο micro:bit)
Το αυτοκινητάκι μας κινείται με την βοήθεια μιας πλακέτας ελεγκτή μοτέρ (Kitronic Motor Driver Board).

Στην πλακέτα ελεγκτή μοτέρ κουμπώνει το micro:bit, που τροφοδοτείται από αυτήν. Στην πλακέτα βιδώνεται και η τροφοδοσία από τη μπαταριοθήκη. Επειδή χρησιμοποιούμε επαναφορτιζόμενες μπαταρίες NiMH για λόγους οικονομίας και η μπαταριοθήκη μας χωράει 4 μπαταρίες, η τάση εξόδου της μπαταριοθήκης είναι 4x1,2 Volt = 4,8 Volt.
Για την ώρα το πρόγραμμα υποστηρίζει:

Αυτόνομη λειτουργία.

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

Τηλεχειριζόμενη λειτουργία.

Το αυτοκινητάκι ελέγχεται από ένα άλλο Microbit, χρησιμοποιώντας τη λειτουργία radio του Microbit. Η λειτουργία αυτή ενεργοποιείται πιέζοντας το κουμπί Β στο Microbit που είναι συνδεδεμένο πάνω στο αυτοκινητάκι.

Λειτουργία τηλεχειριστηρίου.

Επιτρέπει τον τηλεχειρισμό ενός αυτοκινήτου που βρίσκεται στη τηλεχειριζόμενη λειτουργία. Ενεργοποιείται πατώντας ταυτόχρονα τα πλήκτρα A και B. Όταν το Microbit είναι επίπεδο, στέλνει σήμα ακινητοποίησης στο αυτοκινητάκι και απεικονίζεται το γράμμα S Γέρνοντας το microbit εμπρός και πίσω κάνουμε το αυτοκινητάκι να κινηθεί εμπρός ή πίσω, ενώ γέρνοντας το Microbit αριστερά - δεξιά, κάνουμε το αυτοκινητάκι να κινηθεί στην αντίστοιχη κατεύθυνση. Τον κώδικα μπορείτε να τον βρείτε εδώ:https://github.com/tkleisas/AutoRemoteRobot
Ένα σημείο που χρειάζεται προσοχή είναι η σύνδεση του αισθητήρα υπερήχων με το micro:bit.

Ο αισθητήρας χρειάζεται κοντά στα 5 Volt για να δουλέψει. Για το σκοπό αυτό τον τροφοδοτούμε απευθείας από την μπαταριοθήκη με 4,8 Volt. Για να διαβάσουμε την έξοδο του αισθητήρα (echo pin) χρησιμοποιούμε έναν διαιρέτη τάσης, ο οποίος μετατρέπει την τάση από τα 4,8 Volt σε τάση 3V που μπορεί να χειριστεί το micro:bit. Το κύκλωμα του διαιρέτη τάσης φαίνεται στο σχήμα:

Εναλλακτικά, μπορούμε να χρησιμοποιήσουμε έναν μετατροπέα τάσεων (Level Shifter), σαν αυτόν εδώ:

Ένα synthesizer με μια πλακέτα των 3 ευρώ!



Η σειρά μικροελεγκτών STM32 είναι μια σειρά μικροελεγκτών ARM που μπορεί να προγραμματιστεί χρησιμοποιώντας την πλατφόρμα Arduino. Μια από τις πιο δημοφιλείς εκδοχές τις είναι η πλακέτα bluepill, που περιλαμβάνει έναν μικροελεγκτή STM32F103C. Τα χαρακτηριστικά της είναι εκπληκτικά συγκρινόμενα με το Arduino UNO. 32 GPIO (ακροδέκτες γενικής χρήσης), 16κάναλος ADC μετατροπέας, 64 - 128 KB μνήμης flash και 20KB μνήμης RAM, με συχνότητα λειτουργίας από τα 48 έως τα 120 MHz και κόστος αγοράς κάτω από τα τρία ευρώ! Είναι πολύ πιο γρήγορο από το UNO και οι δυνατότητες του είναι κατά πολύ αυξημένες καθώς πρόκειται για 32bit μικροελεγκτή. O ATMEGA 328P του Arduino UNO είναι μόλις 8 bit. Το πιο χτυπητό του μειονέκτημα είναι ότι χρειάζεται έναν εξωτερικό προγραμματιστή (STLink-V2) ο οποίος όμως μπορεί να βρεθεί σε τιμή κοντά στα 5 ευρώ.
Επειδή ασχολούμαι με την ηλεκτρονική μουσική, ήθελα να φτιάξω ένα συνθεσάϊζερ, κατά προτίμηση φορητό και με οθονίτσα, οπότε τελικά σχεδίασα κάτι τέτοιο:

Χρησιμοποιώ δηλαδή ένα button matrix, μια oled spi οθόνη και 2 rotary encoders για να ελέγξω τις παραμέτρους του συνθεσάϊζερ. Ο κώδικας του βρίσκεται στο github: https://github.com/tkleisas/digeonsynth Για την παραγωγή του ήχου χρησιμοποίησα τη βιβλιοθήκη Mozzi, ενώ για οθόνη χρησιμοποίησα μια οθονίτσα SSD1306 0.96 ιντσών με ανάλυση 128x64 πίξελ για την οποία έφτιαξα και μια μίνι βιβλιοθήκη (μπορείτε να τη βρείτε στο κώδικα στο github). Δυστυχώς όμως το πρωτότυπο που είχα φτιάξει ξαφνικά έπαψε να δουλεύει (Κάποια λάθος κόλληση ίσως; Ποιος ξέρει...). Μέχρι να έρθουν κάποια εξαρτήματα που έχω παραγγείλει από την Κίνα, το έργο αυτό έχει παγώσει.

Ένα ρομποτικό αυτοκινητάκι που κάνει ακολούθηση γραμμής με το Arduino

Πως μπορούμε να φτιάξουμε ένα προγραμματιζόμενο αυτοκινητάκι που να κάνει ακολούθηση γραμμής με το Arduino; Το συγκεκριμένο αυτοκίνητο μπορεί να αγοραστεί από την Κίνα πλήρες (με το Arduino) με τιμή γύρω στα 18 ευρώ. Συνήθως συνοδεύεται από αισθητήρα υπερήχων με τον οποίο μπορεί να αποφεύγει εμπόδια. Στο συγκεκριμένο αυτοκινητάκι όμως προσαρμόστηκε ένας αισθητήρας ακολούθησης γραμμής. Ο αισθητήρας αυτός ουσιαστικά μετράει την αντανάκλαση του φωτός στο δάπεδο. Αν αυτή είναι μικρή θεωρεί ότι υπάρχει γραμμή, αν η αντανάκλαση είναι μεγάλη θεωρεί ότι δεν υπάρχει. Το πρόγραμμα που κινεί το ρομπότ μπορείτε να το βρείτε εδώ: https://github.com/tkleisas/arduino-examples/tree/master/arduinolinefollower Το πρόγραμμα στην τρέχουσα του μορφή είναι πολύ απλό, με αποτέλεσμα η κίνηση του αυτοκινήτου να μην είναι ιδιαίτερα ομαλή και να χάνει συχνά τη γραμμή. Προκειμένου να βελτιωθεί θα μπορούσαμε να χρησιμοποιήσουμε π.χ. έναν ελεγκτή PID (PID controller), ο οποίος θα έδινε στο ρομπότ μας μια πιο ομαλή κίνηση. Επίσης ένα άλλο πρόβλημα που μπορεί να αντιμετωπίσει κανείς είναι η ανομοιομορφία των μοτέρ που μπορούν να κάνουν το ρομπότ να μην στρίβει σωστά ή να κινείται μονίμως διαγώνια αν δεν του γίνει μια κατάλληλη βαθμονόμηση.

Ελληνικά στο micro:bit

Το λογισμικό του micro:bit δεν υποστηρίζει απεικόνιση ελληνικών χαρακτήρων. Για να μπορέσει να δείξει ελληνικούς χαρακτήρες έφτιαξα ένα πακέτο που το ονομάζω pxt-greekled το οποίο μπορεί να δείξει ελληνικές λέξεις στην οθονίτσα του micro:bit. Το πακέτο αυτό, εκτός από τα ελληνικά, προσφέρει και μια άλλη πολύ χρήσιμη λειτουργία. Την απεικόνιση μέχρι και τριψήφιων αριθμών στην οθόνη του microbit. Αυτό γίνεται χρησιμοποιώντας μια μήτρα αριθμών με πλάτος 2 και ύψος 5 εικονοστοιχεία. Με αυτό τον τρόπο μπορούμε να απεικονίσουμε μέχρι και τριψήφιο αριθμό, χρησιμοποιώντας την πιο αριστερή στήλη για να δείξουμε το πιο σημαντικό ψηφίο ως τελίτσα που να ξεκινάει από κάτω και να ανεβαίνει προς τα πάνω. Δείτε και το σχετικό βίντεο. Ο κώδικας του pxt-greekled-beta βρίσκεται στο github. Μπορείτε να τον βρείτε εδώ: https://github.com/tkleisas/pxt-greekled-beta

micro:bit messenger

Το micro:bit είναι μια πλακέτα με έναν arm μικροελεγκτή που φτιάχτηκε από το BBC για εκπαιδευτικούς σκοπούς. Είναι ο πνευματικός απόγονος του BBC model B, που είχε δημιουργηθεί από το BBC στις αρχές της δεκαετίας του 80 για να υποστηρίξει το πρόγραμμα πληροφοριακού γραμματισμού των Βρετανικών σχολείων. Μπορεί να προγραμματιστεί με πολλούς τρόπους, είτε με τη χρήση ενός μπλοκ περιβάλλοντος που μοιάζει με το Scratch, του MakeCode, είτε με python, είτε ακόμη με κάποιο C/C++ περιβάλλον ανάπτυξης. Το micro:bit είναι εξοπλισμένο με οθόνη led matrix 5x5, δυο κουμπιά, επιταχυνσιόμετρο, ψηφιακή πυξίδα, θερμόμετρο, αισθητήρα φωτός, 3 ακροδέκτες γενικού σκοπού (GPIO) με δυνατότητα αναλογικής εισόδου και εξόδου, ακροδέκτη 3V και ακροδέκτη γείωσης και δυνατότητα επικοινωνίας με Bluetooth Low Energy (BLE) και ένα peer to peer πρωτόκολλο που αναφέρεται στην τεκμηρίωσή του ως radio. Στο βίντεο που είδατε, χρησιμοποιούμε αυτό το πρωτόκολλο για να φτιάξουμε ένα πρόγραμμα που επιτρέπει σε 2 ή περισσότερα micro:bit να ανταλλάξουν μηνύματα. Τον κώδικα μπορείτε να τον βρείτε εδώ: https://github.com/tkleisas/microbit_examples/blob/master/messenger.js

Ένα εργαλείο για τη διδασκαλία των αλγορίθμων

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