Shin kun san zaku iya sarrafa allon Arduino ta amfani da Python kawai? Ko da yake yaren Arduino ya dogara ne akan C++, akwai hanyar da ta dace don tsarawa da sadarwa ayyukan Arduino ta amfani da Python, godiya ga ƙwararrun ɗakunan karatu kamar PySerial. Wannan haɗin kai na duniyoyin biyu ba wai kawai abin sha'awa ba ne, har ma yana da ƙarfi sosai, musamman ga waɗanda ke neman haɗa kayan lantarki tare da sarrafa bayanai, hangen nesa na kwamfuta, ko ma fasaha na wucin gadi. Idan kuna son zurfafa zurfafa cikin wannan batu, kuna iya tuntuɓar mu Jagora mai amfani.
A cikin wannan labarin mun bayyana abin da kuke buƙata, yadda ake haɗa Arduino zuwa Python, kuma mun nuna muku misalai masu amfani da yawa. cewa zaku iya bi mataki zuwa mataki don fara sarrafa allon ku ta amfani da rubutun Python. Duk waɗannan an bayyana su a fili kuma tare da tsarin da aka tsara don masu farawa da waɗanda suka riga sun sami wani tushe a cikin shirye-shirye da kayan lantarki.
Za a iya shirya Arduino kai tsaye tare da Python?
Ee, kodayake tare da nuances. Arduino an tsara shi ta asali ta amfani da yanayin ci gabansa (Arduino IDE), wanda ke amfani da yare na tushen C++. Duk da haka, godiya ga amfani da dakunan karatu kamar PySerial da sauran hanyoyin kamar Snek ko MicroPython (ko da yake tare da iyakokin kayan aiki), yana yiwuwa a kafa sadarwa tsakanin Python da Arduino don sarrafa allon ko yin hulɗa tare da kayan aiki. Don ƙarin bayani game da MicroPython, kuna iya karanta labarinmu game da Menene sabo a cikin MicroPython.
Mafi yawan hanyar aika bayanai zuwa Arduino ita ce amfani da Python. ta hanyar tashar jiragen ruwa, kuma hukumar tana fassara su don yin ayyukan jiki (kamar kunna LEDs ko na'urori masu aunawa). Hakanan zamu iya yin akasin haka: Arduino ya aika da bayanai zuwa Python kuma a nuna shi, sarrafa shi, ko adana shi.
Kayan aikin da ake buƙata don farawa
Kafin mu ƙazantar da hannayenmu da igiyoyi da lambobi, kuna buƙatar shirya ƴan abubuwan asali:
- Wani jirgin Arduino: Duk wani samfurin zai yi, kodayake mafi yawan su ne Arduino UNO ya da Nano.
- Kebul na USB don haɗa Arduino zuwa kwamfutarka.
- An shigar da Python akan kwamfutarka. Kuna iya samun shi daga gare ta gidan yanar gizon Python na hukuma.
- Ana shigar da PySerial, ɗakin karatu wanda ke ba da damar sadarwar serial tsakanin Arduino da Python. Kuna iya shigar da shi ta hanyar gudu a cikin tashar:
pip install pyserial
PySerial shine maɓalli wanda ke ba mu damar aika umarni daga Python kuma mu karɓi amsa daga Arduino kamar muna magana da robot ɗin lantarki.
Mataki 1: Haɗa Arduino zuwa Python ta hanyar tashar jiragen ruwa
Daya daga cikin mafi yawan nau'ikan mu'amala shine aika bayanai daga rubutun Python zuwa Arduino don kunna ko kashe LED.. Bari mu ga yadda za a yi shi mataki-mataki.
1. Loda ainihin shirin zuwa Arduino
An ɗora wannan lambar daga Arduino IDE kuma za ta kasance alhakin sarrafa LED ɗin da aka haɗa akan fil 13, dangane da bayanan da aka karɓa ta hanyar tashar jiragen ruwa:
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);
}
}
}
Wannan zane yana fassara bayanan da aka karɓa ta tashar tashar jiragen ruwa. Idan ya karɓi '1', yana kunna LED; Idan ya karɓi '0', yana kashe shi. Don ƙarin misalan ayyukan Arduino, ziyarci labarin mu akan Yadda ake ƙirƙirar saitin dara tare da Arduino.
2. Aika umarni daga Python
Da zarar an ɗora lambar a kan allo, muna ƙirƙirar rubutun Python wanda ke da alhakin aika umarni:
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()
Lura cewa dole ne ka maye gurbin 'COM3' tare da tashar tashar da ta dace a kan tsarin aiki. A cikin Windows yawanci COM3 ko COM4 ne; akan Linux, wani abu kamar /dev/ttyUSB0.
Karatun bayanai daga na'urori masu auna firikwensin da aka haɗa zuwa Arduino
Baya ga aika umarni, za mu iya amfani da Python don karanta bayanan da Arduino ya aiko, misali daga firikwensin zafin jiki. Don jagora kan yadda ake amfani da na'urori masu auna firikwensin daban-daban, muna ba da shawarar Wannan labarin game da firikwensin DPS310.
1. Arduino code don karanta firikwensin
Mai zuwa na yau da kullun yana karanta ƙimar analog (kamar fitowar firikwensin LM35) kuma ya aika ta tashar tashar jiragen ruwa:
int sensorPin = A0;
void setup() {
Serial.begin(9600);
}
void loop() {
int sensorValue = analogRead(sensorPin);
Serial.println(sensorValue);
delay(1000);
}
2. Rubutun Python don karanta dabi'u
Daga Python za mu iya karanta waɗannan bayanai kuma mu nuna su akan allon:
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)
Wannan madauki mai sauƙi yana ba mu damar nuna ƙimar ƙima kai tsaye akan tashar mu.
Aika bayanai daga Python zuwa Arduino tare da misalai masu amfani
Bari mu kalli wani misali inda muke aika lamba daga 1 zuwa 9 daga Python, kuma Arduino yana lumshe LED din adadin sau:
Sketch in 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);
}
}
}
}
Rubutun Python don aika darajar
import serial
import time
arduino = serial.Serial("COM4", 9600)
time.sleep(2)
arduino.write(b'5') # Parpadea 5 veces
arduino.close()
Irin wannan hulɗar tana da kyau don ƙirƙirar mu'amalar masu amfani a cikin Python., da kuma cewa da ilhama suna sarrafa na'urorin jiki. A cikin wannan mahallin, zaku iya bincika ƙarin bayani game da Yadda ake amfani da nunin lantarki tare da Arduino.
Babban misali: ganowa tare da hangen nesa na kwamfuta
Babban aikin ci gaba wanda ke nuna ikon haɗa Arduino tare da Python shine amfani Hangen kwamfuta tare da OpenCV da MediaPipe don gano ko mutum yana sanye da abin rufe fuska, da sarrafa LEDs akan Arduino dangane da ganowa.
Arduino: sarrafa LEDs guda biyu
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 tare da OpenCV da MediaPipe
A cikin lambar Python, ana nazarin hoton kyamarar, ana gano fuskoki, kuma dangane da ko suna sanye da abin rufe fuska ko a'a, ana aika ƙimar daidai:
# fragmento clave
if LABELS] == "Con_mascarilla":
ser.write(b'P')
else:
ser.write(b'N')
Wannan misalin yana nuna ƙarfin haɗin Python da Arduino., kamar yadda yake ba da damar duniyar zahiri ta haɗa tare da ƙayyadaddun algorithms kamar tantance fuska ko gano abu.
Shirye-shiryen Arduino tare da Python gaba ɗaya mai yuwuwa ne, samun dama, har ma da daɗi. Daga kunna LED zuwa aiwatar da hadaddun tsarin tare da na'urori masu auna firikwensin da hangen nesa na kwamfuta, yuwuwar ba su da iyaka. Python yana aiki azaman ƙaƙƙarfan dubawa wanda ke ba ku damar ɗaukar ayyukan ku na Arduino zuwa mataki na gaba. Idan kuna neman hanya mai amfani don amfani da ƙwarewar shirye-shiryenku ko ba allon Arduino rayuwa ta biyu, tabbas wannan haɗin gwiwa shine hanyar da zaku bi.