ارتباط با ماژول های بلوتوث Bluetooth از طریق سریال مانیتور آردوینو Arduino برقرار میشود و دیتا در دو حالت Slave و Master ارسال و دریافت میگردد. کنترل وسایل از طریق ماژول بلوتوث Bluethooth و موبایل در بین کاربران بسیار محبوب بوده و بخش مهمی از آموزش های آردوینو را پوشش داده است. اما کاربران ios در برقراری ارتباط با ماژول های بلوتوث با مشکلی اساسی رو به رو شده اند که در این آموزش به معرفی ماژول بلوتوث HM-10 و ارتباط با موبایل آیفون iphone خواهیم پرداخت.
معرفی ماژول بلوتوث HM-10
بزرگترین وجه تمایز ماژول بلوتوث HM-10 نسبت به دیگر ماژول ها برخورداری از تکنولوژی بلوتوث نسل ۴ BLE میباشد. منظور از BLE بلوتوث کم مصرف است که مخفف عبارت Bluetooth Low Energy میباشد. روش مدولاسیون ماژول بلوتوث HM-10 برابر با GFSK و قدرت فرکانس رادیویی برابر با -۲۳dbm, -6dbm, 0dbm, 6dbm است. ولتاژ مورد نیاز جهت راه اندازی ماژول حدود ۲٫۵ تا ۳٫۳ ولت و جریان ۵۰ میلی آمپر در نظر گرفته شده است. جهت راه اندازی HM-10 ارتباط با میکروکنترل ها از طریق AT Command ها برقرار میشود که در ادامه آموزش به معرفی و نحوه ی تعریف آن در کدها خواهیم پرداخت. HM-10 در زمان استفاده و فعال بودن جریانی در حدود ۹ میلی آمپر مصرف میکند و در زمان خواب Sleep جریانی در حدود ۵۰ تا ۲۰۰ میکرو آمپر در مدار مصرف خواهد کرد. باد ریت پیشفرض برای ماژول روی باند ۹۶۰۰ تنظیم شده است. PIN پیشفرض برابر با ۰۰۰۰۰۰ و اسم پیشفرض ماژول بلوتوث HMSoft میباشد. ماژول HM-10 بر پایه تراشه CC2540 و یا CC2541 طراحی شده است. ماژول HM-10 به ترتیب دارای ۷ پایه است:
- State: وضعیت اتصال، LOW به معنای غیر فعال بودن و HIGH به معنی فعال بودن ماژول
- VCC: ورودی ماژول بین ۳٫۶ تا ۶ ولت DC
- GND: زمین مشترک
- TXD: فرستنده ارتباط سریال
- RXD: گیرنده ارتباط سریال
- BRK: پایه Break
ارتباط از طریق سریال Read String
جهت ارتباط ماژول بلوتوث HM-10 با برد آردوینو Arduino ارتباط برقرار میشود. دستور سریال Readstring عبارت String تعریف شده توسط ما را از آردوینو خوانده و به ماژول ارسال میکند. رشته یا String به دلخواه توسط ما در کد برنامه تعریف شده و تنها کافیست توسط UTF-8 دیکدینگ شود. توسط دستور زیر رشته مورد نظر تعریف میشود:
(رشته مورد نظر== if (readString
جهت مطالعه و آشنایی با ارتباط سریال پیشنهاد میشود آموزش های زیر را بررسی نمایید.
وسایل مورد نیاز
شیلد پروتوتایپ آردوینو Arduino ProtoType Shield
اتصالات ماژول بلوتوث HM-10
در این آموزش از سه ال ای دی LED و یک ماژول بلوتوث HM-10 و آردوینو UNO استفاده شده است. همانند زیر اتصالات را انجام دهید.
- پایه VCC ماژول بلوتوث HM-10 را به پایه ۵ ولت آردوینو اتصال دهید.
- پایه GND ماژول بلوتوث HM-10 را به پایه GND اتصال دهید.
- پایه RXD ماژول بلوتوث HM-10 را به پایه TX آردوینو اتصال دهید.
- پایه TXD ماژول بلوتوث HM-10 را به پایه RX آردوینو اتصال دهید.
- سه ال ای دی را به دلخواه به سه پایه آردوینو اتصال دهید.
کد آردوینو Arduino
کد را از مسیر زیر کپی کرده و به نرم افزار آردوینو Arduino انتقال دهید.
int ledArray[] = {3,5,6}; int brightness =255; int fadeAmount = 500; String readString; void setup() { Serial.begin(9600); for(int i = 0; i<5; i++) { pinMode(ledArray[i], OUTPUT); }} void loop() { while (Serial.available()) { delay(3); char c = Serial.read(); readString += c; } if (readString.length() >0) { Serial.println(readString); if (readString == "LED ON" ) { for(int i = 0; i <= 7; i++) { digitalWrite(ledArray[i], HIGH); delay(500); } } } if (readString == "LED BLINK") { for(int i = 0; i<5; i++) { digitalWrite(ledArray[i], HIGH); delay(1000); digitalWrite(ledArray[i], LOW); delay(1000); }} if (readString == "LED FADE") { for(int i = 0; i<5; i++){ analogWrite(ledArray[i], brightness); // change the brightness for next time through the loop: brightness = brightness + fadeAmount; // reverse the direction of the fading at the ends of the fade: if (brightness <= 0 || brightness >= 255) { fadeAmount = -fadeAmount; } // wait for 30 milliseconds to see the dimming effect delay(10); }} if (readString == "LED OFF") { for(int i = 7; i >= 0; i--) { digitalWrite(ledArray[i], LOW); delay(200); } } readString=""; }
در این کد ۴ حالت مختلف برای کامند های String و ال ای دی ها در نظر گرفته شده است:
- LED ON : با ارسال رشته LED ON هر سه ال ای دی با تاخیر روشن میشود.
- LED OFF: با ارسال رشته LED OFF هر سه ال ای دی با تاخیر خاموش میشود.
- LED Blink: با ارسال رشته LED BLINK هر سه ال ای دی به ترتیب روشن و خاموش ( حالت چشمک زن) میشود.
- LED FADE: با ارسال رشته LED FADE هر سه ال ای دی به حالت FADE تبدیل میشود.
برای هر بخش دستورات For جهت تغییر وضعیت ال ای دی ها نوشته شده است. همچنین تمامی خروجی ها با آرایه نوشته شده است.
نصب اپلیکشن ios برای ماژول بلوتوث
چند اپ کاربردی برای ارتباط آردوینو با ماژول های بلوتوث در اپ استور وجود دارد که از میان آن ها دو اپلیکیشن LightBlue و Bluetooth Serial توسط تیم ما تست شده است.
- جهت ارتباط با اپ Bluetooth Serial ارتباط کمی ساده تر است و تنها بایستی پس از اتصال ماژول و شناسایی توسط اپ، رشته های مورد نظر را وارد کرده و Send را بزنید تا ال ای دی ها فعال گردد.
- جهت ارتباط با اپ LightBlue پس از شناسایی ماژول توسط اپ، بایستی در تنظیمات برنامه، فرمت بر روی UTF-8 String تنظیم شود. سپس در قسمت WRITTEN VALUES رشته مورد نظر به ترتیب رایت شود. پس از آن تمامی Srtring ها به ترتیب در برنامه تولید شده و با کلیک بر روی هر یک از آن ها، ال ای دی ها در مود تعریف شده قرار میگیرند.
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.
با سلام و تشکر از خانم LadyPi و سایت.
یه سوال، آیا تو برد آردوینو نانو حافظه وجود داره؟
که وقتی کاربر یه LED رو انتخاب کرد، پس از قط اتصال و خاموش کردن برد، آخرین حالت انتخاب شده، روشن شود!؟
با سلام
کاربر گرامی سوال شما در پست نامرتبط مطرح شده است. برای دریافت راهنمایی از طرف کارشناسان و اسپارکرها، لطفا سوالتان را در پستهای مرتبط مطرح کنید.
با تشکر
سلام وقت بخیر
شما میتونید led RGB قابل کنترل با اندروید و ios سفارشی من رو طراحی و ارسال کنید؟
اگه بتونید من به تعداد زیادی نیاز دارم
با سلام
خیر در حال حاضر این مورد امکان پذیر نیست.
سلام
ببخشید این برنامه رو برای کدوم برد آردوینو طراحی کردن؟
LED ها به کدوم پین ها متصل هستند؟
چرا بعضی جاها عبارت i برای ۵ تا گفته شده برای بعضی جاها ۷ تا؟
for(int i = 0; i= 0; i–)
کاش یه توضیح کوتاه برای هر خط برنامه کامنت میزاشتین که راحت تر بشه اونو متوجه شد
ممنون
با سلام و تشکر از شما
همانطور که در بخش وسایل مورد نیاز اعلام شده است، برای برد Uno نوشته شده است. ولی محدودیتی در این خصوص وجود ندارد. میتوانید روی بردهای دیگر هم کار کنید. در خصوص ال ای دی ها به خط اول کدها دقت کنید.
در خصوص سوال آخر هم، به دلیل برنامهی نمایش ال ای دی است. به عنوان مثال حالت Fade یا Blink متفاوت هستند.
سلام ممنون از اموزشتون ، ماژول hm-10 به گوشی وصل نمیشه نه در حالت اندروید نه ایفون.
مشکلش چی می تونه باشه ؟
با سلام
روش تست در متن آموزش نوشته شده است، در ابتدا آموزش را مطالعه و سپس نتیجه را اعلام کنید.