下期第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


通訊結構圖

手機連上熱點,利用手機瀏覽器試試看


遠端工作

電影阿凡達可能嗎?

https://tw.news.yahoo.com/%E7%BE%A9%E5%A4%A7%E5%88%A9-%E6%9B%BF%E8%BA%AB%E6%A9%9F%E5%99%A8%E4%BA%BA-%E5%B9%AB%E4%BD%A0%E5%87%BA%E5%9C%8B-%E6%9C%83%E8%AA%AA%E8%A9%B1-%E8%83%BD%E8%A1%8C%E8%B5%B0-090925659.html


  1. 超連結做進首頁裡
  2. 超連結做進子頁裡


可以不透過學校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();
}

您可能也會喜歡…

1 個回應

  1. 浩浩ㄟ忠實粉絲表示:

    聽君一席話,如讀萬卷書,您的教學真是讓人如沐春風!

發佈留言