সুচিপত্র:

Arduino প্রকল্প: Nodejs + SQL ডাটাবেস এবং ওয়েবসাইট ব্যবহার করে ইন্টারনেটের মাধ্যমে ইলেকট্রনিক্স নিয়ন্ত্রণ করুন।: 6 টি ধাপ
Arduino প্রকল্প: Nodejs + SQL ডাটাবেস এবং ওয়েবসাইট ব্যবহার করে ইন্টারনেটের মাধ্যমে ইলেকট্রনিক্স নিয়ন্ত্রণ করুন।: 6 টি ধাপ

ভিডিও: Arduino প্রকল্প: Nodejs + SQL ডাটাবেস এবং ওয়েবসাইট ব্যবহার করে ইন্টারনেটের মাধ্যমে ইলেকট্রনিক্স নিয়ন্ত্রণ করুন।: 6 টি ধাপ

ভিডিও: Arduino প্রকল্প: Nodejs + SQL ডাটাবেস এবং ওয়েবসাইট ব্যবহার করে ইন্টারনেটের মাধ্যমে ইলেকট্রনিক্স নিয়ন্ত্রণ করুন।: 6 টি ধাপ
ভিডিও: CS50 2013 - Week 9 2024, ডিসেম্বর
Anonim
Arduino প্রকল্প: Nodejs + SQL ডাটাবেস এবং ওয়েবসাইট ব্যবহার করে ইন্টারনেটে ইলেকট্রনিক্স নিয়ন্ত্রণ করুন।
Arduino প্রকল্প: Nodejs + SQL ডাটাবেস এবং ওয়েবসাইট ব্যবহার করে ইন্টারনেটে ইলেকট্রনিক্স নিয়ন্ত্রণ করুন।
Arduino প্রকল্প: Nodejs + SQL ডাটাবেস এবং ওয়েবসাইট ব্যবহার করে ইন্টারনেটে ইলেকট্রনিক্স নিয়ন্ত্রণ করুন।
Arduino প্রকল্প: Nodejs + SQL ডাটাবেস এবং ওয়েবসাইট ব্যবহার করে ইন্টারনেটে ইলেকট্রনিক্স নিয়ন্ত্রণ করুন।
Arduino প্রকল্প: Nodejs + SQL ডাটাবেস এবং ওয়েবসাইট ব্যবহার করে ইন্টারনেটে ইলেকট্রনিক্স নিয়ন্ত্রণ করুন।
Arduino প্রকল্প: Nodejs + SQL ডাটাবেস এবং ওয়েবসাইট ব্যবহার করে ইন্টারনেটে ইলেকট্রনিক্স নিয়ন্ত্রণ করুন।

প্রকল্প দ্বারা: Mahmed.tech

তৈরির তারিখ: 14 জুলাই 2017

অসুবিধা স্তর: কিছু প্রোগ্রামিং জ্ঞান দিয়ে শুরু।

হার্ডওয়্যারের প্রয়োজনীয়তা:

- Arduino Uno, Nano, Mega (আমার মনে হয় সিরিয়াল কানেকশনের সাথে বেশিরভাগ MCU কাজ করবে)

- একক LED এবং বর্তমান সীমাবদ্ধ প্রতিরোধক আপনি নিশ্চিত না হলে এই ক্যালকুলেটর ব্যবহার করুন: ওহমস আইন ক্যালকুলেটর

- 10 কে পোটেন্টিওমিটার

সফটওয়্যারের প্রয়োজনীয়তা:

- Arduino IDE

- Node. JS (এটি একটি কম্পিউটারে একটি সফটওয়্যার, ইনস্টল করা খুবই সহজ)

- মাইএসকিউএল সার্ভার (আমার কাছে সবচেয়ে সহজ উপায় হল একটি সস্তা ওয়েব হোস্টিং ব্যবহার করা। আপনি বিনামূল্যে ডোমেইন নামও পেতে পারেন)

প্রোগ্রামিং এবং স্ক্রিপ্টিং ভাষা ব্যবহৃত:

Arduino (সংশোধিত C/C ++), জাভাস্ক্রিপ্ট (Nodejs), PHP, HTML এবং CSS

সংক্ষিপ্তভাবে এই প্রকল্প: একটি ওয়েব ইন্টারফেস থেকে একটি Arduino মাইক্রোকন্ট্রোলার নিয়ন্ত্রণ। অতএব ইন্টারনেটের সাথে যেকোনো স্থান থেকে যেকোন বৈদ্যুতিক যন্ত্র নিয়ন্ত্রণ করুন। আমি প্রোগ্রামিং এবং ওয়েব ডেভেলপমেন্ট সম্পর্কে আমার উপলব্ধি প্রসারিত করতে চেয়েছিলাম এবং একটি সহজ কিন্তু কার্যকরী প্রকল্প করার চেয়ে এর থেকে ভাল উপায় কি। হার্ডওয়্যার একটি ন্যূনতম রাখা হয় যাতে আমি সফ্টওয়্যার উপর আরো ফোকাস করতে পারে। অতএব আমি একটি সাধারণ LED, পাত্র সেটআপ নিয়ে গেলাম। পাত্র তথ্য পাঠাবে এবং নেতৃত্ব গ্রহণ করবে (PWM উজ্জ্বলতা)। NodeJS ব্যবহার করে সিরিয়াল ডেটা পড়া হয়েছিল (potentiometer value) এবং লেখা ছিল (LED brightness)। এই প্রকল্পের কঠিন অংশটি ছিল দূরবর্তী অবস্থান (ওয়েব সার্ভার) থেকে ইনপুট ডেটা পাওয়া

ধাপ 1: সফ্টওয়্যার যুক্তি: সিস্টেম আর্কিটেকচার

সফ্টওয়্যার যুক্তি: সিস্টেম আর্কিটেকচার
সফ্টওয়্যার যুক্তি: সিস্টেম আর্কিটেকচার

Potentiometer তথ্য:

এটি আরডুইনোতে শুরু হয়, পাত্রের মূল্য সিরিয়াল প্রিন্ট। যাইহোক, এবার আমরা মান পড়ার জন্য Node. JS ব্যবহার করব। NodeJS একই পোর্টে সিরিয়াল যোগাযোগ খুলবে কারণ Arduino সংযুক্ত এবং মুদ্রিত পাত্র মান পড়বে। NodeJS তারপর একটি দূরবর্তী এসকিউএল ডাটাবেসে ডেটা আপলোড করবে, এটি প্রতিবার একটি নতুন পট মান মুদ্রিত হওয়ার সময় ঘটবে। একটি ওয়েবপেজ এসকিউএল ডাটাবেস সেট ব্যবধানের সাথে সংযুক্ত হবে এবং পোটেন্টিওমিটার মান পুনরুদ্ধার করবে। এটি তখন ওয়েবপেজে প্রদর্শিত হবে।

নেতৃত্বাধীন ডেটা:

নেতৃত্বের জন্য PWM উজ্জ্বলতা ব্যবহারকারী দ্বারা একটি দূরবর্তী ওয়েবপেজে সেট করা হবে, তাই এর যাত্রা বর্ণালীটির বিপরীত প্রান্তে শুরু হয়। ইনপুট ডেটা একটি এসকিউএল ডাটাবেসে সংরক্ষিত হয়, প্রতিটি সেট ব্যবধানে ডাটাবেস নেতৃত্বাধীন PWM- এ পরিবর্তনের জন্য পরীক্ষা করা হয়, এটি NodeJS দ্বারা সম্পন্ন করা হয়। যদি মানটি আগের মানের থেকে ভিন্ন হয় তবে নতুন মানটি একটি সিরিয়াল বাসের মাধ্যমে Arduino- এ পাঠানো হবে। Arduino তার উজ্জ্বলতা পরিবর্তনের জন্য নেতৃত্বের আউটপুট PWM মান পরিবর্তন করে।

ওহমস আইন ক্যালকুলেটর সূত্রের V = IR এবং P = IV = I²R = V²/R ব্যবহার করে এই প্রকল্পের জন্য, আমি একটি নীল নেতৃত্ব ব্যবহার করব। এটি গুরুত্বপূর্ণ কারণ আলোর ফ্রিকোয়েন্সি বাড়লে ভোল্টেজ ড্রপও বৃদ্ধি পায়। যেহেতু একটি লাল নেতৃত্বের মতো কিছুর তুলনায় নীল আলোর ফ্রিকোয়েন্সি বেশি। এর মানে হল উচ্চতর ফরোয়ার্ড ভোল্টেজ। মেক, টাইপ এবং সাইজের উপর নির্ভর করে কাজের পরিসীমা ভিন্ন হবে। আমার সেটআপের জন্য, আমি সিরিজের একটি 220 Ω প্রতিরোধক ব্যবহার করেছি, স্থল থেকে নেতিবাচক এবং একটি আরডুইনোতে PWM পিনে ইতিবাচক। পাত্রটি একটি এনালগ পিনের সাথে সংযুক্ত ছিল। 5VCC এক প্রান্ত GND অন্য এবং মধ্যম পিন একটি এনালগ পিনের সাথে সংযুক্ত (আমার ক্ষেত্রে A0)।

ধাপ 2: ধাপ 1: হার্ডওয়্যার ওয়্যারিং

ধাপ 1: হার্ডওয়্যার ওয়্যারিং
ধাপ 1: হার্ডওয়্যার ওয়্যারিং

এটি খুবই সহজ: শুধু আপনার বর্তমান সীমাবদ্ধ প্রতিরোধককে ধারাবাহিকভাবে LED এর সাথে সংযুক্ত করুন নিশ্চিত করুন যে আপনি নেতৃত্ব দিচ্ছেন সঠিক পথে। একটি বিন্দু GND এ যাবে এবং অন্য প্রান্ত Arduino পিনে যাবে। আমার সেটআপের জন্য, আমি নেতৃত্বের জন্য পিন 12 এবং পটের জন্য A7 ব্যবহার করেছি। আমার খুব সহজ সার্কিট থেকে আমার কোন পরিকল্পিত নেই। যাইহোক, আমি এটি অনলাইনে খুঁজে পেয়েছি (চিত্র)

ধাপ 3: ধাপ 2: Arduino

প্রথমে, নেতৃত্ব এবং পাত্রটি পরীক্ষা করা হয়েছিল যদি তারা প্রত্যাশা অনুযায়ী কাজ করে। এটি একটি সাধারণ প্রোগ্রাম দ্বারা হয়েছে যেখানে পাত্রের মান নেতৃত্বকে নিয়ন্ত্রণ করে। আমি 0 থেকে 1023 থেকে 0 থেকে 255 এর পাত্র পরিসীমা পরিবর্তন করতে constrain ফাংশন ব্যবহার করেছি, কিন্তু একটি সহজ /4 কাজ করে। টানা 10 টি রিডিং থেকে গড় গড় গ্রহণ করে পাত্রের মান সরানো হয়েছিল, এটি স্পাইকগুলি অপসারণের জন্য। (যাইহোক, এই মসৃণতা NodeJS এর সাথে সমস্যা সৃষ্টি করেছিল তাই এটি প্রকল্পে পরে সরানো হয়েছিল - এর উপর আরো)

কোড আরডুইনো

সিরিয়াল পড়ুন / লিখুন পরবর্তী ধাপ হল উজ্জ্বলতা সেট করার জন্য Arduino আইডি দ্বারা প্রদত্ত সিরিয়াল মনিটর উইন্ডোর মাধ্যমে ব্যবহারকারীর ইনপুট নেওয়া। এটি করার জন্য, serial.parseInt () ব্যবহার করা হয় যা একটি পূর্ণসংখ্যা মান নেয় এবং স্ট্রিং উপেক্ষা করে। এছাড়াও, কোডে একটি ত্রুটি পরীক্ষা যোগ করা হয়েছে। একটি PWM মানের বৈধ পরিসীমা হল 0 - 255, যখন একজন ব্যবহারকারী> 255 এ প্রবেশ করে তখন এটি 255 মান নির্ধারণ করে এবং যদি ব্যবহারকারী মান প্রবেশ করে অথবা <+/- 5 আমি পড়াকে আরো স্থিতিশীল করার জন্য এটি করেছি কারণ এটি ওঠানামা ছিল । এটি এসকিউএল আপডেট করার সাথে সম্পর্কিত একটি বড় সমস্যা কেন, পরে আরও।

ধাপ 4: ধাপ 3: NodeJS

আমি আপনাকে কিভাবে SQL সার্ভার পেতে বা সেট আপ করতে হয় তা দেখাতে যাচ্ছি না। সেখানে প্রচুর টিউটোরিয়াল আছে।

নোডজেএস প্রোগ্রামের 3 টি প্রধান দিক রয়েছে:

সিরিয়াল ডেটা পড়ুন

সিরিয়াল ডেটা লিখুন

এসকিউএল ডাটাবেস আপডেট করুন

NodeJS- এর মধ্যে একটি সিরিয়াল সংযোগ তৈরি করতে, সিরিয়ালপোর্ট নামে একটি মডিউল ডাউনলোড করতে হবে যা npm কমান্ড ব্যবহার করে করা যেতে পারে। যে ফোল্ডারে নোডজেএস প্রোগ্রাম রাখা হবে সেখানে সিএমডি খুলুন, টাইপ করে ইনস্টল করুন: npm install serialport এছাড়াও এসকিউএল মডিউলটি এসকিউএল ডাটাবেসের সাথে সংযোগ করতে সক্ষম হতে হবে: এনপিএম ইনস্টল মাইএসকিউএল নোডজেএস - সিরিয়াল পোর্ট নোডজেএস দিয়ে আমার প্রথম পদক্ষেপ প্রোগ্রামটি ছিল মুদ্রিত তথ্য পড়া এবং আরডুইনোতে pwm উজ্জ্বলতা পাঠানো। এটি একই ব্রাউড্রেট এবং বন্দরে সিরিয়াল সংযোগ খোলার মাধ্যমে করা হয়েছিল। একবার সংযোগ স্থাপন করা হলে আমি আগত বার্তাগুলি পড়ি এবং কনসোল উইন্ডোতে মুদ্রণ করি। যখন আমি উজ্জ্বলতা নিয়ন্ত্রণ করতে pwm মান লেখার চেষ্টা করি তখন সমস্যা উত্থাপিত হয়।

এটি ত্রুটিগুলি নিক্ষেপ করতে থাকে: পোর্ট না খোলা, আমার প্রাথমিক সমাধান ছিল যখন ইনকামিং ডেটা থাকে তখন রাইট ফাংশনকে কল করা। যাইহোক এটি একটি খারাপ ফিক্স ছিল এবং আমি সমাধানটির সাথে বেশ অসন্তুষ্ট ছিলাম, যদিও এটি কাজ করে তবে এটি কেবল তখনই পাঠাবে যখন পটের মান পরিবর্তন করা হবে। সিরিয়াল মডিউল জন্য উদাহরণ কোড একই ত্রুটি নিক্ষেপ কাজ করবে না। আমি পরে জানতে পারলাম যে প্রোগ্রামটি পোর্ট না খোলার পরেই রাইট ফাংশন চালানোর চেষ্টা করছিল, যার ফলে সেই ত্রুটি ঘটেছিল। আমি setInterval () ফাংশন ব্যবহার করে এই সমস্যাটি নিয়ে এসেছি

নোডজেএস - মাইএসকিউএল এসকিউএল ডাটাবেসের সাথে সংযোগ স্থাপনের জন্য মাইএসকিউএল লাইব্রেরি ব্যবহার করা হয়েছিল (এনপিএম ইনস্টল মাইএসকিউএল) যেহেতু দূরবর্তী স্থানে সার্ভারটি স্থানীয় হোস্টের পরিবর্তে সার্ভারের আইপি ঠিকানা ব্যবহার করা হয়েছিল।

var con সংযোগের তথ্য JSON ফরম্যাটে ধারণ করে, একবার সংযোগ সফলভাবে হয়ে গেলে, ডাটাবেস জিজ্ঞাসা করতে পারে। 2 টি ফাংশন তৈরি করা হয়েছে একটি টেবিল আপডেট করার জন্য অন্যটি এসকিউএল ক্যোয়ারীতে নেওয়া প্যারামিটার দিয়ে নির্বাচন করা। আপডেট টেবিল বলা হয় যখন একটি নতুন পট মান পাওয়া যায় এবং উজ্জ্বলতা পরীক্ষা ক্যোয়ারী পর্যায়ক্রমে চলবে।

NodeJSCode লিঙ্ক

ধাপ 5: ধাপ 4: ওয়েব ইন্টারফেস

ধাপ 4: ওয়েব ইন্টারফেস
ধাপ 4: ওয়েব ইন্টারফেস

ওয়েব ইন্টারফেস

প্রধান ওয়েবপৃষ্ঠাটি পিএইচপি -তে লেখা হয়েছিল কারণ আমি ইতিমধ্যে আমার CO323 ডেটাবেস এবং বিশ্ববিদ্যালয়ের ওয়েব মডিউল থেকে কিছু অভিজ্ঞতা পেয়েছি। এইচটিএমএল টেবিল এবং ফর্ম এসকিউএল ডেটা প্রদর্শন করতে ব্যবহৃত হয়েছিল।

পিএইচপি এসকিউএল অ্যাক্সেস কোড: ওয়েব ইন্টারফেস বিভাগে স্ক্রোল লিঙ্ক করুন।

এইচটিএমএল এবং সিএসএস

চূড়ান্ত ওয়েবপেজ