回答

收藏

[大赛作品提交] 【进阶四】基于ESP8266与X3路由器的树莓派远程开关机实现

Raspberry Pi Raspberry Pi 7010 人阅读 | 0 人回复 | 2017-12-17

本帖最后由 ky123 于 2018-2-5 10:51 编辑

感谢e络盟官方提供的赞助基金。
树莓派3B有线网卡是支持远程唤醒的,但树莓派关机后会网卡也会断电,无法进行WOL唤醒,故本次实验将使用异地组网X3路由器与安信可ESP8266 wifi模块实现远程控制树莓派的开关机。

硬件:STM32F103C8T6最小系统板、ESP8266-01模块、MOS管开关电路、树莓派
开发平台:keil5

————————————————————分割线—————————————————————
-1-
ESP8266配置
1) ESP8266-01模块封装如下:


若从FLASH启动进入AT系统,只需将CH-PD引脚接VCC或接上拉(不接上拉的情况下,串口可能无数据),其余三个引脚可选择悬空或接VCC(GPIO0为高电平代表从FLASH启动,GPIO0为低电平代表进入系统升级状态,此时可以经过串口升级内部固件)。

2)ESP8266WiFi模块刷固件
按下图接好线

然后打开软件 FlashTool-20141203.exe 选择固件v0.9.5.2 AT Firmware.bin文件,选择0x00000,点击开始即可。

3)创建TCP服务器
  • 将esp8266设置为STA模式
  1. AT+CWMODE=1
复制代码
  • 查看当前无线路由器列表
  1. AT+CWLAP
复制代码
  • 加入当前无线网络
  1. AT+CWJAP=”MERSAIN”,”XXXXXXXX”(设置指令)
复制代码
  • 检测是否真的连上该路线网络
  1. AT+CWJAP?
复制代码
  • 开启多连接模式
  1. AT+CIPMUX=1
复制代码
  • 创建服务器,AT+CIPMUX=1时才能开启服务器
  1. AT+CIPSERVER=1,6767
复制代码
开启server后自动建立server监听,当有client接入会自动按顺序占用一个连接。

4)stm32单片机与esp8266通信
将esp8266的TX与RX与单片机的串口相连,然后通过下面代码建立TCP服务器
  1. Delay_ms(1000);
  2. Uart1_Put_Buf("AT+CIPMUX=1\r\n",13);
  3. Delay_ms(1000);
  4. Uart1_Put_Buf("AT+CIPSERVER=1,6767\r\n",21);
复制代码
注意:每条指令的最后需要加入回车和换行符 “\r\n”,且顺序不能颠倒。

5) ESP8266连接X3路由器
路由器SSID为 Oray-Box-1F04,连接成功如下图所示:

   
-2-
开关电路设计
为了实现树莓派电源开关,需要在树莓派和电源之间加入一开关电路。
电源从microUSB输入,通过开关电路后从USB输出。选用的MOS管型号是TP_SI2302。
电路图如下所示:

   
-3-
远程开关实现

系统整体硬件连接图如下:


1)手机端通过蒲公英客户端登录VPN网络,如下图所示:


2)手机端建立TCP Client连接ESP8266搭建的server,输入X3分配给ESP8266的IP地址,端口设置为6767,如下图所示:


3)客户端向服务器发送开机指令,即可看到树莓派已经启动


4) 关机操作
先使用ssh工具关闭树莓派以防内存卡烧坏。
  1. sudo halt
复制代码
然后向服务器发送关机指令,可以看到树莓派电源指示灯灭,风扇停转。

<本次更新完>
关注下面的标签,发现更多相似文章
分享到:
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条