SerialESP8266wifi ESP8266 Arduino库

SerialESP8266wifi

  • 一个简单的ESP8266 Arduino库,内置重新连接功能。
  • ESP8266是一个便宜的wifi模块。我得到了我的约2.50美元,包括在Aliexpress送货。 请阅读此处:https://nurdspace.nl/ESP8266
  • AT命令参考可以在这里找到:https://github.com/espressif/esp8266_at/wiki/AT_Description
  • 联系我,如果你有想法改变或新功能,发现错误或只想购买jonas [AT] inspirativ [DOT] se

内存占用等等

  • 使用Arduino Nano v3 ATMega 328,Arduino IDE 1.60,固件版本为0.9.2.4的ESP8266模块进行测试
  • 大约3.5kB的程序存储
  • 大约285字节或RAM

安装

构造函数

SerialESP8266wifi(Stream serialIn,Stream serialOut,byte resetPin
  • serialIn此对象用于从ESP8266读取,可以使用硬件或软件串行
  • serialOut此对象用于写入ESP8266,您可以使用硬件或软件串行
  • resetPin此引脚将被拉低然后高电平来重置ESP8266。 假定CH_PD引脚连接到该引脚。 查看引脚和更多:http://www.electrodragon.com/w/ESP8266#Module_Pin_Description
  • 例子SerialESP8266wifi wifi(swSerial, swSerial, 10);
SerialESP8266wifi(Stream serialIn, Stream serialOut, byte resetPin, Stream debugSerial)
  • serialIn此对象用于从ESP8266读取,可以使用硬件或软件串行
  • serialOut此对象用于写入ESP8266,您可以使用硬件或软件串行
  • resetPin此引脚将被拉低然后高电平来重置ESP8266。 假定CH_PD引脚连接到该引脚。 请参阅pin和更多:http://www.electrodragon.com/w/ESP8266#Module_Pin_Description
  • debugSerial启用wifi调试和本地回声串行(可能是硬件或软件)
  • 例子SerialESP8266wifi wifi(swSerial, swSerial, 10, Serial);

启动模块

boolean begin()调用这个方法将在ESP8266上做一个hw重置并设置基本参数
- 取决于模块是否正确启动,返回将返回true或false
- 例子:boolean esp8266started = wifi.begin();

连接到接入点

boolean connectToAP(char * ssid, char password)*告诉ESP8266连接到接入点
- ssid要使用的ssid(工作站名称)。 请注意,此方法使用char数组作为输入。 有关如何将arduino字符串对象转换为char数组(最多15个字符),请参见
http://arduino.cc/en/Reference/StringToCharArray
- password 假定接入点密码wpa / wpa2(最多15个字符)
- return 如果在时限内(15秒)收到有效的IP,返回将返回true
- 例子boolean apConnected = wifi.connectToAP("myaccesspoint", "password123");
boolean isConnectedToAP() 检查模块是否连接了有效的IP
- return 如果模块具有有效的IP地址,将返回true
- 例子boolean apConnected = wifi.isConnectedToAP();

连接到服务器

boolean connectToServer(char ip, char port)告诉ESP8266打开到服务器的连接
- ip 要连接的服务器的IP地址
- port 要使用的端口号
- return 如果连接在5秒内建立,则为true
- 例子boolean serverConnected = wifi.connectToServer("192.168.5.123", "2121");
boolean isConnectedToServer() 检查服务器是否连接
- return 如果我们连接到服务器将返回true
- 例子boolean serverConnected = wifi.isConnectedToServer();
setTransportToTCP() AND setTransportToUDP()告诉ESP8266连接到服务器时使用哪个传输。 默认是TCP。

断开与服务器的连接

disconnectFromServer() 告诉ESP8266关闭服务器连接
- 例子wifi.disconnectFromServer();

发送消息

boolean send(char channel, char * message)发送消息 - 发送别名send(char channel, char * message, true)
- channel 如果要发送到服务器,请设置为SERVER。 如果我们是服务器,值可以在’1’ - ‘3’之间
- message 一个字符数组,最长25个字符。
- return 如果消息已发送,则为true
- 例子boolean sendOk = wifi.send(SERVER, "Hello World!");
boolean send(char channel, char * message, boolean sendNow)发送队列消息以供稍后发送
- channel 如果要发送到服务器,请设置为SERVER。 如果我们是服务器,值可以在’1’ - ‘3’之间
- message 一个字符数组,最长25个字符。
- sendNow 如果为false,则将消息附加到缓冲区,如果为true,则会立即发送消息
- return 如果消息已发送,则为true
- Example

wifi.send(SERVER, "You", false);
wifi.send(SERVER, " are ", false);
wifi.send(SERVER, "fantastic!", true); // ie wifi.send(SERVER, "fantastic!");

endSendWithNewline(bool endSendWithNewline)默认情况下,所有消息都使用换行符和回车符(println)发送,您可以禁用它
- endSendWithNewline 发送消息而不是println
- Example wifi.endSendWithNewline(false);

检查客户端连接

boolean checkConnections(&connections)更新预先初始化指向Wifi连接
- return
- 更新的指针是3个连接的数组:
boolean connected 如果连接则为true。
char channel 频道号码,可以通过发送。
- 例子

WifiConnection *connections;

wifi.checkConnections(&connections);
for (int i = 0; i < MAX_CONNECTIONS; i++) {
  if (connections[i].connected) {
    // See if there is a message
    WifiMessage msg = wifi.getIncomingMessage();
    // Check message is there
    if (msg.hasData) {
      processCommand(msg);
    }
  }
}

检查连接

boolean isConnection(void) 如果客户端连接,则返回true,否则返回false。 如果不打扰多客户端的话,不用WifiConnection指针就可以使用上面的指针。

从连接的客户端获取传入消息

WifiMessage getIncomingMessage(void) 检查消息的串行缓冲区。返回是WifiMessage类型,如下所示。 请参阅示例检查客户端连接示例以了解用法

接收消息

WifiMessage listenForIncomingMessage(int timeoutMillis) 将听取最多timeoutMillis毫秒的新消息。 尽可能多地调用此方法,并尽可能使用尽可能大的timeoutMillis来捕获尽可能多的消息。

  • timeoutMillis 查找新传入消息的最大毫秒数
  • return WifiMessage包含
  • boolean hasData 如果收到消息,则为true
  • char channel 告诉你是否从服务器(通道=服务器)或其他来源收到消息
  • char * message该消息作为字符数组(最多25个字符)
  • 例子
void loop(){
    WifiMessage in = wifi.listenForIncomingMessage(6000);
    if (in.hasData) {
        Serial.print("Incoming message:");
        Serial.println(in.message);
        if(in.channel == SERVER)
            Serial.println("From server");
        else{
            Serial.print("From channel:");
            Serial.println(in.channel);
        }
    }
    // Do other stuff
 }

本地接入点和本地服务器

boolean startLocalAPAndServer(char ssid, char password, char* channel, char* port)将创建一个本地访问点并启动一个本地服务器
- ssid
- password
- channel
- port
- return
- 例子
boolean localAPAndServerStarted = wifi.startLocalAPAndServer("my_ap", "secret_pwd", "5", "2121");
boolean stopLocalAPAndServer()禁用访问点(服务器不会停止,因为需要重启)
boolean isLocalAPAndServerRunning()检查本地访问点和服务器是否正在运行

重新连接功能

每次发送(…)和listenForIncomingMessage(..)被称为监视程序检查配置的访问点,服务器和本地访问点和服务器是否仍在运行,如果不是,它们将重新启动或重新连接。如果ESP8266应该重置,也会发生同样的事情。 注意:实际上只有发送方法可以检测与服务器的连接丢失。 为了确保你已经连接起来,偶尔发送一次。

高级配置

在串行ESP8266wifi.h中,您可以更改一些内容:
- HW_RESET_RETRIES 3 是begin()尝试启动ESP8266模块的最大次数
- SERVER_CONNECT_RETRIES_BEFORE_HW_RESET 30 是在执行ESP8266的硬件复位之前,看门狗将尝试与服务器建立连接的时间
- 传入和传出邮件的最大字符数可通过编辑进行更改:char msgOut[26]; char msgIn[26];
- 如果ssid和密码长度的限制不适合您,请更改:
char _ssid[16];char _password[16];char _localAPSSID[16];char _localAPPassword[16];
参考文献:
https://github.com/ekstrand/ESP8266wifi

猜你喜欢

转载自blog.csdn.net/davebobo/article/details/79879729