Hvordan programmere Arduino med Python: Komplett veiledning og eksempler

  • PySerial-biblioteket tillater sømløs kommunikasjon mellom Arduino og Python over den serielle porten.
  • Det er mulig å sende kommandoer og motta data mellom Arduino-kort og Python-skript enkelt.
  • Integrasjon med bildebehandling ved bruk av OpenCV utvider mulighetene til Arduino.
  • Elektroniske oppgaver kan automatiseres ved å kombinere Python, Arduino sensorer og aktuatorer.

python arduino

Visste du at du kan kontrollere et Arduino-brett med bare Python? Selv om Arduinos morsmål er basert på C++, er det en ganske tilgjengelig måte å programmere og kommunisere Arduino-prosjektene dine ved å bruke Python, takket være spesialiserte biblioteker som PySerial. Denne kombinasjonen av begge verdener er ikke bare interessant, men også veldig kraftig, spesielt for de som ønsker å integrere elektronikk med databehandling, datasyn eller til og med kunstig intelligens. Hvis du ønsker å gå dypere inn i dette emnet, kan du konsultere vår praktisk guide.

I denne artikkelen forklarer vi hva du trenger, hvordan du kobler Arduino til Python, og viser deg flere praktiske eksempler. som du kan følge trinn for trinn for å begynne å kontrollere brettet ditt ved hjelp av Python-skript. Alt dette er forklart klart og med en struktur designet for både nybegynnere og de som allerede har litt bakgrunn fra programmering og elektronikk.

Kan Arduino programmeres direkte med Python?

Ja, men med nyanser. Arduino er naturlig programmert ved å bruke sitt eget utviklingsmiljø (Arduino IDE), som bruker et C++-basert språk. Imidlertid takket være bruken av biblioteker som PySerial og andre alternativer som Snek eller MicroPython (men med maskinvarebegrensninger), er det mulig å etablere kommunikasjon mellom Python og Arduino for å kontrollere brettet eller samhandle med dets periferiutstyr. For mer informasjon om MicroPython kan du lese vår artikkel om Hva er nytt i MicroPython.

Den vanligste måten å sende data til Arduino på er å bruke Python. gjennom den serielle porten, og styret tolker dem til å utføre fysiske handlinger (som å slå på lysdioder eller lese sensorer). Vi kan også gjøre det motsatte: la Arduino sende data til Python og få dem til å vise, behandle eller lagre dem.

Verktøy som trengs for å komme i gang

Før vi blir skitne til med kabler og kode, må du ha noen grunnleggende ting klare:

  • Et Arduino-brett: Enhver modell vil gjøre, selv om de vanligste er Arduino UNO eller Nano.
  • Kabel-USB for å koble Arduino til datamaskinen.
  • Python installert på datamaskinen din. Du kan få det fra det offisielle Python-nettstedet.
  • Installerer PySerial, biblioteket som muliggjør seriell kommunikasjon mellom Arduino og Python. Du kan installere den ved å kjøre i terminalen:
pip install pyserial

PySerial er nøkkelen som lar oss sende kommandoer fra Python og motta svar fra Arduino som om vi chattet med en elektronisk robot.

Trinn 1: Koble Arduino til Python via seriell port

En av de vanligste formene for interaksjon er å sende data fra et Python-skript til Arduino for å slå en LED på eller av.. La oss se hvordan du gjør det steg for steg.

1. Last opp et grunnleggende program til Arduino

Denne koden lastes fra Arduino IDE og vil være ansvarlig for å kontrollere LED-en integrert på pin 13, avhengig av dataene mottatt via seriell port:

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);
    }
  }
}

Denne skissen tolker dataene som mottas av den serielle porten. Hvis den mottar en '1', slår den på LED-en; Hvis den mottar en '0', slår den den av. For flere eksempler på Arduino-prosjekter, besøk artikkelen vår om Hvordan lage et sjakksett med Arduino.

2. Send kommandoer fra Python

Når koden er lastet inn på brettet, lager vi et Python-skript som er ansvarlig for å sende kommandoene:

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()

Vær oppmerksom på at du må erstatte 'COM3' med den tilsvarende porten på operativsystemet ditt. I Windows er det vanligvis COM3 eller COM4; på Linux, noe sånt som /dev/ttyUSB0.

Leser data fra sensorer koblet til Arduino

I tillegg til å sende instruksjoner, kan vi bruke Python til å lese data sendt av Arduino, for eksempel fra en temperatursensor. For en veiledning om hvordan du bruker forskjellige sensorer, anbefaler vi Denne artikkelen om DPS310-sensoren.

1. Arduino-kode for å lese en sensor

Følgende rutine leser en analog verdi (som utgangen fra en LM35-sensor) og sender den gjennom den serielle porten:

int sensorPin = A0;

void setup() {
  Serial.begin(9600);
}

void loop() {
  int sensorValue = analogRead(sensorPin);
  Serial.println(sensorValue);
  delay(1000);
}

2. Python-skript for å lese verdiene

Fra Python kan vi lese disse dataene og vise dem på skjermen:

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)

Denne enkle sløyfen lar oss vise de målte verdiene direkte på terminalen vår.

Sende data fra Python til Arduino med praktiske eksempler

La oss se på et annet eksempel der vi sender et tall fra 1 til 9 fra Python, og Arduino blinker LED-en så mange ganger:

Skisse i 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-skript for å sende verdien

import serial
import time

arduino = serial.Serial("COM4", 9600)
time.sleep(2)

arduino.write(b'5')  # Parpadea 5 veces
arduino.close()

Denne typen interaksjon er ideell for å lage brukergrensesnitt i Python., og at de intuitivt kontrollerer fysiske enheter. I denne sammenhengen kan du også utforske mer om Hvordan bruke elektroniske skjermer med Arduino.

Avansert eksempel: deteksjon med datasyn

Et mer avansert prosjekt som demonstrerer kraften ved å kombinere Arduino med Python er å bruke Datasyn med OpenCV og MediaPipe for å oppdage om en person har på seg maske, og kontrollere lysdioder på Arduino basert på deteksjonen.

Arduino: kontrollerer to lysdioder

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 med OpenCV og MediaPipe

I Python-koden analyseres kamerabildet, oppdager ansikter, og avhengig av om de har på seg en maske eller ikke, sendes den tilsvarende verdien:

# fragmento clave
if LABELS] == "Con_mascarilla":
    ser.write(b'P')
else:
    ser.write(b'N')

Dette eksemplet viser hvor kraftig kombinasjonen av Python og Arduino er., ettersom den lar den fysiske verden kobles sammen med sofistikerte algoritmer som ansiktsgjenkjenning eller gjenstandsgjenkjenning.

Programmering av Arduino med Python er fullt mulig, tilgjengelig og til og med morsomt. Fra å tenne en LED til å implementere komplekse systemer med sensorer og datasyn, er mulighetene uendelige. Python fungerer som et kraftig grensesnitt som lar deg ta Arduino-prosjektene dine til neste nivå. Hvis du leter etter en praktisk måte å bruke programmeringsferdighetene dine på eller gi Arduino-brettene et nytt liv, er denne kombinasjonen definitivt veien å gå.


Bli den første til å kommentere

Legg igjen kommentaren

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Kontroller SPAM, kommentaradministrasjon.
  3. Legitimering: Ditt samtykke
  4. Kommunikasjon av dataene: Dataene vil ikke bli kommunisert til tredjeparter bortsett fra ved juridisk forpliktelse.
  5. Datalagring: Database vert for Occentus Networks (EU)
  6. Rettigheter: Når som helst kan du begrense, gjenopprette og slette informasjonen din.