当今互联网发展奇快,网络信息的传递越来越方便,物联网是未来发展的一个大趋势。现在家家户户都有了宽带WIFI,接入网络的成本越来越低,这也给物联网创造了便利。
为了体验物联网给我们生活带来的便利,我设计了一个远程控制USB排插,基于普通USB分线器改造,使用ESP8266作为主控,使用fuhome平台实时控制,使用Yeelink上传统计数据。现在实现的主要功能有互联网web,app,微信无延迟控制,测量DC-DC降压模块温度和总电流显示并上传,通过互联网同步标准时间并显示。
下面将对一些功能细节进行介绍:
一、主控单片机采用ESP8266的ESP-12E模块,此模块集成4M flash空间用于储存程序,大部分情况来说是够用了。为eso8266编程的方法有很多,我采用的是arduino ide进行编程,使用arduino最大的优点是编程方便,有很多现成的库方便调用,比如这个插排中的ssd1306显示屏和18B20模块,对esp8266编程跟普通arduino几乎一样,这也减少了再学习的成本。
二、互联网平台我接入了两个,fuhome用来进行控制,使用udp可以直接接收数据包,几乎没有时间差,局域网内也可以进行发包,协议也比较简单,详细协议可以下载fuhome的官方文档。Fuhome也可以上传数据并记录,只不过记录的数据太少,以前的数据会被覆盖掉,所以我选择Yeelink平台进行记录,yeelink采用tcp传输数据,使用post,get等进行上传读取等命令,yeelink也可以进行远程控制,只不过客户端只能重复性查询服务器的状态才能对命令进行反应,这就会产生延时,效果不佳。
三、Esp8266总共有17个io0~16,去掉连接flash的6个还剩11个,我把这11个io全部利用,5个作为开关输入使用中断,3个连接74hc595进行控制7个USB电源的通断和一个led指示灯,2个通过USB口外接出来接ssd1306显示屏同时可以下载程序,1个接18B20单总线传输数据。Esp8266的部分io有特殊功能,开机上电时要保持高低位,所以io的上下拉电阻非常重要,我把gpio0直接接到了第一个开关上,长期保持高电平状态。我完全关闭了esp8266的串口输入,但是在上电时还是会默认输出一些信息,不过这对I2C协议的显示屏并没有影响。
四、温度模块使用18B20,单总线通信,还可以寄生电源,接线方便,程序也很方便,根据资料精度在1C°以内,分辨率1/16C°,一般应用情况都是看温度的相对变化,线性误差也没有那么重要。
五、因为ESP8266只有一个adc引脚,所以测量电流比电压更有意义。电流的测量并不简单,现阶段比较简单的方法就是串电阻测电压,为了保证电阻不会太大影响输出,测量要有正常的精度和量程,所以我把测量电阻加到了12V输入的地线之前,这样就不需要复杂的测量及转换。这样测量的电流是12V的电流,大约为5V输出的两倍。因为adc脚的电压范围为0~1V,我的测量电阻为0.33欧,所以测量精度为0.33mA,量程为3A,这对我用的普通降压模块来说就是极限了,极限情况下测量电阻的分压才1V,对12V电路来说影响不大。经过校准后的计算公式为voltage=ADC*3.3+69.3。
六、互联网校时很简单,我是用的是fuhome心跳包返回的时间,利用millis函数的系统时间计算差分时间,结果相当准确,跟电脑时间对比,显示屏的秒刷新误差在1秒之内。星期的计算也很简单,已知当前年月日,计算星期几,一个公式搞定。
七、显示屏通过绘画库函数能方便画出简单图形,当通过按键或远程改变开关状态时,显示屏能直接刷新显示。并且有表示上传数据或接受命令的小标识。
八、关于WIFI连接,使用EEPROM储存两个WIFI信息,自动连接可用WIFI,当没有可用WIFI时启动smartConfig程序,并在显示屏提示,用户使用任意一款smartConfig软件即可简单配置。配置的WIFI信息会循环覆盖。
暂时就写这么多,有很多细节都没有处理完美,接下来准备使用电流更大的降压电路,设计出pcb打印出来,这样就可以更方便拿淘宝10元包邮的劣质分线器改造自己的远程大电流插排了。
下面放出两个测试视频,仅供观看。
APP控制:
flash: http://player.youku.com/player.php/sid/XMjY1NjkxMTk2MA==/v.swf微信控制:
flash: http://player.youku.com/player.php/sid/XMjY1NjkxOTIxMg==/v.swf