پروژه ارتباط دو برد آردوینو با ماژول بلوتوث HC-05

محتویات
سلام. پروژه ارتباط دو برد آردوینو با هم با ماژول بلوتوث HC-05 + آموزش کامل اتصال 2 برد Arduino به یکدیگر را آماده کردیم.
ماژول های بلوتوث HC-05 برای هر پروژه های Arduino بسیار مناسب هستند! ما در آیرنکس انواع پروژه ها را با این ماژول قرار داده ایم. اما آیا تاکنون احتیاج به اتصال دو ماژول HC-05 به یکدیگر داشته اید؟ ما در این پروژه آردوینو دو برد آردوینو را از طریق بلوتوث با هم مرتبط میکنیم.
مدار پروژه ارتباط بین دو برد آردوینو با بلوتوث
شماتیک کامل پروژه در فایل دانلودی قرار داده شده است. این نمودار مدار بسیار ساده است. مدار فرستنده و گیرنده مشابه هم هستند. تمام کاری که ما در اینجا انجام می دهیم اتصال HC05 به آردوینو است. پین گیرنده (Rx) از HC05 در محدوده 0V تا 3.3V کار می کند و Arduino در محدوده 0V تا 5V کار می کند. بنابراین ، ما از مقاومت (R1 و R2) برای ایجاد تقسیم ولتاژ استفاده خواهیم کرد تا خروجی 5 ولت آردوینو را به 3.3 ولت کاهش دهیم ، تا به ماژول HC05 آسیب نرسد.
قطعات مورد نیاز پروژه
- برد آردوینو (هر مدلی) – دو عدد
- ماژول بلوتوث HC-05 – دو عدد
- مقاومت 1 کیلو اهم – دو عدد
- مقاومت 2.2 کیلو اهم – دو عدد
پیکربندی ماژول های HC05
این مرحله از بارگذاری کد آردوینو جدا است و ما باید برخی از تنظیمات را در ماژول های بلوتوث HC-05 تغییر دهیم. برای اینکار باید به حالت فرماندهی ماژول HC05 برویم و از طریق مانیتور سریال نرم افزار Arduino دستورات را برای آنها ارسال کنیم.
کد کامل پیکربندی این ماژول در فایل دانلودی قرار داده شده است.
ابتدا کتابخانه SoftwareSerial را به این کد اضافه کنید.
#include <SoftwareSerial.h>
شماره پین انتقال (Tx) و (Rx) را تعریف کنید. من از پین 2 برای Tx و پین 3 برای Rx استفاده می کنم.
#define tx 2 #define rx 3
برای اتصال بلوتوث نامی بگذارید (در اینجا من از configBt استفاده می کنم).
SoftwareSerial configBt(rx, tx); // RX, TX
برای پیکربندی ماژول بلوتوث ، Arduino باید دستورات خود را با سرعت 38400 ارسال کند. به همین دلیل ، ما نرخ baud اتصال بلوتوث را 38400 baud را تنظیم می کنیم. (Tx) را به عنوان پین خروجی تنظیم کنید و (Rx) را به عنوان پین ورودی تنظیم کنید.
void setup() { Serial.begin(38400); configBt.begin(38400); pinMode(tx, OUTPUT); pinMode(rx, INPUT); }
در داخل loop برای قسمت اصلی کد را داریم.هر آنچه در جعبه متن در مانیتور سریال تایپ شده است به HC05 از طریق پین Tx آردوینو ارسال می شود. سپس هر چیزی که توسط HC05 در خروجی باشد را در مانیتور سریال نمایش دهید.
void loop() { if(configBt.available()) // اگر ماژول چیزی را ارسال میکرد { Serial.print(configBt.readString()); // پرینت شود در سریال مانیتور } if(Serial.available()) // اگر سریال مانیتور چیزی را ارسال میکرد { configBt.write(Serial.read()); // در پین TX نوشته شود } }
ابتدا این کد را در Arduino متصل به ماژول فرستنده HC05 بارگذاری کنید. پس از بارگذاری کد ، کابل برق آردوینو را قطع کنید. دکمه روی HC05 فشار داده و نگه دارید. اکنون کابل برق آردوینو را در حالی که هنوز دکمه HC05 را نگه داشتید وصل کنید. خوب ، حالا می توانید دکمه HC05 را آزاد کنید. به این ترتیب است که شما وارد حالت AT (فرماندهی) HC05 می شوید. برای بررسی اینکه آیا شما این کار را صحیح انجام داده اید ، مطمئن شوید که چراغ قرمز موجود در HC05 تقریباً در هر ثانیه (آهسته) چشمک می زند. به طور معمول قبل از اتصال HC05 به هر دستگاه بلوتوث ، نور قرمز خیلی سریع چشمک می زند.
سپس ، مانیتور سریال را باز کنید (مانیتور سریال را میتوانید با کلید Ctrl+Shift+M باز کنید). در گوشه پایین سمت راست پنجره سریال مانیتور ، مطمئن شوید که تنظیمات پایان خط را روی “هر دو NL و CL” قرار داده اید و میزان baud را روی 38400 قرار داده اید. اکنون AT را تایپ کنید. اگر همه چیز خوب پیش برود، در پنجره مانیتور سریال “OK” دریافت خواهید کرد. تبریک می گویم! شما با موفقیت وارد حالت فرمان AT ماژول HC05 شده اید.
اکنون ، دستورات جدول زیر را وارد کنید تا پیکربندی ماژول فرستنده HC05 انجام شود.
این دستور ها را در سریال مانیتور وارد کنید و اینتر را بزنید | این جواب ها در سریال مانیتور نمایش داده میشود. | این دستور چه کار میکند ؟ |
AT | OK | تست |
AT+CMODE? | OK | چک Cmode |
AT+CMODE=1 | OK | تنظیم این ماژول به عنوان فرستنده |
AT+ADDR? | +ADDR:FCA8:9A:58D5 OK (توجه داشته باشید این آدرس برای هر ماژول متفاوت است) | این آدرس را یادداشت کنید |
سپس ماژول دیگر را متصل کنید همانند مراحل قبل فقط دستور های متفاوتی را باید ارسال کنید که در جدول زیر آورده شده است. با استفاده از این دستور ها ماژول گیرنده تنظیم میشود.
این دستور ها را در سریال مانیتور وارد کنید و اینتر را بزنید | این جواب ها در سریال مانیتور نمایش داده میشود. | این دستور چه کار میکند ؟ |
AT | OK | تست |
AT+CMODE? | OK | چک Cmode |
AT+CMODE=0 | OK | تنظیم این ماژول به عنوان گیرنده |
AT+BIND= آدرسی را که در قسمت قبل یادداشت کردید را جلوی مساوی بنویسید و به جای : از , استفاده کنید. | OK | اتصال دو برد به یک دیگر |
AT+BIND? | +BIND: FCA8:9A:58D5 OK (توجه داشته باشید این آدرس برای هر ماژول متفاوت است) | اتصال موفقیت آمیز دو برد به یکدیگر |
تست ارتباط بلوتوث بین دو برد آردوینو
در مرحله اول ، هر دو ماژول فرستنده و گیرنده HC05 را روشن کنید. بعد از گذشت زمان به چراغ قرمز در ماژول های HC05 نگاهی بیندازید.
اگر چراغ قرمز روی ماژول ها تند تند چشمک میزد یعنی اتصال این دو برد انجام نشده است و باید از اول دستورات را ارسال کنید.هنگامی که چراغ قرمز شما در یک فرکانس پایین چشمک می زند (کند چشمک می زند!) ، می توانید مطمئن باشید که هر دو HC05 شما با یکدیگر متصل هستند، اما ما آزمایش نکرده ایم که آیا داده ها می توانند منتقل شوند یا خیر.
کد آردوینوی قسمت فرستده را بارگذاری کنید، این کد برای تست فرستنده (Tx) است. کد کامل پروژه در فایل دانلودی قرار داده شده است.
در این قسمت ما کتابخانه ارتباط سریالی را فراخوانی میکنیم و سپس پین های TX و RX را مشخص میکنیم.
#include <SoftwareSerial.h> #define tx 2 #define rx 3 SoftwareSerial bt(rx,tx); //RX, TX
در کد آردوینو ما بر خلاف کد ماژول ، از نرخ Baud 9600 استفاده میکنیم. با استفاده از کد زیر این نرخ را تعیین میکنیم. و پین RX را به عنوان ورودی و پین TX را به عنوان خروجی تنظیم میکنیم.
void setup() { Serial.begin(9600); bt.begin(9600); pinMode(tx, OUTPUT); pinMode(rx, INPUT); }
در داخل void loop ، تمام کاری که ما انجام می دهیم انتقال مقدار تست “123” از طریق HC05 است.
void loop() { bt.write(123); }
این کد را در آردوینو دیگر بارگذاری کنید ، این کد برای تست دریافت است :
در این قسمت ما کتابخانه ارتباط سریال را فراخوانی میکنیم و سپس پین های TX و RX را مشخص میکنیم.
#include <SoftwareSerial.h> #define tx 2 #define rx 3 SoftwareSerial bt(rx,tx); //RX, TX
در کد آردوینو ما بر خلاف کد ماژول ، از نرخ Baud 9600 استفاده میکنیم. با استفاده از کد زیر این نرخ را تعیین میکنیم. و پین RX را به عنوان ورودی و پین TX را به عنوان خروجی تنظیم میکنیم.
void setup() { Serial.begin(9600); bt.begin(9600); pinMode(tx, OUTPUT); pinMode(rx, INPUT); }
در void loop ، فقط باید آنچه را که از انتقال دهنده آردوینو ارسال می کنیم ، دریافت کنیم. اگر دریافت کننده اطلاعاتی را از HC05 دریافت کرده است، آن را در سریال مانیتور نمایش میدهد.
void loop() { Serial.println(bt.read()); }
بعد از اینکه کدهای مربوطه را برای هر آردوینو بارگذاری کردید ، مانیتور سریال راباز کنید. اطمینان حاصل کنید که در مانیتور سریال نرخ baud به عنوان 9600 باشد. سپس باید تصویر زیر را مشاهده کنید :
پایان.
برای دانلود فایل ها باید حساب کاربری داشته باشید ثبت نام / ورود
سلام آیا ماژول بلوتوث HC05 می تواند از دو یا چند دستگاه به صورت همزمان اطلاعات دریافت کند ؟