Isi kandungan:

Kawalan Servo Tanpa Wayar: 6 Langkah
Kawalan Servo Tanpa Wayar: 6 Langkah

Video: Kawalan Servo Tanpa Wayar: 6 Langkah

Video: Kawalan Servo Tanpa Wayar: 6 Langkah
Video: Movement Module (Simple Servo Controller) 2024, November
Anonim
Kawalan Servo Tanpa Wayar
Kawalan Servo Tanpa Wayar
Kawalan Servo Tanpa Wayar
Kawalan Servo Tanpa Wayar

Projek ini mengawal putaran servo secara wayarles dengan menggunakan potensiometer (kenop). Putaran dikekang hingga 180 darjah.

Langkah 1: Komponen

Komponen
Komponen
Komponen
Komponen
Komponen
Komponen

Projek ini terdiri daripada

  • 2 papan pengawal Arduino UNO dengan kabel penyambung USB
  • 2 modul RF transceiver nRF24L01 - 2.4GHz (untuk mendapatkan bantuan dengan modul ini, rujuk
  • 2 papan penyesuai soket (cip ransel) untuk nRF24L01
  • 1 Papan Pengembangan Prototaip ProtoShield Arduino Compatible 328 pilihan
  • 1 servo
  • 1 potensiometer analog
  • besi pematerian dan pateri
  • wayar
  • tang hidung jarum
  • bungkus penebat, saya menggunakan pita elektrik

Langkah 2: Papan Pelayan

Papan Pelayan
Papan Pelayan

Papan pelayan terdiri daripada modul pemancar, papan perisai (yang menghubungkan terus ke papan Arduino hanya sehala), dan servo. Saya memutuskan untuk memasukkan papan perisai untuk mengelakkan papan roti yang kekok dan memberikan projek dan keseluruhannya lebih kemas.

Kod dan sumber web yang termasuk dalam senarai komponen memperincikan sambungan modul transceiver. Saya memutuskan untuk menyelesaikan sambungan daripada menggunakan sambungan sementara seperti projek sebelumnya. Oleh kerana saya seorang pemula, saya melindungi setiap sambungan pateri dengan pita elektrik (mereka tidak cantik).

Pin papan pelindung sesuai dengan pin Arduino. Sebelum melampirkan papan perisai, saya menyambungkan tanah dan pin 5volt ke rel papan dengan wayar dan solder. Saya juga menyisipkan wayar 5volt dan ground komponen ke rel papan perisai, dan akhirnya melekatkan Arduino ke papan perisai.

Servo dipasang pada pin 3volt untuk kuasa dan pin digital 2 untuk komunikasi.

** Catatan: hanya setelah menyelesaikan binaan ini, saya dapati bahawa papan Arduino saya tidak serupa. Transceiver pelayan saya dikuasakan oleh rel 5volt pada papan perisai, sementara transceiver klien dikuasakan oleh pin 3volt, walaupun saya telah ditakdirkan untuk mempercayai bahawa fungsi cip penyesuai pada transceiver adalah untuk memberikan voltan yang tepat. Yang boleh saya katakan dengan pasti adalah bahawa kod yang disediakan sesuai dengan konfigurasi yang ditunjukkan dalam gambar menghasilkan kesan yang dijelaskan.

Langkah 3: Pengekod Pelayan: Salin dan Tampal

// KOD SERVER / * NRF24L01 Arduino CE> D8 CSN> D10 SCK> D13 MO> D11 MI> D12 RO> Tidak digunakan GND> GND VCC> 5V * / // pendawaian transceiver

#sertakan

// perpustakaan servo

#sertakan

// perpustakaan transceiver

#tentukan Servopin 2

// pin output servo deklarasi

ServoTimer2 serv;

// pengisytiharan nama servo

RH_NRF24 nrf24;

// pengisytiharan nama pemancar

int timeOUT = 0;

// pemboleh ubah untuk servo

denyutan int = 90;

// pemboleh ubah untuk menyimpan denyutan

persediaan tidak sah ()

{serv.attach (Servopin); // barangan servo

Serial.begin (9600); // barang transceiver

jika (! nrf24.init ())

Serial.println ("init gagal"); // perkara monitor bersiri jika (! nrf24.setChannel (12)) // tetapkan saluran ke 125 Serial.println ("setChannel gagal"); jika (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF gagal"); // barang monitor bersiri}

gelung kosong ()

{if (nrf24.available ()) {uint8_t buf [RH_NRF24_MAX_MESSAGE_LEN]; uint8_t len = sizeof (buf); if (nrf24.recv (buf, & len)) // perkara monitor bersiri {Serial.print ("got request:"); denyutan = strtol ((const char *) buf, NULL, 10); // jenis data menukar barang

int prin = peta (denyutan, 750, 2250, 0, 180); // jenis data menukar barang

Serial.println (prin); serv.write (denyutan); // membuat servo bergerak}}

}

Langkah 4: Lembaga Pelanggan

Lembaga Pelanggan
Lembaga Pelanggan

Papan pelanggan terdiri daripada modul transceiver dan potensiometer. Modul transceiver dikabelkan dengan cara yang sama ** dengan papan pelayan dengan pengecualian bahawa tanpa papan perisai, ia dipasang terus ke pin papan Arduino.

Potensiometer mengambil 5v, tanah, dan dihubungkan ke pin analog 2.

** Catatan: seperti yang disebutkan dalam langkah papan pelayan, papan Arduino saya tidak serupa. Dalam kes ini, transceiver disambungkan ke pin berlabel 3.3V, tepat bersebelahan dengan pin 5V, tetapi sekali lagi, semuanya nampak berfungsi dengan baik.

Langkah 5: Kod Pelanggan: Salin dan Tampal

// KOD KLIEN / * NRF24L01 Arduino CE> D8 CSN> D10 SCK> D13 MO> D11 MI> D12 RO> Tidak digunakan GND> GND VCC> 5V * / // pendawaian transceiver

#sertakan

// perpustakaan transceiver

int potpin = A2; // pemisahan potensiometer

int val;

char tempChar [5];

Rentetan valString = ""; // jenis data menukar barang

RH_NRF24 nrf24; // barang transceiver

persediaan tidak sah ()

{Serial.begin (9600); jika (! nrf24.init ()) Serial.println ("init gagal"); // Lalai selepas init ialah 2.402 GHz (saluran 2), 2Mbps, 0dBm jika (! Nrf24.setChannel (12)) Serial.println ("setChannel gagal"); jika (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF gagal"); } // barang transceiver

gelung kosong () {

val = analogRead (potpin); // bahan potensiometer

val = peta (val, 0, 1023, 750, 2250);

valString = val; String str = (valString); str.toCharArray (tempChar, 5); // datatype ubah barang nrf24.send (tempChar, sizeof (tempChar));

}

Langkah 6: Nota Mengenai Kod:

Kod ini mengandungi beberapa fungsi penyelesaian masalah terhad dalam bentuk maklum balas dari monitor bersiri di antara muka perisian Arduino. Semasa melihat monitor bersiri dari kod SERVER (ctrl + shift + M), anda seharusnya dapat melihat keadaan potensiometer dalam bentuk nombor antara 1 dan 180.

Juga, inilah perpustakaan untuk wayarles dan servo:

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

github.com/nabontra/ServoTimer2

Disyorkan: