Ardruino 101: 4 ধাপ (ছবি সহ)
Ardruino 101: 4 ধাপ (ছবি সহ)
Anonim
Image
Image
Ardruino 101 ব্যবহার করে রঙ পরিবর্তন নাইট লাইট
Ardruino 101 ব্যবহার করে রঙ পরিবর্তন নাইট লাইট

এই প্রকল্পে আপনি ardruino, Adafruit neo rgb Strips এবং একটি 3D প্রিন্টার ব্যবহার করে একটি নাইট ল্যাম্প তৈরি করবেন।

মনে রাখবেন যে এই ইন্ট্রাকটেবল সম্পূর্ণরূপে আমার স্কুল প্রকল্পের জন্য। এই প্রকল্পের কোড অন্য একটি প্রকল্পের উপর ভিত্তি করে। Ardruino এর ক্ষেত্রে আমি বলেছি যে আমি একজন বিশেষজ্ঞ নই।

ধাপ 1: প্রয়োজনীয়তা

প্রয়োজনীয়তা
প্রয়োজনীয়তা
প্রয়োজনীয়তা
প্রয়োজনীয়তা
প্রয়োজনীয়তা
প্রয়োজনীয়তা

এই প্রকল্পের জন্য আপনার নিম্নলিখিত হার্ডওয়্যার এবং সরঞ্জামগুলির প্রয়োজন হবে

হার্ডওয়্যার:

1 - একটি ardruino101 (মার্কিন যুক্তরাষ্ট্রে) অথবা একটি Genuino101 (মার্কিন যুক্তরাষ্ট্রের বাইরে)।

2 - অ্যাডাফ্রুট (5 ভোল্ট) থেকে NeoPixel rgb LED স্ট্রিপ।

3 - একটি ardruino ইউএসবি সংযোগকারী (টাইপ বি থেকে একটি সংযোগকারী)।

4 - Ardruino থেকে একটি সফটওয়্যার, Ardruino IDE এই টিউটোরিয়ালে আমরা 1.8.5 সংস্করণ ব্যবহার করব। সফ্টওয়্যার লাইব্রেরির প্রয়োজনীয়তা হল: 101, অ্যাডাফ্রুট নিওপিক্সেল এবং ম্যাডগুইক।

এবং আপনার হার্ডওয়্যার রাখার জন্য একটি বস্তু। এই ক্ষেত্রে আমি একটি 3D প্রিন্টার ব্যবহার করব। এই 3D প্রিন্টের ফাইলটি "ল্যাম্প হেড" নামক বর্ণনায় অবস্থিত। লক্ষ্য করুন যে এই ফাইল ফর্ম্যাটটি 3D প্রিন্টের জন্য প্রস্তুত নয়। আপনার 3D প্রিন্টারের উপর নির্ভর করে আপনাকে প্রথমে 3D বস্তুর উপর মনোনীত 3d মুদ্রণ সফ্টওয়্যারটি চালাতে হবে। কখনও কখনও 3D মুদ্রণের স্কেল পুনরায় সেট করা হবে। তাই নিশ্চিত করুন যে ব্যাস 11 সেমি 11 সেমি সেট করা আছে।

6 - বেসিক সোল্ডারিং কিট।

পদক্ষেপ 2: হার্ডওয়্যার এবং সফ্টওয়্যার বোঝা

আর্ড্রুইন/জেনুইনো 101

শুধু Ardruino101 এবং genuino101 স্পষ্ট করার জন্য নামের পাশে একই রকম। উভয়েরই একই চশমা আছে এবং একই সফটওয়্যার ব্যবহার করে।

Ardruino101 ardruino UNO এর মত মৌলিক চশমা এবং আরও অনেক কিছু ধারণ করে। Ardruino101 এর প্রধান বৈশিষ্ট্য হল অ্যাক্সিলরোমিটার এবং জাইরোস্কোপ যা আমরা আমাদের প্রকল্পে ব্যবহার করব। এছাড়াও এই ধরনের ardruino এর অনন্য কোড লাইব্রেরি আছে যার নাম CurrieIMU (অভ্যন্তরীণ পরিমাপ ইউনিট) যা লাইব্রেরি এক্সটেনশন 101 এর অন্তর্ভুক্ত।

সেই সফটওয়্যার সম্পর্কে কথা বলা যাক।

সফটওয়্যার এবং লাইব্রেরি

Ardruino IDE পাইথনকে প্রধান উৎস কোড হিসেবে ব্যবহার করে। এটি প্রধান কোড প্ল্যাটভর্ম যেখানে বেশিরভাগ আর্ড্রুইনো চলে। এই সফটওয়্যারটি কিভাবে ব্যবহার করতে হয় সে বিষয়ে অনলাইনে প্রচুর টিউটোরিয়াল আছে তাই আমি আপনাকে এই প্রোগ্রামগুলিতে নতুন হলে প্রথমে সেগুলো নিয়ে গবেষণা করার পরামর্শ দিচ্ছি।

আমরা যে লাইব্রেরিগুলি ব্যবহার করছি তা হল:

স্কেচ মেনু থেকে,> লাইব্রেরি অন্তর্ভুক্ত করুন> লাইব্রেরি পরিচালনা করুন … পাঠ্য ইনপুট বাক্সে টাইপ করুন

- 101 স্ট্যান্ডার্ট এ ardruino 101 স্বয়ংক্রিয়ভাবে ardruino IDE তে অন্তর্ভুক্ত করা হয় না। আমাদের ardruino টাইপ কোড করার জন্য আমাদের এই লাইব্রেরির এক্সটেনশন দরকার।

-আডাফ্রুট নিওপিক্সেল যাতে আমাদের নিও পিক্সেল স্ট্রিপ কোড করে।

-ম্যাডউইক কাঁচা ডেটা পড়ার জন্য এবং এই ডেটাকে কাঁচা, পিচ এবং রোলে গণনা করার জন্য।

নিও আরজিবি স্ট্রিপ

আমি যে টাইপটি ব্যবহার করব তা হল 5 ভোল্টেজ বা 5v টাইপ। এই 5v এর সাথে আমার স্ট্রিপগুলি নিয়ন্ত্রণ করার জন্য একটি বর্ধিত শক্তি উৎসের প্রয়োজন নেই। পরিবর্তে আমি স্ট্রিপগুলিকে নিয়ন্ত্রণ এবং আলোকিত করার জন্য শক্তির উৎস হিসাবে আমার ardruino ব্যবহার করব।

এই স্ট্রিপগুলি শুরু করার আগে আপনাকে কিছু টিপস জানতে হবে।

প্রথমে আপনার অ্যাডাফ্রুট থেকে একটি নিওডিজিটাল আরজিবি নেতৃত্বাধীন স্ট্রিপ দরকার। এই ধরনের স্ট্রিপ কোড ব্যবহার করে কট্রোলেবল। পরবর্তী আপনাকে জানতে হবে যে এই স্ট্রিপগুলির পিছনের দিক এবং একটি ফ্রন্টসাইড রয়েছে। এই ব্যাক এবং ফ্রন্টসাইড সোল্ডারিংয়ের জন্য গুরুত্বপূর্ণ। নিশ্চিত করুন যে আপনি সামনের দিকটি সোল্ডার করেছেন যেখানে তীর কী টিপ থেকে দূরে নির্দেশ করছে।

এগুলি কীভাবে ব্যবহার করবেন সে সম্পর্কে এখানে একটি গাইড রয়েছে।

গ্রাউন্ড কানেকশন (জিএনডি), ভোল্টেজ কানেকশন (ভি) এবং পিন কানেকশন (ডিআইএন) মনে রাখার জন্য sold টি সোল্ডার পয়েন্ট আছে।

ধাপ 3: উপাদান সেট আপ

উপাদান সেট আপ
উপাদান সেট আপ
উপাদান সেট আপ
উপাদান সেট আপ
উপাদান সেট আপ
উপাদান সেট আপ

প্রথমে আপনাকে উপাদানটি 3 ডি মুদ্রণ করতে হবে যা আপনি প্রয়োজনীয়তাগুলিতে খুঁজে পেতে পারেন। এই ক্ষেত্রে আমি পিএলএ ব্যবহার করব। নিশ্চিত করুন যে ওভারাল বস্তুর ব্যাস 11 সেমি বাই 11 সেমি। এটি নিশ্চিত করবে যে ardruino এবং রেখাচিত্রমালা shpere মধ্যে মাপসই করা হবে। মনে রাখবেন যে প্রতিটি 3D প্রিন্টার তার মুদ্রণ প্রক্রিয়া গণনা করার জন্য বিভিন্ন সফ্টওয়্যার ব্যবহার করে। আপনি যে ফাইলটি ব্যবহার করেন তা ভিন্নভাবে স্কেল করা যেতে পারে তাই এটি মনে রাখবেন।

মুদ্রণের পরে দ্বিতীয়টি নিশ্চিত করুন যে উপাদানগুলি বন্ধ করতে সক্ষম। 3D প্রিন্ট একসাথে একটি গোলক তৈরি করে। তারা সুন্দরভাবে মাপসই করা উচিত। যদি componten হারান তাহলে ভিতরের দিকে কিছু টেপ বিজ্ঞাপন যাতে ক্যাপ ভরা হয়। আর মোটা হলে স্যান্ডপেপার ব্যবহার করুন।

তৃতীয় ardruino এবং রেখাচিত্রমালা জন্য skematichs মোটামুটি সহজ। আপনি ardruino এর সাথে স্ট্রিপগুলিকে সংযুক্ত করতে 3 টি তার ব্যবহার করবেন। মনে রাখবেন যে কেবলমাত্র আমি সোল্ডারগুলি স্ট্রিপগুলিতে। Ardruino নিজেই নয়।

GND GND তে যায়

DIN একটি পিনে যায় (আমাদের ক্ষেত্রে ardruino এ pin6)

5V 5V যায়

নিশ্চিত করুন যে আপনি যে পরিমাণ স্ট্রিপ ব্যবহার করেন তা at০ -এ সীমাবদ্ধ Any আপনি কেবল একটি কাঁচি চিহ্ন দিয়ে প্রদর্শিত যে কোন অনাবৃত স্ট্রিপগুলি কাটাতে পারেন।

চতুর্থ Evrything গোলক মধ্যে সুন্দরভাবে মাপসই করা উচিত। আপনি পছন্দ করতে পারেন যে আমি 3 ডি প্রিন্টের মধ্যে 1 এর মধ্যে একটি ছেদ তৈরি করেছি যাতে গর্তটি দেখা যায় এবং শীর্ষে একটি ট্রাফিক প্লাস্টিক রাখা হয়।

ধাপ 4: কোডিং

তাই এখনই আপনার লাইব্রেরিতে প্রয়োজনীয় সমস্ত উপাদান থাকা উচিত।

প্রকল্পটি চালানোর জন্য আপনার প্রয়োজনীয় কোডটি এখানে। ফলাফলটি এই পৃষ্ঠায় আমি যে ভিডিও লিঙ্কটি পাঠিয়েছি তার মতো হওয়া উচিত।

এই কোডের উৎস এখানে পাওয়া যাবে। এই প্রজেক্টে ব্যবহারের পিছনে কোড এবং অ্যালগারিটমে আরও ভালভাবে বোঝার জন্য নেসারকার্লি পদক্ষেপগুলি অন্তর্ভুক্ত রয়েছে।

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

#পিন 6 // 11 পিক্সেল নিওপিক্সেল স্ট্রিপ নির্ধারণ করুন

#ডিফাইন পিন 1 7 // 1 পিক্সেল নিওপিক্সেল স্ট্রিপ #ডিফাইন NUMPIXELS 30 // পিক্সেল এর সংখ্যা #ডিফাইন স্যাম্পল_রেট 25 // অ্যাকসিলরোমিটার এবং জাইরোস্কোপের নমুনা হার

// ম্যাগউইক কনফিগারেশন

ম্যাডগুইক ফিল্টার; স্বাক্ষরবিহীন লম্বা মাইক্রোস্পার রিডিং, মাইক্রোসপ্রেভিস্ট; ভাসা accelScale, gyroScale;

// নিওপিক্সেল কনফিগারেশন

Adafruit_NeoPixel পিক্সেল = Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); Adafruit_NeoPixel পিক্সেল স্ট্যাটাস = Adafruit_NeoPixel (1, 7, NEO_GRB + NEO_KHZ800);

// রঙের স্থান

RGBConverter rgbConverter; ডবল জ = 1; ডবল s = 1; ডবল v = 1; বাইট আরজিবি [3];

// স্ট্যাটাস মোশন ল্যাম্প

// স্টেট 0 -> হিউ -পিচ // স্টেট 1 -> স্যাচুরেশন সিলেক্ট করুন -রোল // স্টেট 2 -> ভ্যালু সিলেক্ট করুন -ইয়াও // স্টেট 3 -> ফিক্স কালার ভোলাটাইল ইন্ট স্ট্যাটাস ল্যাম্প = 0;

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

Serial.begin (9600);

// আইএমইউ শুরু করুন এবং ফিল্টার করুন

CurieIMU.begin (); CurieIMU.setGyroRate (SAMPLE_RATE); CurieIMU.setAccelerometerRate (SAMPLE_RATE); filter.begin (SAMPLE_RATE);

// অ্যাক্সিলরোমিটার পরিসীমা 2G তে সেট করুন

CurieIMU.setAccelerometerRange (2); // জাইরোস্কোপ পরিসীমা 250 ডিগ্রী/সেকেন্ড CurieIMU.setGyroRange (250) সেট করুন;

CurieIMU.autoCalibrateAccelerometerOffset (X_AXIS, 0);

CurieIMU.autoCalibrateAccelerometerOffset (Y_AXIS, 0); CurieIMU.autoCalibrateAccelerometerOffset (Z_AXIS, 1); CurieIMU.autoCalibrateGyroOffset ();

CurieIMU.attachInterrupt (eventCallback);

CurieIMU.setDetectionThreshold (CURIE_IMU_TAP, 950); CurieIMU.interrupts (CURIE_IMU_TAP);

// হার সঠিক করার জন্য গতি আপডেট করতে ভেরিয়েবল শুরু করুন

microsPerReading = 1000000 / SAMPLE_RATE; পূর্ববর্তী = মাইক্রোস ();

// ইনিয়েট নিওপিক্সেল 11

পিক্সেল শুরু (); পিক্সেল শো ();

// ইনিয়েট নিওপিক্সেল 1

পিক্সেল স্ট্যাটাস। শুরু (); পিক্সেল শো ();

// পিক্সে স্ট্যাটাস দেখান

setStatusPixel (statusLamp); }

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

int aix, aiy, aiz; // অ্যাকসিলরোমিটার int gix, giy, giz; ভাসা কুড়াল, ay, az; ভাসা gx, gy, gz; ভাসমান রোল, পিচ, ইয়া; স্ট্যাটিক স্বাক্ষরবিহীন দীর্ঘ মাইক্রোসনাও;

// ডেটা পড়ার এবং ফিল্টার আপডেট করার সময় হয়েছে কিনা তা পরীক্ষা করুন

microsNow = মাইক্রোস (); যদি (microsNow - microsPrevious> = microsPerReading) {

// CurieIMU থেকে কাঁচা তথ্য পড়ুন

CurieIMU.readMotionSensor (aix, aiy, aiz, gix, giy, giz);

// কাঁচা তথ্য থেকে মাধ্যাকর্ষণ এবং ডিগ্রী/সেকেন্ড ইউনিটে রূপান্তর করুন

ax = convertRawAcceleration (aix); ay = convertRawAcceleration (aiy); az = convertRawAcceleration (aiz); gx = convertRawGyro (gix); gy = convertRawGyro (giy); gz = convertRawGyro (giz);

// ফিল্টার আপডেট করুন, যা ওরিয়েন্টেশন গণনা করে

filter.updateIMU (gx, gy, gz, ax, ay, az);

// হেডিং, পিচ এবং রোল প্রিন্ট করুন

রোল = filter.getRoll (); পিচ = filter.getPitch (); yaw = filter.getYaw ();

// আগের সময় বৃদ্ধি, তাই আমরা সঠিক গতি রাখা

microsPrevious = microsPrevious + microsPerReading;

// শুধুমাত্র যদি হিউ, স্যাচুরেশন বা মান পরিবর্তন হয়

if (statusLamp Hue নির্বাচন করুন যদি

// কোণ সীমাবদ্ধতা

// রোল শুধুমাত্র -90º থেকে 90º = 180º // স্টেট 1 -> স্যাচুরেশন নির্বাচন করুন যদি (roll> = -90 && roll <= 90 && statusLamp == 1) {// ট্রান্সফর্ম অ্যাঙ্গেল রোল = রোল + 90; // কোণ s = roll / 180.0 থেকে কালার কর্ডিনেট পায়; }

// রাষ্ট্র 2 -> মান নির্বাচন করুন

যদি (statusLamp == 2) {// yaw 0º থেকে 360º v = yaw / 360.0; }

// আরজিবিতে রূপান্তর করুন

rgbConverter.hsvToRgb (h, s, v, rgb); /* সিরিয়াল.প্রিন্ট ("রঙ:"); সিরিয়াল.প্রিন্ট (জ); সিরিয়াল.প্রিন্ট (" -"); সিরিয়াল.প্রিন্ট (গুলি); সিরিয়াল.প্রিন্ট (" -"); সিরিয়াল.প্রিন্ট (v); Serial.println ("");

সিরিয়াল.প্রিন্ট ("ওরিয়েন্টেশন:");

Serial.print (yaw); সিরিয়াল.প্রিন্ট (""); সিরিয়াল.প্রিন্ট (পিচ); সিরিয়াল.প্রিন্ট (""); Serial.println (রোল); */

// পিক্সেলের রঙ পরিবর্তন করুন

জন্য (int px = 0; px <NUMPIXELS; px ++) {pixels.setPixelColor (px, pixels. Color (rgb [0], rgb [1], rgb [2])); পিক্সেল শো (); }}

// পিক্সে স্ট্যাটাস দেখান

setStatusPixel (statusLamp); }}

float convertRawAcceleration (int aRaw) {

// যেহেতু আমরা 2G পরিসীমা ব্যবহার করছি // -2g মানচিত্র -32768 এর কাঁচা মূল্যে // +2g মানচিত্র 32767 এর কাঁচা মূল্যে

float a = (aRaw * 2.0) / 32768.0;

ফিরে a; }

float convertRawGyro (int gRaw) {

// যেহেতু আমরা 250 ডিগ্রী/সেকেন্ড পরিসীমা ব্যবহার করছি // -250 মানচিত্র -32768 এর কাঁচা মূল্যে // +250 মানচিত্র 32767 এর কাঁচা মূল্যে

float g = (gRaw * 250.0) / 32768.0;

রিটার্ন জি; }

স্ট্যাটিক অকার্যকর ঘটনা কলব্যাক ()

{// সমস্ত অক্ষের মধ্যে ট্যাপ সনাক্ত করুন যদি (CurieIMU.getInterruptStatus (CURIE_IMU_TAP)) {Serial.print ( আলতো চাপুন Serial.println (statusLamp);

// অবস্থা পরিবর্তন করুন

স্ট্যাটাস ল্যাম্প ++;

// প্রাথমিক অবস্থা

যদি (statusLamp> 3) {statusLamp = 0; }}}

অকার্যকর স্ট্যাটাসপিক্সেল (int statusPx)

{সুইচ (statusPx) {কেস 0: pixelsStatus.setPixelColor (0, pixelsStatus. Color (150, 0, 0)); পিক্সেল স্ট্যাটাস.শো (); বিরতি; কেস 1: pixelsStatus.setPixelColor (0, pixelsStatus. Color (0, 150, 0)); পিক্সেল স্ট্যাটাস.শো (); বিরতি; কেস 2: পিক্সেল স্ট্যাটাস। পিক্সেল স্ট্যাটাস.শো (); বিরতি; কেস 3: পিক্সেল স্ট্যাটাস। পিক্সেল স্ট্যাটাস.শো (); বিরতি;

}

}

প্রস্তাবিত: