সুচিপত্র:

রাস্পবেরি পাই এবং আরডুইনো ইউএনও ব্যবহার করে DHT11 ডেটা প্লট করুন: 7 টি ধাপ
রাস্পবেরি পাই এবং আরডুইনো ইউএনও ব্যবহার করে DHT11 ডেটা প্লট করুন: 7 টি ধাপ

ভিডিও: রাস্পবেরি পাই এবং আরডুইনো ইউএনও ব্যবহার করে DHT11 ডেটা প্লট করুন: 7 টি ধাপ

ভিডিও: রাস্পবেরি পাই এবং আরডুইনো ইউএনও ব্যবহার করে DHT11 ডেটা প্লট করুন: 7 টি ধাপ
ভিডিও: Arduino Tutorial Bangla For Beginners Part-1 আরডুইনো টিউটোরিয়াল বাংলা ফর বিগিনারস পর্ব-১ 2024, ডিসেম্বর
Anonim
রাস্পবেরি পাই এবং আরডুইনো ইউএনও ব্যবহার করে DHT11 ডেটা প্লট করুন
রাস্পবেরি পাই এবং আরডুইনো ইউএনও ব্যবহার করে DHT11 ডেটা প্লট করুন

এই নির্দেশযোগ্য ব্যাখ্যা করে কিভাবে আমি Arduino Uno এবং Raspberry Pi ব্যবহার করে তাপমাত্রা সেন্সর DHT11 ডেটা চক্রান্ত করি। এই তাপমাত্রায় সেন্সরটি Arduino Uno এর সাথে সংযুক্ত এবং Arduino Uno রাস্পবেরি পাই এর সাথে সিরিয়ালভাবে সংযুক্ত। রাস্পবেরি পাই সাইডে, ম্যাটপ্লটলিব, নম্পি এবং ড্রনও লাইব্রেরিগুলি গ্রাফ তৈরির জন্য ব্যবহৃত হয়।

ধাপ 1: প্রকল্পের জন্য প্রয়োজনীয় জিনিস

প্রকল্পের জন্য প্রয়োজনীয় জিনিস
প্রকল্পের জন্য প্রয়োজনীয় জিনিস
প্রকল্পের জন্য প্রয়োজনীয় জিনিস
প্রকল্পের জন্য প্রয়োজনীয় জিনিস
প্রকল্পের জন্য প্রয়োজনীয় জিনিস
প্রকল্পের জন্য প্রয়োজনীয় জিনিস

1. রাস্পবেরি পাই

2. Arduino Uno

3. DHT11 তাপমাত্রা সেন্সর

4. জাম্পার তারের

5. ব্রেডবোর্ড

ধাপ 2: রাস্পবেরি পাইতে আরডুইনো আইডিই ডাউনলোড এবং ইনস্টল করুন

রাস্পবেরি পাইতে আরডুইনো আইডিই ডাউনলোড এবং ইনস্টল করুন
রাস্পবেরি পাইতে আরডুইনো আইডিই ডাউনলোড এবং ইনস্টল করুন
রাস্পবেরি পাইতে আরডুইনো আইডিই ডাউনলোড এবং ইনস্টল করুন
রাস্পবেরি পাইতে আরডুইনো আইডিই ডাউনলোড এবং ইনস্টল করুন
রাস্পবেরি পাইতে আরডুইনো আইডিই ডাউনলোড এবং ইনস্টল করুন
রাস্পবেরি পাইতে আরডুইনো আইডিই ডাউনলোড এবং ইনস্টল করুন

দ্রষ্টব্য:- আপনি Arduino UNO- এ স্কেচ আপলোড করতে উইন্ডোজ, লিনাক্স বা ম্যাকের Arduino IDE ব্যবহার করতে পারেন।

প্রথম ধাপ হল রাস্পবেরি পাইতে সেই খোলা ব্রাউজারের জন্য আরডুইনো আইডিই ইনস্টল করা এবং নীচের দেওয়া লিঙ্কটি খুলুন

Arduino পূর্ববর্তী IDE

তারপর লিনাক্স এআরএম সংস্করণ ডাউনলোড করুন এবং কমান্ড ব্যবহার করে এটি বের করুন

tar -xf ফাইলের নাম

এক্সট্রাক্ট করার পর আপনি একটি নতুন ডিরেক্টরি দেখতে পাবেন। এখানে আমি arduino-1.8.2 IDE ব্যবহার করছি। তারপর কমান্ড ব্যবহার করে ডিরেক্টরিতে যান।

cd arduino-1.8.1

Arduino IDE চালানোর জন্য, arduino-1.8.2 ডিরেক্টরিতে এই কমান্ডটি ব্যবহার করুন

./arduino

লাইব্রেরি কিভাবে ব্যবহার করবেন

আরডুইনোতে যেকোন লাইব্রেরি ইনস্টল করার জন্য, কেবল লাইব্রেরি ডাউনলোড করুন এবং আরডুইনো 1.8.2 ==> লাইব্রেরি ফোল্ডারে পেস্ট করুন।

দ্রষ্টব্য:-নিশ্চিত করুন যে প্রাক্তন (DHT- সেন্সর) এর জন্য লাইব্রেরি ফোল্ডারে কোন (-) নেই। যদি কোন (-) থাকে, তার নাম পরিবর্তন করুন।

আমরা এই নির্দেশে দুটি লাইব্রেরি ব্যবহার করব, DHT_Sensor এবং Adafruit_Sensor

ধাপ 3: Arduino এর জন্য কোড

Arduino এর জন্য কোড
Arduino এর জন্য কোড

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

Arduino কোড

#অন্তর্ভুক্ত "DHT.h" float tempC; // সি ভাসা tempF মধ্যে পরিবর্তনশীল বা হোল্ডিং temp; // F ভাসমান আর্দ্রতায় তাপমাত্রা ধরে রাখার জন্য পরিবর্তনশীল; // চাপ পড়ার জন্য পরিবর্তনশীল

#DHTPIN 7 সংজ্ঞায়িত করুন // আমরা কোন ডিজিটাল পিনের সাথে সংযুক্ত

#DHTTYPE DHT11 // DHT 11 নির্ধারণ করুন

//#DHTTYPE DHT22 সংজ্ঞায়িত করুন // DHT 22 (AM2302), AM2321

//#DHTTYPE DHT21 সংজ্ঞায়িত করুন // DHT 21 (AM2301)

// ডিএইচটি সেন্সর শুরু করুন।

DHT dht (DHTPIN, DHTTYPE);

অকার্যকর সেটআপ () {Serial.begin (115200); // সিরিয়াল মনিটর চালু করুন

dht.begin (); // dht আরম্ভ করুন}

অকার্যকর লুপ () {tempC = dht.readTemperature (); // আপনার ভেরিয়েবল ঘোষণা করতে ভুলবেন না

আর্দ্রতা = dht.readHumidity (); // আর্দ্রতা পড়ুন

Serial.print (tempC);

সিরিয়াল.প্রিন্ট (",");

সিরিয়াল.প্রিন্ট (আর্দ্রতা);

সিরিয়াল.প্রিন্ট ("\ n"); // নতুন লাইনডাইয়ের জন্য (2000); // পড়ার মধ্যে বিরতি দিন। }

একবার স্কেচ কম্পাইল হয়ে গেলে বোর্ড এবং পোর্ট নির্বাচন করে আপলোড করুন।

ধাপ 4: রাস্পবেরি পাই সেটআপ করুন

রাস্পবেরি পাই সেটআপ করুন
রাস্পবেরি পাই সেটআপ করুন

একবার কোড আপলোড হয়ে গেলে, কিছু লাইব্রেরি ইনস্টল করুন যাতে আমরা ডেটার গ্রাফ তৈরি করতে পারি যা ক্রমাগত Arduino Uno থেকে আসছে।

1. PySerial একটি লাইব্রেরি যা বিভিন্ন ডিভাইসে সিরিয়াল সংযোগের জন্য সহায়তা প্রদান করে। এটি ইনস্টল করতে কমান্ড ব্যবহার করুন।

Sudo apt-get python-serial ইনস্টল করুন

2. Numpy একটি প্যাকেজ যা একটি বহু-মাত্রিক অ্যারে বস্তু এবং এটির সাথে যুক্ত দ্রুত গণিত ফাংশন সংজ্ঞায়িত করে। এটি রৈখিক বীজগণিত এবং এফএফটি (ফাস্ট ফুরিয়ার ট্রান্সফর্ম) এবং অত্যাধুনিক র্যান্ডম-সংখ্যা প্রজন্মের জন্য সহজ রুটিন সরবরাহ করে। আপনি এটি অনেক উপায়ে ইনস্টল করতে পারেন হয় apt প্যাকেজ বা পিপ ব্যবহার করুন। এখানে আমি পিপ ব্যবহার করে ইনস্টল করছি প্রথমে আমাদের পিপ ইনস্টল করতে হবে

sudo apt-get python-pip python-dev build-essential ইনস্টল করুন

sudo pip numpy ইনস্টল করুন

অথবা আপনি যদি apt প্যাকেজ ব্যবহার করতে চান

sudo apt python-numpy ইনস্টল করুন

3. ম্যাটপ্লটলিব একটি 2 ডি প্লটিং লাইব্রেরি যা টকিন্টার, wxPython, Qt, বা GTK+এর মত সাধারণ-উদ্দেশ্য GUI টুলকিট ব্যবহার করে অ্যাপ্লিকেশনগুলিতে প্লট এম্বেড করার জন্য একটি অবজেক্ট-ভিত্তিক API প্রদান করে। এটি ইনস্টল করার জন্য কমান্ড ব্যবহার করুন

sudo pip matplotlib ইনস্টল করুন

অথবা

sudo apt python-matplotlib ইনস্টল করুন

4. আমরা MATLAB- এ "imshow" ব্যবহার করে ড্রোনউ সাধারণত প্রতিটি পুনরাবৃত্তির পরে ফলাফল দেখতে ব্যবহৃত হয়। এটি ইনস্টল করতে কমান্ড ব্যবহার করুন

sudo pip install drawnow

ধাপ 5: পাইথন স্কিপ

পাইথন স্কিপ্ট
পাইথন স্কিপ্ট
পাইথন স্কিপ্ট
পাইথন স্কিপ্ট

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

1. একটি গ্রাফে প্লট ডেটা

আমদানি সিরিয়াল # আমদানি সিরিয়াল লাইব্রেরি

আমদানি numpy # আমদানি numpy

plt #import matplotlib লাইব্রেরি হিসাবে matplotlib.pyplot আমদানি করুন

drawnow আমদানি থেকে *

tempC = #খালি অ্যারেহুমিডিটি =

arduino = serial. Serial ("/dev/ttyACM0", 115200)

plt.ion () # ইন্টারেক্টিভ মোড লাইভ ডেটাকাউন্ট = 0 প্লট করার জন্য

def makeFig (): #একটি ফাংশন তৈরি করুন যা আমাদের কাঙ্ক্ষিত প্লট তৈরি করে

plt.ylim (20, 30) #সেট y মিনিট এবং সর্বোচ্চ মান

plt.title ('রিয়েল টাইম DHT11 ডেটা') #শিরোনামটি প্লট করুন

plt.grid (সত্য) #গ্রিড চালু করুন

plt.ylabel ('Temp C') #সেট ylabel

plt.plot (tempC, 'b^-', label = 'Degree C') #প্লট তাপমাত্রা

plt.legend (loc = 'উপরের ডান') #কিংবদন্তি প্লট করুন

plt2 = plt.twinx () #একটি দ্বিতীয় y অক্ষ তৈরি করুন

plt.ylim (50, 70) #দ্বিতীয় y অক্ষের সীমা নির্ধারণ করুন

plt2.plot (আর্দ্রতা, 'g*-', লেবেল = 'আর্দ্রতা') #প্লট চাপের তথ্য

plt2.set_ylabel ('আর্দ্রতা') #লেবেল দ্বিতীয় y অক্ষ

plt2.ticklabel_format (useOffset = মিথ্যা)

plt2.legend (loc = 'উপরের বাম')

while True: # while লুপ যে loops চিরতরে

while (arduino.inWaiting () == 0): #ডেটা না হওয়া পর্যন্ত এখানে অপেক্ষা করুন

#কিছু করো না

arduinoString = arduino.readline ()

dataArray = arduinoString.split (',') #এটি একটি অ্যারেতে বিভক্ত করুন

temp = float (dataArray [0])

hum = float (dataArray [1])

tempC.append (temp)

আর্দ্রতা।

অঙ্কন (makeFig)

বিরতি (.000001)

count = count+1 if (count> 20): #শুধুমাত্র শেষ 20 টি ডেটা নিন যদি ডেটা বেশি হয় তবে এটি প্রথমে পপ হবে

tempC.pop (0)

আর্দ্রতা পপ (0)

2. আর্দ্রতা এবং তাপমাত্রা আলাদাভাবে চক্রান্ত করা

আমদানি সিরিয়াল # আমদানি সিরিয়াল লাইব্রেরি

আমদানি numpy # আমদানি numpy

plt #import matplotlib লাইব্রেরি হিসাবে matplotlib.pyplot আমদানি করুন

drawnow আমদানি থেকে *

tempC = #ফাঁকা অ্যারে

আর্দ্রতা =

arduino = serial. Serial ("/dev/ttyACM0", 115200) #সিরিয়াল পোর্ট যার সাথে arduino সংযুক্ত এবং Baudrate

plt.ion () #matplotlib বলুন আপনি লাইভ ডেটা চক্রান্ত করতে ইন্টারেক্টিভ মোড চান

def CreatePlot (): #একটি ফাংশন তৈরি করুন যা আমাদের কাঙ্ক্ষিত প্লট তৈরি করে

plt.subplot (2, 1, 1) #উচ্চতা, প্রস্থ, প্রথম চক্রান্ত

plt.ylim (22, 34) #সেট y মিনিট এবং সর্বোচ্চ মান

plt.title ('রিয়েল টাইম DHT11 ডেটা') #শিরোনামটি প্লট করুন

plt.grid (সত্য) #গ্রিড চালু করুন

plt.ylabel ('Temp C') #ylabels সেট করুন

plt.plot (tempC, 'b^-', label = 'Degree C') #প্লট তাপমাত্রা

plt.legend (loc = 'উপরের কেন্দ্র') #কিংবদন্তি প্লট করুন

plt.subplot (2, 1, 2) # উচ্চতা, প্রস্থ, দ্বিতীয় চক্রান্ত

plt.grid (সত্য)

plt.ylim (45, 70) #দ্বিতীয় y অক্ষের সীমা নির্ধারণ করুন

plt.plot (আর্দ্রতা, 'g*-', লেবেল = 'আর্দ্রতা (g/m^3)') #প্লট আর্দ্রতা ডেটা

plt.ylabel ('আর্দ্রতা (g/m^3)') #লেবেল দ্বিতীয় y অক্ষ

plt.ticklabel_format (useOffset = মিথ্যা) #অটোস্কেল y অক্ষ বন্ধ করতে

plt.legend (loc = 'উপরের কেন্দ্র')

while True: # while লুপ যে loops চিরতরে

while (arduino.inWaiting () == 0): #অপেক্ষা করুন যতক্ষণ না ডাটা পাস হয় #কিছুই করবেন না

arduinoString = arduino.readline () #সিরিয়াল পোর্ট থেকে ডেটা পড়ুন

dataArray = arduinoString.split (',') #এটি একটি অ্যারেতে বিভক্ত করুন

temp = float (dataArray [0]) #প্রথম উপাদানটিকে ভাসমান সংখ্যায় রূপান্তর করুন এবং টেম্পারে রাখুন

hum = float (dataArray [1]) #দ্বিতীয় উপাদানটিকে ভাসমান সংখ্যায় রূপান্তর করুন এবং হাম দিন

tempC.append (temp) #টেম্প রিডিং যোগ করে আমাদের tempC অ্যারে তৈরি করুন

humid.append (hum) #হাম পড়া যোগ করে আমাদের আর্দ্রতা অ্যারে তৈরি করা

drawnow (CreatePlot)

বিরতি (.000001)

count = count+1

if (count> 20): #শুধুমাত্র শেষ 20 টি ডেটা নিন যদি ডেটা বেশি হয় তবে এটি প্রথমে পপ হবে

tempC.pop (0) # প্রথম উপাদান পপ আউট

আর্দ্রতা পপ (0)

ধাপ 6: সার্কিট ডায়াগ্রাম

বর্তনী চিত্র
বর্তনী চিত্র
বর্তনী চিত্র
বর্তনী চিত্র
বর্তনী চিত্র
বর্তনী চিত্র

Arduino ==> DHT11

3.3V ==> VCC

GND ==> GND

D7 ==> আউট

প্রস্তাবিত: