Агуулгын хүснэгт:

Утасгүй Servo Control: 6 алхам
Утасгүй Servo Control: 6 алхам

Видео: Утасгүй Servo Control: 6 алхам

Видео: Утасгүй Servo Control: 6 алхам
Видео: BE CAREFUL AND PUT WINTER TYRES 2024, Долдугаар сарын
Anonim
Утасгүй Servo хяналт
Утасгүй Servo хяналт
Утасгүй Servo хяналт
Утасгүй Servo хяналт

Энэхүү төсөл нь потенциометр (бариул) ашиглан servo -ийн эргэлтийг утасгүй удирддаг. Эргэлтийг 180 градусаар хязгаарладаг.

Алхам 1: бүрэлдэхүүн хэсгүүд

Бүрэлдэхүүн хэсгүүд
Бүрэлдэхүүн хэсгүүд
Бүрэлдэхүүн хэсгүүд
Бүрэлдэхүүн хэсгүүд
Бүрэлдэхүүн хэсгүүд
Бүрэлдэхүүн хэсгүүд

Энэхүү төсөл нь дараахь зүйлээс бүрдэнэ

  • USB холбогч кабель бүхий 2 Arduino UNO хянагч самбар
  • 2 nRF24L01-2.4 ГГц давтамжтай RF дамжуулагч модулиуд (эдгээр модульд туслах талаар
  • NRF24L01 -ийн 2 залгуур адаптер самбар (үүргэвчтэй чипс)
  • 1 нэмэлт Arduino нийцтэй 328 ProtoShield прототип өргөтгөлийн самбар
  • 1 servo
  • 1 аналог потенциометр
  • гагнуурын төмөр ба гагнуур
  • утас
  • зүү хамартай бахө
  • тусгаарлагч боолт, би цахилгаан соронзон хальс ашигласан

Алхам 2: Серверийн самбар

Серверийн самбар
Серверийн самбар

Серверийн самбар нь дамжуулагч модуль, бамбай самбар (Arduino самбартай зөвхөн нэг арга замаар шууд холбогддог), серво зэргээс бүрдэнэ. Боломжгүй талхнаас зайлсхийхийн тулд бамбай хавтанг оруулахаар шийдэж, төсөл болон ерөнхий цэвэрлэгээ хийлээ.

Бүрэлдэхүүн хэсгүүдийн жагсаалтад орсон код, вэб нөөц нь дамжуулагч модулийн холболтыг нарийвчлан харуулдаг. Би өмнөх төслүүд шиг түр зуурын холболт ашиглахын оронд холболтыг гагнахаар шийдсэн. Би эхлэгч тул гагнуурын үе бүрийг цахилгаан соронзон хальсаар дулаалсан (тэд тийм ч гоё биш байсан).

Бамбай хавтангийн зүү нь Arduino тээглүүртэй шууд нийцдэг. Бамбай хавтанг холбохын өмнө би газардуулга ба 5 вольт тээглүүрийг төмөр зам дээр төмөр утас, гагнуураар холбосон. Би мөн бүрэлдэхүүн хэсгүүдийн 5 вольт ба газардуулгын утсыг бамбай хавтангийн төмөр замд гагнаж, дараа нь Arduino -ийг бамбай самбар дээр холбосон.

Серво нь 3 вольтын зүү дээр холбогдож, дижитал зүү 2 -тэй холбогддог.

** Тэмдэглэл: Энэхүү бүтээн байгуулалтыг дуусгасны дараа л миний Arduino хавтан ижил биш болохыг анзаарсан. Миний сервер дамжуулагч нь бамбай самбар дээрх 5 вольтын төмөр замаар тэжээгддэг бол үйлчлүүлэгч дамжуулагч нь 3 вольтын зүүгээр тэжээгддэг боловч дамжуулагч дээрх адаптерийн чипний үүрэг нь зохих хүчдэлийг хангах явдал юм. Зурагт үзүүлсэн тохиргоотой нийцсэн код нь тайлбарласан эффектийг бий болгодог гэдгийг би баттай хэлж чадна.

Алхам 3: Сервер кодлогч: хуулж буулгах

// SERVER CODE/ * NRF24L01 Arduino CE> D8 CSN> D10 SCK> D13 MO> D11 MI> D12 RO> GND> GND VCC> 5V */// дамжуулагчийн утас

#оруулах

// servo номын сан

#оруулах

// дамжуулагчийн номын сан

#Servopin 2 -ийг тодорхойлох

// мэдэгдэл servo гаралтын зүү

ServoTimer2 үйлчилгээ;

// servo нэрийн мэдэгдэл

RH_NRF24 nrf24;

// дамжуулагчийн нэрийг тунхаглах

int timeOUT = 0;

// servo -ийн хувьсагч

int импульс = 90;

// импульсийг хадгалах хувьсагч

хүчингүй тохиргоо ()

{serv.attach (Servopin); // servo зүйлс

Цуваа эхлэх (9600); // дамжуулагч зүйл

хэрэв (! nrf24.init ())

Serial.println ("эхлүүлээгүй"); // цуваа дэлгэцийн зүйл бол (! nrf24.setChannel (12)) // сувгийг 125 Serial.println болгож тохируул ("setChannel амжилтгүй болсон"); хэрэв (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF амжилтгүй болсон"); // цуваа дэлгэцийн эд зүйлс}

хоосон давталт ()

{if (nrf24.available ()) {uint8_t buf [RH_NRF24_MAX_MESSAGE_LEN]; uint8_t len = sizeof (buf); if (nrf24.recv (buf, & len)) // цуваа дэлгэцийн зүйлс {Serial.print ("хүсэлт авсан:"); импульс = strtol ((const char*) buf, NULL, 10); // өгөгдлийн төрлийг өөрчлөх зүйлс

int prin = газрын зураг (импульс, 750, 2250, 0, 180); // өгөгдлийн төрлийг өөрчлөх зүйлс

Цуваа.хэвлэх (хэвлэх); серв. бичих (импульс); // servo хөдөлгөдөг}}

}

Алхам 4: Үйлчлүүлэгчдийн зөвлөл

Үйлчлүүлэгчийн зөвлөл
Үйлчлүүлэгчийн зөвлөл

Үйлчлүүлэгчийн самбар нь дамжуулагч модуль ба потенциометрээс бүрдэнэ. Трансивер модулийг серверийн самбартай ижил аргаар утастай холбосон бөгөөд бамбай самбаргүй бол Arduino хавтангийн зүү рүү шууд залгана.

Потенциометр нь 5V, газардуулга авдаг бөгөөд аналог 2 -р зүүтэй холбогддог.

** Тэмдэглэл: серверийн самбарын алхам дээр дурдсанчлан миний Arduino самбар ижил биш байна. Энэ тохиолдолд дамжуулагчийг 5V зүүтэй шууд зэргэлдээ 3.3V гэсэн шошготой холбосон боловч бүх зүйл хэвийн ажиллаж байгаа юм шиг байна.

Алхам 5: Үйлчлүүлэгчийн код: хуулж буулгах

// CLIENT CODE/ * NRF24L01 Arduino CE> D8 CSN> D10 SCK> D13 MO> D11 MI> D12 RO> GND> GND VCC> 5V */// дамжуулагчийн утас

#оруулах

// дамжуулагч номын сан

int potpin = A2; // потенциометрийн деклараци

int val;

char tempChar [5];

StrS valString = ""; // өгөгдлийн төрлийг өөрчлөх зүйлс

RH_NRF24 nrf24; // дамжуулагч зүйл

хүчингүй тохиргоо ()

{Serial.begin (9600); if (! nrf24.init ()) Serial.println ("init амжилтгүй болсон"); // Init -ээс хойшхи анхдагч утга нь 2.402 GHz (суваг 2), 2Mbps, 0dBm бол (! Nrf24.setChannel (12)) Serial.println ("setChannel амжилтгүй болсон"); хэрэв (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF амжилтгүй болсон"); } // дамжуулагч зүйл

void loop () {

val = analogRead (potpin); // потенциометрийн зүйл

val = газрын зураг (val, 0, 1023, 750, 2250);

valString = val; String str = (valString); str.toCharArray (tempChar, 5); // өгөгдлийн төрлийг өөрчлөх зүйлс nrf24.send (tempChar, sizeof (tempChar));

}

Алхам 6: Кодын талаархи тэмдэглэл:

Дүрэм нь Arduino програм хангамжийн интерфейс дээрх цуваа монитороос ирсэн санал хүсэлтийн хэлбэрээр алдааг олж засварлах зарим хязгаарлагдмал функцийг агуулдаг. Цуваа мониторыг SERVER кодоос (ctrl + shift + M) үзэх үед потенциометрийн төлөвийг 1 -ээс 180 хүртэлх тооны хэлбэрээр харах боломжтой байх ёстой.

Мөн утасгүй болон servo -ийн номын сан энд байна.

www.airspayce.com/mikem/arduino/RadioHead/

github.com/nabontra/ServoTimer2

Зөвлөмж болгож буй: