সুচিপত্র:

HC-12: 6 ধাপ সহ Arduino এবং ESP8266 এর মধ্যে MPU6050 ব্যবহার করে সার্ভো নিয়ন্ত্রণ করা
HC-12: 6 ধাপ সহ Arduino এবং ESP8266 এর মধ্যে MPU6050 ব্যবহার করে সার্ভো নিয়ন্ত্রণ করা

ভিডিও: HC-12: 6 ধাপ সহ Arduino এবং ESP8266 এর মধ্যে MPU6050 ব্যবহার করে সার্ভো নিয়ন্ত্রণ করা

ভিডিও: HC-12: 6 ধাপ সহ Arduino এবং ESP8266 এর মধ্যে MPU6050 ব্যবহার করে সার্ভো নিয়ন্ত্রণ করা
ভিডিও: ESP8266 ওয়্যারলেস নেক্সটশন HMI || Outseal Arduino PLC 2024, জুলাই
Anonim
HC-12 দিয়ে Arduino এবং ESP8266 এর মধ্যে MPU6050 ব্যবহার করে সার্ভো নিয়ন্ত্রণ করা
HC-12 দিয়ে Arduino এবং ESP8266 এর মধ্যে MPU6050 ব্যবহার করে সার্ভো নিয়ন্ত্রণ করা

এই প্রকল্পে, আমরা 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: ভিডিও ধ্বংস

আমি আগামীকাল ভিডিও সংযুক্ত করব। বিজ্ঞপ্তি পেতে আমাকে অনুসরণ করুন।

সবাইকে ধন্যবাদ!

প্রস্তাবিত: