現在介紹一下使用esp8266模塊串口發送AT指令的方式通過http方式GET、POST請求,發送溫濕度到服務器并存入數據庫。
首先我們需要搭建一個ESP8266的服務器。這里我使用PHP搭建。一、服務器搭建
1、裝phpstudy軟件。打開網站根目錄。我在網站根目錄下新建了一個zhsx的文件夾,里面存放PHP的文件。一個有兩個php文件,conn.php(用來連接數據庫的)和mcu.php(用來接收數據的)。
2、conn.php代碼
<?php
header("Content-type:text/html;charset=utf-8");
$conn = mysql_connect("localhost", "root", "root");
if (!$conn) {
die('連接數據庫失敗' . mysql_error());
}
mysql_select_db("yonghu",$conn);
// header("Content-type: text/html; charset=utf-8");
?>
復制代碼
3、mcu.php
<?php
header("Content-type:text/html;charset=utf-8");
include 'conn.php'; //連接數據庫
$temp=$_GET['wendu'];
$humi=$_GET['shidu'];
echo $temp,$humi;
$sql="INSERT INTO sensor VALUES('',$temp','$humi')";
$result=mysql_query($sql);
if ($result) {
echo "success";
}
else
{
echo "error";
}
?>
復制代碼
4、測試服務器,我的電腦的IP地址是:192.168.0.106。由于我沒有建數據表,所以出錯了。
http://192.168.0.106:9096/zhsx/mcu.php?wendu=11&shidu=55
二、ESP8266模塊進行AT指令測試。注意每個指令都要加回車,發送才成功
AT
OK
AT+CWMODE=3
OK
AT+RST
OK
CLOSED
ets Jan 8 2013,rst cause:1, boot mode:(3,7)
load 0x40100000, len 1856, room 16
tail 0
chksum 0x63
load 0x3ffe8000, len 776, room 8
tail 0
chksum 0x02
load 0x3ffe8310, len 552, room 8
tail 0
chksum 0x79
csum 0x79
2nd boot version : 1.5
SPI Speed : 40MHz
SPI Mode : DIO
SPI Flash Size & Map: 8Mbit(512KB+512KB)
jump to run user1 @ 1000
ready
WIFI CONNECTED
WIFI GOT IP
AT+CIFSR
+CIFSR:APIP,"192.168.4.1"
+CIFSR:APMAC,"86:f3:eb:90:d3:bd"
+CIFSR:STAIP,"192.168.0.105"
+CIFSR:STAMAC,"84:f3:eb:90:d3:bd"
OK
AT+CWJAP="305_43E811","012345678"
WIFI DISCONNECT
WIFI CONNECTED
WIFI GOT IP
OK
AT+CIPSTART="TCP","192.168.0.106",9096
CONNECT
OK
AT+CIPMODE=1
OK
AT+CIPSEND
OK
>
HTTP/1.1 400 Bad Request
Date: Mon, 15 Oct 2018 05:16:24 GMT
Server: Apache/2.4.23 (Win32) OpenSSL/1.0.2j PHP/5.4.45
Content-Length: 331
Connection: close
Content-Type: text/html; charset=iso-8859-1
1155error
復制代碼
各個指令的含義
AT//測試模塊是否正常,返回OK表示正常
OK
AT+CWMODE=3//設置WiFi的模式,//STA+AP模式
OK
AT+RST//重啟WiFi
OK
//這是重啟后返回來的數據
ets Jan 8 2013,rst cause:1, boot mode:(3,7)
load 0x40100000, len 1856, room 16
tail 0
chksum 0x63
load 0x3ffe8000, len 776, room 8
tail 0
chksum 0x02
load 0x3ffe8310, len 552, room 8
tail 0
chksum 0x79
csum 0x79
2nd boot version : 1.5
SPI Speed : 40MHz
SPI Mode : DIO
SPI Flash Size & Map: 8Mbit(512KB+512KB)
jump to run user1 @ 1000
ready
WIFI CONNECTED
WIFI GOT IP
AT+CIFSR//獲取IP地址
+CIFSR:APIP,"192.168.4.1"
+CIFSR:APMAC,"86:f3:eb:90:d3:bd"
+CIFSR:STAIP,"192.168.0.105"
+CIFSR:STAMAC,"84:f3:eb:90:d3:bd"
OK
AT+CWJAP="your_ssid","your_pwd"////ssid: 305_43E8:空,"AT+CWJAP=\"your_ssid\",\"your_pwd\"\r\n",
WIFI DISCONNECT
WIFI CONNECTED
WIFI GOT IP
OK
AT+CIPSTART="TCP","192.168.0.106",9096 //連接HTTP服務器192.168.0.106,9096 //9096是服務器的端口號
CONNECT
OK
AT+CIPMODE=1 //透傳模式
OK
AT+CIPSEND//發送數據的指令
OK
>//表示可以發送數據 用GET的方式發送數據的,內容為:GET /zhsx/mcu.php?wendu=11&shidu=55 如果想用POST的方式,POST /zhsx/mcu.php?wendu=11&shidu=55 只需要把GET改為POST。然后在MCU.PHP中的$_GET改為$_POST即可。
以下內容為服務器反饋回來的。
HTTP/1.1 400 Bad Request
Date: Mon, 15 Oct 2018 05:16:24 GMT
Server: Apache/2.4.23 (Win32) OpenSSL/1.0.2j PHP/5.4.45
Content-Length: 331
Connection: close
Content-Type: text/html; charset=iso-8859-1
1155error//這是你想要的數據。
就這個能行嗎?
|