/**********************************************************************/
/* 学习例程: 关于esp8266 Soft-AP 配置
学习目的: 了解AP热点配置步骤及AP库相关函数
学习日期: 20200707
创建AP三步曲
步一: 将WIFI初始化配置成AP工作模式 WiFi.mode(WIFI_AP);
步二: 建立一个具有名称和密码的热点
步三: 配置热点的参数信息(IP,网关,子掩码)
*/
/**********************************************************************/
//#include <Arduino.h>
#include<ESP8266WiFi.h> //WIFI 头文件
#include <U8g2lib.h> //第三方库
#include <Wire.h> //I2C库头文件
/* WiFi.mode(WiFiMode_t, WiFiState* state = nullptr) //配置工作模式
bool softAP(const char* ssid, const char* passphrase = NULL, int channel = 1, int ssid_hidden = 0, int max_connection = 4); //配置AP名称及密码
bool softAPConfig(IPAddress local_ip, IPAddress gateway, IPAddress subnet); //配置热点参数
uint8_t softAPgetStationNum(); //获取热点连接数量
bool softAPdisconnect(bool wifioff = false); //关闭热点
IPAddress softAPIP(); //获取热点IP
String softAPmacAddress(void); //获取热点MAC
String softAPSSID() const; //获取热点账号
String softAPPSK() const; //获取AP psk
*/
#define LED D9
long debouncdDelay = 500; //延时间隔
long lastDebounceTime = 0; //最近记录的一次时间
U8G2_SSD1306_128X64_NONAME_1_SW_I2C u8g2(U8G2_R0, /* clock=*/ D6, /* data=*/ D5, /* reset=*/ U8X8_PIN_NONE); // ESP32 Thing, pure SW emulated I2C
//U8G2_SSD1306_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE, /* clock=*/ D6, /* data=*/ D5); // ESP32 Thing, HW I2C with pin remapping
//定义 AP 的名称及密码
#define AP_SSID "EST8266_AP_TEST"
#define AP_PASSWORD "12345678"
// 配置热点的参数信息(IP,网关,子掩码)
//以下三个定义为调试定义
#define DebugBegin(baud_rate) Serial.begin(baud_rate)
#define DebugPrintln(message) Serial.println(message)
#define DebugPrint(message) Serial.print(message)
IPAddress local_IP(192, 168, 4, 22);
IPAddress gateway(192, 168, 4, 9);
IPAddress subnet(255, 255, 255, 0);
void setup() {
// put your setup code here, to run once:
pinMode(LED, OUTPUT); //初始化led io
digitalWrite(LED, LOW); //配置io输出为低电平
pinMode(D5, OUTPUT); // SSD1306 SDA
pinMode(D6, OUTPUT); // SSD1306 SCL
digitalWrite(D5, 0);
digitalWrite(D6, 0);
u8g2.begin(); // 显示屏初始化配置
DebugBegin(115200); //配置串口
DebugPrint("**************************Setting soft-AP*************************" );
DebugPrint("/n");
// 步一: 将WIFI初始化配置成AP工作模式
WiFi.mode(WIFI_AP);
DebugPrintln(WiFi.softAPConfig(local_IP, gateway, subnet) ? "Ready" : "Failed!");
// //开放网络(所谓开放网络也就是,不需要密码,只需要知道AP名字就可以了)
// WiFi.softAP(AP_SSID);
//校验式网络(需要输入账号密码),通道为1,wifi不隐藏,最大连接数=4
if (WiFi.softAP(AP_SSID, AP_PASSWORD))
{
DebugPrintln("Ready");
DebugPrintln(String("Soft-AP SSID = ") + WiFi.softAPSSID());
DebugPrintln(String("Soft-AP PASSWORD = ") + WiFi.softAPPSK());
//输出 soft-ap ip地址
DebugPrintln(String("Soft-AP IP address = ") + WiFi.softAPIP().toString());
//输出 soft-ap mac地址
DebugPrintln(String("MAC address = ") + WiFi.softAPmacAddress().c_str());
}
else {
DebugPrintln("Failed!");
}
DebugPrintln("Setup End");
u8g2.firstPage();
do {
u8g2.setFont(u8g2_font_5x8_tf);
u8g2.setFontDirection(0);
u8g2.drawStr(0, 8, " AP_SSID:");
u8g2.drawStr(50, 8, AP_SSID);
u8g2.drawStr(0, 18, " AP_PSW:");
u8g2.drawStr(50, 18, AP_PASSWORD);
} while ( u8g2.nextPage() );
ESP.wdtEnable(5000); //使能软件看门狗的触发间隔
}
void loop() {
// put your main code here, to run repeatedly:
ESP.wdtFeed(); //喂狗
if (millis() - lastDebounceTime > debouncdDelay)
{
lastDebounceTime = millis(); //重新赋值上一次时间
//不断打印当前的station个数
DebugPrintln(String("Stations connected =") + WiFi.softAPgetStationNum());
u8g2.firstPage();
do {
u8g2.setFont(u8g2_font_5x8_tf);
u8g2.setFontDirection(0);
u8g2.drawStr(0, 8, " AP_SSID:");
u8g2.drawStr(50, 8, AP_SSID);
u8g2.drawStr(0, 18, " AP_PSW:");
u8g2.drawStr(50, 18, AP_PASSWORD);
u8g2.drawStr(0, 28, " StationNum:");
u8g2.setCursor(60, 28); //设置光标处
u8g2.print(WiFi.softAPgetStationNum()); //输出内容
} while ( u8g2.nextPage() );
digitalWrite(D9, !digitalRead(D9)); //配置io输出为 读取当前IO口状态的反向值
}
}
Arduino--ESP8266--AP
最新推荐文章于 2022-11-14 10:30:15 发布