Bezprzewodowe sterowanie serwo: 6 kroków
Bezprzewodowe sterowanie serwo: 6 kroków
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: