সুচিপত্র:

অঙ্গভঙ্গি নিয়ন্ত্রিত ওয়্যারলেস গাড়ি: 7 টি ধাপ
অঙ্গভঙ্গি নিয়ন্ত্রিত ওয়্যারলেস গাড়ি: 7 টি ধাপ

ভিডিও: অঙ্গভঙ্গি নিয়ন্ত্রিত ওয়্যারলেস গাড়ি: 7 টি ধাপ

ভিডিও: অঙ্গভঙ্গি নিয়ন্ত্রিত ওয়্যারলেস গাড়ি: 7 টি ধাপ
ভিডিও: The Hidden Hindu 1 Complete Audiobook In Hindi | #newaudiobook 2024, নভেম্বর
Anonim
অঙ্গভঙ্গি নিয়ন্ত্রিত ওয়্যারলেস গাড়ি
অঙ্গভঙ্গি নিয়ন্ত্রিত ওয়্যারলেস গাড়ি

এই টিউটোরিয়ালে আমরা শিখতে যাচ্ছি, কিভাবে একটি অঙ্গভঙ্গি নিয়ন্ত্রিত গাড়ি বা কোন রোবট তৈরি করা যায়। এই প্রকল্পের দুটি অংশ, একটি অংশ ট্রান্সমিটার ইউনিট এবং অন্য অংশ রিসিভার ইউনিট। ট্রান্সমিটার ইউনিট আসলে একটি হ্যান্ড গ্লাভস লাগানো এবং রিসিভার ইউনিট একটি গাড়ী বা কোন রোবটের ভিতরে স্থাপন করা হয়। এখন একটি সুন্দর গাড়ি তৈরির সময়। চলো যাই!

ধাপ 1: সরঞ্জাম

ট্রান্সমিটার ইউনিট

1. আরডুইনো ন্যানো।

2. MPU6050 সেন্সর মডিউল।

3. RF 433 MHz Transmitter।

4. যে কোন ধরণের 3 সেল, 11.1 ভোল্ট ব্যাটারি (এখানে আমি কয়েন সেল ব্যবহার করেছি)।

5. ভেরো-বোর্ড।

6. হাতের গ্লাভস।

রিসিভার ইউনিট

1. Arduino Nano বা Arduino Uno।

2. L298N মোটর ড্রাইভার মডিউল।

3. মোটর সহ 4 চাকা রোবট ফ্রেম।

4. আরএফ 433 আরএফ রিসিভার।

5. 3 সেল, 11.1 ভোল্ট লি-পো ব্যাটারি।

6. ভেরো-বোর্ড।

অন্যান্য

1. আঠালো লাঠি এবং বন্দুক।

2. জাম্পার তার।

3. স্ক্রু ড্রাইভার

4. সোল্ডারিং কিট।

ইত্যাদি

ধাপ 2: সার্কিট ডায়াগ্রাম ইমেজ ফাইল

সার্কিট ডায়াগ্রাম ইমেজ ফাইল
সার্কিট ডায়াগ্রাম ইমেজ ফাইল

ধাপ 3: সার্কিট ডায়াগ্রামের ফ্রিজিং ফাইল

ধাপ 4: ট্রান্সমিটার কোড

#অন্তর্ভুক্ত

#অন্তর্ভুক্ত

#অন্তর্ভুক্ত

MPU6050 mpu6050 (ওয়্যার);

দীর্ঘ টাইমার = 0;

গৃহস্থালি *নিয়ামক;

অকার্যকর সেটআপ()

{Serial.begin (9600); Wire.begin (); mpu6050. শুরু (); mpu6050.calcGyroOffsets (সত্য); vw_set_ptt_inverted (সত্য); // vw_set_tx_pin (10); vw_setup (4000); // ডেটা ট্রান্সফারের গতি Kbps

}

অকার্যকর লুপ ()

{ ////////////////////////////////////////////////////////////////////////////////////////////////

mpu6050.update ();

যদি (মিলিস () - টাইমার> 1000)

{Serial.println ("================================================== =========== "); Serial.print ("temp:"); Serial.println (mpu6050.getTemp ()); Serial.print ("accX:"); Serial.print (mpu6050.getAccX ()); Serial.print ("acc taccY:"); Serial.print (mpu6050.getAccY ()); সিরিয়াল.প্রিন্ট ("acc taccZ:"); Serial.println (mpu6050.getAccZ ()); Serial.print ("gyroX:"); Serial.print (mpu6050.getGyroX ()); Serial.print ("gy tgyroY:"); Serial.print (mpu6050.getGyroY ()); সিরিয়াল.প্রিন্ট ("gy tgyroZ:"); Serial.println (mpu6050.getGyroZ ()); Serial.print ("accAngleX:"); Serial.print (mpu6050.getAccAngleX ()); Serial.println (mpu6050.getAccAngleY ()); Serial.print ("gyroAngleX:"); Serial.print (mpu6050.getGyroAngleX ()); Serial.print ("gy tgyroAngleY:"); Serial.print (mpu6050.getGyroAngleY ()); সিরিয়াল.প্রিন্ট ("gy tgyroAngleZ:"); Serial.println (mpu6050.getGyroAngleZ ()); Serial.print ("angleX:"); Serial.print (mpu6050.getAngleX ()); Serial.print ("angle tangleY:"); Serial.print (mpu6050.getAngleY ()); Serial.print ("angle tangleZ:"); Serial.println (mpu6050.getAngleZ ()); Serial.println ("===================================================== ========== / n "); টাইমার = মিলিস (); }

/////////////////////////////////////////////////////////////////////////////////////

যদি (mpu6050.getAccAngleX () 30) {নিয়ামক = "X2"; vw_send ((uint8_t *) নিয়ামক, strlen (নিয়ামক)); vw_wait_tx (); // পুরো বার্তাটি চলে না যাওয়া পর্যন্ত অপেক্ষা করুন Serial.println ("FORWARD"); } অন্যথায় যদি (mpu6050.getAccAngleY ()> 40) {নিয়ামক = "Y1"; vw_send ((uint8_t *) নিয়ামক, strlen (নিয়ামক)); vw_wait_tx (); // পুরো বার্তাটি চলে না যাওয়া পর্যন্ত অপেক্ষা করুন Serial.println ("LEFT"); } অন্যথায় যদি (mpu6050.getAccAngleY () <-40) {নিয়ামক = "Y2"; vw_send ((uint8_t *) নিয়ামক, strlen (নিয়ামক)); vw_wait_tx (); // অপেক্ষা করুন যতক্ষণ না পুরো বার্তাটি চলে যায় Serial.println ("RIGHT"); } অন্যথায় যদি (mpu6050.getAccAngleX ()-10 && mpu6050.getAccAngleY ()-10) {নিয়ামক = "A1"; vw_send ((uint8_t *) নিয়ামক, strlen (নিয়ামক)); vw_wait_tx (); // পুরো বার্তাটি চলে না যাওয়া পর্যন্ত অপেক্ষা করুন Serial.println ("STOP"); }}

ধাপ 5: রিসিভার কোড

#অন্তর্ভুক্ত

int LA = 3;

int LB = 11; int RA = 5; int RB = 6; অকার্যকর সেটআপ () {Serial.begin (9600); vw_set_ptt_inverted (সত্য); // DR3100 vw_set_rx_pin (12) এর জন্য প্রয়োজনীয়; vw_setup (4000); // বিট প্রতি সেকেন্ড পিনমোড (13, আউটপুট); পিনমোড (এলএ, আউটপুট); পিনমোড (এলবি, আউটপুট); পিনমোড (আরএ, আউটপুট); পিনমোড (আরবি, আউটপুট); vw_rx_start (); // রিসিভার পিএলএল চালানো শুরু করুন Serial.println ("সব ঠিক আছে");

}

অকার্যকর লুপ () {uint8_t buf [VW_MAX_MESSAGE_LEN]; uint8_t buflen = VW_MAX_MESSAGE_LEN;

যদি (vw_get_message (buf, & buflen)) // নন-ব্লকিং

{যদি ((buf [0] == 'X') && (buf [1] == '1')) {Serial.println ("BACKWARD"); পিছনে (); বিলম্ব (100); // বন্ধ (); } অন্যথায় যদি ((buf [0] == 'X') && (buf [1] == '2')) {Serial.println ("FORWARD"); এগিয়ে (); বিলম্ব (100); // বন্ধ (); }

অন্যথায় যদি ((buf [0] == 'Y') && (buf [1] == '1'))

{Serial.println ("LEFT"); বাম (); বিলম্ব (100); // বন্ধ (); }

অন্যথায় যদি ((buf [0] == 'Y') && (buf [1] == '2'))

{Serial.println ("RIGHT"); ডান (); বিলম্ব (100); // বন্ধ (); } অন্যথায় যদি ((buf [0] == 'A') && (buf [1] == '1')) {Serial.println ("STOP"); বন্ধ (); বিলম্ব (100); }} অন্য {Serial.println ("কোন সিগন্যাল রিসিভ করা হয়নি"); }}

অকার্যকর ()

{analogWrite (LA, 70); analogWrite (LB, 0); analogWrite (RA, 70); analogWrite (RB, 0); }

শূন্য পিছনে ()

{analogWrite (LA, 0); analogWrite (LB, 70); analogWrite (RA, 0); analogWrite (RB, 70); }

শূন্য বাম ()

{analogWrite (LA, 0); analogWrite (LB, 70); analogWrite (RA, 70); analogWrite (RB, 0); }

অকার্যকর অধিকার ()

{analogWrite (LA, 70); analogWrite (LB, 0); analogWrite (RA, 0); analogWrite (RB, 70); }

অকার্যকর ()

{analogWrite (LA, 0); analogWrite (LB, 0); analogWrite (RA, 0); analogWrite (RB, 0); }

ধাপ 6: INO ফাইল

ধাপ 7: লাইব্রেরির লিঙ্ক

ভার্চুয়াল ওয়্যার লাইব্রেরি:

MPU6050_tockn Libraby:

ওয়্যার লাইব্রেরি:

প্রস্তাবিত: