نمایشگرهای OLED در بین دیگر نمایشگرها از به دلیل کیفیت و رزولوشن بسیار بالا پرطرفدار هستند. نمایشگر OLED دارای رابط I2C است و ارتباط با میکروکنترلرها توسط دو پایه I2C که به ترتیب SDA , SCL است برقرار میشود. در این آموزش به معرفی و راه اندازی نمایشگر OLED و ارتباط با رزبری پای میپردازیم. در ادامه با مرجع تخصصی رزبری پای به زبان فارسی، دیجی اسپارک همراه باشید.
نمایشگر OLED SSD1306
محبوب ترین ماژول OLED که در حال حاضر در صنعت الکترونیک و بردهای توسعه میکروکنترلر استفاده میشود، نمایشگر OLED با درایور قدرتمند SSD1306 است که در ظاهرهای مختلف به بازار ارائه شده است. چیپ SSD1306 یک کنترل کننده درایور قدرتمند CMOS است. این درایور از پروتکل های ارتباطی I2C و SPI پشتیبانی میکند و با توجه به اینکه در پروتکل I2C تنها با دو پایه برای اتصال نیاز دارد، برای اتصال OLED به میکروکنترلرها از این پروتکل بیشتر استفاده خواهیم کرد. ولتاژ کاری نمایشگر ۳٫۳ و ۵ ولت است و از هر دو پایه های تعذیه میکروکنترلر میتوانید استفاده کنید. زاویه دید نمایشگر ۱۶۰ درجه است و ابعاد آن ۰٫۹۶ اینچ است. نمایشگر دارای ۸ سطر و ۱۲۸ ستون است.
نمایشگر OLED از دو پایه SDA , SCL استفاده میکند. پایه SDA پایه Data line و پایه SCL پایه Clock line است که بابستی با پایه های I2C برد میکروکنترلر ارتباط برقرار کند. با توجه به اینکه پروتکل ارتباطی نمایشگر ماژول OLED به صورت I2C است، با تمامی میکروکنترلرهایی که از پروتکل I2C پشتیبانی میکنند قابل تست و راه اندازی است و بدون نگرانی با نصب کتابخانه های مرتبط میتوانید ماژول نمایشگر را راه اندازی و استفاده کنید. در این تصویر به ترتیب پایه های GPIO2 و GPIO3 پایه های SDA و SCL هستند که به سنسور و ماژول های I2C متصل میشود.
فعال سازی رابط I2C در برد رزبری پای
جهت ارتباط بین سنسور و رزبری پای بایستی رابط I2C را فعال کنید. برای اینکار پس از روشن شدن رزبری پای از منو Preferences بر روی Raspberry pi configuration کلیک کنید:
menu / Preferences / Raspberry pi Configuration
سپس همانند تصویر زیر رابط I2C را فعال Enable کنید.
نصب پکیج Adaruit SSD1306
برای راه اندازی نمایشگر OLED به پکیج Adafruit SSD1306 نیاز داریم. برای اینکار کافیست کامندهای مربوط به کتابخانه را یک به یک نصب کنید. در صورتیکه تا به حال هیچ یک از پکیج های پیش فرض پایتون را نصب نکرده اید و یا از نصب آن ها اطمینان ندارید. یک به یک کامندها زیر را بررسی و در ترمینال وارد کنید.
sudo apt install -y python3-dev sudo apt install -y python-smbus i2c-tools sudo apt install -y python3-pil sudo apt install -y python3-pip sudo apt install -y python3-setuptools sudo apt install -y python3-rpi.gpio
در مرحله بعدی بایستی کد I2C ماژول نمایشگر OLED را دریافت کنید. برای اینکار کافیست طبق جدول اتصالات در ابتدا اتصال نمایشگر OLED به رزبری پای را انجام دهید. پایه های SDA و SCL را به ترتیب به GPIO2 و GPIO3 وصل کنید. سپس کامند زیر را وارد کنید تا کد I2C نمایش داده شود.
i2cdetect -y 1
کد I2C شناخته شده ۳C است که کاملا صحیح است و در دیتاشیت کتابخانه به آن اشاره شده است.
نصب کتابخانه پایتون OLED
جهت نمایش متن، شکل های مختلف و عبارات در نمایشگر OLED از کتابخانه Adafruit SSD1306 استفاده میکنیم. ترمینال را مجدد باز کرده و در ابتدا کامند زیر را وارد کنید.
sudo apt install -y git
در مرحله بعدی کامند کلون فراخوانی کتابخانه Adafruit python ssd1306 را وارد کنید.
git clone https://github.com/adafruit/Adafruit_Python_SSD1306.git
در این مرحله Enter را وارد کنید تا پکیج نصب شود.
تا این مرحله کتابخانه به درستی نصب شده است. با دستور زیر آن را فراخوانی کنید.
cd Adafruit_Python_SSD1306
برای نصب کتابخانه برای پایتون ۲ و پایتون ۳ به ترتیب کامندهای زیر را وارد کنید.
// پایتون ۲ sudo python setup.py install //پایتون ۳ sudo python3 setup.py install
اجرای اسکریپت پایتون OLED
برای اجرای اسکریپت پایتون OLED ابتدا از مثال های پیش فرض کتابخانه استفاده میکنیم تا با دستورات آشنا شویم.
cd examples
برنامه هایی که به صورت پیش فرض میتوانید اجرا کنید به صورت زیر است.
- animate.py
- buttons.py
- image.py
- shapes.py
- stats.py
نمایش اشکال و متن OLED
به عنوان مثال اولین برنامه پیش فرض shapes.py را اجرا میکنیم.
cd Adafruit_Python_SSD1306 cd examples python shapes.py
نمایش انیمیشن در OLED
دومین مثال نمایش انیمیشن بر روی OLED است.
cd Adafruit_Python_SSD1306 cd examples python animate.py
نمایش متن در OLED
برای نمایش متن مورد نظر در OLED از دستورات و توابع کتابخانه Adafruit Python SSD1306 استفاده میکنیم. برای اینکار کافیست یک اسکپریپت پایتون نوشته و اجرا کنید. در مرحله اول یک اسم دلخواه برای نام فایل انتخاب میکنیم و در ترمینال با دستور sudo nano معرفی میکنیم.
sudo nano oledssd1306.py
import Adafruit_SSD1306 from PIL import Image, ImageDraw, ImageFont import RPi.GPIO as GPIO # Adafruit_Python_SSD1306 graphics library configuration for # SunFounder OLED SSD1306 Display Module. # Use the configuration compatible with your display module. # See library "examples" directory for configuration selection. # ۱۲۸x64 display with hardware I2C and no reset pin display = Adafruit_SSD1306.SSD1306_128_64(rst=None) # Setup display.begin() # initialize graphics library for selected display module display.clear() # clear display buffer display.display() # write display buffer to physical display displayWidth = display.width # get width of display displayHeight = display.height # get height of display image = Image.new('1', (displayWidth, displayHeight)) # create graphics library image buffer draw = ImageDraw.Draw(image) # create drawing object font = ImageFont.load_default() # load and set default font # Draw text draw.text((0,0), "Hello,\Theladypi!", font=font, fill=255) # print text to image buffer # Display to screen display.image(image) # set display buffer with image buffer display.display() # write display buffer to physical display # Cleanup GPIO.cleanup() # release all GPIO resources
تحلیل کد پایتون OLED
جهت تحلیل کد پایتون در ابتدا دستورات و توابع کتابخانه Adafruit ssd1306 را فراخوانی کنید.
import Adafruit_SSD1306 from PIL import Image, ImageDraw, ImageFont import RPi.GPIO as GPIO
در مرحله بعد نوع نمایشگر و پایه ریست را انتخاب میکنیم.
display = Adafruit_SSD1306.SSD1306_128_64(rst=None)
سپس تنظیمات مربوط به Setup را انجام میدهیم.
display.begin() display.clear() display.display() displayWidth = display.width displayHeight = display.height image = Image.new('1', (displayWidth, displayHeight)) draw = ImageDraw.Draw(image) font = ImageFont.load_default()
در این بخش در ابتدا توابع معرفی نمایشگر OLED را طبق کتابخانه فراخوانی میکنیم. سپس به ترتیب طول و عرض نمایشگر را وارد کرده و تعریف میکنیم. در مرحله بعد کتابخانه گرافیکی image و با انتخاب یک آبجکت برای آن را تعریف کرده و در برنامه وارد کنید. نمایش متن در OLED به صورت زیر در برنامه با انتخاب فونت و سایز نوشته میشود.
draw.text((0,0), "Hello,\nRaspberry Pi!", font=font, fill=255)
به همین سادگی میتوانید متن دلخواه را در برنامه وارد کرده و بر روی نمایشگر OLED نمایش دهید.
وسایل مورد نیاز
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
سلام
خیلی ممنونم از توضیحات لطفا با ال سی دی کاراکتری هم آموزشی منتشر کنید.
با سلام
در این خصوص قبلا آموزشی جداگانه منتشر شده است. لینک زیر را بررسی کنید.
راه اندازی ال سی دی کاراکتری با رزبری پای
سلام پایه های gpio 0 , gpio 1 که به ID_SC , ID_SD نمایش داده شده اند میتوانند برای متصل کردن سنسور استفاده شوند؟ یا برای منظور خاصی کنار گذاشته شده اند؟
با سلام
کد مدل oled را میفرمایید؟