সুচিপত্র:
- ধাপ 1: এই প্রকল্প সম্পর্কে
- পদক্ষেপ 2: হার্ডওয়্যার প্রয়োজন
- ধাপ 3: সার্কিট এবং সংযোগ
- ধাপ 4: কাজ
- ধাপ 5: কোড
- ধাপ 6: ভিডিও ধ্বংস
ভিডিও: HC-12: 6 ধাপ সহ Arduino এবং ESP8266 এর মধ্যে MPU6050 ব্যবহার করে সার্ভো নিয়ন্ত্রণ করা
2024 লেখক: John Day | [email protected]. সর্বশেষ পরিবর্তিত: 2024-01-30 08:00
এই প্রকল্পে, আমরা Arduino UNO এবং ESP8266 NodeMCU- এর মধ্যে যোগাযোগের জন্য mpu6050 এবং HC-12 ব্যবহার করে একটি সার্ভো মোটরের অবস্থান নিয়ন্ত্রণ করছি।
ধাপ 1: এই প্রকল্প সম্পর্কে
এটি এইচসি -12 আরএফ-মডিউল ভিত্তিক আরেকটি আইওটি প্রকল্প। এখানে, arduino থেকে imu (mpu6050) ডেটা সার্ভো মোটর (Nodemcu এর সাথে সংযুক্ত) নিয়ন্ত্রণ করতে ব্যবহৃত হয়। এখানে, arduino সাইডে ডেটা ভিজ্যুয়ালাইজেশন করা হয় যেখানে mpu6050 পিচ ডেটা (x- অক্ষ সম্পর্কে ঘূর্ণন) একটি প্রসেসিং স্কেচ দিয়ে কল্পনা করা হয় (পরে আলোচনা করা হয়েছে)। মূলত এই প্রকল্পটি Arduino এবং ESP8266 nodemcu এর সাহায্যে ইমু এবং সার্ভো নিয়ন্ত্রণের বিভিন্ন দিক মনে রাখার জন্য একটু উষ্ণ আপ।
উদ্দেশ্য
এটি বেশ স্পষ্ট উদ্দেশ্য, আমরা IMU এর পিচ মান ব্যবহার করে Servo মোটরের অবস্থান নিয়ন্ত্রণ করছি। এবং সব একসাথে এই পিচ এবং সিঙ্ক্রোনাইজড মোটর অবস্থান প্রসেসিং সঙ্গে দৃশ্যমান হয়।
পদক্ষেপ 2: হার্ডওয়্যার প্রয়োজন
NodeMCU ESP8266 12E Wifi মডিউল
Solderless breadboard
জাম্পার তার
MPU6050 accelo+gyro
HC-12 RF মডিউল (জোড়া)
SG90 Servo মোটর
ধাপ 3: সার্কিট এবং সংযোগ
সংযোগগুলি সোজা সামনের দিকে। আপনি আপনার Nodemcu এর 3.3V দিয়ে সার্ভোকে শক্তি দিতে পারেন। যদি আপনার নডেমকুতে সেই পিনে এত ভোল্টেজ থাকে তবে আপনি সার্ভকে পাওয়ার জন্য ভিন ব্যবহার করতে পারেন। কিন্তু বেশিরভাগ ললিন বোর্ডের ভিনে 5V নেই (নির্মাতার উপর নির্ভর করে)।
এই সার্কিট ডায়াগ্রামগুলি ইজিএডিএ ব্যবহার করে তৈরি করা হয়েছে।
ধাপ 4: কাজ
আরডুইনো স্কেচ শুরু হওয়ার সাথে সাথে এটি পিচ এঙ্গেল (যা -45 থেকে 45 পর্যন্ত) Nodemcu এর hc12 রিসিভারে পাঠাবে যা 0 থেকে 180 ডিগ্রী সার্ভো অবস্থানের সাথে ম্যাপ করা হবে। এখানে আমরা পিচ কোণটি -45 থেকে +45 ডিগ্রি পর্যন্ত ব্যবহার করেছি যাতে আমরা সহজেই এটিকে সার্ভো অবস্থানে ম্যাপ করতে পারি।
এখন, আপনি ভাবছেন কেন আমরা কেবল ম্যাপ পদ্ধতিটি নিম্নরূপ ব্যবহার করতে পারি:-
int pos = মানচিত্র (val, -45, 45, 0, 180);
কারণ hc12 ট্রান্সমিটার দ্বারা প্রেরিত নেতিবাচক কোণটি নিম্নরূপ:
প্রথম অর্ধেক: (T) 0 থেকে 45 => 0 থেকে 45 (R)
দ্বিতীয় অর্ধেক: (টি) -45 থেকে -1 => 255 থেকে 210 (আর)
সুতরাং আপনাকে এটিকে 0 থেকে 180 এ ম্যাপ করতে হবে
যদি (val> = 0 && val <= 45) pos = (val*2) +90; অন্য পজ = (ভ্যাল -210)*2;
আমি কিছু অপ্রাসঙ্গিক ত্রুটির কারণে মানচিত্র পদ্ধতি এড়িয়ে যাচ্ছি। আপনি এটি চেষ্টা করতে পারেন এবং মন্তব্য করতে পারেন এটি আপনার সাথে কাজ করে
যদি (val> = 0 && val <= 45) pos = map (val, 0, 45, 90, 180); অন্য অবস্থান = মানচিত্র (ভাল, 255, 210, 0, 90); // চতুর্থ যুক্তি 2 হতে পারে (আপনি যাচাই করতে পারেন)
MPU6050 পিচ এঙ্গেল হিসাব
আমি MPU6050_tockn লাইব্রেরি ব্যবহার করছি যা IMU থেকে কাঁচা তথ্য দেওয়ার উপর ভিত্তি করে।
int pitchAngle = mpu6050.getAngleX ()
এটি আমাদের এক্স-অক্ষ সম্পর্কে ঘূর্ণন কোণ পাবে। আপনি যেমন চিত্রটিতে দেখেছেন, আমার ইমু উল্লম্বভাবে রুটিবোর্ডে রাখা হয়েছে তাই পিচ এবং রোল নিয়ে বিভ্রান্ত হবেন না। আসলে আপনি সবসময় অক্ষের ব্রেকআউট বোর্ডে মুদ্রিত দেখতে হবে।
এই লাইব্রেরির মাধ্যমে, আপনাকে নির্দিষ্ট অপারেশনের জন্য নির্দিষ্ট রেজিস্টার পড়ার অভ্যন্তরীণ ইলেকট্রনিক্স সম্পর্কে বিরক্ত করতে হবে না। আপনি শুধুমাত্র কাজ নির্দিষ্ট করুন এবং আপনি সম্পন্ন!
Btw যদি আপনি নিজের দ্বারা কোণ গণনা করতে চান। আপনি সহজেই এটি নিম্নরূপ করতে পারেন:
#অন্তর্ভুক্ত
const int MPU6050_addr = 0x68; int16_t AcX, AcY, AcZ, Temp, GyroX, GyroY, GyroZ; অকার্যকর সেটআপ () {Wire.begin (); Wire.beginTransmission (MPU6050_addr); Wire.write (0x6B); Wire.write (0); Wire.endTransmission (সত্য); Serial.begin (9600); } অকার্যকর লুপ () {Wire.beginTransmission (MPU6050_addr); Wire.write (0x3B); Wire.endTransmission (মিথ্যা); Wire.requestFrom (MPU6050_addr, 14, সত্য); AcX = Wire.read () << 8 | Wire.read (); AcY = Wire.read () << 8 | Wire.read (); AcZ = Wire.read () << 8 | Wire.read (); Temp = Wire.read () << 8 | Wire.read (); GyroX = Wire.read () << 8 | Wire.read (); GyroY = Wire.read () << 8 | Wire.read (); GyroZ = Wire.read () << 8 | Wire.read ();
int xAng = মানচিত্র (AcX, minVal, maxVal, -90, 90); int yAng = মানচিত্র (AcY, minVal, maxVal, -90, 90); int zAng = মানচিত্র (AcZ, minVal, maxVal, -90, 90); x = RAD_TO_DEG * (atan2 (-yAng, -zAng)+PI); y = RAD_TO_DEG * (atan2 (-xAng, -zAng)+PI); z = RAD_TO_DEG * (atan2 (-yAng, -xAng)+PI); Serial.print ("AngleX ="); // পিচ সিরিয়াল.প্রিন্টলন (x); Serial.print ("AngleY ="); // রোল সিরিয়াল.প্রিন্টলন (y); Serial.print ("AngleZ ="); // Yaw Serial.println (z); }
কিন্তু, এটা প্রয়োজনীয় নয় যে আপনি কোণটি পেতে এত কোড লিখবেন। আপনি দৃশ্যের পিছনে ঘটনা জানতে হবে কিন্তু অন্যান্য মানুষের লাইব্রেরি ব্যবহার করা অনেক প্রকল্পে খুব কার্যকর। নিচের লিংক থেকে আরো ফিল্টারড ডেটা পেতে আপনি এই ইমু এবং অন্যান্য পদ্ধতি সম্পর্কে পড়তে পারেন: Explore-mpu6050।
প্রেরণ প্রান্তে আমার arduino কোড MPU6050_tockn লাইব্রেরির সাহায্যে মাত্র 30 টি লাইন আছে তাই একটি লাইব্রেরি ব্যবহার করা ভাল যদি না আপনি IMU- এর কার্যকারিতায় কিছু মূল পরিবর্তনের প্রয়োজন না হয়। আইএমইউ এর ডিএমপি (ডিজিটাল মোশন প্রসেসর) ব্যবহার করে কিছু ফিল্টার করা ডেটা চাইলে জেফ রোবার্গের I2Cdev নামে একটি লাইব্রেরি খুবই সহায়ক।
প্রক্রিয়াকরণের সাথে ইন্টিগ্রেশন
এখানে MPU6050 থেকে আসা কাঁচা ডেটা দ্বারা গণনা করা IMU- এর x- অক্ষ সম্পর্কে ঘূর্ণনগত তথ্য দেখার জন্য প্রসেসিং ব্যবহার করা হয়। আমরা নিম্নলিখিত পদ্ধতিতে SerialEvent এ আগত কাঁচা তথ্য গ্রহণ করি:
void serialEvent (Serial myPort) {
inString = myPort.readString (); চেষ্টা করুন {// ডেটা বিশ্লেষণ করুন // println (inString); স্ট্রিং dataStrings = বিভক্ত (inString, ':'); if (dataStrings.length == 2) {if (dataStrings [0].equals ("RAW")) {for (int i = 0; i <dataStrings.length - 1; i ++) {raw = float (dataStrings [i+1]); }} অন্য {println (inString); }}} ধরা (ব্যতিক্রম e) {println ("Caught Exception"); }}
এখানে আপনি এই ধাপে সংযুক্ত ছবিতে ভিজ্যুয়ালাইজেশন দেখতে পারেন। নোডেমকু প্রান্তে প্রাপ্ত অবস্থানের তথ্যও ছবিতে দেখানো সিরিয়াল মনিটরে দেখা যায়।
ধাপ 5: কোড
আমি github সংগ্রহস্থল সংযুক্ত করেছি। আপনি ক্লোন করতে পারেন এবং আপনার প্রকল্পে এটি ব্যবহার করতে পারেন।
my_code
রেপোতে ট্রান্সমিটার (arduino+IMU) এবং রিসিভার (Nodemcu+Servo) এর জন্য 2 টি arduino স্কেচ রয়েছে।
এবং একটি প্রক্রিয়াকরণ স্কেচ। এটি আপনার প্রকল্পে সাহায্য করলে রেপোকে স্টার করুন।
এই নির্দেশে, R- রিসিভার এবং T- ট্রান্সমিটার
ধাপ 6: ভিডিও ধ্বংস
আমি আগামীকাল ভিডিও সংযুক্ত করব। বিজ্ঞপ্তি পেতে আমাকে অনুসরণ করুন।
সবাইকে ধন্যবাদ!
প্রস্তাবিত:
DIY -- কিভাবে একটি মাকড়সা রোবট তৈরি করা যায় যা Arduino Uno ব্যবহার করে স্মার্টফোন ব্যবহার করে নিয়ন্ত্রণ করা যায়: 6 টি ধাপ
DIY || কিভাবে একটি স্পাইডার রোবট তৈরি করা যায় যা Arduino Uno ব্যবহার করে স্মার্টফোন ব্যবহার করে নিয়ন্ত্রণ করা যায়: স্পাইডার রোবট তৈরির সময় কেউ রোবটিক্স সম্পর্কে অনেক কিছু শিখতে পারে। এই ভিডিওতে আমরা আপনাকে দেখাবো কিভাবে একটি স্পাইডার রোবট তৈরি করা যায়, যা আমরা আমাদের স্মার্টফোন ব্যবহার করে পরিচালনা করতে পারি (Androi
সার্ভো মোটর এবং গতি নিয়ন্ত্রণ ব্যবহার করে ঘোরানো ফ্যান: 6 টি ধাপ
সার্ভো মোটর এবং স্পীড কন্ট্রোল ব্যবহার করে ফ্যান ঘোরানো: এই টিউটোরিয়ালে আমরা শিখব কিভাবে সার্ভো মোটর, পটেন্টিওমিটার, আরডুইনো এবং ভিসুইনো ব্যবহার করে অ্যাডজাস্টেবল স্পিড দিয়ে ফ্যান ঘুরাতে হয়। ভিডিওটি দেখুন
160A ব্রাশ করা ইলেকট্রনিক স্পিড কন্ট্রোলার এবং সার্ভো টেস্টার ব্যবহার করে কিভাবে ডিসি গিয়ার মোটর নিয়ন্ত্রণ করবেন: 3 টি ধাপ
160A ব্রাশ করা ইলেকট্রনিক স্পিড কন্ট্রোলার এবং সার্ভো টেস্টার ব্যবহার করে কিভাবে ডিসি গিয়ার মোটরকে নিয়ন্ত্রণ করবেন: স্পেসিফিকেশন: ভোল্টেজ: 2-3S লাইপো বা 6-9 NiMH ক্রমাগত বর্তমান: 35A বিস্ফোরণ বর্তমান: 160A BEC: 5V / 1A, রৈখিক মোড মোড: 1। এগিয়ে &বিপরীত; 2. এগিয়ে &ব্রেক; 3. এগিয়ে & ব্রেক & বিপরীত ওজন: 34 গ্রাম আকার: 42*28*17 মিমি
আরডুইনো এবং ব্লুটুথ ব্যবহার করে সার্ভো মোটর নিয়ন্ত্রণ করতে অ্যান্ড্রয়েড (রিমোটক্সি) UI: 7 টি ধাপ (ছবি সহ)
আরডুইনো এবং ব্লুটুথ ব্যবহার করে সার্ভো মোটর নিয়ন্ত্রণ করার জন্য অ্যান্ড্রয়েড (রিমোটক্সি) ইউআই: এই নির্দেশে আমি আপনাকে ব্লুটুথের মাধ্যমে আরডুইনো মেগাতে সংযুক্ত সার্ভো মোটর নিয়ন্ত্রণ করতে রিমোটক্সি ইন্টারফেস মেকার ব্যবহার করে অ্যান্ড্রয়েড ইউজার ইন্টারফেস তৈরির দ্রুত পদক্ষেপ দেব। এই ভিডিওটি দেখায় কিভাবে UI সার্ভো মোটরের গতি এবং অবস্থান নিয়ন্ত্রণ করবে
Arduino এবং রক ব্যান্ড গিটার ব্যবহার করে সার্ভো নিয়ন্ত্রণ করুন: 5 টি ধাপ
আরডুইনো এবং রক ব্যান্ড গিটার ব্যবহার করে কন্ট্রোল সার্ভো: এটি আমার প্রথম নির্দেশযোগ্য কোন কদর্য মন্তব্য নেই কিভাবে আমি একটি প্রোগ্রাম তৈরি করেছি