1. 前言

随着物联网技术的快速发展,智能家居已经进入人们的日常生活中,在政策加持的背景下,智能家居企业越来越关注相关技术的研发和应用;但是市场上的宠物投喂装置已经难以满足宠物主人的需求。文章介绍的宠物智能投喂装置是以STM32为核心,多个模块协调配合,共同完成针对不同年龄段的宠物进行定时定量投喂及实时环境监测与高温报警、以及主人随时可以通过智能设备了解宠物生活环境、为宠物加餐等功能。该系统的功能完善、价格低廉,使用方便,解决了宠物饲养者外出时的后顾之忧,还能保证宠物的进食有一定的规律性。

设计了一个宠物投喂器,支持手动控制粮食投喂,设置恒温阀值,定时投喂、温度、湿度实时显示、剩余粮食重量等功能。

2. 需求

做一个基于STM32的宠物投喂器,可以用来主要养鸟或者小黄鸭这种宠物。

主要功能有:

1、能通过手机wifi app跟按键控制粮食的投喂。定时投喂、每次投喂量(若没吃完,则下次补充到设定好的量,补充量不需要那么准确)

2、记录每天宠物的食量(已经食用粮食的重量)

3、屏幕显示当前盒子/鸟笼内的温度,粮食的重量

4、温控:当温度低于多少度时候(自己设定)就自动启动恒温器(就简单的一个自动开关就行)。

需求分拆:

(1)手机APP:设计一款Android手机APP,一款windows客户端作为上位机,手动控制粮食投喂,设置恒温阀值,定时投喂、温度、湿度实时显示、剩余粮食重量等功能。

手机APP与STM32之间通过TCP网络协议传输数据,STM32这边使用ESP8266作为无线网卡,创建WIFI热点,手机APP连接热点后构建小型局域网,完成数据通信。

(2)采用DHT11检测当前鸟笼里环境温度、湿度。

(3)采用0.96寸SPI接口的OLED显示屏,显示当前鸟笼的温度、湿度、粮食重量。

(4)采用LED灯模拟恒温器,当鸟笼里环境温度低于设定的阀值时,就启动恒温器加热(点亮LED模拟)。

(5)宠物投喂采用28BYJ4 4相5线步进电机+ULN2003驱动板实现,步进电机转动指定的圈数或者度数模拟粮食的投喂。

(6)投喂粮食的重量采用HX711称重传感器电子秤称重模块完成检测。

3. 所需元器件

3.1 ESP8266 WIFI

ESP8266是一款无线WIFI模块,可以通过配置,和单片机上的串口进行通信,利用WIFI传输数据。

3.2 电子秤传感器

HX711 是一款专为高精度称重传感器而设计的24位A/D 转换器芯片。

3.3 DHT11温湿度传感器

DHT11是一款有已校准数字信号输出的温湿度传感器。 其精度湿度±5%RH, 温度±2℃,量程湿度5~95%RH, 温度-20~+60℃。

3.4 步进电机

步进电机28BYJ-48名称含义:28:表示步进电机的有效最大外径为28毫米
B: 表示步进电机“步”字汉语拼音首字母
Y: 表示永磁式“永”字汉语拼音首字母
J: 表示减速型“减”字汉语拼音首字母
BYJ: 组合即为永磁式减速步进电机
48:表示四相八拍
5V:表示额定电压为5V,且为直流电压步进角:5.625度,就是1个脉冲信号转5.625度,64个信号转360度。
减速比:1/64,电机壳里边的电机转64圈,电机壳外边的部分转1圈。
四相:ABCD四相(电机定子上有8个齿,相对的2个齿是1),
八拍:(A-AB-B-BC-C-CD-D-DA-A)。
一拍就是一个脉冲信号,完成一个循环用8个脉冲信号。
当通电状态的改变完成一个循环时,转子转过一个齿距。转8个齿距就是一圈,8×8=64
64拍,64个脉冲信号转一圈360度。

3.6 STM32开发板

STM32F103RCT6的芯体规格是32位,速度是72MHz,程序存储器容量是256KB,程序存储器类型是FLASH,RAM容量是48K。

3.7 杜邦线

4. 软件上位机设计

4.1 开发环境介绍

上位机软件采用Qt框架设计,Qt是一个跨平台的C++图形用户界面应用程序框架。Qt是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。简单来说,QT可以很轻松的帮你做带界面的软件,甚至不需要你投入很大精力。

QT官网: https://www.qt.io/

4.2 学习教程

QT入门实战专栏: https://blog.csdn.net/xiaolong1126626497/category_11400392.html

4.3 win10运行效果

4.4 Android运行效果

4.5 通信协议

读取ESP8266发来的数据
$update,22,33,12
$update,温度,湿度,剩余克数向ESP8266发送:
手动喂食: $0
定时投喂时间设置: $1,2
恒温温度设置: $2,22

5. STM32设备端开发

基于STM32设计的宠物投喂器

基于STM32设计的宠物投喂器_上位机源码:https://download.csdn.net/download/xiaolong1126626497/85736919
基于STM32设计的宠物投喂器_STM32源代码 https://download.csdn.net/download/xiaolong1126626497/85736953

5.1 设备实物

5.2 硬件接线说明

硬件连接方式:1. ESP8266 WIFI接线
ATK-ESP8266串口WIFI模块与STM32的串口2相连接。
PA2(TX)--RXD 模块接收脚
PA3(RX)--TXD 模块发送脚
GND---GND 地
VCC---VCC 电源(3.3V~5.0V)2. TFT 1.44 寸彩屏接线
GND   电源地
VCC   接5V或3.3v电源
SCL   接PC8(SCL)
SDA   接PC9(SDA)
RST   接PC10
DC    接PB7
CS    接PB8
BL    接PB113. DHT11 温湿度
VCC--VCC
GND---GND
DAT---PA5 4. 步进电机
ULN2003控制28BYJ-48步进电机接线:ULN2003接线:IN-D: PB15   dIN-C: PB14   cIN-B: PB13   bIN-A: PB12   a
+  : 5V
-  : GND5. 称重传感器
VCC--->5V
SCK--->PB0   时序控制脚--对STM32--输出模式
DT---->PB1   输出输出脚-对STM32--输入模式
GND--->GND6. 板载LED灯接线
LED1---PA8
LED2---PD27. 板载按键接线
K0---PA0
K1---PC5
K2---PA15

5.3 工程代码框架

5.4 main.c核心代码

#include "stm32f10x.h"
#include "led.h"
#include "delay.h"
#include "key.h"
#include "usart.h"
#include <string.h>
#include "timer.h"
#include "esp8266.h"
#include "motor.h"
#include "oled.h"
#include "dht11.h"
#include "adc.h"
#include <string.h>
#include <stdlib.h>
#include "HX711.h"//JTAG模式设置,用于设置JTAG的模式
//mode:jtag,swd模式设置;00,全使能;01,使能SWD;10,全关闭;
#define JTAG_SWD_DISABLE   0X02
#define SWD_ENABLE         0X01
#define JTAG_SWD_ENABLE    0X00
void JTAG_Set(u8 mode)
{u32 temp;temp=mode;temp<<=25;RCC->APB2ENR|=1<<0;     //开启辅助时钟AFIO->MAPR&=0XF8FFFFFF; //清除MAPR的[26:24]AFIO->MAPR|=temp;       //设置jtag模式
}u8 temp;
u8 humidity;
u32 CurrentWeight=5; //默认重量值
u8 timer_hour=1; //定时投喂的时间
u8 SetTemperature=0; //设置恒温温度//WIFI发送数据存储区域
char data_buff[300];int main()
{u8 esp8266_state=0;u8 key;u8 i;u32 time_cnt=0;u32 timer_hour_cnt=0; //记录定时的时间JTAG_Set(JTAG_SWD_DISABLE); //释放PA15LED_Init();KEY_Init();USART1_Init(115200);Moto_Init();  //电机初始化USART2_Init(115200);//串口-WIFITIMER2_Init(72,20000); //超时时间20msDHT11_Init();      //初始化DHT11Lcd_Init(); //LCD初始化Lcd_Clear(0); //清屏为黑色LCD_LED_SET;//通过IO控制背光亮Init_HX711pin(); //称重传感器printf("正在初始化WIFI请稍等.\r\n");for(i=0;i<5;i++){if(ESP8266_Init()==0){esp8266_state=1;break;}else{esp8266_state=0;printf("ESP8266硬件检测错误.\r\n");  }}if(esp8266_state){printf("准备创建热点....\r\n");//配置ESP8266创建的WIFI名称和WIFI密码,手机需要连接这个WIFI热点printf("WIFI状态:%d\r\n",ESP8266_AP_TCP_Server_Mode("esp8266_666","12345678",8089));}Get_Maopi();              //称毛皮重量delay_ms(1000);delay_ms(1000);Get_Maopi();             //重新获取毛皮重量while(1){//按键可以测试投喂食物key=KEY_Scan(0);if(key==2){Motorcw_ring(1,300);   //电机正转1圈--模拟投喂粮食printf("启动步进电机投喂食物...\r\n");}else if(key==3){Lcd_Clear(0); //清屏为黑色LED2=!LED2;} //轮询时间到达if(time_cnt>=100){time_cnt=0;LED1=!LED1;//获取环境温湿度if(DHT11_Read_Data(&temp,&humidity)){printf("温度读取失败.\r\n");}printf("环境温度:%d\r\n环境湿度:%d\r\n",temp,humidity);//获取称重传感器反馈的重量Get_Weight();printf("净重量 = %d g\r\n",Weight_Shiwu); //打印//LCD屏实时显示温湿度、称重信息sprintf(data_buff,"H:%d",humidity);Gui_DrawFont_GBK16(0,16*1,RED,GRAY0,(u8*)data_buff);sprintf(data_buff,"T:%d",temp);Gui_DrawFont_GBK16(0,16*2,RED,GRAY0,(u8*)data_buff);sprintf(data_buff,"G:%d",Weight_Shiwu);Gui_DrawFont_GBK16(0,16*3,RED,GRAY0,(u8*)data_buff);//传给手机APP实时显示//$update,22,33,12  CurrentWeight//$update,温度,湿度,剩余克数sprintf(data_buff,"$update,%d,%d,%d",temp,humidity,CurrentWeight);//发送数据ESP8266_ServerSendData(0,(u8*)data_buff,strlen(data_buff));}// 接收WIFI返回的数据if(USART2_RX_FLAG){USART2_RX_BUFFER[USART2_RX_CNT]='\0';printf("WIFI收到数据:\r\n");//向串口打印服务器返回的数据for(i=0;i<USART2_RX_CNT;i++){printf("%c",USART2_RX_BUFFER[i]);}//如果是下发了属性if(USART2_RX_CNT>5){//使用字符串查找函数//如果需要手动投喂粮食if(strstr((char*)USART2_RX_BUFFER,"$0")){Motorcw_ring(1,300);   //电机正转1圈--模拟投喂粮食}//如果是设置定时投喂的时间(小时)//格式: 定时投喂时间设置: $1,2else if(strstr((char*)USART2_RX_BUFFER,"$1")){char *p=strstr((char*)USART2_RX_BUFFER,"$2");//转为整数timer_hour=atoi(p+3);printf("定时投喂的时间:%d\r\n",timer_hour);}//如果是设置恒温器的温度//格式: 恒温温度设置: $2,22else if(strstr((char*)USART2_RX_BUFFER,"$2")){char *p=strstr((char*)USART2_RX_BUFFER,"$2");//转为整数SetTemperature=atoi(p+3);printf("设置恒温温度为:%d\r\n",SetTemperature);}USART2_RX_CNT=0;USART2_RX_FLAG=0;}}//判断是否需要加热//如果环境温度小于了设置的恒温温度就加温if(temp<SetTemperature){//执行加温的代码----}//判断定时的时间是否到达if(timer_hour_cnt >=(100*60*60)*timer_hour){timer_hour_cnt=0; //重新下一次计数Motorcw_ring(1,300);  //电机正转1圈--模拟投喂粮食}DelayMs(10);time_cnt++;timer_hour_cnt++;}
}

基于STM32设计的宠物投喂器相关推荐

  1. 毕业设计 基于STM32的智能宠物投喂系统(全套资料)

    文章目录 0 前言 1 系统说明 2 背景意义 3 系统设计 3.1 总体方案 3.2 硬件设计 3.2.1 STC89C52 3.2.2 CLS150TD舵机 3.2.3 压力传感器 3.2.4 H ...

  2. 最新毕设 基于STM32的智能宠物投喂系统(全套资料)

    文章目录 0 前言 1 系统说明 2 背景意义 3 系统设计 3.1 总体方案 3.2 硬件设计 3.2.1 STC89C52 3.2.2 CLS150TD舵机 3.2.3 压力传感器 3.2.4 H ...

  3. 毕设分享 基于STM32的智能宠物投喂系统(全套资料)

    文章目录 0 前言 1 系统说明 2 背景意义 3 系统设计 3.1 总体方案 3.2 硬件设计 3.2.1 STC89C52 3.2.2 CLS150TD舵机 3.2.3 压力传感器 3.2.4 H ...

  4. 基于STM32的智能宠物看护喂养系统(程序源码+原理图+PCB+Boom表+实物操作说明)

    基于STM32的智能宠物看护喂养系统(程序源码+原理图+PCB+Boom表+实物操作说明) **0  引言** 随着我国经济的快速发展,人们的生活水平不断提高,饲养宠物已经成为成为一种潮流.目前,市场 ...

  5. 基于STM32设计的健康检测设备(测温心率计步)

    1. 项目介绍 本文介绍的项目是基于STM32设计的健康检测设备,支持体温测量,心率检测,支持运动计步(采用MPU6050陀螺仪实现),支持WIFI传输数据到手机APP打印显示. 硬件环境介绍: MC ...

  6. 基于STM32设计的指针式电子钟与万年历

    1. 项目简介 这是基于STM32设计的一个指针式电子钟+万年历小项目,采用3.5寸的LCD屏显示时钟,日历.温度.天气,支持触摸屏调整设置时间,设置闹钟,查看日历等等.整体项目主要是技术点就是LCD ...

  7. 基于STM32设计的小说阅读器(翻页、字体切换、颜色切换、语音播报)

    一.环境介绍 小车主控MCU: STM32F103ZET6 STM32程序开发IDE: keil5 STM32程序风格:  采用寄存器方式开发,注释齐全,执行效率高,方便移植 硬件包含:  一块STM ...

  8. 基于51单片机定时宠物投喂自动喂食器

    资料编号:143 视频讲解: 143-基于51单片机的定时宠物投喂自动喂食器(源程序+原理图+PCB+全套毕设资料) 题目要求:设计一个基于51单片机的宠物自动投喂装置 具体要求: 1.可以定时进行投 ...

  9. C#笔记——【面向对象实战】(一)基于OPP设计新体育彩票选号器

    (一)项目概述和效果展示 (二)项目面向对象分析 1)基于OOP(面向对象编程)设计项目的基本方法 项目的类型 基于OOP设计小型项目(可以使用数据库,也可以不使用数据库而采用其他数据源) 没有数据库 ...

  10. 基于STM32设计的人体健康监护系统(华为云IOT)

    一.设计需求 1.1 设计需求总结 根据需求,要求设计一款基于 STM32 的人体健康监护系统.采用系统模块化思路进行,将多个数模传感器收集到的数据和操作指令一并送至 STM32 中心处理器进行处理分 ...

最新文章

  1. ubuntu/linuxmint如何添加和删除PPA源
  2. c# dbgrid数据导出到xlsx和ini中实例
  3. 为 ActionScript 导出库元件
  4. Python入门100题 | 第044题
  5. 2019年CNCF中国云原生调查报告
  6. SQL Server 2008 性能测试和调优
  7. c语言锁屏密码程序,求一个VB锁屏程序的源文件
  8. Hive表 Parquet压缩 , Gzip,Snappy,uncompressed 效果对比
  9. python的实例属性_python 实例属性和类属性
  10. 漫画家Neal Adams推出以蝙蝠侠等超级英雄为主题的NFT
  11. 菜鸟涂鸦作品展_No.1
  12. 行为驱动开发BDD和Cucunber简介
  13. sitemap.xml文件生成工具
  14. Linux由管道组成的值得学习的命令
  15. CAS3.5.x(x1)支持OAuth2 server
  16. 【你也能看得懂的电磁场与电磁波系列连载 12】
  17. ambarella H2 添加文件到ext4文件系统
  18. 逆向工程学习笔记#1——概况篇
  19. WebView-WebView状态和加载方式
  20. cross_val_score中scoring参数

热门文章

  1. Unity3D 一些工具总结
  2. OA与EHR系统集成方案
  3. kettle和spoon ETL数据同步工具
  4. PO系列之 使用XPI_INSPECTOR跟踪PO报错
  5. Mariadb 安装FederatedX引擎
  6. 城市数据派(多尺度地理加权回归理论与应用——关于地理加权回归GWR和多尺度地理加权回归MGWR)
  7. HTML网页设计制作大作业 - 绿色环境保护HTML5网站模板(4个页面)
  8. MATLAB - 线型、Marker点等属性的设置
  9. java制作手机投射电脑_Android手机屏幕投射到电脑神器Vysor
  10. mysql 计算信度_解析组合信度CR、AVE值如何计算_组合信度cr