تابحال آموزش های بسیاری درباره کنترل سروو موتور به روشهای مختلف منتشر شده، در این آموزش قصد داریم نحوه کنترل سرو موتور را با استفاده ار ماژول HC-05 بلوتوث آموزش دهیم، پس تا انتهای آموزش با من همراه باشید. خب قبل از شروع آموزش بیایید یکم اطلاعاتمان را درباره بلوتوث بیشتر کنیم. دقیقا چی هست و زمانی که ما این پروژه را به اتمام می رسانیم چه فرآیندی صورت گرفته است. در ادامه این آموزش با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.
بلوتوث Bluetooth
بلوتوث (Bluetooth) نام یک استاندارد فناوری بیسیم با برد کم برای فرستادن پیام، عکس یا هر اطلاعات دیگر است که از لقب یک پادشاه منطقه اسکاندیناوی به نام هارالد بلاتند گرفته شده است. ارتباط ماژول های بلوتوث با فرکانسهای رادیویی صورت می پذیرد، هر ماژول بلوتوث دارای یک تراشه فرستنده یا گیرنده مربعیشکل است که در باند فرکانسی GHz ۲٫۴ تا GHz ۲٫۴۸ کار میکند. این فرکانس از این لحاظ انتخاب شده، که در سراسر جهان بهطور رایگان در دسترس است و محدودیتهای داشتن مجوز را ندارد.
ماژول بلوتوث HC-05
اگر بخواهیم بطور خلاصه این ماژول را معرفی کنیم می توان گفت، یک مبدل بلوتوث به سریال با پروتکل ارتباطی UART که از انواع آن می توان به HC-05 و HC-06 اشاره کرد، در پروتکل ارتباطی UART برقراری ارتباط توسط دو پایه rx و tx صورت می گیرد. بلوتوث معمولا در نوع BLE و بلوتوث های معمولی که در دستگاه های صوتی و… استفاده می شوند، شناخته شده است. بلوتوث های نوع BLE یا Bluetooth Low Energy بلوتوث های نسل جدید و کم مصرف هستند.
نحوه راه اندازی سرو موتور
در این آموزش از سروو موتور های SG90 استفاده کرده ایم و با استفاده از یک ماژول بلوتوث HC-05 و همینطور یک اپلیکیشن موبایل قادر به کنترل چهار سروو خواهیم بود. تنها کافیست با توجه به مدار موجود در انتهای اتصالات را برقرار کنید و با آپلود کد و نصب اپلیکیشن موبایل قادر به کنترل سروو موتور ها خواهید بود، توجه داشته باشید با استفاده از این اپلیکیشن قادر به کنترل ۴ سروو در مجموع خواهید بود.
با استفاده از لینک زیر کتابخانه برد HC-05 را به نرم افزار Arduino IDE خود اضافه کنید در ادامه از کد موجود در آموزش برای برقراری ارتباط با ماژول استفاده کنید همچنین با استفاده از لینک زیر اپلیکیشن مورد نیاز برای کنترل سروو موتور ها را دانلود کنید.
دانلود کتابخانه مربوط
دانلود اپلیکیشن اندروید
قطعات مورد نیاز
اتصال بلوتوث HC-05 به سرو موتور
اتصالات مدار را طبق تصویر زیر برقرار کنید، به این صورت که با اتصال VCC و GND سروو موتور و ماژول بلوتوث به ۵v و GND آردوینو آنها را تغذیه کنید در ادامه خروجی سریال سروو را به دیجیتال ۳ آردوینو متصل کنید همچنین TX , RX ماژول بلوتوث که مربوط به ارتباط سریال می باشند را به ترتیب به پایه های ۱۱ و ۱۰ آردوینو متصل کنید.
کد آردوینو بلوتوث HC-05
در این کد با استفاده از کتابخانه های SoftwareSerial و Servo قادر به برقراری ارتباط بین سخت افزار و اپلیکیشن اندرویدی خواهیم بود، همان طور که پیش تر ذکر شد در این آموزش از ماژول HC-05 استفاده خواهیم کرد، که با ارتباط سریال بین ماژول و آردوینو قادر به کنترل آن و ارسال و دریافت دستورات خواهیم بود.
#include <SoftwareSerial.h> // TX RX software library for bluetooth #include <Servo.h> // servo library Servo myservo1, myservo2, myservo3, myservo4; // servo name int bluetoothTx = 10; // bluetooth tx to 10 pin int bluetoothRx = 11; // bluetooth rx to 11 pin SoftwareSerial bluetooth(bluetoothTx, bluetoothRx); void setup() { myservo1.attach(3); // attach servo signal wire to pin 9 myservo2.attach(5); myservo3.attach(6); myservo4.attach(9); //Setup usb serial connection to computer Serial.begin(9600); //Setup Bluetooth serial connection to android bluetooth.begin(9600); } void loop() { //Read from bluetooth and write to usb serial if(bluetooth.available()>= 2 ) { unsigned int servopos = bluetooth.read(); unsigned int servopos1 = bluetooth.read(); unsigned int realservo = (servopos1 *256) + servopos; Serial.println(realservo); if (realservo >= 1000 && realservo <1180) { int servo1 = realservo; servo1 = map(servo1, 1000, 1180, 0, 180); myservo1.write(servo1); Serial.println("Servo 1 ON"); delay(10); } if (realservo >= 2000 && realservo <2180) { int servo2 = realservo; servo2 = map(servo2, 2000, 2180, 0, 180); myservo2.write(servo2); Serial.println("Servo 2 ON"); delay(10); } if (realservo >= 3000 && realservo <3180) { int servo3 = realservo; servo3 = map(servo3, 3000, 3180, 0, 180); myservo3.write(servo3); Serial.println("Servo 3 ON"); delay(10); } if (realservo >= 4000 && realservo <4180) { int servo4 = realservo; servo4 = map(servo4, 4000, 4180, 0, 180); myservo4.write(servo4); Serial.println("Servo 4 ON"); delay(10); } } }
جمع بندی
در نهایت پس از نصب اپلیکیشن، آپلود کد و اتصال ماژول و بلوتوث موبایل می توانید با حرکت دادن خطوط افقی که در تصویر مشاهده می کنید اقدام به تغییر در زاویه سروو موتور بکنید.
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.
سلام
رفیق دارم یه ربات آتش نشان میسازم میشه یه برنامه گوشی معرفی کنی برا کنترلش؟با همین ماژول HC05 دمت گرم ممنونم
با سلام، چند خروجی در پروژه شما کنترل می شود؟
نمی دونم زیاد حرفه ای نیستم
ولی دوتا موتور گیر بکس واس چپ و راست دارم
با یدونه موتور پمپ
موتور گیربکس ها که فک کنم هر کدوم ۲ کانال میخواد(جلو/عقب)و پمپ هم که یک طرفه است
متشکرم
با توجه به تعداد مواردی که نیاز به کنترل دارند می توانید از همین اپلیکیشن استفاده کنید.
سلام از برنامه ای که توی آموزش زیر استفاده شده ، استفاده کن و میتونی از خود آموزش استفاده کنی فقط یه پمپ بهش اضافه کنی
https://digispark.ir/diy-arduino-robot-with-l298-and-hc-05-bluetooth-module/
سلام
دو تا سوال داشتم
۱٫ چرا rx tx ماژول بلوتوث رو به پایه های ۰ و ۱ آردوینو وصل نکردیم ؟
۲٫ ماژول بلوتوث احتیاج به اتصال به ۳٫۳ ولت یا ۵ ولت دارد ؟
۳٫ بعضا شنیده شده ماژول بلوتوث بعد از اتصال به آردوینو بخاطر ولتاژ نا مناسب سوخته ، میشه راجع به همین موضوع و اتصال مقاومت سر راه این ماژول توضیحات بفرمایید . اگر مقاومت لازم هست کدوم قسمت استفاده کنیم ؟ مابین ماژول و پایه های ولتاژ ؟ یا در مسیر tx rx
سلام، برد های آردوینو تنها یک ارتباط سریال ندارند برای مثال در آردوینو UNO پین های ۰و۱ … ۱۰و۱۱ سریال هستند. برای تغذیه از ۵ ولت استفاده کردم و مشکلی ایجاد نشد. مدار موجود در آموزش تست شده و نیازی به قطعات اضافی نیست. همچنین میتوانید از دیگر آموزش هایی با این موضوع دیدن کنید.
سلام من پروژه ای دارم که باید ۲ سرو موتور همزمان کنترل بشه
میشه با همین آموزش انجامش داد یا باید تغییر ایجاد کنم؟
با سلام، بله این امکان وجود دارد.
من روی لینک دانلود میزنم ولی چیزی نمیاره
این نرمافزار داخل گوگل پلی هم در دسترس هست، میتونید از نرمافزار های مشابه هم استفاده کنید.
سلام وقت بخیر
چطور میشه کاری کرد که وقتی بلوتوث رو از گوشی قطع میکنیم سروو موتور تغییر حرکت نداشته باشه و به نقطه صفرش نره؟
من از این پروژه استفاده کردم و به وسیله سروو یه قفل کشویی رو باز و بسته میکنمو حالا مشکلم اینه که وقتی بلوتوث رو قطع میکنم سروو موتور میره به نقطه صفر و تو حالت قبلی نمیمونه
با سلام
بایستی در کدها حافظه تعریف کنید. سپس ویرایشات لازمه را روی کدها اعمال کنید.
سلام خییلی ممنون بابت اموزش با اردوینو نانو هم میشه این کارو انجام داد؟ و دستورات تغیری نمیکنه؟
با سلام
بخش دستورات بلوتوث که مربوط به ماژول هستند و یکسان خواهند بود. ولی موارد دیگر از جمله ارتباط سریال ممکن است متفاوت با کدهای ارایه شده باشند.
سلام
دلیل ارور Sketch uses 4814 bytes (14%) of program storage space. Maximum is 32256 bytes.
Global variables use 399 bytes (19%) of dynamic memory, leaving 1649 bytes for local variables. Maximum is 2048 bytes.
Failed uploading: no upload port provided
چیه؟
با سلام
پورت تشخیص داده نشده است. بررسی کنید.
سلام چرا نمیشه نرم افزاررا دانلود کرد لینک مربوط منقضی شده