Een Arduino programmeren en besturen met Python

Een Arduino programmeren en besturen met Python

Python heeft de codeerwereld stormenderhand veroverd. Naast de opkomst van deze nieuwe taal is ook de doe-het-zelf-elektronica-scene tot bloei gekomen. Development boards en single board computers van bedrijven als Arduino en Raspberry Pi hebben de manier veranderd waarop mensen zelfgebrouwen elektronica maken. Zou het niet geweldig zijn als je een Arduino zou kunnen programmeren met Python?





verschil tussen usb a en usb c

Er is geen beter gevoel dan twee toffe dingen te combineren. Helaas is het onmogelijk om een ​​Arduino rechtstreeks met Python te programmeren, omdat de borden geen optie hebben voor onboard-interpretatie van de taal. Wat wel mogelijk is, is directe controle over USB met behulp van een Python-programma.





Dit artikel laat je zien hoe je een Arduino UNO instelt (hoewel elk Arduino-compatibel bord hier kan werken) om te worden geprogrammeerd en bestuurd vanaf de opdrachtregel met behulp van Python-programma's. Deze tutorial is geschreven voor Windows 10, maar werkt ook voor Mac en Linux. Je zou deze workflow zelfs kunnen gebruiken om een ​​Arduino rechtstreeks vanaf een Raspberry Pi te besturen voor de ultieme double-down-doe-het-zelf-ervaring.





Uw Arduino instellen voor Python

Voor het project van vandaag zullen we een Arduino Uno gebruiken, samen met de pyFirmata-interface voor Python. Je kunt hiervoor bijna elk Arduino-compatibel bord gebruiken, hoewel op het moment van schrijven alleen de Arduino Uno, Mega, Due en Nano worden ondersteund door de pyFfirmata-interface. Als je al een Python-goeroe bent, kun je je eigen bordondersteuning toevoegen aan pyFirmata -- zorg ervoor dat je hun GitHub bijwerkt als je dat doet!

Installeer de Arduino IDE als je dat nog niet hebt gedaan. Als u helemaal nieuw bent in de wereld van microcontrollers, onze beginnershandleiding voor Arduino zal u helpen om alles op zijn plaats te krijgen.



Sluit je Arduino-bord aan en open de IDE. Zorg ervoor dat u het juiste bord en de juiste poort hebt geselecteerd in de Gereedschap menu. Laad de StandaardFirmata voorbeeldschets en upload deze naar het bord. Hiermee kunt u de Arduino rechtstreeks besturen zolang deze via USB op de computer is aangesloten. Op voorwaarde dat de schets zonder fouten naar je bord wordt geüpload, ben je klaar om verder te gaan.

Python en opdrachtregelbesturing

We zullen Python 3.4 gebruiken om onze Arduino te besturen, omdat de module die je gaat installeren dit specificeert als de nieuwste compatibele versie. Elke eerdere versie zou goed moeten werken en er is gemeld dat latere versies werken. U kunt Python 3.4 voor Windows 10 downloaden van de Python Software Foundation plaats. Als u meerdere versies van Python wilt gebruiken, kan onze gids voor virtuele Python-omgevingen u helpen.





Zodra je Python hebt geïnstalleerd, willen we het toevoegen aan de PATH-variabele van je systeem. Hierdoor kunnen we Python-code rechtstreeks vanaf de opdrachtregel uitvoeren zonder dat we in de map hoeven te staan ​​waarin deze is geïnstalleerd. U kunt dit doen door de Controlepaneel , op zoek naar Omgeving en klik op Bewerk de systeemomgevingsvariabelen . Selecteer onder in het venster Omgevingsvariabelen . Dit zal dit venster openen:

Als je het al ziet PAD in de lijst, klik op bewerken en voeg uw . toe Python en Python/Scripts map. Als u geen PATH-variabele heeft, klikt u op nieuw en voegt u deze toe. Merk op dat Python rechtstreeks in de . is geïnstalleerd C: hier. Als je het ergens anders hebt geïnstalleerd, moet je het aanpassen om dit weer te geven. Klik op OK terug in de reeks vensters en je bent bijna klaar om je Arduino met Python te besturen!





Het magische vet

Je hebt nog een laatste stukje van de puzzel nodig om Python goed te laten praten met onze Arduino. Dit komt in de vorm van een Python-interface genaamd pyFirmata . Deze interface, gemaakt door Tino de Bruijn, is beschikbaar om te downloaden van github, hoewel je het rechtstreeks vanaf de opdrachtregel kunt installeren door te typen:

pip install pyfirmata

Als het goed is, zou het moeten installeren en er als volgt uit moeten zien:

Als het niet lukt, ga dan verder met het toevoegen van Python aan de Omgevingsvariabele sectie en zorg ervoor dat je het juiste pad naar je Python-directory hebt gegeven.

Het laten gebeuren

Nu is alles ingesteld en kun je een Python-programma voor je Arduino maken om het te testen. Open een IDE naar keuze. We zullen gebruiken Verduistering vandaag, maar je zou net zo goed elke teksteditor kunnen gebruiken, of zelfs een IDE in de cloud.

Maak een nieuw script en sla het op als blink.py . Door de traditie te doorbreken met het standaard knipperende LED-programma, gaat u een programma maken dat de gebruiker vraagt ​​hoe vaak hij de LED wil laten knipperen voordat hij het uitvoert. Het is een kort programma, dat je kunt download hier als je er meteen mee aan de slag wilt, maar laten we het opsplitsen.

Ten eerste wil je importeren wat je nodig hebt uit de pyFirmata module, samen met de standaard Python Tijd module.

hoe youtube tv op apple tv te krijgen
from pyfirmata import Arduino, util
import time

Nu wil je het Arduino-bord instellen. In dit artikel wordt ervan uitgegaan dat u een Arduino uno board, hoewel verschillende andere Arduino-boards worden ondersteund. Raadpleeg de pyFirmata github voor details over ondersteuning aan boord.

Controleer welke COM-poort u gebruikt in de Arduino IDE en voer deze in uw code in als de variabele bord .

board = Arduino('COM3')

Nu ga je de gebruikersprompt instellen. Degenen die bekend zijn met Python zullen hier alles herkennen. Je print een vraag op het scherm met de invoer functie, en sla het antwoord op als een variabele. Nadat de gebruiker een nummer heeft ingevoerd, meldt het programma hoe vaak de LED zal knipperen.

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

Om de LED het juiste aantal keren te laten knipperen, gebruikt u a for loop . Als je bent nieuw voor Python , wees voorzichtig met de inspringing, want in tegenstelling tot andere talen maken de spaties deel uit van de syntaxis. Merk op dat pin 13 de ingebouwde LED is voor de Arduino Uno, je zult dit moeten wijzigen als je bord anders is.

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

Je cast de loopTimes variabele naar een geheel getal hier, omdat de invoer van de gebruiker automatisch wordt opgeslagen als een tekenreeks. In deze eenvoudige demo gaan we ervan uit dat de gebruiker een numerieke waarde invoert. Elke andere invoer zoals 'acht' zal een fout opleveren.

Sla je script op en open de Opdrachtprompt .

Knipperende lampjes en andere onthullingen

Alles is klaar voor gebruik, u hoeft alleen maar naar het script te navigeren en het uit te voeren. Doe dit door te typen cd [pad naar de map van het script] en dan typen python blink.py .

Als alles goed gaat, zal je programma met een kleine vertraging starten als de Arduino initialiseert, je om een ​​nummer vraagt ​​en dan zo vaak knippert met behulp van de ingebouwde LED.

De uitvoer van het programma zou er als volgt uit moeten zien:

Zodra u op enter drukt na het door u gekozen aantal knipperingen, moet de Arduino uw bestellingen uitvoeren.

Klein begin

Dit project was een barebones om te communiceren tussen Python en een Arduino-bord. Deze aanpak is heel anders dan de gebruikelijke workflow van het uploaden van scripts naar de Arduino zelf, maar het opent een geheel nieuwe manier van werken met het platform, vooral als je van de programmeertaal Python houdt.

Als je een Linux-server thuis zou deze manier van communiceren met Arduino-boards die server kunnen uitbreiden tot een volwaardig doe-het-zelf-huisautomatiseringssysteem. Door Python-scripts die de microcontroller aansturen te combineren met een doe-het-zelf-automatiseringscircuit, kan uw NAS-opslagbox een geheel nieuwe reeks nuttige functies aannemen.

je hebt je zojuist aangemeld voor internettoegang met een lokale provider

Om er de ultieme DIY-ervaring van te maken, waarom niet bouw je eigen NAS-box en het ook gebruiken om uw apparaten te bedienen? Stel je voor hoe cool het zou zijn om op play op je Plex-server te drukken en de lichten automatisch uit te laten gaan!

Beheer je Arduino al met Python? Zijn er geweldige oplossingen die we nog niet kennen? Laat het ons weten in de commentaarsectie hieronder!

Deel Deel Tweeten E-mail 5 tips om uw VirtualBox Linux-machines een boost te geven

Moe van de slechte prestaties van virtuele machines? Dit is wat u moet doen om uw VirtualBox-prestaties te verbeteren.

Lees volgende
Gerelateerde onderwerpen
  • doe-het-zelf
  • Programmeren
  • Arduino
  • Domotica
  • Python
Over de auteur Ian Buckley(216 artikelen gepubliceerd)

Ian Buckley is een freelance journalist, muzikant, performer en videoproducent die in Berlijn, Duitsland woont. Als hij niet aan het schrijven of op het podium staat, sleutelt hij aan doe-het-zelf-elektronica of code in de hoop een gekke wetenschapper te worden.

Meer van Ian Buckley

Abonneer op onze nieuwsbrief

Word lid van onze nieuwsbrief voor technische tips, recensies, gratis e-boeken en exclusieve deals!

Klik hier om je te abonneren