สารบัญ:

การควบคุมเซอร์โวไร้สาย: 6 ขั้นตอน
การควบคุมเซอร์โวไร้สาย: 6 ขั้นตอน

วีดีโอ: การควบคุมเซอร์โวไร้สาย: 6 ขั้นตอน

วีดีโอ: การควบคุมเซอร์โวไร้สาย: 6 ขั้นตอน
วีดีโอ: Basicbot EP.6 part2 “การใช้จอยPs2xควบคุม servo” 2024, กรกฎาคม
Anonim
การควบคุมเซอร์โวไร้สาย
การควบคุมเซอร์โวไร้สาย
การควบคุมเซอร์โวไร้สาย
การควบคุมเซอร์โวไร้สาย

โปรเจ็กต์นี้ควบคุมการหมุนของเซอร์โวแบบไร้สายโดยใช้โพเทนชิออมิเตอร์ (ลูกบิด) การหมุนถูกจำกัดไว้ที่ 180 องศา

ขั้นตอนที่ 1: ส่วนประกอบ

ส่วนประกอบ
ส่วนประกอบ
ส่วนประกอบ
ส่วนประกอบ
ส่วนประกอบ
ส่วนประกอบ

โครงการนี้ประกอบด้วย

  • 2 บอร์ดควบคุม Arduino UNO พร้อมสายต่อ USB
  • 2 nRF24L01 – โมดูลรับส่งสัญญาณ RF 2.4GHz (สำหรับความช่วยเหลือเกี่ยวกับโมดูลเหล่านี้ โปรดดูที่
  • บอร์ดอะแดปเตอร์ซ็อกเก็ต 2 อัน (ชิปแบ็คแพ็ค) สำหรับ nRF24L01
  • 1 ตัวเลือก Arduino Compatible 328 ProtoShield Prototype Expansion Board
  • 1 เซอร์โว
  • 1 โพเทนชิออมิเตอร์แบบอนาล็อก
  • หัวแร้งและหัวแร้ง
  • ลวด
  • คีมปากแหลม
  • ฉนวนหุ้ม ผมใช้เทปพันสายไฟ

ขั้นตอนที่ 2: บอร์ดเซิร์ฟเวอร์

บอร์ดเซิร์ฟเวอร์
บอร์ดเซิร์ฟเวอร์

บอร์ดเซิร์ฟเวอร์ประกอบด้วยโมดูลตัวรับส่งสัญญาณ แผงป้องกัน (ซึ่งเชื่อมต่อโดยตรงกับบอร์ด Arduino เพียงทางเดียวเท่านั้น) และเซอร์โว ฉันตัดสินใจที่จะรวมบอร์ดป้องกันเพื่อหลีกเลี่ยงเขียงหั่นขนมที่เงอะงะและให้โครงการและการตกแต่งโดยรวมให้เรียบร้อยยิ่งขึ้น

รหัสและทรัพยากรบนเว็บที่รวมอยู่ในรายการส่วนประกอบให้รายละเอียดการเชื่อมต่อโมดูลตัวรับส่งสัญญาณ ฉันตัดสินใจประสานการเชื่อมต่อแทนที่จะใช้การเชื่อมต่อชั่วคราวเหมือนในโครงการก่อนหน้า เนื่องจากฉันเป็นมือใหม่ ฉันจึงหุ้มฉนวนแต่ละจุดบัดกรีด้วยเทปพันสายไฟ (ซึ่งไม่สวยเลย)

หมุดชิลด์บอร์ดจะตรงกับพิน Arduino โดยตรง ก่อนติดชิลด์บอร์ด ฉันต่อกราวด์และพิน 5 โวลต์เข้ากับรางบอร์ดด้วยลวดและตัวประสาน ฉันยังบัดกรีสายไฟ 5 โวลต์และสายกราวด์ของส่วนประกอบเข้ากับรางชิลด์บอร์ด จากนั้นในที่สุดก็ติด Arduino เข้ากับชิลด์บอร์ด

เซอร์โวติดอยู่กับพิน 3 โวลต์สำหรับการจ่ายไฟและพินดิจิตอล 2 สำหรับการสื่อสาร

** หมายเหตุ: หลังจากสร้างเสร็จแล้ว ฉันสังเกตเห็นว่าบอร์ด Arduino ของฉันไม่เหมือนกัน ตัวรับส่งสัญญาณเซิร์ฟเวอร์ของฉันใช้พลังงานจากราง 5 โวลต์บนแผงป้องกัน ในขณะที่ตัวรับส่งสัญญาณไคลเอนต์นั้นใช้พลังงานจากพิน 3 โวลต์ แม้ว่าฉันจะถูกชักนำให้เชื่อว่าฟังก์ชันของชิปอะแดปเตอร์บนตัวรับส่งสัญญาณคือการให้แรงดันไฟฟ้าที่เหมาะสม ทั้งหมดที่ฉันสามารถพูดได้อย่างแน่นอนคือรหัสที่ให้มาตรงกับการกำหนดค่าที่แสดงในภาพสร้างเอฟเฟกต์ที่อธิบายไว้

ขั้นตอนที่ 3: ตัวเข้ารหัสเซิร์ฟเวอร์: คัดลอกและวาง

//รหัสเซิร์ฟเวอร์/* NRF24L01 Arduino CE > D8 CSN > D10 SCK > D13 MO > D11 MI > D12 RO > ไม่ได้ใช้ GND > GND VCC > 5V */ // เดินสายเครื่องรับส่งสัญญาณ

#รวม

// ห้องสมุดเซอร์โว

#รวม

// ไลบรารีตัวรับส่งสัญญาณ

#define Servopin 2

//ประกาศขาออกเซอร์โวพิน

ServoTimer2 เสิร์ฟ;

//ประกาศชื่อเซอร์โว

RH_NRF24 nrf24;

//ประกาศชื่อตัวรับส่งสัญญาณ

int timeOUT = 0;

//ตัวแปรสำหรับเซอร์โว

พัลส์ int = 90;

//ตัวแปรเก็บพัลส์

การตั้งค่าเป็นโมฆะ ()

{ serv.attach (เซอร์โวพิน); //ของเซอร์โว

Serial.begin(9600); //ตัวรับส่งสัญญาณ

ถ้า (!nrf24.init())

Serial.println("init ล้มเหลว"); //สิ่งตรวจสอบอนุกรม if (!nrf24.setChannel(12)) //ตั้งค่าช่องเป็น 125 Serial.println("setChannel ล้มเหลว"); ถ้า (!nrf24.setRF(RH_NRF24::DataRate2Mbps, RH_NRF24::TransmitPower0dBm)) Serial.println("setRF ล้มเหลว"); //สิ่งตรวจสอบซีเรียล }

วงเป็นโมฆะ ()

{ ถ้า (nrf24.available ()) { uint8_t buf [RH_NRF24_MAX_MESSAGE_LEN]; uint8_t len = sizeof(buf); if (nrf24.recv (buf, &len)) // สิ่งที่ตรวจสอบซีเรียล { Serial.print ("ได้รับคำขอ: "); พัลส์ = strtol((const ถ่าน*)buf, NULL, 10); //ประเภทข้อมูลเปลี่ยนสิ่งของ

int prin = แผนที่(พัลส์, 750, 2250, 0, 180); //ประเภทข้อมูลเปลี่ยนสิ่งของ

Serial.println(ปริน); serv.write(พัลส์); // ทำให้เซอร์โวเคลื่อนที่ } }

}

ขั้นตอนที่ 4: บอร์ดลูกค้า

คณะกรรมการลูกค้า
คณะกรรมการลูกค้า

บอร์ดลูกค้าประกอบด้วยโมดูลตัวรับส่งสัญญาณและโพเทนชิออมิเตอร์ โมดูลตัวรับส่งสัญญาณมีสายแบบเดียวกับบอร์ดเซิร์ฟเวอร์ ยกเว้นว่าไม่มีแผงป้องกัน จะต่อเข้ากับหมุดของบอร์ด Arduino โดยตรง

โพเทนชิออมิเตอร์ใช้ 5v กราวด์และเชื่อมต่อกับพินอะนาล็อก 2

**หมายเหตุ: ตามที่กล่าวไว้ในขั้นตอนของบอร์ดเซิร์ฟเวอร์ บอร์ด Arduino ของฉันไม่เหมือนกัน ในกรณีนี้ ตัวรับส่งสัญญาณเชื่อมต่อกับพินที่ระบุว่า 3.3V ซึ่งอยู่ติดกับพิน 5V โดยตรง แต่ดูเหมือนว่าทุกอย่างจะทำงานได้ดี

ขั้นตอนที่ 5: รหัสลูกค้า: คัดลอกและวาง

//รหัสลูกค้า/* NRF24L01 Arduino CE > D8 CSN > D10 SCK > D13 MO > D11 MI > D12 RO > ไม่ได้ใช้ GND > GND VCC > 5V */ // เดินสายเครื่องรับส่งสัญญาณ

#รวม

//ไลบรารีตัวรับส่งสัญญาณ

int potpin = A2; // โพเทนชิออมิเตอร์ delaration

ค่า int;

ถ่าน tempChar[5];

สตริง valString = ""; //ประเภทข้อมูลเปลี่ยนสิ่งของ

RH_NRF24 nrf24; //ตัวรับส่งสัญญาณ

การตั้งค่าเป็นโมฆะ ()

{ Serial.begin(9600); ถ้า (!nrf24.init()) Serial.println("init ล้มเหลว"); // ค่าเริ่มต้นหลังจากเริ่มต้นคือ 2.402 GHz (ช่อง 2), 2Mbps, 0dBm ถ้า (!nrf24.setChannel(12)) Serial.println ("setChannel ล้มเหลว"); ถ้า (!nrf24.setRF(RH_NRF24::DataRate2Mbps, RH_NRF24::TransmitPower0dBm)) Serial.println("setRF ล้มเหลว"); } // ตัวรับส่งสัญญาณ

วงเป็นโมฆะ () {

วาล = analogRead (potpin); //ของโพเทนชิโอมิเตอร์

วาล = แผนที่(วาล, 0, 1023, 750, 2250);

valString = วาล; สตริง str = (valString); str.toCharArray(tempChar, 5); //ประเภทข้อมูลเปลี่ยนสิ่งของ nrf24.send(tempChar, sizeof(tempChar));

}

ขั้นตอนที่ 6: หมายเหตุเกี่ยวกับรหัส:

โค้ดมีฟังก์ชันการแก้ปัญหาที่จำกัดในรูปแบบของความคิดเห็นจากมอนิเตอร์แบบอนุกรมในอินเทอร์เฟซซอฟต์แวร์ Arduino เมื่อดูมอนิเตอร์แบบอนุกรมจากรหัสเซิร์ฟเวอร์ (ctrl + shift + M) คุณควรจะเห็นสถานะของโพเทนชิออมิเตอร์ในรูปแบบตัวเลขระหว่าง 1 ถึง 180

นอกจากนี้ นี่คือไลบรารีสำหรับระบบไร้สายและเซอร์โว:

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

github.com/nabontra/ServoTimer2

แนะนำ: