ESP8266 ควบคุม i/o ผ่าน web (Access point)

16 Jul 2016,
Share: 

ในบทความนี้ผมจะอธิบายถึงวิธีการทําให้ ESP8266 เป็น Access point ให้อุปกรณ์อุปกรณ์อื่นๆ ที่เชื่อมต่อ wifi ได้ เช่น computer, smart phone ฯลฯ มาเชื่อมต่อกับ SEP8266 แล้วควบคุม i/o ปิด/เปิด LED ผ่านเว็บ ด้วยวิธีส่งข้อมูลผ่าน HTTP_GET เช่น

อุปกรณ์ที่ต้องใช้คือ

Source Code ตัวอย่าง

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>

/*-- Set SSID, Password and IP --*/
const char *ssid = "test-esp8266"; //config ssid
const char *password = "12345678"; //config password
const byte wifi_ip[4] = {192, 168, 1, 2}; //config ipaddress of access point
const byte wifi_subnet[4] = {255, 255, 255, 0}; //config subnet mask of access point
const byte wifi_gateway[4] = {192, 168, 1, 1}; //config gateway of access point

/*-- Create server port 80 --*/
ESP8266WebServer server(80);

/*-- http://ip_address/ --*/
void root() {
  server.send(200, "text/html", "<h1>Hello World :)</h1><br/>");
}

/*-- http://ip_address/led --*/
void led(){
  if(server.arg("set")=="1"){
    digitalWrite(BUILTIN_LED, LOW); // LED ON
    server.send(200, "text/html", "<h1>LED: ON</h1><br/>");
  }else if(server.arg("set")=="0"){
    digitalWrite(BUILTIN_LED, HIGH); // LED OFF
    server.send(200, "text/html", "<h1>LED: OFF</h1><br/>");
  }
}

void setup() {
  /*-- Initial pin output --*/
  pinMode(BUILTIN_LED, OUTPUT);


  /*-- Config wifi ---*/
  WiFi.softAP(ssid, password);
  WiFi.softAPConfig(
    IPAddress(wifi_ip[0], wifi_ip[1], wifi_ip[2], wifi_ip[3]),
    IPAddress(wifi_gateway[0], wifi_gateway[1], wifi_gateway[2], wifi_gateway[3]),
    IPAddress(wifi_subnet[0], wifi_subnet[1], wifi_subnet[2], wifi_subnet[3])
  );

  /*-- Handle url request --*/
  server.on("/", root); // http://ip_address/
  server.on("/led", HTTP_GET, led); // http://ip_address/led

  /*-- Server start --*/
  server.begin();
}

void loop() {
  server.handleClient();
}

download source code จาก Source code ตัวอย่าง esp8266 จะทำงานเป็น Access point โดยมีรายละเอียดดังนี้

  • ssid : test-esp8266
  • password : 123456789
  • ip address : 192.168.1.2
  • subnet mask : 255.255.255.0
  • gateway : 192.168.1.1

สามารถเปลี่ยนได้ตรงบรรทัดที่ 6-10 ถ้าไม่ต้องการใส่ password สามารถแก้ตรงบรรทัดที่ 37 โดยลบพารามิเตอร์ password ออก function root จะทำงานเมื่อเรียก http://192.168.1.2/ โดยใน function นี้ผมเขียนให้แสดงคำว่า Hello World function led จะทำงานเมื่อเรียก http://192.168.1.2/led โดยใน function นี้ ผมเขียนให้รับค่าจาก HTTP_GET มาเพื่อควบคุมการ ปิด-เปิด LED  ตัวอย่างการเรียกคือ http://192.168.1.2/led?set=1 มีข้อสงสัยตรงไหน หรือผิดพลาดอะไรก็ comment ได้เลยนะครับ :) ดูวีดีโอตัวอย่าง

Suggestion blogs

lsof ตรวจสอบการเปิดไฟล์ต่างๆ ใน linux

ถ้าต้องการดูว่า โปรแกรมที่เราสนใจ เปิดใช้งานไฟล์ไหนบ้าง หรือเปิด socket อะไรบ้าง สามารถดูได้ด้วยคําสั่งนี้

CNAME Record คืออะไร

CNAME Record (Canonical Name) เป็น Config ที่อยู่ใน DNS Management เพื่อบอกว่า Subdomain นี้ ให้ชี้ไปยัง Hostname ไหน เช่นกําหนด CANME ให้ mail.aaa.com ชี้ไปที่ webmail.bbb.com เมื่อเข้าเว็บด้วย mail.aaa.com มันก็จะวิ่งไปที่ webmail.bbb.com แล้วแสดงหน้าเว็บนั้นขึ้นมาทันทีกําหนด CANME ให้ www.aaa.com ชี้ไปที่ aaa.com เมื่อเข้าเว็บด้วย www.aaa.com มันก็จะวิ่งไปที่ aaa.com แล้วแสดงหน้าเว็บนั้นขึ้นมาทันทีกําหนด CANME ให้ api.aaa.com ชี้ไปที่ ccc.com เมื่อเข้าเว็บด้วย api.aaa.com มันก็จะวิ่งไปที่ ccc.com แล้วแสดงหน้าเว็บนั้นขึ้นมาทันทีจากตัวอย่างด้านบน ทําให้เราสามารถกําหนด CNAME เพื่อชี้ไปยัง Hostname ปลายทางใดๆก็ได้ ซึ่งจะมีประโยชน์มากในกรณีที่เรามีการเปลี่ยนเปลี่ยนแปลง Hostname เราก็แค่เปลี่ยน Config CNAME ให้ชี้ไปยัง Hostname ใหม่เท่านั้น User ก็จะยังเข้าใช้งานผ่าน Subdomain เดิมได้

[Raspberry pi] ทํา image file จาก sd card

สวัสดีครับ ในบทความนี้จะเกี่ยวข้องกับ raspberry pi คือเราจะมาทํา image file จาก sd card กัน ปกติเวลาเราลงโปรแกรม และพัฒนาโปรแกรมบน raspberry pi บางที่เราอยากจะ backup หรือ clone เก็บไว้ เป็น image file ต้นฉบับของเราเอง เราจะสามารถทําได้โดยมีขั้นตอนดังนี้


Copyright © 2019 - 2026 thiti.dev |  v1.61.0 |  Privacy policy | 

Build with ❤️ and Astro.

Github profile   Linkedin profile   Instagram   X profile   Nostr   Youtube channel   Telegram   Email contact   วงแหวนเว็บ