在此感谢关注和简信支持我的朋友。这一篇涉及的领域——WIFI通讯应该是我死磕了最久的一部分,所以写起来也变成了让我最纠结的地方。一方面想给大家介绍更多的内容,另一方面又想保持帮助零基础朋友上手就能搞定的初衷。辗转反侧之下,还是决定力求简单快速~OK, 各位久等了,下面进入正题!
前两篇我们分享了IOT的主体结构——《我可能做了个假的IOT(物联网)》和云端的零基础演示《大家一起来做IOT大脑——云端构建》,有兴趣的朋友可以看一看,以免这篇衔接不上。
言归正传
WIFI通讯的目的是什么呢?
低成本,适用场景丰富(在家,学校,单位等等)几乎现在每到一个房间都能找到WIFI,所以使用、普及和开发产品的适用性非常好。而且成本低啊!一个ESP8266也就10-20元能搞定,配套上Arduino nano, 电源模块和自己焊个电路板,总成本目测不超过50元。
WIFI通讯的方式如何能够理解呢?
看过前两篇的朋友都知道,我的套路就是少跟我扯专业词汇和原理,能用才是硬道理。所以这个通讯方式我把他比喻成,用WIFI模块打开我们之前创建的网站,将网站显示的内容当做一套可执行的密码,交给Arduino nano去破译,然后控制继电器去执行。看懵了文字版的朋友请看下图:
一不小心,把整个的原理图画上了......
IOT通讯的必要性
这个问题最开始也困扰了我好久,相信有些细心的小伙伴们肯定会琢磨,按照上图的原理,为什么不只用arduino进行决定让小5上电,而非要通过云端呢?这个还要从我的创业项目说起,呃,说远了。主要还是有以下几个情景导致了IOT方案优于本地处理的方案:
1. 有很多的终端,分布在不同的地方,如果需要升级控制程序,比如将原来的5号继电器启动变为6号继电器启动,谁想去跑完所有的终端拷贝程序呢?
2. 如果你的程序涉密,不想拷贝来拷贝去的,IOT在一定程度上可以帮你把程序从物理层面变成一个黑箱。
3. 如果反过来,终端需要向云端输送数据,比如环境参数等等信息,是不是就需要IOT这种通讯的必要性了呢?
4. 更Fashion一点,你想用手机控制家里的空调,热水器,空气净化器,关窗,浇花,喂食阿猫阿狗,是不是都有需要用这个IOT了呢?
下面是干货:
本地设备硬件准备
1. Arduino nano: 成本低,接口够用,性价比比较好,uno有点贵了,mini烧录不方便,当然土豪上Arduino Mega请自便。
2. ESP8266或者任意成熟串口WIFI模块,为了方便大家使用,推荐具备httpd_client功能的模块或者相似功能的设备,具体产品为了避免推广嫌疑就不在文中提了,留言吧。为什么要这种功能呢?因为可以避免使用大量AT命令,简单的设置WIFI模块,就可以通过串口向WIFI模块发送参数(网址最后一个”/“后边的内容),从而实现WIFI模块自动发送全部内容的功能。
举个例子:
如果用ESP8266实现访问云端的功能,流程图如下:
如果使用有httpd_client功能的WIFI模块,流程图如下:
很简单有没有???有没有?就问你有没有?
注意:
1. 当然这么简单的实现之前也需要对HTTPD_CLIENT进行上电设置的,但只需要设置一次就可以了,不用每次开机设置的哦~相对于ESP8266的AT命令模式简单很多,但是灵活性就不够咯,HTTPD尤其是WIFI的登陆,设置后就不能更改,每次更改都需要重置,比较费劲了。设置方法需要依据模块厂商的说明书来做,一般比较简单。
2).设置HTTPD_CLIENT的时候,要求设置访问的服务器,大家就把上次开发的sae云端的地址填入就可以了(http://XXXXX.applinzi.com)
3. 电源板:3.3V电源*1+5V电源*1。千万千万记住,不要将Arduino nano连接到电脑上之后,再将nano上的3V电源接到WIFI模块上,大概率出现信号不稳定,结果就是收不到信息或者返回数据不全!
硬件连线
假设大家有自己焊接电路板,了解电压,电流和数学比较大小的能力。不太了解的可以私信,如果感兴趣的朋友多,我再开一篇帮大家打下基础。
这是个简单的示意图,各位有基础的,水平高的朋友见谅,为了避免零基础的朋友心里有阴影,咱们怎么简单怎么来哈。Altium Designer 之类的以后有机会再上哈。
怎么样,会接线了么?如果有问题,欢迎留言或者简信。
敲黑板!!!注意正负极一定不要,千万不要接反了,不然冒烟是小,板子烧了事大。
开始编程
假设你已经设置好了WIFI模块的httpd_client功能。不会的私信或者留言吧,新定的配件还没到,到了发帖演示给大家看怎么设置。
敲黑板!注意啦!
知识点1:AltSoftSerial这个功能。arduino nano有一个硬件串口,同时还可以有一个虚拟的串口。我个人比较喜欢硬件串口接电脑,可以监控信息收发,所以用虚拟串口连接WIFI模块。
贴程序啦!
就是这么简单!功能是什么呢?就是通过电脑键盘向串口监视器(arduino IDE——工具——串口监视器)输入”i_was_pressed“,然后被Arduino的Serial.read()读取到,再由Arduino的wifiSerial.print出去,相当于在浏览器里键入地址然后按回车(此处参见上一篇IOT大脑)。之后将云端返回来的网页内容由wifiSerial.read()读取到Arduino, 再通过Arduino的Serial.print输出,最终呈现到串口监视器中。
那,现在快将电路板连好,把nano的串口线插到电脑USB口里,打开arduino IDE——工具——串口监视器,然后输入”iot“试试,看看串口监视器里会蹦出来什么有意思的东西!
另外,有基础有兴趣的兔子们可以尝试添加更多的扩展,来让自己的物联网实现更多功能
好啦,写在最后。作为一个工科生,文字的表达有时候真的是累觉不爱,感觉很多时候意犹未尽,有些有说不清。不知道大家有没有兴趣看视频??我发现简书的大课堂的机制不错,想试试,不知道有没有同志感兴趣?这样交流演示和问题处理会更有效率和直观。大家说呢?