SoSa
SoSa
خواندن ۴ دقیقه·۴ سال پیش

برنامه ریزی بردهای آردوینو از طریق اینترنت (Programming the Arduino boards By Over The Air method)

با درود

در این پست در رابطه با نحوه برنامه ریزی بردهای آردوینو از طریق اینترنت و یا اتصال WIFI اطلاعاتی را با شما به اشتراک خواهم گذاشت.

برای برنامه ریزی بردهای آردوینو با روش OTA (Over the Air)، می توان از روش اتصال به سرور داخلی (LocalHost) و یا با استفاده از سایت های اینترنتی (مانند Github و ...)، این کار را انجام داد.

روش اول :

در رابطه با روش اتصال به سرور داخلی (LocalHost)، پست هایی جالبی در اینترنت مانند نمونه های زیر موجود میباشد :

۱- اموزش زیر از سایت سیسوگ :


۲- نمونه زبان انگلیسی روش بالا (کدهای ویدیو زیر ):

https://www.youtube.com/watch?v=3aB85PuOQhY


روش اجرای کار شرح داده در بالا، به صورت خلاصه شامل مراحل زیر می گردد:


۱- ابتدا نیاز می باشد که بردهای قابل اتصال به اینترنت مانند سری های ESP8266 یا بردهایی Arduino Uno متصل به ماژول های قابل اتصال به اینترنت از قبیل اترنت و ... از طریق پورت USB به PC متصل شوند.


۲- در مرحله بعد نیاز می باشد که بر اساس آموزش های اینجا، کتابخانه ArduinoOTA در نرم‌افزار آردوینو نصب گردد.

http://arduino.esp8266.com/stable/package_esp8266com_index.json
http://arduino.esp8266.com/stable/package_esp8266com_index.json


۳- از طریق برنامه هایی مانند برنامه زیر ( برای ESP8266 ) برنامه روی این برد ریخته شود:

#include <ESP8266WiFi.h>
#include <ESP8266mDNS.h>
#include <WiFiUdp.h>
#include <ArduinoOTA.h>
#ifndef STASSID
#define STASSID &quotAdsl momo&quot
#define STAPSK &quot9155253009&quot
#endif
const char* ssid = STASSID;
const char* password = STAPSK;
void setup() {
Serial.begin(115200);
Serial.println(&quotBooting&quot);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.waitForConnectResult() != WL_CONNECTED) {
Serial.println(&quotConnection Failed! Rebooting...&quot);
delay(5000);
ESP.restart();
}
// Port defaults to 8266
// ArduinoOTA.setPort(8266);
// Hostname defaults to esp8266-[ChipID]
// ArduinoOTA.setHostname(&quotmyesp8266&quot);
// No authentication by default
// ArduinoOTA.setPassword(&quotadmin&quot);
// Password can be set with it's md5 value as well
// MD5(admin) = 21232f297a57a5a743894a0e4a801fc3
// ArduinoOTA.setPasswordHash(&quot21232f297a57a5a743894a0e4a801fc3&quot);
ArduinoOTA.([]() {
String type;
if (ArduinoOTA.getCommand() == U_FLASH) {
type = &quotsketch&quot
} else { // U_FS
type = &quotfilesystem&quot
}
// NOTE: if updating FS this would be the place to unmount FS using FS.end()
Serial.println(&quotStart updating &quot + type);
});
ArduinoOTA.([]() {
Serial.println(&quot\nEnd&quot);
});
ArduinoOTA.([](unsigned int progress, unsigned int total) {
Serial.printf(&quotProgress: %u%%\r&quot, (progress / (total / 100)));
});
ArduinoOTA.([](ota_error_t error) {
Serial.printf(&quotError[%u]: &quot, error);
if (error == OTA_AUTH_ERROR) {
Serial.println(&quotAuth Failed&quot);
} else if (error == OTA_BEGIN_ERROR) {
Serial.println(&quotBegin Failed&quot);
} else if (error == OTA_CONNECT_ERROR) {
Serial.println(&quotConnect Failed&quot);
} else if (error == OTA_RECEIVE_ERROR) {
Serial.println(&quotReceive Failed&quot);
} else if (error == OTA_END_ERROR) {
Serial.println(&quotEnd Failed&quot);
}
});
ArduinoOTA.begin();
Serial.println(&quotReady&quot);
Serial.print(&quotIP address: &quot);
Serial.println(WiFi.localIP());
}
void loop() {
ArduinoOTA.handle();
}


در مرحله بعدی در صورت اتصال صحیح برد به اینترنت ( شبکه محلی با ادرس 192.168.1.X در اینجا!)، شما می توانید با انتخاب گزینه جدید مانند نمونه زیر برنامه جدید را روی برد خود از طریق شبکه وای فای محلی آپلود نمایید:

چند نکته قابل توجه:

۱- در صورت وارد نمودن اطلاعات بخش پسورد و یوزر برای اینکار در برنامه های ArduinoOTA مانند بخش زیر :

ArduinoOTA.setHostname(&quotmyesp8266&quot);
ArduinoOTA.setPassword(&quotadmin&quot);

سوالی مبنی بر پسورد در مرحله ریختن برنامه از طریق انتخاب گزینه Port : 192.*** ، از شما پرسیده خواهد شد ، که جواب آن در داخل برنامه قرار داده شده است مثلا در اینجا User=myesp8266 و Password=admin، می باشد.

۲- در صورت عدم قرار دادن اطلاعات مربوط به بخش های اصلی این برنامه در توابع void setup و void loop، f، به همراه کتابخانه های مورد نیاز مانند :

#include <WiFiUdp.h>
#include <ArduinoOTA.h>

امکان اجرای فرایند برنامه ریزی از طریق شبکه محلی یا اینترنت در صورت حذف کدهای بخش OTA، برای بار دوم وجود نخواهد داشت. یک نمونه از برنامه تست دما با قابلیت OTA ، برای دقت بر جزئیات و نحوه نوشتن توابع در دو تابع اصلی void setup و void loop، در اینجا قابل مشاهده می باشد. بخش های برنامه OTA در لینک قبل، در شکل زیر قابل مشاهده می باشد:


روش دوم:

این روش شامل "ریختن برنامه روی بردهای آردوینو با استفاده از سایتهای اینترنتی" می گردد.نمونه ای از انجام این کار در ویدئوی زیر توضیح داده شده است:

https://www.youtube.com/watch?v=FuY6BobS-1k&feature=youtu.be


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


۱- ریختن برنامه در سایت GitHUb از روش توضیح داده شده در این ویدیو و این لینک.

۲- استفاده از سایت های مخصوص این کار مانند موارد زیر :

۲-۱ سایت https://ota.aglow.co.in با هزینه ی شارژ ماهانه حدود ۵۰ دلار (آموزش نحوه کار در این ویدیو و این لینک)

۲-۲ با کمک امکانات رایگان گوگل توضیح داده شده در این لینک:

Serverless Continuous Integration and OTA update flow for IoT devices using Google Cloud Build and Arduino

با تشکر از توجه شما و با آرزوی شادی و موفقیت.



otaarduinowebupgrade frameworkprograming
یکی از آدمهای شهر، با کنجکاوی ها، پیچیدگی ها و قصه ی مخصوص به خودش.
شاید از این پست‌ها خوشتان بیاید