پروژه راه اندازی سنسور دما 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را در رزبری فعال کنیم:

[python]
sudo nano /boot/config.txt
[/python]

1-WIREفعال کردن
1-WIREفعال کردن

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

[python]
sudo reboot
[/python]

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

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

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

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

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

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

 

ds18b20دما
ds18b20دما

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

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

[python]
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
[/python]

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

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

 خروجی برنامه پایتون DS18B20 پروزه راه اندازی با رزبری پای
خروجی برنامه پایتون
Choose your Reaction!
دیدگاه خود را بنویسید

آدرس ایمیل شما منتشر نخواهد شد.

redronic.com