پروژه الکترونیکپروژه خانه هوشمندپروژه های Espپروژه های بلوتوث

کنترل وسایل خانه با موبایل اندروید و بلوتوث برد ESP32

در این پروژه ESP32 ما با استفاده از یک گوشی اندروید از طریق بلوتوث کم مصرف BLE با میکروکنترلر ESP32 ارتباط برقرار میکنیم و با موبایل Android پین های برد را کنترل میکنیم. برنامه نویسی این پروژه با نرم افزار آردوینو انجام میشود. در این پروژه ما یک ال ای دی را کنترل میکنیم و شما میتوانید به دلخواه دستور و پین را تنظیم کنید. فیلم عملکرد پروژه در انتهای صفحه قرار داده شده است.

ماژول های بلوتوث مانند HC-05 و HC-06 با Arduino IDE به راحتی قابل تنظیم هستند ، اما محدودیت خاص خود را مانند مصرف برق زیاد دارند و در بلوتوث قدیمی V2.0 کار می کنند. همچنین اخیراً من خودم یک کیت ESP32 DEV جدید دریافت کردم ، این ماژول ها دارای ویژگی هایی مانند Wi-Fi و بلوتوث داخلی ، پین های ADC و DAC ، پشتیبانی صوتی ، پشتیبانی از کارت SD ،  حالت Deep Sleep و … هستند. یعنی همه چیز برای پروژه های اینترنت اشیا آماده است.

شروع کار با بلوتوث ESP32

اولین برنامه ای که میخواستم امتحان کنم یک برنامه ساده بود که با استفاده از آن می توانستم یک چراغ را با استفاده از یک اپلیکیشن اندروید روشن یا خاموش روشن کنم ، درست مثل پروژه های قدیمی ما با ماژول بلوتوث HC-05. اما معلوم است که ، بلوتوث کم انرژی (BLE) دارای ویژگی های بیشتری است. همچنین متوجه شدم که در ماژول ESP32 دو نوع بلوتوث وجود دارد ، یکی بلوتوث کلاسیک و دیگری بلوتوث کم انرژی (BLE (Bluetooth Low Energy. چرا ما دو نوع بلوتوث داریم و برای پروژه خود از چه چیزی باید استفاده کنیم؟

تقاوت بلوتوث کم انرژی و بلوتوث کلاسیک

بلوتوث کم انرژی ، همانطور که از نامش پیداست ، نسبت به بلوتوث کلاسیک ، انرژی کمتری مصرف می کند. اما برخلاف بلوتوث کلاسیک ، از آن برای انتقال فایلها یا موسیقی استفاده نمی شود. آیا تا به حال به این فکر کرده اید که چگونه تلفن شما به طور خودکار تشخیص می دهد که دستگاه بلوتوثی که شما به آن متصل شده اید یک دستگاه صوتی یا یک لپ تاپ یا تلفن است ، شاید هم دیده اید که سطح باتری در پخش کننده صوتی بی سیم یا دست بند های تناسب اندام به طور خودکار در نوار وضعیت نشان داده شده میشود.  همه اینها با مشخصات دستگاههای BLE امکان پذیر است. یک دستگاه BLE با بلوتوث V4.0 کار می کند و می تواند با قدرت کم به عنوان یک سرور یا به عنوان مشتری کار کند که BLE را به یک انتخاب ایده آل برای ساعت های هوشمند ، دستبند تناسب اندام و … تبدیل می کند.

از طرف دیگر بلوتوث کلاسیک فقط بلوتوث ساده و قدیمی ساده است که ما برای انتقال پرونده ها و داده های دیگر از آن استفاده می کنیم. تقریباً تمام دستگاههای BLE دارای عملکرد بلوتوث کلاسیک نیز هستند. بلوتوث مورد استفاده در ماژول هایی مانند HC-05 نسخه ای از بلوتوث کلاسیک به نام بلوتوث SSP (پروتکل پورت سریال) است ، به این معنی که بلوتوث از پروتکل سریال استاندارد پیروی می کند که ارسال و دریافت داده ها را راحت تر می کند. در پایان این آموزش نحوه استفاده از قابلیت های سریال بلوتوث در ESP32 را یاد خواهیم گرفت.

حتما ببینید :  ساخت دماسنج بدون تماس با آردوینو (مخصوص کرونا و ثبت در فرمت اکسل)

در اینجا در این مقاله ما از عملکرد سریال بلوتوث در ESP32 استفاده می کنیم تا آن را با تلفن همراه اندروید جفت کنیم و از هر برنامه Bluetooth Terminal موجود در Play Store برای ارسال دستورات به ESP32 استفاده می کنیم و LED روی برد ESP32 را کنترل میکنیم.

در مقالات بعدی ESP32 BLE را به عنوان سرور پوشش خواهیم داد. سرور BLE به طور کلی برای ارسال داده های BLE به سایر دستگاه های بلوتوث استفاده می شود و از مشتری BLE برای اسکن سایر دستگاه های BLE استفاده می شود.

کد پروژه سریال بلوتوث ESP32 برای خانه هوشمند

کد کامل برای کنترل یک ال ای دی با استفاده از بلوتوث ESP32 در انتهای صفحه در فایل دانلودی قرار داده شده است. در اینجا بعضی از قسمت های کد را بررسی میکنیم. همانطور که گفته شد این کد با استفاده از نرم افزار آردوینو نوشته میشود، بنابراین پیشنهاد میکنم آموزش برنامه نویسی ESP32 با آردوینو را بخوانید.

ما در اینجا برنامه را طوری تنظیم میکنیم که هرگاه در نرم افزار اندروید تلفن خود 1 را وارد کنیم، ال ای دی روشن شود و هر گاه 0 را وارد کنیم ال ای دی خاموش شود. شما میتوانید به آسانی این دستورات را تغییر و شخصی سازی کنید.

در ابتدای کد ما کتابخانه سریال بلوتوث را فراخوانی میکنیم.

#include "BluetoothSerial.h" //کتابخانه سریال بلوتوث

مورد بعدی که ما نیاز داریم یک شی برای عملیات های مربوط به بلوتوث است. در اینجا من یک شیئ (Object) را به عنوان ESP_BT نامگذاری کرده ام ، اما شما می توانید هر اسمی را انتخاب کنید.

BluetoothSerial ESP_BT; //Object for Bluetooth

سپس در داخل تابع () void setup ارتباط سریال را با baud rate 9600 شروع می کنیم و سیگنال بلوتوث را با یک نام شروع می کنیم. در اینجا من آن را “ESP32_LED_Control” نامگذاری کرده ام ، این نامی خواهد بود که هنگام تلاش برای جفت شدن با تلفن ما نمایش داده می شود. سرانجام من پین LED داخلی را به عنوان پین خروجی اعلام کردم زیرا می خواهیم وضعیت آن پین را بر اساس سیگنال دریافتی بلوتوث تنظیم کنیم.

void setup() {
  Serial.begin(9600); // ارتباط سریال با baud rate 9600
  ESP_BT.begin("ESP32_LED_Control"); // نام سیگنال بلوتوث
  Serial.println("Bluetooth Device is Ready to Pair");

  pinMode (LED_BUILTIN, OUTPUT);//تنظیم پین خروجی
}

در داخل تابع void loop () ، بررسی می کنیم که آیا داده ای از ماژول بلوتوث وجود دارد یا خیر ، اگر بله ، داده ها در متغیر ورودی دریافت و خوانده می شوند. ما همچنین این مقدار را در مانیتور سریال صرفاً برای چک کردن آنچه از دریافت میشود نمایش میدهیم.

  if (ESP_BT.available()) // بررسی وجود سیگنال ورودی
  {
    incoming = ESP_BT.read(); // خواندن آنچه که دریافت میشود
    Serial.print("Received:"); Serial.println(incoming); // نمایش اطلاعات در سریال مانیتور

حال هرچه داده دریافت می شود در متغیر ورودی ذخیره می شود ، بنابراین می توانیم مستقیماً این متغیر را با مقدار مورد انتظار مقایسه کنیم و عمل مورد نیاز را انجام دهیم. اما مقدار ارسالی از بلوتوث به شکل char خواهد بود و آردوینو مقدار دسیمال از char را میخواند. مقاله آموزش کامل دسیمال میتواند به شما کمک کند.

حتما ببینید :  پروژه سرعت سنج GPS با آردوینو و نمایشگر OLED

در اینجا همانطور که گفته شد ما از اعداد 0 و 1 استفاده میکنیم. در دسیمال مقدار char ‘0’ برابر با 48 و char ‘1’ برابر با 49 خواهد بود.

اگر در مورد این مطلب سوالی داشتید در انتهای صفحه در قسمت نظرات بپرسید.

در اینجا متغیر ورودی را با 48 و 49 برای بررسی 0 و 1 مقایسه کرده ایم. اگر عدد 0 باشد ، ما LED را خاموش می کنیم و همچنین یک پیام تصدیق در تلفن همراه نشان داده میشود و برای عدد 1 هم ال ای دی را روشن میکنیم و یک پیام در تلفن همراه نشان داده میشود.

    if (incoming == 49) // بررسی ورودی
        {
        digitalWrite(LED_BUILTIN, HIGH); // روشن کردن ال ای دی
        ESP_BT.println("LED turned ON"); // پیام نمایش داده شده در تلفن
        }
       
    if (incoming == 48) // بررسی ورودی
        {
        digitalWrite(LED_BUILTIN, LOW); // خاموش کردن ال ای دی
        ESP_BT.println("LED turned OFF"); // پیام نمایش داده شده در تلفن
        }

تست بلوتوث سریال با برد ESP32

ESP خود را به Arduino IDE وصل کنید و Board و Port صحیح را انتخاب کنید. ممکن است آپلود کد کمی طول بکشد. سریال مانیتور را باز کنید (این کار فقط برای تشریح عملکرد استفاده میشود و اختیاری است) و سپس نرم افزار بلوتوث ترمینا را در تلفن خود باز کنید. بر طبق کد داده شده شما باید یک دستگاه با نام ESP32_LED_Control مشاهده کنید. با آن جفت شوید.

تست بلوتوث سریال با برد ESP32

من از یک برنامه بنام “Bluetooth Terminal” که از فروشگاه برنامه Google بارگیری شده است ، استفاده می کنم. برنامه بلوتوث را در موبایل خود نصب کنید و عدد 1 را وارد کنید.

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

ماژول ESP32 آن را دریافت کرده و LED را مطابق کد ما روشن می کند و همچنین یک پیام تأیید به شما می گوید  LED مانند روشن است. همچنین می توانید مانیتور سریال را بررسی کنید که داده های دریافت شده توسط ESP32 Bluetooth را با فرمت اعشاری نشان می دهد و آردوینو 48 را برای 0 و 49 برای 1 می خواند همانطور که در ابتدا توضیح داده شد. عکس پنجره سریال مانیتور من در زیر نشان داده شده است.

ارسال اطلاعات از اندروید به ESP32

به همین ترتیب باید با ارسال 0 از برنامه تلفن همراه ، LED را خاموش کنید. فیلم زیر به شما در درک نحوه کار این پروژه کمک میکند.

دانلود فیلم پروژه کنترل وسایل خانه با برد ESP32

موارد موجود در فایل : سورس کامل

برای دانلود فایل های پروژه ثبت نام کنید، تنها چند ثانیه زمان لازم است. از طریق فرم زیر اقدام کنید.

ایمیل خود را وارد کنید

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

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید را قرار دهم. (در خصوص سوال در مورد این مطلب از قسمت نظرات همین مطلب اقدام کنید)

2 نظر

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

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

دکمه بازگشت به بالا