آردوینو اپلیکیشن برد ESP8266 برد ویموس Wemos

آموزش ساخت اپلیکیشن اختصاصی اندروید برای بردهای آردوینو Arduino

create-android-app-for-arduino-digispark
نوشته شده توسط نیلوفر مهرنیا

حتما تا به‌حال اپلیکیشن‌های آماده‌ای را دیده‌اید که با بردهای خاصی در پروتکل خاصی ارتباط برقرار می‌کنند. اما این اپلیکیشن‌ها کاربردی عمومی دارند و برای ما شخصی‌سازی ‌شده نیستند. پس طبیعی است که نیازهای ما را کامل برطرف نسازند و رضایت کامل ما را جلب نکنند. در اینجاست که باید خودمان دست به کار شویم و اپلیکیشن مورد نیاز خود را با ظاهر و عملکرد اختصاصی بسازیم. در این آموزش قصد داریم اپلیکیشن اندرویدی برای ارتباط با ESP8266 یا تمام بردهای دارای این تراشه بنویسیم و نحوه ارسال و دریافت اطلاعات را بیاموزیم. در این آموزش برای ارتباط بین اندروید و برد ESP8266 از پروتکل وای فای و ساختار داده JSON استفاده می‌کنیم. برای برنامه‌نویسی اپلیکیشن از زبان جاوا و از محیط اندروید استودیو بهره می‌بریم. برای برنامه‌نویسی برد از Arduino IDE استفاده می‌کنیم. می‌خواهیم اپلیکیشنی طراحی کنیم که دما را از برد گرفته و نمایش دهد. در ادمه این آموزش با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.

 


برنامه‌نویسی آردوینو


ارتباط برد آردوینو با اپلیکیشن از طریق Json صورت می‌گیرد. برای استفاده از JSON در Arduino IDE پیش از هر کاری، آموزش استفاده از JSON در آردوینو Arduino IDE را مطالعه کنید. باید وای فای برد را به‌صورت اکسس پوینت تعریف کنیم تا تلفن همراه به‌صورت کلاینت به آن وای فای متصل شود. تعریف اکسس پوینت و کلاینت را در آموزش ساخت اکسس پوینت و کلاینت در Esp8266 بخوانید.

 

در کد فوق وقتی دستور گرفتن دما از سوی اپلیکیشن بیاید، تابع tempActivity فراخوانی می‌شود و در آن تابع مقدار دمای خوانده‌شده‌ی زمان حال برای اپلیکیشن فرستاده می‌شود. وقتی مقدار دما در متغیر Webpage سریالایز می‌شود، ساختار جیسون در این متغیر برای مثال به‌صورت String زیر است.

 

 


اتصالات مدار


در این پست از سنسور دما DS18B20 استفاده کرده‌ایم. اتصالات سه پایه این سنسور را مطالبق توضیحات ادامه انجام دهید. پایه Vcc سنسور را به پایه ۵ ولت برد، پایه GND سنسور را به GND برد و پایه Data سنسور را به D3 متصل کنید.

 


برنامه‌نویسی اپلیکیشن اندروید


برای استفاده از JSON در اندروید استودیو با استفاده از کتابخانه retrofit لازم است خطوط زیر را به آن اضافه کنید. اگر طرز اضافه کردن کتابخانه را نمی‌دانید به آموزش افزودن کتابخانه در نرم‌افزار اندروید استودیو Android Studio مراجعه کنید.

و دسترسی زیر را به مانیفست اپلیکیشن اضافه می‌کنیم:

سپس یک کلاس به نام ServiceGenerator می‌سازیم و کدهای زیر را درونش می‌نویسیم:

 

برای استفاده از JSON اول باید یک مدل از روی آن بسازیم. اگر ساختن مدل برایتان سخت است، می‌توانید از ابزارهای آماده برای ساخت مدل  JSON استفاده کنید. یکی از این ابزارها سایت www.jsonschema2pojo.org است که با نوشتن داده‌های خود به‌صورت JSON می‌توانید توابع موردنیاز را به‌صورت آماده دریافت کنید. دقت کنید گزینه‌های تیک خورده مانند عکس زیر باشد.

سپس می‌توانید از گزینه Preview یا Zip کدها را دریافت کنید. این کدها را در یک کلاس جاوا در برنامه ذخیره کنید. (برای مثال نام کلاس Category در نظر گرفته‌شده است.)

 


دریافت از آردوینو با دستور GET


در قدم بعدی لازم است یک اینترفیس به نام StoreClient بسازید و به‌صورت زیر آن را کامل کنید.

توجه کنید که آدرس نوشته‌شده در جلوی GET باید با دستوری که در آردوینو برای فراخوانی تابع معرفی کردیم یکسان باشد. حالا نوبت به UI اپلیکیشن می‌رسد که ما یک دکمه به شکل زیر تعریف می‌کنیم تا با فشردن آن دما نمایش داده شود.

 

 


کدهای جاوای اکتیویتی


 

به همین سادگی توانستیم داده‌ها را در گوشی خود دریافت کنیم.

 


ارسال به آردوینو با دستور POST


برای ارسال اطلاعات از گوشی به آردوینو هم باید از دستور POST استفاده کنیم. برای مثال یک متن را به آردوینو می‌فرستیم. لازم است تابع مربوطه را در آردوینو بنویسید.

و در setup آن را معرفی کنید:

در بخش اندروید در اینترفیس StoreClient این کدها را اضافه می‌کنیم:

حواستان باشد نام فیلدهای JSON در اندروید و آردوینو متفاوت تعریف نشود.

در کلاس مدل Category، این‌ها را اضافه می‌کنیم:

دکمه دیگری تعریف می‌کنیم تا با فشردن آن، پیام تعریف‌شده در سریال مانیتور آردوینو نمایش داده شود:

و در کدهای جاوای آن می‌نویسیم:

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

 


وسایل مورد نیاز


برد wemos d1 mini یا برد node mcu یا هر برد دیگری با ESP8266

سنسور دمای DS18B20

تلفن همراه دارای اندروید ۴ به بالا

 

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

 

 


پروژه و دریافت بن ارسال رایگان


برای دریافت بن خرید از دانشجو کیت، کاربران بایستی با استفاده از وسایل این آموزش، پروژه را اجرا کرده و یا حتی مدار جدیدی تعریف کنید. سپس از اجرای کار فیلم گرفته و در شبکه‌های اجتماعی از جمله آپارات و اینستگرام، با هشتگ‌های دیجی_اسپارک دانشجوکیت digispark daneshjookit منتشر کنند. سپس از طریق بخش نظرات در ادامه همین آموزش، جهت دریافت بن خرید ارسال رایگان به ارزش ۱۲۰۰۰ تومان از دانشجو کیت، لینک را زیر همین پست ارسال کنید.

 

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

نیلوفر مهرنیا

مهندس نرم افزار

تبادل نظر و رفع عیب با ثبت دیدگاه