🌐 Arduino Uno Q: Έλεγχος Relay μέσω Web – Το επόμενο επίπεδο στο Prototyping!

🌐 Arduino Uno Q: Έλεγχος Relay μέσω Web – Από το LED στην Πραγματική Αυτοματοποίηση

Καλώς ήρθατε στο "Ταξίδι στο Αύριο"! Σήμερα θα δούμε πώς το Arduino Uno Q αλλάζει τους κανόνες του παιχνιδιού. Δεν θα αναβοσβήσουμε απλώς το ενσωματωμένο LED της πλακέτας, αλλά θα χρησιμοποιήσουμε το επίσημο Bridge API για να ελέγξουμε ένα Relay Module μέσω Web.

Αυτό είναι το πρώτο βήμα για να χτίσετε ένα αυτόνομο σύστημα Smart Home που τρέχει Python και C++ ταυτόχρονα!

⚠️ ΕΠΙΣΗΜΗ ΠΡΟΕΙΔΟΠΟΙΗΣΗ ΑΣΦΑΛΕΙΑΣ

ΠΡΟΣΟΧΗ: Το παρόν εκπαιδευτικό project έχει σχεδιαστεί αποκλειστικά για χρήση με χαμηλή τάση (έως 12V DC). Η ενασχόληση με δίκτυα υψηλής τάσης (110V-240V AC) ενέχει θανάσιμο κίνδυνο ηλεκτροπληξίας και πρόκλησης πυρκαγιάς. Για οποιαδήποτε εφαρμογή που απαιτεί σύνδεση σε οικιακό δίκτυο ρεύματος, είναι απαραίτητο να απευθυνθείτε σε αδειούχο ηλεκτρολόγο ή εξειδικευμένο τεχνικό. Η χρήση των πληροφοριών γίνεται με δική σας αποκλειστική ευθύνη.


🏗️ Η Αρχιτεκτονική: Linux & MCU σε συνεργασία

Το Uno Q χρησιμοποιεί τη βιβλιοθήκη Arduino_RouterBridge. Τι σημαίνει αυτό στην πράξη;

  • Πλευρά Linux: Ο τετραπύρηνος επεξεργαστής Qualcomm τρέχει Python και "σερβίρει" ένα Web Dashboard σε πραγματικό χρόνο.

  • Η Γέφυρα (Bridge): Όταν πατάτε το κουμπί στο κινητό σας, η εντολή περνάει από τη "Γέφυρα" επικοινωνίας των δύο επεξεργαστών.

  • Πλευρά MCU: Ο μικροελεγκτής (πλευρά Arduino) λαμβάνει την εντολή και ενεργοποιεί το Pin 7, κάνοντας το Relay να "οπλίσει".


📦 Υλικά που θα χρειαστούμε

Για την υλοποίηση του project, τα εξαρτήματα είναι συγκεκριμένα:
  • Arduino Uno Q: Η κεντρική πλακέτα με τον υβριδικό επεξεργαστή.
  • Relay Module (5V): Ένα απλό relay (1-channel) που ενεργοποιείται με LOW σήμα.
  • Καλώδια Jumper (Female-to-Male): 3 καλώδια για τη σύνδεση.
  • Wi-Fi Δίκτυο: Για την πρόσβαση στο Web Dashboard.


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


🔌 Οδηγός Συνδεσμολογίας Hardware

Για να συνδέσουμε το Relay Module στο Arduino Uno Q, θα χρησιμοποιήσουμε 3 καλώδια Jumper (συνήθως Female-to-Male). 

Relay PinArduino Uno Q PinΠεριγραφή
VCC5VΠαροχή ρεύματος στο Relay
GNDGNDΓείωση συστήματος
IN / SIGDigital Pin 7Εντολή ελέγχου από το MCU

🛠️ Βήματα Σύνδεσης

  • Απενεργοποίηση: Βεβαιώσου ότι το Arduino Uno Q δεν είναι συνδεδεμένο στο ρεύμα ή στον υπολογιστή κατά τη διάρκεια των συνδέσεων.
  • Τροφοδοσία: Σύνδεσε το pin VCC του Relay στο pin 5V της πλακέτας Uno Q.
  • Γείωση: Σύνδεσε το pin GND του Relay σε οποιοδήποτε pin GND της πλακέτας.
  • Σήμα Ελέγχου: Σύνδεσε το pin IN (Input) του Relay στο Digital Pin 7. Αυτό είναι το pin που ορίσαμε στον κώδικα C++ ως RELAY_PIN.
  • Έλεγχος: Βεβαιώσου ότι οι επαφές είναι σταθερές και δεν ακουμπούν μεταξύ τους.

🔍 Τι να προσέξεις (Expert Tips)


  • Negative Logic: Τα περισσότερα Relay Modules που κυκλοφορούν στην αγορά λειτουργούν με "Αρνητική Λογική". Αυτό σημαίνει ότι όταν το Arduino δίνει σήμα LOW, το Relay ενεργοποιείται (ακούμε το κλικ). Γι' αυτό στον κώδικα χρησιμοποιούμε τη γραμμή: digitalWrite(RELAY_PIN, state ? LOW : HIGH);.
  • Απομόνωση (Optocoupler): Αν το Relay σου έχει ένα jumper με την ένδειξη "JD-VCC", άφησέ το στη θέση του. Αυτό επιτρέπει στην πλακέτα να προστατεύεται από την επιστροφή ρεύματος του πηνίου.
  • Χωρίς Φορτίο: Στο τρέχον project, οι επαφές στην άλλη πλευρά του Relay (NO, COM, NC) μένουν κενές.




💻 Το Λογισμικό (Το Δίδυμο του Κώδικα)

Για να λειτουργήσει το σύστημα, χρειαζόμαστε δύο κομμάτια κώδικα που συνεργάζονται άψογα:

1. Κώδικας MCU (C++)

Βασισμένο στο πρότυπο της Arduino SRL, προσαρμοσμένο με τα πνευματικά δικαιώματα του καναλιού μας:

// SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc)
// SPDX-FileCopyrightText: Copyright (C) 2026 Τεχνολογία, Ρομποτική και Προγραμματισμός
// SPDX-FileContributor: Τροποποιήθηκε από Τεχνολογία, Ρομποτική και Προγραμματισμός: Ταξίδι στο αύριο, 2026
// SPDX-License-Identifier: MPL-2.0

#include <Arduino_RouterBridge.h>

void setup() {
    pinMode(7, OUTPUT);
    // Ξεκινάμε με το Relay κλειστό (κατάσταση HIGH για modules με Negative Logic)
    digitalWrite(7, HIGH);

    Bridge.begin();
    // Εκθέτουμε τη συνάρτηση στη γέφυρα για να την καλεί η Python
    Bridge.provide("set_led_state", set_led_state);
}

void loop() {
    // Το Bridge διαχειρίζεται τα πάντα στο παρασκήνιο!
}

void set_led_state(bool state) {
    // LOW = Relay ON (Ενεργό) / HIGH = Relay OFF (Ανενεργό)
    digitalWrite(7, state ? LOW : HIGH);
}

2. Κώδικας Linux (Python)

Στην πλευρά του Linux, η Python αναλαμβάνει το Web Interface. Η κρίσιμη γραμμή είναι η Bridge.call("set_led_state", led_is_on), η οποία εκτελεί την κλήση RPC προς τον μικροελεγκτή. Χάρη στα WebSockets, η επικοινωνία είναι ακαριαία!

# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc)
# SPDX-FileCopyrightText: Copyright (C) 2026 Τεχνολογία, Ρομποτική και Προγραμματισμός
# SPDX-License-Identifier: MPL-2.0

from arduino.app_utils import *
from arduino.app_bricks.web_ui import WebUI

# Κατάσταση του Relay (ξεκινάει ως κλειστό)
relay_is_on = False

def get_relay_status():
    """Επιστρέφει την κατάσταση για το API."""
    return {
        "led_is_on": relay_is_on,
        "status_text": "ΣΥΣΚΕΥΗ ΕΝΕΡΓΗ" if relay_is_on else "ΣΥΣΚΕΥΗ ΑΝΕΝΕΡΓΗ"
    }

def toggle_relay_state(client, data):
    """Αλλάζει την κατάσταση του Relay όταν πατηθεί το κουμπί στο Web."""
    global relay_is_on
    relay_is_on = not relay_is_on

    # Κλήση της συνάρτησης C++ μέσω της Γέφυρας (RPC call)
    Bridge.call("set_led_state", relay_is_on)

    # Ενημέρωση όλων των συνδεδεμένων χρηστών/browsers
    ui.send_message('led_status_update', get_relay_status())

def on_get_initial_state(client, data):
    """Αποστολή της αρχικής κατάστασης κατά τη σύνδεση."""
    ui.send_message('led_status_update', get_relay_status(), client)

# Αρχικοποίηση του Web Interface
ui = WebUI()

# Σύνδεση των γεγονότων (messages) με τις συναρτήσεις Python
ui.on_message('toggle_led', toggle_relay_state)
ui.on_message('get_initial_state', on_get_initial_state)

# Εκκίνηση της εφαρμογής
App.run()

💡 Engineering Insight: Γιατί ακούμε το "Κλικ";

Το Relay που χρησιμοποιούμε είναι ένας ηλεκτρομηχανικός διακόπτης. Παρόλο που στο demo μας δεν έχουμε συνδεδεμένη λάμπα 220V, ο χαρακτηριστικός ήχος "Κλικ" είναι η απόλυτη απόδειξη ότι το "πάντρεμα" Python και C++ πέτυχε. Το ενσωματωμένο LED πάνω στο Relay module επιβεβαιώνει οπτικά ότι η εντολή από το Web Dashboard εκτελέστηκε σωστά.


🎬 Δείτε το Demo

Στο βίντεο που ακολουθεί, θα δείτε τη ζωντανή δοκιμή, το σχηματικό και την ανάλυση του κώδικα βήμα-βήμα.



Σας φάνηκε χρήσιμο; Γράψτε μου στα σχόλια αν έχετε το Uno Q και τι άλλο θα θέλατε να ελέγξουμε μέσω Web!

Μάθε περισσότερα στο επίσημο documentation της Arduino: https://docs.arduino.cc/hardware/uno-q/

👉 Κάντε εγγραφή στο "Ταξίδι στο αύριο" για να μη χάνετε κανένα project του 2026!

Σχόλια

Δημοφιλείς αναρτήσεις από αυτό το ιστολόγιο

Αυτόματο Φως Νύχτας

🚀 Διαγωνισμός Ρομποτικής & Αυτοματισμού! 🤖

🚗🤖 Φτιάξε το Δικό σου Μίνι Ρομποτικό Αυτοκίνητο με Arduino!