首页 > 评测 > ESP8266最佳开发板--ESP-LAUNCHER开发板评测
ESP8266最佳开发板--ESP-LAUNCHER开发板评测
- [导读]
- 要评选中国影响力十大芯片,ESP8266必在其中。虽然开发文档有些混乱,各种生态纷杂,但它的低价,给了开发者更低门槛,也让更多人都参与到WiFi的开发体验中来。 从这种意义上来说,ESP8266是一款伟大的SoC!可能生态太繁茂了,所以官方开发板显得并不重要,曝光度也不高。但是我们还是想要尝试一下它的开发体验。下面正文开始
参考官方原理图,这里可以使用GPIO12来做试验。
接下来就可以使用ARDUINO的blink程序来测试了,代码太常见,不上了!
说下插曲,按官方的文档,直接将GPIO0开关拔下来,就可以下载代码了,但是实际使用的时候没用,非得先关闭电源开关,然后再上电,刷刷刷的就开刷了!
第二个程序要来体验一下WIFI连接及测试情况,这个也简单,参考官方代码并精简一下,得到如下代码
// Visual Micro is in vMicro>General>Tutorial Mode
//
/*
Name: wificlient.ino
Created: 2018/8/17 17:43:41
Author: DESKTOP\hnlsm
*/
// Define User Types below here or use a .h file
//
#include <ESP8266WiFi.h>
const char* ssid = "xxxx";
const char* password = "xxxx";
// Define Function Prototypes that use User Types below here or use a .h file
//
// Define Functions below here or use other .ino or cpp files
//
// The setup() function runs once each time the micro-controller starts
void setup()
{
Serial.begin(115200);
delay(10);
Serial.println("Connecting to Local WiFi.");
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
// Add the main program code into the continuous loop() function
void loop()
{
}
默认使用DHCP方式从路由器获取IP地址,然后使用串口打印出来,loop()里什么也不干!
得到串口输出如下
成功获取到IP地址,至此,已成功加入网络世界!
然而,这样并没有什么用!物联的魅力在于远程信息的获取及控制,所以咱得再来点个灯,不同的是,这一次点灯是通过网络来进行控制的。
网络通信的方式很多,低级一点的直接socket来进行,高级的则可以使用http来实现,不过这里咱们要来体验一把mqtt方式通信。
mqtt是专门用于物联网通信的协议,底层基于TCP/IP协议。mqtt通信效率高,可靠并且非常容易实现。Arduino平台有许多现成可用的,如PubSubClinet就是Arduino平台上使用频率非常高的一个组件。
关于mqtt,有兴趣的可以网上找找资料,非常好的一款物联网通信协议,这里不多介绍,上一段最精简的代码,实现网络点灯。
// Visual Micro is in vMicro>General>Tutorial Mode
//
/*
Name: wificlient.ino
Created: 2018/8/17 17:43:41
Author: DESKTOP\hnlsm
*/
// Define User Types below here or use a .h file
//
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
const char* ssid = "xxxx";
const char* password = "xxxx";
const char* mqtt_server = "192.168.88.22";
#define LED 12
WiFiClient wifiClient;
PubSubClient mqttClient(wifiClient);
// Define Function Prototypes that use User Types below here or use a .h file
//
// Define Functions below here or use other .ino or cpp files
//
// The setup() function runs once each time the micro-controller starts
void setup()
{
pinMode(LED, OUTPUT);
Serial.begin(115200);
delay(10);
//setup wifi client
Serial.println("Connecting to Local WiFi.");
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
//setup mqtt client
mqttClient.setServer(mqtt_server, 1883);
mqttClient.setCallback(callback);
}
void callback(char* topic, byte* payload, unsigned int length) {
//for test only
char temp[40];
int i;
for (i = 0; i < length; i++) {
temp[i] = payload[i];
}
temp[i] = '\0';
Serial.println(topic);
Serial.println(temp);
//program logic goes here
if (strcmp(topic, "led") == 0) {
if ((char)payload[0] == '1') {
digitalWrite(LED, LOW);
}
else {
digitalWrite(LED, HIGH);
}
}
}
void reconnect() {
while (!mqttClient.connected()) {
if (!mqttClient.connect("ESP8266Client")) {
delay(5000);
}
mqttClient.subscribe("led");
}
}
// Add the main program code into the continuous loop() function
void loop()
{
if (!mqttClient.connected()) {
reconnect();
}
mqttClient.loop();
}
mqtt需要一个服务器,服务器的作用是检查用户发布的消息,并将之发布到订阅了相关主题(topic)的用户,在程序的开头,除了指定WIFI配置相关参数,还指定了mqtt服务器,mqtt服务器默认的port号为1883。
reconnect()函数检查是否连接正常,如果正常,向用服务器订阅topic为led的消息,如果其它结点发布消息到该主题,esp8266就会接收到相关的消息。
代码的核心在callback函数里,当接收到一个订阅消息,先检查其主题是否为led,如果是,检查消息负载是0还是1,如果接收到的消息是0,灭灯,否则点亮灯!就这么简单,程序做了精简,只是为了演示功能,并没有考虑容错处理。
现在可以在另一个结点上发布消息来控制LED灯的亮灭。这里使用mosquitto来测试,如下
mosquitto_pub命令的-t参数指定topic,-m参数指定消息,执行命令后在ESP8266的串口可以看到相关的内容输出
当然,GPIO12对应的LED灯也会相应的点亮或熄灭!
程序中也可以将采集到的传感器如温度、湿度等信息publish出去,供其它设备读取,从而实现ESP-LAUNCHER真正的物联功能!
除了支持C/C++之外,ESP8266还支持Javascript,MicroPython等编程语言,有兴趣的童鞋可以到官网上查看相关的支持,http://esp8266.net/上有很多有趣的资源。
- 本文系21ic原创,未经许可禁止转载!
网友评论
- 联系人:巧克力娃娃
- 邮箱:board@21ic.com
- 我要投稿
-
欢迎入驻,开放投稿
-
人均百万?英伟达中国员工收入曝光! 2024-08-29
-
《黑神话:悟空》玩家硬盘升级攻略:提升游戏体验,畅享3A大作 2024-08-29
-
数睿数据参加《系统与软件工程 低代码开发平台通用技术要求》国家标准编制 2024-08-29
- NRF52810蓝牙数字耳机找人定制
预算:¥30005天前
- 125KW模块式PCS软硬件外包开发
预算:¥1100000015小时前
- 12V汽车启动电源项目BMS设计
预算:¥50000023小时前
- 数据可视化软件 开发
预算:¥5000023小时前
- PLC项目调试修改
预算:¥100001天前
- 起动电机控制器开发
预算:¥1100001天前