想要使用无线继电器,esp8266是个神器。
因为不会手机编程,所以只能使用自己熟悉的武器---电脑,我可以do,re,mi音乐或语音开关灯,也可以人脸识别开关灯,手机也可以,掌控不了啊!望洋兴叹啊!或许这叫核心技术?其实只是琢磨有乐趣了吧!
关键部件如下:1,esp8266
2,支持esp8266的串口继电器
3,usb串口(最好是支持esp8266的)
4,电脑版串口调试助手,网络调试助手,手机版(easytcp.apk)网络调试助手(均可以网上下载)
即使手机掌控,也少不了这四个部件,好,我们聊一聊调试经历,记录下调试关键点:
第一,前面博文提到过usb继电器,实质有两种,我们前面搞定的是第一种,这是真正意义上的usb继电器,另一种就是今天这种,实质是usb串口继电器,他可以通过串口调试助手发送16进制指令掌控继电器开合,具体是这样的,网上购买,就是要这一种,拔掉esp8266,继电器接通5v电源,继电器rxd接电脑串口txd,继电器txd接串口rxd,Gnd接gnd,就这三根线,电脑就和串口继电器相连了,调用串口调试助手,打开串口,通常用9600,n,8,1,使用十六进制,发送a00101a2就可以打开继电器,发送a00100a1就可以关闭继电器,现在很少有笔记本有串口,通常用usb转串口,常用的型号有ch340系列。
第二,串口继电器,插上esp8266,此时通过串口要设置esp8266,这就是esp8266的at指令,需要注意的是,此时rxd接rxd,txd接txd,gnd接gnd,5v电源不能断电,否则,白设置,esp8266不能保存at指令设置,掉电需要重来设置。你购买esp8266串口继电器时,关于at指令设置有说明,此处略过。设置完,关闭串口,去掉串口线,接上继电器上灯,5v电源不能断,然后通过手机网络调试助手,就可以开关灯了。任何时候,串口继电器上5v电源不能断,他给esp8266提供3.3v电源,只要不断电,就能一直保存at指令设置,虽然,过一段时间,esp8266会踢掉手机无线连接,但重新连接ip,马上就可以用了。我正尝试无用的手机3.7v变3.3v接esp8266使其不掉电,还可以充电,另外继电器使用5v供电的,不知有无3.3v的继电器?应该有吧,打住,以后再说。(esp8266你要试一下是9600,n,8,1还是115200,n,8,1,有时不注意,就这么简单的问题就会挡住去路)
第三,能否用电脑掌控这个无线esp8266呢?我还想人脸识别掌控呢!答案是显然的(首先,电脑(或手机)搜索到esp8266WiFi,连接它,相当于插上网线,线路通了)。电脑版网络调试助手可以做到,坏了,这个网络调试助手怎么发送不了16进制的a00101a2呢(手机easytcp.apk可以设置发送)?忽然想起了以前抄写过的vc6.0网络异步聊天程序(visual c++通信编程工程实例精解 胡志坤主编 第三章实例5),熟悉的很,做以修改,应该可以,如下ok,一次成功:
void CLanSocketClient::OnSend(int nErrorCode)
{
//测试继电器
// TODO: Add your specialized code here and/or call the base class
byte openrelay[4];//开灯
openrelay[0] = 0x0a0; openrelay[1] = 0x01;
openrelay[3] = 0x0a2; openrelay[2] = 0x01;
////关灯
//openrelay[0] = 0x0a0; openrelay[1] = 0x01;
//openrelay[3] = 0x0a1; openrelay[2] = 0x00;
while (Send(openrelay, 4) == SOCKET_ERROR);
/*while(Send(m_szBuffer, strlen(m_szBuffer)) == SOCKET_ERROR);*/
//测试继电器
// m_MessStr = "Message Sended !";
m_pWnd->SendMessage(m_UserMsg, CLIENTSEND);
//继续提请一个“读”的网络事件,接收Server消息
AsyncSelect(FD_READ | FD_CLOSE);
//CAsyncSocket::OnSend(nErrorCode);
}
需要注意的是,esp8266过一段时间仍然会踢掉这个客户端,即使是电脑客户端,你要掌控它,又需要重连esp8266服务器(程序就是好,你可以在esp8266指定的时间段,让程序自己去再重新连接)。
第四,自己可以编程掌控就是好,只要5v不断电,我让它全部自动化,人脸识别后,就开灯,手机就会很麻烦,还要用手去戳。
第五,畅想一下,我是否可以在深圳给老家的父母烧一壶开水呢?或者我在县城,还有十五分钟回乡下老家,我是否可以先烧一壶开水呢?应该是可以的,打开电脑,使用teamviewer,掌控老家电脑的桌面,通过我们的esp8266打开自动烧水壶(做饭),回家刚好可以沏茶(咥饭)。其实,我们努力也可以实现teamviewer想要的功能,试试看?
附注:我们这里用的是esp8266串口继电器,使用的是esp8266的txd和rxd针脚实现的,网上还有gpio0掌控继电器的,也有gpio2掌控继电器的,还有gpio14掌控继电器的,有使用arduino编程的,还有stm32编程的,其他单片机编程的,不好意思,我只会这一个。(有一丝电脑变单片机的感觉)
附注2:我们的esp8266使用tcpip server/client方式,esp8266为服务器(server),电脑(或手机)为客户端(client)。
待续(慢慢来!...........)每天一点小改变☺