- Voorwaarden:
- VPython op uw computer installeren:
- VPython programmeren:
- Uw Arduino voorbereiden:
- Werken:
In onze vorige tutorial hebben we geleerd hoe we python op onze Windows-machine kunnen installeren en hoe we Arduino kunnen koppelen aan python met behulp van een eenvoudig LED-besturingsproject. Als je nieuw bent, raad ik je ten zeerste aan om terug te vallen op de vorige tutorial, aangezien deze tutorial een vervolg is op hetzelfde.
Je hebt je misschien al afgevraagd waarom we Python met Arduino nodig zouden hebben als het alleen maar zou kunnen communiceren via een seriële poort. Maar Python is een zeer sterk ontwikkelplatform waarop heel veel coole applicaties kunnen worden geïntegreerd waarin machine learning, computer vision en nog veel meer kunnen worden geïntegreerd. In deze tutorial zullen we leren hoe we een kleine grafische interface kunnen maken met Python. Hiervoor hebben we een module nodig genaamd Vpython. De volgende tutorial is alleen van toepassing op Windows-gebruikers, aangezien de procedure voor Mac- of Linux-gebruikers anders is.
Aan het einde van deze tutorial zullen we leren hoe we een eenvoudige GUI kunnen maken met Python. We zullen een kleine animatie maken die reageert op de waarde van de ultrasone sensor die aan de Arduino is bevestigd. Deze applicatie volgt het object met behulp van een ultrasone sensor en geeft het in grafische vorm weer op de computer met behulp van VPython. Terwijl we het object verplaatsen, detecteert de ultrasone sensor de afstand en stuurt deze informatie met Arduino naar het Python-programma en het zal het object ook in de computer verplaatsen. Klinkt interessant toch! Dus laten we beginnen…
Voorwaarden:
- Arduino (elke versie)
- Ultrasone sensor HC-SR04
- Verbindingsdraden
- Computer met Python
- Kennis van eerdere tutorial
VPython op uw computer installeren:
In onze vorige tutorial hebben we al geleerd hoe je Python op je machine installeert en hoe je er omheen beweegt en een eenvoudig programma maakt met Arduino. Nu hebben we daar bovenop Visual Python (VPython) geïnstalleerd zodat we coole graphics kunnen maken met Python voor Arduino. Voor de eenvoudige stappen hieronder om aan de slag te gaan met VPython
Stap 1. Zorg ervoor dat Python al is geïnstalleerd volgens de vorige tutorialrichtlijnen.
Stap 2. Klik op VPython om het exe-bestand voor Visual Python te downloaden. Kies er niet voor om een 64-bits versie te installeren, zelfs niet als uw machine op 64-bits draait. Volg gewoon de gegeven link.
Stap 3. Start het exe-bestand en volg de installatie. Wijzig het standaard directorypad niet en zorg ervoor dat u “volledige installatie” heeft geselecteerd.
Stap 4. Eenmaal geïnstalleerd, zou u een nieuwe applicatie met de naam "VIDLE (VPython)" op uw bureaublad of applicatiepaneel moeten vinden, zoals hieronder getoond.
Stap 5. Start de applicatie en u zou een venster moeten krijgen zoals hieronder weergegeven.
Stap 6. Dit is het venster waarin we het programma voor VPython gaan typen. Maar laten we voorlopig controleren of Vpython werkt door een voorbeeldprogramma te openen. Selecteer hiervoor Bestand-> Openen-> Bounce
Stap 7. U zou een voorbeeldprogramma moeten openen. Probeer het programma te starten met Uitvoeren -> Module uitvoeren . Als alles werkt zoals verwacht, zou u het volgende scherm moeten krijgen.
Je zou het Shell-venster (links) moeten zien met twee >>> die een succesvolle compilatie aangeven en het eigenlijke venster (voorkant) dat een stuiterende bal laat zien.
Stap 8. U kunt ook andere voorbeeldprogramma's proberen om de kracht van VPython te ontdekken, bijvoorbeeld het voorbeeldprogramma met de naam "elektromotor" zal u verbazen door het volgende scherm.
Stap 9. Dit betekent dat uw VPython klaar is voor gebruik en dat u kunt terugvallen op het onderwerp " Uw Vpython programmeren ".
Stap 10. Anders, als u een van de velen bent die een "numpy-fout" krijgen, verlies dan de hoop niet, want we zullen dat probleem in de verdere stappen oplossen
Stap 11. Open Mijn computer -> C-schijf -> Python 27 -> Scripts -> local.bat . Hierdoor wordt een opdrachtprompt gestart, zoals hieronder wordt weergegeven
Stap 12. Typ nu "pip install --upgrade numpy" en druk op enter. De nieuwe versie van Numpy zou op uw computer moeten worden geïnstalleerd. Het kan zijn dat u enige tijd moet wachten als uw internetverbinding traag is.
Stap 13. Als u klaar bent, kunt u terugvallen op stap 4 en een voorbeeldprogramma proberen en u zou het moeten kunnen laten werken.
VPython programmeren:
Vervolgens beginnen we met programmeren in ons VPython-venster. In dit programma zullen we twee rechthoekige 3D-objecten maken, de ene wordt in het midden van het scherm geplaatst met verwijzing naar de stationaire ultrasone sensor en de andere bevindt zich op een dynamische locatie op basis van de afstand tussen de Amerikaanse sensor en het object (papier).
De volledige Python-code vindt u aan het einde van deze pagina. Verderop heb ik deze python-code uitgelegd door ze op te splitsen in kleine betekenisvolle junks.
De eerste regel zou zijn om de visuele bibliotheek te importeren, zodat we 3D-objecten kunnen maken. De onderstaande regel doet hetzelfde.
van visuele import *
U moet bekend zijn met de volgende vier regels, aangezien we ze al hebben gebruikt in onze vorige tutorial. Ze worden gebruikt om de seriële en tijdbibliotheek te importeren en ook om een seriële verbinding met Arduino op COM18 tot stand te brengen met 9600 als baudrate
import serial #Serial geïmporteerd voor seriële communicatie importtijd #Vereist om vertragingsfuncties te gebruiken ArduinoSerial = serial.Serial ('com18', 9600) #Create Serial port object genaamd arduinoSerialData time.sleep (2) # 2 seconden wachten op de communicatie met gevestigd worden
Nu is het tijd om objecten te maken. Ik heb twee 3D-rechthoeken gemaakt met de naam obj en wall. De wallL is een stationaire muur in cyaankleur die in het midden van het scherm is geplaatst en het obj is het beweegbare object in witte kleur. Ik heb ook een tekst "US sensor" bij het muurobject geplaatst.
obj = doos (pos = (- 5,0,0), maat = (0,1,4,4), kleur = kleur.wit) wallL = doos (pos = (- 1,0,0), maat = (0,2, 12,12), kleur = kleur.cyaan) tekst (tekst = 'US sensor', as = (0,1,0), pos = (- 2, -6,0), diepte = -0,3, kleur = kleur. cyaan)
Ik ben er zeker van dat de bovenstaande drie regels voor de meeste eerste lezers Grieks en Latijn zouden zijn geweest, maar na verloop van tijd zou je het kunnen begrijpen. Alles wat tussen haakjes wordt vermeld, is (x, y, z) -coördinaten. En deze coördinaten lijken erg op de coördinaten die we vinden in onze meetkundeklas op de middelbare school, zoals hieronder weergegeven.
Nu, de grafische kaart en de seriële poort zijn klaar, we hoeven alleen maar de gegevens te lezen en de "obj" (witte rechthoek) op een plaats te plaatsen volgens de gegevens die van de Arduino komen. Dit kan worden gedaan door de volgende regels, waarbij obj.pos.x de X-coördinaatpositie van het object bepaalt (witte rechthoek).
t = int (ArduinoSerial.readline ()) #lees de seriële gegevens en druk deze af als regel t = t * 0,05 obj.pos.x = t
Uw Arduino voorbereiden:
Het Python-script is klaar om te luisteren naar waarden van de COM-poort en de afbeeldingen dienovereenkomstig te animeren, maar onze Arduino is nog niet klaar. Eerst moeten we de ultrasone sensor aansluiten op de Arduino volgens het volgende schakelschema. Als de Amerikaanse sensor en Arduino nieuw voor je zijn, moet je terugvallen op de tutorial Arduino & Ultrasonic Sensor Based Distance Measurement.
Upload vervolgens het Arduino-programma aan het einde van deze pagina. Het programma wordt uitgelegd aan de hand van commentaarregels. We weten dat de ultrasone sensor werkt door de tijd te berekenen die de puls nodig heeft om een object te raken en terug te keren. Deze waarde wordt berekend met behulp van de PulseIn- functie in Arduino. Later wordt de genomen tijd omgezet in afstand met behulp van de onderstaande lijn.
dist = (timetaken / 2) / 2,91;
Hier wordt de afstand berekend in termen van millimeters (mm).
Werken:
De werking van het project is eenvoudig. Start het Python-programma en plaats een object voor de Amerikaanse sensor zoals hieronder weergegeven:
Start nu het python-programma en je zou de witte rechthoek met je papier moeten kunnen zien bewegen, de afstand tussen je papier en de sensor zal ook in het shell-venster worden weergegeven zoals in de onderstaande afbeelding.
Dit is hoe we de beweging van het object kunnen volgen met behulp van een ultrasone sensor en Python met Arduino.
Ik hoop dat je het project hebt begrepen en het leuk vond om er een te bouwen. Dit is slechts een subtiele stap richting python, maar hiermee kun je veel creatievere dingen bouwen. Als je enig idee hebt wat je hiermee kunt bouwen, plaats ze dan in de commentaarsectie en gebruik de forums voor technische hulp. Tot ziens met een ander interessant python-project.