آغاز کار با NodeMCU ESP8266 با استفاده از Arduino IDE
فهرست مطالب
-
مقدمه
آنچه در این آموزش یاد می گیرید
Nodemcu چیست؟
چگونه Nodemcu را با Arduino IDE پروگرم کنیم؟
-
کنترل یک LED از طریق یک صفحه HTTP با استفاده از NodeMCU
کد
چه بردهای دیگری را می توانم بجای NodeMCU استفاده کنم؟
مقدمه
در این آموزش نحوه استفاده از Nodemcu را با نرم افزار Arduino IDE خواهید آموخت.
آنچه در این آموزش یاد می گیرید
- Nodemcu چیست و مشخصات آن چگونه است
- نحوه نصب بوردهای مبتنی بر ESP8266 در Arduino IDE
- چگونگی برنامه ریزی Nodemcu توسط Arduino IDE
- معرفی بردهایی که می توانند جایگزین
Nodemcu چیست؟
امروزه کاربردهای IOT روز به روز درحال افزایش است و اتصال اشیا بهم از اهمیت زیادی برخوردار است. روش های مختلفی برای اتصال اشیا به یکدیگر وجود دارد که از جمله آنها اتصال با استفاده از پروتکل WiFi است.
Nodemcu یک پلتفروم متن باز مبتنی بر ESP8266 می باشد که قابلیت اتصال اشیا بهم و انتقال اطلاعات از طریق Wifi را فراهم می سازد بعلاوه با فراهم آوردن برخی کاربردهای مهم میکروکنترلرها از جمله GPIO، PWM، ADC و … می تواند به تنهایی بسیاری از نیازهای پروژه را برطرف سازد. اما مشخصات کلی این بورد به شرح زیر است:
- راحتی استفاده
- قابلیت برنامه نویسی با زبان برنامه نویسی lua یا Arduino IDE
- قابلیت استفاده بصورت access point یا station
- قابلیت استفاده در کاربردهای Event-driven API
- دارای آنتن داخلی
- دارای 13 پایه GPIOT، 10 کانال PWM، I2C، SPI، ADC، UART و 1-Wire
چگونه Nodemcu را با Arduino IDE پروگرم کنیم؟
برای استفاده از Arduino IDE به منظور پروگرم کردن Nodemcu ابتدا باید این بورد را به نرم افزار معرفی کنید. برای این کار کد زیر را کپی کرده و گام پیش رو را انجام دهید:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
گام اول) در منوی file بخش preferences در قسمت Additional Board Manager URLs کد کپی شده را وارد کنید و Ok را بزنید.
گام دوم) به منوی Tools بخش Boards>Boards Manager رفته و کلمه Esp8266 را در تب موجود سرچ کنید و بوردهای Esp8266 را نصب کنید، پس از پایان مراحل نصب لیبل نصب شده برروی بوردهای Esp8266 ظاهر می گردد.
پس از پایان این دو گام انواع بوردهای مبتنی بر Esp8266 از جمله Nodemcu به لیست بوردهای Arduino IDE شما اضافه می شود و با انتخاب آن می توانید برروی آن کد مدنظر خود را پروگرم کنید.
شمای پایه های Nodemcu بصورت زیر است:
برای استفاده از پایه های دیجیتال باید از شماره های GPIO استفاده کرد بطور مثال پایه D7 بورد با GPIO13 معرفی شده پس در برنامه هرجا نیاز به استفاده از D7 داشتید باید با پایه 13 تنظیمات راانجام دهید. از پایه D2(GPIO4) بعنوان SDA و از D1(GPIO5) بعنوان SCL می توانید استفاده کنید.
کنترل یک LED از طریق یک صفحه HTTP با استفاده از NodeMCU
با استفاده از Nodemcu می توانید از طریق وایفای به مودم خود متصل شوید و با ساخت یک صفحه HTTP پنل مدنظر خود را بسازید و دستورات لازم را اعمال کنید.
در این نمونه در صفحه HTTP با اعمال کلید های On و Off می توانید یک LED یا رله و یا … کنترل کنید.
در کد زیر SSID و password مودم خود را در بخش مربوطه بنویسید و آنرا از طریق Arduino IDE روی Nodemcu خود آپلود کنید (سایر تنظیمات را به حالت پیشفرض رها کنید):
کد
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
/* Set these to your desired credentials. */
const char *ssid = "*****"; //Enter your WIFI ssid
const char *password = "*****"; //Enter your WIFI password
ESP8266WebServer server(80);
void handleRoot() {
server.send(200, "text/html", "<form action=\"/LED_BUILTIN_on\" method=\"get\" id=\"form1\"></form><button type=\"submit\" form=\"form1\" value=\"On\">On</button><form action=\"/LED_BUILTIN_off\" method=\"get\" id=\"form2\"></form><button type=\"submit\" form=\"form2\" value=\"Off\">Off</button>");
}
void handleSave() {
if (server.arg("pass") != "") {
Serial.println(server.arg("pass"));
}
}
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
delay(3000);
Serial.begin(115200);
Serial.println();
Serial.print("Configuring access point...");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
server.on ( "/", handleRoot );
server.on ("/save", handleSave);
server.begin();
Serial.println ( "HTTP server started" );
server.on("/LED_BUILTIN_on", []() {
digitalWrite(LED_BUILTIN, 1);
Serial.println("on");
handleRoot();
});
server.on("/LED_BUILTIN_off", []() {
digitalWrite(LED_BUILTIN, 0);
Serial.println("off");
handleRoot();
});
}
void loop() {
server.handleClient();
}
Arduino
پس از باز کردن Serial monitor درصورت اتصال اینترنت آدرس IP صفحه ساخته شده(بعنوان مثال 192.168.1.18) به شما داده می شود، آنرا کپی کرده و در Browser خود paste کنید تا صفحه HTTP باز شود.
چه بردهای دیگری را می توانم بجای NodeMCU استفاده کنم؟
ویژگی های مختلفی در انتخاب نوع بورد برای یک سیستم IOT حائز اهمیت است از جمله این ویژگی ها میتوانیم به تعداد پایه های GPIO، پروتکل های ارتباطی، وجود آنتن و .. نام برد، پلتفروم ها و بورد های متفاوتی نیز برای استفاده در پروژه های IOT وجود دارد که هریک ویژگی های خاص خود را دارند که به مقایسه کلی آنها براساس مهمترین ویژگی های لازم در پروژه های IOT می پردازیم.
Board | Cost $ | Voltage | GPIO | ADC | PWM | UART | SPI | I2C | Internal antenna | Special Features |
---|---|---|---|---|---|---|---|---|---|---|
Nodemcu | 8.39 | 5 | 13 | 1 | 10 | 2 | Yes | Yes | Yes | User LED – RESET and FLASH Buttons |
Esp8266-01 module | 4.55 | 3.3 | 2 | 1 | 0 | 1 | No | No | Yes | - |
Wemos D1 mini | 2.04 | 5 | 11 | 1 | 10 | 3 | Yes | Yes | Yes | RESET and FLASH Buttons |
Witty Cloud | 16.50 | 5 | 9 | 1 – connected to LDR | 9 | 1 | Yes | Yes | Yes | LDR – RGB – 3x Buttons – User LED |
Esp8266-12 Module | 4.99 | 3.3 | 13 | 1 | 12 | 3 | Yes | Yes | Yes | - |
ESP8266-12E module | 4.50 | 3.3 | 17 | 1 | 4 | 2 | Yes | Yes | Yes | - |
ESP-201 | 6.59 | 3.3 | 15 | 1 | 15 | 2 | Yes | Yes | Yes | - |
Adafruit HUZZAH | 11.99 | 5 | 9 | 1 | 9 | 2 | Yes | Yes | Yes | RESET and User Buttons – User LED |
BRKWSO1 | 23.88 | 3.3 | 9 | - | - | 1 | - | - | No | - |