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

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

0

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

هدف از این آموزش راه اندازی I2C BUS  رسپبری پای به زبان پایتون میباشد    ( شما می توانید سنسور های مشابه که خروجی I2C دارند را به این روش راه اندازی نمایید )

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

  1. رزبری پای (رزبری پای مورد استفاده در این اموزش Raspberry Pi3 model B می باشد.)
  2. 96″ I2C IIC SPI Serial 128X64 OLED LCD
  3. برد بورد
  4. سیم برد بورد

OLED LCD

ماژول نمایشگر OLED یک نمایشگر تک رنگ 0.96 اینچی با رزولیشن 64*128 پیکسل است که به دلیل کنتراست بالا قابلیت خوانایی زیادی را برای کاربر فراهم می آورد. این ماژول نور پس زمینه را خود ایجاد کرده و فاقد Backlight می باشد که از این نظر در مقایسه با LCD باریکتر و شفافیت و کنتراست آن بیشتر است.  این ماژول را می توان در کاربرد های مختلف تجاری نظیر نمایشگر های تلفن همراه ، مدیا پلیرهای دیجیتال قابل حمل رادیو و دوربین های دیجیتال بکار برد. ولتاژ تغذیه برای این ماژول 3.3V و جریان مصرفی آن بطور میانگینmA 20می باشد. این ماژول به آسانی توسط آردینو قابل راه اندازی است.
ولتاژ تغذيه سنسور بين 1.8 تا 3.6 ولت بوده و خروجي سنسور بصورت ديجيتال و با رابط I2C است و شما به راحتی می توانید تنها با دو سیم با برد رزبری پایارتباط برقرار کنید.

تعریف پایه های OLED LCD

برای آسانتر شدن اتصال سخت افزاری سنسور ترتیب پایه ها را ملاحظه میکنید:

پایه های ال سی دی OLED
پایه های ال سی دی OLED

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

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

  1. اتصال پین مثبت سنسور به پین 3.3ولت برد رزبری پای (سیم قرمز)
  2. اتصال پین منفی سنسور به پین GND برد رزبری پای (سیم مشکی)
  3. اتصال پین دیتا سنسور به پین SDA رزبری پای(سیم آبی)
  4. اتصال پین کلاک سنسور به پین SCL رزبری پای(سیم نارنجی)
اتصال ال سی دی OLED به رزبری پای
اتصال ال سی دی OLED به رزبری پای

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

قبل از اسکریپت نویسی پایتون باید از  فعال بودن I2C و اپدیت بودن رزبری پای مورد استفاده مطمین شویم.بدین منظور پنجره CommandLine را باز کرده و دستورات زیر را جهت آپدیت سیستم عامل و نصب آن وارد می کنیم:

[python]
[python]
sudo apt-get update
sudo apt-get upgrade
[/python]

در ادامه بعد از به روز رسانی و نصب ان باید python و (پکیج های کتابخانه استاندارد پایتون)pip را بر روی رزبری پای خود نصب کنیم.بدین منظور دستور زیر را در CommandLine وارد می کنیم:

[python]
sudo apt-get install python-dev python-pip
[/python]

حال قبل از دانلود کتابخانه BMP180 با وارد کردن دستور زیر در CommandLine از نصب بودم آخرین نسخه پکیج های  setuptools, wheel و pip مطمئن میشویم:

[python]
sudo python -m pip install –upgrade pip setuptools wheel
[/python]

اکنون با استقاده از دستور زیر برسی کرده که ایا برد رزبری پای OLED را می شناسد یا خیر:

[python]
sudo i2cdetect -y 1
[/python]

در صورت مواجهه با Error دستور زیر را وارد کنید:
[python]
sudo i2cdetect -y 0
[/python]

که بعد از شناسایی ماژول پاسخ زیر را در پنجره CLW مشاهده می کنید:

شناسایی OLED توسط رزبری پای

حال با استفاده از دستور زیر پکیج I2C  را برای رزبری دانلود کرده:
[python]
sudo apt-get install git build-essential python-dev python-smbus
[/python]
و در پایان کتابخانه پایتون OLED را دانلود می کنیم
و سپس نصب کتابخانه:
CD Adafruit_Python_SSD1306
[python]
sudo python setup.py install
[/python]
تمامی دستورات آماده سازی به ترتیب به صورت زیر می باشد:
[python]
sudo apt install -y python-dev
sudo apt install -y python-imaging python-smbus i2c-tools
sudo apt install -y python-pil
sudo apt install -y python-pip
sudo apt install -y python-setuptools
[/python]
برنامه نویسی پایتون برای OLED
 
ابتدا با وارد کردن دستور زیر یک اسکریپت پایتون برای کدنویسی ایجاد می کنیم:
[python]
nano ~/OLED.py
[/python]
سپس بعد از وارد شدن به اسکریپت پایتون ، ابتدا کتابخانه مربوط به سنسور را با دستور زیر اضافه می کنیم :
[python]
import Adafruit_Python_SSD1306
[/python]
در  مثال زیر یک عبارت را بر روی lcd حرکت می دهیم:
[python]
import math
import time
import Adafruit_GPIO.SPI as SPI
import Adafruit_SSD1306
from PIL import Image
from PIL import ImageFont
from PIL import ImageDraw
# Raspberry Pi pin configuration:
RST = 24
# Note the following are only used with SPI:
DC = 23
SPI_PORT = 0
SPI_DEVICE = 0
# Beaglebone Black pin configuration:
# RST = ‘P9_12’
# Note the following are only used with SPI:
# DC = ‘P9_15’
# SPI_PORT = 1
# SPI_DEVICE = 0
# 128×32 display with hardware I2C:
disp = Adafruit_SSD1306.SSD1306_128_32(rst=RST)
# 128×64 display with hardware I2C:
# disp = Adafruit_SSD1306.SSD1306_128_64(rst=RST)
# 128×32 display with hardware SPI:
# disp = Adafruit_SSD1306.SSD1306_128_32(rst=RST, dc=DC, spi=SPI.SpiDev(SPI_PORT, SPI_DEVICE, max_speed_hz=8000000))
# 128×64 display with hardware SPI:
# disp = Adafruit_SSD1306.SSD1306_128_64(rst=RST, dc=DC, spi=SPI.SpiDev(SPI_PORT, SPI_DEVICE, max_speed_hz=8000000))
# Initialize library.
disp.begin()
# Get display width and height.
width = disp.width
height = disp.height
# Clear display.
disp.clear()
disp.display()
# Create image buffer.
# Make sure to create image with mode ‘1’ for 1-bit color.
image = Image.new(‘1’, (width, height))
# Load default font.
font = ImageFont.load_default()
# Alternatively load a TTF font. Make sure the .ttf font file is in the same directory as this python script!
# Some nice fonts to try: http://www.dafont.com/bitmap.php
# font = ImageFont.truetype(‘Minecraftia.ttf’, 8)
# Create drawing object.
draw = ImageDraw.Draw(image)
# Define text and get total width.
text = ‘WWW.REDRONIC.COM’
maxwidth, unused = draw.textsize(text, font=font)
# Set animation and sine wave parameters.
amplitude = height/4
offset = height/2 – 4
velocity = -2
startpos = width
# Animate text moving in sine wave.
print(‘Press Ctrl-C to quit.’)
pos = startpos
while True:
# Clear image buffer by drawing a black filled box.
draw.rectangle((0,0,width,height), outline=0, fill=0)
# Enumerate characters and draw them offset vertically based on a sine wave.
x = pos
for i, c in enumerate(text):
# Stop drawing if off the right side of screen.
if x > width:
break
# Calculate width but skip drawing if off the left side of screen.
if x < -10:
char_width, char_height = draw.textsize(c, font=font)
x += char_width
continue
# Calculate offset from sine wave.
y = offset+math.floor(amplitude*math.sin(x/float(width)*2.0*math.pi))
# Draw text.
draw.text((x, y), c, font=font, fill=255)
# Increment x position based on chacacter width.
char_width, char_height = draw.textsize(c, font=font)
x += char_width
# Draw the image buffer.
disp.image(image)
disp.display()
# Move position for next frame.
pos += velocity
# Start over if text has scrolled completely off left side of screen.
if pos < -maxwidth:
pos = startpos
# Pause briefly before drawing next frame.
time.sleep(0.1)
[/python]
در پایان با اتمام نوشتن کد بالا و فشار دادن کلید های CTRL + X و سپس Y (در انتها زدن کلید Enter) اقدام به ذخیره اسکریپت نوشته شده کرده و با وارد کردن دستور زیر در پتجره CommandLine آن را اجرا می کنیم
[python]
python ~/OLED.py
[/python]
خروجی برنامه پایتون:

پروژه راه اندازی ال سی دی OLED با رزبری پای
پروژه راه اندازی ال سی دی OLED با رزبری پای
Choose your Reaction!
دیدگاه خود را بنویسید

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

redronic.com