Στέλνουμε δεδομένα από το ρομπότ R2 στο κινητό 📱🤖

Στέλνουμε δεδομένα από το ρομπότ R2 στο κινητό 📱🤖

Τι θα κάνουμε σήμερα;

Σήμερα θα κάνουμε το ρομπότ R2 να “μιλήσει” με το κινητό μας. Το R2 θα στέλνει:

  • τη συνολική απόσταση που έχει διανύσει
  • την απόσταση από το μπροστινό ρομπότ (αισθητήρας απόστασης)
  • την ταχύτητά του

και το κινητό μας, με μια εφαρμογή στο App Inventor, θα:

  • λαμβάνει τα δεδομένα
  • τα χωρίζει
  • και τα εμφανίζει στην οθόνη.

📌 Δεν μας ενδιαφέρει σήμερα πώς υπολογίζονται αυτά τα νούμερα. Σήμερα μας ενδιαφέρει μόνο η αποστολή και η λήψη.


Τι θα μάθουμε;

Μετά το εργαστήριο θα μπορείς να εξηγήσεις:

  1. Τι σημαίνει ότι δύο συσκευές επικοινωνούν με Bluetooth Low Energy (BLE)
  2. Πώς το ρομπότ στέλνει δεδομένα σαν κείμενο
  3. Τι είναι μια λίστα
  4. Πώς χωρίζουμε ένα μήνυμα σε κομμάτια
  5. Πώς εμφανίζουμε δεδομένα σε μια εφαρμογή κινητού

Υλικά

  • Ρομπότ 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 είναι:

  1. Ενώνει τα δεδομένα σε ένα κείμενο
  2. Τα στέλνει μέσω Bluetooth BLE

Εμείς έχουμε αποθηκευμένα σε μεταβλητές τα δεδομένα μας, δηλαδή την συνολική απόσταση (totalDistance), την απόσταση από το μπροστά ρομπότ (frontDistance) και την ταχύτητα (speed).

➡️ και τα στέλνει από τη σειριακή θύρα του BLE.

Αρχικά πριν το “Για πάντα” θα πρέπει να αρχικοποιήσουμε την σειριακή επικοινωνία (Bluetooth) και να ορίσουμε την ταχύτητα. Την αφήνουμε στο 9600
Μέσα στο “Για πάντα” και ειδικότερα μέσα στο εαν που υπολογίζουμε την ταχύτητα και την απόσταση και το οποίο γίνεται κάθε δευτερόλεπτο βάζουμε την εντολή που στέλνει κείμενο. Το κείμενο αποτελείται από τις μεταβλητές μας χωρισμένες με κόμμα

Στο App Inventor: τι κάνουμε;

Στο App Inventor δεν θα μπούμε σε πολλές τεχνικές λεπτομέρειες. Θα κρατήσουμε μόνο τα βασικά βήματα. Πριν γράψουμε πρόγραμμα, πρέπει να σχεδιάσουμε την οθόνη της εφαρμογής μας. Η εφαρμογή μας θα κάνει τέσσερα πράγματα:

  1. Θα δείχνει αν είμαστε συνδεδεμένοι με το ρομπότ
  2. Θα δείχνει την ταχύτητα
  3. Θα δείχνει τη συνολική απόσταση
  4. Θα δείχνει την απόσταση από το μπροστινό ρομπότ

Βήμα 1: Τι στοιχεία θα βάλουμε στην οθόνη;

1️⃣ Τέσσερα Labels

Θα χρειαστούμε 4 Label:

  1. LabelConnection
    Θα δείχνει:
    • «Δεν είμαι συνδεδεμένος»
    • ή «Συνδέθηκα με το R2 ✅»
  2. LabelSpeed
    Παράδειγμα: Ταχύτητα: 12 cm/s
  3. LabelDistance
    Παράδειγμα: Συνολική απόσταση: 120 cm
  4. LabelFrontDistance
    Παράδειγμα: Απόσταση μπροστά: 18 cm

📌 Τα Labels είναι απλώς κουτιά που δείχνουν κείμενο.


2️⃣ Ένα κουμπί σύνδεσης

Θα προσθέσουμε ένα Button:

  • Όνομα: ButtonConnect
  • Κείμενο: 👉 Σύνδεση με το R2

Όταν πατηθεί, η εφαρμογή θα προσπαθήσει να συνδεθεί με το ρομπότ.


3️⃣ Ένα BluetoothLE component

Στο κάτω μέρος (Non-visible components) προσθέτουμε:

  • BluetoothLE

Αυτό είναι το κομμάτι που:

  • “ακούει” τι στέλνει το ρομπότ
  • και μας δίνει τα δεδομένα.
Το Screen1 το έχω κάνει να έχει στοίχιση στο κέντρο και να είναι σε οριζόντιο προσανατολισμό

Βήμα 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.

Το κείμενο που έρχεται είναι σε μορφή λίστας (stringValues) και κρατάμε το πρώτο στοιχείο της που είναι το μήνυμα από το R2

Βήμα 4: Σπάμε το κείμενο σε λίστα

Χρησιμοποιούμε το μπλοκ:

χώρισε το κείμενο στο κόμμα

Έτσι παίρνουμε μια λίστα.


Βήμα 5: Παίρνουμε τα στοιχεία της λίστας

Από τη λίστα:

  • 1ο στοιχείο → συνολική απόσταση
  • 2ο στοιχείο → απόσταση από μπροστά
  • 3ο στοιχείο → ταχύτητα

📌 Στο App Inventor τα στοιχεία της λίστας ξεκινούν από το 1, όχι από το 0.


Βήμα 6: Τα δείχνουμε καλύτερα στην οθόνη 📱

Αντί να δείχνουμε ξερούς αριθμούς μπορούμε να εμπλουτίσουμε λίγο κάθε label. Παράδειγμα:

  • Απόσταση: 120 cm
  • Ταχύτητα: 35 cm/s
  • Απόσταση ασφαλείας: 18 cm

Για να το πετύχουμε αυτό θα εμφανίζουμε στα label μια ένωση (join) των δεδομένων με κείμενο.


Τι καταφέραμε

✔ Το ρομπότ έστειλε δεδομένα στο κινητό
✔ Το κινητό έλαβε ένα μήνυμα
✔ Το χωρίσαμε σε λίστα
✔ Εμφανίσαμε πραγματικές μετρήσεις στην οθόνη

Το R2 πλέον δεν είναι μόνο ρομπότ.
Είναι και πηγή δεδομένων.

Σχόλια

Δεν υπάρχουν ακόμη σχόλια. Γιατί δεν ξεκινάτε τη συζήτηση;

Αφήστε μια απάντηση