Spisu treści:
- Krok 1: Czego potrzebujesz…
- Krok 2: Lutowanie płytki
- Krok 3: Konfiguracja Arduino
- Krok 4: Konfiguracja Pythona
- Krok 5: Gdzie dzieje się magia
Wideo: Servodriver-Board Z Python-GUI i Arduino: 5 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:31
Prototypując lub budując modele samolotów często natrafia się na problem, że trzeba sprawdzić skok serwa lub ustawić serwa w pozycji środkowej.
Jeśli nie chcesz budować całego systemu RC lub testować, jak daleko możesz popchnąć serwo lub gdzie jest pozycja środkowa, ta płyta jest dla Ciebie! Pozwala przesunąć serwo w określone pozycje lub jeździć tam iz powrotem.
Działa zaskakująco dobrze, nawet z 6 serwomechanizmami, które ścigają się z jednej pozycji na drugą na pętli.
Jest to również fajny projekt do nauki komunikacji między Python-GUI i Arduino za pomocą Serial.
Krok 1: Czego potrzebujesz…
Do tego projektu będziesz potrzebować:
Sprzęt komputerowy
- Arduino nano z kablem. Użyłem klona, a kod Pythona faktycznie oczekuje klonu CH340-chip
- Płytka prototypowa. Wystarczy 7x5cm
- Niektóre nagłówki i szpilki 2, 54 mm
- 1-6 serw
- Zasilanie serw (użyłem batterypack z 4 bateriami)
Oprogramowanie
- Python 3:
- Sterownik USB dla chipów CH340: po prostu wyszukaj w Google sterowniki dla sterowników CH340
- Arduino IDE:
Krok 2: Lutowanie płytki
Lutowanie jest właściwie proste według Fritzinga na zdjęciu. Tylko upewnij się, że możesz łatwo podłączyć serwa do 3-pinowych rzędów.
- Trzy rzędy pinów są podłączone do cyfrowych pinów 3, 5, 6, 9, 10 i 11 Arduino nano.
- Czerwony przewód jest podłączony do pinu 5V Arduino
- Czarny przewód jest podłączony do pinu GND Arduino
- Para pinów pod 3-pinowymi rzędami służy do podłączenia typowego zasilacza odbiornika RC, możesz dodawać złącza, jak chcesz, takie jak zaciski śrubowe, złącza XT, JST lub… lub…
Osobiście lubię rzędy żeńskich nagłówków, aby umieścić Arduino, ale to zależy od Ciebie.
Należy pamiętać, że zwarte żeńskie złącza to zworka, która umożliwia zasilanie serwa przy użyciu źródła 5V Arduino do celów testowych. Jeśli za bardzo go obciążysz, Arduino zresetuje się i straci właściwe tempo. MUSZĄ one zostać usunięte przed podłączeniem kolejnego zasilacza.
Krok 3: Konfiguracja Arduino
Zainstaluj Arduino IDE i sflashuj Arduino nano z załączonym szkicem.
Krok 4: Konfiguracja Pythona
Zainstaluj Pythona 3 po pobraniu. Upewnij się, że zaznaczyłeś opcję tworzenia zmiennej „PATH”.
Musisz zainstalować jeszcze dwa pakiety za pomocą pip. W tym celu naciśnij klawisz "Windows", wpisz "cmd" i naciśnij "enter". W wierszu polecenia wpisz następujące polecenia:
- pip zainstalować serial
- piip zainstaluj pyserial
- pip zainstaluj tkinter
Jak widać, potrzebuję modułów serial i pyserial, który prawdopodobnie nie jest najwydajniejszy, ponieważ pyserial powinien zastąpić serial. Niemniej jednak działa i dopiero zaczynam się uczyć;).
Otwórz skrypt Pythona w IDE i uruchom go lub uruchom bezpośrednio z terminala.
W rozwijanym menu możesz wybrać jeden z dwóch trybów: „Go Straight” i „Ping Pong”:
- Idź prosto: Wprowadź pozycję serwa w mikrosekundach w pierwszej kolumnie i naciśnij „Start”, aby serwo przemieściło się do określonej pozycji.
- Ping Pong: Wprowadź dolną i górną granicę w drugiej i trzeciej kolumnie. Są to dolna i górna pozycja, pomiędzy którymi serwo będzie się cofać i cofać. W kolumnie "Ping Pong Time" możesz określić czas w milisekundach, przez który serwo będzie czekał, gdy osiągnie górną lub dolną pozycję. Naciśnij "Start", a serwo zacznie się poruszać do tyłu i do przodu, naciśnij "Stop", a serwo zatrzyma się.
Krok 5: Gdzie dzieje się magia
Na koniec chciałbym wskazać niektóre szczegóły w kodzie dla tych, którzy chcą trochę zagłębić się w komunikację szeregową między Pythonem a Arduino.
Co się dzieje w programie Pythona?
Przede wszystkim program sprawdza, co jest dołączone do portów COM w tej linii i zapisuje to na liście:
self. COMPortsList = lista(serial.tools.list_ports.comports())
Następnie przegląda listę, aż znajdzie znany układ CH340, zapisuje go, a następnie nawiązuje połączenie szeregowe po pętli for. Zauważ, że pętla for przerywa się, gdy tylko zostanie znaleziony pierwszy CH340.
for p w self. COMPortsList: if "CH340" w p[1]: # Szukam klonu Arduino self. COMPort = p[0] break else: pass self. Ser = serial. Serial(self. COMPort, 57600)
Połączenie szeregowe jest nawiązywane z portem COM z szybkością transmisji 57600.
A co robi kod Arduino? Cóż, skoro Arduino ma tylko jeden port COM, połączenie szeregowe to tylko jedna linia:
Serial.początek (57600);
Teraz do komunikacji możemy wykorzystać oba porty. W tym przypadku tylko wiadomości z Pythona do Arduino. Wiadomości są wysyłane tutaj z Pythona. Połączenie szeregowe domyślnie przesyła bajty. Jest to również najszybszy sposób przesyłania danych i, o ile wiem, wciąż dość rozpowszechniony. Tak więc int dla numeru serwa (aby Arduino wiedział, które serwo ma przesunąć) oraz pozycja w mikrosekundach są zamieniane na bajt.
Command = struct.pack('>B', self. Place) # Zmienna int "self. Place" jest zamieniana na bajt
self. Ser.write(Command) # Zapisanie bajtu w porcie szeregowym Command = int(self. ServoPos.get())//10 # Odczytywanie danych wejściowych z pola i włączanie int Command = struct.pack(' >B', Command) # Zmiana int w bajt self. Ser.write(Command) # Zapisanie bajtu na porcie szeregowym
Ponadto parsowanie danych zajmuje trochę czasu (na przykład interpretacja czterech bajtów „1”, „2”, „3” i „0” jako int 1230, a nie jako cztery różne znaki) i lepiej zrobić to nie na Arduino.
Po stronie Arduino wysyłane informacje są pobierane w następujący sposób:
if(Serial.available()>1){ // Jeśli dane szeregowe są dostępne, wprowadzana jest pętla c = Serial.read(); // Pierwszy bajt (liczba serwomechanizmu) jest zapisywany w zmiennej Micros = Serial.read(); // Pozycja serwomechanizmu jest zapisywana tutaj Micros = Micros * 10; }
Zalecana:
Atendente Automático Com Python No Google Colab: 5 kroków
Atendente Automático Com Python No Google Colab: Olá pessoal! Tudo bem ? Meu nome é Guilherme, Nesse projeto nós vamos aprender como criar um ChatBot używa języka programowania Python i Google Colab
Rozpoznawanie i identyfikacja twarzy - Arduino Face ID przy użyciu OpenCV Python i Arduino.: 6 kroków
Rozpoznawanie i identyfikacja twarzy | Arduino Face ID przy użyciu OpenCV Python i Arduino.: Rozpoznawanie twarzy AKA face ID jest obecnie jedną z najważniejszych funkcji w telefonach komórkowych. Tak więc miałem pytanie „czy mogę mieć identyfikator twarzy dla mojego projektu Arduino” a odpowiedź brzmi tak… Moja podróż zaczęła się następująco: Krok 1: Dostęp do nas
Prosta gra w zgadywanie - Python + XBees + Arduino: 10 kroków
Prosta gra zgadywania - Python + XBees + Arduino: Oto jak działa gra: Masz 4 próby odgadnięcia litery między „a” – „h”-> Odgadnij właściwą literę: Wygrywasz! ?-> Zgadnij niewłaściwą literę: Koniec gry ?-> Zgadnij jakąkolwiek inną postać poza „a” – „h”: Koniec gry? Twój Arduino pozwoli ci
Urządzenie do śledzenia twarzy! Python i Arduino: 5 kroków
Urządzenie do śledzenia twarzy! Python i Arduino: Witam wszystkich, którzy czytają tę instrukcję. Jest to urządzenie do śledzenia twarzy, które działa na bibliotece Pythona o nazwie OpenCV. CV oznacza „Wizję komputerową”. Następnie skonfigurowałem interfejs szeregowy między moim komputerem a moim Arduino UNO. Więc to oznacza, że
Python (pySerial) + Arduino + silnik prądu stałego: 14 kroków
Python (pySerial) + Arduino + silnik prądu stałego: Ten szybki samouczek pokazuje prostą obsługę silnika prądu stałego za pomocą graficznego interfejsu użytkownika języka Python. Aby Python mógł komunikować się z płytą Arduino, użyjemy pakietu pySerial. pySerial to biblioteka Pythona, która zapewnia obsługę połączeń szeregowych o