ارسم بيانات DHT11 باستخدام Raspberry Pi و Arduino UNO: 7 خطوات
ارسم بيانات DHT11 باستخدام Raspberry Pi و Arduino UNO: 7 خطوات

فيديو: ارسم بيانات DHT11 باستخدام Raspberry Pi و Arduino UNO: 7 خطوات

فيديو: ارسم بيانات DHT11 باستخدام Raspberry Pi و Arduino UNO: 7 خطوات
فيديو: How to use SSD1306 128x64 OLED Display I2C with Arduino code 2025, كانون الثاني
Anonim
ارسم بيانات DHT11 باستخدام Raspberry Pi و Arduino UNO
ارسم بيانات DHT11 باستخدام Raspberry Pi و Arduino UNO

يشرح هذا التوجيه كيف أرسم بيانات DHT11 لمستشعر درجة الحرارة باستخدام Arduino Uno و Raspberry Pi. في مستشعر درجة الحرارة هذا متصل بـ Arduino Uno و Arduino Uno متصل بشكل متسلسل بـ Raspberry Pi. في Raspberry Pi Side ، تُستخدم مكتبات matplotlib و numpy و drawnow لرسم الرسوم البيانية.

الخطوة 1: الأشياء المطلوبة للمشروع

الأشياء اللازمة للمشروع
الأشياء اللازمة للمشروع
الأشياء اللازمة للمشروع
الأشياء اللازمة للمشروع
الأشياء اللازمة للمشروع
الأشياء اللازمة للمشروع

1. Raspberry Pi

2. اردوينو أونو

3. جهاز استشعار درجة الحرارة DHT11

4. أسلاك العبور

5. اللوح

الخطوة 2: قم بتنزيل Arduino IDE وتثبيته في Raspberry Pi

قم بتنزيل وتثبيت Arduino IDE في Raspberry Pi
قم بتنزيل وتثبيت Arduino IDE في Raspberry Pi
قم بتنزيل وتثبيت Arduino IDE في Raspberry Pi
قم بتنزيل وتثبيت Arduino IDE في Raspberry Pi
قم بتنزيل وتثبيت Arduino IDE في Raspberry Pi
قم بتنزيل وتثبيت Arduino IDE في Raspberry Pi

ملاحظة: - يمكنك استخدام Arduino IDE من windows أو Linux أو Mac لتحميل الرسم التخطيطي في Arduino UNO.

الخطوة الأولى هي تثبيت Arduino IDE لهذا المتصفح المفتوح في Raspberry Pi وفتح الرابط أدناه

اردوينو IDE السابق

ثم قم بتنزيل إصدار Linux ARM واستخرجه باستخدام الأمر

tar -xf اسم الملف

بعد الاستخراج سترى دليل جديد. أنا هنا أستخدم arduino-1.8.2 IDE. ثم انتقل إلى الدليل باستخدام الأمر.

cd اردوينو 1.8.1

لتشغيل Arduino IDE ، استخدم هذا الأمر في دليل arduino-1.8.2

./arduino

كيفية استخدام المكتبات

لتثبيت أي مكتبات في Arduino ، ما عليك سوى تنزيل المكتبة ولصقها في اردوينو 1.8.2 ==> مجلد المكتبات.

ملاحظة: - تأكد من عدم وجود (-) في مجلد المكتبة على سبيل المثال (مستشعر DHT). إذا كان هناك أي (-) ، فقم بإعادة تسميته.

سنستخدم مكتبتين في هذا الدليل ، DHT_Sensor و Adafruit_Sensor

الخطوة 3: كود اردوينو

كود اردوينو
كود اردوينو

الآن ، دعنا نتحدث عن Python و Arduino معًا. أولاً ، نحتاج إلى برنامج بسيط للحصول على Arduino يرسل البيانات عبر المنفذ التسلسلي. البرنامج التالي هو برنامج بسيط سيحتوي على عدد Arduino ويرسل البيانات إلى المنفذ التسلسلي.

كود اردوينو

# تضمين "DHT.h" تعويم tempC ؛ // متغير أو عقد درجة الحرارة في درجة حرارة تعويم C ؛ // متغير لعقد درجة الحرارة في الرطوبة العائمة F ؛ // متغير لعقد قراءة الضغط

#define DHTPIN 7 // ما هو الدبوس الرقمي الذي نتصل به

#define DHTTYPE DHT11 // DHT 11

// # حدد DHTTYPE DHT22 // DHT 22 (AM2302) ، AM2321

// # حدد DHTTYPE DHT21 // DHT 21 (AM2301)

// تهيئة مستشعر DHT.

DHT dht (DHTPIN ، DHTTYPE) ؛

إعداد باطل () {Serial.begin (115200) ؛ // تشغيل الشاشة التسلسلية

dht.begin () ، // تهيئة dht}

حلقة باطلة () {tempC = dht.readTemperature () ، // تأكد من التصريح عن المتغيرات الخاصة بك

الرطوبة = dht.readHumidity () ؛ // قراءة الرطوبة

Serial.print (tempC) ؛

Serial.print ("،") ؛

Serial.print (الرطوبة) ؛

Serial.print ("\ n") ؛ // لـ new linedelay (2000) ؛ // وقفة بين القراءات. }

بمجرد تجميع الرسم ، حدد اللوحة والمنفذ وقم بتحميله.

الخطوة 4: إعداد Raspberry Pi

قم بإعداد Raspberry Pi
قم بإعداد Raspberry Pi

بمجرد تحميل الكود ، قم بتثبيت بعض المكتبات حتى نتمكن من رسم رسم بياني للبيانات التي تأتي بشكل تسلسلي من Arduino Uno.

1. PySerial هي مكتبة توفر دعمًا للاتصالات التسلسلية عبر مجموعة متنوعة من الأجهزة المختلفة. لتثبيته استخدم الأمر.

سودو apt-get install python-serial

2. Numpy عبارة عن حزمة تحدد كائن مصفوفة متعدد الأبعاد والوظائف الرياضية السريعة المرتبطة به والتي تعمل عليه. كما يوفر إجراءات بسيطة للجبر الخطي و FFT (تحويل فورييه السريع) وتوليد الأرقام العشوائية المتطورة. يمكنك تثبيته بعدة طرق إما باستخدام apt package أو pip. أنا هنا أقوم بالتثبيت باستخدام pip لذلك علينا أولاً تثبيت pip

sudo apt-get install python-pip python-dev build-ضروريًا

تثبيت sudo pip numpy

أو إذا كنت تريد استخدام حزمة ملائمة

sudo apt تثبيت python-numpy

3. Matplotlib هي مكتبة تخطيط ثنائية الأبعاد توفر واجهة برمجة تطبيقات موجهة للكائنات لتضمين المؤامرات في التطبيقات باستخدام مجموعات أدوات واجهة المستخدم الرسومية للأغراض العامة مثل Tkinter أو wxPython أو Qt أو GTK +. لتثبيته استخدم الأمر

sudo pip تثبيت matplotlib

أو

sudo apt تثبيت python-matplotlib

4. يستخدم Drawnow بشكل عام لرؤية النتائج بعد كل تكرار حيث نستخدم "imshow" في MATLAB. لتثبيته استخدم الأمر

sudo pip تثبيت drawnow

الخطوة 5: بايثون سكيبت

بيثون سكيبت
بيثون سكيبت
بيثون سكيبت
بيثون سكيبت

الخطوة التالية هي كتابة نص بيثون بحيث يمكنك استخدام أي محرر لكتابته.

1. بيانات مؤامرة في رسم بياني واحد

استيراد # المسلسل استيراد مكتبة المسلسل

import numpy # Import numpy

استيراد matplotlib.pyplot كمكتبة plt #import matplotlib

من drawnow استيراد *

tempC = #Empty arrayhumidity =

اردوينو = مسلسل تسلسلي ("/ dev / ttyACM0"، 115200)

plt.ion () # الوضع التفاعلي لرسم عدد بيانات مباشر = 0

def makeFig (): # إنشاء دالة تجعل الحبكة التي نريدها

plt.ylim (20، 30) # ضبط قيم y min و max

plt.title ("بيانات DHT11 في الوقت الفعلي") # ضع العنوان

plt.grid (صواب) # قم بتشغيل الشبكة

plt.ylabel ('Temp C') # Set ylabel

plt.plot (tempC، 'b ^ -'، label = 'Degree C') # رسم درجة الحرارة

plt.legend (loc = 'upper right') # رسم وسيلة الإيضاح

plt2 = plt.twinx () # إنشاء محور ص ثاني

plt.ylim (50، 70) # تعيين حدود المحور y الثاني

plt2.plot (الرطوبة ، 'g * -' ، التسمية = 'الرطوبة') # بيانات ضغط المخطط

plt2.set_ylabel ("الرطوبة") # تسمية المحور y الثاني

plt2.ticklabel_format (useOffset = False)

plt2.legend (loc = "أعلى اليسار")

بينما صحيح: # بينما تتكرر الحلقة إلى الأبد

while (arduino.inWaiting () == 0): # انتظر هنا حتى تكون هناك بيانات

تمرير # لا تفعل شيئا

arduinoString = arduino.readline ()

dataArray = arduinoString.split ('،') # اقسمها إلى مصفوفة

temp = float (dataArray [0])

hum = float (dataArray [1])

tempC.append (درجة الحرارة)

الرطوبة. إلحاق (همهمة)

drawnow (makeFig)

plt.pause (.000001)

count = count + 1 if (count> 20): # فقط خذ آخر 20 بيانات إذا كانت البيانات أكبر ، فستظهر أولاً

درجة الحرارة (0)

الرطوبة. بوب (0)

2. لرسم الرطوبة ودرجة الحرارة بشكل منفصل

استيراد # المسلسل استيراد مكتبة المسلسل

import numpy # Import numpy

استيراد matplotlib.pyplot كمكتبة plt #import matplotlib

من drawnow استيراد *

tempC = # مصفوفة فارغة

الرطوبة =

arduino = serial. Serial ("/ dev / ttyACM0"، 115200) # المنفذ التسلسلي الذي يتصل به اردوينو و Baudrate

plt.ion () #Tell matplotlib تريد الوضع التفاعلي لرسم البيانات الحية

def CreatePlot (): # إنشاء وظيفة تجعل المؤامرة المطلوبة

plt.subplot (2، 1، 1) #Height، Width، First plot

plt.ylim (22، 34) # ضبط قيم y min و max

plt.title ("بيانات DHT11 في الوقت الفعلي") # ضع العنوان

plt.grid (صواب) # قم بتشغيل الشبكة

plt.ylabel ('Temp C') # مجموعة ylabels

plt.plot (tempC، 'b ^ -'، label = 'Degree C') # رسم درجة الحرارة

plt.legend (loc = 'upper center') # رسم وسيلة الإيضاح

plt.subplot (2 ، 1 ، 2) # الارتفاع ، العرض ، المؤامرة الثانية

plt.grid (صواب)

plt.ylim (45، 70) # تعيين حدود المحور y الثاني

plt.plot (الرطوبة ، 'g * -' ، الملصق = 'الرطوبة (جم / م ^ 3)') # بيانات رطوبة القطعة

plt.ylabel ('الرطوبة (g / m ^ 3)') # تسمية المحور y الثاني

plt.ticklabel_format (useOffset = False) # لإيقاف المحور y المقياس التلقائي

plt.legend (loc = "مركز علوي")

بينما صحيح: # بينما تتكرر الحلقة إلى الأبد

while (arduino.inWaiting () == 0): # انتظر هنا حتى تمر البيانات # لا تفعل شيئًا

arduinoString = arduino.readline () # اقرأ البيانات من المنفذ التسلسلي

dataArray = arduinoString.split ('،') # اقسمها إلى مصفوفة

temp = float (dataArray [0]) # تحويل العنصر الأول إلى رقم عائم ووضعه في درجة الحرارة

hum = float (dataArray [1]) # تحويل العنصر الثاني إلى رقم عائم ووضع همهمة

tempC.append (temp) # قم ببناء مجموعة tempC الخاصة بنا عن طريق إلحاق قراءة temp

humidity. append (hum) # بناء مصفوفة الرطوبة الخاصة بنا عن طريق إلحاق قراءة الرطوبة

drawnow (CreatePlot)

plt.pause (.000001)

العد = العد + 1

إذا (العد> 20): # فقط خذ آخر 20 بيانات إذا كانت البيانات أكثر ، فستظهر أولاً

tempC.pop (0) # انبثق العنصر الأول

الرطوبة. بوب (0)

الخطوة 6: مخطط الدائرة

مخطط الرسم البياني
مخطط الرسم البياني
مخطط الرسم البياني
مخطط الرسم البياني
مخطط الرسم البياني
مخطط الرسم البياني

اردوينو ==> DHT11

3.3 فولت ==> VCC

GND ==> GND

D7 ==> خارج