সুচিপত্র:

Arduino তারিখ/সময় চক্রান্ত/লগিং Millis () এবং PfodApp ব্যবহার করে: 11 ধাপ
Arduino তারিখ/সময় চক্রান্ত/লগিং Millis () এবং PfodApp ব্যবহার করে: 11 ধাপ

ভিডিও: Arduino তারিখ/সময় চক্রান্ত/লগিং Millis () এবং PfodApp ব্যবহার করে: 11 ধাপ

ভিডিও: Arduino তারিখ/সময় চক্রান্ত/লগিং Millis () এবং PfodApp ব্যবহার করে: 11 ধাপ
ভিডিও: Arduino Bangla Tutorial Part - 49: How to use RTC Module with Arduino | DS1307 RTC Module 2024, নভেম্বর
Anonim
Arduino তারিখ/সময় চক্রান্ত/লগিং Millis () এবং PfodApp ব্যবহার করে
Arduino তারিখ/সময় চক্রান্ত/লগিং Millis () এবং PfodApp ব্যবহার করে

আরডুইনো বা অ্যান্ড্রয়েড প্রোগ্রামিংয়ের প্রয়োজন নেই।

ভূমিকা

এই টিউটোরিয়ালটি আপনাকে দেখায় যে কিভাবে আপনার আরডুইনো মিলিস () টাইমস্ট্যাম্প ব্যবহার করে আপনার অ্যান্ড্রয়েড মোবাইলে ডেটা এবং সময় পপড করতে হবে pfodApp ব্যবহার করে।

কোন Arduino বা অ্যান্ড্রয়েড প্রোগ্রামিং প্রয়োজন নেই। pfodApp পর্যাপ্ত ডেটা লগ করে যাতে আপনি পরে একটি স্প্রেডশীটে তারিখ/সময় প্লট পুনরুত্পাদন করতে পারেন।

কোন RTC বা GPS মডিউলের প্রয়োজন নেই, তবে যদি আপনার Arduino প্রকল্পের একটি RTC (রিয়েল টাইম ক্লক) বা একটি GPS মডিউল থাকে সেগুলিও ব্যবহার করা যেতে পারে। সেই ক্ষেত্রে pfodApp প্লটগুলি টাইমজোন, RTC ড্রিফট এবং GPS অনুপস্থিত লিপ সেকেন্ডের জন্য স্বয়ংক্রিয়ভাবে সঠিক হবে। এই সংশোধনের জন্য কোন বিশেষ Arduino কোডের প্রয়োজন নেই। PfodApp- এর সাথে বরাবরের মতো, প্রাপ্ত ডেটা ঠিক যেমন লগ ইন করা হয়, ঠিক করা হয় না, তবে লগ ফাইলটিতে যথেষ্ট তথ্য থাকে যাতে আপনি আপনার কম্পিউটারে লগ ডাউনলোড করার সময় এই সংশোধনগুলি প্রয়োগ করতে পারেন। এই পোস্ট প্রক্রিয়াকরণের উদাহরণগুলির জন্য নীচে দেখুন।

X-axis ফর্ম্যাটিংয়ের সময় এবং তারিখের বিস্তৃত বৈচিত্র্য সমর্থিত, যা সবই আপনার Arduino স্কেচে সংক্ষিপ্ত পাঠ্য স্ট্রিং দ্বারা নিয়ন্ত্রিত। কোন অ্যান্ড্রয়েড প্রোগ্রামিং এর প্রয়োজন নেই।

pfodApp ওয়াইফাই, ব্লুটুথ ক্লাসিক, BLE এবং SMS এর মাধ্যমে সংযুক্ত হবে। বিনামূল্যে pfodDesigner বিভিন্ন ধরণের বোর্ডের সাথে সংযোগ স্থাপনের জন্য তারিখ/সময় চক্রান্ত/লগিং এর জন্য সম্পূর্ণ Arduino স্কেচ তৈরি করে। কোন Arduino প্রোগ্রামিং প্রয়োজন হয় না।

এই নির্দেশযোগ্য একটি Adafruit Feather52 ব্যবহার করবে উদাহরণ হিসাবে Arduino বোর্ড, যা BLE এর মাধ্যমে সংযোগ করে।

এই নির্দেশযোগ্য তিনটি ক্ষেত্রে কভার করে:- 1) আপনার মাইক্রোপ্রসেসর প্রকল্পে শুধুমাত্র মিলিসেকেন্ড টাইমস্ট্যাম্প আছে- মিলিস () 2) আপনার মাইক্রোপ্রসেসর প্রকল্পের একটি রিয়েল টাইম ক্লক (RTC) আছে- pfodApp স্বয়ংক্রিয়ভাবে ড্রিফট সংশোধন করে। 3) আপনার মাইক্রোপ্রসেসর প্রকল্পের একটি জিপিএস মডিউল আছে - pfodApp স্বয়ংক্রিয়ভাবে লিপ সেকেন্ডের জন্য সংশোধন করে (যেমন বর্তমানে 18 সেকেন্ড 2018)।

ধাপ 1: Arduino মিলিসেকেন্ড টাইমস্ট্যাম্প ব্যবহার করে, মিলিস ()

তারিখ এবং সময়ের জন্য মিলিসেকেন্ড ব্যবহার করার দুটি অংশ আছে। একটি হল অতিবাহিত সময় বা তারিখ/সময়ের বিরুদ্ধে ডেটা চক্রান্তের জন্য এবং অন্য অংশটি লগ করা কাঁচা ডাটা মিলিসেকেন্ড টাইমস্ট্যাম্প থেকে তারিখ এবং সময় পুনরায় তৈরি করছে। pfodApp pfodDevice (Arduino micro) থেকে প্রাপ্ত কাঁচা তথ্য পরিবর্তন করে না। এটি ঠিক প্রাপ্ত বাইটগুলি লগ করে।

প্রথমে আপনার মাইক্রোর জন্য একটি Arduino স্কেচ তৈরি করতে বিনামূল্যে pfodDesigner ব্যবহার করুন যা প্লস/লগিংয়ের জন্য মিলিসেকেন্ড এবং ডেটা পরিমাপ pfodApp- এ পাঠাবে। এই উদাহরণটি Adafruit Feather 52 BLE বোর্ডের জন্য একটি মেনু তৈরি করে যা A0 পড়ে। Adafruit Feather nRF52 LE - pfodApp- এর সাথে কাস্টম কন্ট্রোল এর টিউটোরিয়ালটি pfodDesigner ধাপের মধ্য দিয়ে যায় যাতে Feather nRF52 এর জন্য একটি মেনু তৈরি করা হয় যার মধ্যে একটি চার্ট বোতাম রয়েছে, তাই আরো বিস্তারিত জানার জন্য এটি দেখুন। এই টিউটোরিয়ালে আমরা শুধু একটি চার্ট বোতাম যুক্ত করব এবং A0 রিডিংগুলিকে অতিবাহিত সময় এবং তারিখ/সময়ের বিপরীতে নতুন এক্স-অক্ষ বিন্যাস বিকল্পগুলি ব্যবহার করব।

এই টিউটোরিয়ালের প্রথম অংশটি আপনার অ্যান্ড্রয়েড মোবাইলে একটি নমুনা তারিখ/সময় চার্ট তৈরি করতে বিনামূল্যে pfodDesigner ব্যবহার করে যাবে। যখন আপনি ডিসপ্লেতে সন্তুষ্ট হন তখন আপনি Arduino স্কেচ তৈরি করতে পারেন যা pfodApp- এর সাথে সংযোগ স্থাপন করলে পুনরুত্পাদন করবে। কোন Android প্রোগ্রামিং এর প্রয়োজন নেই এবং যেহেতু pfodDesigner বিভিন্ন Arduino বোর্ডের জন্য সম্পূর্ণ Arduino স্কেচ তৈরি করে, তাই কোন Arduino প্রোগ্রামিং এর প্রয়োজন নেই।

পদক্ষেপ 2: মেনুতে একটি চার্ট যুক্ত করা

মেনুতে একটি চার্ট যোগ করা
মেনুতে একটি চার্ট যোগ করা
মেনুতে একটি চার্ট যোগ করা
মেনুতে একটি চার্ট যোগ করা
মেনুতে একটি চার্ট যোগ করা
মেনুতে একটি চার্ট যোগ করা
মেনুতে একটি চার্ট যোগ করা
মেনুতে একটি চার্ট যোগ করা

Google Play থেকে pfodDesigner অ্যাপটি ডাউনলোড করুন, এটি খুলুন এবং "নতুন মেনু শুরু করুন" এ ক্লিক করুন

"টার্গেট সিরিয়াল" এ ক্লিক করুন এবং তারপরে "ব্লুটুথ লো এনার্জি" বোতামে কিছু 11 BLE বোর্ডের তালিকা প্রদর্শন করুন (অন্যান্য পছন্দগুলি দেখতে নিচে স্ক্রোল করুন)। Adafruit Bluefruit Feather52 এ নির্বাচন করুন।

সম্পাদনা মেনুতে ফিরে যান এবং "সম্পাদনা প্রম্পট" এ ক্লিক করুন এবং এই মেনুর জন্য একটি উপযুক্ত প্রম্পট সেট করুন, যেমন "Feather52" এবং টেক্সট বোল্ড এবং সাইজ +7। পটভূমির রঙ 'ডিফল্ট' সাদা হিসাবে রেখে দেওয়া হয়েছিল

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

এটি আপনাকে মেনুতে একটি বোতাম দেয় যা চার্ট স্ক্রিনটি খুলবে।

ধাপ 3: প্লট উৎস এবং লেবেল সম্পাদনা

প্লট উৎস এবং লেবেল সম্পাদনা
প্লট উৎস এবং লেবেল সম্পাদনা
প্লট উৎস এবং লেবেল সম্পাদনা
প্লট উৎস এবং লেবেল সম্পাদনা
প্লট উৎস এবং লেবেল সম্পাদনা
প্লট উৎস এবং লেবেল সম্পাদনা
প্লট উৎস এবং লেবেল সম্পাদনা
প্লট উৎস এবং লেবেল সম্পাদনা

এডিটিং প্লট স্ক্রিন খোলার জন্য "A0 এর তারিখ/সময় প্লট" বোতামে ক্লিক করুন, যেখানে আপনি চার্ট লেবেল, এক্স-অক্ষ বিন্যাস, প্লট ডেটা ব্যবধান এবং (স্ক্রলিং করে) প্লট সেটিংস নিজেরাই অ্যাক্সেস করতে পারেন। উপযুক্ত কিছুতে চার্ট লেবেল সম্পাদনা করুন, যেমন "A0 ভোল্ট"।

নিচে স্ক্রোল করুন এবং প্লট 2 এবং 3 এর জন্য এডিট প্লট খুলুন এবং প্লট লুকান থেকে চার্ট ডিসপ্লে থেকে তাদের অপসারণ করতে ক্লিক করুন।

তারপরে "প্লট 1 সম্পাদনা করুন" এ ক্লিক করুন এবং একটি প্লট লেবেল (উদা A A0), yAxis ইউনিট (উদা Vol ভোল্ট) সেট করুন, সর্বোচ্চ 3.6V প্রদর্শন করুন এবং I/O পিন A0 এর সাথে সংযুক্ত করুন।

পিছনে স্ক্রোল করুন এবং সাম্প্রতিক 0 নমুনা ডেটা পয়েন্টগুলিতে "চার্ট প্রিভিউ" এ ক্লিক করুন, 1 সেকেন্ডের ব্যবধানে, কয়েক মিনিটের মধ্যে অতিবাহিত সময়ের বিরুদ্ধে চক্রান্ত করা হয়েছে: সেকেন্ড।

সমস্ত অতিবাহিত সময়ের প্লটগুলির জন্য শূন্য ইউনিটগুলির নেতৃত্ব দেওয়া হয় না তাই এই প্লটে শুধুমাত্র সেই সময়> 1 মিনিট লিডিং মিনিট দেখানো হয়।

ধাপ 4: তারিখ/সময় বিন্যাস নির্বাচন করা

তারিখ/সময় বিন্যাস নির্বাচন করা
তারিখ/সময় বিন্যাস নির্বাচন করা
তারিখ/সময় বিন্যাস নির্বাচন করা
তারিখ/সময় বিন্যাস নির্বাচন করা
তারিখ/সময় বিন্যাস নির্বাচন করা
তারিখ/সময় বিন্যাস নির্বাচন করা

অতিবাহিত সময়ের প্লটগুলির জন্য নেতৃস্থানীয় ইউনিট সময় বাড়ার সাথে সাথে বাড়তে থাকে। এর একটি উদাহরণ দেখতে "এডিটিং প্লট" স্ক্রিনে ফিরে যান এবং প্লট ডেটার ব্যবধান 15 মিনিট (এই স্ক্রিনের নীচে) বাড়ান

তারপর একই নমুনা ডেটা দেখানোর জন্য চার্ট প্রিভিউতে ক্লিক করুন কিন্তু এখন নমুনার মধ্যে 15 মিনিটের ব্যবধানে। আপনি দেখতে পাচ্ছেন মিনিটের মিনিট অংশ: ss শুধু বাড়তে থাকে।

এখন ফিরে যান এবং এক্স-অক্ষ বোতামে ক্লিক করুন সমস্ত সম্ভাব্য এক্স-অক্ষ ডেটা/সময় ফরম্যাটের একটি ছোট নির্বাচন দেখানোর জন্য (আরও নিচে স্ক্রোল করুন)

উপরে বিভিন্ন এক্স-অক্ষ ফরম্যাট ব্যবহার করে চার্ট প্রিভিউ নির্বাচন করা হয়েছে।

এখানে দেখানো তারিখ/সময় প্লটগুলি 'স্থানীয়' টাইমজোনে রয়েছে। ইউটিসিতে তারিখ/সময় চক্রান্ত করার জন্য ফরম্যাট বিকল্পও রয়েছে। সম্ভাব্য তারিখ/সময় বিন্যাস বিকল্পগুলির সম্পূর্ণ সেটের জন্য pfodSpecification.pfd দেখুন।

ধাপ 5: Arduino স্কেচ তৈরি করুন এবং পরীক্ষা করুন

Arduino স্কেচ তৈরি করুন এবং পরীক্ষা করুন
Arduino স্কেচ তৈরি করুন এবং পরীক্ষা করুন
Arduino স্কেচ তৈরি করুন এবং পরীক্ষা করুন
Arduino স্কেচ তৈরি করুন এবং পরীক্ষা করুন

একবার আপনি আপনার চার্টের বিন্যাস এবং ডেটা ব্যবধানে খুশি হয়ে গেলে, আপনি "সম্পাদনা মেনু_1" স্ক্রিনে যেতে পারেন এবং স্ক্রল ডাউন এবং আপনার নির্বাচিত টার্গেট বোর্ডের জন্য "জেনারেট কোড" করতে পারেন। এখানে 1sec ডেটা অন্তর এবং একটি মিমি ব্যবহার করে Adafruit Feather52 এর জন্য একটি নমুনা স্কেচ: ss অতিবাহিত সময় বিন্যাস, pfodFeather52_timeplot.ino

উপরে Feather52 থেকে A0 এর একটি প্লট

বিন্যাসটি সপ্তাহের দিন hr: mins: sec (~ E HH: mm: ss) এ পরিবর্তন করা এবং কোডটি পুনরায় জেনারেট করা (pfodFeather52_dateplot.ino) উপরের দ্বিতীয়টির মতো একটি প্লট দেয়।

আপনি পরবর্তী বর্ণনা অনুযায়ী, আপনার Arduino স্কেচে সরাসরি এক্স-অক্ষ বিন্যাস সম্পাদনা করতে পারেন।

ধাপ 6: PfodApp কিভাবে মিলিস () থেকে তারিখ/সময় চক্রান্ত করে?

যখন pfodApp সংযোগ করে, এটি তার 'স্থানীয়' এবং UTC সময় মনে রাখে এবং pfodDevice (Arduino বোর্ডের) বর্তমান প্লট ডেটা টাইমস্ট্যাম্পের অনুরোধ করে। এই তথ্য ব্যবহার করে pfodApp মিলিসেকেন্ড টাইমস্ট্যাম্পগুলিকে অতিবাহিত সময় হিসাবে চক্রান্ত করতে পারে যেমন মিলিসেকেন্ডকে ঘন্টা মিনিট সেকেন্ডে রূপান্তর করতে পারে, অথবা মিলিসেকেন্ড টাইমস্ট্যাম্পগুলি যখন সংযোগ তৈরি করা হয়েছিল এবং pfodDevice এর বর্তমান সময় অনুরোধ করা হয়েছিল তার সাথে সম্পর্কিত তারিখ এবং সময় চক্রান্ত করতে পারে।

Arduino উত্পন্ন স্কেচ (উদা p pfodFeather52_dateplot.ino) খুঁজছেন, সেখানে তিনটি ছোট বিট কোড আছে যা প্লটের আরডুইনো দিক পরিচালনা করে।

লুপ () কোড বিভাগ যা pfodApp এর {@} বর্তমান সময়ের অনুরোধ পরিচালনা করে

// হ্যান্ডেল {@} request} অন্যথায় যদি ('@' == cmd) {// pfodApp অনুরোধ 'বর্তমান' সময় plot_mSOffset = মিলিস (); // অফসেট কাঁচা ডাটা টাইমস্ট্যাম্প parser.print (F ("{@` 0} ")) হিসাবে বর্তমান মিলিস ক্যাপচার করুন; // 'বর্তমান' কাঁচা ডেটা মিলিসেকেন্ড হিসাবে 0 ফেরত দিন

আপনি কেবল মিলিস () এর বর্তমান মান ফিরিয়ে দিতে পারেন, কিন্তু মিলিস () প্রতি 49.7 দিনে 0 এর কাছাকাছি আবৃত হয়, যা প্লটটিকে পিছনের দিকে লাফিয়ে তুলবে। তাই পরিবর্তে কোডটি বর্তমান মিলিস () মানটি মনে রাখে যখন {@} অনুরোধ করা হয়েছিল, এবং {@`0} প্রদান করে অর্থাৎ শূন্যের বর্তমান মিলিসেকেন্ড টাইমস্ট্যাম্প। তারপর কাঁচা ডাটা পয়েন্ট পাঠানোর সময় স্কেচ ব্যবহার করে

plot_1_var = analogRead (A0); // প্লট করতে ইনপুট পড়ুন // plot_2_var প্লট লুকানো তাই এখানে কোন ডেটা বরাদ্দ করা হয়নি // plot_3_var প্লট লুকানো আছে তাই এখানে কোন ডেটা বরাদ্দ করা হয়নি // CSV ফর্ম্যাটে parser.print (millis ()-plot_mSOffset); // মিলিসেকেন্ডে সময় পাঠান …।

যাতে ডেটা সহ পাঠানো মিলিসেকেন্ড টাইমস্ট্যাম্প 0 থেকে শুরু হয় এবং 49.7 দিন পর্যন্ত বৃদ্ধি পায়। যদি আপনি 49.7 দিনের জন্য ক্রমাগত সংযুক্ত থাকেন তবে আপনি দেখতে পাবেন যে প্লটটি day 50 দিন দ্বারা পিছনে চলে যাবে। প্রতি 49.7 দিনে একবার সংযোগ বিচ্ছিন্ন করা এবং পুনরায় সংযোগ করা এড়ায়।

তারিখ/সময় চক্রান্তের তৃতীয় অংশ হল প্লট বার্তা।

} অন্যথায় যদি ('A' == cmd) {// ব্যবহারকারী চাপেন - 'তারিখ/সময় প্লট A0' // মেনু_1 এর প্রধান মেনুতে // রিটার্ন প্লটিং মেসেজ। parser.print (F ("{= A0 Volts ~ E HH: mm: ss | date | A0 ~~~ Volts ||}"));

যখন ব্যবহারকারী "A0 এর তারিখ/সময় প্লট" বোতাম টিপেন, pfodApp pfodDevice এ {A} cmd পাঠায় এবং pfodDevice প্লট বার্তার সাথে সাড়া দেয়, {=… {= A0 Volts ~ E HH: mm: ss | তারিখ | A0 ~~~ Volts ||} যার মধ্যে X- অক্ষ বিন্যাস E HH: mm: ss রয়েছে

জাভা সিম্পলডেটফরম্যাট ফরম্যাট এখানে গ্রহণযোগ্য। pfodApp ডেটা লগিং এবং প্লটিং এবং pfodSpecification.pdf এর প্লট মেসেজের বিস্তারিত বিবরণ আছে।

ধাপ 7: আপনার কম্পিউটারে তারিখ/সময় প্লট পুনরুত্পাদন

আপনার কম্পিউটারে তারিখ/সময় প্লট পুনরুত্পাদন
আপনার কম্পিউটারে তারিখ/সময় প্লট পুনরুত্পাদন
আপনার কম্পিউটারে তারিখ/সময় প্লট পুনরুত্পাদন
আপনার কম্পিউটারে তারিখ/সময় প্লট পুনরুত্পাদন
আপনার কম্পিউটারে তারিখ/সময় প্লট পুনরুত্পাদন
আপনার কম্পিউটারে তারিখ/সময় প্লট পুনরুত্পাদন

ডিফল্টরূপে, pfodApp আপনার মোবাইলে একটি লগ ফাইলে সমস্ত আগত কাঁচা ডেটা লগ করে, যদি না আপনি সংযোগ সম্পাদনা পর্দায় এই লগিং অক্ষম করেন, pfodAppForAndroidGettingStarted.pdf দেখুন

যখন আপনি pfodApp সম্পাদনা করেন, লগ ফাইলের অবস্থান এবং নাম সহ একটি সংক্ষিপ্ত বার্তা প্রদর্শিত হয়, যেমন /pfodAppRawData/pfod_bluefruit52।

এখানে একটি লগ ফাইলের প্রথম কয়েকটি লাইন।

// pfodApp V3.0.360, স্থানীয় সময়, UTC, mS প্রতি দিন, pfod bluefruit52 বর্তমান সময় (mS), pfod bluefruit52 বর্তমান সময়, // সংযুক্ত, 2019/04/20 11: 32: 50.238, 2019/04/20 01: 32: 50.238, 86400000, 0, 366, 0.25,, 1366, 0.29,, 2366, 0.31,, 3366, 0.33,, 4366, 0.33, উপরে আপনি 'লোকাল' এবং ইউটিসি সময় দেখতে পারেন যে pfodApp Feather52 এর সাথে সংযুক্ত এবং mS এ বর্তমান সময় যা Feather52 {@..} প্রতিক্রিয়ার মাধ্যমে রিপোর্ট করেছে। শেষ কলামটি ফাঁকা, কারণ কোন RTC বা GPS নেই এবং তাই yyyy/MM/dd সময়ে কোন বর্তমান সময় Feather52 দ্বারা রিপোর্ট করা হয়নি।

অতিবাহিত সময়ের বিপরীতে ডেটা চক্রান্ত করতে, মিলিসেকেন্ড টাইম স্ট্যাম্প থেকে বর্তমান সময় (mS) বিয়োগ করুন এবং তারপর mS দ্বারা প্রতিদিনের মান দিয়ে ভাগ করুন। এখানে যোগ করা সূত্র এবং ফলাফল চক্রান্ত সহ স্প্রেডশীট। স্প্রেডশীট, নীচে, (pfod_bluefruit52.xls) হল একটি OpenOffice স্প্রেডশীট যা এক্সেল ফরম্যাটে সংরক্ষিত।

ওপেনঅফিসে, প্লটটি একটি বিক্ষিপ্ত প্লট এবং প্লটের x- অক্ষ HH: MM: SS দ্রষ্টব্য: স্প্রেডশীটের তারিখ/সময় বিন্যাসগুলি pfodApp দ্বারা ব্যবহৃত প্লট বিন্যাসের মতো নয়। উদাহরণস্বরূপ pfodApp- এ MM মাস এবং মিমি মিনিট।

তারিখ এবং সময়ের বিপরীতে চক্রান্ত করতে, আপনাকে কেবল স্প্রেডশীটের সময় এবং রিপ্লটের সাথে সংযোগের সময় যুক্ত করতে হবে। (pfod_bluefruit52_date.xls)

দ্রষ্টব্য: স্থানীয় সময় এবং ইউটিসি আমার স্প্রেডশীটে পাঠ্য হিসাবে আমদানি করা হয়েছিল তাই একটি সূত্র ব্যবহার করার আগে আমাকে অগ্রণী 'অপসারণ করতে হবে।

ধাপ 8: 49.7 দিনের মিলিস () সীমা কীভাবে এড়াবেন এবং কেন আপনার উচিত নয়

উপরে উল্লিখিত হিসাবে pfodApp কিভাবে মিলিস () থেকে প্লট তারিখ/সময়? কোডের কয়েকটি লাইন এটি এড়াতে পারে কিন্তু এটি সুপারিশ করা হয় না।

প্রথমে কীভাবে মোড়ানো এড়ানো যায়। টাইমস্ট্যাম্পগুলি চারপাশে মোড়ানো এবং HEX- এর সম্মিলিত ফলাফল মুদ্রণ করার জন্য আরেকটি স্বাক্ষরবিহীন int পরিবর্তনশীল যোগ করুন।

uint_t mSwrapCount = 0; uint32_t lastTimeStamp = 0;

… Plot_1_var = analogRead (A0); // চক্রান্তের জন্য ইনপুট পড়ুন // plot_2_var চক্রান্ত লুকানো আছে তাই এখানে কোন ডেটা বরাদ্দ করা হয়নি // plot_3_var প্লট লুকানো আছে তাই এখানে কোন ডেটা বরাদ্দ করা হয়নি // CSV ফর্ম্যাটে প্লট ডেটা পাঠান uint32_t timeStamp = millis ()-plot_mSOffset; যদি (timeStamp <lastTimeStamp) {// timeStamp 0 mSwrapCount ++ এ ফিরে যায়; // count to one add} lastTimeStamp = timeStamp; parser.print ("0x"); parser.print (msWrapCount, HEX); পার্সার.প্রিন্ট (টাইমস্ট্যাম্প, হেক্স); // হেক্সে মিলিসেকেন্ডে সময়…।

{@.. প্রতিক্রিয়া ফেরানোর সময় mSwrapCount সাফ করুন।

// হ্যান্ডেল {@} request} অন্যথায় যদি ('@' == cmd) {// pfodApp অনুরোধ 'বর্তমান' সময় plot_mSOffset = মিলিস (); // অফসেট কাঁচা ডাটা টাইমস্ট্যাম্প হিসাবে বর্তমান মিলিস ক্যাপচার করুন mSwrapCount = 0; // পরিষ্কার মোড়ানো গণনা। parser.print (F ("{@` 0} ")); // 'বর্তমান' কাঁচা ডেটা মিলিসেকেন্ড হিসাবে 0 ফেরত দিন

টাইমস্ট্যাম্পগুলি এখন পরবর্তী 40.7 দিন * 65536 ~ = 7308 বছরের জন্য 'সঠিক' মান দেবে।

pfodApp স্বয়ংক্রিয়ভাবে হেক্স টাইমস্ট্যাম্পগুলিকে চক্রান্তের জন্য রূপান্তর করবে এবং সেগুলি ঠিক যেমন প্রাপ্ত হবে, অর্থাৎ হেক্সে লগ ইন করবে। (OpenOffice) স্প্রেডশীটে আপনি এই সূত্রটি হেক্স স্ট্রিংকে A2 এ mS (যেখানে A1 কোন খালি ঘর) = HEX2DEC (প্রতিস্থাপন (A2; 1; 2; A1)) রূপান্তর করতে ব্যবহার করেন

কেন আপনি এটা করতে চান না

উপরে দেখানো হয়েছে, এমএস টাইমস্ট্যাম্পগুলি 50 দিনের বেশি দীর্ঘ করা সহজ। তবে আপনি সম্ভবত এটি করতে চান না কারণ তারা ক্রমবর্ধমান নির্ভুল হয়ে উঠছে। মাইক্রোতে মিলিস () ফলাফল তৈরিতে ব্যবহৃত একটি সাধারণ 16 মেগাহার্টজ স্ফটিক an 50ppm এর সঠিকতা (প্রতি মিলিয়ন অংশ)। এর মানে হল যে 49.7 দিন পরে মিলিসেকেন্ড টাইমস্ট্যাম্প 3 ½ মিনিট দ্বারা বেরিয়ে যেতে পারে এবং এটি স্ফটিক নির্ভুলতার উপর তাপমাত্রার প্রভাবকে উপেক্ষা করে।

সংক্ষিপ্ত সংযোগের সময়গুলিতে, এই ইন-নির্ভুলতা একটি সমস্যা নয় কারণ {@.. প্রতিক্রিয়া মিলিসেকেন্ড টাইমস্ট্যাম্পকে প্রতিটি পুন reসংযোগের তারিখ/সময়ে পুনরায় সিঙ্ক্রোনাইজ করে। যাইহোক আপনি যদি দীর্ঘ সময় (দিন) সংযুক্ত থাকতে চান এবং ক্রমাগত ডেটা লগ ইন করতে চান, তাহলে আপনার অন্তর্নির্মিত মিলিস (), যেমন আরটিসি বা জিপিএস মডিউলের চেয়ে সঠিক কিছু ব্যবহার করা উচিত।

ধাপ 9: একটি RTC (রিয়েল টাইম ক্লক) ব্যবহার করা

একটি RTC (রিয়েল টাইম ক্লক) ব্যবহার করা
একটি RTC (রিয়েল টাইম ক্লক) ব্যবহার করা
একটি RTC (রিয়েল টাইম ক্লক) ব্যবহার করা
একটি RTC (রিয়েল টাইম ক্লক) ব্যবহার করা

অনেকগুলি আরটিসি মডিউল পাওয়া যায়, আরও সঠিকগুলির মধ্যে একটি হল DS3231 উদা Adafruit এর DS3231 মডিউল। বিবৃত নির্ভুলতা +/- 2ppm 0 থেকে 40C এর উপরে। অর্থাৎ ~ +/- 5 সেকেন্ড/মাস।

আপনি যদি তারিখ/সময় টাইমস্ট্যাম্পযুক্ত ডেটা প্লট করতে চান, যেমন 2019/04/19 20: 4: 34, তারপর আপনাকে বর্তমান তারিখ/সময় ফেরত দিতে {@ প্রতিক্রিয়া পরিবর্তন করতে হবে, যেমন {@`0 ~ 2019/4/19 3: 33: 5}। আরটিসি মডিউল ব্যবহার করার জন্য pfodDesigner তৈরি স্কেচে প্রয়োগ করার জন্য এখানে কিছু নমুনা কোড পরিবর্তন করা হয়েছে, আপনি RTClib লাইব্রেরি ব্যবহার করছেন এবং RTC মডিউলটি আরম্ভ করার কোড যোগ করেছেন।

// হ্যান্ডেল {@} request} অন্যথায় যদি ('@' == cmd) {// pfodApp অনুরোধ 'বর্তমান' সময় plot_mSOffset = মিলিস (); // বর্তমান মিলিসকে অফসেট কাঁচা ডাটা টাইমস্ট্যাম্প পার্সার.প্রিন্ট (F ("{@` 0 "}) হিসাবে ক্যাপচার করুন; তারিখ/সময় DateTime now = rtc.now () sendDateTime (& now); // পাঠান yyyy/M/d/H: m: s to parser.print, pass address & as as arg। parser.print ('}'); // {@ প্রতিক্রিয়া যেমন {@ `0 ~ 2019/4/19 3: 33: 5}} এর সমাপ্তি…।

// পার্সার প্রিন্টে তারিখ পাঠান parser.print ('/'); parser.print (dt-> মাস (), DEC); parser.print ('/'); parser.print (dt-> দিন (), DEC); parser.print (''); parser.print (dt-> hour (), DEC); parser.print (':'); parser.print (dt-> মিনিট (), DEC); parser.print (':'); parser.print (dt-> সেকেন্ড (), DEC); }

অকার্যকর sendData () {যদি (plotDataTimer.isFinished ()) {plotDataTimer.repeat (); // ড্রিফট ছাড়া প্লট ডেটা টাইমার পুনরায় চালু করুন // আপনার লুপ ভেরিয়েবল থেকে ভেরিয়েবল প্লট করার মান নির্ধারণ করুন অথবা ADC ইনপুটগুলি পড়ুন plot_1_var = analogRead (A0); // চক্রান্তের জন্য ইনপুট পড়ুন // plot_2_var চক্রান্ত লুকানো আছে তাই এখানে কোন ডেটা বরাদ্দ করা হয়নি // plot_3_var প্লট লুকানো আছে তাই এখানে কোন ডেটা বরাদ্দ করা হয়নি // CSV ফরম্যাটে প্লট ডেটা পাঠান তারিখ এখন = rtc.now (); sendDateTime (এবং এখন); // পাঠিয়ে দিন yyyy/M/d/H: m: s পার্সারে। parser.print (','); parser.print (((float) (plot_1_var - plot_1_varMin)) * plot_1_scaling + plot_1_varDisplayMin); parser.print (','); // প্লট 2 লুকানো আছে। কোনো ডেটা পাঠানো হয়নি। parser.print (','); // প্লট 3 লুকানো আছে। কোনো ডেটা পাঠানো হয়নি। parser.println (); // CSV ডেটা রেকর্ডের শেষ}}

~ 2019/4/19 3: 33: 5 অংশটি {@ প্রতিক্রিয়া pfodApp কে জানতে দেয় যে pfodDevice বর্তমান তারিখ এবং সময় কি মনে করে। আপনার স্কেচ তারপরে yMd Hms টাইমস্ট্যাম্পের সাথে ডেটা পাঠাতে পারে এবং pfodApp সেগুলিকে সংযোগের সময় থেকে অতিবাহিত সময় হিসাবে অথবা তারিখ এবং সময় হিসাবে, আপনার নির্দিষ্ট এক্স-অক্ষ বিন্যাসের উপর নির্ভর করে প্লট করবে।

তারিখ এবং সময়ের বিরুদ্ধে ষড়যন্ত্র করার সময়, pfodApp প্লটের রুটিনটি আরটিসিতে যেকোনো 'ড্রিফট' এর জন্য সংশোধন করে মোবাইলের বর্তমান সময়ের সাথে pfodDevice এর রিপোর্ট করা বর্তমান সময়ের তুলনা করে। এই সংশোধনটি আপনার মোবাইলের স্থানীয় টাইমজোন থেকে আরটিসিকে আলাদা টাইমজোনে সেট করাও পরিচালনা করে। মিলিস () টাইমস্ট্যাম্পগুলি আরডুইনো মিলিসেকেন্ড টাইমস্ট্যাম্প ব্যবহার করে কাজ করছে, উপরের ধাপ 5।

এখানে একটি 8 দিনের সময়ের মধ্যে রুম তাপমাত্রার একটি স্প্রেডশীট, Office_Temp.xls যখন লগ ফাইল আমদানি করা হয়েছিল তখন প্রথম কলামটি YMD হিসেবে চিহ্নিত করা হয়েছিল যাতে পাঠ্যটি একটি তারিখ/সময়ে রূপান্তর করা যায়। স্থানীয় সময়, ইউটিসি এবং অফিস টেম্প বর্তমান সময়ের এন্ট্রিগুলিকে তারিখ এবং সময় হিসাবে ব্যাখ্যা করার জন্য আপনাকে এখনও অগ্রণী 'অপসারণ করতে হবে।

PfodApp যে প্লট দেখায় সেই একই প্লট পেতে, আপনাকে "সঠিক তারিখ/সময়" গণনা করতে হবে। এই ক্ষেত্রে RTC সময়টি মোবাইলের স্থানীয় সময়ের চেয়ে 2 সেকেন্ড পিছিয়ে থাকে, তাই প্রতিটি RTC টাইমস্ট্যাম্পে যোগ করা হয় (স্থানীয় সময় - অফিস টেম্প বর্তমান সময়) প্রকৃত স্থানীয় সময় পেতে।

অতিবাহিত সময়ের প্লটগুলির জন্য, (তারিখ/সময় টাইমস্ট্যাম্প-অফিস টাইম বর্তমান সময়) ধারণকারী একটি নতুন কলাম তৈরি করুন এবং চার্টে X- অক্ষ হিসাবে এটি ব্যবহার করুন (Office_TempElapsed.xls) প্রকৃতপক্ষে এই ক্ষেত্রে, pfodApp ভাল সময় অতিবাহিত সময় চার্ট তৈরি করে দিনের মধ্যে ঘন্টা: মিনিট: সেকেন্ড

ধাপ 10: একটি জিপিএস মডিউল ব্যবহার করা

জিপিএস মডিউল ব্যবহার করা একটি আরটিসি মডিউল ব্যবহারের অনুরূপ, জিপিএস মডিউলে মিলিসেকেন্ড পাওয়া যায়, বছর 2000 থেকে শুরু হয় এবং সময়টি ইউটিসি লিপ সেকেন্ড অনুপস্থিত থাকে (দেখুন https://tycho.usno.navy.mil/leapsec.html জিপিএস তারিখ এবং সময় বর্তমানে ইউটিসি থেকে 18 সেকেন্ড এগিয়ে, যেমন জানুয়ারী 2018।

অ্যাডাফ্রুট আলটিমেট জিপিএসের জন্য অ্যাডাফ্রুট জিপিএস লাইব্রেরি, আরটিসিলিবের বিপরীতে, জিপিএস বছরগুলিতে 2000 বছরের অফসেট যুক্ত করে না, তাই যখন আপনি তারিখ এবং সময় টাইমস্ট্যাম্প পাঠান তখন এটি যুক্ত করা প্রয়োজন। এছাড়াও যদিও জিপিএস লাইব্রেরি মিলিসেকেন্ড সরবরাহ করে যা খুব ভাল দীর্ঘমেয়াদী নির্ভুলতা আছে, সেগুলি খুব সুনির্দিষ্ট নয়। জিপিএস টাইম আপডেট প্রতি 100mS মাত্র একবার এবং তারপর একটি ধীর 9600 baud এ সিরিয়াল ডেটা পেতে একটি অতিরিক্ত বিলম্ব এবং এটি বিশ্লেষণ করতে আরেকটি বিলম্ব হয়। ডেটা রিডিং টাইমস্ট্যাম্পিং করার সময় মিলিসেকেন্ড ইন-প্রিসিসিনেশন যোগ করে।

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

// হ্যান্ডেল {@} request} অন্যথায় যদি ('@' == cmd) {// pfodApp অনুরোধ 'বর্তমান' সময় plot_mSOffset = মিলিস (); // বর্তমান মিলিসকে অফসেট কাঁচা ডেটা টাইমস্ট্যাম্প পার্সার.প্রিন্ট (F ("{@` 0 "}) হিসাবে ক্যাপচার করুন; তারিখ/সময় পাঠান ডেটটাইম (এবং জিপিএস); // পাঠান yyyy/M/d/H: m: s কে parser.print, পাস ঠিকানা এবং arg হিসাবে। parser.print ('}'); {@`0 ~ 2019/4/19 3: 33: 5}…।

// পার্সার প্রিন্টে তারিখ পাঠান parser.print (gps-> মাস, DEC); parser.print ('/'); parser.print (gps-> দিন, DEC); parser.print (''); parser.print (':'); parser.print (':'); parser.print (gps-> সেকেন্ড, DEC); // পার্সার.প্রিন্ট ('।'); যদি মিলিসেকেন্ড পাঠানো হয় // যদি আপনি এমএস পাঠাতে চান তবে আপনাকে জিপিএস-> মিলিসেকেন্ডের মানকে প্রধান শূন্যের সাথে প্যাড করতে হবে // অর্থাৎ 3 টি 003 তে প্যাড করা দরকার

অকার্যকর sendData () {যদি (plotDataTimer.isFinished ()) {plotDataTimer.repeat (); // ড্রিফট ছাড়া প্লট ডেটা টাইমার পুনরায় চালু করুন // আপনার লুপ ভেরিয়েবল থেকে ভেরিয়েবল প্লট করার মান নির্ধারণ করুন অথবা ADC ইনপুটগুলি পড়ুন plot_1_var = analogRead (A0); // চক্রান্তে ইনপুট পড়ুন // plot_2_var চক্রান্ত লুকানো আছে তাই এখানে কোন ডেটা বরাদ্দ করা হয়নি // plot_3_var প্লট লুকানো আছে তাই এখানে কোন ডেটা বরাদ্দ করা হয়নি // CSV ফর্ম্যাটে প্লট ডেটা পাঠান sendDateTime (& GPS); // পাঠিয়ে দিন yyyy/M/d/H: m: s পার্সারে। parser.print (','); parser.print (((float) (plot_1_var - plot_1_varMin)) * plot_1_scaling + plot_1_varDisplayMin); parser.print (','); // প্লট 2 লুকানো আছে। কোনো ডেটা পাঠানো হয়নি। parser.print (','); // প্লট 3 লুকানো আছে। কোনো ডেটা পাঠানো হয়নি। parser.println (); // CSV ডেটা রেকর্ডের শেষ}}

তারিখ এবং সময়ের বিরুদ্ধে চক্রান্ত করার সময়, pfodApp স্বয়ংক্রিয়ভাবে লিপ সেকেন্ডের জন্য সংশোধন করে। জানুয়ারী 2018 এর মতো, জিপিএস সময় ইউটিসি থেকে 18 সেকেন্ড এগিয়ে। মোবাইল এর ইউটিসি তারিখ ও সময়ের বিপরীতে {@ প্রতিক্রিয়ার মাধ্যমে, সংযোগে GPS দ্বারা ফেরত তারিখ/সময় তুলনা করে pfodApp এটি সংশোধন করে। PfodApp লগ ফাইল থেকে একটি স্প্রেডশীটে প্লট তৈরি করা উপরের RTC মডিউলগুলির মতোই। জিপিএস টাইমস্ট্যাম্পে (স্থানীয় সময় - অফিস টেম্প বর্তমান সময়) যোগ করা লিপ সেকেন্ডের জন্য সংশোধন করে।

মিলিস () টাইমস্ট্যাম্পগুলি আরডুইনো মিলিসেকেন্ড টাইমস্ট্যাম্প ব্যবহার করে কাজ করছে, উপরের ধাপ 5।

ধাপ 11: উপসংহার

আপনার অ্যান্ড্রয়েড মোবাইলে pfodApp ব্যবহার করে আপনি শুধুমাত্র Arduino এর মিলিস () ফাংশন ব্যবহার করে তারিখ এবং সময় বা অতিবাহিত সময়ের বিরুদ্ধে ডেটা চক্রান্ত করতে পারবেন। PfodApp লগ ফাইল ব্যবহার করে আপনি একটি স্প্রেডশীটে এই তারিখ/সময় প্লটগুলি পুনরায় উত্পাদন করতে পারেন। যদি আপনার আরডুইনো প্রজেক্টে আরটিসি মডিউল থাকে, তাহলে আপনি আরটিসি 'ড্রিফট' এর জন্য স্বয়ংক্রিয়ভাবে সংশোধন করে তারিখ এবং আরটিসি টাইমস্ট্যাম্প লগ করতে পারেন। যদি আপনার আরডুইনো প্রজেক্টের একটি জিপিএস মডিউল থাকে তাহলে আপনি লগ ইন করতে পারেন এবং তার অত্যন্ত সঠিক টাইমস্ট্যাম্পগুলি প্লট করতে পারেন এবং pfodApp স্বয়ংক্রিয়ভাবে জিপিএসের অনুপস্থিত লিপ সেকেন্ড সংশোধন করবে।

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

কোন অ্যান্ড্রয়েড কোডিং এর প্রয়োজন নেই। প্লট ফরম্যাটগুলি আপনার Arduino স্কেচে ছোট টেক্সট স্ট্রিং দ্বারা নির্দিষ্ট করা হয়। বিনামূল্যে pfodDesigner ওয়াইফাই, ক্লাসিক ব্লুটুথ, BLE এবং SMS এর মাধ্যমে সংযুক্ত Arduino বোর্ডের বিভিন্ন ধরণের জন্য সম্পূর্ণ Arduino ডেটা লগিং এবং প্লটিং স্কেচ তৈরি করে

প্রস্তাবিত: