Γνωρίζατε ότι μπορείτε να ελέγξετε έναν πίνακα Arduino χρησιμοποιώντας μόνο Python; Αν και η μητρική γλώσσα του Arduino βασίζεται στη C++, υπάρχει ένας αρκετά προσιτός τρόπος για να προγραμματίσετε και να επικοινωνήσετε τα έργα σας στο Arduino χρησιμοποιώντας Python, χάρη σε εξειδικευμένες βιβλιοθήκες όπως η PySerial. Αυτός ο συνδυασμός και των δύο κόσμων δεν είναι μόνο ενδιαφέρον αλλά και πολύ ισχυρός, ειδικά για όσους θέλουν να ενσωματώσουν τα ηλεκτρονικά με την επεξεργασία δεδομένων, την όραση υπολογιστή ή ακόμα και την τεχνητή νοημοσύνη. Εάν θέλετε να εμβαθύνετε σε αυτό το θέμα, μπορείτε να συμβουλευτείτε μας πρακτικός οδηγός.
Σε αυτό το άρθρο εξηγούμε τι χρειάζεστε, πώς να συνδέσετε το Arduino με την Python και σας δείχνουμε πολλά πρακτικά παραδείγματα. που μπορείτε να ακολουθήσετε βήμα προς βήμα για να αρχίσετε να ελέγχετε τον πίνακα σας χρησιμοποιώντας σενάρια Python. Όλα αυτά εξηγούνται ξεκάθαρα και με μια δομή σχεδιασμένη τόσο για αρχάριους όσο και για όσους έχουν ήδη κάποιο υπόβαθρο στον προγραμματισμό και τα ηλεκτρονικά.
Μπορεί το Arduino να προγραμματιστεί απευθείας με Python;
Ναι, αν και με αποχρώσεις. Το Arduino είναι εγγενώς προγραμματισμένο χρησιμοποιώντας το δικό του περιβάλλον ανάπτυξης (Arduino IDE), το οποίο χρησιμοποιεί μια γλώσσα που βασίζεται στη C++. Ωστόσο, χάρη στη χρήση βιβλιοθηκών όπως η PySerial και άλλες εναλλακτικές λύσεις όπως το Snek ή το MicroPython (αν και με περιορισμούς υλικού), είναι δυνατή η δημιουργία επικοινωνίας μεταξύ Python και Arduino για τον έλεγχο της πλακέτας ή την αλληλεπίδραση με τα περιφερειακά της. Για περισσότερες πληροφορίες σχετικά με το MicroPython, μπορείτε να διαβάσετε το άρθρο μας σχετικά Τι νέο υπάρχει στο MicroPython.
Ο πιο συνηθισμένος τρόπος αποστολής δεδομένων στο Arduino είναι η χρήση Python. μέσω της σειριακής θύρας και η πλακέτα τις ερμηνεύει ώστε να εκτελούν φυσικές ενέργειες (όπως ενεργοποίηση LED ή ανάγνωση αισθητήρων). Μπορούμε επίσης να κάνουμε το αντίθετο: να στείλει το Arduino δεδομένα στην Python και να τα εμφανίσει, να τα επεξεργαστεί ή να τα αποθηκεύσει.
Εργαλεία που χρειάζονται για να ξεκινήσετε
Προτού λερώσουμε τα χέρια μας με καλώδια και κωδικό, θα χρειαστεί να έχετε έτοιμα μερικά βασικά στοιχεία:
- Μια πλακέτα Arduino: Οποιοδήποτε μοντέλο θα κάνει, αν και τα πιο συνηθισμένα είναι τα Arduino UNO ή το Nano.
- Καλώδιο USB για να συνδέσετε το Arduino στον υπολογιστή σας.
- Η Python είναι εγκατεστημένη στον υπολογιστή σας. Μπορείτε να το πάρετε από την επίσημη ιστοσελίδα της Python.
- Εγκατάσταση του PySerial, τη βιβλιοθήκη που επιτρέπει τη σειριακή επικοινωνία μεταξύ Arduino και Python. Μπορείτε να το εγκαταστήσετε εκτελώντας στο τερματικό:
pip install pyserial
Το PySerial είναι το βασικό κομμάτι που μας επιτρέπει να στέλνουμε εντολές από την Python και να λαμβάνουμε απαντήσεις από το Arduino σαν να συνομιλούσαμε με ένα ηλεκτρονικό ρομπότ.
Βήμα 1: Συνδέστε το Arduino στην Python μέσω σειριακής θύρας
Μία από τις πιο κοινές μορφές αλληλεπίδρασης είναι η αποστολή δεδομένων από ένα σενάριο Python στο Arduino για να ενεργοποιήσετε ή να απενεργοποιήσετε ένα LED.. Ας δούμε πώς να το κάνουμε βήμα προς βήμα.
1. Ανεβάστε ένα βασικό πρόγραμμα στο Arduino
Αυτός ο κωδικός φορτώνεται από το Arduino IDE και θα είναι υπεύθυνος για τον έλεγχο του LED που είναι ενσωματωμένο στον ακροδέκτη 13, ανάλογα με τα δεδομένα που λαμβάνονται μέσω της σειριακής θύρας:
void setup() {
Serial.begin(9600);
pinMode(13, OUTPUT);
}
void loop() {
if (Serial.available() > 0) {
char data = Serial.read();
if (data == '1') {
digitalWrite(13, HIGH);
} else if (data == '0') {
digitalWrite(13, LOW);
}
}
}
Αυτό το σκίτσο ερμηνεύει τα δεδομένα που λαμβάνονται από τη σειριακή θύρα. Εάν λάβει ένα '1', ανάβει το LED. Εάν λάβει "0", το απενεργοποιεί. Για περισσότερα παραδείγματα έργων Arduino, επισκεφθείτε το άρθρο μας στο Πώς να δημιουργήσετε ένα σετ σκακιού με το Arduino.
2. Στείλτε εντολές από Python
Μόλις ο κώδικας φορτωθεί στον πίνακα, δημιουργούμε ένα σενάριο Python που είναι υπεύθυνο για την αποστολή των εντολών:
import serial
import time
# Inicializa la conexión
arduino = serial.Serial('COM3', 9600)
time.sleep(2)
# Enciende el LED
arduino.write(b'1')
print("LED encendido")
time.sleep(2)
# Apaga el LED
arduino.write(b'0')
print("LED apagado")
# Cierra la conexión
arduino.close()
Λάβετε υπόψη ότι πρέπει να αντικαταστήσετε το 'COM3' με την αντίστοιχη θύρα στο λειτουργικό σας σύστημα. Στα Windows είναι συνήθως COM3 ή COM4. σε Linux, κάτι σαν /dev/ttyUSB0.
Ανάγνωση δεδομένων από αισθητήρες συνδεδεμένους στο Arduino
Εκτός από την αποστολή οδηγιών, μπορούμε να χρησιμοποιήσουμε την Python για να διαβάσουμε δεδομένα που αποστέλλονται από το Arduino, για παράδειγμα από έναν αισθητήρα θερμοκρασίας. Για έναν οδηγό σχετικά με τον τρόπο χρήσης διαφορετικών αισθητήρων, σας προτείνουμε Αυτό το άρθρο σχετικά με τον αισθητήρα DPS310.
1. Κώδικας Arduino για την ανάγνωση ενός αισθητήρα
Η ακόλουθη ρουτίνα διαβάζει μια αναλογική τιμή (όπως η έξοδος ενός αισθητήρα LM35) και τη στέλνει μέσω της σειριακής θύρας:
int sensorPin = A0;
void setup() {
Serial.begin(9600);
}
void loop() {
int sensorValue = analogRead(sensorPin);
Serial.println(sensorValue);
delay(1000);
}
2. Σενάριο Python για να διαβάσετε τις τιμές
Από την Python μπορούμε να διαβάσουμε αυτά τα δεδομένα και να τα εμφανίσουμε στην οθόνη:
import serial
import time
arduino = serial.Serial('COM3', 9600)
time.sleep(2)
while True:
sensor_data = arduino.readline().decode('utf-8').strip()
print(f"Valor del sensor: {sensor_data}")
time.sleep(1)
Αυτός ο απλός βρόχος μας επιτρέπει να εμφανίζουμε τις μετρούμενες τιμές απευθείας στο τερματικό μας.
Αποστολή δεδομένων από την Python στο Arduino με πρακτικά παραδείγματα
Ας δούμε ένα άλλο παράδειγμα όπου στέλνουμε έναν αριθμό από το 1 έως το 9 από την Python και το Arduino αναβοσβήνει το LED τόσες φορές:
Σκίτσο στο Arduino
const int pinLED = 13;
void setup() {
Serial.begin(9600);
pinMode(pinLED, OUTPUT);
}
void loop() {
if (Serial.available() > 0) {
char option = Serial.read();
if (option >= '1' && option <= '9') {
option -= '0';
for (int i = 0; i < option; i++) {
digitalWrite(pinLED, HIGH);
delay(100);
digitalWrite(pinLED, LOW);
delay(200);
}
}
}
}
Σενάριο Python για αποστολή της τιμής
import serial
import time
arduino = serial.Serial("COM4", 9600)
time.sleep(2)
arduino.write(b'5') # Parpadea 5 veces
arduino.close()
Αυτός ο τύπος αλληλεπίδρασης είναι ιδανικός για τη δημιουργία διεπαφών χρήστη στην Python., και ότι ελέγχουν διαισθητικά τις φυσικές συσκευές. Σε αυτό το πλαίσιο, μπορείτε επίσης να εξερευνήσετε περισσότερα για Πώς να χρησιμοποιήσετε ηλεκτρονικές οθόνες με το Arduino.
Προηγμένο παράδειγμα: ανίχνευση με όραση υπολογιστή
Ένα πιο προηγμένο έργο που καταδεικνύει τη δύναμη του συνδυασμού του Arduino με την Python είναι να το χρησιμοποιήσετε Computer vision με OpenCV και MediaPipe για να εντοπίσετε εάν ένα άτομο φοράει μάσκα και να ελέγξετε τα LED στο Arduino με βάση την ανίχνευση.
Arduino: έλεγχος δύο LED
int led1 = 50;
int led2 = 51;
int option;
void setup() {
Serial.begin(9600);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
}
void loop() {
if (Serial.available() > 0){
option = Serial.read();
if(option == 'P'){
digitalWrite(led1, HIGH);
digitalWrite(led2, LOW);
}
if(option == 'N'){
digitalWrite(led1, LOW);
digitalWrite(led2, HIGH);
}
}
}
Python με OpenCV και MediaPipe
Στον κώδικα Python, η εικόνα της κάμερας αναλύεται, ανιχνεύει πρόσωπα και ανάλογα με το αν φοράνε μάσκα ή όχι, αποστέλλεται η αντίστοιχη τιμή:
# fragmento clave
if LABELS] == "Con_mascarilla":
ser.write(b'P')
else:
ser.write(b'N')
Αυτό το παράδειγμα δείχνει πόσο ισχυρός είναι ο συνδυασμός Python και Arduino., καθώς επιτρέπει στον φυσικό κόσμο να συνδεθεί με εξελιγμένους αλγόριθμους όπως η αναγνώριση προσώπου ή η ανίχνευση αντικειμένων.
Ο προγραμματισμός του Arduino με Python είναι απολύτως εφικτός, προσβάσιμος και ακόμη και διασκεδαστικός. Από το άναμμα ενός LED μέχρι την εφαρμογή πολύπλοκων συστημάτων με αισθητήρες και όραση υπολογιστή, οι δυνατότητες είναι ατελείωτες. Η Python λειτουργεί ως μια ισχυρή διεπαφή που σας επιτρέπει να μεταφέρετε τα έργα σας στο Arduino στο επόμενο επίπεδο. Αν ψάχνετε για έναν πρακτικό τρόπο να εφαρμόσετε τις προγραμματιστικές σας δεξιότητες ή να δώσετε μια δεύτερη ζωή στις πλακέτες σας Arduino, αυτός ο συνδυασμός είναι σίγουρα ο καλύτερος τρόπος.