ไลบรารี WiFiWebServer_RTL8720 นี้เป็นไลบรารี WebServer ที่เรียบง่ายแต่สมบูรณ์แบบสำหรับ บอร์ด Realtek RTL8720DN, RTL8722DM และ RTL8722CSM
ฟังก์ชันนี้คล้ายคลึงและเข้ากันได้กับไลบรารี ESP32 WebServer
และ ESP8266WebServer
เพื่อให้การพอร์ตสเก็ตช์จาก ESP8266/ESP32 ง่ายขึ้นมาก
ไลบรารี WiFiWebServer_RTL8720 นี้ยังให้ บริการ HTTP และ WebSocket Client ระดับสูงด้วยฟังก์ชันที่คล้ายคลึงและเข้ากันได้กับ ไลบรารี ArduinoHttpClient
ห้องสมุดให้การสนับสนุนในการ:
มันขึ้นอยู่กับและดัดแปลงจาก:
คลาส WiFiWebServer
ที่พบในส่วนหัว WiFiWebServer_RTL8720.h
เป็นเว็บเซิร์ฟเวอร์ธรรมดาที่รู้วิธีจัดการคำขอ HTTP เช่น GET และ POST และสามารถรองรับไคลเอ็นต์ได้ครั้งละหนึ่งเครื่องเท่านั้น
ปัจจุบัน ไลบรารี WiFiWebServer_RTL8720 รองรับบอร์ดต่อไปนี้:
Arduino IDE 1.8.19+
สำหรับ ArduinoArduino AmebaD core 3.1.4+
สำหรับ Realtek RTL8720DN, RTL8722DM และ RTL8722CSMFunctional-Vlpp library v1.0.2+
เพื่อใช้ฟังก์ชัน lambda ของเซิร์ฟเวอร์ ในการติดตั้ง ตรวจสอบ วิธีที่ดีที่สุดและง่ายที่สุดคือการใช้ Arduino Library Manager
ค้นหา WiFiWebServer_RTL8720 จากนั้นเลือก / ติดตั้งเวอร์ชันล่าสุด คุณยังสามารถใช้ลิงก์นี้เพื่อดูคำแนะนำโดยละเอียดเพิ่มเติมได้
WiFiWebServer_RTL8720-main.zip
รุ่นล่าสุดWiFiWebServer_RTL8720-main
WiFiWebServer_RTL8720-main
ทั้งหมดไปยังไดเร็กทอรีของไลบรารี Arduino เช่น ~/Arduino/libraries/
เพื่อหลีกเลี่ยงข้อผิดพลาดในการคอมไพล์ที่เกี่ยวข้องกับ PROGMEM คุณต้องคัดลอกไฟล์ Realtek AmebaD core pgmspace.h ลงในไดเร็กทอรี Realtek AmebaD (~/.arduino15/packages/realtek/hardware/AmebaD/3.1.4/cores/ambd/avr/pgmspace ชม).
สมมติว่าเวอร์ชันหลักของ Realtek AmebaD คือ 3.1.4 ไฟล์นี้จะต้องถูกคัดลอกลงในไดเร็กทอรี:
~/.arduino15/packages/realtek/hardware/AmebaD/3.1.4/cores/ambd/avr/pgmspace.h
เมื่อใดก็ตามที่มีการติดตั้งเวอร์ชันใหม่ อย่าลืมคัดลอกไฟล์นี้ไปยังไดเร็กทอรีเวอร์ชันใหม่ ตัวอย่างเช่น เวอร์ชันใหม่คือ x.yy.zz ไฟล์นี้จะต้องคัดลอกลงในไดเร็กทอรี:
~/.arduino15/packages/realtek/hardware/AmebaD/x.yy.zz/cores/ambd/avr/pgmspace.h
WiFiWebServer server ( 80 );
สร้างวัตถุคลาส WiFiWebServer
พารามิเตอร์:
หมายเลขพอร์ตโฮสต์: int port
(ค่าเริ่มต้นคือพอร์ต HTTP มาตรฐาน 80)
การเริ่มต้นเซิร์ฟเวอร์
void begin ();
การจัดการคำขอของลูกค้าที่เข้ามา
void handleClient ();
ปิดการใช้งานเซิร์ฟเวอร์
void close ();
void stop ();
ทั้งสองวิธีทำงานเหมือนกัน
ตัวจัดการคำขอของลูกค้า
void on ();
void addHandler ();
void onNotFound ();
void onFileUpload ();
ตัวอย่าง:
server.on( " / " , handlerFunction);
server.onNotFound(handlerFunction); // called when handler is not assigned
server.onFileUpload(handlerFunction); // handle file uploads
กำลังส่งคำตอบให้กับลูกค้า
void send ();
void send_P ();
Parameters:
code
- รหัสตอบกลับ HTTP อาจเป็น 200
หรือ 404
เป็นต้น
content_type
- ประเภทเนื้อหา HTTP เช่น "text/plain"
หรือ "image/png"
ฯลฯ
content
- เนื้อหาเนื้อหาจริง
รับข้อมูลเกี่ยวกับข้อโต้แย้งคำขอ
const String & arg ();
const String & argName ();
int args ();
bool hasArg ();
Function usage:
arg
- รับค่าอาร์กิวเมนต์คำขอ ใช้ arg("plain")
เพื่อรับเนื้อหา POST
argName
- รับชื่ออาร์กิวเมนต์คำขอ
args
- รับจำนวนข้อโต้แย้ง
hasArg
- ตรวจสอบว่ามีข้อโต้แย้งอยู่หรือไม่
รับข้อมูลเกี่ยวกับส่วนหัวของคำขอ
const String & header ();
const String & headerName ();
const String & hostHeader ();
int headers ();
bool hasHeader ();
Function usage:
header
- รับค่าส่วนหัวของคำขอ
headerName
- รับชื่อส่วนหัวของคำขอ
hostHeader
- รับคำขอส่วนหัวของโฮสต์ หากมี มิฉะนั้นเป็นสตริงว่าง
headers
- รับจำนวนส่วนหัว
hasHeader
- ตรวจสอบว่ามีส่วนหัวอยู่หรือไม่
การรับรองความถูกต้อง
bool authenticate ();
void requestAuthentication ();
Function usage:
authenticate
- การรับรองความถูกต้องของเซิร์ฟเวอร์ คืนค่าจริงหากไคลเอ็นต์ได้รับการรับรองความถูกต้อง มิฉะนั้นจะเป็นเท็จ
requestAuthentication
- ส่งการตอบสนองความล้มเหลวในการรับรองความถูกต้องไปยังไคลเอนต์
Example Usage:
if (!server.authenticate(username, password))
{
server. requestAuthentication ();
}
const String& uri (); // get the current uri
HTTPMethod method (); // get the current method
WiFiClient client (); // get the current client
HTTPUpload& upload (); // get the current upload
void setContentLength (); // set content length
void sendHeader (); // send HTTP header
void sendContent (); // send content
void sendContent_P ();
void collectHeaders (); // set the request headers to collect
void serveStatic ();
size_t streamFile ();
WiFiWebServer_RTL8720/ตัวอย่าง/AdvancedWebServer/AdvancedWebServer.ino
บรรทัดที่ 40 ถึง 245 ใน 74723f4
WiFiWebServer_RTL8720/examples/AdvancedWebServer/defines.h
บรรทัดที่ 11 ถึง 42 ใน 74723f4
ต่อไปนี้คือเอาต์พุตเทอร์มินัลการดีบักและภาพหน้าจอเมื่อรันตัวอย่าง AdvancedWebServer บน Rtlduino RTL8720DN
Starting AdvancedServer on Rtlduino RTL8720DN with RTL8720DN
WiFiWebServer_RTL8720 v1 .1.2
interface 0 is initialized
interface 1 is initialized
Initializing WIFI ...
WIFI initialized
Current Firmware Version = 1.0.0
Attempting to connect to SSID: HueNet1
RTL8721D[Driver]: set ssid [HueNet1]
RTL8721D[Driver]: rtw_set_wpa_ie[ 1160 ]: AuthKeyMgmt = 0x2
RTL8721D[Driver]: rtw_restruct_sec_ie[ 4225 ]: no pmksa cached
RTL8721D[Driver]: start auth to 68 : 7f : 74 : 94 :f4:a5
RTL8721D[Driver]: auth alg = 2
RTL8721D[Driver]:
OnAuthClient:algthm = 0 , seq = 2 , status = 0 , sae_msg_len = 11
RTL8721D[Driver]: auth success, start assoc
RTL8721D[Driver]: association success (res= 1 )
RTL8721D[Driver]: ClientSendEAPOL[1624]: no use cache pmksa
RTL8721D[Driver]: ClientSendEAPOL[1624]: no use cache pmksa
RTL8721D[Driver]: set pairwise key to hw: alg:4(WEP40- 1 WEP104- 5 TKIP- 2 AES- 4 )
RTL8721D[Driver]: set group key to hw: alg:2(WEP40- 1 WEP104- 5 TKIP- 2 AES- 4 ) keyid:1
Interface 0 IP address : 192.168.2.117
[INFO] Listen socket successfully
[INFO] Socket conntect successfully
HTTP server started @ 192.168.2.117
[INFO] Accept connection successfully
A client connected to this server :
[PORT]: 36912
[IP]:192.168.2.30
[INFO] Accept connection successfully
A client connected to this server :
[PORT]: 36914
[IP]:192.168.2.30
[WIFI] String Len = 0, extend to 2048
[INFO] Accept connection successfully
ต่อไปนี้คือเอาต์พุตเทอร์มินัลการดีบักและภาพหน้าจอเมื่อรันตัวอย่าง WebClient บน Rtlduino RTL8720DN
Starting WebClientRepeating on Rtlduino RTL8720DN with RTL8720DN
WiFiWebServer_RTL8720 v1 .1.2
interface 0 is initialized
interface 1 is initialized
Initializing WIFI ...
WIFI initialized
Current Firmware Version = 1.0.0
Attempting to connect to SSID: HueNet1
RTL8721D[Driver]: set ssid [HueNet1]
RTL8721D[Driver]: rtw_set_wpa_ie[ 1160 ]: AuthKeyMgmt = 0x2
RTL8721D[Driver]: rtw_restruct_sec_ie[ 4225 ]: no pmksa cached
RTL8721D[Driver]: start auth to 68 : 7f : 74 : 94 :f4:a5
RTL8721D[Driver]: auth alg = 2
RTL8721D[Driver]:
OnAuthClient:algthm = 0 , seq = 2 , status = 0 , sae_msg_len = 11
RTL8721D[Driver]: auth success, start assoc
RTL8721D[Driver]: association success (res= 1 )
RTL8721D[Driver]: ClientSendEAPOL[1624]: no use cache pmksa
RTL8721D[Driver]: ClientSendEAPOL[1624]: no use cache pmksa
RTL8721D[Driver]: set pairwise key to hw: alg:4(WEP40- 1 WEP104- 5 TKIP- 2 AES- 4 )
RTL8721D[Driver]: set group key to hw: alg:2(WEP40- 1 WEP104- 5 TKIP- 2 AES- 4 ) keyid:1
Interface 0 IP address : 192.168.2.117You're connected to the network, IP = 192.168.2.117
SSID: HueNet1, Signal strength (RSSI):-26 dBm
[INFO]server_drv.cpp: start_client
[INFO] Create socket successfully
[INFO] Connect to Server successfully!
Connecting...
HTTP/1.1 200 OK
Date: Thu, 28 Apr 2022 02:46:07 GMT
Content-Type: text/plain
Content-Length: 2263
Connection: close
x-amz-id-2: 0v2VZitmKPb1GvH/Of2rACgGVIyluvsMCTX1kbkYKmtOMZMLlHXAT1n7wdAcMiFQ6LPQ1Qy2tSg=
x-amz-request-id: 72CSXT4AMDTCDJYE
Last-Modified: Wed, 23 Feb 2022 14:56:42 GMT
ETag: "667cf48afcc12c38c8c1637947a04224"
CF-Cache-Status: DYNAMIC
Report-To: { " endpoints " :[{ " url " : " https://a.nel.cloudflare.com/report/v3?s=vdeduIIMRyhO44T972z7Z0qfco3T5svA5zYhyMJqQE5hTNGvTxTg%2B8S8e90uedVsSDo5oj73gg%2BxEoPfXW1%2FUCfu6XkFt6oLuf9zjLCo%2BSe58OLsZhr25mZ3MxPD%2ByY%3D " }], " group " : " cf-nel " , " max_age " : 604800 }
NEL: { " success_fraction " : 0 , " report_to " : " cf-nel " , " max_age " : 604800 }
Server: cloudflare
CF-RAY: 702c77389848b671-YWG
alt-svc: h3= " :443 " ; ma= 86400 , h3- 29 = " :443 " ; ma= 86400
`:;;;,` .:;;:.
.;;;;;;;;;;;` :;;;;;;;;;;: TM
`;;;;;;;;;;;;;;;` :;;;;;;;;;;;;;;;
:;;;;;;;;;;;;;;;;;; `;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;; .;;;;;;;;;;;;;;;;;;;;
;;;;;;;;:` `;;;;;;;;; ,;;;;;;;;.` .;;;;;;;;
.;;;;;;, :;;;;;;; .;;;;;;; ;;;;;;;
;;;;;; ;;;;;;; ;;;;;;, ;;;;;;.
,;;;;; ;;;;;;.;;;;;;` ;;;;;;
;;;;;. ;;;;;;;;;;;` ``` ;;;;;`
;;;;; ;;;;;;;;;, ;;; .;;;;;
`;;;;: `;;;;;;;; ;;; ;;;;;
,;;;;` `,,,,,,,, ;;;;;;; .,,;;;,,, ;;;;;
:;;;;` .;;;;;;;; ;;;;;, :;;;;;;;; ;;;;;
:;;;;` .;;;;;;;; `;;;;;; :;;;;;;;; ;;;;;
.;;;;. ;;;;;;;. ;;; ;;;;;
;;;;; ;;;;;;;;; ;;; ;;;;;
;;;;; .;;;;;;;;;; ;;; ;;;;;,
;;;;;; `;;;;;;;;;;;; ;;;;;
`;;;;;, .;;;;;; ;;;;;;; ;;;;;;
;;;;;;: :;;;;;;. ;;;;;;; ;;;;;;
;;;;;;;` .;;;;;;;, ;;;;;;;; ;;;;;;;:
;;;;;;;;;:,:;;;;;;;;;: ;;;;;;;;;;:,;;;;;;;;;;
`;;;;;;;;;;;;;;;;;;;. ;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;; :;;;;;;;;;;;;;;;;:
,;;;;;;;;;;;;;, ;;;;;;;;;;;;;;
.;;;;;;;;;` ,;;;;;;;;:
;;; ;;;;;` ;;;;: .;; ;; ,;;;;;, ;;. `;, ;;;;
;;; ;;:;;; ;;;;;; .;; ;; ,;;;;;: ;;; `;, ;;;:;;
,;:; ;; ;; ;; ;; .;; ;; ,;, ;;;,`;, ;; ;;
;; ;: ;; ;; ;; ;; .;; ;; ,;, ;;;;`;, ;; ;;.
;: ;; ;;;;;: ;; ;; .;; ;; ,;, ;;`;;;, ;; ;;`
,;;;;; ;;`;; ;; ;; .;; ;; ,;, ;; ;;;, ;; ;;
;; ,;, ;; .;; ;;;;;: ;;;;;: ,;;;;;: ;; ;;, ;;;;;;
;; ;; ;; ;;` ;;;;. `;;;: ,;;;;;, ;; ;;, ;;;;
ต่อไปนี้คือเอาต์พุตเทอร์มินัลการดีบักและภาพหน้าจอเมื่อเรียกใช้ตัวอย่าง ScanNetworks บน Rtlduino RTL8720DN
Starting ScanNetworks on Rtlduino RTL8720DN with RTL8720DN
WiFiWebServer_RTL8720 v1 .1.2
Current Firmware Version = 1.0.0
Attempting to connect to SSID: HueNet_5G
You ' re connected to the network, IP = 192.168.2.152
MAC address: 69:4E:06:60:C9:94
Scanning available networks...
Number of available networks:19
0) HueNet Signal: -26 dBm Encryption: WPA2_PSK
1) HueNet_5G Signal: -32 dBm Encryption: WPA2_PSK
2) HueNetTek Signal: -32 dBm Encryption: WPA2_PSK
3) HueNetTek_5G Signal: -33 dBm Encryption: WPA2_PSK
4) HueNet1 Signal: -36 dBm Encryption: WPA2_PSK
5) HueNet2 Signal: -58 dBm Encryption: WPA2_PSK
6) HueNet2_5G Signal: -60 dBm Encryption: WPA2_PSK
7) guest_24 Signal: -64 dBm Encryption: WPA2_PSK
8) bacau Signal: -65 dBm Encryption: WPA2_PSK
9) guest_5 Signal: -77 dBm Encryption: WPA2_PSK
10) pitesti Signal: -77 dBm Encryption: WPA2_PSK
ต่อไปนี้คือเอาต์พุตเทอร์มินัลการดีบักและภาพหน้าจอเมื่อรันตัวอย่าง MQTTClient_Auth บน Rtlduino RTL8720DN
Starting MQTTClient_Auth on Rtlduino RTL8720DN with RTL8720DN
WiFiWebServer_RTL8720 v1 .1.2
Current Firmware Version = 1.0.0
Attempting to connect to SSID: HueNet_5G
Connected! IP address: 192.168.2.152
Attempting MQTT connection to broker.emqx.io...connected
Message Send : MQTT_Pub => Hello from MQTTClient_Auth on Rtlduino RTL8720DN with RTL8720DN
Message arrived [MQTT_Pub] Hello from MQTTClient_Auth on Rtlduino RTL8720DN with RTL8720DN
Message Send : MQTT_Pub => Hello from MQTTClient_Auth on Rtlduino RTL8720DN with RTL8720DN
Message arrived [MQTT_Pub] Hello from MQTTClient_Auth on Rtlduino RTL8720DN with RTL8720DN
ต่อไปนี้คือเอาต์พุตเทอร์มินัลดีบักและภาพหน้าจอเมื่อรันตัวอย่าง MQTT_ThingStream บน Rtlduino RTL8720DN
Start MQTT_ThingStream on Rtlduino RTL8720DN with RTL8720DN
WiFiWebServer_RTL8720 v1 .1.2
Current Firmware Version = 1.0.0
Attempting to connect to SSID: HueNet_5G
Connected! IP address: 192.168.2.152
***************************************
STM32_Pub
***************************************
Attempting MQTT connection to broker.emqx.io
...connected
Published connection message successfully!
Subscribed to: STM32_Sub
MQTT Message Send : STM32_Pub => Hello from MQTT_ThingStream on Rtlduino RTL8720DN with RTL8720DN
MQTT Message receive [STM32_Pub] Hello from MQTT_ThingStream on Rtlduino RTL8720DN with RTL8720DN
MQTT Message Send : STM32_Pub => Hello from MQTT_ThingStream on Rtlduino RTL8720DN with RTL8720DN
MQTT Message receive [STM32_Pub] Hello from MQTT_ThingStream on Rtlduino RTL8720DN with RTL8720DN
MQTT Message Send : STM32_Pub => Hello from MQTT_ThingStream on Rtlduino RTL8720DN with RTL8720DN
MQTT Message receive [STM32_Pub] Hello from MQTT_ThingStream on Rtlduino RTL8720DN with RTL8720DN
MQTT Message Send : STM32_Pub => Hello from MQTT_ThingStream on Rtlduino RTL8720DN with RTL8720DN
MQTT Message receive [STM32_Pub] Hello from MQTT_ThingStream on Rtlduino RTL8720DN with RTL8720DN
ต่อไปนี้คือเอาต์พุตเทอร์มินัลดีบักและภาพหน้าจอเมื่อรันตัวอย่าง WiFiUdpNTPClient บน Rtlduino RTL8720DN
Starting WiFiUdpNTPClient on Rtlduino RTL8720DN with RTL8720DN
WiFiWebServer_RTL8720 v1 .1.2
Current Firmware Version = 1.0.0
Attempting to connect to SSID: HueNet_5G
Connected! IP address: 192.168.2.152
SSID: HueNet1, Signal strength (RSSI):-39 dBm
Starting connection to server...
Listening on port 2390
packet received
Seconds since Jan 1 1900 = 3835239949
Unix time = 1626251149
The UTC time is 8:25:49
packet received
Seconds since Jan 1 1900 = 3835239960
Unix time = 1626251160
The UTC time is 8:26:00
packet received
Seconds since Jan 1 1900 = 3835239971
Unix time = 1626251171
The UTC time is 8:26:11
การแก้ไขข้อบกพร่องถูกเปิดใช้งานตามค่าเริ่มต้นบนซีเรียล ระดับการแก้ไขข้อบกพร่องตั้งแต่ 0 ถึง 4 หากต้องการปิดใช้งาน ให้เปลี่ยน WIFI_LOGLEVEL เป็น 0
// Use this to output debug msgs to Serial
# define DEBUG_WIFI_WEBSERVER_PORT Serial
// Debug Level from 0 to 4
# define _WIFI_LOGLEVEL_ 1
หากคุณพบข้อผิดพลาดในการคอมไพล์ บ่อยกว่านั้นคือคุณอาจต้องติดตั้งคอร์ของบอร์ดเวอร์ชันที่ใหม่กว่า โดยใช้ Libraries' Patch, Package' Patch หรือไลบรารีเวอร์ชันล่าสุดนี้
ปัจจุบันไลบรารี WiFiWebServer_RTL8720 รองรับบอร์ดต่อไปนี้:
ห้องสมุดให้การสนับสนุนในการ:
ส่งปัญหาไปที่: ปัญหา WiFiWebServer_RTL8720
arduino.cc
เป็น arduino.tips
ในตัวอย่างallman
ปรับเปลี่ยนรูปแบบห้องสมุด ️️ อีวาน โกรค็อตคอฟ | ️ เอเดรียน แม็คอีเวน |
หากคุณต้องการมีส่วนร่วมในโครงการนี้:
ลิขสิทธิ์ (c) 2021- คอยฮวง