原标题:既然是中国十大最有影响力的芯片之一 一定要有个好开发板

要评选中国影响力十大芯片,ESP8266必在其中。虽然开发文档有些混乱,各种生态纷杂,但它的低价,给了开发者更低门槛,也让更多人都参与到WiFi的开发体验中来。 从这种意义上来说,ESP8266是一款伟大的SoC!可能生态太繁茂了,所以官方开发板显得并不重要,曝光度也不高。但是我们还是想要尝试一下它的开发体验。下面正文开始

ESP8266系列产品是Espressif Systems生产的WiFi芯片,主要应用在物联网设备上。ESP8266系列目前包括ESP8266EX和ESP8285芯片及ESP32等。

ESP8266EX,简称为ESP8266是片上系统(SoC),集成了32位Tensilica微控制器,标准数字外设接口,天线开关,RF巴伦,功率放大器,低噪声接收放大器,滤波器和电源管理模块,体积小巧但功能强大。它提供2.4 GHz Wi-Fi(802.11 a/b/gn,支持WPA / WPA2),通用输入/输出(16 GPIO),内部集成电路(I²C),模数转换功能,串行外设接口(SPI),带有DMA的I²S接口(与GPIO共用引脚),UART(在专用引脚上,在GPIO2上可以使能仅发送UART)和脉冲宽度调制(PWM)。Espressif称为“L106”的处理器内核基于Tensilica' s Diamond Standard 106Micro 32位处理器控制器内核,运行频率为80 MHz(或超频至160 MHz)。它具有64 KiB引导ROM,32 KiB指令RAM和80 KiB用户数据RAM。(另外还包含32 KiB指令高速缓存RAM和16 KiB ETS系统数据RAM)。可以通过SPI访问外部闪存。芯片本身采用5 mm×5 mm Quad Flat No-Leads封装,带有33个连接焊盘 - 每侧有8个焊盘。

ESP-LAUNCHER是官方推出的功能评估板,然而奇怪的是,在林林总总的ESP8266开发板中,该板曝光频率并不高,倒是各种小型ESP8266模块频繁出现在开发者的视野中。ESP-LAUNCH接口丰富,使用方便;在开发环境方面,除了支持SDK开发模式之外,还支持使用Arduino,支持MicroPython等各种丰富的平台。

开发板由两大块组成。一个ESP_TEST Board,上面包含ESP8266EX及4MB的SPI FLASH存储器,另外该子板还提供了一个天线接口,套件还提供了天线;另外一块是底板,提供了丰富的板载外设及接口。

装上天线的效果图,看起来高大上,是真高!

ESP-LAUNCHER提供了丰富的板载资料及接口,如图所示。

ESP系列产品的核心是Tensilica微控制器,该产品并不开源,但是提供了SDK供用户访问及硬件硬件资源。ESP8266 SDK包括两种类型:支持OS的SDK及裸机SDK。

非OS SDK不基于操作系统。它支持IOT_Demo和AT命令的编译。非OS SDK使用计时器和回调作为执行各种功能的主要方式,例如由特定条件触发的嵌套事件和函数。非OS SDK使用espconn网络接口; 用户需要根据espconn接口的使用规则开发软件。

FreeRTOS SDK基于FreeRTOS,一个多任务操作系统。您可以使用标准接口来实现资源管理,回收操作,执行延迟,任务间消息传递和同步以及其他面向任务的流程设计方法。 RTOS SDK中的网络操作接口是标准的lwIP API,RTOS SDK提供了一个启用BSD Socket API接口的包,用户可以直接使用socket API开发软件应用程序; 并使用套接字API将ESP8266的其他应用程序移植到其他平台,有效降低了学习成本。

除此之外,官方还提供了其它一些配套的工具,如烧写程序可以用来将编译好的二进制代码写入到开发板;编译程序将用户编写的代码编译成二进制代码等。

这里还可以查看设备的MAC地址,可以看到包括两个MAC,一个是AP地址,另一个是STA地址。

使用SDK方式来开发,步骤略复杂。官方还提供了虚拟机,直接下载官方的虚拟机(Linux)就可以直接使用官方的SDK来进行程序开发工作了,好在万能的Arduino也提供了esp8266支持,使用起来也简单得多!

接下来的工作都是在Arduino中完成,实际上是使用Visual Studio 2017结合vMicro来完成的。

第一个程序是Hello, world,嗯,点灯!

第一步添加ESP8266硬件支持,在Boards Manager管理器里,安装esp8266支持

接下来在Arduino中选择硬件类型,不过不幸的是,支持列表里找不到ESP-LAUNCHER的型号,很奇怪!既然找不到,就直接选择Generic ESP8266 Module

然后就是配置ESP8266的一些具体参数,如SPI存储的大小,时钟频率等信息

这些设置要参考实际的模块型号来选择,这里有趣的一个设置是Builtin Led: 2这个选项!我们都知道Arduino的LED灯是连接在13号引脚,但是在其它平台,这就不一定了,像在ESP-LAUNCHER开发板上,就没有默认的LED,怎么办,设置这里就可以了

参考官方原理图,这里可以使用GPIO12来做试验。

接下来就可以使用ARDUINO的blink程序来测试了,代码太常见,不上了!

说下插曲,按官方的文档,直接将GPIO0开关拔下来,就可以下载代码了,但是实际使用的时候没用,非得先关闭电源开关,然后再上电,刷刷刷的就开刷了!

第二个程序要来体验一下WIFI连接及测试情况,这个也简单,参考官方代码并精简一下,得到如下代码

// Visual Micro is in vMicro>General>Tutorial Mode

//

/*

Name: wificlient.ino

Created: 2018/8/17 17:43:41

Author: DESKTOPhnlsm

*/

// Define User Types below here or use a .h file

//

#include

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: DESKTOPhnlsm

*/

// Define User Types below here or use a .h file

//

#include

#include

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还支持Java,MicroPython等编程语言,有兴趣的童鞋可以到官网上查看相关的支持,http://esp8266.net/上有很多有趣的资源。返回搜狐,查看更多

责任编辑:

linux开发板最好芯片,既然是中国十大最有影响力的芯片之一 一定要有个好开发板...相关推荐

  1. 中国十大科技进展2项,世界十大科技进展6项生物相关;相比工程,生物与国际差距还是较大...

    由中国科学院.中国工程院主办,中国科学院学部工作局.中国工程院办公厅.中国科学报社承办,腾讯集团发展研究办公室协办的中国科学院院士和中国工程院院士投票评选的2020年中国十大科技进展新闻.世界十大科技 ...

  2. 中国十大技术区都知道哪些

    原 中国十大技术社区你都知道哪些? 社区是聚集一类具有相同爱好或者相同行业的群体,IT技术社区就是聚集了IT行业内的技术人,在技术社区可以了解到行业的最新进展,学习最前沿的技术,认识有相同爱好的朋友, ...

  3. 2019年中国十大人才发展趋势

    近日,招聘专家瀚纳仕发布"2019年中国十大人才发展趋势",预测"2019年,中国制造业成本将会提高,人才市场将重点关注工业自动化领域.为了提高生产效率,市场对人才的技能 ...

  4. 男人买鞋有点难——中国十大皮鞋

    温州长城鞋业公司是中国皮革工业协会重点骨干企业,理事单位,温州市最大规模皮鞋生产企业,浙江省同行业最佳经济效益企业.主要生产康奈牌.鸿盛牌中.高档系列男女皮鞋. 公司坐落在温州高新技术产园,现有员工1 ...

  5. 中国十大金牌游戏策划

    在北京奥运会上中国运动健儿获得了45枚金牌,可喜可贺. 中国网络游戏飞速发展,2008年市场规模即将突破200亿RMB,假如咱们游戏产业也能每四年举办一次"奥运会",策划类.程序类 ...

  6. 2023年中国十大软件公司排行榜 2023国内软件公司排名前十强

    2023年中国十大软件公司排行榜 2023国内软件公司排名前十强 (1)华盛恒辉软件开发有限公司,专注于高端软件定制开发服务和高端建设的服务机构,致力于为企业提供全面.系统的开发制作方案.在开发.建设 ...

  7. 中国十大SNS交友网站排名

    [img]]<a href='http://www.zhubajie.com/task/?mod=user&com=register&welcome=3711514' targe ...

  8. 中国十大用户体验设计咨询公司排名

    中国十大用户体验设计咨询公司排名 随着全球互联网产业的飞速发展,人们对于用户体验的嗅觉变得更加灵敏.用户体验对应的是体验地图,叫user experience map或者user journey ma ...

  9. 中国十大机器视觉公司排名

    目录 ​编辑 十大机器视觉公司排名,机器视觉行业哪个公司实力强 一.劲拓股份 二.精测电子 三.赛腾股份 四.美亚光电 五.矩子科技 六.LEAD先导 七.康鸿智能 八.华兴源创 九.天准TZTEK ...

最新文章

  1. java 不要使用魔法值_Java代码中的魔法值
  2. vs2015提示中文
  3. xmanager远程桌面控制linux
  4. 数据结构实验之栈五:下一较大值(一)
  5. EJB3.0学习笔记--第一个EJB程序:
  6. Centos6.5 恢复误删的系统面板
  7. svn与git的区别(总结)
  8. 数据结构与算法学习笔记——数据结构(四):单向环形链表(约瑟夫问题)
  9. 超全整理:程序员都在用什么工具?
  10. PHP 梯形图,初学者必掌握plc梯形图解释
  11. Linux修改/设置服务器ip地址
  12. Android开发相关介绍--基础篇
  13. Apereo CAS 5.0.3.1安装配置
  14. 【python小技巧】 批量将.png格式图片转换为.jpg格式图片
  15. html风琴图片展示,炫酷的jQuery手风琴图片和菜单插件及源码
  16. 发现一个非常好用的编程字体 看起来非常舒服 - Tahoma
  17. Balsamiq Mockups 产品原型图绘制工具的破解和使用教程
  18. 中科蓝讯 AB32VG1 开发板 GPIO 控制RGB彩灯实验
  19. 关于我吹爆的buyvm机器的一次测评详情
  20. 常数乘以无穷大等于多少_请教一个数学问题:无穷大乘以无穷小等于多少?

热门文章

  1. node npm cnpm 全局安装淘宝NPM 镜像
  2. 「动手学深度学习」在B站火到没谁,加这个免费实操平台,妥妥天花板
  3. 「开源·共创·照亮」TDengine开源两周年暨灯塔计划发布会邀你一起闪耀
  4. 估值飙至 280 亿美元,Databricks G 轮融资 10 亿美元,谁说开源不挣钱?
  5. 量子计算还没搞懂,光子计算又要来统治世界?
  6. 2020 美国大选在即,又到了 AI 花式打击假新闻的季节
  7. 程序员在这些地方敲代码,普通笔记本根本扛不住
  8. 5 月编程语言排行榜:C 重回第一,今年编程语言名人堂冠军还会是它吗? | 原力计划...
  9. 汇编指令入门级整理 | 原力计划
  10. 计算机界 TOP 3 难题:“相等”是软件工程中许多重大问题的根源!