天天看點

ESP8266與NodeMCU開發(二)基礎實驗三則實驗一   連接配接指定Wifi網絡實驗二   網頁用戶端實驗三   設定ESP8266為軟熱點

這一章将通過程式設計實驗的方式來認識ESP8266的功能,并體驗快速而便捷的開發流程

實驗一   連接配接指定Wifi網絡

這一段程式将使得ESP8266連接配接指定名稱和密碼的Wifi熱點,主要流程如下

程式流程:

在Arduino IDE的編輯器界面,開始部分添加頭檔案

#include <Arduino.h>
#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>
#include <ESP8266HTTPClient.h>
           

之後設定兩個宏定義用于填寫Wifi名稱和密碼

#define WIFINAME "******"
#define WIFIPW   "****"
           

點亮一個LED燈用于訓示電源,并設定序列槽波特率用以通信

pinMode(BUILTIN_LED, OUTPUT);
  Serial.begin(115200);
           

設定并連接配接Wifi,如果沒有連接配接上就會一直重試

WiFi.begin(WIFINAME, WIFIPW);
  Serial.print("Connecting..");
  while (WiFi.status() != WL_CONNECTED)
  {
    delay(500);
    Serial.print(".");
  }
           

整體的代碼如下

#include <Arduino.h>
#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>
#include <ESP8266HTTPClient.h>

#define WIFINAME "******"
#define WIFIPW   "****"

void setup() {
  // put your setup code here, to run once:
  pinMode(BUILTIN_LED, OUTPUT);
  Serial.begin(115200);
  Serial.println("");
  WiFi.begin(WIFINAME, WIFIPW);
  Serial.print("Connecting..");
  while (WiFi.status() != WL_CONNECTED)
  {
    delay(500);
    Serial.print(".");
  }
  Serial.println();
  Serial.print("Connected,IP Address:");
  Serial.println(WiFi.localIP());


  
}

void loop() {
  // put your main code here, to run repeatedly:

}
           

如果成功連接配接,序列槽将輸出連接配接成功提示,并且可以通過PC端PING通ESP8266(在同一網段)

ESP8266與NodeMCU開發(二)基礎實驗三則實驗一   連接配接指定Wifi網絡實驗二   網頁用戶端實驗三   設定ESP8266為軟熱點

實驗二   網頁用戶端

ESP8266可以直接作為一個網頁用戶端來使用,封裝的庫中提供函數以快速配置ESP8266為一個網頁用戶端,能夠直接擷取網頁服務端的代碼。例如打開百度首頁,通過序列槽傳回所有html代碼。這裡暫未設定DNS服務是以需要通過IP直接通路。

程式流程:

添加頭檔案

#include <Arduino.h>
#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>
#include <ESP8266HTTPClient.h>
           

以宏定義的形式設定位址,端口和wifi名稱,密碼

#define HTTPIP      "14.215.177.37"   //baidu的ip
#define HTTPPORT    80
#define WIFINAME    "你的wifi名稱"
#define WIFIPW      "wifi密碼"
           

配置序列槽并嘗試連接配接Wifi

Serial.begin(115200);
  Serial.println();
  Serial.println("Connecting");
  WiFiMulti.addAP(WIFINAME,WIFIPW);
  while(WiFiMulti.run()!=WL_CONNECTED)
  {
    delay(500);
    Serial.print(".");
  }
  Serial.println("Connected!");
           

連接配接指定的網頁伺服器IP,這裡的"/"是指頁面檔案名稱,例如"index.jsp""main.php"等

http.begin(HTTPIP,HTTPPORT,"/");
           

擷取代碼,如果傳回值為200則表示請求網頁成功,列印頁面

int Code = http.GET();
if(Code)
{
    Serial.printf("HTTP Code:%d\n",Code);
    if(Code == 200)
    {
      String payload = http.getString();
      Serial.println(payload);
    }
    else
{
  Serial.println("Couldn't link to server");
}
           

實驗二整體代碼如下

#include <Arduino.h>
#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>
#include <ESP8266HTTPClient.h>
ESP8266WiFiMulti WiFiMulti;

#define HTTPIP      "14.215.177.37"//baidu
#define HTTPPORT    80
#define WIFINAME    "*******"
#define WIFIPW      "*****"


void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  Serial.println();
  Serial.println("Connecting");
  WiFiMulti.addAP(WIFINAME,WIFIPW);
  while(WiFiMulti.run()!=WL_CONNECTED)
  {
    delay(500);
    Serial.print(".");
  }
  Serial.println("Connected!");
  
}

void loop() {
  // put your main code here, to run repeatedly:
HTTPClient http;
Serial.println("Try link to http.");
http.begin(HTTPIP,HTTPPORT,"/");
int Code = http.GET();
if(Code)
{
    Serial.printf("HTTP Code:%d\n",Code);
    if(Code == 200)
    {
      String payload = http.getString();
      Serial.println(payload);
    }
    else
{
  Serial.println("Couldn't link to server");
}
}

 delay(5000);
}
           
ESP8266與NodeMCU開發(二)基礎實驗三則實驗一   連接配接指定Wifi網絡實驗二   網頁用戶端實驗三   設定ESP8266為軟熱點

實驗三   設定ESP8266為軟熱點

将ESP8266設定為一個熱點,可供其他裝置連接配接并交換資料,主要使用的函數:WiFi.softAP(ssid, password, channel, hidden)

參數說明:

ssid:Wifi熱點名稱,支援最大63個英文字元

password:密碼設定,可選參數,也就是可以沒有密碼,如果設定為WPA2-PSK

channel:信道設定,可選參數,1-13,沒有填寫則預設為1

hidden:是否隐藏SSID,可選參數,如果設定為true則隐藏

ESP8266開啟的預設IP位址為192.168.4.1,可以使用softAPConfig (local_ip, gateway, subnet) 函數進行修改

參數說明:

local_ip:軟熱點的位址

gateway:網關位址

subnet:子網路遮罩

程式流程:

頭檔案

#include <ESP8266WiFi.h>
           

聲明各個IP位址

IPAddress local_IP(192,168,4,4);
IPAddress gateway(192,168,4,1);
IPAddress subnet(255,255,255,0);
           

配置軟AP參數

WiFi.softAPConfig(local_IP, gateway, subnet);
           

啟動AP

WiFi.softAP("SoftAP001","999999999");
           

擷取IP位址

Serial.print("Soft-AP IP address = ");
  Serial.println(WiFi.softAPIP());
           

下載下傳完成後,在筆記本上Wifi可以搜到設定的AP

ESP8266與NodeMCU開發(二)基礎實驗三則實驗一   連接配接指定Wifi網絡實驗二   網頁用戶端實驗三   設定ESP8266為軟熱點

實驗三整體代碼如下

#include <ESP8266WiFi.h>
IPAddress local_IP(192, 168, 4, 4);
IPAddress gateway(192, 168, 4, 1);
IPAddress subnet(255, 255, 255, 0);
void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  WiFi.softAPConfig(local_IP, gateway, subnet);
  WiFi.softAP("SoftAP001", "999999999");
  Serial.print("Soft-AP IP address = ");
  Serial.println(WiFi.softAPIP());

}

void loop() {
  // put your main code here, to run repeatedly:

}
           

參考:

https://github.com/esp8266/Arduino/blob/master/doc/esp8266wifi/soft-access-point-class.md#softap

繼續閱讀