সুচিপত্র:

Arduino Datalogger: 8 টি ধাপ (ছবি সহ)
Arduino Datalogger: 8 টি ধাপ (ছবি সহ)

ভিডিও: Arduino Datalogger: 8 টি ধাপ (ছবি সহ)

ভিডিও: Arduino Datalogger: 8 টি ধাপ (ছবি সহ)
ভিডিও: Using Micro SD Card and Data logging with Arduino | Arduino Step by Step Course Lesson 106 2024, জুলাই
Anonim
আরডুইনো ডেটালগার
আরডুইনো ডেটালগার
আরডুইনো ডেটালগার
আরডুইনো ডেটালগার

এই টিউটোরিয়ালে, আমরা Arduino ব্যবহার করে একটি সাধারণ ডেটা লগার তৈরি করতে যাচ্ছি। বিন্দু হল তথ্য ক্যাপচার এবং টার্মিনালে মুদ্রণ করার জন্য Arduino ব্যবহার করার প্রাথমিক বিষয়গুলি শিখতে। আমরা এই মৌলিক সেটআপটি ব্যবহার করে বিভিন্ন কাজ সম্পন্ন করতে পারি।

শুরু করতে:

আপনি একটি Tinkercad (www.tinkercad.com) অ্যাকাউন্ট প্রয়োজন হবে। এগিয়ে যান এবং আপনার ইমেল বা সোশ্যাল মিডিয়া অ্যাকাউন্ট দিয়ে সাইন আপ করুন।

লগ ইন করা আপনাকে টিঙ্কারক্যাড ড্যাশবোর্ডে নিয়ে যায়। বাম দিকে "সার্কিট" এ ক্লিক করুন এবং "নতুন সার্কিট তৈরি করুন" নির্বাচন করুন। চল শুরু করি!

আপনি TInkercad সার্কিটগুলিতে সম্পূর্ণ ফাইলটি খুঁজে পেতে পারেন - এটি পরীক্ষা করার জন্য ধন্যবাদ!

ধাপ 1: কিছু উপাদান যোগ করুন

কিছু উপাদান যোগ করুন
কিছু উপাদান যোগ করুন
কিছু উপাদান যোগ করুন
কিছু উপাদান যোগ করুন
কিছু উপাদান যোগ করুন
কিছু উপাদান যোগ করুন

আপনার কিছু মৌলিক উপাদান লাগবে। এর মধ্যে রয়েছে:

  • আরডুইনো বোর্ড
  • ব্রেডবোর্ড

তাদের জন্য অনুসন্ধান করে এবং মধ্যম এলাকায় তাদের ক্লিক করে টেনে নিয়ে যোগ করুন।

Arduino উপর রুটি বোর্ড রাখুন। এটি পরে সংযোগগুলি দেখতে সহজ করে তোলে।

ধাপ 2: ব্রেডবোর্ড সম্পর্কে একটি নোট

ব্রেডবোর্ড সম্পর্কে একটি নোট
ব্রেডবোর্ড সম্পর্কে একটি নোট

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

  1. বিন্দুগুলি উল্লম্বভাবে সংযুক্ত, কিন্তু মাঝের লাইনটি এই সংযোগটিকে উপরের এবং নীচের কলাম থেকে আলাদা করে।
  2. সারি জুড়ে কলামগুলি বাম থেকে ডানে সংযুক্ত নয়। এর মানে হল যে সমস্ত উপাদানগুলিকে উল্লম্বভাবে নিচে না রেখে কলাম জুড়ে সংযুক্ত করা উচিত।
  3. আপনার যদি বোতাম বা সুইচ ব্যবহার করার প্রয়োজন হয়, মাঝখানে বিরতি জুড়ে সেগুলি সংযুক্ত করুন। আমরা পরবর্তী টিউটোরিয়ালে এটি পরিদর্শন করব।

ধাপ 3: দুটি সেন্সর যুক্ত করুন

দুটি সেন্সর যুক্ত করুন
দুটি সেন্সর যুক্ত করুন

আমরা যে দুটি সেন্সর ব্যবহার করছি তা হল আলোক সংবেদনশীল সেন্সর এবং তাপমাত্রা সেন্সর।

এই সেন্সর আলো এবং তাপমাত্রা মূল্যায়ন করে। আমরা Arduino ব্যবহার করে মানটি পড়ি এবং এটি Arduino এর সিরিয়াল মনিটরে প্রদর্শন করি।

দুটি সেন্সর খুঁজুন এবং যুক্ত করুন। নিশ্চিত করুন যে তারা ব্রেডবোর্ডে কলাম জুড়ে অবস্থান করছে। তাদের মধ্যে পর্যাপ্ত জায়গা রাখুন যাতে তাদের দেখা সহজ হয়।

ধাপ 4: আলোক সংবেদনশীল সেন্সর

আলোক সংবেদনশীল সেন্সর
আলোক সংবেদনশীল সেন্সর
আলোক সংবেদনশীল সেন্সর
আলোক সংবেদনশীল সেন্সর
আলোক সংবেদনশীল সেন্সর
আলোক সংবেদনশীল সেন্সর
আলোক সংবেদনশীল সেন্সর
আলোক সংবেদনশীল সেন্সর
  1. আলোক সংবেদনশীল সেন্সরের জন্য, আরডুইনোতে 5V পিন থেকে ব্রেডবোর্ডের ডান পায়ের মতো একই কলামে একটি তার যুক্ত করুন। তারের রঙ লাল করুন।
  2. Arduino এ A0 (A-zero) পিনের সাথে একই কলামের পিনের মাধ্যমে বাম পা সংযোগ করুন। এটি হল এনালগ পিন, যা আমরা সেন্সর থেকে মান পড়তে ব্যবহার করব। এই তারের হলুদ বা লাল বা কালো ছাড়া অন্য কিছু রঙ করুন।
  3. বোর্ডে একটি প্রতিরোধক (অনুসন্ধান এবং ক্লিক-ড্র্যাগ) রাখুন। এটি সার্কিটটি সম্পূর্ণ করে এবং সেন্সর এবং পিনকে রক্ষা করে।

    • এটি ঘুরিয়ে দিন যাতে এটি কলাম জুড়ে যায়।
    • রুটিবোর্ডে ডান পায়ের কলামের সাথে এক পা সংযুক্ত করুন
    • প্রতিরোধকের অপর প্রান্ত থেকে মাটিতে একটি তার স্থাপন করুন

      তারের রঙ কালো করুন।

  4. সমস্ত সংযোগ দুবার চেক করুন। যদি কিছু সঠিক জায়গায় না থাকে তবে এটি সঠিকভাবে কাজ করবে না।

ধাপ 5: কোড শুরু করুন

কোড শুরু করুন
কোড শুরু করুন
কোড শুরু করুন
কোড শুরু করুন
কোড শুরু করুন
কোড শুরু করুন

আসুন এই উপাদানটির কোড দেখি।

প্রথমে, এই ধাপে তৃতীয় চিত্রটি দেখুন। এতে দুটি ফাংশন সহ কিছু কোড রয়েছে:

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

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

C ++ এ, সমস্ত ফাংশন তাদের রিটার্ন টাইপ, তারপর নাম, তারপর দুটি বৃত্তাকার বন্ধনী যা আর্গুমেন্টে পাস করতে ব্যবহার করা যেতে পারে, সাধারণত ভেরিয়েবল হিসাবে প্রদান করে। এই ক্ষেত্রে, রিটার্ন টাইপ অকার্যকর, বা কিছুই নয়। নাম সেটআপ এবং ফাংশন কোন যুক্তি লাগে।

Arduino বুট করার সময় সেটআপ ফাংশন একবার চলে (যখন আপনি এটি প্লাগ ইন করেন বা ব্যাটারি সংযুক্ত করেন)।

লুপ ফাংশনটি মিলিসেকেন্ড থেকে একটি ধ্রুবক লুপে চলে সেটআপ ফাংশনটি সম্পন্ন হয়।

Arduino রান করার সময় আপনি লুপ ফাংশনে যা কিছু রাখবেন তা চলবে। বাইরে যা কিছু আছে কেবল তখনই চলবে যখন ডাকা হবে। যেমন যদি আমরা সংজ্ঞায়িত করি এবং লুপের বাইরে অন্য একটি ফাংশনকে কল করি।

টাস্ক

Tinkercad এ বোতামটি দিয়ে কোড প্যানেল খুলুন। ব্লক ড্রপডাউনকে টেক্সটে পরিবর্তন করুন। সতর্কতা বাক্সে সম্মত হন যা পপ আপ হয়। এখন, এই ধাপে তৃতীয় চিত্রের পাঠ্য ছাড়া আপনি যা দেখছেন তা মুছুন।

পরিবর্তনশীল

শুরু করার জন্য, আমাদের কিছু ভেরিয়েবল বরাদ্দ করতে হবে যাতে আমরা আমাদের কোডকে সত্যিই দক্ষ করে তুলি।

ভেরিয়েবলগুলি বালতির মতো যা শুধুমাত্র একটি বস্তু ধরে রাখতে পারে (C ++ যাকে আমরা বস্তু-ভিত্তিক বলি)। হ্যাঁ, আমাদের অ্যারে আছে, কিন্তু এগুলি বিশেষ ভেরিয়েবল এবং আমরা তাদের সম্পর্কে পরে কথা বলব। যখন আমরা একটি ভেরিয়েবল বরাদ্দ করি, তখন আমাদের বলতে হবে এটি কোন ধরনের, তারপর এটিকে একটি মান দিন। এটা এই মত দেখাচ্ছে:

int someVar = A0;

সুতরাং, আমরা একটি পরিবর্তনশীল বরাদ্দ করেছি এবং এটি টাইপ int দিয়েছি। একটি int একটি পূর্ণসংখ্যা বা একটি পূর্ণ সংখ্যা।

"কিন্তু আপনি একটি সম্পূর্ণ সংখ্যা ব্যবহার করেননি!", আমি আপনাকে বলতে শুনেছি। সেটা সত্য.

Arduino আমাদের জন্য বিশেষ কিছু করে যাতে আমরা A0 কে পূর্ণসংখ্যা হিসাবে ব্যবহার করতে পারি, কারণ অন্য একটি ফাইলে এটি A0 কে পূর্ণসংখ্যা হিসাবে সংজ্ঞায়িত করে, তাই আমরা A0 ধ্রুবকটি ব্যবহার করতে পারি এই পূর্ণসংখ্যাটি উল্লেখ না করেই যে এটি কি। যদি আমরা শুধু 0 টাইপ করি, আমরা 0 অবস্থানে ডিজিটাল পিন উল্লেখ করব, যা কাজ করবে না।

সুতরাং, আমাদের কোডের জন্য আমরা সংযুক্ত সেন্সরের জন্য একটি পরিবর্তনশীল লিখব। যদিও আমি এটিকে একটি সহজ নাম দেওয়ার পরামর্শ দিচ্ছি, এটি আপনার উপর নির্ভর করে।

আপনার কোড এই মত হওয়া উচিত:

int lightSensor = A0;

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

এখন, আসুন Arduino কে সেই পিনে সেন্সরটি কীভাবে পরিচালনা করতে হয় তা বলি। আমরা পিন মোড সেট করার জন্য সেটআপের ভিতরে একটি ফাংশন চালাব এবং Arduino কে বলব এটি কোথায় খুঁজতে হবে।

int lightSensor = A0;

অকার্যকর সেটআপ () {পিনমোড (লাইটসেন্সর, ইনপুট); } অকার্যকর লুপ () {}

pinMode ফাংশন Arduino কে বলে যে পিন (A0) একটি INPUT পিন হিসাবে ব্যবহার করা হবে। লক্ষ্য করুন উট কেস ইউসেড (দেখুন প্রতিটি প্রথম অক্ষর একটি মূলধন, যেমন এতে কুঁজ আছে, তাই… উট…!) ভেরিয়েবল এবং ফাংশন নামের জন্য। এটি একটি কনভেনশন এবং অভ্যস্ত হওয়া ভাল।

অবশেষে, কিছু ডেটা পেতে analogRead ফাংশন ব্যবহার করা যাক।

int lightSensor = A0;

অকার্যকর সেটআপ () {পিনমোড (লাইটসেন্সর, ইনপুট); } void loop () {int reading = analogRead (lightSensor); }

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

int lightSensor = A0;

অকার্যকর সেটআপ () {// সেট পিন মোড পিনমোড (লাইটসেন্সর, ইনপুট); // সিরিয়াল লাইব্রেরি যোগ করুন Serial.begin (9600); } অকার্যকর লুপ () {// সেন্সর পড়ুন int reading = analogRead (lightSensor); // মনিটরের মান প্রিন্ট করুন Serial.print ("Light:"); Serial.println (পড়া); // পরবর্তী লুপ 3 সেকেন্ড বিলম্ব (3000) বিলম্ব করুন; }

কিছু নতুন জিনিস! প্রথমে, আপনি এইগুলি দেখতে পাবেন:

// এটি একটি মন্তব্য

আমরা আমাদের কোড কি করছে তা অন্যদের জানাতে মন্তব্য ব্যবহার করি। আপনার এইগুলি প্রায়শই ব্যবহার করা উচিত। কম্পাইলার এইগুলি পড়বে না এবং তাদের কোডে রূপান্তর করবে।

এখন, আমরা লাইন সহ সিরিয়াল লাইব্রেরি যোগ করেছি

Serial.begin (9600)

এটি একটি ফাংশনের উদাহরণ যা একটি যুক্তি নেয়। আপনি লাইব্রেরি সিরিয়ালকে ডেকেছিলেন তারপর একটি ফাংশন চালালেন (আমরা জানি বৃত্তাকার ধনুর্বন্ধনীগুলির কারণে এটি একটি ফাংশন) এবং একটি যুক্তি হিসাবে একটি পূর্ণসংখ্যায় পাস করে, সিরিয়াল ফাংশনটি 9600baud এ কাজ করার জন্য সেট করে। চিন্তা করবেন না কেন - শুধু জানি এটি কাজ করে, আপাতত।

পরবর্তী কাজটি আমরা করেছি সিরিয়াল মনিটরে প্রিন্ট করা। আমরা দুটি ফাংশন ব্যবহার করেছি:

// এটি একটি লাইন বিরতি ছাড়া সিরিয়াল প্রিন্ট (শেষে একটি এন্টার)

সিরিয়াল.প্রিন্ট ("আলো:"); // এটি একটি লাইন বিরতিতে রাখে তাই আমরা যখনই পড়ি এবং লিখি, এটি একটি নতুন লাইনে চলে যায় Serial.println (পড়া);

যা দেখা গুরুত্বপূর্ণ তা হল প্রত্যেকটির একটি আলাদা উদ্দেশ্য আছে। নিশ্চিত করুন যে আপনার স্ট্রিংগুলি ডাবল-কোট চিহ্ন ব্যবহার করে এবং আপনি কোলনের পরে স্থানটি ছেড়ে যান। এটি ব্যবহারকারীর জন্য পাঠযোগ্যতাকে সহায়তা করে।

অবশেষে, আমরা আমাদের লুপকে ধীর করতে এবং প্রতি তিন সেকেন্ডে এটি একবার পড়ার জন্য বিলম্ব ফাংশনটি ব্যবহার করেছি। এটি একটি সেকেন্ডের হাজার হাজার মধ্যে লেখা হয়। এটি প্রতি 5 সেকেন্ডে শুধুমাত্র একবার পড়ার জন্য পরিবর্তন করুন।

দারুণ! আমরা যাই!

ধাপ 6: সিমুলেশন

সিমুলেশন
সিমুলেশন
সিমুলেশন
সিমুলেশন
সিমুলেশন
সিমুলেশন

সিমুলেশন চালানোর মাধ্যমে সর্বদা কাজগুলি পরীক্ষা করুন। এই সার্কিটের জন্য, আপনাকে সিমুলেটরটি খুলতে হবে যাতে এটি কাজ করে এবং আপনার মানগুলি পরীক্ষা করে।

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

  • লাল ডিবাগিং উইন্ডোতে নির্দেশিত লাইনগুলিতে ফোকাস করুন যা আপনাকে উপস্থাপন করা হবে।
  • যদি আপনার কোড সঠিক হয় এবং সিমুলেশন এখনও কাজ না করে, আপনার ওয়্যারিং পরীক্ষা করুন।
  • পৃষ্ঠাটি পুনরায় লোড করুন - আপনার একটি অসম্পূর্ণ সিস্টেম/সার্ভার ত্রুটি থাকতে পারে।
  • কম্পিউটারে আপনার মুষ্টি ঝাঁকান, এবং আবার চেক করুন। সব প্রোগ্রামার এটি করে। সব। দ্য. সময়।

ধাপ 7: টেম্প সেন্সর আপ করুন

ওয়্যার আপ দ্য টেম্প সেন্সর
ওয়্যার আপ দ্য টেম্প সেন্সর

আমি ধরে নিচ্ছি আপনি এখন সঠিক পথে আছেন। এগিয়ে যান এবং ছবির পরামর্শ অনুযায়ী তাপমাত্রা সেন্সরটি সংযুক্ত করুন। আলোর জন্য একই স্থানে 5V এবং GND তারের বসানো লক্ষ্য করুন। এটা ঠিক আছে. এটি একটি সমান্তরাল সার্কিটের মতো এবং সিমুলেটরে সমস্যা সৃষ্টি করবে না। একটি প্রকৃত সার্কিটে, আপনার আরও ভাল বিদ্যুৎ ব্যবস্থাপনা এবং সংযোগ প্রদানের জন্য একটি ব্রেকআউট বোর্ড বা ieldাল ব্যবহার করা উচিত।

এখন, কোড আপডেট করা যাক।

টেম্প সেন্সর কোড

এটি একটু বেশি চতুর, কিন্তু শুধুমাত্র কারণ আমরা কিছু গণিত করতে হবে রিডিং রূপান্তর। এটা খুব খরাপ নয়.

int lightSensor = A0;

int tempSensor = A1; অকার্যকর সেটআপ () {// সেট পিন মোড পিনমোড (লাইটসেন্সর, ইনপুট); // সিরিয়াল লাইব্রেরি যোগ করুন Serial.begin (9600); } অকার্যকর লুপ () {// টেম্প সেন্সর // এক লাইনে দুটি ভেরিয়েবল তৈরি করা - ওহ দক্ষতা! // একটি দশমিক ফ্লোট ভোল্টেজ, ডিগ্রি সি সংরক্ষণ করতে ভাসা var; // পিনের মান পড়ুন এবং 0 - 5 থেকে একটি রিডিং এ রূপান্তর করুন // মূলত ভোল্টেজ = (5/1023 = 0.004882814); ভোল্টেজ = (analogRead (tempSensor) * 0.004882814); // ডিগ্রী সি ডিগ্রিতে রূপান্তর করুন সি = (ভোল্টেজ - 0.5) * 100; // সিরিয়াল মনিটরে মুদ্রণ করুন Serial.print ("Temp:"); সিরিয়াল.প্রিন্ট (ডিগ্রি সি); Serial.println ("oC"); // সেন্সর পড়ুন int reading = analogRead (lightSensor); // মনিটরের মান প্রিন্ট করুন Serial.print ("Light:"); Serial.println (পড়া); // পরবর্তী লুপ 3 সেকেন্ড বিলম্ব (3000) বিলম্ব করুন; }

আমি কোডে কিছু আপডেট করেছি। আসুন তাদের মাধ্যমে পৃথকভাবে চলি।

প্রথমে, আমি লাইন যোগ করেছি

int tempSensor = A1;

লাইটসেন্সরের মতই, আমি একটি ভেরিয়েবলে মান সংরক্ষণ করতে চাই যাতে পরে এটি সহজ হয়। যদি আমাকে এই সেন্সরের অবস্থান পরিবর্তন করতে হয় (যেমন বোর্ডটি পুনরায় চালু করা) তবে আমাকে কেবল কোডের একটি লাইন পরিবর্তন করতে হবে, A0 বা A1 ইত্যাদি পরিবর্তন করার জন্য পুরো কোডবেসে সার্চ করতে হবে না।

তারপরে, আমরা একটি ফ্লোটে পড়া এবং তাপমাত্রা সংরক্ষণ করার জন্য একটি লাইন যুক্ত করেছি। এক লাইনে দুটি ভেরিয়েবল লক্ষ্য করুন।

ভাসা ভোল্টেজ, ডিগ্রী সি;

এটি সত্যিই সহায়ক কারণ এটি আমাকে যে লাইনগুলি লিখতে হবে তার সংখ্যা হ্রাস করে এবং কোডটি গতি বাড়ায়। যদিও ত্রুটিগুলি খুঁজে পাওয়া কঠিন হতে পারে।

এখন, আমরা পড়ব এবং এটি সংরক্ষণ করব, তারপর আমাদের আউটপুট ভ্যালুতে রূপান্তর করব।

ভোল্টেজ = (analogRead (tempSensor) * 0.004882814);

ডিগ্রী সি = (ভোল্টেজ - 0.5) * 100;

এই দুটি লাইন কঠিন মনে হচ্ছে, কিন্তু প্রথম দিকে আমরা পড়ছি এবং এটি 0.004 দ্বারা গুণ করছি … কারণ এটি 1023 (এনালগ পড়া এই মানটি ফেরত দেয়) 5 এর মধ্যে একটি পাঠে রূপান্তরিত করে।

সেখানে দ্বিতীয় লাইন দশমিক বিন্দু সরানোর জন্য সেই পড়াকে 100 দ্বারা গুণ করে। এটি আমাদের তাপমাত্রা দেয়। ঝরঝরে!

ধাপ 8: পরীক্ষা এবং চেকিং

পরীক্ষা এবং চেকিং
পরীক্ষা এবং চেকিং

সমস্ত জিনিস পরিকল্পনা করতে যাচ্ছে, আপনার একটি কাজের সার্কিট থাকা উচিত। সিমুলেশন চালিয়ে এবং সিরিয়াল মনিটর ব্যবহার করে পরীক্ষা করুন। যদি আপনার ত্রুটি থাকে, চেক করুন, আবার চেক করুন এবং আপনার মুষ্টি ঝাঁকান।

তুমি কি এট তৈরি করেছ? শেয়ার করুন এবং আমাদের আপনার গল্প বলুন!

এটি চূড়ান্ত সার্কিট আপনার জন্য এমবেডেড করা হয়েছে যাতে আপনি চূড়ান্ত সৃষ্টি খেলতে/পরীক্ষা করতে পারেন। টিউটোরিয়াল শেষ করার জন্য ধন্যবাদ!

প্রস্তাবিত: