ESP8266教程可以连上华为云么?

一般WiFi模块如果要连接上网络都需要将SSID名称、密码设置到模块当中。

一种是通过串口接到输入设备通过串口输入AT指令(SSID名称和密码);

另一种是设备提供一个AP热点,手機连上这个热点然后通过手机把家里的WiFi的SSID和密码配置到设备上,最后手机再切换回家里的WiFi ;

接下来我们通过实例来做一个小demo:

(2)零知開源开发工具

2、输入上述测试demo验证代码,选择ESP8266教程上传代码,打开调试窗口串口选择1152000,窗口会不断打印一个一个的点等待连接。

4、当手机端配置成功会出现如下结果:

更多详细资料可到零知实验室官网免费获取。

作为一个物联网小白一直认为通过微信控制设备比通过APP控制设备更会让人接受,
在此仅仅是烧录airkiss以及与安信可微信号下的“我的灯泡”控制RGB还有微信号下配置airkiss
为了烧寫方便,我懒的并没有自己做转接版而是用了手边现成的模块。

烧写AIRKISS比烧写机智云固件还要简单的所以不用怕


烧录成功后进行安可信微信配置以及微信控制RGB灯 同样可以用机智云微信配置AIRKISS

在前面网络篇TCP通信中我们用到叻Wi-Fi功能,但是没有细讲今天我们在这篇文章中仔细探讨一下ESP8266教程的Wi-Fi联网过程,以及各种方式的配网过程是如何实现的文章中难免有疏漏或不正确的地方,如遇不正确的表述还请指出本系列文章现在在知乎和简书同步更新。

开始写之前我们先来看一下为什么设备需要配网呢?

假如你买了一个智能插座想让它连接到家里的Wi-Fi,但是智能插座又没有键盘和触摸屏此时你该怎么操作呢总不能拆开然后重新給它写个程序吧!此时就需要我们的智能配网模式出马了, SmartConfig最先是TI开始研究的其实类似的协议有很多,各家也都有各家的称呼乐鑫这裏也还是叫SmartConfig,但是配网模式也不仅仅局限于SmartConfig还是有很多方式可以做到的,比如看下边~

下面分析一下几种配网方式和优缺点:

  • ap配网 -> 设备处於路由模式下等待客户端发送来SSID和PWD(可以随时修改不易于操作)
  • web配置 -> 设备内做了个小web服务器通过网页交换SSID和PWD(界面化操作,流程繁琐)
  • 零配 -> 以配網设备为未配网设备配网两个设备间数据交互(AliOS-Things中有涉及)
  • 蓝牙配网 -> 利用蓝牙设备配网,蓝牙模块跟ESP8266教程串口数据交互(未使用过不做评价)

目前应该就这几种吧,据我了解应该就这几种了每种方式都有一定的优缺点,本篇文章先给大家讲解一下前五种方式零配方式目前我還没有尝试过,后面实际开发过再给大家讲解如何使用,至于蓝牙配网手头没有蓝牙模块这里也不给大家讲了,不过思路是很简单的大家如果有蓝牙模块,或者有BLE开发经验相信自己摸索一下就可以做出来了。

这里叫直接配网应该不是很妥当其实就是将SSID和PWD直接写在叻固件中,设备上电后会去搜索保存的SSID如果搜索到指定的SSID后就用保存的PWD去连接Wi-Fi,TCP通信那片文章中我们就是用的这种方式我们先来回顾┅下,在user_config.c文件中有如下定义:

这就是我们保存的Wi-Fi名称和密码然后我们在user_init函数中直接调用的是Wi-Fi连接函数:

可以看出,我们是直接使用保存嘚信息去进行Wi-Fi操作的这种方式比较简单,这里就不再做具体的讲解了

AP(Access Point)模式,就是我们常说的路由模式这里的思路是ESP8266教程上电进入AP模式开启TCP Server,然后手机或者PC连接ESP8266教程的热点然后作为TCP Client去连接Server进行数据交互,TCP数据交互我们在前面的文章中给大家讲过这里我们主要讲一下ESP8266敎程怎么开启AP模式,还有为什么我们让ESP8266教程作为TCP Server呢其实主要是ESP8266教程做Server去监听固定端口更方便Client去连接,加入我们手机或者PC做Server万一遇到端ロ不可用,那岂不是没办法去交互数据了所以我们让ESP8266教程做Server很显然是更妥当一点。

还有比较重要的一点就是数据格式数据格式就像我們交流的语言一样,是两者都能够"听懂""读懂"的,我们这里使用一种非常常见的数据格式 -> JSON相信很多人都有听说过,或者使用过我们选擇JSON,是因为它的格式固定并且易于解析,这里我们使用cJSON库去解析官方SDK中虽然也有JSON API,但是由于我一直都是使用cJSON对cJSON库还是比较喜欢的,洏且是用标准C写的跨平台so easy,项目地址戳卡片:

使用cJSON非常简单只需要添加一个头文件和源文件就好了,但是在ESP8266教程上使用还是要修改很哆东西的这里就先不细讲了,大家可以先下载我的工程直接使用,后面我们再单独讲一下JSON

我们先规定一下数据格式吧,还不了解JSON的話可以先去了解一下很简单的其实,就是Key-Value型的键值对就是一个名字对应一个值,这里我们就简单定一个格式吧!

其中XXXXXXXX和XXXXXXXX都是需要替换荿你的实际Wi-Fi名称和密码剩下两项没有实际意义,只是防止有人不署名转载然后帮助读者回到正确的车上~啊哈哈哈!

我们来分析一下代碼吧,跟之前的TCP通信差不多这是这里对收到的数据做了进一步处理,我们只看关键代码好了:

2 * TCP Server数据接收回调函数可以在这处理收到Client发來的数据
8 //成功返回一个指向内存块中的cJSON指针,失败返回NULL表示JSON格式不正确

在此函数中,我们只需对收到的数据简单一处理就得到了我们需要的Wi-Fi名称和密码,然后我们就可以快快乐乐的去连接Wi-Fi了~这里AP配网模式是按键触发的,我们在WIFI_Connect函数中调用了wifi_station_set_config函数下次上电是会直接连接这次我们配置的Wi-Fi的~

下面我们再来分析一下SmartConfig配网模式,其实SmartConfig模式与Airkiss模式基本是一致的主要不同就是发数据包方式还是有点不同的:

  • Airkiss 全网廣播,通过长度编码

别的区别的话就是代码有些不同了,下面我们来实际分析一下:

{//练成完成如果是使用的Airkiss方式,到这一步还没有完成還会跟微信进行数据交互,应该告知微信配网完成之类的

这里的代码稍微有点多不过其实是三种模式,SmartConfig模式、Airkiss模式、SmartConfigAirkiss混合模式这是乐鑫官方给出的例子,某些步骤我按我的理解给注释了一下大家可以仔细阅读以下看看,其中需要注意的是在调用smartconfig_start函数之前必须先调用smartconfig_set_type函數声明配网模式类型

与SmartConfig类似,代码在上边大家可以看一下。

Web页面配置也相对不是很难主要是对表单的处理,但是要把网页写在ESP8266教程嘚flash中最近没什么时间,等改天有时间了再给大家分析一下不过ESP8266教程内置网页的Demo在我的Github仓库中有一个,大家感兴趣的可以先去看一下嘫后看一下自己是否能实现。

最后上一段小视频手机录制的,不是很好大家将就着看,还有些小瑕疵这里就不剪了。也怪麻烦的主要看一下流程,可能讲的也不是很详细有什么建议可以私信我哦~

最后欢迎大家去我的仓库点个Star,您的鼓励是我最大的动力~有问题可以私信我或者提交issues。

欢迎大家Star,您的鼓励是我最大的动力有问题可以私信我,或者提交issues~

本系列文章在知乎博客园同步更新,知乎搜索专欄:

我要回帖

更多关于 ESP 8266 的文章

 

随机推荐