সুচিপত্র:

Arduino ডিজিটাল কম্পাস প্রকল্প: 3 ধাপ
Arduino ডিজিটাল কম্পাস প্রকল্প: 3 ধাপ
Anonim
Image
Image

হ্যালো! এই নির্দেশে আপনি দেখতে পাবেন কিভাবে আপনি একটি Arduino এবং প্রসেসিং IDE ব্যবহার করে একটি ডিজিটাল কম্পাস তৈরি করতে পারেন। এটি বেশ সহজ কিন্তু আকর্ষণীয় এবং শীতল দেখতে Arduino প্রকল্প।

আপনি উপরের ভিডিওতে এই টিউটোরিয়ালের ডেমো উদাহরণ দেখতে পারেন। আপনি সবসময় আমার ইউটিউব চ্যানেলে এরকম আরো আকর্ষণীয় ভিডিও খুঁজে পেতে পারেন এবং আমার ওয়েবসাইট HowToMechatronics.com এ প্রচুর ইলেকট্রনিক্স প্রকল্প এবং টিউটোরিয়াল খুঁজে পেতে পারেন

ধাপ 1: যন্ত্রাংশ আবশ্যক

এই প্রকল্পের জন্য পৃথিবীর চৌম্বক ক্ষেত্র পরিমাপের জন্য আপনার প্রয়োজন হবে শুধু একটি Arduino বোর্ড এবং একটি MEMS ম্যাগনেটোমিটার। আমি GY - 80 ব্রেকআউট বোর্ড ব্যবহার করব যার মধ্যে MC5883L 3 - অ্যাক্সিস ম্যাগনেটোমিটার রয়েছে।

আমরা প্রকল্পের সোর্স কোডটি চালিয়ে যাওয়ার আগে যদি MEMS ম্যাগনেটোমিটার কিভাবে কাজ করে এবং কিভাবে GY - 80 ব্রেকআউট বোর্ডকে I2C কমিউনিকেশনের মাধ্যমে সংযুক্ত করতে হয় এবং ব্যবহার করতে হয় সে সম্পর্কে আরো বিস্তারিত জানার জন্য আপনি আমার বিশেষ টিউটোরিয়াল চেক করতে পারেন।

ধাপ 2: Arduino সোর্স কোড

আমাদের প্রথমে যা করতে হবে তা হল Arduino বোর্ডে একটি স্কেচ আপলোড করা যা ম্যাগনেটোমিটার থেকে ডেটা পড়বে এবং এটি প্রসেসিং IDE তে পাঠাবে। এখানে Arduino সোর্স কোড:

/ * আরজিনো কম্পাস * * দেজান নেডেলকোভস্কির, * www. HowToMechatronics.com * */

#অন্তর্ভুক্ত // I2C Arduino লাইব্রেরি

#ম্যাগনেটোমিটার_এমএক্স 0 0x03 নির্ধারণ করুন

#সংজ্ঞায়িত ম্যাগনেটোমিটার_এমএক্স 1 0x04 #ডিফাইন ম্যাগনেটোমিটার_এমজেড 0 0x05 #ডিফাইন ম্যাগনেটোমিটার_এমজেড 1 0x06 #ডিফাইন ম্যাগনেটোমিটার_এমওয়াই 0 0x07

int mX0, mX1, mX_out;

int mY0, mY1, mY_out; int mZ0, mZ1, mZ_out;

ভাসমান শিরোনাম, শিরোনাম ডিগ্রী, শিরোনাম ফিল্টার করা, পতন;

ভাসা Xm, Ym, Zm;

#সংজ্ঞায়িত করুন ম্যাগনেটোমিটার 0x1E // HMC5883 এর I2C 7bit ঠিকানা

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

// সিরিয়াল এবং I2C যোগাযোগ সিরিয়াল শুরু করুন (115200); Wire.begin (); বিলম্ব (100); Wire.beginTransmission (ম্যাগনেটোমিটার); Wire.write (0x02); // নির্বাচন মোড রেজিস্টার Wire.write (0x00); // ক্রমাগত পরিমাপ মোড Wire.endTransmission (); }

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

// ---- এক্স-অ্যাক্সিস ওয়্যার। // ডিভাইস Wire.write প্রেরণ (Magnetometer_mX1); Wire.endTransmission (); Wire.requestFrom (ম্যাগনেটোমিটার, 1); যদি (Wire.available () <= 1) {mX0 = Wire.read (); } Wire.beginTransmission (ম্যাগনেটোমিটার); // ডিভাইস Wire.write প্রেরণ (Magnetometer_mX0); Wire.endTransmission (); Wire.requestFrom (Magnetometer, 1); যদি (Wire.available () <= 1) {mX1 = Wire.read (); }

// ---- Y- অক্ষ

Wire.beginTransmission (ম্যাগনেটোমিটার); // ডিভাইস Wire.write প্রেরণ (Magnetometer_mY1); Wire.endTransmission (); Wire.requestFrom (Magnetometer, 1); যদি (Wire.available () <= 1) {mY0 = Wire.read (); } Wire.beginTransmission (ম্যাগনেটোমিটার); // ডিভাইস Wire.write প্রেরণ (Magnetometer_mY0); Wire.endTransmission (); Wire.requestFrom (ম্যাগনেটোমিটার, 1); যদি (Wire.available () <= 1) {mY1 = Wire.read (); } // ---- Z-Axis Wire.beginTransmission (Magnetometer); // ডিভাইস Wire.write প্রেরণ (Magnetometer_mZ1); Wire.endTransmission (); Wire.requestFrom (ম্যাগনেটোমিটার, 1); যদি (Wire.available () <= 1) {mZ0 = Wire.read (); } Wire.beginTransmission (ম্যাগনেটোমিটার); // ডিভাইস Wire.write প্রেরণ (Magnetometer_mZ0); Wire.endTransmission (); Wire.requestFrom (ম্যাগনেটোমিটার, 1); যদি (Wire.available () <= 1) {mZ1 = Wire.read (); } // ---- এক্স-অক্ষ mX1 = mX1 << 8; mX_out = mX0+mX1; // কাঁচা তথ্য // ডেটশীট থেকে: 0.92 mG/digit Xm = mX_out*0.00092; // গাউস ইউনিট //* পৃথিবীর চুম্বকীয় ক্ষেত্র 0.25 থেকে 0.65 গাউস পর্যন্ত বিস্তৃত, তাই এগুলি হল সেই মানগুলি যা আমাদের আনুমানিক পেতে হবে।

// ---- Y- অক্ষ

mY1 = mY1 << 8; mY_out = mY0+mY1; Ym = mY_out*0.00092;

// ---- জেড-অক্ষ

mZ1 = mZ1 <0.073 rad declination = 0.073; শিরোনাম += পতন; // লক্ষণগুলি যখন শ্রদ্ধা করা হয় তখন সংশোধন করা (শিরোনাম <0) শিরোনাম += 2*পিআই;

// পতন কোণ যোগ করার কারণে সংশোধন করা

যদি (শিরোনাম> 2*পিআই) শিরোনাম -= 2*পিআই;

হেডিং ডিগ্রী = হেডিং * 180/পিআই; // ডিগ্রী ইউনিটে শিরোনাম

// আউটপুট কোণ / নিম্ন পাস ফিল্টার মসৃণ

শিরোনাম ফিল্টার করা = শিরোনাম ফিল্টার করা*0.85 + শিরোনাম ডিগ্রী*0.15;

// সিরিয়াল পোর্টের মাধ্যমে আইডিই প্রসেসিংয়ে শিরোনাম মান পাঠানো

Serial.println (শিরোনাম ফিল্টার করা);

বিলম্ব (50); }

ধাপ 3: আইডিই সোর্স কোড প্রসেস করা হচ্ছে

আমরা আগের Arduino স্কেচ আপলোড করার পরে আমাদের প্রসেসিং IDE তে ডেটা গ্রহণ করতে হবে এবং ডিজিটাল কম্পাস আঁকতে হবে। কম্পাস একটি ব্যাকগ্রাউন্ড ইমেজ, তীরের স্থির ইমেজ এবং কম্পাসের বডির একটি আবর্তিত ইমেজ নিয়ে গঠিত। সুতরাং আরডুইনো দিয়ে গণনা করা মাটির চৌম্বক ক্ষেত্রের মানগুলি কম্পাস ঘোরানোর জন্য ব্যবহৃত হয়।

এখানে প্রসেসিং IDE এর সোর্স কোড:

/ * আরজিনো কম্পাস * * দেজান নেডেলকোভস্কির, * www. HowToMechatronics.com * */ আমদানি প্রক্রিয়াকরণ। সিরিয়াল। *; java.awt.event. KeyEvent আমদানি করুন; java.io. IOException আমদানি করুন;

সিরিয়াল myPort;

PImage imgCompass; PImage imgCompassArrow; ছবি ব্যাকগ্রাউন্ড;

স্ট্রিং ডেটা = "";

ভাসমান শিরোনাম;

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

আকার (1920, 1080, P3D); মসৃণ (); imgCompass = loadImage ("Compass.png"); imgCompassArrow = loadImage ("CompassArrow.png"); background = loadImage ("Background.png"); myPort = নতুন সিরিয়াল (এটি, "COM4", 115200); // সিরিয়াল যোগাযোগ শুরু myPort.bufferUntil ('n'); }

অকার্যকর ড্র () {

চিত্র (পটভূমি, 0, 0); // ব্যাকগ্রাউন্ড ইমেজ pushMatrix () লোড করে; অনুবাদ করুন (প্রস্থ/2, উচ্চতা/2, 0); // পর্দার কেন্দ্রে সমন্বয় ব্যবস্থা অনুবাদ করে, যাতে ঘূর্ণন ঠিক কেন্দ্রে ঘোরায় Z (রেডিয়ান (-হেডিং)); // Z- অক্ষ চিত্রের চারপাশে কম্পাস ঘোরায় (imgCompass, -960, -540); // কম্পাস ইমেজ লোড করে এবং কোঅর্ডিনেট সিস্টেম স্থানান্তরিত হওয়ায় আমাদের ইমেজটি -960x, -540y (অর্ধেক স্ক্রিন সাইজ) popMatrix () এ সেট করতে হবে; // সমন্বয় ব্যবস্থা নিয়ে আসে মূল অবস্থানে 0, 0, 0 চিত্র (imgCompassArrow, 0, 0); // CompassArrow ইমেজ লোড করে যা rotateZ () ফাংশন দ্বারা প্রভাবিত হয় না কারণ popMatrix () ফাংশন textSize (30); পাঠ্য ("শিরোনাম:" + শিরোনাম, 40, 40); // পর্দায় শিরোনামের মান মুদ্রণ করে

বিলম্ব (40);

}

// সিরিয়াল পোর্ট থেকে ডেটা পড়া শুরু করে

void serialEvent (Serial myPort) {data = myPort.readStringUntil ('n'); // সিরিয়াল পোর্ট থেকে ডেটা পড়ে এবং স্ট্রিং ভেরিয়েবল "ডেটা" তে রাখে। শিরোনাম = float (data); // স্ট্রিং মানকে ফ্লোট ভ্যালুতে রূপান্তর করা}

আমি আশা করি আপনি এই প্রকল্পটি পছন্দ করবেন। যদি তা হয় তবে আপনি আরও দুর্দান্ত প্রকল্পগুলির জন্য আমার ওয়েবসাইটটি দেখতে পারেন।

প্রস্তাবিত: