下期第5堂-IOT開發板
何謂IOT
https://zh.wikipedia.org/wiki/%E7%89%A9%E8%81%94%E7%BD%91
先裝軟體,再插電路板
打開Arduino IDE
Arduino IDE 使用 ESP8266
打開ARDUINO IDE,檔案 => 偏好設定 => 額外的開發板管理員
網址:http://arduino.esp8266.com/stable/package_esp8266com_index.json
這是哪一種USB接頭?
第1個ESP8266程式
LED Blink
控制LED亮的時間,久一點,改成亮5秒停1秒。
發現奇怪的地方了嗎?
硬體工程常常這樣,永遠訓練自己成為變形蟲,就沒有困難可以難倒你。
軟體工程有時候也會有整體平台的Bug,不用想太多,先把成果做出來就是王道。
資訊界永遠都在跟時間賽跑,做得出來才是重點。
ESP8266MOD ESP-12 主板介紹
Wifi AP 介紹
https://zh.wikipedia.org/wiki/%E7%84%A1%E7%B7%9A%E6%8E%A5%E5%85%A5%E9%BB%9E
重點:
名稱 SSID
密碼 PSK
連上wifi AP,讓主板當作”伺服器端”
小思考1
輸入SSID和密碼之後,如下圖,可以在序列埠監控視窗看到DHCP給你的IP位址,
但…應該沒這麼順利,5分鐘時間,想想哪邊出了問題?
小思考2
觀察程式碼,藍色LED應該會亮,但…有亮嗎?
5分鐘思考
練習一下,改個歡迎詞吧
新增空白程式,開始遠端操控電器囉
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
#ifndef STASSID
#define STASSID "AP SSID" //無線分享器的名稱
#define STAPSK "xxxxx" //密碼
#endif
const char* ssid = STASSID;
const char* password = STAPSK;
ESP8266WebServer server(80);
void handleRoot() { //訪客進入主網頁時顯示的內容
server.send(200, "text/plain", "Hello From ESP8266 !");
}
void handleNotFound() { //找不到網頁時顯示的內容
server.send(404, "text/plain", "File Not Found");
}
void setup(void) {
Serial.begin(115200);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
Serial.println("");
pinMode(2,OUTPUT); //設定GPIO2為OUTPUT
digitalWrite(2,LOW); //熄滅LED
// 等待WiFi連線
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP()); //在監控視窗顯示取得的IP
if (MDNS.begin("esp8266")) {
Serial.println("MDNS responder started");
}
server.on("/", handleRoot); //綁定主網頁會觸發的副程式
server.on("/on", []() { //網頁 /on 會執行的程式
server.send(200, "text/plain", "LED ON");
digitalWrite(2,HIGH); //點亮LED
});
server.on("/off", []() { //網頁 /off 會執行的程式
server.send(200, "text/plain", "LED OFF");
digitalWrite(2,LOW); //熄滅LED
});
server.onNotFound(handleNotFound); //綁定找不到網頁時會觸發的副程式
server.begin();
Serial.println("HTTP server started");
}
void loop(void) {
server.handleClient();
MDNS.update();
}
從網址就可以操控LED了,但覺得哪邊怪怪的嗎?
改良程式吧