下期第9堂[IOT控制機器人關節] AP熱點+手機控制
今天使用2種熱點方式,在近端控制主板,優點是高速無延遲。
一、使用學校熱點
二、主板自帶熱點+伺服器
一個關節方向,就要一個舵機,
今天練習把舵機接在IOT主板上
接線 :
棕 — GND
紅 — VIN
橘 — D2
0~180度反覆轉動
#include <Servo.h>
Servo myservo4;
int i;
void setup() {
myservo4.attach(4);
}
void loop() {
for (i=0;i<180;i++){
myservo4.write(i);
delay(20);
}
for (i=180;i>0;i--){
myservo4.write(i);
delay(20);
}
}
停止方法
舵機一直轉會吵,暫時停止的方法,就是開新空白檔,上傳
改寫第6堂課的主程式,讓ON變成0度,OFF變成180度
http://hower.forwebs.net/robot/archives/939
通訊結構圖
手機連上熱點,利用手機瀏覽器試試看
遠端工作
電影阿凡達可能嗎?
- 超連結做進首頁裡
- 超連結做進子頁裡
可以不透過學校AP嗎?
下方有雷,今日解答
答案一
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
#ifndef STASSID
#define STASSID "TCGS-Student" //無線分享器的名稱
#define STAPSK "22205108" //密碼
#endif
#include <Servo.h>
Servo myservo4;
int i;
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) {
myservo4.attach(4);
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");
myservo4.write(0);
});
server.on("/off", []() { //網頁 /off 會執行的程式
server.send(200, "text/plain", "LED OFF");
myservo4.write(180);
});
server.onNotFound(handleNotFound); //綁定找不到網頁時會觸發的副程式
server.begin();
Serial.println("HTTP server started");
}
void loop(void) {
server.handleClient();
MDNS.update();
}
內建超連結
void handleRoot() { //訪客進入主網頁時顯示的內容
server.send(200, "text/html", "<meta charset='utf-8'><a href='http://192.168.0.170/off'>0度</a><br><a href='http://192.168.0.170/on'>180度</a><br>");
}
全部都有超連結
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
#ifndef STASSID
#define STASSID "TCGS-Student" //無線分享器的名稱
#define STAPSK "22205108" //密碼
#endif
#include <Servo.h>
Servo myservo4;
const char* ssid = STASSID;
const char* password = STAPSK;
ESP8266WebServer server(80);
void handleRoot() { //訪客進入主網頁時顯示的內容
server.send(200, "text/html", "<meta charset='utf-8'><a href='http://10.10.76.192/off'>0度</a><br><a href='http://10.10.76.192/on'>180度</a><br>");
}
void handleNotFound() { //找不到網頁時顯示的內容
server.send(404, "text/plain", "File Not Found");
}
void setup(void) {
myservo4.attach(4);
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/html", "<meta charset='utf-8'><a href='http://10.10.76.192/off'>0度</a>");
myservo4.write(0);
});
server.on("/off", []() { //網頁 /off 會執行的程式
server.send(200, "text/html", "<meta charset='utf-8'><a href='http://10.10.76.192/on'>180度</a><br>");
myservo4.write(180);
});
server.onNotFound(handleNotFound); //綁定找不到網頁時會觸發的副程式
server.begin();
Serial.println("HTTP server started");
}
void loop(void) {
server.handleClient();
MDNS.update();
}
聽君一席話,如讀萬卷書,您的教學真是讓人如沐春風!