Τι θα κάνουμε σήμερα;
Σήμερα θα κάνουμε το ρομπότ R2 να “μιλήσει” με το κινητό μας. Το R2 θα στέλνει:
- τη συνολική απόσταση που έχει διανύσει
- την απόσταση από το μπροστινό ρομπότ (αισθητήρας απόστασης)
- την ταχύτητά του
και το κινητό μας, με μια εφαρμογή στο App Inventor, θα:
- λαμβάνει τα δεδομένα
- τα χωρίζει
- και τα εμφανίζει στην οθόνη.
📌 Δεν μας ενδιαφέρει σήμερα πώς υπολογίζονται αυτά τα νούμερα. Σήμερα μας ενδιαφέρει μόνο η αποστολή και η λήψη.
Τι θα μάθουμε;
Μετά το εργαστήριο θα μπορείς να εξηγήσεις:
- Τι σημαίνει ότι δύο συσκευές επικοινωνούν με Bluetooth Low Energy (BLE)
- Πώς το ρομπότ στέλνει δεδομένα σαν κείμενο
- Τι είναι μια λίστα
- Πώς χωρίζουμε ένα μήνυμα σε κομμάτια
- Πώς εμφανίζουμε δεδομένα σε μια εφαρμογή κινητού
Υλικά
- Ρομπότ R2 με Bluetooth BLE
- Κινητό ή tablet (Android)
- Υπολογιστής με Mind+ και App Inventor
- Εφαρμογή App Inventor (AI2 Companion)
Πώς “μιλάει” το ρομπότ με το κινητό;
Το R2 δεν στέλνει εικόνες ή κουμπιά. Στέλνει απλό κείμενο που αποτελείται από γράμματα, αριθμούς και σύμβολα. Παράδειγμα μηνύματος που στέλνει το R2:
120,18,12
Αυτό θα μπορούσε να σημαίνει:
- 120 → συνολική απόσταση (cm)
- 18 → απόσταση από μπροστινό ρομπότ (cm)
- 12 → ταχύτητα (cm/s)
📌 Όλα μαζί στέλνονται σαν μία πρόταση, όχι σαν τρία ξεχωριστά μηνύματα. Γιατί τα στέλνουμε όλα μαζί;
- είναι πιο απλό
- το Bluetooth στέλνει πιο εύκολα ένα μήνυμα
- και εμείς μπορούμε μετά να το σπάσουμε στο κινητό.
Ακριβώς όπως μια πρόταση:
«Μήλο,Αχλάδι,Μπανάνα»
Τι είναι η λίστα;
Όταν χωρίζουμε το κείμενο:
120,18,12
με το κόμμα , παίρνουμε μια λίστα:
- στοιχείο 1 → 120
- στοιχείο 2 → 18
- στοιχείο 3 → 12
📌 Η λίστα είναι σαν μια σειρά από κουτάκια, το ένα μετά το άλλο.
Στο ρομπότ R2
Το μόνο που κάνει το R2 είναι:
- Ενώνει τα δεδομένα σε ένα κείμενο
- Τα στέλνει μέσω Bluetooth BLE
Εμείς έχουμε αποθηκευμένα σε μεταβλητές τα δεδομένα μας, δηλαδή την συνολική απόσταση (totalDistance), την απόσταση από το μπροστά ρομπότ (frontDistance) και την ταχύτητα (speed).
➡️ και τα στέλνει από τη σειριακή θύρα του BLE.


Στο App Inventor: τι κάνουμε;
Στο App Inventor δεν θα μπούμε σε πολλές τεχνικές λεπτομέρειες. Θα κρατήσουμε μόνο τα βασικά βήματα. Πριν γράψουμε πρόγραμμα, πρέπει να σχεδιάσουμε την οθόνη της εφαρμογής μας. Η εφαρμογή μας θα κάνει τέσσερα πράγματα:
- Θα δείχνει αν είμαστε συνδεδεμένοι με το ρομπότ
- Θα δείχνει την ταχύτητα
- Θα δείχνει τη συνολική απόσταση
- Θα δείχνει την απόσταση από το μπροστινό ρομπότ
Βήμα 1: Τι στοιχεία θα βάλουμε στην οθόνη;
1️⃣ Τέσσερα Labels
Θα χρειαστούμε 4 Label:
- LabelConnection
Θα δείχνει:- «Δεν είμαι συνδεδεμένος»
- ή «Συνδέθηκα με το R2 ✅»
- LabelSpeed
Παράδειγμα:Ταχύτητα: 12 cm/s - LabelDistance
Παράδειγμα:Συνολική απόσταση: 120 cm - LabelFrontDistance
Παράδειγμα:Απόσταση μπροστά: 18 cm
📌 Τα Labels είναι απλώς κουτιά που δείχνουν κείμενο.
2️⃣ Ένα κουμπί σύνδεσης
Θα προσθέσουμε ένα Button:
- Όνομα:
ButtonConnect - Κείμενο: 👉
Σύνδεση με το R2
Όταν πατηθεί, η εφαρμογή θα προσπαθήσει να συνδεθεί με το ρομπότ.
3️⃣ Ένα BluetoothLE component
Στο κάτω μέρος (Non-visible components) προσθέτουμε:
- BluetoothLE
Αυτό είναι το κομμάτι που:
- “ακούει” τι στέλνει το ρομπότ
- και μας δίνει τα δεδομένα.
Βήμα 2: Συνδεόμαστε με το R2 μέσω BLE
Πάμε τώρα στα blocks του κώδικα. Ποια είναι η λογική που θα ακολουθήσουμε;
- Χρησιμοποιούμε BluetoothLE
- Βρίσκουμε τη συσκευή του R2
- Συνδεόμαστε
📌 Από εδώ και πέρα το κινητό “ακούει” το ρομπότ και περιμένει να δει αν θα στείλει κάτι.
Οι μεταβλητές μας 🧠
Για να οργανώσουμε το πρόγραμμα, θα χρησιμοποιήσουμε τρεις βασικές μεταβλητές:
🔹 rawText
- Θα κρατάει ολόκληρο το κείμενο που έρχεται από το ρομπότ
- Παράδειγμα:
"120,18,12"

🔹 parts
- Θα είναι μια λίστα
- Εκεί θα σπάμε το
rawTextστο κόμμα
Παράδειγμα:
- parts[1] → 120
- parts[2] → 18
- parts[3] → 12

🔹 robotAddress
- Εδώ γράφουμε τη Bluetooth διεύθυνση (MAC) του R2. Το κάθε ρομπότ έχει την δική του ξεχωριστή διεύθυνση την οποία έχουμε σημειώσει πάνω τους.
- Έτσι η σύνδεση γίνεται αυτόματα, χωρίς ψάξιμο.
📌 Αυτό μας γλιτώνει χρόνο και μπερδέματα.

Προετοιμάζουμε το Bluetooth (block prepareBT)
Θα φτιάξουμε ένα block που λέγεται prepareBT. Αυτό το block:
- λέει στο κινητό
👉 «Όταν έρθει κείμενο από το Bluetooth, κράτα το.»
Εκεί χρησιμοποιούμε το registerForStrings
📌 Δεν χρειάζεται να καταλάβουμε τι κάνει εσωτερικά. Μας αρκεί να ξέρουμε ότι:
“Από εδώ και πέρα, το κινητό ακούει το ρομπότ.”

Όταν πατάμε το κουμπί σύνδεσης 🔘
Στο block:
when ButtonConnect.Click
- προσπαθούμε να συνδεθούμε με τη διεύθυνση
robotAddress - αλλάζουμε το LabelConnection σε
Προσπάθεια σύνδεσης...

Αν η σύνδεση αποτύχει ❌
Στο block:
when BluetoothLE.ConnectionFailed
- γράφουμε στο LabelConnection
Η σύνδεση απέτυχε ❌
📌 Αυτό βοηθάει πολύ στο debugging.

Όταν η σύνδεση πετύχει ✅
Στο block:
when BluetoothLE.Connected
- γράφουμε στο LabelConnection
Συνδέθηκε με το R2 ✅ - Καλούμε το blovk prepareBT που φτιάξαμε πριν για να ετοιμάσει την λήψη δεδομένων κειμένου
Τώρα το κινητό είναι έτοιμο να λάβει δεδομένα.

Βήμα 3: Λαμβάνουμε ένα μήνυμα
Το Bluetooth μας δίνει ένα κείμενο, π.χ.:
120,18,35
Αυτό το αποθηκεύουμε σε μια μεταβλητή, π.χ. rawText.

Βήμα 4: Σπάμε το κείμενο σε λίστα
Χρησιμοποιούμε το μπλοκ:
χώρισε το κείμενο στο κόμμα
Έτσι παίρνουμε μια λίστα.
Βήμα 5: Παίρνουμε τα στοιχεία της λίστας
Από τη λίστα:
- 1ο στοιχείο → συνολική απόσταση
- 2ο στοιχείο → απόσταση από μπροστά
- 3ο στοιχείο → ταχύτητα
📌 Στο App Inventor τα στοιχεία της λίστας ξεκινούν από το 1, όχι από το 0.
Βήμα 6: Τα δείχνουμε καλύτερα στην οθόνη 📱
Αντί να δείχνουμε ξερούς αριθμούς μπορούμε να εμπλουτίσουμε λίγο κάθε label. Παράδειγμα:
Απόσταση: 120 cmΤαχύτητα: 35 cm/sΑπόσταση ασφαλείας: 18 cm
Για να το πετύχουμε αυτό θα εμφανίζουμε στα label μια ένωση (join) των δεδομένων με κείμενο.
Τι καταφέραμε
✔ Το ρομπότ έστειλε δεδομένα στο κινητό
✔ Το κινητό έλαβε ένα μήνυμα
✔ Το χωρίσαμε σε λίστα
✔ Εμφανίσαμε πραγματικές μετρήσεις στην οθόνη
Το R2 πλέον δεν είναι μόνο ρομπότ.
Είναι και πηγή δεδομένων.




