Arduino και Led Dot Matrix MAX7219

Φτιάχνουμε λοιπόν ένα project με το Arduino και θέλουμε να προσθέσουμε μια οθόνη για να παρουσιάζουμε πληροφορίες. Υπάρχει μια πληθώρα επιλογών από οθόνες TFT, LCD, OLED, e-Paper, Touch, σε διάφορες αναλύσεις και χρώματα. Μπορείτε να διαβάσετε ένα πολύ καλό άρθρο σχετικό με το θέμα αυτό και να παρακολουθήσετε ένα συγκριτικό βίντεο στο Educ8s.tv.

Από την άλλη, αν η πληροφορία που θέλουμε να παρουσιάσουμε είναι κάποιες απλές ενδείξεις (π.χ. αν η τιμή ενός αισθητήρα ξεπέρασε κάποιο όριο), τότε μπορούμε να χρησιμοποιήσουμε και μερικά led λαμπάκια τα οποία είναι πολύ φθηνά και εύκολα στον προγραμματισμό τους.

Μια ενδιάμεση λύση είναι οι οθόνες Dot Matrix, οι οποίες είναι συστοιχίες από led λαμπάκια. Οι πιο συνηθισμένες που κυκλοφορούν στην αγορά έχουν 64 led διατεταγμένα σε 8 σειρές και 8 στήλες. Όπως είναι εύκολα κατανοητό με ανάλυση 8×8 δεν μπορούν να συγκριθούν με τις υπόλοιπες LED και TFT οθόνες, αλλά για αναπαράσταση κειμένου και απλών γραφικών μπορούν να κάνουν ικανοποιητική δουλειά. Επίσης ως εκπαιδευτικός τις βρίσκω ιδιαίτερα ενδιαφέρουσες, καθώς πιστεύω ότι βοηθούν πολύ στο να κατανοήσουν οι μαθητές τον τρόπο λειτουργίας των οθονών, τι είναι τα pixel και τι είναι η ψηφιοποιήση της εικόνας.

Μια οθόνη Led Dot Matrix με 64 led διατεταγμένα σε 8 σειρές και 8 στήλες

Μια πολύ καλή πρόταση, που μας γλιτώνει από αρκετό κόπο όσον αφορά τη συνδεσμολογία, είναι οι Dot Matrix οθόνες με ενσωματωμένο τον οδηγό MAX7219. Σε αντίθεση με τις απλές Dot Matrix, που απαιτούν 16 καλώδια για την σύνδεση με το Arduino, αυτή η υλοποίηση απαιτεί μόνο 5 και μας δίνει την δυνατότητα να συνδέσουμε πολλές οθόνες μεταξύ τους, χωρίς να προσθέσουμε άλλα καλώδια στο Arduino. Η τιμή του συγκεκριμένου module είναι περίπου στα 4 ευρώ από ελληνικά καταστήματα και 1,5 ευρώ από το ebay (τιμές Αυγούστου 2018).

Led Matrix οθόνη με ενσωματωμένο τον οδηγό MAX7219

Σύνδεση με Arduino

Η υλοποίηση της Dot Matrix οθόνης με τον οδηγό MAX7219 έχει 5 pins θα οποία συνδέονται στο Arduino ως εξής:

  • Το pin VCC συνδέεται στα 5V του Arduino.
  • Το pin GND συνδέεται στην γείωση (GND) του Arduino.
  • Το pin DIN (Data in) το συνδέουμε σε ένα από τα ψηφιακά pins του Arduino. Στο συγκεκριμένο παράδειγμα το συνδέω στο pin 12.
  • Το pin CS (Chip select), το οποίο είναι χρήσιμο όταν έχουμε πολλές οθόνες που συνδέονται μεταξύ τους, το συνδέουμε σε ένα από τα ψηφιακά pins του Arduino. Στο συγκεκριμένο παράδειγμα το συνδέω στο pin 11.
  • Το pin CLK (Clock Signal), το οποίο λειτουργεί ως ψηφιακός μετρονόμος, το συνδέουμε σε ένα από τα ψηφιακά pins του Arduino. Στο συγκεκριμένο παράδειγμα το συνδέω στο pin 10.
Σύνδεση μιας οθόνης Dot Matrix MAX7219 με το Arduino

Επιλογή βιβλιοθήκης

Για τον έλεγχο της Dot Matrix οθόνης με τον οδηγό MAX7219 υπάρχουν διαθέσιμες αρκετές βιβλιοθήκες, τις οποίες μπορούμε να προσθέσουμε στο Arduino IDE. Ένα άρθρο που συνοψίζει μερικές από αυτές μπορείτε να διαβάσετε στο Arduino Playground. Η προσωπική μου επιλογή για την διαχείριση απλών pixel και εικόνων είναι η βιβλιοθήκη max7219 από τον Riyas (μικρό και κατανοητό σετ εντολών), την οποία μπορείτε να κατεβάσετε από το GitHub.

Για να κάνετε εγκατάσταση την συγκεκριμένη βιβλιοθήκη στο Arduino IDE σας, μπορείτε να ακολουθήσετε τον παρακάτω αναλυτικό οδηγό:

Βήμα 1ο: Από την σελίδα στο GitHub κάνουμε κλικ στο Clone/Download
Βήμα 2ο: Επιλέγουμε να κατεβάσουμε την βιβλιοθήκη σε μορφή Zip
Βήμα 3ο: Ανοίγουμε το συμπιεσμένο αρχείο με κάποιο πρόγραμμα όπως το 7zip
Βήμα 4ο: Αποσυμπιέζουμε μόνο τον φάκελο MaxMatrix, ο οποίος περιέχει τα αρχεία της βιβλιοθήκης
Βήμα 5ο: Συμπιέζουμε τον φάκελο MaxMatrix σε μορφή zip
Βήμα 6ο: Από το Arduino IDE επιλέγουμε Σχέδιο –> Συμπερίληψη Βιβλιοθήκης –> Προσθήκη βιβλιοθήκης ZIP και αναζητούμε το αρχείο MaxMatrix.zip
Αν όλα έχουν πάει καλά θα πρέπει πλέον στο μενού της συμπερίληψης βιβλιοθήκης να βλέπουμε την επιλογή MaxMatrix

Προγραμματισμός οθόνης με την βιβλιοθήκη MaxMatrix

Οι βασικές μας εργασίες πριν ξεκινήσουμε να ανάβουμε τα διάφορα led στην οθόνη είναι:

  • να συμπεριλάβουμε την βιβλιοθήκη MaxMatrix στο πρόγραμμα μας,
  • να δημιουργήσουμε ένα αντικείμενο της κλάσης MaxMatrix περνώντας ως παραμέτρους τα pin στα οποία έχουμε συνδέσει την οθόνη με το Arduino, καθώς και τον αριθμό των οθονών που έχουμε,
  • να αρχικοποιήσουμε το αντικείμενο στο Setup και
  • να ορίσουμε την φωτεινότητα των led.

Αφού έχουμε κάνει τις παραπάνω δηλώσεις στο πρόγραμμα μας, μπορούμε πλέον να ανάβουμε και να σβήνουμε μεμονωμένα led στην οθόνη, χρησιμοποιώντας την συνάρτηση setDot(x,y,state) η οποία δέχεται 3 παραμέτρους: την θέση x, την θέση y και την κατάσταση του συγκεκριμένου led (true = αναμμένο, false = σβηστό).

Το αποτέλεσμα της συνάρτησης matrix.setDot(1,4,true);

Με τον τρόπο αυτό μπορούμε να “ζωγραφίσουμε” στην οθόνη Dot Matrix μια χαμογελαστή φατσούλα με τον παρακάτω κώδικα

Ζωγραφίζοντας μια χαμογελαστή φατσούλα στην οθόνη.

Φυσικά μπορούμε να εκμεταλλευτούμε τις δυνατότητες που μας παρέχουν οι δομές επανάληψης καθώς και η συνάρτηση loop() έτσι ώστε να δημιουργήσουμε όμορφα animation.

Το Animation που προκύπτει με τον παραπάνω κώδικα 

Εκτός από την συνάρτηση setDot(x,y,state), η οποία μας επιτρέπει να ελέγχουμε την κατάσταση (φωτεινό/σβηστό) για κάθε led της οθόνης, η βιβλιοθήκη MaxMatrix μας δίνει την δυνατότητα να χρησιμοποιούμε πίνακες χαρακτήρων που αποτυπώνουν όλη την κατάσταση της οθόνης με τη συνάρτηση writeSprite(x,y,spriteArray).

Η συνάρτηση writeSprite(x,y,spriteArray) δέχεται 3 παραμέτρους: την θέση x και y από την οποία θα αρχίσει να εμφανίζεται το sprite και έναν πίνακα χαρακτήρων που περιλαμβάνει την κατάσταση των led στην οθόνη. Τα 0 και 1 στους πίνακες χαρακτήρων συμβολίζουν την κατάσταση του κάθε led στην οθόνη (0=σβηστό, 1=φωτεινό).

Με το παραπάνω πρόγραμμα και τη συνάρτηση writeSprite, εναλλάσουμε δυο εικόνες στην οθόνη

Συνδέοντας πολλές οθόνες μαζί

Η μεγάλη ευκολία που μας παρέχει η υλοποίηση της οθόνης Led Dot Matrix με τον οδηγό MAX7219, είναι η δυνατότητα να συνδέουμε με απλό τρόπο πολλές οθόνες μεταξύ τους, χωρίς να προσθέσουμε νέα καλώδια στο Arduino. Η σύνδεση κάθε νέας οθόνης γίνεται απευθείας με την προηγούμενη με τον τρόπο που φαίνεται στην παρακάτω εικόνα.

Συνδέοντας 4 οθόνες Led Dot Matrix στην σειρά για να φτιάξουμε μια οθόνη 32×8 pixels.

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

Αλλάζω τον αριθμό των συνδεδεμένων οθονών από 1 σε 4

Αν δεν κάνουμε αυτή την αλλαγή και αφήσουμε τον αριθμό των Led Displays σε 1, τότε όλες τους θα αναπαράγουν το ίδιο ακριβώς animation. Αν όμως θέλουμε να λειτουργήσουν ως μια μεγάλη οθόνη με πλάτος 4×8 = 32 pixel, τότε θα πρέπει να δηλώσουμε τον αριθμό 4 στην μεταβλητή που έχουμε δημιουργήσει.

Από την στιγμή που έχουμε πλέον 32 pixel πλάτος στην οθόνη μας, μπορούμε να τα εκμεταλλευτούμε και να δημιουργήσουμε animation τα οποία θα μετακινούν εικόνες δεξιά – αριστερά. Η βιβλιοθήκη MaxMatrix παρέχει δύο συναρτήσεις που μας διευκολύνουν στην δουλειά αυτή, την shiftRight() και την shiftLeft().

Έτσι μπορούμε να ανάψουμε αρχικά συγκεκριμένα led της οθόνης, ή να χρησιμοποιήσουμε την συνάρτηση writeSprite(x, y, spriteArray) για να αποτυπώσουμε μια εικόνα και μετά με τις συναρτήσεις shiftRight() και shiftLeft() να μετακινούμε τις αποτυπώσεις αυτές δεξιά – αριστερά.

Το αποτέλεσμα του παραπάνω προγράμματος: Το δεξί βέλος εμφανίζεται αριστερά και κινείται δεξιά μέχρι να βγει από όλες τις οθόνες. Το αριστερό βέλος εμφανίζεται δεξιά και κινείται αριστερά μέχρι να βγει από όλες τις οθόνες.

Arduino και Bluetooth με το HC-05

Η επικοινωνία του Arduino με άλλες συσκευές όπως υπολογιστές, smartphones, tablets καθώς και άλλα Arduino είναι ιδιαίτερα χρήσιμη και μας δίνει δυνατότητες να κατασκευάσουμε πολύ ενδιαφέροντα project.

Με ένα απλό καλώδιο USB έχουμε έτσι και αλλιώς την επικοινωνία του Arduino με τον υπολογιστή, όχι μόνο για να το τροφοδοτήσουμε με ρεύμα και για να ανεβάσουμε το πρόγραμμα μας, αλλά και για να ανταλλάσσουμε δεδομένα μέσω σειριακής επικοινωνίας. Μπορούμε να χρησιμοποιήσουμε την σειριακή οθόνη (Serial Monitor) που περιλαμβάνεται στο Arduino IDE ή να γράψουμε τα δικά μας προγράμματα τα οποία θα στέλνουν και θα δέχονται δεδομένα από την σειριακή θύρα.

Την σειριακή επικοινωνία μπορούμε να την αξιοποιήσουμε και σε ασύρματες συνδέσεις μέσω Bluetooth. Έτσι μπορούμε να φτιάξουμε οχήματα που ελέγχονται από το κινητό μας τηλέφωνο, φώτα που θα ανάβουν από το tablet μας, αισθητήρες που θα στέλνουν τα δεδομένα τους στο laptop μας κ.ο.κ.

Για να το πετύχουμε αυτό θα χρειαστεί να αγοράσουμε κάποια μονάδα Bluetooth που να συνδέεται στο Arduino. Η πιο δημοφιλής είναι το HC-05 Wireless Bluetooth Transceiver. Η χαμηλή του τιμή (περίπου 7 ευρώ από ελληνικά καταστήματα και 2-3 ευρώ από το eBay), η ευκολία χρήσης και η δυνατότητα του να λειτουργεί ως master και slave, σε αντίθεση με το παρόμοιο HC-06 που λειτουργεί μόνο ως slave, το φέρνουν πρώτο στις προτιμήσεις των αγοραστών. Αυτό σημαίνει πως υπάρχει και αρκετή υποστήριξη στο διαδίκτυο από tutorials και βοήθεια σε φόρουμ συζητήσεων. Έναν βασικό οδηγός σύγκρισης των διαφόρων μονάδων Bluetooth για το Arduino στα αγγλικά μπορείτε να βρείτε εδώ ενώ ένα πολύ πιο αναλυτικό εδώ.

Οι δυο πιο δημοφιλείς μονάδες Bluetooth της αγοράς. Το HC-05 το ξεχωρίζουμε από το HC-06 από τα 2 παραπάνω pins που διαθέτει.

Ανατομία του HC-05

Η μονάδα HC-05 με το Breakout board zs-040

Η μονάδα HC-05 έχει 6 pins:

  • VCC (2), στο οποίο συνδέουμε την τροφοδοσία από το Arduino.
  • GND (3), στο οποίο συνδέουμε την γείωση.
  • RX (5), στο οποίο έρχονται τα δεδομένα από το Arduino.
  • ΤΧ (4), από το οποίο αποστέλλονται τα δεδομένα που λαμβάνει η μονάδα Bluetooth προς το Arduino.
  • STATE (6), το οποίο είναι απλά συνδεδεμένο με το LED της μονάδας Bluetooth και όταν αυτό ανάβει βγάζει έξοδο HIGH αλλιώς βγάζει έξοδο LOW.
  • ENABLED ή KEY (1) το οποίο μας επιτρέπει να αλλάζουμε την κατάσταση της μονάδας μεταξύ δύο:
    • Κατάσταση δεδομένων, όπου το HC-05 λειτουργεί κανονικά για να μεταφέρει δεδομένα.
    • Κατάσταση ρυθμίσεων, όπου μπορούμε να δίνουμε εντολές στο HC-05 για να αλλάζουμε τις ρυθμίσεις του.

Επίσης διαθέτει μια ένδειξη LED (8) η οποία ανάλογα με τον ρυθμό που αναβοσβήνει μας πληροφορεί για την κατάσταση της μονάδας, καθώς και ένα πλήκτρο (7) το οποίο μας επιτρέπει να αλλάζουμε την κατάσταση της μονάδας.

Σύνδεση με Arduino

Για να συνδεθεί το HC-05 με το Arduino χρειάζεται να στέλνει και να λαμβάνει δεδομένα αξιοποιώντας τα pins 0 και 1 του Arduino τα οποία έχουν την ειδική σήμανση RX και TX αντίστοιχα. Το pin 0 (RX) του Arduino δέχεται (Receive) δεδομένα από την μονάδα Bluetooth, ενώ το pin 1 (TX) του Arduino στέλνει (Transmit) δεδομένα στην μονάδα Bluetooth. Η σύνδεση λοιπόν που πρέπει να κάνουμε είναι η εξής:

  • HC-05 VCC –> Arduino 5V
  • HC-05 GND –> Arduino GND
  • HC-05 TX –> Arduino RX (pin 0)
  • HC-05 RX –> Arduino TX (pin 1)
Η βασική σύνδεση της μονάδας HC-05 με το Arduino, η οποία δεν είναι απόλυτα ασφαλής.

Ένα θέμα που προκύπτει εδώ είναι ότι η μονάδα HC-05 λειτουργεί στα 3.3V σε αντίθεση με το Arduino που λειτουργεί στα 5V. Ευτυχώς το HC-05 έχει ρυθμιστή τάσης στο VCC ο οποίος δέχεται μέχρι και 6V τα οποία μετατρέπει σε 3.3V και μπορούμε άφοβα εκεί να συνδέσουμε τα 5V του Arduino. Δεν ισχύει όμως το ίδιο για τα RX και ΤΧ pins, τα οποία λειτουργούν αποκλειστικά με 3,3V.

  • Όσον αφορά την σύνδεση του TX pin του HC-05 με το RX pin του Arduino δεν υπάρχει πρόβλημα αφού εκεί το ρεύμα ταξιδεύει από το HC-05 προς το Arduino το οποίο μπορεί να διαβάσει τα 3.3V που στέλνονται χωρίς κίνδυνο.
  • Το RX pin όμως του HC-05 ενώ απαιτεί 3.3V ως είσοδο δέχεται 5V από το Arduino και μπορεί να παρουσιάσει πρόβλημα αν το έχουμε απευθείας συνδεδεμένο για πολύ ώρα.

Για να λυθεί αυτό το πρόβλημα θα πρέπει να μετατρέπουμε τα 5V που έχει η έξοδος του ΤX pin του Arduino σε 3,3V πριν φτάσουν στο RX pin του Bluetooth δημιουργώντας ένα απλό  κύκλωμα διαιρέτη τάσης με δυο αντιστάσεις, όπου η μία είναι διπλάσια της άλλης, όπως φαίνεται στο παρακάτω σχέδιο.

Ο σωστός τρόπος σύνδεσης της μονάδας HC-05 στο Arduino ώστε το RX του HC-05 να δέχεται 3.3V με την χρήση δυο αντιστάσεων.

Αν έχουμε κάνει σωστά την σύνδεση μας, με το που δώσουμε ρεύμα στο Arduino θα δούμε το κόκκινο LED στην μονάδα Bluetooth να ανάβει και να συνεχίσει να αναβοσβήνει γρήγορα (αρκετές φορές το δευτερόλεπτο). Η συσκευή μπορεί πλέον να εντοπιστεί από άλλες συσκευές όπως το κινητό μας τηλέφωνο με το όνομα HC-05 και κωδικό σύζευξης 1234. Μόλις η σύζευξη επιτευχθεί τότε το LED αρχίζει να αναβοσβήνει πιο αργά.

Μεταφέροντας το πρόγραμμα στο Arduino

Μπορούμε πλέον να γράφουμε προγράμματα στο Arduino τα οποία να στέλνουν και να δέχονται δεδομένα μέσω Bluetooth χρησιμοποιώντας τις εντολές της σειριακής επικοινωνίας που περιλαμβάνονται στην βιβλιοθήκη Serial. Οι ίδιες εντολές χρησιμοποιούνται και για την επικοινωνία μέσω USB (και αυτή σειριακή είναι).

Όταν θέλουμε να ανεβάσουμε το πρόγραμμα στο Arduino από τον υπολογιστή μας χρησιμοποιώντας την θύρα USB θα πρέπει να προσέξουμε να απενεργοποιήσουμε προσωρινά την μονάδα Bluetooth (απλά αποσυνδέστε το καλώδιο στο pin VCC, ή τα καλώδια στο RX και TX pins) για να μπορέσει να ανέβει το πρόγραμμα μας. Αν ξεχάσουμε να αποσυνδέσουμε το Bluetooth, το Arduino IDE θα μας ειδοποιήσει ότι η σειριακή θύρα του Arduino είναι απασχολημένη (αφού την έχει δεσμεύσει το Bluetooth) και δεν θα ανεβάσει το πρόγραμμα. Αφού ανεβάσουμε το πρόγραμμα μας στο Arduino μπορούμε να συνδέσουμε και πάλι την μονάδα HC-05 ώστε να λειτουργήσει κανονικά.

Αν ξεχάσουμε να αποσυνδέσουμε το HC-05 από το Arduino κατά την φάση ανεβάσματος που προγράμματος μας, θα μας βγάλει μηνύματα λάθους αφού η θύρα USB χρησιμοποιεί τα RX και TX pins που είναι κατειλημμένα.

Αλλάζοντας τις ρυθμίσεις

Όλες οι μονάδες HC-05 όταν ενεργοποιούνται έχουν το ίδιο όνομα (HC-05) και τον ίδιο κωδικό σύζευξης (1234). Αν θέλουμε να αλλάξουμε αυτές και άλλες ρυθμίσεις, όπως η ταχύτητα σύνδεσης, μπορούμε να το κάνουμε χρησιμοποιώντας εντολές AT (AT commands).

Για να στείλουμε εντολές AT στην μονάδα Bluetooth μπορούμε να χρησιμοποιήσουμε την σειριακή οθόνη που είναι ενσωματωμένη στο Arduino IDE και να «πούμε» στο Arduino να μεταφέρει τις εντολές που του στέλνουμε σειριακά μέσω USB, στην μονάδα HC-05 με ένα πρόγραμμα.

Για να το πετύχουμε αυτό θα πρέπει αρχικά να αποδεσμεύσουμε τα pin 0 και 1 του Arduino από το HC-05, αφού θα απασχολούνται από το Serial monitor. Η λύση είναι να χρησιμοποιήσουμε δυο άλλα Digital pins του Arduino μαζί με την βιβλιοθήκη Software Serial μετατρέποντας τα προσωρινά σε Software RX και TX pins. Άρα οι συνδέσεις μας τώρα θα είναι ως εξής:

  • HC-05 VCC –> Arduino 5V
  • HC-05 GND –> Arduino GND
  • HC-05 TX –> Arduino Digital pin 8
  • HC-05 RX –> Arduino Digital pin 9 (με την χρήση διαιρέτη τάσης)
Αντικατάσταση των pins 0 (RX) και 1 (TX) του Arduino με δυο άλλα Digital pins αξιοποιώντας την βιβλιοθήκη Software Serial

Τώρα χρειάζεται να φορτώσουμε στο Arduino ένα πρόγραμμα το οποίο θα δέχεται σειριακά από την θύρα USB τις εντολές AT και θα τις μεταφέρει στο HC-05 από τα δυο pin που έχουμε ορίσει. Έτσι ότι στέλνουμε από το Serial Monitor θα μεταφέρεται στο Arduino και από εκεί στο Bluetooth. Χρησιμοποιώ το πρόγραμμα που έχει γράψει στο πολύ ωραίο άρθρο του για το HC-05 ο Martyn Currey, το οποίο φαίνεται παρακάτω.

Το μόνο που μένει πλέον, αφού φορτώσουμε το πρόγραμμα στο Arduino, είναι να αλλάξουμε την κατάσταση του HC-05 ώστε από την λειτουργία δεδομένων να περάσει στην λειτουργία ρυθμίσεων.

Ένας τρόπος είναι να χρησιμοποιήσουμε το push button (7) που υπάρχει πάνω στο HC-05. Πριν δώσουμε ρεύμα στην μονάδα το κρατάμε πατημένο και μόλις το HC-05 πάρει ρεύμα και ανάψει το led αφήνουμε το push button. Τώρα παρατηρούμε ότι το led αναβοσβήνει αργά (όπως όταν βρίσκεται σε σύζευξη) και μπορούμε να του στέλνουμε AT εντολές. Όχι όμως όλες! Για αυτές που χρειαζόμαστε (αλλαγή ονόματος και αλλαγή κωδικού) θα πρέπει πάλι να κρατάμε πατημένο το push button κάθε φορά που στέλνουμε την εντολή!

Αντί να πατάμε το push button μπορούμε να αξιοποιήσουμε το pin ENABLED ή KEY (1). Όταν είναι LOW (εξ’ορισμού) τότε η μονάδα είναι στην κατάσταση DATA και λειτουργεί κανονικά (δέχεται και μεταδίδει δεδομένα). Όταν είναι HIGH τότε το HC-05 είναι στην κατάσταση Full AT Command και μπορεί να δέχεται όλες τις εντολές για να την ρυθμίσουμε (αλλαγή ονόματος, κωδικού κλπ). Προσοχή όμως! Το συγκεκριμένο pin δεν διαθέτει ρυθμιστή τάσης και δεν μπορούμε να του στείλουμε 5V αλλά 3.3V. Για αυτό θα συνδέσουμε ένα καλώδιο από τα 3.3V του Arduino στο ENABLED του HC-05, όπως φαίνεται παρακάτω.

Σύνδεση του HC-05 με το Arduino για αλλαγή ρυθμίσεων. Αντί για τα pins 0 και 1 χρησιμοποιούμε δυο άλλα digital pins με την Software Serial ενώ δίνουμε 3.3V και στον pin ENABLED για να αλλάξουμε την κατάσταση του HC-05 σε Full AT COMMAND

Αφού λοιπόν έχουμε κάνει την σύνδεση σύμφωνα με το παραπάνω σχηματικό και αφού φορτώσουμε το παραπάνω πρόγραμμα στο Arduino, μπορούμε να αλλάξουμε τις ρυθμίσεις τους χρησιμοποιώντας το Serial Monitor.

Ανοίγουμε το Serial Monitor

Μόλις ανοίξουμε την σειριακή οθόνη θα εμφανιστούν αρχικά οι πληροφορίες που έχουμε βάλει στην συνάρτηση setup του προγράμματος. Για να ελέγξουμε αν όλα έχουν συνδεθεί σωστά και μπορεί το HC-05 να δεχτεί εντολές μπορούμε να στείλουμε την εντολή AT, η οποία θα πρέπει να μας επιστρέψει OK.

Αν όλα πάνε καλά η εντολή AT θα μας επιστρέψει ΟΚ

Για να δούμε το όνομα που έχει ήδη η μονάδα HC-05 πληκτρολογούμε την εντολή AT+NAME.

Το όνομα της μονάδας είναι αυτή τη στιγμή HC-05

Για να αλλάξουμε το όνομα γράφουμε την εντολή AT+NAME=Νέο όνομα. Έτσι, αν για παράδειγμα φτιάχνουμε έναν έξυπνο κήπο όπου θα συνδέεται με το κινητό μας μέσω Bluetooth για να στέλνει δεδομένα, μπορούμε να δώσουμε την εντολή AT+NAME=Smart Garden.

Αλλάζουμε το όνομα του HC-05 σε Smart Garden

Για να ελέγξουμε αν όντως έγινε η αλλαγή, μπορούμε να δώσουμε ξανά την εντολή AT+NAME για να δούμε το όνομα της μονάδας.

Δίνοντας την εντολή AT+NAME βλέπουμε πως το όνομα του HC-05 έχει πλέον αλλάξει

Για να αλλάξουμε τον κωδικό της μονάδας όταν γίνεται η σύζευξη με άλλες συσκευές Bluetooth χρησιμοποιούμε την εντολή AT+PSWD=Νέος κωδικός

Δίνοντας την εντολή AT+PSWD βλέπουμε τον τρέχοντα κωδικό της μονάδας
Αλλάζουμε τον κωδικό σε 0000 με την εντολή AT+PSWD=0000

Διαδραστικά Μουσεία με Makey Makey

Μια συνεργασία των Ομίλων «Μάγοι της Τεχνολογίας» και «Τέχνη και Πολιτισμός» του Πειραματικού Δημοτικού Σχολείου Φλώρινας κατά το σχολικό έτος 2017-2018.

Τρία διαδραστικά μουσεία με εκθέματα εκτυπωμένα σε 3Δ εκτυπωτή, τα οποία έχουν αισθητήρες αφής και μόλις τα αγγίξουμε παρουσιάζονται πληροφορίες και εικόνες μαζί με αφήγηση στον συνδεδεμένο υπολογιστή.

Τον Οκτώβριο του 2017 αποφασίσαμε με τον συνάδερφο Παύλο Σταυρίδη που είναι υπεύθυνος του Ομίλου «Τέχνη και Πολιτισμός» να συνεργαστούμε ώστε να δημιουργήσουμε τα διαδραστικά μουσεία. Ως θέμα επιλέξαμε τα μνημεία Ελληνικού Πολιτισμού που βρίσκονται σε μουσεία του εξωτερικού.

Τα παιδιά του ομίλου «Τέχνη και Πολιτισμός» ανέλαβαν να αναζητήσουν και να επιλέξουν τα εκθέματα που θα παρουσιαστούν στα μουσεία. Ταξινόμησαν τα εκθέματα σε τρεις ομάδες:

Τα μοντέλα για κάθε έκθεμα αναζητήθηκαν σε δικτυακούς τόπους όπως το thingiverse και το my mini factory και εκτυπώθηκαν στον 3Δ εκτυπωτή του σχολείου μας από τους μαθητές του ομίλου «Μάγοι της τεχνολογίας» οι οποίοι χειρίζονταν το πρόγραμμα Repetier για να ρυθμίσουν τις διαστάσεις και τις υπόλοιπες λεπτομέρειες της εκτύπωση (αν θα μπουν στηρίγματα κλπ).

Τα παιδιά του ομίλου «Τέχνη και πολιτισμός» ηχογράφησαν τις πληροφορίες που βρήκαν για κάθε έκθεμα και έδωσαν τα αρχεία ήχου στους μαθητές και τις μαθήτριες του ομίλου «Μάγοι της τεχνολογίας», οι οποίοι δημιούργησαν τρία προγράμματα στο Scratch τα οποία μπορείτε να κατεβάσετε εδώ: Προγράμματα – Διαδραστικά μουσεία

Κατασκευάζοντες τις μακέτες των μουσείων

Τα παιδιά του ομίλου «Τέχνη και πολιτισμός» κατασκεύασαν τις μακέτες των μουσείων από ξύλο μπάλσα, πλέξι γκλας και άλλα υλικά τις οποίες έδωσαν στους «Μάγους της τεχνολογίας» για να περάσουν τις καλωδιώσεις, τα makey makey και τους αισθητήρες αφής (απλά διπλόκαρφα). Στο κάθε έκθεμα υπάρχουν δυο διπλόκαρφα τα οποία συνδέονται το ένα στην γείωση του makey makey και το άλλο σε κάποιο από τα διαθέσιμα πλήκτρα.

Κατασκευάζοντες τις μακέτες των μουσείων
Διπλόκαρφα και καλωδιώσεις
Καλωδιώσεις στο Makey Makey

Τέλος τα παιδιά των δυο ομίλων συνεργάστηκαν και στην δημιουργία των πινακίδων των μουσείων.

Πινακίδα μουσείου
Πινακίδα μουσείου

Τα διαδραστικά μουσεία παρουσιάστηκαν στο 8ο Μαθητικό Φεστιβάλ Ψηφιακής Δημιουργίας, στις εκδηλώσεις για την Παγκόσμια Ημέρα Περιβάλλοντος και στην διήμερη έκθεση «Τα παιδιά της πόλης μας δημιουργούν» που συνδιοργανώθηκε από το Πειραματικό Δημοτικό Σχολείο Φλώρινας και τον ΦΣΦ Αριστοτέλη.

Από την παρουσίαση στο 8ο Μαθητικό Φεστιβάλ Ψηφιακής Δημιουργίας
Από την έκθεση “Οι μαθητές της πόλης μας δημιουργούν”

Ο έξυπνος κήπος

Το τελευταίο project της φετινής χρονιάς (2017-2018) με τα παιδιά του Ομίλου «Μικροί Χάκερ», ήταν ο έξυπνος κήπος. Απαιτητικό και χρονοβόρο έργο το οποίο μας πήρε αρκετές συναντήσεις και μήνες για να το ολοκληρώσουμε.

Η τελική κατασκευή μπορεί να φιλοξενήσει δυο γλάστρες και να ελέγχει την υγρασία του εδάφους τους, την θερμοκρασία του αέρα καθώς και την φωτεινότητα.

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

Ο έξυπνος κήπος επικοινωνεί με Bluetooth με το κινητό μας τηλέφωνο ή tablet με την βοήθεια εφαρμογής που κατασκευάσαμε και μπορούμε να βλέπουμε τις τιμές των αισθητήρων, καθώς και να αλλάζουμε τα όρια στα οποία ενεργοποιούνται οι αντλίες, τα φώτα και ο ανεμιστήρας.

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

Φύλλο εργασίας – υγρασία εδάφους

Κατασκευάζοντας τους δικούς μας αισθητήρες

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

Φύλλο εργασίας – Δοκιμή αισθητήρα υγρασίας εδάφους

Φύλλο εργασίας – Κατασκευή αισθητήρα υγρασίας εδάφους

Δοκιμάζοντας τους αισθητήρες

Μετά περάσαμε στον αισθητήρα θερμοκρασίας, τον οποίο και πάλι δοκιμάσαμε αξιοποιώντας το παρακάτω φύλλο εργασίας.

Φύλλο εργασίας – Δοκιμή αισθητήρα Θερμοκρασίας

Αφού ολοκληρώσαμε την εργασία με τους αισθητήρες, περάσαμε στα φώτα και τους κινητήρες. Για τον φωτισμό του κήπου αξιοποιήσαμε μια παλιά 12V ταινία led που είχαμε στο εργαστήριο, ενώ για τον αερισμό του κήπου αξιοποιήσαμε έναν από τους πολλούς ανεμιστήρες από παλιά PC που έχουμε στο υπόγειο του σχολείου.

Για τις δυο αντλίες χρησιμοποιήσαμε κινητήρες από CD-ROM από τους ίδιους παλιούς υπολογιστές ενώ εκτυπώσαμε στον 3D Printer του σχολείου διάφορα έτοιμα σχέδια από αντλίες που βρήκαμε στο thingiverse.

αντλίες με παλιούς κινητήρες από CD ROM

Επίσης από το thingiverse βρήκαμε και τα σχέδια για τις γλάστρες τα οποία εκτυπώσαμε και πάλι στον 3Δ εκτυπωτή.

Για να ελέγξουμε τις 2 αντλίες, τον ανεμιστήρα και την ταινία led με το Arduino χρησιμοποιήσαμε και 4 relay στα οποία συνδέσαμε έναν μετασχηματιστή 12 Volt.

Αναλυτικό σχηματικό έξυπνου κήπου

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

Το δεύτερο μέρος του προγραμματισμού αφορούσε την δημιουργία της εφαρμογής η οποία θα επικοινωνεί με τον έξυπνο κήπο με Bluetooth. Αξιοποιήσαμε την πλατφόρμα AppInventor και κατασκευάσαμε μια εφαρμογή η οποία μπορεί να παίρνει τις τιμές της θερμοκρασίας, της υγρασίας και του φωτισμού από τον κήπο, καθώς και να αλλάζει τα όρια στα οποία ενεργοποιούνται τα φώτα, οι αντλίες και ο ανεμιστήρας. Μπορείτε να κατεβάσετε ελεύθερα τα αρχεία apk και aia της εφαρμογής από εδώ: Προγράμματα

Ο σχεδιασμός της εφαρμογής στο AppInventor
Μέρος από τον κώδικα για την επικοινωνία της εφαρμογής με τον κήπο

Ο έξυπνος κήπος παρουσιάστηκε από τα παιδιά του Ομίλου στις εκδηλώσεις για την Παγκόσμια Ημέρα Περιβάλλοντος που έγιναν στο Νέο Πάρκο της Φλώρινας, καθώς και στην διήμερη έκθεση «Τα παιδιά της πόλης μας δημιουργούν» που συνδιοργάνωσε το σχολείο μας με τον ΦΣΦ Αριστοτέλη.

Παρουσίαση κατασκευής στις εκδηλώσεις για την Παγκόσμια Ημέρα Περιβάλλοντος
Παρουσίαση κατασκυεής στην έκθεση “Οι μαθητές της πόλης μας δημιουργούν”

Αυτόματα περιστρεφόμενος ηλιακός συλλέκτης

Ο αυτόματα περιστρεφόμενος ηλιακός συλλέκτης κατασκευάστηκε στο πλαίσιο των συναντήσεων του Ομίλου Μικροί Χάκερ κατά το σχολικό έτος 2017-2018. Απαιτητική κατασκευή η οποία χρειάστηκε αρκετές συναντήσεις για να ολοκληρωθεί. Περιλαμβάνει ένα μικρό ηλιακό πάνελ 5V το οποίο το περιστρέφει σε δυο άξονες ώστε να έχει την μέγιστη δυνατή απόδοση.

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

Στη συνέχεια αναζητήσαμε και εκτυπώσαμε στον 3Δ εκτυπωτή του σχολείου ένα έτοιμο σχέδιο για ένα περιστρεφόμενο πάνελ δυο αξόνων από το thingiverse.

Ο σχεδιασμός των ηλεκτρονικών κυκλωμάτων έγινε στην πλατφόρμα tinkercad. Εκτός από το Arduino τα ηλεκτρονικά που χρησιμοποιήσαμε είναι:

  • Δυο κινητήρες servo
  • Τέσσερις αισθητήρες φωτός
  • Δυο ποτενσιόμετρα
  • Ένα push button
  • Δυο λαμπάκια led
  • Διάφορες αντιστάσεις
Σχηματικό ηλεκτρονικών

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

Ομάδες εργασίας
Κατά την διάρκεια της κατασκευής
Μόνωση καλωδίων
Κόλληση καλωδίων
Βίδωμα – συναρμολόγηση

Θέλαμε η κατασκευή μας να έχει δυο δυνατότητες λειτουργίας:

  • Χειροκίνητη, όπου θα περιστρέφαμε τους κινητήρες με τα δυο ποτενσιόμετρα
  • Αυτόματη, όπου η θέση του φωτοβολταϊκού θα ελέγχονταν από τους αισθητήρες φωτός.

Για αυτόν τον λόγο προγραμματίσαμε την συσκευή να αλλάζει κατάσταση με την χρήση ενός push button και να μας ειδοποιεί για την κατάσταση με δύο φωτάκια led. Το πρόγραμμα έγινε με την χρήση της πλατφόρμα tinkercad. Μπορείτε να κατεβάσετε ένα pdf με την επεξήγηση του προγράμματος εδώ:Κώδικας φωτοβολταικού

Τα παιδιά παρουσίασαν την κατασκευή τους στο 8ο Μαθητικό Φεστιβάλ Ψηφιακής Δημιουργίας, στις εκδηλώσεις για την Παγκόσμια Ημέρα Περιβάλλοντος και στην διήμερη έκθεση «Τα παιδιά της πόλης μας δημιουργούν» που συνδιοργανώθηκε από το Πειραματικό Δημοτικό Σχολείο Φλώρινας και τον ΦΣΦ Αριστοτέλη.

Παρουσίαση των παιδιών στο 8 Μαθητικό Φεστιβάλ Ψηφιακής Δημιουργίας

Από την έκθεση “Τα παιδιά της πόλης μας Δημιουργούν”