基于stm32的远程监控喂食器
wifi智能小车模块+花生壳+STM32+APP
实现功能为视频传输与远程控制
1.wifi智能小车模块
该模块可以连接你所在地方的wifi,先使其成为访问该模块的内网。步骤1’通过网线或该模块的热点与电脑连接,在路由器管理页面(192.168.1.1)设置连接所在地方的网络,接口和视频/控制端口设置。再通过winscp 这个相当与Windows下面的文件管理器软件,利用它我们可以很方便地把文件从windows里面拖到WIFI板上。2’登陆所连接地方WiFi的路由器管理页面。在转发规则里面设置好内网端口,动态DNS登陆花生壳账号。
2. 花生壳原理
首先简单说一下花生壳,这是一个提供动态域名解析服务的商业化产品。所谓域名解析,常被称作DNS,也就是将对人类友好的域名与对计算机友好的点分式IP地址做关联的一个系统服务。打个比方,这个服务类似于手机里面的通讯录软件,它的作用就是将人能记住的姓名与一串毫无意义,很难记忆的电话号码关联起来。那么拨电话时,只需要在通讯录中查找姓名就可以了。
在大多数情况下,通讯录软件都能很好的工作,可正如这个世界本身的不完美,完美的软件也不存在,通讯录一个最明显的bug就是,一旦有人换了号码,通讯录就无法跟踪这种变化。回到我们讨论的DNS,情况就成了这样:有人申请了一个域名,在自己的笔记本电脑上做了一个网站,并将网站的域名关联到自家上网的IP地址后,全世界任何一个角落的人都可以通过这个域名访问他的网站。可如果这个人白天是在工作单位使用笔记本电脑呢,此时只能通过工作单位的IP才能访问网站,但是DNS那里登记的却是一个家庭IP,于是网站成了一个悲剧。
花生壳很好的修正了这个bug,如果域名所对应的IP地址经常会更换,那么可以注册后使用花生壳的软件,之后无论在哪里上网,域名都会和当前的上网IP建立对应关系。
总之你下载花生壳app,在上面所连接的WiFi下登陆,即相当于有了一个服务器。利用它可实现外网访问。
花生壳,虽然账号免费注册但内穿透要付费,个人用的话6块钱体验版就可以,一个月1G流量。配置方法:1’登陆花生壳账号,点内网穿透。2’在上图‘添加映射’中填写内网IP,对应的端口,名字随便起。3’复制分配的外网访问地址与花生壳端口号。
另外,也可以使用花生棒。花生棒的作用在于代替了花生壳在wifi下登陆的操作,其他啥用没有。花生棒一头用网线连路由器,一头usb口连电源。内网穿透啥的都还是靠花生壳,流量啥的该掏钱还得掏钱。
3. STM32单片机
wifi智能模块与单片机串口相连,通过下位机读取模块网络发来的信息(字符等),完成对应的指令操作。喂食器功能是驱动舵机(选择投喂的种类)和电机(主要是投放功能)。仅以智能双料喂食器为例部分代码片如下`在这里
while(1)
{
if(USART_RX_STA)
{
switch (USART_RX_BUF[0])
{
case 'a': //打开a孔放a料
TIM_SetCompare2( TIM3,750); //600 //舵机左转
GPIO_SetBits(GPIOB,GPIO_Pin_8); //启动电机旋转。
delay_ms(500);
TIM_SetCompare2( TIM3,1500); //复位舵机
USART_RX_STA=0;
break;
case 'd' : //打开b孔放b料
GPIO_SetBits(GPIOB,GPIO_Pin_8); //启动电机旋转。
TIM_SetCompare2( TIM3,2460); //舵机右转90’
delay_ms(500);TIM_SetCompare2( TIM3,1500);
USART_RX_STA=0;
break;
case 's' : //停止
printf("stop");
TIM_SetCompare2( TIM3,1500); delay_ms(500);
GPIO_ResetBits(GPIOB,GPIO_Pin_8);
USART_RX_STA=0;
break;
default :
printf("unknown");
TIM_SetCompare2( TIM3,1500); GPIO_ResetBits(GPIOB,GPIO_Pin_8);
USART_RX_STA=0;
break;
}
}
}
4. 手机端APP
使用我上传过的wifi小车app或其他的都可以手机端app
App是通过SOKET编程获取公网IP。在APP设置页面中,视频地址填写第2条中的外网访问地址,控制地址IP(需要在电脑上ping一下花生壳域名,出现的ip就是。有些公共场合ping不通,不影响使用)端口号为花生壳的端口号。
做完这些你就可以秀操作了。。。
注意:wifi模块在刚上电时会网络配置,乱发一堆数据。为防止主控卡死,可以设置一些延时(可能接近一分钟)或者先给模块上电再给主控上电。
本文地址:https://blog.csdn.net/weixin_43175701/article/details/83050717