Indholdsfortegnelse:
- Trin 1: Hvad du har brug for …
- Trin 2: Lodning af brættet
- Trin 3: Opsætning af Arduino
- Trin 4: Opsætning af Python
- Trin 5: Hvor magien sker
Video: Servodriver-board med Python-GUI og Arduino: 5 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:28
Når du laver prototyper eller bygger modelfly, støder du ofte på problemet, at du skal kontrollere servo -rejser eller indstille servoer til midterpositionen.
Hvis du ikke plejer at opbygge hele dit RC-system eller teste, hvor langt du kan skubbe servoen, eller hvor midpositionen er, så er dette board noget for dig! Det giver dig mulighed for at flytte servoen til bestemte positioner, eller lad os rejse frem og tilbage.
Det fungerer overraskende godt, selv med 6 servoer, der kører fra en position til en anden i sløjfen.
Det er også et godt projekt at lære om kommunikation mellem Python-GUI og Arduino ved hjælp af Serial.
Trin 1: Hvad du har brug for …
Til dette projekt skal du bruge følgende:
Hardware
- Arduino nano med kabel. Jeg brugte en klon, og Python-koden forventer faktisk en CH340-chip af en klon
- Et prototypebord. 7x5 cm er nok
- Nogle 2, 54 mm overskrifter og stifter
- 1-6 servoer
- Strømforsyning til servoerne (jeg brugte en batteripakke med 4 batterier)
Software
- Python 3:
- En USB-driver til CH340-chips: Bare google efter drivere til CH340-drivere
- Arduino IDE:
Trin 2: Lodning af brættet
Lodningen er faktisk lige frem ifølge Fritzing på billedet. Bare sørg for, at du let kan tilslutte servoerne til de 3-benede rækker.
- De 3-benede rækker er fastgjort til digital pin 3, 5, 6, 9, 10 og 11 på Arduino nano.
- Den røde ledning er fastgjort til 5V-stiften på Arduino
- Den sorte ledning er forbundet til GND-stiften på Arduino
- Stiftparret under de 3-benede rækker er beregnet til at tilslutte en typisk RC-modtager strømforsyning, du kan tilføje stik som du vil, f.eks. Skrueterminaler, XT-stik, JST eller … eller …
Personligt kan jeg godt lide rækker af kvindelige overskrifter til at sætte Arduino i, men det er op til dig.
Bemærk, at de kortsluttede kvindelige overskrifter er en jumper, der lader dig levere servoen ved hjælp af 5V-kilden til Arduino til testformål. Hvis du belaster det for meget, nulstilles Arduino og mister det rigtige tempo. De SKAL fjernes, før der tilsluttes en anden strømforsyning.
Trin 3: Opsætning af Arduino
Installer Arduino IDE og flash Arduino nano med den vedhæftede skitse.
Trin 4: Opsætning af Python
Installer Python 3 efter download. Sørg for at markere muligheden for at oprette en "PATH" -variabel.
Du skal installere yderligere to pakker ved hjælp af pip. Til det skal du trykke på "Windows" -tasten, skrive "cmd" og trykke "enter". Skriv følgende kommandoer i kommandoprompten:
- pip installer serie
- piip installer pyserial
- pip installer tkinter
Som du kan se, har jeg brug for modulerne såvel serielle som pyseriale, hvilket sandsynligvis ikke er det mest effektive, da pyserial skulle erstatte seriel. Ikke desto mindre virker det, og jeg er lige begyndt at lære;).
Åbn Python-scriptet i IDE, og kør det, eller kør det direkte fra terminalen.
I rullemenuen kan du vælge mellem to tilstande, "Gå lige ud" og "Ping Pong":
- Gå ligeud: Indtast en servoposition i mikrosekunder i den første kolonne, og tryk på "Start" for at få servoen til at flytte til den angivne position.
- Ping Pong: Indtast en nedre grænse og en øvre grænse i den anden og tredje kolonne. Det er den nedre og øvre position, mellem hvilken servoen vil gå frem og tilbage. I kolonnen "Ping Pong Time" kan du angive et tidspunkt i millisekunder, hvor servoen venter, når den har nået den øverste eller nedre position. Tryk på "Start", og servoen begynder at bevæge sig frem og tilbage, tryk på "Stop", og servoen stopper.
Trin 5: Hvor magien sker
Sidst men ikke mindst vil jeg påpege nogle af detaljerne i koden for dem, der ønsker at komme ind i lidt seriel kommunikation mellem Python og Arduino.
Hvad sker der nu i Python -programmet?
Først og fremmest kontrollerer programmet, hvad der er knyttet til COM-portene i denne linje og gemmer det på en liste:
self. COMPortsList = liste (serial.tools.list_ports.comports ())
Derefter går den gennem listen, indtil den finder en berygtet CH340-chip, gemmer den og derefter opretter en seriel forbindelse efter forløbet. Bemærk, at forløkken går i stykker, så snart den første CH340 er fundet.
for p i self. COMPortsList: hvis "CH340" i p [1]: # Leder efter en Arduino Clone self. COMPort = p [0] pause ellers: pass self. Ser = serial. Serial (self. COMPort, 57600)
Den serielle forbindelse etableres med COM-porten med en baudrate på 57600.
Og hvad gør Arduino -koden? Nå, da Arduino kun har en COM-port, er den serielle forbindelse kun en linje:
Serial.begin (57600);
Nu kan vi bruge begge porte til at kommunikere. I dette tilfælde er det kun meddelelser fra Python til Arduino. Beskederne sendes her fra Python. Den serielle forbindelse overfører bytes som standard. Det er også den hurtigste måde at sende data på, og så vidt jeg ved er det stadig ret udbredt. Så ints for servoens nummer (så Arduino ved, hvilken servo der skal flyttes) og positionen i mikrosekunder bliver til en byte.
Kommando = struct.pack ('> B', self. Place) # Int-variablen "self. Place" bliver til en byte
self. Ser.write (Command) # Skriver byte på kommandoen Serial-Port = int (self. ServoPos.get ()) // 10 # Læser input fra feltet og send int Command = struct.pack (' > B ', kommando) # Drej int i et byte-selv. Ser.write (kommando) # Skrivning af byte på Serial-Port
Parsing af data tager også tid (for eksempel at tolke fire bytes "1", "2", "3" og "0" som int 1230, ikke som fire forskellige tegninger), og det er bedre at gøre det ikke på Arduino.
På Arduino-siden hentes de sendte oplysninger som følger:
hvis (Serial.available ()> 1) {// Hvis serielle data er tilgængelige, indtastes sløjfen c = Serial.read (); // Den første byte (antal servoer) gemmes i en variabel Micros = Serial.read (); // Servoens position gemmes her Mikro = Mikro * 10; }
Anbefalede:
Akustisk levitation med Arduino Uno trin for trin (8 trin): 8 trin
Akustisk levitation med Arduino Uno Step-by Step (8-trin): ultralyds lydtransducere L298N Dc kvindelig adapter strømforsyning med en han-DC-pin Arduino UNOBreadboard Sådan fungerer det: Først uploader du kode til Arduino Uno (det er en mikrokontroller udstyret med digital og analoge porte til konvertering af kode (C ++)
Styring af flere lysdioder med Python og din Raspberry Pi's GPIO -pins: 4 trin (med billeder)
Styring af flere lysdioder med Python og din Raspberry Pi's GPIO -pins: Denne instruktion viser, hvordan du styrer flere GPIO -ben på din RaspberryPi for at drive 4 lysdioder. Det vil også introducere dig til parametre og betingede udsagn i Python. Vores tidligere instruerbare brug af din Raspberry Pi's GPIO -pins til at kon
Kom godt i gang med Python: 7 trin (med billeder)
Kom godt i gang med Python: Programmering er fantastisk! Det er kreativt, sjovt og giver din hjerne en mental træning. Mange af os ønsker at lære mere om programmering, men overbeviser os selv om, at vi ikke kan. Måske har den for meget matematik, måske skræmmer den jargon, der kastes rundt
Kontroladgang til Arduino YÚN med MySQL, PHP5 og Python: 11 trin (med billeder)
Kontroller adgangen til Arduino YÚN med MySQL, PHP5 og Python: Hej venner! Som du ved, i september var det nye premiere -skjold for Arduino, Arduino YUN. Denne lille ven har et Linux -integreret system, som vi kan køre alt, hvad du kan tænke på (i hvert fald indtil videre). Selvom der er meget lidt information
QuizzPi, et Raspberry Pi Trivia -spil med Python: 7 trin (med billeder)
QuizzPi, et Raspberry Pi Trivia -spil med Python: QuizzPi er et trivia -spil af arkadetype. QuizzPi blev født, fordi jeg havde behov for at give min datter en underholdning. Hun er 7 år, og hun kræver allerede brug af nye teknologier, tanken var at skabe noget, der var både sjovt og lærerigt