پروژه راه اندازی سنسور دما DS18B20 با استفاده از Raspberry Pi به زبان پایتون

 پروژه راه اندازی سنسور دما DS18B20 با استفاده از Raspberry Pi به زبان پایتون

راهنمای راه اندازی سنسور دما DS18B20 با استفاده از Raspberry Pi به زبان پایتون

هدف از این آموزش راه اندازی  پروتکل 1-WIRE  به زبان پایتون میباشد ( شما می توانید سنسور های مشابه که خروجی 1-WIRE دارند را به این روش راه اندازی نمایید )

لوازم مورد نیاز

  1. رزبری پای (رزبری پای مورد استفاده در این اموزش Raspberry Pi3 model B می باشد.)
  2. LCD2X16
  3. ماژول PCF8574
  4. DS18B20
  5. برد بورد
  6. سیم برد بورد

سنسور DS18B20

DS18B20 یک سنسور دما بوده که به طور گسترده در مکانهایی با محیطهای کار سخت مانند صنایع شیمیایی ، کارخانجات معدن و غیره درگیر هستند استفاده می شود .

تعریف پایه های سنسور DS18B20

سنسور DS18B20 توسط پروتکل یک سیمه امکان اتصال به میکروکنترلر را دارد. پایه شماره 1 زمین – پایه شماره 2 به رزبری – پایه شماره 3 به مثبت منبع وصل میشود .

سنسور DS18B20
سنسور DS18B20

نحوه اتصال بهرزبری پای

همانند تصویر زیر برای اتصال DS18B20 و رزبری پای مراحل زیر را دنبال می کنیم:

  1. اتصال پین مثبت ماژول DS18B20 به تغذیه 5 ولت برد رزبری پای (سیم قرمز)
  2. اتصال پین منفی سنسور به پین GND برد رزبری پای (سیم مشکی)
اتصال رزبری پای به سنسور DS18B20
اتصال رزبری پای به سنسور DS18B20
PCF8574 به رزبری پای اتصال
PCF8574 به رزبری پای اتصال
پایه های رزبری پای
پایه های رزبری پای

آماده سازی نرم افزاری Raspberry Pi

قبل از اسکریپت نویسی پایتون برای خواندن دیتا از سنسور باید  1-WIREرا در رزبری فعال کنیم:

sudo nano /boot/config.txt
1-WIREفعال کردن
1-WIREفعال کردن

در ادامه عبارت dtoverlay=w1–gpio را در ابتدای فایل وارد کرده و بعد از ذخیره کردن ان با دستور زیر رزبری را راه انداری مجدد می کنیم :

 
sudo reboot

حال دستورات زیر را به ترتیب وارد می کنیم:

 
sudo modprobe w1–gpio
sudo modprobe w1-therm.
cd /sys/bus/w1/devices
ls

که با وارد کردن دستور LS ای دی سنسور خود را رویت خواهیم کرد:

Raspberry-Pi-قterminal-window
Raspberry-Pi-terminal-window

اکنون با رفتن به ادرس با ای دی دریافتی و وارد کردن دستور زیر مقدار دما را در CLW مشاهده می کنیم:

 
cd 28-XXXXXXXXXXXX [use the name of your directory or use Tab key for auto complete)
cat w1_slave

 

ds18b20دما
ds18b20دما

نوشتن کد پایتون برای نمایش دما بر روی LCD با I2C

حال در این بخش با اضافه کردن کتابخانه I2C_LCD_DRIVER و مشخص کردن محل و خط ذخیره شدن دما در حافظه رزبری ، دما را بر روی ال سی دی نمایش می دهیم:

 
import time #import time for creating delay 
#import Adafruit_CharLCD as LCD #Import LCD library 
import I2C_LCD_driver
import os #Import for file handling 
import glob #Import for global
mylcd = I2C_LCD_driver.lcd()

 
#lcd_rs        = 7  #RS of LCD is connected to GPIO 7 on PI
#lcd_en        = 8  #EN of LCD is connected to GPIO 8 on PI 
#lcd_d4        = 25 #D4 of LCD is connected to GPIO 25 on PI
#lcd_d5        = 24 #D5 of LCD is connected to GPIO 24 on PI
#lcd_d6        = 23 #D6 of LCD is connected to GPIO 23 on PI
#lcd_d7        = 18 #D7 of LCD is connected to GPIO 18 on PI
#lcd_backlight =  0  #LED is not connected so we assign to 0
 
#lcd_columns = 16 #for 16*2 LCD
#lcd_rows    = 2 #for 16*2 LCD
#lcd = LCD.Adafruit_CharLCD(lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7, 
                      #     lcd_columns, lcd_rows, lcd_backlight)   #Send all the pin details to libra
mylcd.lcd_display_string("    Redronic",1) #Give a intro message
 
time.sleep(2) #wait for 2 secs
 
 
os.system('modprobe w1-gpio') 
os.system('modprobe w1-therm')
 
base_dir = '/sys/bus/w1/devices/'
device_folder = glob.glob(base_dir + '28*')[0]
device_file = device_folder + '/w1_slave'
 
 
def get_temp(): #Fundtion to read the value of Temperature
    file = open(device_file, 'r') #opent the file
    lines = file.readlines() #read the lines in the file 
    file.close() #close the file 
 
    trimmed_data = lines[1].find('t=') #find the "t=" in the line
 
if trimmed_data != -1:
        temp_string = lines[1][trimmed_data+2:] #trim the strig only to the temoerature value
        temp_c = float(temp_string) / 1000.0 #divide the value of 1000 to get actual value
        return temp_c #return the value to prnt on LCD
 
    
 
while 1: #Infinite Loop
 
   # lcd.clear() #Clear the LCD screen
    mylcd.lcd_clear()  
 #lcd.message ('Temp = %.1f C' % get_temp()) # Display the value of temperature
    mylcd.lcd_display_string("DS18B20 with Pi",1) #Give a intro message
    mylcd.lcd_display_string("Temp = %.1f C" % get_temp(), 2)
    time.sleep(4) #Wait for 1 sec then update the values

در پایان با اتمام نوشتن کد بالا و فشار دادن کلید های CTRL + X و سپس Y (در انتها زدن کلید Enter) اقدام به ذخیره اسکریپت نوشته شده می کنیم.

خروجی برنامه پایتون:

 خروجی برنامه پایتون DS18B20 پروزه راه اندازی با رزبری پای
خروجی برنامه پایتون

zahra_ahmadi

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

یک × 5 =