آموزش ارتباط با پهپاد از طریق ESP8266

Ratings
(0)

در این فصل ما با موفقیت، یک بسته را با استفاده از پهپادِ کنترل ماموریت(mission control) خود، در یک مکان تحویل داده ایم. اما پهپاد کنترل ماموریت، برای داشتن یک پرواز موفق، نیاز دارد تا از آب و هوا و محیط آگاه باشد. بنابراین اگر ما بتوانیم آب و هوای اطراف پهپاد را بررسی کنیم، می توانیم به صورت امن، آن را به پرواز در آوریم و بسته ی ما بدون هیچ مشکلی حمل خواهد شد. برای مانیتور کردن آب و هوا، به موارد زیر نیاز داریم(در این فصل فقط فشار هوا را بررسی می کنیم):

  1. یک سنسور فشار بارومتریک(ترجیحا 180 BMP )
  2. یک برد آردوینو (ترجیحاً pro mini)
  3. یک ماژول ESP8266

 ابتدا آردوینو را به سنسور بارومتریک متصل کنید. سپس به صورت زیر پین ها را متصل کنید:

 

 برای اطلاعات بیشتر، مدار زیر را مشاهده کنید:

 اکنون ESP8266 را به آردوینو متصل کنید. و پین ها را به صورت زیر به هم متصل کنید:

 

به مدار زیر توجه کنید:

 همچنین، ما نیاز داریم که یک منبع تغذیه 3.3V را (مثلا یک باتری) به سیستم خود متصل کنیم. تنظیمات به صورت زیر می باشد:

 

 برای اطلاعات بیشتر، به نمودار زیر توجه کنید:

 حالا ما نیاز داریم یک سرور که می خواهیم آب و هوا را به وسیله ی آن مانیتور کنیم، تنظیم و پیکربندی کنیم. ما می توانیم از هر سروری استفاده کنیم اما می خواهیم از سرور EasyIoT (https://easyiot-cloud.com) استفاده کنیم.

 

 1. یک اکانت در سایت مذکور ایجاد کنید تا کار را شروع کنیم. ما می خواهیم کدهایی را در آردوینو آپلود کنیم. سورس کد کامل در اینجا قرار دارد.

2. ما در آینده در مورد تابع های اصلی بحث خواهیم مرد.

3.ما از کتابخانه های زیر در کدِ خود استفاده کرده ایم:

#include <Esp8266EasyIoT.h>
#include <SFE_BMP180.h>
#include <ESP8266WiFi.h>

 1. برای نصب اولین کتابخانه(در بالا)، فایل های مثال را با رفتن به این آدس، دانلود کنید. سپس آنها را در نرم افزار آردوینو نصب کنید؛ یا آنها را به کتابخانه ی نرم افزار آردوینو اضافه کنید.

2. برای نصب کتابخانه ی فشار سنج(barometer) فایل zip که در این آدرس قرار دارد را دانلود کنید و فایل را اکسترکت(استخراج) کنید و آن را در پوشه ی Arduino/libraries نصب کنید.

3. برای نصب کتابخانه ی ESP8266WiFi، تمام کاری که باید انجام دهیم این است که به Board Manager برویم و ESP8266 را نصب کنیم.

 2. در کدها، ارتفاع پهپاد را مشخص کنید:

#define ALTITUDE

 3. این مقدار، برای دریافت داده هایِ فشارِ صحیح، مهم است. ما در زیر، سخت افزار خود را مشخص می کنیم:

SFE_BMP180 bmp180;
Esp8266EasyIoT esp;

4. این نوع داده، که می خواهیم آن را در سرور قرار دهیم، نیاز به این دارد که در کدها نیز تعریف شود. ما می خواهیم دما و فشار را مشاهده کنیم و آنها را در سرور، پیش بینی کنیم. بنابراین آنها را به صورت زیر تنظیم می کنیم:

Esp8266EasyIoTMsg msgTemp(CHILD_ID_TEMP, V_TEMP);
Esp8266EasyIoTMsg msgPress(CHILD_ID_BARO, V_PRESSURE);
Esp8266EasyIoTMsg msgForec(CHILD_ID_BARO, V_FORECAST);

5. تابع void setup() یک تابع ساده است. ما نیاز داریم تا نرخ انتقال(baud rate) را برای ESP8266 تنظیم کنیم. برای دیباگ کردن در سریال مانیتور(Serial Monitor) همچنین می توانیم یک نرخ انتقال دیگر را نیز اضافه کنیم:

Serial1.begin(9600);
Serial.begin(115200);

6. ما نیاز داریم سنسور خود را مقدار دهی اولیه(initialize) کنیم؛ این سنسور، فشار را اندازه می گیرد. بنابراین در تابع void setup() نیاز داریم که با اضافه کردن شرط ها، فشار سنج را بررسی کنیم:

if (bmp180.begin())
     Serial.println("BMP180 initialization successful");
   else
     {
       Serial.println("BMP180 initialization failed\n\n");
       while(1); 
     }

7. در اینجا، دستور while(1) سیستم را برای همیشه متوقف خواهد کرد. سپس نیاز داریم ماژول ESP8266 را با نوشتن کدهای زیر، برای دیگر اهداف آماده کنیم:

esp.begin(NULL, ESP_RESET_PIN, &Serial1, &Serial);

8. اگر ESP8266 با موفقیت متصل شده باشد، ما می توانیم چند پارامتر دیگر را به متد esp.present() بدهیم تا داده های ما را به ESP8266 ارسال کند و سپس آن را به سرور برگرداند.

esp.present(CHILD_ID_TEMP, S_TEMP);
esp.present(CHILD_ID_BARO, S_BARO);

9. برای پیش بینی کردن، ما یک تابع در فایل کدها ایجاد کرده ایم:

calculateForecast(double pressure){  
  }

10. ما در اینجا، تعدادی متغیر و شرط را بسته به زمان تنظیم کرده ایم؛  و داده های متوسط(average data) را دریافت می کنیم و آن را بعداً نمایش می دهیم. تابع void loop() با بررسی زمان و وضعیت سنسورها بارگیری(لود) می شود.

#define AP_USERNAME "******"
#define AP_PASSWORD "******"
#define INSTANCE_ID "******"

 11. مطمئن شوید که ESP8266 به اینترنت متصل باشد. برای انجام این کار، ID روتر(router)  و پسورد را در کدها تعریف کنید و به آن متصل شوید. توصیه می کنیم که برای پهپاد، از یک روتر قابل حمل(portable) استفاده کنید:

const char* ssid = "The WiFi Name";
const char* password = "WiFI Password";

 خط کد زیر را اضافه کنید void setup() در فایل   
WiFi.begin(ssid, password);

 12. حالا، از داشبورد EasyIot به آدرس Configuration | Modules | Add Module بروید. برای ماژول خود، یک ID ( ما نمی توانیم این را ویرایش کنیم). و یک نام مشخص کنید و گزینه ی Module Type را برابر با generic قرار دهید.

13. ماژول خود را پس از اضافه کردن پارامترهای سنسور از دما و فشار ذخیره(save) کنید.

14. سپس به آدرس Config | User Info بروید و Instance Id را برای ماژولی که ایجاد کرده ایم، تنظیم کنید.

15. اکنون، می توانیم این کدها را در آردوینو آپلود کنیم و داده های نشان داده شده را در سرور، از لیست Module بررسی کنیم.

 


 خلاصه فصل 5

در این فصل، یاد گرفتیم که چگونه می توانیم یک پهپاد کنترل ماموریت(mission control) ایجاد کنیم و اینکه چگونه می توانیم با پهپاد، از سرور ارتباط برقرار کنیم. همچنین در مورد اضافه کردن یک دوربین به پهپاد صحبت کردیم که به وسیله ی آن می توانیم یک نمای واقعی از پهپاد داشته باشیم. از حمل بسته های سنگین با پهپاد اجتناب کنید؛

اکنون ما می توانیم در خانه، بیرون را مشاهده کنیم. یا می توانیم چند سنسور دیگر به پهپاد خود اضافه کنیم و در بیرون، داده ها را جمع آوری کنیم. این ها کارهایی است که معمولاً پهپادهای کنترل ماموریت انجام می دهند. این پهپادها کاربرد های دیگری نیز دارند؛ که به زودی به آنها نیز خواهیم پرداخت؛ اما شما می توانید از خلاقیت خود، برای اختراع چیزهای جدید استفاده کنید.

برای بهبود بخشیدن به فرآیند ایجاد پهپادها به روشی کارآمدتر، قصد داریم یک پهپاد جذاب دیگر ایجاد کنیم که از شما عکس سلفی بگیرد و یک ویدئو ضبط کند. در فصل 6، در بخش ایجاد یک پهپاد برای گرفتن سلفی یا ضبط ویدیو، مشاهده می کنیم که چگونه می توانیم یک پهپاد برای گرفتن سلفی ایجاد کنیم که بتواند از آسمان عکاسی کند یا ویدئو ضبط کند.

 

  • بازدید: 299

نوشتن دیدگاه

لطفا نظرات خود را بیان کنید. به سوالات در سریع ترین زمان پاسخ داده خواهد شد.اما به نکات زیر توجه کنید:
1. سعی کنید نظرات شما مرتبط با مقاله ی مورد نظر باشد، در غیر این صورت پاسخ داده نخواهد شد.
2. سوالات خود را به صورت کوتاه بیان کنید و از پرسیدن چند سوال به طور همزمان خودداری کنید.
3. سوال خود را به طور واضح بیان کنید و از کلمات مبهم استفاده نکنید.

ارسال