Cum se programează și se controlează un Arduino cu Python

Cum se programează și se controlează un Arduino cu Python

Python a luat lumea codificării cu asalt. Pe lângă apariția acestui nou limbaj, scena electronică DIY a înflorit și ea. Plăci de dezvoltare și calculatoare cu o singură placă de la companii precum Arduino și Raspberry Pi au schimbat modul în care oamenii creează produse electronice de casă. Nu ar fi minunat dacă ai putea programa un Arduino cu Python?





sună soneria funcționează cu google home

Nu există un sentiment mai bun decât combinarea a două lucruri interesante. Din păcate, este imposibil să programezi direct un Arduino cu Python, deoarece plăcile nu au nicio opțiune pentru interpretarea integrată a limbajului. Totuși, ceea ce este posibil este controlul direct pe USB folosind un program Python.





Acest articol vă va arăta cum să configurați un Arduino UNO (deși orice placă compatibilă Arduino poate funcționa aici) pentru a fi programat și controlat din linia de comandă utilizând programe Python. Acest tutorial este scris pentru Windows 10, dar funcționează și pentru Mac și Linux. Puteți folosi chiar și acest flux de lucru pentru a controla un Arduino direct de pe un Raspberry Pi pentru o experiență de dublu-jos-DIY finală.





Configurarea Arduino pentru Python

Pentru proiectul de astăzi vom folosi un Arduino Uno, împreună cu interfața pyFirmata pentru Python. Puteți utiliza aproape orice placă compatibilă Arduino pentru aceasta, deși la momentul scrierii numai interfața pyFfirmata este acceptată doar Arduino Uno, Mega, Due și Nano. Dacă sunteți deja un guru Python, puteți adăuga propriul suport de bord la pyFirmata - asigurați-vă că le actualizați GitHub dacă faceți acest lucru!

Dacă nu ați făcut-o deja, instalați Arduino IDE. Dacă sunteți complet nou în lumea microcontrolerelor, ghid pentru începători la Arduino vă va ajuta să puneți totul la punct.



Conectați placa Arduino și deschideți IDE-ul. Asigurați-vă că ați selectat placa și portul corecte în Instrumente meniul. Încărcați StandardFirmata schiță de exemplu și încărcați-l pe tablă. Acest lucru vă va permite să controlați Arduino direct atât timp cât este conectat la computer prin USB. Cu condiția ca schița să fie încărcată pe tablă fără erori, sunteți gata să mergeți mai departe.

Control Python și linie de comandă

Vom folosi Python 3.4 pentru a ne controla Arduino, deoarece modulul pe care îl veți instala îl specifică ca fiind cea mai recentă versiune compatibilă. Orice versiune înainte de aceasta ar trebui să funcționeze bine, iar versiunile ulterioare au fost raportate că funcționează. Puteți descărca Python 3.4 pentru Windows 10 de pe Fundația Python Software site. Dacă doriți să rulați mai multe versiuni de Python, ghidul nostru pentru mediile virtuale Python vă va putea ajuta.





Odată ce ați instalat Python, dorim să îl adăugăm la variabila PATH a sistemului dvs. Acest lucru ne va permite să rulăm codul Python direct din linia de comandă fără a fi nevoie să fie în directorul în care a fost instalat. Puteți face acest lucru deschizând Panou de control , căutare de Mediu inconjurator și faceți clic pe Editați variabilele de mediu ale sistemului . În partea de jos a ferestrei selectați variabile de mediu . Aceasta va afișa această fereastră:

Dacă vedeți deja CALE în listă, faceți clic pe editați și adăugați Piton și Python / Scripturi director. Dacă nu aveți o variabilă PATH, faceți clic pe nou și adăugați-o. Rețineți că Python a fost instalat direct în C: Aici. Dacă l-ați instalat în altă parte, va trebui să îl modificați pentru a reflecta acest lucru. Faceți clic pe OK înapoi în lanțul de ferestre și sunteți aproape gata să vă controlați Arduino cu Python!





Grăsimea magică

Veți avea nevoie de o ultimă piesă a puzzle-ului pentru ca Python să vorbească frumos cu Arduino. Aceasta vine sub forma unei interfețe Python numită pyFirmata . Această interfață, creată de Tino de Bruijn este disponibil pentru descărcare din github, deși îl puteți instala direct din linia de comandă tastând:

pip install pyfirmata

Toate fiind bine, ar trebui să se instaleze și să arate astfel:

Dacă nu reușește, treceți peste adăugarea Python la Variabilă de mediu secțiunea și asigurați-vă că ați dat calea corectă către directorul dvs. Python.

Făcând să se întâmple

Acum totul este configurat și puteți crea un program Python pentru ca Arduino să îl testeze. Deschideți un IDE la alegere. Vom folosi Eclipsă astăzi, dar ați putea folosi la fel de ușor orice editor de text sau chiar un IDE în cloud.

Creați un script nou și salvați-l ca blink.py . Încălcând tradiția cu programul standard LED intermitent, veți crea un program care îi solicită utilizatorului de câte ori dorește ca LED-ul să clipească înainte de al efectua. Este un program scurt, pe care îl puteți Descarcă aici dacă vrei să ajungi direct la ea, dar hai să o descompunem.

În primul rând, veți dori să importați ceea ce aveți nevoie din pyFirmata , împreună cu Python standard Timp modul.

modul avion vă încarcă telefonul mai repede
from pyfirmata import Arduino, util
import time

Acum veți dori să configurați placa Arduino. Acest articol presupune că utilizați un Arduino uno , deși sunt acceptate mai multe alte plăci Arduino. Consultați pyFirmata github pentru detalii despre suportul de pe bord.

Verificați ce port COM utilizați în ID-ul Arduino și introduceți-l în codul dvs. ca variabilă bord .

board = Arduino('COM3')

Acum veți configura solicitarea utilizatorului. Cei familiarizați cu Python vor recunoaște totul aici. Imprimați o întrebare pe ecran folosind intrare funcție și stocați răspunsul ca o variabilă. Odată ce utilizatorul a furnizat un număr, programul raportează de câte ori LED-ul va clipi.

loopTimes = input('How many times would you like the LED to blink: ')
print('Blinking ' + loopTimes + ' times.')

Pentru ca LED-ul să clipească de câte ori este necesar, utilizați un pentru bucla . Daca esti nou în Python , aveți grijă de indentare, deoarece, spre deosebire de alte limbi, spațiile fac parte din sintaxă. Rețineți că pinul 13 este LED-ul integrat pentru Arduino Uno, va trebui să modificați acest lucru dacă placa dvs. este diferită.

for x in range(int(loopTimes)):
board.digital[13].write(1)
time.sleep(0.2)
board.digital[13].write(0)
time.sleep(0.2)

Veți arunca loopTimes variabilă la un întreg aici, deoarece intrarea de la utilizator va fi stocată automat ca un șir. În această demonstrație simplă, presupunem că utilizatorul va introduce o valoare numerică. Orice altă intrare precum „opt” va arunca o eroare.

Salvați scriptul și deschideți fișierul Prompt de comandă .

Luminile intermitente și alte revelații

Totul este gata de plecare, tot ce trebuie să faceți este să navigați unde este scriptul și să îl rulați. Faceți acest lucru tastând cd [calea către directorul scriptului] și apoi tastând python blink.py .

Totul fiind bine, programul dvs. va începe cu o ușoară întârziere pe măsură ce Arduino inițializează, vă solicită un număr și apoi va clipi de multe ori folosind LED-ul de la bord.

Ieșirea programului ar trebui să arate astfel:

De îndată ce apăsați Enter după numărul ales de clipiri, Arduino ar trebui să vă îndeplinească comenzile.

Începuturi mici

Acest proiect a fost un început de comunicare între Python și o placă Arduino. Această abordare este foarte diferită de fluxul obișnuit de încărcare a scripturilor pe Arduino, însă deschide un mod cu totul nou de lucru cu platforma, mai ales dacă vă place limbajul de programare Python.

Dacă utilizați un Server Linux acasă, această metodă de comunicare cu plăcile Arduino ar putea extinde serverul respectiv într-un sistem complet automatizat de casă DIY. Prin combinarea scripturilor Python care controlează microcontrolerul cu un circuit de automatizare DIY, cutia dvs. de stocare NAS ar putea prelua un set complet nou de funcții utile.

cum să vă faceți computerul mai rapid pentru jocurile Windows 10

Pentru a-l face cea mai bună experiență DIY, de ce nu construiește-ți propria casetă NAS și îl folosiți pentru a vă controla și aparatele? Imaginați-vă cât de minunat ar fi să apăsați play pe serverul dvs. Plex și să lăsați luminile să se stingă automat!

Controlați deja Arduino folosind Python? Există soluții uimitoare despre care pur și simplu nu știm încă? Spuneți-ne în secțiunea de comentarii de mai jos!

Acțiune Acțiune Tweet E-mail 5 sfaturi pentru a vă supraîncărca mașinile VirtualBox Linux

V-ați săturat de slaba performanță oferită de mașinile virtuale? Iată ce ar trebui să faceți pentru a vă spori performanța VirtualBox.

Citiți în continuare
Subiecte asemănătoare
  • DIY
  • Programare
  • Arduino
  • Domotică
  • Piton
Despre autor Ian Buckley(216 articole publicate)

Ian Buckley este un jurnalist independent, muzician, interpret și producător video care locuiește în Berlin, Germania. Când nu scrie sau pe scenă, se ocupă de electronice sau coduri DIY în speranța de a deveni un om de știință nebun.

Mai multe de la Ian Buckley

Aboneaza-te la newsletter-ul nostru

Alăturați-vă newsletter-ului pentru sfaturi tehnice, recenzii, cărți electronice gratuite și oferte exclusive!

Faceți clic aici pentru a vă abona