Spisu treści:

Szeregowy kontroler serwo oparty na Arduino: 6 kroków
Szeregowy kontroler serwo oparty na Arduino: 6 kroków

Wideo: Szeregowy kontroler serwo oparty na Arduino: 6 kroków

Wideo: Szeregowy kontroler serwo oparty na Arduino: 6 kroków
Wideo: [Arduino] #6 - Wybór odpowieniej płytki Arduino do nauki 2024, Lipiec
Anonim
Szeregowy kontroler serwo oparty na Arduino
Szeregowy kontroler serwo oparty na Arduino
Szeregowy kontroler serwo oparty na Arduino
Szeregowy kontroler serwo oparty na Arduino

Jest to prosty kontroler szeregowy dla wielu serw oparty na Arduino. (mój pierwszy instruktaż też:))

Większość pracy w tym zakresie polegała na uzyskaniu oprogramowania do komunikowania się z arduino i stworzeniu protokołu do przekazywania danych. Jeśli chodzi o aspekt sprzętowy, użyłem tylko dwóch serw (tutaj standardowe serwo Parallax). Sparkfun Arduino ProtoShield i Arduino Duemilanove z ATMEGA328, ale większość tych części można zastąpić podobnymi elementami. Wymyśliłem ten projekt jako część systemu RC, ale nawiązanie komunikacji zajęło dużo czasu. Jeśli ktoś ma jakieś ulepszenia, pomysły lub błędy, prosimy o komentowanie. EDIT: Napisałem to jakiś czas temu, dopiero niedawno to opublikowałem.

Krok 1: Rzeczy, których możesz potrzebować…

Rzeczy, których możesz potrzebować…
Rzeczy, których możesz potrzebować…
Rzeczy, których możesz potrzebować…
Rzeczy, których możesz potrzebować…

Niektóre rzeczy, których będziesz potrzebować, aby to zbudować. 1. Płytka Arduino (do wyboru) 2. dwa (lub jedno) serwa 3. zworki 4. Visual Studio 2008 Express – link (opcjonalnie) 5. Arduino IDE – link Przepraszam fani Linuksa i Apple, mój program działa tylko na Windows na razie, ale nadal możesz ręcznie wysyłać polecenia szeregowe do arduino bez zmiany kodu.

Krok 2: Podłącz sprzęt

Podłącz sprzęt
Podłącz sprzęt

Nic bardzo skomplikowanego w tym kroku. Po prostu podłącz jeden serwo do pinu 9, a drugi do pinu 10.

Krok 3: Zaprogramuj Arduino

Zaprogramuj Arduino
Zaprogramuj Arduino

teraz możesz wgrać szkic na arduino.

Oto prosty podział kodu: #include Servo myservo; // utwórz obiekt servo do sterowania serwo Servo myservo1; int przychodzącyByte = 0, licznik danych = 0, licznik = 0, gotowy = 0; // dla przychodzących danych szeregowych char data[10]; const char weryfikacja[8] = "ma11hew"; polecenie char [3]; void setup() { myservo.attach(9); myservo1.attach(10); Serial.początek(38400); // otwiera port szeregowy, ustawia szybkość transmisji Serial.println("Hi Arduino Here!"); // dodane, aby pomóc zidentyfikować port szeregowy To po prostu ustawia port szeregowy i serwa. wew; for(i = 0; i<180;i++) { myservo.write(i); opóźnienie(15); } myservo.write(5); for(i = 0; i<180;i++) { myservo1.write(i); opóźnienie(15); } myservo1.write(5); } Prosty ruch zamiatania w celu sprawdzenia, czy serwa działają poprawnie. void loop() { gotowy = 0; licznik = 0; while (1==1) { if (Serial.read() != Verify[licznik]) { break; } if(licznik == 6) { opóźnienie(20); polecenie[0] = Serial.odczyt(); polecenie[1] = Serial.odczyt(); //if (Serial.read() == ((polecenie[1] * 12) % 8)) // { gotowy = 1; //} Serial.println("zapisane polecenie"); } licznik ++; opóźnienie(2); } to sprawdza bufor szeregowy pod kątem poprawnego ciągu autoryzacji, a następnie pobiera dwa bajty dla polecenia. skomentowana instrukcja if pozwala na wprowadzenie prowizorycznej sumy kontrolnej, ale utrudni ręczny interfejs. ready można ustawić na 0, więc polecenia nie będą analizowane, tak jak w przypadku uszkodzonych danych. //przeszukaj polecenia if (gotowy == 1) { if (command[0] == 'T') { command[0] = 0; Serial.print("kontrola przepustnicy na pinie 9 do: "); Serial.println(map(polecenie[1], 32, 126, 2, 180), DEC); myservo.write(map(polecenie[1], 32, 126, 2, 180)); } if (polecenie[0] == 'S') { polecenie[0] = 0; Serial.print("kontrola przepustnicy na pinie 10 do: "); Serial.println(map(polecenie[1], 32, 126, 2, 180), DEC); myservo1.write(map(polecenie[1], 32, 126, 2, 180)); } } } reszta kodu polega na przeszukaniu komendy dla poprawnych komend (T lub S.), jeśli którakolwiek z nich pasuje, pobiera następny bajt i wysyła go do serwa. więcej na mapie (polecenie[1], 32, 126, 2, 180) później… kod tutaj można rozszerzyć o wszystko, czego możesz potrzebować (np. światła, silniki, IR itp.) ten kod powinien działać poprawnie bez modyfikacje.

Krok 4: Zainstaluj oprogramowanie

Zainstaluj oprogramowanie
Zainstaluj oprogramowanie

Mam dwa sposoby na zainstalowanie tego… instalatora nsis: Pobierz poniżej samorozpakowujący się instalator i uruchom go. Podczas instalacji będziesz mieć możliwość zainstalowania źródeł. pakiet binarny instalatora instaluje podstawowe biblioteki dll c++, dzięki czemu można go uruchomić na komputerze bez zainstalowanego wizualnego c++. Po zakończeniu instalatora możesz go uruchomić z pulpitu lub menu Start. sposób zip (niezweryfikowany): Pobierz i uruchom, powinno działać. Może. (Archiwum zip ma taką samą strukturę folderów utworzoną przez instalator, bez źródeł. Nie mam maszyny bez studia wizualnego do testowania, więc może nie działać.)

Krok 5: Użyj programu interfejsu

Użyj programu interfejsu
Użyj programu interfejsu
Użyj programu interfejsu
Użyj programu interfejsu

Aby skorzystać z programu należy najpierw wybrać szybkość transmisji zdefiniowaną w szkicu arduino. Niezmodyfikowany szkic ma domyślnie 38400 bodów, ale można go zmienić, aby dopasować go do potrzeb, takich jak wolniejsze łącze radiowe. uwaga: szybkości transmisji wyższe niż 38400 nie były zbyt stabilne, myślę, że dzieje się tak dlatego, że uart zapełnia się przed przetworzeniem danych. Następnie wybierz port COM, którego chcesz użyć. program domyślnie jest ustawiony na COM4, pamiętaj, aby go zmienić, w przeciwnym razie program ulegnie awarii. Na koniec kliknij otwórz. Jeśli wszystko poszło dobrze, program otworzy wybrany port szeregowy z wybraną szybkością transmisji. Jeśli nie, program prawdopodobnie ulegnie awarii z nieobsługiwanym wyjątkiem. upewnij się, że port jest poprawny i spróbuj ponownie. Użyj pól tekstowych, aby przesłać bezpośrednie polecenia do arduino. "map(command[1], 32, 126, 2, 180)" skaluje wszystkie 94 możliwe polecenia, *spacja* do ~, odczytywane przez arduino w ASCII od 2 do 180 dla serwa. każdy bajt mniejszy niż ASCII 32 (spacja) lub większy od 126 (~) domyślnie 63 (?). Paski śledzenia zapewniają łatwiejszy interfejs dla bezpośrednich poleceń. każdy krok wysyła polecenie szeregowe do arduino przyrostowo.

Krok 6: Bądź kreatywny

Bądź kreatywny!
Bądź kreatywny!
Bądź kreatywny!
Bądź kreatywny!

Pomyśl o fajnych rzeczach do zrobienia z tym. Kilka pomysłów: 1. Zdalna przepustnica do samochodu. 2. Uchwyt kamery 3D 3. Podwodny łazik Baw się dobrze!!

Zalecana: