Arduino--ESP8266--AP

/**********************************************************************/
/* 学习例程:  关于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口状态的反向值
  }

}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值