Πέμπτη 6 Δεκεμβρίου 2018

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

Στην ιστοσελίδα της ώρας του κώδικα είδα μια δραστηριότητα που προτείνεται για τη διδασκαλία των αλγορίθμων offline και αυτή είναι η ζωγραφική σε χαρτί με τετραγωνάκια. Αρκεί να περιγράψουμε το σχέδιό μας ξεκινώντας από το πάνω αριστερά τετραγωνάκι. Οι συμμετέχοντες εκτελούν "οδηγίες" που έχουν σαν σκοπό τη σχεδίαση συγκεκριμένων μοτίβων στο χαρτί. Οι "οδηγίες" είναι μια σειρά από χαρακτήρες που κάθε ένας περιγράφει το τι πρέπει να κάνουμε κάθε φορά. Παραθέτω τους χαρακτήρες και τι κάνει ο καθένας: Χ : μαυρίζει ένα τετραγωνάκι Α : μετακινεί αριστερά κατά ένα τετραγωνάκι Δ : μετακινεί δεξιά κατά ένα τετραγωνάκι Π : μετακινεί πάνω κατά ένα τετραγωνάκι Κ : μετακινεί κάτω κατά ένα τετραγωνάκι Ξεκινάμε πάντα από το πάνω αριστερά σημείο που θεωρούμε ότι είναι το σημείο 0. Για να σχεδιάσουμε ένα τετράγωνο 2x2 σημείων μπορούμε να δώσουμε τις ακόλουθες εντολές: ΧΔΧΚΧΑΧ Την εφαρμογή μπορείτε να την κατεβάσετε από εδώ: codehourdrawingalgorithm
Χρησιμοποιώντας λοιπόν το εργαλείο μπορείτε πολύ εύκολα να δημιουργήσετε οδηγίες σχεδίασης για τους μαθητές σας και να εξασκηθούν έτσι με τους αλγόριθμους.

Δευτέρα 3 Δεκεμβρίου 2018

Φτιάχνουμε ένα αυτοσχέδιο μουσικό όργανο με το micro:bit

Θα φτιάξουμε ένα μουσικό όργανο χρησιμοποιώντας το micro:bit. Θα χρειαστούμε: Ένα micro:bit Ένα καλώδιο micro USB για να συνδέσουμε το micro:bit με τον υπολογιστή μας, ώστε να το προγραμματίσουμε. Σκληρό χαρτί (πχ μπλοκ ακουαρέλας) Ένα μολύβι 8Β (πάρα πολύ μαλακό) Πέντε καλώδια με κροκοδειλάκια. Για να φτιάξουμε το μουσικό μας όργανο, θα εκμεταλλευτούμε το γεγονός ότι το χαρτί είναι μονωτής (κακός αγωγός του ηλεκτρικού ρεύματος), ενώ το μολυβάκι 8B είναι ημιαγωγός (δηλαδή άγει το ηλεκτρικό ρεύμα αλλά πολύ χειρότερα από το χαλκό ή το αλουμίνιο που είναι καλοί αγωγοί του ηλεκτρικού ρεύματος). Το μαύρο του μολυβιού με το οποίο γράφουμε είναι μείγμα πηλού και γραφίτη. Όσο περισσότερο πηλό έχει, τόσο πιο σκληρή είναι η μύτη του μολυβιού μας, αλλά ταυτόχρονα έχει μικρότερη αγωγιμότητα. Το μολύβι 8B είναι πάρα πολύ μαλακό, γιατί έχει πολύ λίγο πηλό. Αν ζωγραφίσουμε μια ταινία σε ένα κομμάτι χαρτί με το μολύβι μας, δημιουργούμε μια επιφάνεια αγώγιμη που μπορεί να δουλέψει ως ποτενσιόμετρο. Και ο κώδικας που κάνει το micro:bit μας να "κελαηδήσει" βρίσκεται εδώ:
Όπως είδατε και στο βίντεο μπορούμε να παίξουμε μελωδίες, σέρνοντας το κίτρινο κροκοδειλάκι πάνω στην επιφάνεια του γραφίτη. Σε ένα επόμενο ποστ θα δούμε πως θα μπορούσαμε να βελτιώσουμε το μουσικό μας όργανο, έτσι ώστε να παίζει συγκεκριμένες μουσικές κλίμακες. Μείνετε συντονισμένοι.

Τρίτη 13 Νοεμβρίου 2018

Μια πυξίδα με το micro:bit

Πως μπορούμε να φτιάξουμε μια πυξίδα με το micro:bit σαν και αυτές που "κυλάνε" μεταξύ βορρά - ανατολής - νότου - δύσης καθώς γυρνάμε τη πυξίδα; Το έργο μπορείτε να το βρείτε εδώ: https://makecode.microbit.org/_1Cb978bLjLcf Να ο κώδικας του προγράμματος σε javascript. Χρησιμοποιούμε τη λειτουργία Εικόνα του micro:bit για να δείξουμε τα τέσσερα σημεία του ορίζοντα καθώς περιστρέφουμε το micro:bit. Αυτό που πρέπει να προσέξουμε είναι ότι επειδή χρησιμοποιούμε πυξίδα, χρειάζεται περιοδικά να κάνουμε βαθμονόμηση της πυξίδας μας. Το micro:bit είναι ιδιαίτερα ευαίσθητο στα μαγνητικά πεδία, τα οποία μπορούν να προκληθούν ακόμη και από τη μπαταριοθήκη που δίνει τροφοδοσία στο micro:bit. Γι' αυτό το λόγο αν θέλουμε να δουλεύει σωστά η πυξίδα μας, όταν συνδέσουμε την μπαταριοθήκη να την έχουμε πάντα σταθερή σε σχέση με το micro:bit, και πρέπει να κάνουμε και βαθμονόμηση. Στο πρόγραμμα αυτό μπορούμε να κάνουμε βαθμονόμηση αν όταν δώσουμε ρεύμα κρατάμε ταυτόχρονα και το πλήκτρο Α του micro:bit πατημένο.

Τετάρτη 31 Οκτωβρίου 2018

Scroller, ένα παιχνίδι δράσης στο micro:bit!

Ποιός είπε ότι δεν μπορείς να φτιάξεις arcade παιχνίδια στο micro:bit; Σκοπός σας είναι να μην τρακάρει η φωτεινή τελεία με τους τοίχους. Όσο όμως η ώρα περνάει, αυτό γίνεται όλο και πιο δύσκολο. Θα τα καταφέρεις;

Τετάρτη 10 Οκτωβρίου 2018

Εκπαιδευτικό υλικό για το micro:bit στα Ελληνικά


Το καλοκαίρι του 2018 διοργανώθηκε για δεύτερη χρονιά στην Καλαμάτα το Summer Academy, ένα σεμινάριο που φέτος είχε θεματική το Physical Computing και συμμετείχαν σε αυτό εκπαιδευτικοί από όλη την Ευρώπη. Περισσότερα για το σεμινάριο μπορείτε να δείτε στη διεύθυνση http://summeracademy.sch.gr/2018/ict/. Στο σεμινάριο αυτό έγινε και ένα εργαστήριο με θέμα το micro:bit και φτιάχτηκε κάποιο εκπαιδευτικό υλικό. Επειδή το workshop έγινε στα Αγγλικά, το εκπαιδευτικό υλικό ήταν στα Αγγλικά. Λόγο της έλλειψης εκπαιδευτικού υλικού στα Ελληνικά για το micro:bit, αποφάσισα να μεταφράσω και να προσαρμόσω το υλικό για χρήση στα ελληνικά για να το χρησιμοποιήσω στην τάξη και στις δραστηριότητες που κάνουμε στο Κέντρο Ρομποτικής και Προγραμματισμού Καλαμάτας. Μπορείτε να κατεβάσετε το υλικό από τους συνδέσμους που δίνονται πιο κάτω:

Εκπαιδευτικό υλικό για το micro:bit (μορφή Microsoft Word docx):
Microbit_ΕΡΓΑΣΙΕΣ_v_1_0

Εκπαιδευτικό υλικό για το micro:bit (μορφή Adobe PDF):
Microbit_ΕΡΓΑΣΙΕΣ_v_1_0

Εκπαιδευτικό υλικό για το micro:bit (μορφή Microsoft Word docx):
Microbit_ΕΡΓΑΣΙΕΣ_v_2_0

Εκπαιδευτικό υλικό για το micro:bit (μορφή Adobe PDF):
Microbit_ΕΡΓΑΣΙΕΣ_v_2_0

Σημείωση: Τα έγγραφα Microbit_ΕΡΓΑΣΙΕΣ_v_1_0 (σε μορφή Word και PDF) αφορούν στο περιβάλλον προγραμματισμού MakeCode v0.x το οποίο δούλευε μέχρι τα τέλη Οκτωβρίου 2018. Οπότε προτείνεται η χρήση των εγγράφων Microbit_ΕΡΓΑΣΙΕΣ_v_2_0 που αφορούν στο περιβάλλον προγραμματισμού MakeCode v1.x που είναι η τρέχουσα υποστηριζόμενη έκδοση. Εννοείται ότι παρατηρήσεις, προσθήκες και διορθώσεις στο υλικό είναι ευπρόσδεκτες. Το υλικό αυτό διατίθεται για ελεύθερη χρήση. Αν τροποποιήσετε το υλικό, θα εκτιμούσα πολύ μια αναφορά στο αρχικό υλικό. Ελπίζω να το βρείτε χρήσιμο.

Παρασκευή 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 και αυτή είναι η ζωγραφι...