【毕业设计】基于STM32的宠物自动喂食装置

目录

  • 修改记录
  • 1.摘要
  • 2.整体功能分析
  • 3.硬件选型
    • 3.1 ESP8266 WIFI模块
    • 3.2 STM32F103ZET6
    • 3.3 CLS150TD舵机
    • 3.4 压力传感器
    • 3.5 HX711 A/D模块
    • 3.6 供电及稳压
    • 3.7 硬件连接
  • 4.TLINK配置及软件实现
    • 4.1 TLINK物联网平台
      • 4.1.1 TLINK配置
      • 4.1.2 数据实时监测功能
      • 4.1.3 定时发送指令
      • 4.1.4 自动报警功能
    • 4.2 STM32部分软件功能的实现
      • 4.2.1 整体逻辑分析
      • 4.2.2 ESP8266连接TLINK平台
      • 4.2.3 串口接收与发送数据
      • 4.2.4 采集重量信息
      • 4.2.5 定时器输出PWM波
  • 5 测试与总结
    • 5.1 软硬件调试
      • 5.1.1 TLINK平台调试
      • 5.1.2 Stm32调试
    • 5.2 总结

修改记录

序号 修改时间 修改内容
1 2022-4-13 修改了硬件连接部分,串口引脚使用错误:从“PA1和PA2”更改为“PA2和PA3”,详细请见“3.7 硬件连接”

1.摘要

本论文设计了一款宠物自动喂食装置,该装置使用Stm32作为主MCU,通过ESP8266模块连接TLINK物联网平台,通过TLINK平台的手机APP查看宠物喂食的状态,并可以听过手机发送指令控制Stm32输出PWM波控制舵机旋转,实现宠物食物的投喂,同时也可以通过指令实现自动、定时、定量地喂养宠物。该系统的功能完善、价格低廉,使用方便,解决了宠物饲养者外出时的后顾之忧,还能保证宠物的进食有一定的规律性。
实现效果

【毕业设计】基于Stm32的宠物智能喂食装置

建模模拟效果

【毕业设计】基于STM32的宠物自动喂食装置

3.硬件选型

3.1 ESP8266 WIFI模块

ESP8266是WiFi串口模块,通过串口与Stm32相连接,可以实现的功能就是:从串口接收Stm32发送的数据,WiFi输出该数据;从WiFi接收到数据,通过串口将该数据发送给Stm32。ESP8266有三模式:AP模式、STA模式、AP+STA模式。实物如图所示。

【毕业设计】基于STM32的宠物自动喂食装置
本设计中Stm32部分主要使用串口跟定时器,来实现使用串口通过ESP8266 WIFI模块与TLINK平台进行数据交互、通过定时器输出PWM波控制舵机旋转,以实现宠物食物掉落的目的。
只强调一下,其引脚3.3v-5v耐压,过高的电压会烧掉其中的芯片。还有在本次设计中所用到的引脚:PB1、PB2、P31、PA2、PC6五个功能引脚,以及5V、GND供电引脚。

3.3 CLS150TD舵机

舵机选用达盛舵机科技有限公司生产的CLS150TD型号的舵机,实物图及尺寸如图3.5所示。该型号舵机运行温度在-15℃~70℃,工作电压范围为4.8v-6.8v,驱动方式为PWM波,脉冲范围为500~2500 μsec,控制角度为:360°。

【毕业设计】基于STM32的宠物自动喂食装置

3.4 压力传感器

压力传感器选用电阻应变式压力传感器,以电阻应变计为转换元件,由弹性敏感元件、电阻应变计、补偿电阻和外壳组成,弹性敏感元件受到所测量的力而产生变形,并使附着其上的电阻应变计一起变形。电阻应变计再将变形转换为电阻值的变化,从而可以测量压力的变化,再通过A/D转换模块,即可得到被测物体的重量。所需接线的引脚为:EXC+、EXC-、SIC+、SIC-。实物图、引脚如图所示。

【毕业设计】基于STM32的宠物自动喂食装置

3.5 HX711 A/D模块

A/D模块选用HX711芯片,主要实现将压力传感器检测到的电压信号转换成STM32可读的数字信号。所需连接的引脚:AVDD引脚、GND引脚、INA+引脚、INA-引脚、DT引脚、SCK引脚、VCC引脚。HX711模块实物图如图所示。

【毕业设计】基于STM32的宠物自动喂食装置

因为HX711模块、舵机、STM32都不能直接11.1v电压,所以需要对电压进行稳压到5v,才能给它们供电,使用稳压板进行稳压,稳压板选用基于LM2596芯片的 DC-DC稳压模块,稳压板的输入端连接3S锂电池,用电压表测量输出端电压,用螺丝刀旋转稳压板上的变阻器,直到输出端输出电压为5v即可。而ESP8266则需要3.3v供电,所以需要再加一个稳压板将5v电压降到3.3v即可。稳压板实物如图所示。

【毕业设计】基于STM32的宠物自动喂食装置

【毕业设计】基于STM32的宠物自动喂食装置

【毕业设计】基于STM32的宠物自动喂食装置
在设置连接页面中,可以在此进行传输协议的选择和自定义协议格式。如图所示,我选择的是使用TCP协议进行数据传输,同时将传输协议定义为:

[H:ZLJ] [S::] [D[S:;] [D[S:;] [D[S:;] [T:#]

其中[H:]表示数据头标签,[H:ZLJ]则表传输的数据以ZLJ开始。
[S:]表示分隔符标签,[S::]、[S:;]则表示使用“:”、“;”分隔数据。
[D表示数据标签,表示需要赋值给传感器的数据,在这个协议中的三个[D依次代表赋值给食物剩余量、投喂食物量、开始喂食三个传感器。
[T:]表示结束符标签,[T:#]则表示传输的数据以“#”结束。
例如,通过STM32给TLINK平台发送ZLJ:120;100;0;#,则表示为当前食物的剩余量为120克,投喂食物量为100克,开始喂食为OFF。

4.1.2 数据实时监测功能

可以通过手机或是电脑实时观战接收到的数据,并会可以自动的生成折线图,可以更加直观的观察食物的剩余量。同时可以电脑端给MCU发送数据以及操作指令使其完成相应的动作。手机APP远程查看如图所示。

【毕业设计】基于STM32的宠物自动喂食装置

4.1.4 自动报警功能

TLINK平台支持报警设置,可以自己设定剩余的食物低于某个值时,进行微信或是短信提醒。如图4.6所示。同时也可以设置自动进行相应的动作,例如,可以设置当剩余的食物量小于20克时,微信和短信报警提醒并进行投食动作。如图所示。

【毕业设计】基于STM32的宠物自动喂食装置

4.2 STM32部分软件功能的实现

4.2.1 整体逻辑分析

首先对STM32部分实现功能的整体逻辑进行分析,首先进行系统时钟的初始化,确保STM32的时钟周期正常运行。其次进行串口2的初始化,确保串口2可以正常的接收数据。然后进行HX711模块的初始化,确保HX711模块可以正常工作,进行可以得到压力传感器测量出的食物的重量。而后进行中断优先级的初始化,本程序中主要用到了串口2的接收中断,所以只需要配置串口2的中断优先级。接着进行定时器3初始化,确保定时器3的通道1可以输出PWM波控制舵机旋转。舵机回归初始位置,能够使装置上电后,舵机回到初始位置。最后称取毛皮重量。判断串口是否接收到数据。若串口接收到数据,则进入串口中断,执行相应的程序。反之,则进行循环:称重—>给TLINK平台发送数据—>延时1秒。整体流程图如图所示。其次对使用ESP8266连接TLINK平台、控制舵机旋转、HX711模块得到重量的功能进行独立的分析。

【毕业设计】基于STM32的宠物自动喂食装置

1.串口与ESP8266连接:串口的RX与ESP8266的TX相连,串口的TX与8266的RX相连。
2.判断是否连接成功:通过串口给ESP8266发送AT,如果连接成功ESP8266会返回“ok”,否则等待直到连接成功。程序如下:

3.发送指令将8266设置为STA模式:通过串口发送AT指令:AT+CWMODE=1,即可将其设置为STA模式。部分程序如下:

4.发送8266所要连接的WIFI名及密码:通过串口发送AT指令:AT+CWJAP=“所要连接的WIFI名”,“WIFI的密码”。程序如下:

5.建立TCP连接:通过串口发送AT指令:AT+CIPSTART=“TCP”,“TLINK的IP地址”,端口号。部分程序如下:

6.进入透传模式:通过串口发送AT指令:AT+CIPMODE=1、AT+CIPSEND,即可进入透传模式。透传模式下,可以直接输送数据,无需使用AT+CIPSEND指令。部分程序如下:

7.发送设备的序列号:通过串口发送所要连接的设备的序列号,进行连接。每个设备的序列号是唯一的。程序如下:

来源:番杰

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年3月10日
下一篇 2022年3月10日

相关推荐