- Vereiste materialen:
- Python op uw computer installeren:
- PySerial verkrijgen in Python:
- Ons eerste Arduino Python-programma:
- LED aansturen met Python en Arduino:
Arduino is altijd een krachtig en gebruiksvriendelijk leer- / ontwikkelplatform geweest als het gaat om de ontwikkeling van open source hardware. In de moderne wereld van vandaag wordt elke hardware aangedreven door een algemene programmeertaal van hoog niveau om deze effectiever en gebruiksvriendelijker te maken. Een van die talen is Python. Python is een geïnterpreteerde, objectgeoriënteerde programmeertaal op hoog niveau met dynamische semantiek met ingebouwde datastructuren op hoog niveau, gecombineerd met dynamisch typen en dynamische binding, waardoor het zeer aantrekkelijk is voor Rapid Application Development.
Het combineren van de kracht van Arduino en Python zal deuren openen naar veel mogelijkheden, aangezien Python een verhoogde productiviteit heeft met de mogelijkheid om te communiceren met andere platforms zoals openCV, Matlab enz.. Dus in deze tutorial zullen we leren hoe we Python op onze computer kunnen installeren en hoe je het met Arduino kunt gebruiken om de ingebouwde LED van Arduino om te schakelen.
Dus laten we beginnen….
Vereiste materialen:
- Arduino Uno (of andere Arduino-boards)
- Computer met internetverbinding
Python op uw computer installeren:
Het is duidelijk dat de eerste stap in deze tutorial het installeren van Python op onze computer is. De onderstaande stappen zijn alleen van toepassing op Windows-gebruikers met een 32-bits of 64-bits besturingssysteem. De installatieprocedure voor MAC en Linux is anders.
- Klik op 32-bit Python-2.7.9 en dit zal de 32-bit Python IDLE op je computer installeren. Download de 64-bits versie of bijgewerkte versies niet, aangezien deze geen ondersteuning bieden voor onze Arduino-bibliotheken. Zelfs als uw computer op 64-bit werkt, kunt u zelf 32-bit Python gebruiken.
- Open het gedownloade exe-bestand en volg de instructies. Verander de map waarin de python wordt geïnstalleerd niet. Het wordt standaard C: \ Python27 en laat het zo.
- Terwijl de installatie plaatsvindt, kunt u een waarschuwing krijgen van uw antivirusprogramma (indien aanwezig). Klik in dat geval op toestaan.
Dat is het! Python is met succes op onze computer geïnstalleerd. U kunt het verifiëren door te zoeken naar "Python IDLE" in het zoekvak van Windows en het te openen.
Bij het openen zou je het volgende scherm moeten krijgen. Dit venster wordt de Python-shell genoemd en we zullen het vanaf nu " Python-shell " noemen.
Dit scherm heet de Python Shell. U kunt hier rechtstreeks code invoeren en de uitvoer op hetzelfde scherm krijgen of een nieuw bestand maken en het programma daar schrijven en het programma hier verifiëren. We zullen later ingaan op de details van het maken van een python-programma, laten we voorlopig controleren of python werkt.
Om dit te doen, typt u gewoon " print (1 + 1) " en drukt u op enter. U zou het resultaat moeten zien worden afgedrukt zoals hieronder weergegeven.
PySerial verkrijgen in Python:
De volgende stap is om pyserial te installeren. PySerial is een Python API-module die wordt gebruikt om seriële gegevens naar Arduino of een andere microcontroller te lezen en te schrijven.
Klik op Pyserial Windows om PySerial te downloaden. De resulterende download is een exe-bestand dat direct kan worden geïnstalleerd. Verander geen enkele instelling tijdens het installeren. Laat het in de standaarddirectory en standaardinstellingen staan.
Laten we nu controleren of PySerial correct is geïnstalleerd. Open hiervoor Python Shell opnieuw en typ
serienummer importeren . Als de bibliotheek met succes is geïnstalleerd, zou u geen foutmeldingen moeten krijgen, zoals weergegeven in de onderstaande afbeelding. Als je fouten krijgt, plaats ze dan in het commentaargedeelte en we zullen proberen het op te lossen.
Deze tutorial gaat er vanuit dat je bekend bent met Arduino en ervaring hebt met het uploaden van projecten naar Arduino. Dus laten we direct in ons Python-programma springen. Als je een beginner bent met Arduino, bekijk dan onze Arduino-projecten en begin met LED Knipperen met Arduino.
Ons eerste Arduino Python-programma:
Zoals eerder gezegd zullen we de ingebouwde Arduino-bord-LED besturen met behulp van het Python-script. Laten we beginnen met de Arduino-code.
Programma voor Arduino:
Het volledige programma voor deze Arduino python-tutorial staat aan het einde van deze pagina. Lees verder om te weten hoe het werkt.
Binnen de setup- functie initialiseren we de seriële communicatie met 9600 baudrate en verklaren dat we de ingebouwde led als output zullen gebruiken en deze laag zullen zetten tijdens het starten van het programma. We hebben ook een welkomstbericht naar python gestuurd via seriële afdruk, zoals hieronder weergegeven:
void setup () {Serial.begin (9600); // initialiseer seriële COM op 9600 baudrate pinMode (LED_BUILTIN, OUTPUT); // maak de LED-pin (13) als output digitalWrite (LED_BUILTIN, LOW); Serial.println ("Hallo! Ik ben Arduino"); }
Binnen de loop- functie lezen we de data die serieel binnenkomt en kennen we de waarde toe aan de variabele "data". Nu gebaseerd op de waarde van deze variabele ("data") schakelen we de ingebouwde led aan zoals hieronder getoond.
void loop () {while (Serial.available ()) {data = Serial.read (); } if (data == '1') digitalWrite (LED_BUILTIN, HIGH); anders if (data == '0') digitalWrite (LED_BUILTIN, LOW); }
Programma voor Python:
Het volledige python-programma voor deze tutorial wordt aan het einde van deze pagina gegeven. Lees verder om te weten hoe u hetzelfde moet schrijven en gebruiken.
- Open uw Python Shell (Python IDLE) en klik op Bestand-> Nieuw
- Hierdoor wordt een nieuw tekstbestand geopend waarin u uw programma kunt typen.
- Voordat we iets typen, laten we het bestand opslaan door Ctrl + S. Typ een naam en klik op opslaan. Hierdoor wordt uw bestand automatisch opgeslagen in de extensie ".py".
- Typ nu het programma of plak de python-code aan het einde van deze pagina. De uitleg voor hetzelfde wordt hieronder gegeven en voer tenslotte het programma uit.
In ons programma zou de eerste stap zijn om de serie- en tijdbibliotheek te importeren. De seriële bibliotheek zal, zoals eerder gezegd, worden gebruikt om seriële gegevens te lezen en te schrijven en de tijdbibliotheek zal worden gebruikt om vertragingen in ons programma te creëren. Deze twee bibliotheken kunnen in ons programma worden geïmporteerd met behulp van de volgende twee regels:
import serienummer # Serie geïmporteerd voor seriële communicatie importtijd # Vereist om vertragingsfuncties te gebruiken
De volgende stap zou zijn om een serieel object te initialiseren met behulp van onze seriële bibliotheek. In dit programma hebben we ons seriële object de naam "ArduinoSerial" gegeven . In deze regel moeten we de naam vermelden van de COM-poort waarop onze Arduino is aangesloten en met welke baudrate hij werkt, zoals hieronder weergegeven.
ArduinoSerial = serial.Serial ('com18', 9600)
Opmerking: het is erg belangrijk om de juiste COM-poortnaam te vermelden. Het kan worden gevonden met behulp van Apparaatbeheer op uw computer.
Zodra het seriële object is geïnitialiseerd, moeten we het programma twee seconden vasthouden om de seriële communicatie tot stand te brengen. Dit kan gedaan worden door de onderstaande regel te gebruiken:
time.sleep (2)
Nu kunnen we alles van / naar ons Arduino-bord lezen of schrijven.
De volgende regel leest alles wat uit Arduino komt en zal het in het shell-venster afdrukken
print ArduinoSerial.readline ()
U kunt de waarde ook aan een variabele toewijzen en deze voor berekeningen gebruiken.
De volgende regel zal de waarde van de parameter naar Arduino Board schrijven.
ArduinoSerial.write ('1')
Deze regel schrijft '1' naar de Arduino. U kunt alles van decimalen tot tekenreeksen op dezelfde regel verzenden.
Nu we teruggaan naar ons programma, binnen de oneindige while-lus, hebben we de volgende regels
var = raw_input () # haal invoer van gebruiker print "je hebt ingevoerd", var #print de invoer voor bevestiging if (var == '1'): # als de waarde 1 is ArduinoSerial.write ('1') #send 1 print ("LED ingeschakeld") time.sleep (1) if (var == '0'): # als de waarde 0 is ArduinoSerial.write ('0') #send 0 print ("LED uitgeschakeld") tijd.slapen (1)
De regel var = raw_input krijgt elke waarde die in het Shell-script is getypt en wijst die waarde toe aan de variabele var .
Later, als de waarde 1 is, wordt '1' serieel naar Arduino afgedrukt en als 0 wordt '0' serieel naar Arduino afgedrukt. De code in ons Arduino-programma (hierboven besproken) zullen we de LED schakelen op basis van de ontvangen waarde.
Zodra het volledige programma is voltooid, zou uw script er ongeveer als volgt uit moeten zien
Klik nu op Uitvoeren -> Module uitvoeren of druk op F5, dit kan u vragen om het programma op te slaan en het vervolgens te starten.
LED aansturen met Python en Arduino:
De werking van dit project is vrij eenvoudig. Upload het programma naar je Arduino en controleer of het is verbonden met dezelfde COM-poort als vermeld in het Python-programma. Start vervolgens het Python-programma zoals hierboven vermeld.
Hiermee wordt een python-shell-script gestart, zoals hieronder wordt weergegeven. Het venster aan de linkerkant is het shell-venster dat de uitvoer toont en het venster aan de rechterkant is het script dat het programma toont.
Zoals je kunt zien, wordt de string "Hallo! Ik ben Arduino" ingevoerd in het Arduino-programma ontvangen door de Python en weergegeven in het shell-venster.
Als het shell-venster vraagt om waarden in te voeren, kunnen we 0 of 1 invoeren. Als we 1 sturen, gaat de LED op het Arduino-bord AAN en als we 0 sturen, gaat de LED op ons Arduino-bord UIT. Een succesvolle verbinding laten zien tussen ons Arduino-programma en Python.
Er zijn hieronder twee programma's, een die moet worden geüpload en uitgevoerd vanuit Arduino en de tweede moet worden uitgevoerd vanuit Python Shell in Windows.
Ik hoop dat je het project hebt begrepen en het hebt kunnen laten werken. Zo niet, plaats dan uw probleem in de onderstaande opmerking en ik help u graag verder. In ons volgende project zullen we leren wat er nog meer cool kan worden gedaan met Python en Arduino door diep te onderzoeken in andere Python-modules zoals Vpython, gamepython enz. Blijf tot dan op de hoogte….