Spisu treści:

Bezprzewodowe sterowanie serwo: 6 kroków
Bezprzewodowe sterowanie serwo: 6 kroków

Wideo: Bezprzewodowe sterowanie serwo: 6 kroków

Wideo: Bezprzewodowe sterowanie serwo: 6 kroków
Wideo: bezprzewodowe sterowanie serwomechanizmem bez arduino 2024, Listopad
Anonim
Bezprzewodowe sterowanie serwo
Bezprzewodowe sterowanie serwo
Bezprzewodowe sterowanie serwo
Bezprzewodowe sterowanie serwo

Ten projekt steruje obrotem serwa bezprzewodowo za pomocą potencjometru (pokrętła). Obrót jest ograniczony do 180 stopni.

Krok 1: Komponenty

składniki
składniki
składniki
składniki
składniki
składniki

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
Płyta serwerowa

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

Zarząd klienta
Zarząd 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: