Com programar i controlar un Arduino amb Python

Com programar i controlar un Arduino amb Python

Python ha pres el món de la codificació per la tempesta. Al costat de l’auge d’aquest nou llenguatge, l’escena de l’electrònica del bricolatge també ha prosperat. Taules de desenvolupament i ordinadors de placa única d’empreses com Arduino i Raspberry Pi han canviat la forma en què la gent crea electrònica casolana. No seria fantàstic que poguéssiu programar un Arduino amb Python?





Com puc canviar el meu compte de Google per defecte a Chrome

No hi ha millor sensació que combinar dues coses interessants. Malauradament, és impossible programar directament un Arduino amb Python, ja que les plaques no tenen cap opció per a la interpretació integrada del llenguatge. El que és possible, però, és el control directe per USB mitjançant un programa Python.





Aquest article us mostrarà com configurar un Arduino UNO (tot i que qualsevol placa compatible amb Arduino pot funcionar aquí) per programar i controlar des de la línia d’ordres mitjançant programes Python. Aquest tutorial està escrit per a Windows 10, però també funciona per a Mac i Linux. Fins i tot podeu fer servir aquest flux de treball per controlar un Arduino directament des d’un Raspberry Pi per obtenir la màxima experiència de bricolatge doble.





Configuració del vostre Arduino per a Python

Per al projecte d’avui utilitzarem un Arduino Uno, juntament amb la interfície pyFirmata per a Python. Podeu fer servir gairebé qualsevol placa compatible amb Arduino, tot i que en el moment d’escriure només la interfície pyFfirmata admet Arduino Uno, Mega, Due i Nano. Si ja sou un gurú de Python, podeu afegir el vostre propi suport de tauler a pyFirmata; assegureu-vos d'actualitzar el seu GitHub si ho feu.

Si encara no ho heu fet, instal·leu l'IDE Arduino. Si sou completament nou en el món dels microcontroladors, el nostre guia per a principiants d'Arduino l'ajudarà a posar-ho tot al seu lloc.



Connecteu la vostra placa Arduino i obriu l'IDE. Assegureu-vos que teniu la placa i el port correctes seleccionats a la carpeta Eines menú. Carregueu el fitxer StandardFirmata esbós d’exemple i pengeu-lo al tauler. Això us permetrà controlar l'Arduino directament sempre que estigui connectat a l'ordinador mitjançant USB. Si els esbossos es carreguen al tauler sense cap error, esteu a punt per continuar.

Control de línia de comandes i Python

Utilitzarem Python 3.4 per controlar el nostre Arduino, ja que el mòdul que instal·laràs ho especifica com la darrera versió compatible. Qualsevol versió anterior a aquesta hauria de funcionar bé, i s'ha informat que les versions posteriors funcionen. Podeu descarregar Python 3.4 per a Windows 10 des de Python Software Foundation lloc. Si voleu executar diverses versions de Python, la nostra guia sobre entorns virtuals de Python us podrà ajudar.





Un cop hàgiu instal·lat Python, volem afegir-lo a la variable PATH del vostre sistema. Això ens permetrà executar el codi Python directament des de la línia d'ordres sense necessitat d'estar al directori on estava instal·lat. Podeu fer-ho obrint el control Panel , buscant Medi ambient i feu clic a Editeu les variables d'entorn del sistema . Seleccioneu a la part inferior de la finestra Variables del mediambient . Això mostrarà aquesta finestra:

Si ja ho veieu CAMÍ a la llista, feu clic a Edita i afegiu el vostre fitxer Python i Python / Scripts directori. Si no teniu una variable PATH, feu clic a nova i afegiu-la. Tingueu en compte que Python es va instal·lar directament a C: aquí. Si l’heu instal·lat en un altre lloc, haureu de modificar-lo per reflectir-ho. Feu clic a D'acord cap avall per la cadena de finestres i ja esteu a punt per controlar el vostre Arduino amb Python.





La Greix Màgica

Necessitareu una última peça del trencaclosques per fer que Python parli bé amb el nostre Arduino. Això es presenta en forma d'una interfície Python anomenada pyFirmata . Aquesta interfície, creada per Tino de Bruijn, és disponible per descarregar des de github, tot i que podeu instal·lar-lo directament des de la línia d’ordres escrivint:

pip install pyfirmata

Tot estant bé, hauria d’instal·lar-se i tenir aquest aspecte:

Si falla, aneu a afegir Python al fitxer Variable d'entorn i assegureu-vos que heu donat el camí correcte al directori Python.

Fer-ho passar

Ara tot està configurat i podeu crear un programa Python perquè el vostre Arduino el provi. Obriu un IDE que trieu. Ho farem servir eclipsi avui en dia, però podríeu utilitzar de la mateixa manera qualsevol editor de text o fins i tot un IDE al núvol.

Creeu un script nou i deseu-lo com a blink.py . Trencant la tradició amb el programa LED intermitent estàndard, crearà un programa que demanarà a l’usuari la quantitat de vegades que vol que el LED parpellegi abans de dur-lo a terme. És un programa curt, que podeu descarregar aquí si voleu accedir-hi directament, però desglossem-ho.

En primer lloc, voldreu importar el que necessiteu de pyFirmata , juntament amb el Python estàndard Temps mòdul.

què fa la compressió d'un fitxer
from pyfirmata import Arduino, util
import time

Ara voldreu configurar la placa Arduino. Aquest article suposa que utilitzeu un fitxer Arduino Un , encara que s’admeten diverses altres plaques Arduino. Consulteu el github pyFirmata per obtenir detalls sobre el suport del tauler.

Comproveu quin port COM utilitzeu a l’IDE ​​Arduino i introduïu-lo al vostre codi com a variable pissarra .

board = Arduino('COM3')

Ara configurareu la sol·licitud de l'usuari. Els que estiguin familiaritzats amb Python ho reconeixeran tot. Imprimiu una pregunta a la pantalla mitjançant el fitxer entrada i emmagatzemar la resposta com a variable. Un cop l'usuari ha proporcionat un número, el programa informa de quantes vegades parpellejarà el LED.

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

Per fer parpellejar el LED el nombre de vegades adequat, utilitzeu un per a bucle . Si vostè és nou a Python , tingueu cura amb la sagnia, ja que, a diferència d'altres idiomes, els espais formen part de la sintaxi. Tingueu en compte que el pin 13 és el LED integrat de l’Arduino Uno, haureu de modificar-lo si la vostra placa és diferent.

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

Llançareu el fitxer loopTimes variable a un enter aquí, ja que l'entrada de l'usuari s'emmagatzemarà automàticament com una cadena. En aquesta demostració senzilla, suposem que l'usuari introduirà un valor numèric. Qualsevol altra entrada com ara 'vuit' generarà un error.

Deseu el vostre script i obriu el fitxer Símbol d'ordres .

Llums parpellejants i altres revelacions

Tot està a punt per començar, tot el que heu de fer és navegar fins a on es troba l'script i executar-lo. Feu-ho escrivint cd [ruta al directori de l'script] i després escrivint python blink.py .

Tot estant bé, el vostre programa començarà amb un lleuger retard a mesura que l'Arduino s'inicialitzi, us demanarà un número i, a continuació, parpellejarà moltes vegades amb el LED integrat.

La sortida del programa hauria de ser així:

Tan bon punt premeu Intro després del número de parpelleigs escollit, l'Arduino haurà de complir les vostres comandes.

Petits inicis

Aquest projecte ha estat un inici de comunicacions entre Python i una placa Arduino. Aquest enfocament és molt diferent al flux de treball habitual de pujar scripts al propi Arduino, però obre una nova forma de treballar amb la plataforma, sobretot si us agrada el llenguatge de programació Python.

Si utilitzeu un fitxer Servidor Linux a casa, aquest mètode de comunicació amb les plaques Arduino podria estendre aquest servidor a un sistema domòtic de bricolatge complet. En combinar els scripts Python que controlen el microcontrolador amb un circuit d’automatització de bricolatge, la vostra caixa d’emmagatzematge NAS podria assumir un conjunt completament nou de funcions útils.

utilització de la CPU: la utilització del processador és elevada

Perquè sigui la millor experiència de bricolatge, per què no? creeu la vostra pròpia caixa NAS i el feu servir per controlar també els vostres electrodomèstics? Imagineu el fresc que seria prémer play al vostre servidor Plex i que els llums s’apaguessin automàticament.

Ja controleu Arduino mitjançant Python? Hi ha solucions increïbles que encara no coneixem? Feu-nos-ho saber a la secció de comentaris següent.

Compartir Compartir Tweet Correu electrònic 5 consells per sobrecarregar les vostres màquines VirtualBox Linux

Cansat del baix rendiment que ofereixen les màquines virtuals? Això és el que heu de fer per millorar el rendiment del VirtualBox.

Llegiu a continuació
Temes relacionats
  • Bricolatge
  • Programació
  • Arduino
  • Domòtica
  • Python
Sobre l'autor Ian Buckley(216 articles publicats)

Ian Buckley és periodista, músic, intèrpret i productor de vídeo independent que viu a Berlín, Alemanya. Quan no escriu ni està a l’escenari, juga amb electrònica o codi de bricolatge amb l’esperança de convertir-se en un científic boig.

Més de Ian Buckley

Subscriu-te al nostre butlletí

Uniu-vos al nostre butlletí per obtenir consells tècnics, ressenyes, llibres electrònics gratuïts i ofertes exclusives.

Feu clic aquí per subscriure-us