Innehållsförteckning:
- Steg 1: Vad du behöver …
- Steg 2: Lödning av brädet
- Steg 3: Konfigurera Arduino
- Steg 4: Konfigurera Python
- Steg 5: Där magin händer
Video: Servodriver-Board med Python-GUI och Arduino: 5 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:45
När du gör prototyper eller bygger modellflygplan stöter du ofta på problemet, att du måste kontrollera servorörelser eller ställa in servon till mittläget.
Om du inte brukar bygga upp hela ditt RC-system eller testa, hur långt du kan skjuta servon eller var mittpositionen är, är den här brädan något för dig! Det låter dig flytta servon till specifika positioner eller låt oss resa fram och tillbaka.
Det fungerar förvånansvärt bra, även med 6 servon som springer från en position till en annan i slingan.
Det är också ett trevligt projekt att lära sig om kommunikation mellan Python-GUI och Arduino med Serial.
Steg 1: Vad du behöver …
För detta projekt behöver du följande:
Hårdvara
- Arduino nano med kabel. Jag använde en klon, och Python-koden förväntar sig faktiskt ett CH340-chip av en klon
- En prototypplatta. 7x5cm räcker
- Några 2, 54 mm sidhuvuden och stift
- 1-6 servos
- Strömförsörjning för servon (jag använde ett batteripaket med 4 batterier)
programvara
- Python 3:
- En USB-drivrutin för CH340-chipsen: Google bara efter drivrutiner för CH340-drivrutiner
- Arduino IDE:
Steg 2: Lödning av brädet
Lödningen är faktiskt rakt fram enligt Fritzing på bilden. Se bara till att du enkelt kan ansluta servon till de 3-stifts raderna.
- De 3-poliga raderna är fästa på digital stift 3, 5, 6, 9, 10 och 11 på Arduino nano.
- Den röda tråden är ansluten till 5V-stiftet på Arduino
- Den svarta ledningen är ansluten till GNU-stiftet på Arduino
- Stiftparet under 3-stiftsraderna är avsett att ansluta en typisk RC-mottagare, du kan lägga till kontakter som du vill, till exempel skruvplintar, XT-kontakter, JST eller … eller …
Personligen gillar jag rader med kvinnliga rubriker för att sätta in Arduino, men det är upp till dig.
Observera att de kortslutna honhuvudena är en bygel, som låter dig leverera servon med Arduino 5V-källa för teständamål. Om du anstränger det för mycket kommer Arduino att återställa och tappa rätt tempo. De MÅSTE tas bort innan en annan strömförsörjning ansluts.
Steg 3: Konfigurera Arduino
Installera Arduino IDE och blinka Arduino nano med den bifogade skissen.
Steg 4: Konfigurera Python
Installera Python 3 efter nedladdning. Se till att markera alternativet för att skapa en "PATH" -variabel.
Du måste installera ytterligare två paket med pip. För det, tryck på "Windows" -tangenten, skriv "cmd" och tryck "enter". Skriv följande kommandon i kommandotolken:
- pip installera serie
- piip installera pyserial
- pip installera tkinter
Som du ser behöver jag modulerna såväl seriella som pyseriala, vilket troligen inte är det mest effektiva, eftersom pyserial bör ersätta seriell. Ändå fungerar det och jag har precis börjat lära mig;).
Öppna Python-Script i IDE och kör det, eller kör det direkt från terminalen.
I rullgardinsmenyn kan du välja mellan två lägen, "Gå rakt" och "Ping Pong":
- Gå rakt: Ange en servoposition i mikrosekunder i den första kolumnen och tryck på "Start" för att få servon att flytta till den angivna positionen.
- Ping Pong: Ange en nedre gräns och en övre gräns i den andra och tredje kolumnen. Det är det nedre och övre läget, mellan vilket servon kommer att gå fram och tillbaka. I kolumnen "Ping Pong Time" kan du ange en tid i millisekunder som servon väntar när den har nått den övre eller nedre positionen. Tryck på "Start" och servon börjar röra sig fram och tillbaka, tryck på "Stopp" och servon stannar.
Steg 5: Där magin händer
Sist men inte minst vill jag påpeka några av detaljerna i koden för dem som vill komma in i lite seriell kommunikation mellan Python och Arduino.
Vad händer nu i Python -programmet?
Först och främst kontrollerar programmet vad som är anslutet till COM-portarna på den här raden och sparar det i en lista:
self. COMPortsList = list (serial.tools.list_ports.comports ())
Sedan går den igenom listan tills den hittar ett ökänt CH340-chip, sparar det och upprättar sedan en seriell anslutning efter for-loop. Observera att förslingan går sönder så snart den första CH340 hittas.
för p i self. COMPortsList: om "CH340" i p [1]: # Letar efter en Arduino Clone self. COMPort = p [0] paus annars: pass self. Ser = serial. Serial (self. COMPort, 57600)
Den seriella anslutningen upprättas med COM-porten med en baudrate på 57600.
Och vad gör Arduino -koden? Tja, eftersom Arduino bara har en COM-port, är den seriella anslutningen bara en rad:
Serial.begin (57600);
Nu kan vi använda båda portarna för att kommunicera. I detta fall bara meddelanden från Python till Arduino. Meddelandena skickas hit från Python. Den seriella anslutningen överför byte som standard. Det är också det snabbaste sättet att skicka data och så vitt jag vet är det fortfarande ganska utbrett. Så ints för servos nummer (så att Arduino vet vilken servo som ska flyttas) och positionen i mikrosekunder förvandlas till en byte.
Kommando = struct.pack ('> B', self. Place) # Int-variabeln "self. Place" förvandlas till en byte
self. Ser.write (Command) # Skriva byte på Serial-Port Command = int (self. ServoPos.get ()) // 10 # Läser inmatningen från fältet och lämna in int Command = struct.pack (' > B ', Command) # Turning the int in a byte self. Ser.write (Command) # Skriva byte på Serial-Port
Det tar också tid att analysera data (till exempel att tolka fyra byte "1", "2", "3" och "0" som int 1230, inte som fyra olika tecken) och det är bättre att göra det inte på Arduino.
På Arduino-sidan hämtas informationen som skickas enligt följande:
if (Serial.available ()> 1) {// Om seriell data är tillgänglig, matas slingan in c = Serial.read (); // Den första byten (antal servon) sparas i en variabel Micros = Serial.read (); // Servos position sparas här Mikro = Mikro * 10; }
Rekommenderad:
Hur man skapar och infogar en tabell och lägger till ytterligare kolumner och/eller rader till den tabellen i Microsoft Office Word 2007: 11 steg
Hur man skapar och infogar en tabell och lägger till ytterligare kolumner och/eller rader till den tabellen i Microsoft Office Word 2007: Har du någonsin haft mycket data du arbetar med och tänkt för dig själv … " hur kan jag göra allt av dessa data ser bättre ut och blir lättare att förstå? " Om så är fallet kan en tabell i Microsoft Office Word 2007 vara ditt svar
Ansiktsigenkänning och identifiering - Arduino Face ID med OpenCV Python och Arduino .: 6 steg
Ansiktsigenkänning och identifiering | Arduino Face ID Med OpenCV Python och Arduino .: Ansiktsigenkänning AKA face ID är en av de viktigaste funktionerna på mobiltelefoner nuförtiden. Så jag hade en fråga " kan jag ha ett ansikts -id för mitt Arduino -projekt " och svaret är ja … Min resa började enligt följande: Steg 1: Tillgång till vi
Arduino -robot med avstånd, riktning och rotationsgrad (öst, väst, norr, söder) som styrs med röst med hjälp av Bluetooth -modul och autonom robotrörelse .: 6 steg
Arduino -robot med avstånd, riktning och rotationsgrad (öst, väst, norr, söder) som styrs med röst med hjälp av Bluetooth -modul och autonom robotrörelse.: Denna instruktion förklarar hur man gör Arduino -robot som kan flyttas i önskad riktning (framåt, bakåt , Vänster, höger, öst, väst, norr, syd) krävs Distans i centimeter med röstkommando. Roboten kan också flyttas autonomt
8 Reläkontroll med NodeMCU och IR -mottagare med WiFi och IR -fjärrkontroll och Android -app: 5 steg (med bilder)
8 Reläkontroll med NodeMCU och IR -mottagare med WiFi och IR -fjärrkontroll och Android -app: Styrning av 8 reläväxlar med nodemcu och IR -mottagare via wifi och IR -fjärrkontroll och Android -app. Fjärrkontrollen fungerar oberoende av wifi -anslutning. HÄR ÄR EN UPPDATERAD VERSIONKLICK HÄR
Temperatur och fuktighet Display och datainsamling med Arduino och bearbetning: 13 steg (med bilder)
Temperatur- och luftfuktighetsvisning och datainsamling med Arduino och bearbetning: Intro: Detta är ett projekt som använder ett Arduino -kort, en sensor (DHT11), en Windows -dator och ett bearbetningsprogram (ett gratis nedladdningsbart) för att visa temperatur, luftfuktighetsdata i digital och stapeldiagramform, visa tid och datum och kör en räkningstid