সুচিপত্র:
ভিডিও: BBQ Pi (ডেটা ভিজুয়ালাইজেশনের সাথে!): 4 টি ধাপ (ছবি সহ)
2024 লেখক: John Day | [email protected]. সর্বশেষ পরিবর্তিত: 2024-01-30 07:57
ভূমিকা
বারবিকিউং সাধারণত আপনার পছন্দের মাংস রান্না করার জন্য পরোক্ষ তাপ ব্যবহার করার ধীর প্রক্রিয়াকে বোঝায়। যদিও রান্নার এই পদ্ধতিটি অত্যন্ত জনপ্রিয়-বিশেষ করে মার্কিন যুক্তরাষ্ট্রে-এটি এমন কিছু আছে যা কেউ কেউ বরং একটি গুরুতর দুর্বলতা বিবেচনা করতে পারে: এটি আপনার গর্ত এবং খাবারের তাপমাত্রা পর্যবেক্ষণ করতে কয়েক ঘন্টা আধা-মনোযোগী মনোযোগ প্রয়োজন। প্রবেশ করুন: রাস্পবেরি পাই।
মূল প্রকল্প
এই প্রকল্পের মূল উৎস এখানে পাওয়া যাবে: https://old.reddit.com/r/raspberry_pi/comments/a0… এর মূল কথা হল Reddit ব্যবহারকারী প্রোডাক্ট তুলনামূলকভাবে সস্তা থেকে খাদ্য এবং পিট তাপমাত্রার তথ্য রিলে করতে সক্ষম হয়েছিল, রাস্পবেরি পাইতে বাণিজ্যিকভাবে উপলব্ধ ওয়্যারলেস থার্মোমিটার (যা তার জিপিআইও পিনের সাথে একটি ছোট আরএফ মডিউল সংযুক্ত ছিল)। মূল প্রকল্পে (উপরে সংযুক্ত), প্রোডাক্ট তার ডেটা একটি স্ক্লাইট ডাটাবেসে সংরক্ষণ করে এবং স্থানীয়ভাবে হোস্ট করা অ্যাপাচি 2 পিএইচপি ওয়েবসাইটে প্রদর্শিত হয়।
এই সমাধানটি ইতিমধ্যেই এই ব্লগের প্রবর্তনে স্পর্শ করা মূল সমস্যার সমাধান করেছে: আপনি এখন একটি ওয়েব ব্রাউজার দিয়ে দূর থেকে আপনার খাদ্য এবং পিটের তাপমাত্রা পর্যবেক্ষণ করতে পারেন। কিন্তু আমরা যদি এই প্রসারিত করতে চাই? লিখুন: GridDB।
সরবরাহ
রাস্পবেরি পাই 4
SUNKEE 433Mhz Superheterodyne Wireless Receiver মডিউল
ধাপ 1: GridDB ওয়েব API এবং FluentD
এই প্রকল্পটি দেখার পরে, আমার প্রথম চিন্তা - উত্তেজনার প্রাথমিক তরঙ্গের পরে - আমি কার্যকারিতা প্রসারিত করার উপায়গুলি নিয়ে ভাবছিলাম। গ্রিডডিবি এবং এর গ্রাফানা প্লাগইন ব্যবহার করে, আমি আমার খাদ্য এবং পিটের ডেটা কল্পনা করার চেষ্টা করেছি। এর বাইরে, আমি গ্রাফানা টীকাগুলি সেট করতে চেয়েছিলাম যে কোনও বিশৃঙ্খল ডেটা পয়েন্ট খুঁজে বের করতে চাই - কোনও ভাজা মাংস থাকতে পারে না!
শুরু করার জন্য, বেতার থার্মোমিটার থেকে আসা ডেটা পড়ার জন্য আমার মূল প্রকল্পের সি কোড ব্যবহার করতে হবে এবং সেই তথ্য আমার গ্রিডিডিবি সার্ভারে পোস্ট করতে হবে। এটি চালু এবং চালানোর জন্য, আমি একটি CentOS ভার্চুয়াল মেশিন ব্যবহার করে Azure এ একটি GridDB সার্ভার তৈরি করেছি। আমাদের প্রান্ত মেশিন (রাস্পবেরি পাই) থেকে আমাদের ক্লাউড সার্ভারে ডেটা শেয়ার করার সবচেয়ে সহজ উপায় ছিল GridDB ওয়েব API এর মাধ্যমে। সুতরাং, সেই ভিএম -এ, আমি ফ্লুইন্টড এবং তার সাথে থাকা গ্রিডডিবি সংযোগকারী সহ গ্রিডডিবির ওয়েবএপিআই সেট আপ করেছি।
প্রকৃতপক্ষে ক্লাউডে ডেটা পাঠানোর আগে, আমার BBQ Pi কন্টেইনারের জন্য মৌলিক স্কিমা তৈরি করা দরকার। ডেটাসেটটি খুব সহজ: আমাদের দুটি তাপমাত্রা সেন্সর রয়েছে, একটি রান্না আইডি এবং অবশ্যই টাইমস্ট্যাম্প। সুতরাং আমাদের স্কিমা এই মত দেখাচ্ছে:
timeseries = gridstore.put_container ("bbqpi", [("সময়", griddb।
এই টাইমসরিজ কন্টেইনার তৈরি করতে, আমি কেবল WebAPI (পোর্ট 8080) ব্যবহার করেছি:
কার্ল -এক্স পোস্ট -বেসিক -ইউ অ্যাডমিন: অ্যাডমিন -এইচ "কন্টেন্ট -টাইপ: অ্যাপ্লিকেশন/জসন" -ডি
'{"container_name": "bbqpi", "container_type": "TIME_SERIES", / "rowkey": true, "columns": [{"name": "time", "type": "TIMESTAMP"}, {"name": "cookid", "type": "INTEGER"}, {"name": "probe1", "type": "INTEGER"}, {"name": "probe2", "type": "INTEGER"}]} '\ https:// localhost: 8080/griddb/v2/defaultCluster/dbs/public/containers
কন্টেইনার তৈরি করার সাথে সাথে, আমাদের কন্টেইনারে প্রকৃত ডেটা পোস্ট করার জন্য আমাকে ফ্লুয়েন্টড (পোর্ট 8888) ব্যবহার করতে হবে। এখানে একটি CURL কমান্ড কিছু ডামি ডেটা পোস্ট করছে:
curl -X POST -d 'json = {"date": "2020-01-01T12: 08: 21.112Z", "cookid": "1", "probe1": "150", "probe2": "140" } 'https:// localhost: 8888/griddb
সেখান থেকে, যখনই আমাদের Pi আমাদের পিট থেকে তথ্য পড়ছিল (প্রায় প্রতি ~ 12 সেকেন্ডে) একটি HTTP POST অনুরোধ পাঠানোর জন্য আমাকে মূল কোডটি সংযুক্ত করতে হয়েছিল।
একটি পার্শ্ব নোট হিসাবে: এই কোডটি লিখতে আমাকে শিখিয়েছে কিভাবে সি ভাষা হতে পারে
int postData (char time , int cookid, int probe1, int probe2, char url )
{কার্ল *কার্ল; CURLcode res; / * উইন্ডোতে, এটি উইনসক স্টাফ শুরু করবে */ curl_global_init (CURL_GLOBAL_ALL); char errbuf [CURL_ERROR_SIZE] = {0,}; চর এজেন্ট [1024] = {0,}; char json [1000]; snprintf (json, 200, "json = {" date / ": \"%s.112Z / ", cook" cookid / ": \"%d / "," probe1 / ": \"%d / ", pro "probe2 \": / "%d \"} ", সময়, কুকিড, probe1, probe2); / * একটি কার্ল হ্যান্ডেল পান */ curl = curl_easy_init (); if (curl) { /* প্রথমে আমাদের POST প্রাপ্ত হতে যাচ্ছে এমন URL টি সেট করুন। এই ইউআরএলটি ঠিক একইভাবে https:// URL হতে পারে যদি ডেটা গ্রহণ করা উচিত। */ snprintf (এজেন্ট, sizeof এজেন্ট, "libcurl/%s", curl_version_info (CURLVERSION_NOW)-> সংস্করণ); এজেন্ট [sizeof agent - 1] = 0; curl_easy_setopt (কার্ল, CURLOPT_USERAGENT, এজেন্ট); curl_easy_setopt (কার্ল, CURLOPT_URL, url); curl_easy_setopt (curl, CURLOPT_USERNAME, "admin"); curl_easy_setopt (curl, CURLOPT_PASSWORD, "admin"); curl_easy_setopt (কার্ল, CURLOPT_VERBOSE, 1L); curl_easy_setopt (curl, CURLOPT_ERRORBUFFER, errbuf); curl_easy_setopt (কার্ল, CURLOPT_POSTFIELDS, json); / * অনুরোধটি সম্পাদন করুন, res রিটার্ন কোড পাবে */ res = curl_easy_perform (curl); যদি (res! = CURLE_OK) {size_t len = strlen (errbuf); fprintf (stderr, "\ nlibcurl: (%d)", res); যদি (len) fprintf (stderr, "%s%s", errbuf, ((errbuf [len - 1]! = '\ n')? "\ n": "")); fprintf (stderr, "%s / n / n", curl_easy_strerror (res)); পরিষ্কার করা; } পরিষ্কার: curl_easy_cleanup (কার্ল); curl_global_cleanup (); রিটার্ন 0; }}
এই ফাংশনটি লিখিত হওয়ার সাথে সাথে, আমি এটিকে একই সময়ে চালানোর প্রয়োজন ছিল যখন স্ক্লাইট ডেটা পোস্ট করা হচ্ছিল:
যদি (goodData == 1) {
যদি (last_db_write == 0 || %d); ", cookID, buff, probe1, probe2); printf ("%s / n", sql); rc = sqlite3_exec (db, sql, callback, 0, & zErrMsg); যদি (rc! = SQLITE_OK) {printf ("SQL error: %s / n", zErrMsg); } অন্যথায় {last_db_write = secs; } char url = "https://xx.xx.xx.xx: 8888/griddb"; পোস্ট ডেটা (বাফ, কুকআইডি, প্রোব 1, প্রোব 2, ইউআরএল); }}
আপনার ডেটা আসলে আপনার সার্ভারে beingোকানো হচ্ছে কিনা তা নিশ্চিত করার জন্য, আপনি আপনার ডাটাবেস অনুসন্ধান করতে এবং ফলাফল দেখতে নিম্নলিখিত কমান্ডটি চালাতে পারেন:
curl -X POST --basic -u admin: admin -H "Content -type: application/json" -d '{"limit": 1000}' https:// localhost: 8080/griddb/v2/defaultCluster/dbs/ পাবলিক/পাত্রে/bbqpi/সারি
ধাপ 2: গ্রাফানা
কোডের জায়গায়, এখন যখন আমরা একটি "কুক" শুরু করার জন্য মূল ওয়েব পোর্টালটি ব্যবহার করি, তখন আমরা একই সাথে আমাদের তাপমাত্রার তথ্য আমাদের GridDB সার্ভারে সংরক্ষণ করব।
পরবর্তী পদক্ষেপ গ্রাফানা ব্যবহার করে আমাদের ডেটা কল্পনা করা হবে। এটি করার জন্য, আমরা এই ব্লগের তথ্য অনুসরণ করেছি: এখানে। এই বাস্তবায়ন সম্পর্কে চমৎকার বিষয় হল যে আমাদের ডেটা একটি সুন্দর গ্রাফে দেখানো অত্যন্ত সহজ। এটি টীকা যোগ করে।
ব্লগে আলোচিত টীকাগুলি আমাদের জন্য খুব সহজ করে তোলে যখন আমাদের খাদ্য বা গর্তে কিছু ভুল হয়ে যায়। আমার ক্ষেত্রে, আমি গরুর মাংসের ছোট পাঁজর রান্না করছিলাম। তাদের সাথে, আমি চাইনি যে গর্তে তাপমাত্রা 275 ডিগ্রি ফারেনহাইটের বেশি বাড়ুক। যদি আমি দেখেছি যে তাপমাত্রা এর বাইরে চলে গেছে, আমি একটি বার্নার বন্ধ করতে পারি এবং তাপটি আবার ডুবতে দিতে পারি:
সেন্সরের জন্য আমার অনুরূপ নিয়ম ছিল আসলে খাবারের উপর ট্যাব রাখা: যদি খাবার 203 ডিগ্রি ফারেনহাইটের অভ্যন্তরীণ তাপমাত্রায় পৌঁছে, তবে পাঁজর প্রস্তুত ছিল। আপনি এখানে রান্নার শেষে একক টীকা দেখতে পারেন:
সব মিলিয়ে, বাবুর্চি আমাকে প্রায় ~ 4 ঘন্টা বা তারও বেশি সময় নিয়েছিল, তবে এই ধরণের সেটআপটি সত্যই উৎকৃষ্ট হবে যদি আমি এমন কিছু রান্না করতাম যা গ্রীলে আরও বেশি সময় লাগত (ভাবুন একটি কম ধীর ধোঁয়া যা last 12 স্থায়ী হয় ঘন্টার). তা সত্ত্বেও, আমি বিশ্বাস করি যে এই টুলটি যদি সহজেই স্পষ্ট হয়: আপনার খাবারের ফলাফল লগ ইন করতে সক্ষম হওয়া এবং তারপর আগের রান্নাগুলোর সাথে তুলনা করা মানে আপনার BBQing সময়ের সাথে ধীরে ধীরে ভাল হয়ে উঠবে কারণ আপনি ডেটা ব্যবহার করে দেখতে পারেন কি কাজ করে এবং কি করে না 'টি
ধাপ 3: খাদ্য
এই প্রথম আমি গরুর মাংসের ছোট পাঁজর বানালাম; মশলার জন্য, আমি কেবল লবণ, কালো মরিচ এবং রসুন গুঁড়া ব্যবহার করেছি। বার্নারের কিছু সমস্যা সত্ত্বেও শুরুতে একটু বেশি ছিল, পাঁজর অসাধারণভাবে বেরিয়ে এল। এক নজর দেখে নাও:
ধাপ 4: উপসংহার
শেষ পর্যন্ত, খাবারটি দুর্দান্তভাবে বেরিয়ে এল, সেন্সর, গ্রিডডিবি এবং গ্রাফানা সবাই কনসার্টে সুন্দরভাবে কাজ করেছিল এবং আমরা পরবর্তী সময়ে কিছু বন্ধুকে মুগ্ধ করতে চাইলে এই জিনিসগুলি আবার কীভাবে রান্না করা যায় সে সম্পর্কে কিছু মূল্যবান তথ্য পেয়েছি।
প্রস্তাবিত:
লাইভ আরডুইনো ডেটা থেকে সুন্দর প্লট তৈরি করুন (এবং এক্সেলে ডেটা সংরক্ষণ করুন): 3 টি ধাপ
লাইভ Arduino ডেটা থেকে সুন্দর প্লট তৈরি করুন (এবং এক্সেল এ ডেটা সংরক্ষণ করুন): আমরা সবাই আমাদের P … লটার ফাংশন Arduino IDE তে খেলতে পছন্দ করি। পয়েন্ট যোগ করা হয় এবং এটি বিশেষ করে চোখের জন্য সুখকর নয়। Arduino IDE চক্রান্তকারী না
আর্ডুইনো ইউএনও এবং এসডি-কার্ড দিয়ে আর্দ্রতা এবং তাপমাত্রা রিয়েল টাইম ডেটা রেকর্ডার কিভাবে তৈরি করবেন - প্রোটিয়াসে DHT11 ডেটা-লগার সিমুলেশন: 5 টি ধাপ
আর্ডুইনো ইউএনও এবং এসডি-কার্ড দিয়ে আর্দ্রতা এবং তাপমাত্রা রিয়েল টাইম ডেটা রেকর্ডার কিভাবে তৈরি করবেন | প্রোটিয়াসে DHT11 ডেটা-লগার সিমুলেশন: ভূমিকা: হাই, এটি লিওনো মেকার, এখানে ইউটিউব লিঙ্ক রয়েছে। আমরা আরডুইনো দিয়ে সৃজনশীল প্রকল্প তৈরি করছি এবং এমবেডেড সিস্টেমে কাজ করছি।
মোটো স্টুডেন্ট ইলেকট্রিক রেসিং বাইকের জন্য ডেটা অর্জন এবং ডেটা ভিজ্যুয়ালাইজেশন সিস্টেম: 23 ধাপ
একটি মোটো স্টুডেন্ট ইলেকট্রিক রেসিং বাইকের জন্য ডেটা অর্জন এবং ডেটা ভিজ্যুয়ালাইজেশন সিস্টেম: একটি ডেটা অধিগ্রহণ সিস্টেম হল হার্ডওয়্যার এবং সফ্টওয়্যারগুলির একটি সংগ্রহ যা বাহ্যিক সেন্সর থেকে ডেটা সংগ্রহ করতে, এটি সংরক্ষণ এবং প্রক্রিয়া করার পরে যাতে এটি গ্রাফিক্যালি এবং বিশ্লেষণ করা যায়, ইঞ্জিনিয়ারদের তৈরি করার অনুমতি দেওয়া হচ্ছে
আরডুইনো এবং অ্যান্ড্রয়েডের সাথে রিয়েলটাইম MPU-6050/A0 ডেটা লগিং: 7 টি ধাপ (ছবি সহ)
Arduino এবং Android এর সাথে রিয়েলটাইম MPU-6050/A0 ডেটা লগিং: আমি মেশিন লার্নিং এর জন্য Arduino ব্যবহার করতে আগ্রহী। প্রথম ধাপ হিসাবে, আমি একটি অ্যান্ড্রয়েড ডিভাইসের সাথে একটি রিয়েলটাইম (বা এর খুব কাছাকাছি) ডেটা প্রদর্শন এবং লগার তৈরি করতে চাই। আমি MPU-6050 থেকে অ্যাকসিলরোমিটার ডেটা ক্যাপচার করতে চাই তাই আমি ডিজাইন করেছি
Arduino এবং প্রক্রিয়াকরণের সাথে তাপমাত্রা এবং আর্দ্রতা প্রদর্শন এবং ডেটা সংগ্রহ: 13 টি ধাপ (ছবি সহ)
Arduino এবং প্রক্রিয়াকরণের সাথে তাপমাত্রা এবং আর্দ্রতা প্রদর্শন এবং ডেটা সংগ্রহ: ভূমিকা: এটি একটি প্রকল্প যা একটি Arduino বোর্ড, একটি সেন্সর (DHT11), একটি উইন্ডোজ কম্পিউটার এবং প্রসেসিং (একটি বিনামূল্যে ডাউনলোডযোগ্য) প্রোগ্রাম ব্যবহার করে তাপমাত্রা, ডিজিটাল এবং আর্দ্রতা ডেটা প্রদর্শন করতে বার গ্রাফ ফর্ম, প্রদর্শন সময় এবং তারিখ এবং একটি গণনা সময় চালান