آموزش Espآموزش ESP32آموزش اینترنت اشیاپروژه های Esp

آموزش اتصال ال سی دی کاراکتری 16*2 به ESP32

در این آموزش ما ال سی دی کاراکتری 16×2 را به ESP32 و فقط با استفاده از 2 پین با کمک پروتکل ارتباطی I2C متصل می کنیم. این پروتکل تعداد پین های مورد استفاده توسط ESP32 را کاهش می دهد به طوری که تعداد بیشتری از پین های ESP32 برای ارتباط با سنسور های مختلف آزاد باقی می مانند.

ما به فایل های بورد برای ESP32 احتیاج داریم ، بنابراین اگر تازه وارد در زمینه ESP32 هستید ، ابتدا آموزش برنامه نویسی ESP32 با آردوینو را بخوانید. شما همچنین می توانید ال سی دی را به ESP32 بدون ماژول I2C وصل کنید ، اما پین های بیشتری از ESP32 استفاده میشود. برای اتصال ال سی دی کاراکتری به ESP32 بدون استفاده از ماژول I2C، آموزش جامع اتصال LCD کاراکتری به برد آردوینو را بخوانید.

فیلم زیر به شما در درک نحوه کار این کد کمک میکند. هرچیزی در سریال مانیتور نوشته شود، روی ال سی دی کاراکتری قرار میگیرد.

پروتکل ارتباطی I2C چیست؟

I2C یک پروتکل ارتباطی همزمان است ، یعنی دستگاههایی که اطلاعات را به اشتراک می گذارند باید یک سیگنال ساعت مشترک داشته باشند. این نوع پروتکل ارتباطی فقط دو سیم دارد. SDA و SCL برای به اشتراک گذاری اطلاعات هستند که از SCL برای سیگنال ساعت و SDA برای ارسال و دریافت داده استفاده می شود.

شما می توانید ماژول LCD I2C را خریداری کنید که در آن کنترلر LCD I2C1602 تعبیه شده است یا می توانید به سادگی کنترلر I2C را برای ارتباط LCD 16×2 با ESP32 خریداری کنید.

مدار اتصال LCD کاراکتری به ESP32

شماتیک مدار اتصال ال سی دی کاراکتری به ESP32 در تصویر زیر نشان داده شده است.

مدار اتصال LCD کاراکتری به ESP32

پین 1-16 ماژول I2C را به پین ​​1-16 صفحه نمایش LCD وصل کنید.
پین SDA ماژول I2C -> پین SDA ESP32 یعنی D11
پین SCL ماژول I2C -> پین SCL ESP32 یعنی D22

بهتر است برای تغذیه ماژول I2C از منبع تغذیه خارجی 5 ولت استفاده شود.

قطعات مورد نیاز

  1. برد ESP32
  2. ال سی دی کاراکتری 16*2
  3. کنترلر LCD I2C
قطعات مورد نیاز را از فروشگاه قطعات آیرنکس تهیه کنید.

کنترلر LCD دارای پتانسیومتر داخلی برای کنترل کنتراست LCD است.

کد یافتن آدرس کنترل کننده I2C

قبل از ورود به کد اصلی ابتدا باید آدرس ماژول I2C را پیدا کنیم.

کنترلر I2C دارای بیت آدرس است که برای کنترل I2C استفاده می شود. آدرس پیش فرض 0x27 است اما در بعضی موارد می تواند 0x3f باشد. بنابراین ، برای بررسی آدرس کنترلر I2C ، مدار را مطابق شکل متصل کنید سپس کد زیر را بارگذاری کنید و مانیتور سریال باز کنید ، آدرس آن را در شش ضلعی مشاهده خواهید کرد.

#include <Wire.h>

void setup() {
Serial.begin (9600);
Serial.println ("Scanning I2C device...

Wire.begin();
for (byte i = 0; i <50; i++)
{
Wire.beginTransmission (i);
if (Wire.endTransmission () == 0)
{
Serial.print ("Address found->");
Serial.print (" (0x");
Serial.print (i, HEX);
Serial.println (")");
Count++;
}
Serial.print ("Found ");
Serial.print (count, DEC);
Serial.println (" device");
} 

void loop() {}

کد یافتن آدرس کنترل کننده I2C

توجه داشته باشید که ما از این آدرس در کد اصلی استفاده می کنیم.

در کنترلر I2C همانطور که می بینید سه جامپر با علامت A0 ، A1 و A2 وجود دارد. اینها برای تغییر آدرس ماژول استفاده می شوند. در اینجا نحوه تغییر آدرس از مقدار پیش فرض 0x27 یا 0x3F آورده شده است. جدول زیر نحوه اتصال جامپر ها برای تنظیم آدرس آورده شده است.

اگر در مورد این مطلب سوالی دارید در قسمت نظرات بپرسید
A0 A1 A2 آدرس هگز
1 1 1 0x27
0 1 1 0x26
1 0 1 0x25
0 0 1 0x24
1 1 0 0x23
0 1 0 0x22
1 0 0 0x21
0 0 0 0x20

کد ESP32 برای راه اندازی LCD کاراکتری

ابتدا به یک کتابخانه LiquidCrystal_I2C برای ماژول LCD I2C نیاز داریم. کتابخانه معمولی Liquidcrsytal در اینجا کار نمی کند زیرا ما در اینجا از I2C استفاده می کنیم. دانلود کتابخانه LiquidCrystal_I2C

کد به گونه ای نوشته شده است که هر آنچه در مانیتور سریال تایپ می شود ، بر روی LCD نمایش داده می شود. Arduino IDE برای نوشتن و بارگذاری کد ما استفاده شده است.

ابتدا ، باید کتابخانه Wire را برای ارتباطات I2C درج کنیم.

#include <Wire.h>

سپس برای I2C LCD ،کتابخانه  LiquidCrystal_I2C.h را که قبلاً بارگیری شده است ، درج کنید.

#include <LiquidCrystal_I2C.h>

سپس با کد زیر، ما آدرس ارتباط سریال I2C و نوع ال سی دی کاراکتری را تعریف میکنیم.

LiquidCrystal_I2C lcd(0x27, 16,2); 

در عملکرد void setup () ، ارتباط سریال و LCD را تنظیم میکنیم و نور پس زمینه را روشن میکنیم. اگر می خواهید نور پس زمینه را خاموش کنید از lcd.noBacklight () استفاده کنید و طبق علاقه خود عملکرد setCursor () را تغییر دهید.

void setup()   
{
Serial.begin(9600);  // شروع ارتباط سریال
lcd.init();   // شروع کار ال سی دی
lcd.backlight(); // نور پس زمینه
lcd.setCursor(0,0); // تنظیم مکان متن
lcd.print("Hello, world!"); // نمایش متن
delay(1000); // یک ثانیه تاخیر
lcd.setCursor(0,1); // تنظیم مکان متن
lcd.print("IRENX.IR"); // نمایش متن
delay(3000); // سه ثانیه تاخیر

سپس متنی را نمایش میدهیم که کاربر متوجه شود هر چیزی در سریال مانیتور تایپ کند در ال سی دی نمایش داده میشود. سریال مانیتور را روی “No Line Ending” تنظیم کنید

lcd.clear(); // پاکسازی ال سی دی
lcd.setCursor(0,0); // تنظیم مکان متن
lcd.print("Use Ser. Monitor"); // نمایش متن
lcd.setCursor(0,1); // تنظیم مکان متن
lcd.print("Type to display");  // نمایش متن
}

سپس برنامه را طوری تنظیم میکنیم که هر چیزی در سریال مانیتور تایپ شد، در ال سی دی نمایش داده شود.

عملکرد Loop با استفاده از عملکرد Serial.available () پورت سریال را به طور مداوم بررسی می کند. اگر پیامی وجود داشته باشد، برای 100 میلی ثانیه ثانیه صبر می کند و با استفاده از توابع lcd.write () و Serial.read () پیام بر روی LCD نوشته میشود.

void loop()   {
{
// اگر پیامی در دسترس بود
if (Serial.available()) {
delay(100);               // تاخیر 100 میلی ثانیه ای
lcd.clear();                // پاکسازی ال سی دی
while (Serial.available() > 0) {                // خواندن کاراکتر ها
lcd.write(Serial.read());             // نمایش کاراکتر ها در ال سی دی
}
}
}
}

کد کامل

کد کامل آموزش راه اندازی ال سی دی کاراکتری با میکروکنترلر ESP32 در باکس زیر آورده شده است.

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 16,2); 

void setup() {
Serial.begin(9600); 
lcd.init(); 
lcd.backlight(); 
lcd.setCursor(0,0); 
lcd.print("Hello, world!");
delay(1000);
lcd.setCursor(0,1);
lcd.print("circuitdigest.com");
delay(3000); 
lcd.clear();
lcd.setCursor(0,0); 
lcd.print("Use Ser. Monitor");
lcd.setCursor(0,1);
lcd.print("Type to display"); 
}

void loop() {
{
if (Serial.available()) {
delay(100);
lcd.clear();
while (Serial.available() > 0) {
lcd.write(Serial.read();
}
}
}
}
4.9 (9 نفر)

برای دریافت مطالب جدید کانال تلگرام یا پیج اینستاگرام ما را دنبال کنید.

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید قرار بدهم. سوالات مربوط به این مطلب را در قسمت نظرات همین مطلب اعلام کنید. سعی میکنم در اسرع وقت به نظرات شما پاسخ بدهم.

24 نظر

  1. سلام خسته نباشید ببخشید ممکنه مشابه همین برنامه رو در میکرو پایتون بنوسید. برد esp32 رو با فریم ورک میکروپایتون فلش کردم البته در نوشتن برنامه های ساده مشکلی نیست ولی وقتی کار به استفاده از کتابخانه ها میشه نمیدونم کتابخانه معادل را در میکرو‌پایتون پیدا کنم ممنون میشم منو راهنمایی کنید

  2. پین 1-16 ماژول I2C را به پین ​​1-16 صفحه نمایش LCD وصل کنید.
    پین SDA ماژول I2C -> پین SDA ESP32 یعنی D11
    پین SCL ماژول I2C -> پین SCL ESP32 یعنی D22

    سلام اینجا نوشتین D11 من تو برد esp 32 همچین چیزی ندارم .
    آیا منظورتون D21 هستش؟؟؟؟؟

    1. سلام عزیز
      بستگی به برد شما داره در بعضی ESP32 ها پین 21 SDA و 22 SCL هست

  3. سلام وقت بخیر
    بنده برای پیدا کردن کد ادرس کنترل کننده ای تو سی روی برنامه اول ارور دارم و مثل اینکه برنامه هم اشکالاتی داره ، اما با ایجاد تغییرات کد کار نکرد
    البته توی خروجی به من Found 0 device رو بر میگردوند
    ممکنه راهنمایی بفرمایید؟

  4. سلام وقت بخیر
    ایا نمیشه بجای lcd کاراکتری 2 در 16 از lcd کاراکتری 4 در 8 استفاده کرد
    همچنین ایا میشه بجای ماژولی که استفاده کردید از ماژول ESP۳۲ CAM استفاده کرد

    1. سلام عزیز
      بله میشه فقط در lcd.begin تعداد ستون و ردیف را تغییر بدید.

  5. با سلام آقای مهندس ، ببخشید ۴ عدد از این ال سی دی ها داشته باشیم چطور با یک اردینو وصل میشن ، آیا با i2c میشه آدرس دهی کرد هرکدام از ال سی دی ها که دیتا خودشان نمایش بدن ، ممنون

    1. سلام عزیز
      بله با i2C میشه هر ال سی دی باید آدرس متفاوت داشته باشه

  6. سلام وقتتون بخیر
    ببخشید اسم موزیکی که روی فیلم گذاشتید رو میشه بگید خیلی ممنون.

  7. آقا مشکلم حل شد فقط آخر جملات روی ال سی دی دوتا علامت عجیب غریب ظاهر میشه اون برای چیه؟

    1. میتونه بخاطر نویز باشه اتصالاتتون رو محکم کنید

  8. من به NODE MCUوصل کردم ولی ال سی دی فقط رنگ آبی نشون میده مشکل از کجاست؟

    1. سلام عزیز، اگر کاملا آبی هست و هیچ چیزی مشاهده نمیشه کنتراست ال سی دی رو تغییر بدید.

  9. اگه لب تاپ در دسترس نباشه چجوری سریال مانتور رو باز کنم و آی پی رو بردارم که نود رو کنترل کنم؟

  10. من نود رو به موبایل وصل میکنم و هر وقت برق قطع و وصل میشه آی پی تغییر میکنه
    شما میتونید راهنمایی کنید لطفا

    1. سلام عزیز. این مسئله طبیعیه مشکلش کجاست؟

  11. سلام آی پی نود ام سی رو هم میشه روی ال سی دی نمایش داد با این کد؟

    1. سلام عزیز، بله آیپی رو در یک متغیر ذخیره کنید و پرینت بگیرید.

  12. سلام وقتتون بخیر
    برای اتصال LCD ب برد حتما باید ماژول کنترلر LCD I2C داشته باشیم ؟
    نمیشه مستقیم وصل کرد ؟

    1. سلام جناب، در این پروژه از این رابط استفاده شده در صورتی که بخواهید مستقیم وصل کنید نیاز به تغییر در کد پروژه هست.

دیدگاهتان را بنویسید

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