Spisu treści:
- Krok 1: Komponenty
- Krok 2: Serwerowa płyta główna
- Krok 3: Koder serwera: kopiuj i wklej
- Krok 4: Tablica Klienta
- Krok 5: Kod klienta: skopiuj i wklej
- Krok 6: Uwaga dotycząca kodu:
Wideo: Bezprzewodowe sterowanie serwo: 6 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:31
Ten projekt steruje obrotem serwa bezprzewodowo za pomocą potencjometru (pokrętła). Obrót jest ograniczony do 180 stopni.
Krok 1: Komponenty
Ten projekt składa się z
- 2 płytki kontrolera Arduino UNO z kablem połączeniowym USB
- 2 moduły nadawczo-odbiorcze RF nRF24L01 – 2.4GHz (pomoc dotyczącą tych modułów można znaleźć na stronie
- 2 karty adapterów gniazd (chipów plecakowych) dla nRF24L01
- 1 opcjonalna karta rozszerzeń ProtoShield 328 zgodna z Arduino
- 1 serwo
- 1 potencjometr analogowy
- lutownica i lutownica
- drut
- szczypce z czubkiem igłowym
- folia izolacyjna, użyłem taśmy elektrycznej
Krok 2: Serwerowa płyta główna
Płyta serwerowa składa się z modułu nadawczo-odbiorczego, płyty nakładkowej (która łączy się bezpośrednio z płytą Arduino tylko w jedną stronę) oraz serwomechanizmu. Zdecydowałem się dołączyć płytkę tarczy, aby uniknąć niezgrabnej płytki stykowej i nadać projektowi i ogólnie schludniejsze wykończenie.
Kod i zasoby sieciowe zawarte na liście komponentów szczegółowo opisują połączenia modułu nadawczo-odbiorczego. Zdecydowałem się przylutować połączenia zamiast używać tymczasowych połączeń jak w poprzednich projektach. Ponieważ jestem początkujący, izolowałem każde złącze lutowane taśmą elektryczną (nie były ładne).
Piny płytki nakładki odpowiadają bezpośrednio pinom Arduino. Przed przymocowaniem płytki nakładkowej podłączyłem przewód i lutem piny masy i 5V do szyn płytki. Przylutowałem również przewody 5 V i uziemienia komponentów do szyn płyty osłony, a następnie przymocowałem Arduino do płyty osłony.
Serwo jest podłączone do pinu 3V do zasilania i pinu cyfrowego 2 do komunikacji.
** Uwaga: dopiero po ukończeniu tego buildu zauważyłem, że moje płytki Arduino nie są identyczne. Moje urządzenie nadawczo-odbiorcze serwera jest zasilane z szyny 5 V na płycie osłony, podczas gdy urządzenie nadawczo-odbiorcze klienta jest zasilane z pinu 3 V, chociaż wmawiano mi, że funkcją chipa adaptera w transceiverze jest zapewnienie odpowiedniego napięcia. Jedyne, co mogę powiedzieć na pewno, to to, że dostarczony kod dopasowany do konfiguracji pokazanej na obrazkach daje opisany efekt.
Krok 3: Koder serwera: kopiuj i wklej
//KOD SERWERA/* NRF24L01 Arduino CE > D8 CSN > D10 SCK > D13 MO > D11 MI > D12 RO > Nieużywane GND > GND VCC > 5V */ //okablowanie transceivera
#włączać
// biblioteka serwo
#włączać
// biblioteka nadawczo-odbiorcza
#define Servopin 2
//deklaracja pin wyjścia serwa
SerwoTimer2 serw;
//deklaracja nazwy serwa
RH_NRF24 nrf24;
//deklaracja nazwy transceivera
int timeOUT = 0;
//zmienna dla serwo
impulsy wewnętrzne = 90;
//zmienna do przechowywania impulsów
pusta konfiguracja()
{ serv.attach(Servopin); // serwa rzeczy
Serial.początek(9600); //rzeczy transceivera
jeśli (!nrf24.init())
Serial.println("inicjowanie nie powiodło się"); //serial monitor stuff if (!nrf24.setChannel(12)) //ustaw kanał na 125 Serial.println("setChannel failed"); if (!nrf24.setRF(RH_NRF24::DataRate2Mbps, RH_NRF24::TransmitPower0dBm)) Serial.println("setRF nie powiodło się"); //monitor szeregowy }
pusta pętla()
{ if (nrf24.available()) { uint8_t buf[RH_NRF24_MAX_MESSAGE_LEN]; uint8_t dł = rozmiar(buf); if (nrf24.recv(buf, &len)) //seryjny monitor rzeczy { Serial.print("otrzymałem żądanie: "); impulsy = strtol((const char*)buf, NULL, 10); //zmiana typu danych
int prin = map(impulsy, 750, 2250, 0, 180); //zmiana typu danych
Serial.println(druk); serw.zapis(impulsy); //sprawia, że serwo porusza się } }
}
Krok 4: Tablica Klienta
Płytka klienta składa się z modułu nadawczo-odbiorczego i potencjometru. Moduł nadawczo-odbiorczy jest okablowany w ten sam sposób** co płyta serwerowa, z tym wyjątkiem, że bez płyty nakładkowej jest podłączony bezpośrednio do pinów płyty Arduino.
Potencjometr pobiera napięcie 5V, masę i jest podłączony do pinu analogowego 2.
**Uwaga: jak wspomniano w kroku dotyczącym płyty serwerowej, moje płyty Arduino nie są identyczne. W tym przypadku nadajnik-odbiornik jest podłączony do pinu oznaczonego 3.3V, bezpośrednio przylegającego do pinu 5V, ale znowu wszystko wydaje się działać poprawnie.
Krok 5: Kod klienta: skopiuj i wklej
//KOD KLIENTA/* NRF24L01 Arduino CE > D8 CSN > D10 SCK > D13 MO > D11 MI > D12 RO > Nieużywane GND > GND VCC > 5V */ //okablowanie transceivera
#włączać
//biblioteka nadawczo-odbiorcza
int szpilka = A2; //delaracja potencjometru
wewn wart;
char tempChar[5];
String valString = ""; //zmiana typu danych
RH_NRF24 nrf24; //rzeczy transceivera
pusta konfiguracja()
{ Szeregowy.początek(9600); if (!nrf24.init()) Serial.println("inicjowanie nie powiodło się"); // Wartości domyślne po init to 2,402 GHz (kanał 2), 2Mbps, 0dBm if (!nrf24.setChannel(12)) Serial.println("setChannel failed"); if (!nrf24.setRF(RH_NRF24::DataRate2Mbps, RH_NRF24::TransmitPower0dBm)) Serial.println("setRF nie powiodło się"); } //urządzenia nadawczo-odbiorcze
pusta pętla () {
val = analogRead(potpin); //potencjometr rzeczy
val = mapa(val, 0, 1023, 750, 2250);
wartString = wart; String str = (valString); str.toCharArray(tempChar, 5); //zmiana typu danych nrf24.send(tempChar, sizeof(tempChar));
}
Krok 6: Uwaga dotycząca kodu:
Kod zawiera pewne ograniczone funkcje rozwiązywania problemów w postaci informacji zwrotnej z monitora szeregowego w interfejsie oprogramowania Arduino. Oglądając monitor szeregowy z kodu SERWER (ctrl + shift + M) powinieneś być w stanie zobaczyć stan potencjometru w postaci liczby od 1 do 180.
Również tutaj jest biblioteka dla sieci bezprzewodowej i serwomechanizmu:
www.airspayce.com/mikem/arduino/RadioHead/
github.com/nabontra/ServoTimer2
Zalecana:
Bezprzewodowe sterowanie Arduino Tank (nRF24L01): 6 kroków (ze zdjęciami)
Wireless Arduino Controlled Tank (nRF24L01): Cześć! Dzisiaj pokażę ci, jak zbudować kontrolowany przez Arduino czołg i pilot. Wydrukowane w 3D części zbiornika (z wyjątkiem kontrolera, prowadnicy gąsienic i pokrywy zbiornika) zostały zaprojektowane przez firmę timmiclark i można je znaleźć tutaj
Sterowanie serwo Arduino: 6 kroków
Arduino Servo Control: Serwosilniki mają trzy przewody: zasilanie, masę i sygnał. Przewód zasilający jest zwykle czerwony i powinien być podłączony do pinu 5 V na płytce Arduino. Przewód uziemiający jest zwykle czarny lub brązowy i powinien być podłączony do bolca uziemiającego w Ardui
Sterowanie serwo za pomocą MPU6050 między Arduino i ESP8266 z HC-12: 6 kroków
Sterowanie serwo za pomocą MPU6050 między Arduino i ESP8266 Z HC-12: W tym projekcie kontrolujemy położenie serwonapędu za pomocą mpu6050 i HC-12 do komunikacji między Arduino UNO i ESP8266 NodeMCU
Bezprzewodowe sterowanie zagłówkiem łóżka MQTT: 5 kroków (ze zdjęciami)
Bezprzewodowe sterowanie zagłówkiem łóżka MQTT: Kilka lat temu kupiliśmy nowe łóżko z pianki z pamięcią kształtu i, jak w przypadku większości łóżek, musiałeś również kupić jedną z ich „zatwierdzonych podstaw”; w celu utrzymania gwarancji. Zdecydowaliśmy się więc na najtańszą bazę, która obejmowała również
Sterowanie klawiaturą silnika serwo: 7 kroków
Sterowanie za pomocą klawiatury serwomotoru: Najpierw należy skonfigurować silnik serwo. Środkowy przewód idzie do portu 5V Lewy idzie do portu GND Podłącz ostatni (przewód sterowania) do portu 9