فهرست مطالب:

نحوه استفاده از بلوتوث (BLE) با ESP32: 3 مرحله
نحوه استفاده از بلوتوث (BLE) با ESP32: 3 مرحله

تصویری: نحوه استفاده از بلوتوث (BLE) با ESP32: 3 مرحله

تصویری: نحوه استفاده از بلوتوث (BLE) با ESP32: 3 مرحله
تصویری: How to use ESP32 WiFi and Bluetooth with Arduino IDE full details with examples and code 2024, ژوئن
Anonim

#####توجه داشته باشید#####

روشی که در این دستورالعمل نشان داده شده است قدیمی و قدیمی است. این ویدیو را برای آخرین روش مشاهده کنید.

###############

در حالی که ESP32 دارای لیست گسترده ای از ویژگی ها (ویکی پدیا) است ، بزرگترین ویژگی که توجه را به خود جلب می کند ، بلوتوث داخلی v4.2 با پشتیبانی از BLE است. اما این عبارت می تواند گمراه کننده باشد ، در حالی که سخت افزار موجود است ، پشتیبانی نرم افزاری برای استفاده از بلوتوث وجود ندارد. (در حال توسعه است)

برای کسانی که نمی دانند BLE چیست ، مخفف Bluetooth Low Energy است. این یک پروتکل بلوتوث است که مصرف برق را به میزان قابل توجهی در مقایسه با بلوتوث "کلاسیک" افزایش می دهد.

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

چند سلب مسئولیت…

قبل از ادامه کار با این راهنما ، چند نکته قابل ذکر است.

توجه 1: وقتی می گویم پشتیبانی بلوتوث هنوز در دسترس نیست ، منظورم محیط توسعه arduino است.

پشتیبانی بسیار خوب ممکن است در SDK رسمی و IDF موجود باشد ، اما من هیچ دستورالعمل مناسب برای آن ها پیدا نکرده ام.

توجه 2: روشی که من استفاده می کنم بسیار راه حل است و نه آنطور که BLE به طور ایده آل کار می کند. پشتیبانی کتابخانه برای ایجاد خدمات در BLE برای محیط آردوینو نیست.

تنها کاری که می توانید با اطمینان انجام دهید ایجاد Beacon است که نام آن را تبلیغ می کند. یک نظر یوتیوب آن را بسیار زیبا بیان کرد: "LOL ، یک هک وحشیانه. اما شما چه کاری می توانید انجام دهید؟"

توجه 3: تنها نوع داده ای که می توانید ارسال کنید رشته است.

شما ممکن است تصمیم بگیرید که سایر داده ها را به رشته ای کدگذاری و رمزگشایی کنید ، اما این خارج از محدوده این راهنما است.

مرحله 1: نمونه ساخت

Image
Image
نمونه ساخت
نمونه ساخت
نمونه ساخت
نمونه ساخت
نمونه ساخت
نمونه ساخت

اگر فقط برای توضیح اینجا هستید ، می توانید از این مرحله بگذرید ، اما گذراندن آن ممکن است کمی وضوح بیشتری به شما بدهد.

ابتدا می خواهم یک پروژه نمونه بسازم و سپس سعی می کنم نحوه کار و نحوه تکرار ارتباط بلوتوث را توضیح دهم. ما در حال ساخت یک سنسور حرارتی قابل حمل هستیم که خوراک زنده را به تلفن هوشمند شما ارسال می کند. این بیلد می تواند چند روز روی یک لیپو اجرا شود و مزایای BLE را به راحتی نشان می دهد.

می توانید از ماژول به عنوان زیر لیوانی برای عایق بندی نوشیدنی های خود و دریافت اعلان به محض رسیدن نوشیدنی به دمای مطلوب استفاده کنید. زیرا اگر بخواهید چای را که درجه بالای 40 است بنوشید ، مسخره خواهد بود.

تنها سخت افزاری که نیاز دارید برد ESP32 و سنسور دما دیجیتال است. برد من از باتری خارجی پشتیبانی می کند ، بنابراین من از یک Li-po 3.7 ولت که از دستگاه قدیمی ذخیره کرده ام استفاده می کنم تا این پروژه قابل حمل باشد.

سخت افزار

اتصالات سنسور دما ساده است. سیم قرمز به 3.3v وصل می شود ، رنگ سیاه به زمین متصل می شود (gnd) ، رنگ زرد به GPIO 2 متصل می شود که روی برد من به عنوان D9 مشخص شده است. یک مقاومت 4.7 کیلو اهم را بین سیم قرمز و زرد وصل کنید. من از مقاومت استفاده نمی کنم ، در عوض از ترمینال قابل اتصال 3 پین که همراه سنسور من است استفاده می کنم. دارای مقاومت کششی داخلی است.

لی-پو واقعاً باید با استفاده از اتصال JST متصل شود ، اما من نمی توانم برای خرید آن زحمت بکشم ، بنابراین من فقط برخی از کابل های جهنده (زن به زن) را به کانکتور متصل کرده و یک جفت دیگر را به پایانه های باتری لحیم کردم. این باعث می شود یک اتصال قابل اعتماد و یک سوئیچ برق موقت ایجاد شود.

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

نرم افزار

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

C:/کاربران // اسناد/Arduino/سخت افزار/espserrif/ESP32

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

حال اگر نرم افزار arduino را راه اندازی کردید و به ابزار-> بردها رفتید ، هنگامی که به پایین اسکرول می کنید باید بردهای مختلف ESP32 را مشاهده کنید.

اکثر سنسورهای دما دیجیتال از پروتکل OneWire برای ارتباط با کنترلرهای میکرو استفاده می کنند ، بنابراین ما باید کتابخانه را تهیه کنیم. به منوی sketch-> include library-> مدیریت کتابخانه ها بروید و به صورت onewire جستجو کنید و کتابخانه ای را که تعداد نویسندگان آن زیاد است نصب کنید. شما به هاب onewire نیاز ندارید. نادیده بگیر.

اکنون می توانید کد پیوست شده به این مرحله را بارگیری و باز کنید (temperature-example.ino).

اگر از سنسور متفاوتی با من استفاده می کنید ، باید کد را متناسب با آن تغییر دهید. کد زیر () getTemp را جایگزین کنید. کافی است دمای نهایی را به شکل بازگردانید

برگشت ؛

شناور حاوی دما کجاست.

برد را وصل کنید ، برد و پورت مناسب را از زیر ابزارها انتخاب کرده و گزینه upload را بزنید.

اگر کد از بارگذاری خودداری کرد ، سنسور را جدا کرده و GPIO 0 را به زمین وصل کنید. پس از بارگذاری اتصالات را بازیابی کنید.

ESP شما اکنون باید دمای قهوه شما را به گوش جهانیان برساند اما شما به کسی نیاز دارید که بتواند آن را درک کند.

برنامه اندروید

با عرض پوزش از کاربران iPhone (… واقعاً نه).

apk را از اینجا بارگیری کرده و نصب کنید. هنگامی که برنامه را راه اندازی می کنید ، با یک رابط کاربری بسیار ساده از شما استقبال می شود.

اگر با پیغام خطا "تبلیغات پشتیبانی نمی شود" مواجه شدید ، روی OK کلیک کنید و آن را نادیده بگیرید ، اما اگر پیامی دریافت کرد که "BLE پشتیبانی نمی شود" ، تلفن شما بلوتوث 4.0 یا بالاتر ندارد و نمی تواند اجرا شود برنامه

اطمینان حاصل کنید که بلوتوث تلفن شما روشن است و روی "شروع اسکن" کلیک کنید ، تا زمانی که esp در محدوده باشد و روشن باشد باید مقداری دما دریافت کنید.

خطاهای احتمالی:

  • -1000:: این بدان معناست که دستگاه شما نمی تواند ESP را پیدا کند. مطمئن شوید که بلوتوث روشن است و ESP را راه اندازی مجدد کنید.
  • SNA:: این بدان معناست که تلفن شما داده ها را از ESP دریافت می کند اما ESP خود نمی تواند سنسور دما را در GPIO 2 پیدا کند. مطمئن شوید که اتصالات ایمن هستند ، ببینید آیا از مقاومت با مقدار درست استفاده می کنید. با نمودارهای برد خود بررسی کنید که به GPIO 2 متصل شده اید و پینی به عنوان D2 مشخص نشده است.

مرحله 2: توضیح

نحوه عملکرد BLE در حالت عادی این است که دستگاه نام خود را مانند چراغ راهنما تبلیغ می کند ، این نام برای همه قابل مشاهده است و برای شناسایی دستگاه استفاده می شود. سپس دستگاه می تواند خدمات مختلفی را ایجاد کند که توسط دیگران هنگام اتصال به آن مشاهده می شود. این سرویس ها می توانند جریان داده های متفاوتی داشته باشند.

برای مثال دستگاهی به نام "ایستگاه هواشناسی" می تواند تحت آن مانند "دما" ، "رطوبت" و "باد" سرویس دهد. وقتی دستگاه BLE دیگری مانند تلفن هوشمند شما دستگاه ها را اسکن می کند ، ایستگاه هواشناسی را می بیند و هنگامی که به آن متصل می شود ، می تواند جریانهای داده را تحت خدمات مختلف دریافت کند.

کتابخانه ها (برای ESP32) که در حال حاضر در دسترس ما هستند به ما اجازه می دهند تا چراغی بسازیم که دیگران بتوانند آن را کشف کنند اما این میزان آن است. ما نمی توانیم خدمات ایجاد کنیم و هیچ دستگاهی نمی تواند به آن متصل شود.

بنابراین نحوه ارسال داده ها بدون ایجاد سرویس ، با استفاده از تکنیکی مشابه پروتکل WiFi به نام Beacon Stuffing است. این بدان معناست که من داده هایی را ارسال می کنم که در داخل نام چراغ ارسال می شود. این به من امکان می دهد داده ها را بدون نیاز به دستگاه های دیگر برای اتصال به چراغ ، تبلیغ کنم.

ble.begin (beaconMsg) ؛ // beaconMsg نام تبلیغ شده است

ما از کتابخانه SimpleBLE برای ایجاد چراغی با نام آن در قالب ESP استفاده می کنیم. جایی که "ESP" همیشه در ابتدای نام بدون تغییر باقی می ماند و با 10000 ثانیه آخرین داده هایی که توسط تابع getValue () بازگردانده می شود جایگزین می شود.

float getValue () {return sensorValue؛}

برنامه اندروید به دنبال نام دستگاه های BLE است که با "ESP" شروع می شود ، پس از پیدا شدن ، نام را تقسیم می کند و فقط داده ها را از انتها نمایش می دهد.

ارتباطات تنها یک راه است ، برنامه هیچ چیزی را به عقب ارسال نمی کند.

مرحله 3: نتیجه گیری

در پایان روز ، این روش جایگزین یک کتابخانه BLE نیست که به درستی پیاده سازی شده باشد ، اما ممکن است تا زمانی که پشتیبانی کامل BLE به آردوینو نیاید ، برخی پروژه ها را کنار بگذارید. امیدوارم این دستورالعمل ها به شما کمک کرده باشد.

بسیار بزرگ از DFRobot.com برای ارسال این محصولات برای من:

  • ESP32 FireBeetle Board
  • FireBeetle Expantion Shield
  • سنسور دما DS18B20

من اخیراً این کتابخانه را پیدا کردم. ReadME ادعا می کند که می توانید برای دریافت داده به سایر دستگاه های BLE متصل شوید (نمی توانید خودتان را تبلیغ کنید). من آن را امتحان نکرده ام ، اما اگر علاقه دارید می توانید آن را بررسی کنید.

می توانید ویدیوی پروژه را در: YouTube مشاهده کنید

توصیه شده: