| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> 【毕业设计】基于STM32的宠物自动喂食装置 -> 正文阅读 |
|
[嵌入式]【毕业设计】基于STM32的宠物自动喂食装置 |
1.摘要??本论文设计了一款宠物自动喂食装置,该装置使用Stm32作为主MCU,通过ESP8266模块连接TLINK物联网平台,通过TLINK平台的手机APP查看宠物喂食的状态,并可以听过手机发送指令控制Stm32输出PWM波控制舵机旋转,实现宠物食物的投喂,同时也可以通过指令实现自动、定时、定量地喂养宠物。该系统的功能完善、价格低廉,使用方便,解决了宠物饲养者外出时的后顾之忧,还能保证宠物的进食有一定的规律性。 【毕业设计】基于Stm32的宠物智能喂食装置 建模模拟效果 ??我会把我做该毕业设计的整体思路以及部分的主要代码在文章中详细介绍,包括Soildworks建模部分。 若是你很懒,不想自己一步一步自己做的话,可以直接去下载论文和源代码。 (温馨提示:是要花钱的哦,我觉得你看完这篇文章完全可以自己做出来的,没必要花钱的,所以请一定要仔细看下去哦!) 2.整体功能分析??完成一个好的设计是要在实现了它的功能的基础上,所以在进行设计之前需要确定一下本设计要实现的功能,然后再进行相应的设计。在本设计中使用TLINK物联网平台通过ESP8266与Stm32进行数据交互,Stm32作为主控制MCU去控制舵机旋转,可以使宠物的食物顺利掉出。整体的功能流程如图2.1所示。 3.硬件选型3.1 ESP8266 WIFI模块??ESP8266是WiFi串口模块,通过串口与Stm32相连接,可以实现的功能就是:从串口接收Stm32发送的数据,WiFi输出该数据;从WiFi接收到数据,通过串口将该数据发送给Stm32。ESP8266有三模式:AP模式、STA模式、AP+STA模式。实物如图所示。 3.2 STM32F103ZET6??本次设计中使用STM32F103ZET6最小系统板作为核心MCU,实物如图3.3所示。使用其他的芯片已ok的。 3.3 CLS150TD舵机??舵机选用达盛舵机科技有限公司生产的CLS150TD型号的舵机,实物图及尺寸如图3.5所示。该型号舵机运行温度在-15℃~70℃,工作电压范围为4.8v-6.8v,驱动方式为PWM波,脉冲范围为500~2500 μsec,控制角度为:360°。 ??工作原理:通过给舵机的信号线(橙黄色)输入周期为20ms的PWM波,通高电平时间:0.5-2.5ms可以使舵机旋转0~360°。如图所示。 3.4 压力传感器??压力传感器选用电阻应变式压力传感器,以电阻应变计为转换元件,由弹性敏感元件、电阻应变计、补偿电阻和外壳组成,弹性敏感元件受到所测量的力而产生变形,并使附着其上的电阻应变计一起变形。电阻应变计再将变形转换为电阻值的变化,从而可以测量压力的变化,再通过A/D转换模块,即可得到被测物体的重量。所需接线的引脚为:EXC+、EXC-、SIC+、SIC-。实物图、引脚如图所示。 3.5 HX711 A/D模块??A/D模块选用HX711芯片,主要实现将压力传感器检测到的电压信号转换成STM32可读的数字信号。所需连接的引脚:AVDD引脚、GND引脚、INA+引脚、INA-引脚、DT引脚、SCK引脚、VCC引脚。HX711模块实物图如图所示。 3.6 供电及稳压??供电使用3S锂电池作为整体装置的供电,3S锂电池可以提供11.1v的电压。3S锂电池实物如图所示。 ??因为HX711模块、舵机、STM32都不能直接11.1v电压,所以需要对电压进行稳压到5v,才能给它们供电,使用稳压板进行稳压,稳压板选用基于LM2596芯片的 DC-DC稳压模块,稳压板的输入端连接3S锂电池,用电压表测量输出端电压,用螺丝刀旋转稳压板上的变阻器,直到输出端输出电压为5v即可。而ESP8266则需要3.3v供电,所以需要再加一个稳压板将5v电压降到3.3v即可。稳压板实物如图所示。 3.7 硬件连接??硬件连接部分使用杜邦线连接,连接如下:3S锂电池接稳压板1的输入端,稳压板1的输出端接STM32的5V和GND引脚、舵机的正(红色)负(棕色)极、HX711模块的VCC与GND引脚以及稳压板2的输入端。HX711的DT引脚接STM32的PB1引脚、SCK引脚接STM32的PB0引脚,STM32的PC6引脚(定时器3通道1)接舵机的信号线(橙黄色)、PA1引脚接ESP8266的RX引脚、PA2接ESP8266的TX引脚。稳压板2的输出端接ESP8266的3.3V和GND引脚。接线示意图、Solidworks建模图如图所示。 4.TLINK配置及软件实现??本部分主要介绍TLINK物联网平台配置以及STM32部分的软件编程,在TLINK官方网站进行平台的配置,实现数据的数据实时监测功能、定时发送指令、自动报警功能。STM32部分主要实现功能:使用串口连接ESP8266与TLINK平台进行数据交互、通过定时器输出PWM波、以及实现控制舵机旋转追踪的目的。 4.1 TLINK物联网平台??本部分主要是进行TLINK平台的配置,在建立好一个设备与STM32进行数据交互。并介绍TLINK平台所要实现的功能:数据实时监测功能、定时发送指令、自动报警功能。 4.1.1 TLINK配置??首先简单叙述一下在TLINK平台新建一个新设备的流程,然后再具体的去介绍每一步的如何操作,添加设备的流程一般如下:先点击添加设备,然后在添加设备的页面设置分组、设置设备名称、选择链接协议、设置掉线延时、添加传感器配置完这些参数后,点击保存,一个新的设备就添加完成了,但是想要使用这个新的设备还需要进行传输协议的选择和定义,点击设置连接,在其中选择想要的传输协议与定义协议格式即可。流程图如图所示。
其中[H:]表示数据头标签,[H:ZLJ]则表传输的数据以ZLJ开始。 4.1.2 数据实时监测功能??可以通过手机或是电脑实时观战接收到的数据,并会可以自动的生成折线图,可以更加直观的观察食物的剩余量。同时可以电脑端给MCU发送数据以及操作指令使其完成相应的动作。手机APP远程查看如图所示。 4.1.3 定时发送指令??可以通过TLINK平台设置定时向MCU发送指令或是数据,使其做出相应的动作。这样就可以通过定时使喂食装置每天按时投喂,避免忘记。我这里设置为每天中午的12点,TLINK平台会给STM32发送一个“FEED_ON”,当STM32接收到数据时,进入串口中断,输出PWM波,控制舵机旋转,使食物可以掉落到碗中,以实现定时喂食的功能。如图所示。 4.1.4 自动报警功能??TLINK平台支持报警设置,可以自己设定剩余的食物低于某个值时,进行微信或是短信提醒。如图4.6所示。同时也可以设置自动进行相应的动作,例如,可以设置当剩余的食物量小于20克时,微信和短信报警提醒并进行投食动作。如图所示。 4.2 STM32部分软件功能的实现4.2.1 整体逻辑分析??首先对STM32部分实现功能的整体逻辑进行分析,首先进行系统时钟的初始化,确保STM32的时钟周期正常运行。其次进行串口2的初始化,确保串口2可以正常的接收数据。然后进行HX711模块的初始化,确保HX711模块可以正常工作,进行可以得到压力传感器测量出的食物的重量。而后进行中断优先级的初始化,本程序中主要用到了串口2的接收中断,所以只需要配置串口2的中断优先级。接着进行定时器3初始化,确保定时器3的通道1可以输出PWM波控制舵机旋转。舵机回归初始位置,能够使装置上电后,舵机回到初始位置。最后称取毛皮重量。判断串口是否接收到数据。若串口接收到数据,则进入串口中断,执行相应的程序。反之,则进行循环:称重—>给TLINK平台发送数据—>延时1秒。整体流程图如图所示。其次对使用ESP8266连接TLINK平台、控制舵机旋转、HX711模块得到重量的功能进行独立的分析。 4.2.2 ESP8266连接TLINK平台??此部分主要是通过串口发送AT指令给ESP8266,以实现ESP8266与TLINK平台的连接。主要流程为:串口与ESP8266连接、判断是否连接成功、发送指令将8266设置为STA模式、发送8266所要连接的WIFI名及密码、建立TCP连接、进入透传模式、发送设备的序列号、传输数据。具体流程图如图所示。 ??1.串口与ESP8266连接:串口的RX与ESP8266的TX相连,串口的TX与8266的RX相连。
??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.发送设备的序列号:通过串口发送所要连接的设备的序列号,进行连接。每个设备的序列号是唯一的。程序如下:
??8.传输数据:通过串口发送想要发送的数据,数据的形式要按照自己定义的传输协议去写。程序如下:
4.2.3 串口接收与发送数据??本部分程序主要为串口初始化,以及串口中断函数的编写,主要实现Stm32通过串口2接收TLINK平台发送来的数据。当串口2接收到数据时,会进入串口2中断,运行串口中断内的程序。使用库函数编程,部分程序如下。
??以上部分为串口2的初始化部分,在串口2接收到TLINK平台发来的数据后,进入串口中断,在串口中断中执行相应的程序,部分程序如下:
4.2.4 采集重量信息??本部分程序主要为通过HX711模块将压力传感器输出的模拟信号转换为Stm32可读的数字信号。本文中HX711模块输入通道使用A通道,增益为128。程序如下:
??经过以上程序得到的数字值后,需要将此值转换为重量值,此部分程序如下:
4.2.5 定时器输出PWM波??本部分程序主要为定时器3通道1的初始化,并使用Stm32的固件库中函数TIM_SetCompare1(TIM_TypeDef* TIMx, uint16_t Compare1)输出PWM波,使舵机旋转。该函数有两个参数,第一个参数为定时器号,第二个参数为占空比的参数。部分程序如下。
??以上部分为定时器3通道1的初始化部分,可以通过下面的setFEED()子函数控制舵机旋转合适的角度。
5 测试与总结5.1 软硬件调试5.1.1 TLINK平台调试??TLINK平台的调试主要通过网络调试助手通过TCP连接,查看是否可与TLINK进行数据的交互,首先使用网络调试助手连接TLINK平台,连接成功后,通过网络调试助手向TLINK发送连接设备的唯一序列号,连接后,便可进行数据交互。结果如图所示。 5.1.2 Stm32调试??Stm32部分的调试则在Keil中使用Debug完成的,通过连接CMSIS-DAP无线仿真器进行在线的调试。可以查看Stm32是否连接上ESP8266、是否可以连接上WiFi、是否连接到TLINK平台、是否可以与TLINK平台进行数据交互以及是否可以输出PWM波。 5.2 总结??本次毕业设计还存在着一次缺陷,比如在3D打印的部分,由于3D打印机的精度不够高,导致打印出的成品,有些粗糙,会给压力传感器的测量带来问题,以后争取改进! |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 8:36:11- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |