کنترل وسایل خانه با موبایل اندروید و بلوتوث برد 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 را میخواند. مقاله آموزش کامل دسیمال میتواند به شما کمک کند.
در اینجا همانطور که گفته شد ما از اعداد 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 مشاهده کنید. با آن جفت شوید.
من از یک برنامه بنام “Bluetooth Terminal” که از فروشگاه برنامه Google بارگیری شده است ، استفاده می کنم. برنامه بلوتوث را در موبایل خود نصب کنید و عدد 1 را وارد کنید.
ماژول ESP32 آن را دریافت کرده و LED را مطابق کد ما روشن می کند و همچنین یک پیام تأیید به شما می گوید LED مانند روشن است. همچنین می توانید مانیتور سریال را بررسی کنید که داده های دریافت شده توسط ESP32 Bluetooth را با فرمت اعشاری نشان می دهد و آردوینو 48 را برای 0 و 49 برای 1 می خواند همانطور که در ابتدا توضیح داده شد. عکس پنجره سریال مانیتور من در زیر نشان داده شده است.
به همین ترتیب باید با ارسال 0 از برنامه تلفن همراه ، LED را خاموش کنید.
موارد موجود در فایل : سورس کامل
برای دانلود فایل ها باید حساب کاربری داشته باشید ثبت نام / ورود
سلام
اشکالی داره بجای سوکت برق رو به GND و VIN بدهیم
ببخشید یک سوال داشتم برای برنامه نویسی برد های esp میکروپایتون بهتره یا زبان سی و ممکنه همین پروژه را به زبان میکروپایتون هم ارائه بدهید. همه پروژههای esp32 به زبان c میباشد و میکروپایتون اصلا پیدا نکردم ممنون میشم چند تا پروژه هم به زبان میکروپایتون بزارید
سلام عزیز
میکروپایتون نسبتا جدید هست به همین خاطر مستندات زیادی برای آن وجود ندارد
سلام
تشکر میکنم از آموزش های شما
میشه توضیح بدید دوره اینترنتت اشیاء حرفه ای شامل
چه چیز هایی میشه؟
سلام عزیز
در صفحه دوره در قسمت سرفصل ها مواردی که در دوره آموزش داده شده است را مشاهده میکنید
سلام وقت بخیر
زمانی که کد رو varefy میکنم این ارور رو بهم میده
Compilation error: no matching function for call to ‘BluetoothSerial::BluetoothSerial()’
چیکار باید بکنم؟
سلام منظورم کد آردوینو که بر روی esp32 آپلود میشه، ممکنه یه پسورد هم براش قرار بدین لطفا 🙏
سلام. چرا کتابخانه bloutoos serial. h روی برد esp32cam آپلود نمیشه؟ بلوتوث این برد رو چطور میتونم فعال کنم؟
با سلام و تشکر – اگر همین کار را بخواهیم با اپ اختصاصی کنیم راهی وجود دارد ؟
سلام عزیز
بله فقط باید یک اپ طراحی کنید که به سریال بلوتوث متصل بشه
سلام
ببخشید میشه راهنمایی کنید اگر بخواهیم با esp32 یک فایلی رو از اینترنت دانلود و روش ذخیره کنیم
سلام عزیز
در منابع خارجی جستجو کنید
سلام خداقوت ❤️
لطف میکنید کتاب خونه هم لینک بزارین
سلام عزیز
کتابخونه مورد نیاز به صورت پیشفرض در آردوبنو موجود هست
سلام خسته نباشید میخواستم ببینم بلوتوث و وای فای ماژول esp 32 چطوری فعال میشه اگه راهنمایی کنین ممنون میشم
سلام عزیز
از همین پروژه میتونید استفاده کنید
سلام ببخشید آیا می توان از بلوتوث ESP32 را به آردوینو وصل کرد و از آن به عنوان ماژول بلوتوث آردوینو استفاده کرد ؟
سلام عزیز
بله میشه اما منطقی نیست برای آردوینو بهتر هست از ماژول های بلوتوث HC-05 استفاده کرد.
سلام.ببخشيد براى اينكه مثلا وقتى فرمانى إرسال شد دستگاه ما وارد فلان سايت شود بايد از چه استفاده كرد ؟ ممنون🙏🏻🙏🏻
سلام جناب. میتونید از پلتفرم IFTTT و امکانات بسیار زیاد آن استفاده کنید.
سلام ممنون از اینکه دانشتون رو در اختیار ما میذارین
سلام جناب. قربان شما موفق باشید
سلام
ممنون از آموزش خوب شما
ممکنه بر روی برنامه یک پسورد هم قرار بدید تا از برنامه با امنیت بیشتری بتوان استفاده کرد
سلام عزیز
برای پسورد میتوانید دوره های اینترنت اشیا حرفه ای و اپلیکیشن اندروید را مشاهده کنید