Innholdsfortegnelse:
- Trinn 1: Hva du trenger …
- Trinn 2: Lodding av brettet
- Trinn 3: Sette opp Arduino
- Trinn 4: Konfigurere Python
- Trinn 5: Hvor magien skjer
Video: Servodriver-Board Med Python-GUI og Arduino: 5 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:24
Når du gjør prototyper eller bygger modellfly, støter du ofte på problemet, at du må sjekke servo -reiser eller sette servoer til midtstilling.
Hvis du ikke pleier å bygge opp hele RC-systemet eller teste, hvor langt du kan skyve servoen eller hvor midtstillingen er, så er dette brettet for deg! Den lar deg flytte servoen til bestemte posisjoner, eller la oss reise frem og tilbake.
Det fungerer overraskende bra, selv med 6 servoer som løper fra en posisjon til en annen i løkken.
Det er også et fint prosjekt å lære om kommunikasjon mellom Python-GUI og Arduino ved hjelp av Serial.
Trinn 1: Hva du trenger …
For dette prosjektet trenger du følgende:
Maskinvare
- Arduino nano med kabel. Jeg brukte en klon, og Python-koden forventer faktisk en CH340-brikke av en klon
- Et prototypebrett. 7x5 cm er nok
- Noen 2, 54 mm hoder og pinner
- 1-6 servoer
- Strømforsyning til servoene (jeg brukte en batteripakke med 4 batterier)
Programvare
- Python 3:
- En USB-driver for CH340-brikkene: Bare google etter drivere for CH340-drivere
- Arduino IDE:
Trinn 2: Lodding av brettet
Loddet er faktisk rett frem ifølge Fritzing på bildet. Bare vær sikker på at du enkelt kan koble servoene til de 3-pinners radene.
- 3-pins-radene er festet til digital pin 3, 5, 6, 9, 10 og 11 på Arduino nano.
- Den røde ledningen er festet til 5V-pinnen på Arduino
- Den svarte ledningen er koblet til GND-pinnen på Arduino
- Pinnene under 3-pinners radene er ment for å koble til en typisk RC-mottaker strømforsyning. Du kan legge til kontakter som du vil, for eksempel skrueterminaler, XT-kontakter, JST eller … eller …
Personlig liker jeg rader med kvinnelige overskrifter for å sette Arduino i, men det er opp til deg.
Vær oppmerksom på at de korte hunhodene er en jumper, som lar deg levere servoen ved hjelp av 5V-kilden til Arduino for testformål. Hvis du belaster den for mye, vil Arduino nullstille og miste riktig tempo. De MÅ fjernes før du kobler til en annen strømforsyning.
Trinn 3: Sette opp Arduino
Installer Arduino IDE og blits Arduino nano med vedlagte skisse.
Trinn 4: Konfigurere Python
Installer Python 3 etter nedlasting. Sørg for å sjekke alternativet for å lage en "PATH" -variabel.
Du må installere ytterligere to pakker med pip. For det, trykk på "Windows" -tasten, skriv "cmd" og trykk "enter". Skriv inn følgende kommandoer i ledeteksten:
- pip installere serienummer
- piip installer pyserial
- pip installere tkinter
Som du kan se, trenger jeg modulene både seriell og pyserial, som sannsynligvis ikke er den mest effektive, siden pyserial burde erstatte serien. Likevel fungerer det, og jeg har akkurat begynt å lære;).
Åpne Python-scriptet i IDE og kjør det, eller kjør det rett fra terminalen.
I rullegardinmenyen kan du velge mellom to moduser, "Gå rett" og "Ping Pong":
- Gå rett: Skriv inn en servoposisjon i mikrosekunder i den første kolonnen, og trykk "Start" for å få servoen til å gå til den angitte posisjonen.
- Ping Pong: Skriv inn en nedre grense og en øvre grense i den andre og tredje kolonnen. Det er den nedre og øvre posisjonen, mellom hvilken servoen vil gå frem og tilbake. I kolonnen "Ping Pong Time" kan du angi et tidspunkt i millisekunder som servoen skal vente når den har nådd den øvre eller nedre posisjonen. Trykk "Start" og servoen begynner å bevege seg frem og tilbake, trykk "Stop" og servoen stopper.
Trinn 5: Hvor magien skjer
Sist, men ikke minst, vil jeg påpeke noen av detaljene i koden for de som ønsker å komme inn på litt seriell kommunikasjon mellom Python og Arduino.
Hva skjer i Python -programmet?
Først og fremst sjekker programmet hva som er koblet til COM-portene på denne linjen og lagrer det i en liste:
self. COMPortsList = list (serial.tools.list_ports.comports ())
Deretter går den gjennom listen til den finner en beryktet CH340-brikke, lagrer den og oppretter deretter en seriell forbindelse etter forløkken. Vær oppmerksom på at forløkken brytes så snart den første CH340 er funnet.
for p i self. COMPortsList: hvis "CH340" i p [1]: # Ser etter en Arduino Clone self. COMPort = p [0] pause annet: pass self. Ser = serial. Serial (self. COMPort, 57600)
Den serielle forbindelsen opprettes med COM-porten med en baudrate på 57600.
Og hva gjør Arduino -koden? Siden Arduino bare har en COM-port, er den serielle tilkoblingen bare en linje:
Serial.begin (57600);
Nå kan vi bruke begge portene til å kommunisere. I dette tilfellet bare meldinger fra Python til Arduino. Meldingene blir sendt hit fra Python. Den serielle tilkoblingen overfører byte som standard. Det er også den raskeste måten å sende data på, og så vidt jeg vet er det fortsatt ganske utbredt. Så intene for nummeret på servoen (slik at Arduino vet hvilken servo han skal flytte) og posisjonen i mikrosekunder blir til en byte.
Kommando = struct.pack ('> B', self. Place) # Int-variabelen "self. Place" blir til en byte
self. Ser.write (Command) # Skrive byte på kommandoen Serial-Port = int (self. ServoPos.get ()) // 10 # Lese inndata fra feltet og send inn int Command = struct.pack (' > B ', kommando) # Slå int i et byte-selv. Ser.write (kommando) # Skrive byte på serieporten
Det tar også tid å analysere data (for eksempel tolke fire byte "1", "2", "3" og "0" som int 1230, ikke som fire forskjellige tegn), og det er bedre å gjøre det ikke på Arduino.
På Arduino-siden hentes informasjonen som sendes slik:
hvis (Serial.available ()> 1) {// Hvis serielle data er tilgjengelige, blir sløyfen angitt c = Serial.read (); // Den første byten (antall servoer) lagres i en variabel Micros = Serial.read (); // Servoens posisjon lagres her Mikro = Mikro * 10; }
Anbefalt:
Kontrollere flere lysdioder med Python og Raspberry Pi's GPIO -pinner: 4 trinn (med bilder)
Kontrollere flere lysdioder med Python og Raspberry Pi sine GPIO -pinner: Denne instruksjonen viser hvordan du styrer flere GPIO -pinner på RaspberryPi for å drive 4 lysdioder. Det vil også introdusere deg for parametere og betingede utsagn i Python.Vår tidligere instruerbare bruk av din Raspberry Pi's GPIO -pins for å kon
Kom i gang med Python: 7 trinn (med bilder)
Kom i gang med Python: Programmering er fantastisk! Det er kreativt, morsomt og gir hjernen din en mental trening. Mange av oss ønsker å lære om programmering, men overbeviser oss selv om at vi ikke kan. Kanskje den har for mye matematikk, kanskje sjargongen som kastes rundt skremmer
Kontroller tilgang til Arduino YÚN med MySQL, PHP5 og Python: 11 trinn (med bilder)
Kontroller tilgangen til Arduino YÚN med MySQL, PHP5 og Python: Hei venner! Vel, som du vet, i september var det nye premiere -skjoldet til Arduino, Arduino YUN. Denne lille vennen har et innebygd Linux -system som vi kan kjøre alt du kan tenke deg (i hvert fall så langt). Selv om det er veldig lite informasjon
556 Servodriver: 5 trinn (med bilder)
556 Servodriver: Servoer (også RC-servoer) er små, billige, masseproduserte servomotorer som brukes til radiostyring og småskala robotikk. De er designet for å enkelt kontrolleres: posisjonen til det interne potensiometeret blir kontinuerlig sammenlignet med den befalte posisjonen
QuizzPi, et Raspberry Pi Trivia -spill med Python: 7 trinn (med bilder)
QuizzPi, et Raspberry Pi Trivia -spill med Python: QuizzPi er et triviaspill av arkadetype. QuizzPi ble født fordi jeg hadde behov for å gi datteren min underholdning. Hun er 7 år gammel og hun krever allerede bruk av nye teknologier, tanken var å lage noe som var både morsomt og lærerikt