Obsah:

Servodriver-Board s Python-GUI a Arduino: 5 krokov
Servodriver-Board s Python-GUI a Arduino: 5 krokov

Video: Servodriver-Board s Python-GUI a Arduino: 5 krokov

Video: Servodriver-Board s Python-GUI a Arduino: 5 krokov
Video: Как развести плату с микроконтроллером, SMT сборка, прошивка 2024, November
Anonim
Servodriver-Board s Python-GUI a Arduino
Servodriver-Board s Python-GUI a Arduino

Pri prototypovaní alebo stavbe modelov lietadiel sa často stretávate s problémom, že musíte skontrolovať zdvih serva alebo nastaviť serva do strednej polohy.

V prípade, že sa nechystáte vybudovať celý svoj RC systém alebo testovať, ako ďaleko môžete tlačiť na servo alebo kde je stredová poloha, potom je táto doska pre vás! Umožňuje vám presunúť servo do určených polôh alebo sa vrátiť späť.

Funguje to prekvapivo dobre, dokonca aj so 6 servami, ktoré v slučke pretekajú z jednej polohy do druhej.

Je to tiež pekný projekt na zoznámenie sa s komunikáciou medzi Python-GUI a Arduino pomocou Serial.

Krok 1: Čo potrebujete…

Na tento projekt budete potrebovať:

Hardvér

  • Arduino nano s káblom. Použil som klon a Pythonov kód v skutočnosti očakáva klonový čip CH340
  • Prototypová doska. Stačí 7 x 5 cm
  • Asi 2, 54 mm hlavičky a piny
  • 1-6 serv
  • Napájanie serva (použil som batériový balíček so 4 batériami)

Softvér

  • Python 3:
  • Ovládač USB pre čipy CH340: Jednoducho vyhľadajte ovládače pre ovládače CH340 pomocou Googlu
  • Arduino IDE:

Krok 2: Spájkovanie dosky

Spájkovanie dosky
Spájkovanie dosky

Podľa Fritzinga na obrázku je spájkovanie skutočne priamočiare. Uistite sa, že servá môžete ľahko pripojiť k 3-kolíkovým radom.

  • 3-kolíkové rady sú pripevnené k digitálnym pinom 3, 5, 6, 9, 10 a 11 Arduino nano.
  • Červený vodič je pripevnený k 5V-kolíku Arduina
  • Čierny vodič je pripojený k kolíku GND Arduina
  • Dvojica pinov pod 3-kolíkovými radmi slúži na pripojenie typického napájacieho zdroja RC prijímača. Môžete ľubovoľne pridávať konektory, napríklad skrutkovacie svorky, konektory XT, JST alebo … alebo …

Osobne sa mi páči rad ženských hlavičiek, do ktorých môžem vložiť Arduino, ale je to na vás.

Upozorňujeme, že skrátené ženské hlavičky sú prepojkou, ktorá vám umožňuje napájať servo pomocou 5V zdroja Arduino na testovacie účely. Ak to príliš namáhate, Arduino sa resetuje a stratí správne tempo. Musia byť odstránené pred pripojením iného zdroja napájania.

Krok 3: Nastavenie Arduina

Nainštalujte Arduino IDE a zaistite flash Arduino nano pomocou priloženého náčrtu.

Krok 4: Nastavenie Pythonu

Nastavenie Pythonu
Nastavenie Pythonu

Po stiahnutí si nainštalujte Python 3. Nezabudnite zaškrtnúť možnosť vytvoriť premennú „PATH“.

Pomocou pip musíte nainštalovať ďalšie dva balíky. Za týmto účelom stlačte kláves „Windows“, zadajte „cmd“a kliknite na „Enter“. Do príkazového riadka zadajte nasledujúce príkazy:

  • pip install serial
  • piip install pyserial
  • pip install tkinter

Ako vidíte, potrebujem moduly sériové aj pyserial, čo pravdepodobne nie je najefektívnejšie, pretože pyserial by mal nahradiť sériový. Napriek tomu to funguje a ja sa ešte len začínam učiť;).

Otvorte skript Python v IDE a spustite ho alebo ho spustite priamo z terminálu.

V rozbaľovacej ponuke si môžete vybrať z dvoch režimov „Choď rovno“a „Ping Pong“:

  • Choďte rovno: V prvom stĺpci zadajte polohu servo v mikrosekundách a stlačením „Štart“sa servo presunie do určenej polohy.
  • Ping Pong: Do druhého a tretieho stĺpca zadajte dolnú a hornú hranicu. To je dolná a horná poloha, medzi ktorými sa servo vráti tam a späť. V stĺpci „Ping Pong Time“môžete zadať čas v milisekundách, počas ktorého bude servo čakať, kým sa dostane do hornej alebo dolnej polohy. Stlačte „Štart“a servo sa začne pohybovať tam a späť, stlačte „Zastaviť“a servo sa zastaví.

Krok 5: Kde sa stane mágia

V neposlednom rade chcem poukázať na niektoré detaily v kóde pre tých, ktorí sa chcú dostať do trochu sériovej komunikácie medzi Pythonom a Arduinom.

Čo sa teraz stane v programe Python?

Program najskôr skontroluje, čo je pripojené k portom COM v tomto riadku, a uloží ho do zoznamu:

self. COMPortsList = zoznam (serial.tools.list_ports.comports ())

Potom prechádza zoznamom, kým nenájde notoricky známy čip CH340, uloží ho a potom nadväzuje sériové pripojenie po cykle for-loop. Všimnite si toho, že slučka for-loop sa preruší hneď, ako sa nájde prvý CH340.

for p in self. COMPortsList: if "CH340" in p [1]: # Hľadám Arduino Clone self. COMPort = p [0] break else: pass self. Ser = serial. Serial (self. COMPort, 57600)

Sériové pripojenie je nadviazané s portom COM s prenosovou rýchlosťou 57 600.

A čo robí kód Arduino? Pretože Arduino má iba jeden port COM, sériové pripojenie je iba jeden riadok:

Serial.begin (57600);

Teraz môžeme oba porty použiť na komunikáciu. V tomto prípade iba správy z Pythonu do Arduina. Správy sa sem odosielajú z Pythonu. Sériové pripojenie štandardne prenáša bajty. Je to tiež najrýchlejší spôsob odosielania údajov a pokiaľ viem, je stále dosť rozšírený. Inty pre počet serv (takže Arduino vie, ktoré servo sa má presunúť) a poloha v mikrosekundách sa premenia na bajt.

Command = struct.pack ('> B', self. Place) # Premenná int „self. Place“sa zmení na bajt

self. Ser.write (Command) # Zapísanie bajtu na sériový port Command = int (self. ServoPos.get ()) // 10 # Čítanie vstupu z poľa a zapnutie príkazu int Command = struct.pack (' > B ', príkaz) # Zapnutie bajtu v sebe. Ser.write (príkaz) # Zapísanie bajtu na sériový port

Tiež analýza údajov vyžaduje určitý čas (napríklad interpretácia štyroch bajtov „1“, „2“, „3“a „0“ako int 1230, nie ako štyri rôzne znaky) a je lepšie to urobiť nie na Arduine.

Na strane Arduino sa odoslané informácie zachytávajú nasledovne:

if (Serial.available ()> 1) {// Ak sú k dispozícii sériové údaje, potom sa zadá slučka c = Serial.read (); // Prvý bajt (počet serv) je uložený do premennej Micros = Serial.read (); // Tu sa uloží poloha serva Micros = Micros * 10; }

Odporúča: