در این مقاله به آموزش یک پروژه ساده با اپ اینونتور میپردازیم. در این پروژه قصد داریم، ارسال پیام به آردوینو با گوشی موبایل را به کمک برنامه MIT App Inventor انجام دهیم. اما حتماً میپرسید “چطور؟” یا “اصلاً این اپ اینونتور چه کاربردی داخل این پروژه داره؟” حتماً تا بهحال نام اینترنت اشیاء یا IOT را شنیدهاید و کاربردهای بیانتهای آن در زندگی روزمره شما هم مورد استفاده قرار گرفتهاست. در این حیطه کنترل اشیاء از راه دور بهشکل بی سیم نوعی پیشرفت در ایجاد ارتباطات و کنترل از راه دور اشیاء گوناگون و هوشمندسازی آنها را رقم زدهاست. ما نیز در این پروژه برای ایجاد یک راه ارتباطی از طریق بلوتوث و طراحی یک برنامه اندرویدی سفارشی بدون کدنویسی، شاهد آن هستیم که با ساخت پیام رسان با اپ اینونتور و ارسال یک پیام با موبایل به آردوینو آن را روی ال سی دی به نمایش بگذاریم.
مروری بر پروژه ارسال پیام به آردوینو از طریق ساخت اپلیکیشن در app inventor
ارسال پیام با موبایل اندرویدی به آردوینو توسط برنامه MIT، یک پروژه ساده با اپ اینونتور است که نیازمند استفاده از تجهیزات و نرم افزاری مانند ماژول بلوتوث HC-05 و برنامه MIT App Inventor میباشد که توسط آنها یک اپلیکیشن اینترنت اشیاء را خواهیم ساخت و پیام ارسالی را بر روی یک ال سی دی 16×2 نمایش میدهیم. اپلیکیشن اندروید سفارشی ما قسمتی برای تایپ متن خواهد داشت تا کاربر پیام موردنظر خود را برای ارسال به آردوینو وارد کند. علاوهبراین گزینهای تحت عنوان “Send Message” خواهیم داشت که برای ارسال پیام به آردوینو از طریق بلوتوث مورد استفاده قرار میگیرد. سپس این پیام بر روی نمایشگر متصل شده به آردوینو نمایش داده خواهد شد. به منظور برقراری ارتباط از طریق بلوتوث، گزینهی دیگری تحت عنوان “Connect Bluetooth” نیاز خواهیم داشت که به وسیله آن لیستی از دستگاههایی که میتوانند با تلفن همراه جفت شوند، نمایش داده میشود. که ما از این لیست ماژول بلوتوث HC-05 را انتخاب میکنیم. همچنین، وضعیت اتصال با متنی مبنیبر اینکه ارتباط از طریق بلوتوث برقرار شده یا نه (Connected یا Disconnected) بر روی اپلیکیشن نمایش داده خواهد شد.
برای انجام این پروژه ساده با اپ اینونتور به نرمافزار و سختافزارهای زیر نیاز خواهیم داشت:……
سخت افزار موردنیاز
- آردوینو UNO
- السیدی کاراکتری 16*2
- ماژول بلوتوث HC05 همراه با برد کمکی
- مینی برد بورد 400 سوراخ و سیم برد بوردی
- پتانسیومتر
نرم افزار موردنیاز
- IDE آردوینو
- MIT App Inventor
- تلفن همراه هوشمند
پیش از شروع اتصالات مدار جهت ارسال پیام به آردوینو با گوشی موبایل، به کمک MIT App Inventor، بیایید با تکنولوژی اجزای سختافزاری مورد کاربرد در این آموزش آشنا شویم و با تسلط بیشتری این پروژه با اپ اینونتور را انجام دهیم:
صفحه نمایش کریستال مایع (LCD) چیست؟
صفحه نمایش کریستال مایع که به اختصار به عنوان ال سی دی یا LCD معروف هستند، در پروژه های مختلف برای نمایش متن، کاراکترها و اعداد به کار میروند. اگرچه ال سی دی های کاراکتری قابلیت نمایش تصویر را نیز دارند، اما ال سی دیهای گرافیکی (GLCD) برای نمایش تصویر و اشکال بسیار مناسب تر هستند در اینجا ما از ال سی دی کاراکتری استفاده میکنیم. این نمایشگرها در بازار با سایزها و ویژگیهای مختلف موجود میباشند. ال سی دی های 16×2، 20×2 و 16×1 از جمله سایزهای تولید شده از این نمایشگرها هستند.
معرفی انواع ال سی دی
LCDها به دو دستهی سریال و موازی تقسیم میشوند. ال سی دی سریال از ارتباط سریال مانند ارتباط UART برای ارتباط با آردوینو استفاده میکند. ارتباط آنها با آردوینو نسبت به السیدیهای موازی، آسانتر است، اما از طرفی نسبت به نوع موازی گرانتر هستند. در مقابل، السیدیهای موازی مانند Hitachi HD44780، کاربردهای خاصی دارند و از پینهای ورودی – خروجی دیجیتال آردوینو برای ارتباط با آن استفاده میکنند. برای مثال Hitachi HD4478 یک نوع السیدی 16×2 است که از طریق 4 یا 8 خط داده و تعدادی پین کنترلی، با آردوینو ارتباط برقرار میکند. ما در این آموزش از یک نمایشگر موازی 16×2 استفاده میکنیم.
معرفی السیدی 16×2
در ماژول ال سی دی کاراکتری 16×2 دو نوع پین وجود دارد. برخی از آنها برای ارسال به ال سی دی استفاده میشوند و برخی دیگر پینهای دستوری هستند. به عبارت دیگر، هر پین نقشی در کنترل یک پیکسل واحد در ال سی دی دارد.
ال سی دی 16×2 دارای 2 سطر و 16 ستون است. به این معناکه میتوان در هر سطر، 16 کاراکتر را نمایش داد. به طور مشابه ال سی دی 20×4 دارای 4 سطر و 20 ستون است و میتواند 20 کاراکتر را در هر یک از سطرها نمایش دهد.
پینهای ال سی دی
در تصویر زیر، هر یک از پینهای السیدی 16×2 که شامل 16 پین است، نمایش داده شدهاست.
- D0-D7 : پینهای شماره 7 تا 14 خطوط باس داده هستند که برای ارسال دادهای که از آردوینو میخواهیم بر روی السیدی نمایش دهیم، مورد استفاده قرار میگیرند. با این 8 خط داده، میتوان داده را به فرمت 8 بیتی و همچنین به فرمت 4 بیتی ارسال کرد. در فرمت 4 بیتی، تنها 4 بیت پرارزش (D4-D7) برای ارسال داده از آردوینو به السیدی استفاده میشود. انتقال یک بایت کامل در طی دو انتقال انجام میشود. بهعلاوه، با فرمت 4 بیتی تعداد کمتری از پینهای ورودی-خروجی آردوینو استفاده میشود که این موضوع یک مزیت مهم به حساب میآید.
- VEE : این پین به کنترل کنتراست پیکسلها و نور السیدی کمک خواهد کرد.
- RS : این پین برای انتخاب بین دو رجیستر داده و فرمان استفاده میشود.
- R/W : سیگنال روی این پین مشخص میکند که آیا باید داده از السیدی خوانده شود یا بر روی السیدی نوشته شود.
- EN : پین فعالسازی اجازه انتقال داده یا دستور را به ال سی دی میدهد. این پین در واقع به عنوان مجوزی برای رجیسترهای داخلی عمل میکند. زمانیكه اين پين LOW باشد، در حقيقت LCD اهميتی به مقادير پينهای R/W، RS و خطوط باس ديتا نمیدهد. اما با High شدن این پين، LCD اطلاعات دريافتی را پردازش خواهد کرد.
- VSS : پین زمین است و به زمین مشترک متصل میشود.
- VCC : پین تغذیه است و به عنوان ولتاژ ورودی السیدی 16×2 استفاده میشود.
برای آشنایی بیشتر با السیدی کاراکتری 16×2 میتوانید مقاله “آموزش راه اندازی LCD كاراكتری 2×16 با آردوینو” را مطالعه نمایید.
اتصالات و سیم بندی :
در بخش قبلی بهطور خلاصه انواع نمایشگرهای LCD را بررسی کردیم تا درک بیشتری نسبت به این ماژولها و عملکرد آنها داشته باشید. اما اکنون پروژهی اپ اینونتور، یعنی ارسال پیام به گوشی از طریق آردوینو و ماژول بلوتوث را ادامه میدهیم. در مرحلهی اول، مطابق جدول زیر، اتصالات بین آردوینو و ماژول نمایشگر خود را انجام دهید.
16×2 LCD | Arduino |
---|---|
D4 – D7 | Pin 5,6,7,8 |
Enable | Pin 4 |
RS | Pin 3 |
RW | GND |
VEE | 10k POT (Middle Leg) |
VSS | GND |
VCC | 5V+ |
+LED | 5V+ |
-LED | GND |
حالا نوبت به اتصال ماژول بلوتوث HC-05 به آردوینو میباشد که با توجه به شکل زیر و پینهای گفته شده در ادامه، انجام دهید:
- پین Tx ماژول بلوتوث به پین Rx آردوینو
- پین Rx ماژول بلوتوث به پین Tx آردوینو
- پین VCC ماژول بلوتوث به پین 5 ولت آردوینو
- پین GND ماژول بلوتوث به پین GND آردوینو
در تصویر زیر اتصالات بین ال سی دی، ماژول بلوتوث HC-05 و آردوینو نمایش داده شدهاست.
توجه: قبل از آپلود برنامه خود بر روی آردوینو از جدا شدن اتصالات پینهای Rx و Tx اطمینان یابید و پس از آپلود برنامه مجدداً اتصالات آنها را انجام دهید. در غیراین صورت با خطا روبه رو خواهید شد.
برای آشنایی بیشتر با ماژول بلوتوث HC-05 میتوانید مقالهی “معرفی و راهاندازی ماژول بلوتوث HC-05” را مطالعه کنید.
تکهکد آردوینو
IDE آردوینو را در رایانه خود باز و از مسیر File > New یک فایل جدید بسازید. سپس کد زیر را در آن کپی کنید.
#include <LiquidCrystal.h>
#define maxChar 32
char message[maxChar]; // stores the message
char readChar; // reads each character
byte index = 0; // defines the position into your array
int i;
LiquidCrystal lcd(3, 4, 5, 6, 7, 8);
void setup() {
Serial.begin(9600);
lcd.begin(16, 2);
delay(1000);
}
void loop() {
if (Serial.available()) {
for (i = 0; i < 31; i++) {
message[i] = '\0';
}
index = 0;
}
while (Serial.available() > 0) {
//the message can have up to 100 characters
if (index < (maxChar - 1)) {
readChar = Serial.read(); // Reads a character
message[index] = readChar; // Stores the character in message array
index++; // Increment position
message[index] = '\0'; // Delete the last position
}
}
lcd.clear();
lcd.print(message);
for (int positionCounter = 0; positionCounter < i / 2; positionCounter++) {
delay(750);
lcd.scrollDisplayLeft();
}
}
توضیحات کد آردوینو:
برای درک بهتر از عملکرد تکهکد بالا ما برای شما توضیحات این دستورات را در این بخش بیان میکنیم:
- برنامه با اضافه شدن کتابخانه موردنیاز برای السیدی 16×2آغاز میشود.
#include <LiquidCrystal.h>
- سپس، پینهایی از آردوینو که به السیدی متصل شدند را مشخص میکنیم. به منظور تعریف اتصالات، از خط زیر استفاده میکنیم. این خط شیء LiquidCrystal را میسازد و lcd نام شئ ای است که از آن برای فراخوانی توابع ال سی دی استفاده خواهیم کرد. شما میتوانید از هر نام دلخواه دیگری استفاده نمایید.
LiquidCrystal lcd(rs, en, d4, d5, d6, d7)
- در اینجا پینهایی که استفاده کردیم به ترتیب عبارتند از:
LiquidCrystal lcd(3, 4, 5, 6, 7, 8);
- در تابع ()setup، یک ارتباط سریال به ازای بادریت 9600 باز میکنیم. پس از آن با استفاده از تابع ()lcd.begin سایز LCD را تعیین میکنیم. اولین آرگومان این تابع بیانگر تعداد ستون و دومین آرگومان بیانگر تعداد سطر السیدی میباشد.
void setup() {
Serial.begin(9600);
lcd.begin(16, 2);
delay(1000);
}
- در تابع ()loop، ابتدا بررسی میکنیم که آیا دادهای در پورت سریال در دسترس است یا خیر، چنانچه دادهای موجود باشد، ابتدا آرایه message را ریست خواهیم کرد. پس از آن کاراکترها را در پورت سریال میخوانیم و آنها را در آرایهی message ذخیره میکنیم. سپس داده را با استفاده از تابع ()lcd.scrollDisplayLeft به اندازه یک space به سمت چپ شیفت داده و بر روی السیدی نمایش میدهیم.
void loop() {
if (Serial.available()) {
for (i = 0; i < 31; i++) {
message[i] = '\0';
}
index = 0;
}
while (Serial.available() > 0) {
//the message can have up to 100 characters
if (index < (maxChar - 1)) {
readChar = Serial.read();
message[index] = readChar;
index++; // Increment position
message[index] = '\0'; // Delete the last position
}
}
lcd.clear();
lcd.print(message);
for (int positionCounter = 0; positionCounter < i / 2; positionCounter++) {
delay(750);
lcd.scrollDisplayLeft();
}
}
اپ اینونتور چیست؟
پیش از آموزش ساخت اپلیکیشن با app inventor لازم است بدانید که اپ اینونتور (MIT App Inventor) یک وب اپلیکیشن باورنکردنی است که توسط مرورگرها برای ساخت برنامههای اندرویدی جالب بدون کد نویسی به کاربر کمک میکند. در واقع یک ابزار برنامهنویسی مبتنیبر بلوک است که کاربران از طریق آن میتوانند نرمافزارهایی سفارشی برای دستگاههای اندرویدی مانند تلفنهای همراه هوشمند، تبلتها و… بسازند. این ابزار برای افراد مبتدی بسیار مناسب بوده و حتی کسانی که هیچ تجربهای در برنامهنویسی ندارند به آسانی میتوانند نحوه استفاده از این اپلیکیشن را یاد بگیرند. ما نیز برای ساخت برنامه اندرویدی اختصاصی از این ابزار استفاده میکنیم.
آموزش ساخت اپلیکیشن اندرویدی با اپ اینونتور
برای ساخت اپلیکیشن با اپ اینونتور میبایست در مرحله اول وبسایت MIT APP Inventor را در مرورگر خود باز کرده و بر روی گزینه !Create Apps کلیک نمایید.
- با کلیک بر گزینهی Create Apps، به پنجره جدیدی هدایت خواهید شد که از شما درخواست میشود با ایمیل خود لاگین کنید. سپس باید شرایط ذکر شده در تصویر زیر را بپذیرید.
- اکنون یک پیغام خوشآمدگویی دریافت خواهید کرد. برای کسب اطلاعات بیشتر در مورد نحوه نصب inventor برروی تلفن همراه خود میتوانید به لینک نشان داده شده، مراجعه کنید. در غیر این صورت روی گزینه “Continue” کلیک کنید تا فرآیند تکمیل شود. در صورت تمایل میتوانید نگاهی به آموزشهای ارائه شده بیندازید. برای شروع ساخت اپلیکیشن اختصاصی خود برروی گزینه”Start a blank project” کلیک کنید.
- در این مرحله از شما خواسته میشود نامی برای پروژه خود انتخاب کنید. یک نام مناسب انتخاب و روی ”ok” کلیک نمایید.
- با کلیک بر روی گزینهی OK، پنجرهی زیر باز خواهد شد که به عنوان طراح شناخته میشود. اینجا جایی است که ما رابط کاربری اپلیکیشن خود را سفارشیسازی خواهیم کرد. میتوانیم برای مخاطب خود متن، گزینه، عکس و انواع قابلیتهای دیگر را با کشیدن و رها کردن مؤلفهها از ستون palette، ستون سمت چپ، به اپلیکیشن اضافه و سپس ویژگیهای آنها را از طریق ستون Properties تنظیم کنیم.
1) ساخت رابط کاربری (UI) برنامه برای ارسال پیام به آردوینو
حال بیاید ساخت رابط کاربری برنامهی خود در اپ اینونتور را شروع کنیم. از مسیر Palette > User Interface ، گزینه”TextBox” را انتخاب و آن را به قسمت Viewer بکشید و رها کنید. اکنون میتوانید آن را هم در قسمت Viewer و هم در لیست Components مشاهده کنید. با استفاده از گزینه Rename موجود در قسمت Components، نام آن را به “TextBoxMessage” تغییر میدهیم. همانطور که میبینید قسمت Properties ویژگیهایی را که برای این چیدمان تنظیم کردیم را نشان می دهد.
بخش Viewer، طراحی نهایی اپلیکیشن شما را که بر روی تلفن همراه هوشمند نمایش داده خواهد شد، نشان میدهد.
همانطور که در تصویر زیر نشان داده شدهاست، از سربرگ Layout، گزینه “VerticalArrangementButtons” را انتخاب و بهصورت زیر تنظیمات را انجام دهید.
از مسیر Interface > Button یک دکمه (button) را به قسمت Viewer بکشید و رها کنید. سپس نام این گزینه را در قسمت VerticalArrangementButtons به “SendMessageButton” تغییر دهید. تنظیمات را نیز بهصورت زیر انجام دهید. این گزینه پیامی که توسط کاربر در textbox وارد میشود را به آردوینو ارسال خواهد کرد.
سپس یک برچسب در زیر گزینه SendMessage قرار دهید و نام آن را در قسمت Components به “BluetoothConnection” تغییر دهید.
از قسمت Properties میتوانید متن، فونت، سایز و رنگ این برچسب را نیز تغییر دهید. تنظیمات موردنظر ما در تصویر زیر نمایش داده شدهاست:
برای گزینه اتصال بلوتوث، یک لیست قابل انتخاب اضافه میکنیم. بدینمنظور از مسیر User Interface > ListPicker آن را به زیر برچسب BluetoothConnection میکشیم و رها میکنیم و تنظیمات مربوطه را مطابق تصویر زیر انجام میدهیم.
2) افزودن کلاینت و ساعت بلوتوث به برنامه MIT App Inventor
از مسیر Palette > Connectivity بر روی گزینه BluetoothClient کلیک کرده و آن را به قسمت Viewer بکشید و رها کنید. این یک مؤلفه پنهان در اپلیکیشن ماست و این امکان را به ما میدهد تا به ماژول بلوتوث موردنظر خود متصل شویم.
سپس از مسیر Palette > Sensors بر روی گزینه clock کلیک کرده و آن را به قسمت Viewer بکشید و رها کنید. نام آن را به BluetoothClock تغییر دهید. این نیز یک مؤلفه پنهان در اپلیکیشن ماست که برای ثبت زمان مورد استفاده قرار میگیرد.
3) چیدمان درلایه بلاک های اپ اینونتور
در این بخش میتوان برنامه نویسی با اپ اینونتور بهطور تصویری را با مرتب کردن بلاک ها تجربه کرد، برای انجام اینکار میبایست در نوار بالای پنجره بر روی گزینه “Blocks” کلیک کنید. یک پنجرهی ویرایشگر جدید باز خواهد شد. در اینجا نحوه پاسخگویی اپلیکیشن خود را طراحی خواهیم کرد. با کلیک بر روی بلوکها و کشیدن آنها، بلوکها را در workspace میچینیم.
- ابتدا همانطور که در تصویر زیر نمایش داده شدهاست، بلاکها را برای Bluetooth Connection میچینیم.
سپس نوبت بلوکهای SendMessageButton است. زمانی که بر روی گزینه Send Message کلیک میشود، متن موجود در TextBoxMessage برای آردوینو ارسال میگردد.
تنظیمات App Inventor بر روی موبایل اندروید
اکنون ساخت اپلیکیشن ما در MIT App Inventor به اتمام رسید و کد آن را نیز نوشتهایم. پس بیایید پروژه ارسال پیام به آردوینو با گوشی موبایل، به کمک MIT App Inventor را ادامه دهیم و این برنامه را بر روی موبایل خود نصب کنیم. بدین ترتیب قادر خواهیم بود از هرجایی از جهان به نرم افزار سفارشی خود بهشکل بی سیم دسترسی داشته باشیم. بنابراین مراحل زیر را دنبال کنید.
- ابتدا برای دانلود اپ اینونتور برای اندروید، به Play Store بروید، سپس نصب “MIT AI2 Companion” را روی موبایل اندروید خود انجام دهید.
2. پس از نصب اپلیکیشن، آن را باز کنید. شما باید یک کد 6 کارکتری را وارد کنید یا اینکه یک QR کد را اسکن نمایید.
بدینمنظور، به صفحه اصلی MIT App Inventor که در شروع کار اپلیکیشن خود ساختیم بروید، به مسیر Build > Android (.apk) .پس از چند ثانیه یک بارکد ساخته خواهد شد. شما هم میتوانید فایل apk. را دانلود کنید و هم با MIT App Inventor بارکد را اسکن نمایید.
پس از نصب فایل apk. بر روی تلفن همراه خود، میتوانید صفحهایی که طراحی کردید را مشاهده کنید.
نمایش پیام ارسال شده به آردوینو برروی LCD
بالاخره به بخش جذاب ماجرا رسیدیم! در اینجا میخواهیم برنامه را بر روی آردوینو آپلود کنیم و سپس هر پیامی که با موبایل برای آردوینو ارسال میکنیم بر روی ال سی دی به نمایش درآید.
- از منوی Tools برد آردوینو و پورت صحیح را انتخاب کرده و سپس کد را آپلود نمایید. ماژول آردوینو را از مسیر Tools > Board و پورت را از مسیر Tools > Port انتخاب کنید.
- در این مرحله بر روی گزینه upload کلیک کرده و کد را بر روی برد توسعه آردوینو آپلود کنید. سپس با فشردن دکمه ریست روی ماژول، آن را مجددا راهاندازی کنید.
- اپلیکیشن MIT Companion را بر روی تلفن همراه خود باز و تلفن اندروید خود را با ماژول بلوتوث HC-05 جفت کنید. سپس گزینه ”Connect Bluetooth “ را انتخاب نمایید.
- ماژول بلوتوث HC-05 را انتخاب و به آن متصل شوید.
- اکنون پیغامی در textbox تایپ کنید و بر روی گزینه Send Message کلیک نمایید. نمایشگر السیدی به طور خودکار پیغام را نمایش خواهد داد.
سخن پایانی
همانطور که در این پروژه با اپ اینونتور مشاهده نمودید و انجام دادید، با ساخت اپلیکیشن در app inventor و نصب آن بر روی گوشی موبایل، قادر به ارسال پیام به آردوینو شدیم، این آموزش، پروژهای ساده اما مهم در تلفیق با دیگر پروژههای اینترنت اشیاء میباشد که شما میتوانید باتوجه به سطح مهارت و دانش خود از آن در ساخت یک راه ارتباطی و کنترل از راه دور انواع اشیاء مانند ربات ها و حسگرها و… استفاده کنید.
امیدواریم با اتمام این پروژه به نتیجهی دلخواه خود رسیده باشید، اما چنانچه در روند پیادهسازی آن به مشکل خورده و یا پیشنهادی در این رابطه برای ما دارید، تنها با درمیان گذاردن آن در قسمت دیدگاه همین صفحه، منتظر پاسخ خود در اسرع وقت از تیم کارشناس روبوایکیو باشید..