首页 > 分享 > 基于STM32+JAVA宠物管理系统的设计与实现

基于STM32+JAVA宠物管理系统的设计与实现

【摘要】 本系统主要是由RFID自动识别技术,通过无线射频方式对宠物的电子标签进行读取,获取宠物的基本信息和在店内的所有消费,然后将数据通过网络传输至服务器。在应用层开发一个管理系统,对宠物信息、店内消费等各种行为进行管理。同时系统需有登录注册功能,宠物信息管理,店内消费管理等功能。

一、设计需求

本系统主要是由RFID自动识别技术,通过无线射频方式对宠物的电子标签进行读取,获取宠物的基本信息和在店内的所有消费,然后将数据通过网络传输至服务器。在应用层开发一个管理系统,对宠物信息、店内消费等各种行为进行管理。同时系统需有登录注册功能,宠物信息管理,店内消费管理等功能。

宠物店管理系统主要分为以下模块:

1.RFID模块:由天线和射频电路组成,通过自动识别电子标签,采集数据,采用RFID封装技术将其封装,并传输给服务器。

2.电子标签模块:接收外部信号和发送信号

3.店铺管理模块:管理员可以对店铺商品进行增删改操作,修改、删除顾客宠物信息以及店内消费行为。

4.登录注册模块:新用户可以进行注册和登录5.用户管理模块:对注册用户进行管理

二、设计需求总结

整个系统的设计:

(1). 宠物店每来一个新的宠物,就在软件端进行注册、注册时填入宠物的名称,宠物的类型,主人的电话号码、选择一张宠物的图片方便后面展示(图片可以预存几张猫、狗即可)、如果宠物后面在店里有消费也会记录包含时间,这些数据都保存在软件端的数据库里。

(2). 开卡: 新宠物注册之后,需要为这个宠物办理一张电子标签卡,这个卡里存放着这个宠物主人的电话号码,后面要查询这个宠物的信息,就读取整个电子标签里的电话号码,到数据库里查询。

(3). 开卡和查询的数据传输: 设备端与软件端采用 TCP网络方式进行通信;设备端当做TCP客户端,软件端当做TCP服务器;当设备端查询宠物的电子标签时,设备端读取电话号码之后,会通过约定的数据格式通过网络传递给软件端。 当软件端开卡注册时,也会用约定好的数据格式传递给设备端,如果设备端收到数据,开发板上的LED会点亮;这时把IC拿到RC522射频模块上刷一下即可;如果成功写入LED灯就会关闭。

(4). 软件端的设计(这个软件是给店家用的,功能都是针对店家这边方向开发):

有注册界面、登录界面;

主界面上显示店内有所有注册过的宠物信息,每个宠物有图片进行显示、宠物图片下面就显示宠物的名称;

商品界面: 展示一些狗粮、猫粮、药剂、一些宠物周边物品。 用于演示消费功能。 可以预定几个商品即可。 用户可以自己动态添加修改。

管理员界面: 可以对店内的商品进行添加、设计价格、修改宠物的信息等。

查询页面: 输入宠物信息可以查询这个宠物在店里的所有详细信息。

设备硬件部分:

这里的硬件刷卡部分采用的使用STM32开发的,更加灵活方便,完成对IC卡读写通过网络与JAVA服务器通信,也可以换成扫码枪之类的其他设备。

1. RC522刷卡模块负责对卡进行读写。

2. ESP8266WIFI初始化工作在STA模式,连接到指定WIFI,与软件所在的电脑处于同一个局域网,方便连接软件端的服务器进行数据通信,每次设备开机将会自动连接到程序里设置好WIFI热点和服务器。

3. 设备端上有一个LED灯,用来显示刷卡的状态—成功与否。

三、硬件设备效果图与部分核心代码

img img img

#include 'esp8266.h'

u8 ESP8266_IP_ADDR[16]; //255.255.255.255

u8 ESP8266_MAC_ADDR[18]; //硬件地址

/*

函数功能: ESP8266命令发送函数

函数返回值:0表示成功  1表示失败

*/

u8 ESP8266_SendCmd(char *cmd)

{

    u8 i,j;

    for(i=0;i<10;i++) //检测的次数--发送指令的次数

    {

        USARTx_StringSend(USART3,cmd);

        for(j=0;j<100;j++) //等待的时间

        {

            delay_ms(50);

            if(USART3_RX_FLAG)

            {

                USART3_RX_BUFFER[USART3_RX_CNT]='';

                USART3_RX_FLAG=0;

                USART3_RX_CNT=0;

                if(strstr((char*)USART3_RX_BUFFER,'OK'))

                {

                    return 0;

                }

            }

        }

    }

    return 1;

}

/*

函数功能: ESP8266硬件初始化检测函数

函数返回值:0表示成功  1表示失败

*/

u8 ESP8266_Init(void)

{

    //退出透传模式

    USARTx_StringSend(USART3,'+++');

    delay_ms(50);

    return ESP8266_SendCmd('ATrn');

}

/*

函数功能: 一键配置WIFI为AP+TCP服务器模式

函数参数:

char *ssid  创建的热点名称

char *pass  创建的热点密码 (最少8位)

u16 port    创建的服务器端口号

函数返回值: 0表示成功 其他值表示对应错误值

*/

u8 ESP8266_AP_TCP_Server_Mode(char *ssid,char *pass,u16 port)

{

    char *p;

    u8 i;

    char ESP8266_SendCMD[100]; //组合发送过程中的命令

    /*1. 测试硬件*/

    if(ESP8266_SendCmd('ATrn'))return 1;

    /*2. 关闭回显*/

    if(ESP8266_SendCmd('ATE0rn'))return 2;

    /*3. 设置WIFI模式*/

    if(ESP8266_SendCmd('AT+CWMODE=2rn'))return 3;

    /*4. 复位*/

    ESP8266_SendCmd('AT+RSTrn');

    delay_ms(1000);

    delay_ms(1000);

    delay_ms(1000);

    /*5. 关闭回显*/

    if(ESP8266_SendCmd('ATE0rn'))return 5;

    /*6. 设置WIFI的AP模式参数*/

    sprintf(ESP8266_SendCMD,'AT+CWSAP='%s','%s',1,4rn',ssid,pass);

    if(ESP8266_SendCmd(ESP8266_SendCMD))return 6;

    /*7. 开启多连接*/

    if(ESP8266_SendCmd('AT+CIPMUX=1rn'))return 7;

    /*8. 设置服务器端口号*/

    sprintf(ESP8266_SendCMD,'AT+CIPSERVER=1,%drn',port);

    if(ESP8266_SendCmd(ESP8266_SendCMD))return 8;

    /*9. 查询本地IP地址*/

    if(ESP8266_SendCmd('AT+CIFSRrn'))return 9;

    //提取IP地址

    p=strstr((char*)USART3_RX_BUFFER,'APIP');

    if(p)

    {

        p+=6;

        for(i=0;*p!=''';i++)

        {

            ESP8266_IP_ADDR[i]=*p++;

        }

        ESP8266_IP_ADDR[i]='';

    }

    //提取MAC地址

    p=strstr((char*)USART3_RX_BUFFER,'APMAC');

    if(p)

    {

        p+=7;

        for(i=0;*p!=''';i++)

        {

            ESP8266_MAC_ADDR[i]=*p++;

        }

        ESP8266_MAC_ADDR[i]='';

    }

    //打印总体信息

    USART1_Printf('当前WIFI模式:AP+TCP服务器n');

    USART1_Printf('当前WIFI热点名称:%sn',ssid);

    USART1_Printf('当前WIFI热点密码:%sn',pass);

    USART1_Printf('当前TCP服务器端口号:%dn',port);

    USART1_Printf('当前TCP服务器IP地址:%sn',ESP8266_IP_ADDR);

    USART1_Printf('当前TCP服务器MAC地址:%sn',ESP8266_MAC_ADDR);

    return 0;

}

/*

函数功能: TCP服务器模式下的发送函数

发送指令: 

*/

u8 ESP8266_ServerSendData(u8 id,u8 *data,u16 len)

{

    u8 i,j,n;

    char ESP8266_SendCMD[100]; //组合发送过程中的命令

    for(i=0;i<10;i++)

    {

        sprintf(ESP8266_SendCMD,'AT+CIPSEND=%d,%drn',id,len);

        USARTx_StringSend(USART3,ESP8266_SendCMD);

        for(j=0;j<10;j++)

        {

            delay_ms(50);

            if(USART3_RX_FLAG)

            {

                USART3_RX_BUFFER[USART3_RX_CNT]='';

                USART3_RX_FLAG=0;

                USART3_RX_CNT=0;

                if(strstr((char*)USART3_RX_BUFFER,'>'))

                {

                    //继续发送数据

                    USARTx_DataSend(USART3,data,len);

                    //等待数据发送成功

                    for(n=0;n<200;n++)

                    {

                        delay_ms(50);

                        if(USART3_RX_FLAG)

                        {

                            USART3_RX_BUFFER[USART3_RX_CNT]='';

                            USART3_RX_FLAG=0;

                            USART3_RX_CNT=0;

                            if(strstr((char*)USART3_RX_BUFFER,'SEND OK'))

                            {

                                return 0;

                            }

                         }            

                    }   

                }

            }

        }

    }

    return 1;

}

/*

函数功能: 配置WIFI为STA模式+TCP客户端模式

函数参数:

char *ssid  创建的热点名称

char *pass  创建的热点密码 (最少8位)

char *p     将要连接的服务器IP地址

u16 port    将要连接的服务器端口号

u8 flag     1表示开启透传模式 0表示关闭透传模式

函数返回值:0表示成功  其他值表示对应的错误

*/

u8 ESP8266_STA_TCP_Client_Mode(char *ssid,char *pass,char *ip,u16 port,u8 flag)

{

    char ESP8266_SendCMD[100]; //组合发送过程中的命令

    //退出透传模式

    //USARTx_StringSend(USART3,'+++');

    //delay_ms(50);

    /*1. 测试硬件*/

    if(ESP8266_SendCmd('ATrn'))return 1;

    /*2. 关闭回显*/

    if(ESP8266_SendCmd('ATE0rn'))return 2;

    /*3. 设置WIFI模式*/

    if(ESP8266_SendCmd('AT+CWMODE=1rn'))return 3;

    /*4. 复位*/

    ESP8266_SendCmd('AT+RSTrn');

    delay_ms(1000);

    delay_ms(1000);

    delay_ms(1000);

    /*5. 关闭回显*/

    if(ESP8266_SendCmd('ATE0rn'))return 5;

    /*6. 配置将要连接的WIFI热点信息*/

    sprintf(ESP8266_SendCMD,'AT+CWJAP='%s','%s'rn',ssid,pass);

    if(ESP8266_SendCmd(ESP8266_SendCMD))return 6;

    /*7. 设置单连接*/

    if(ESP8266_SendCmd('AT+CIPMUX=0rn'))return 7;

    /*8. 配置要连接的TCP服务器信息*/

    sprintf(ESP8266_SendCMD,'AT+CIPSTART='TCP','%s',%drn',ip,port);

    if(ESP8266_SendCmd(ESP8266_SendCMD))return 8;

    /*9. 开启透传模式*/

    if(flag)

    {

       if(ESP8266_SendCmd('AT+CIPMODE=1rn'))return 9; //开启

       if(ESP8266_SendCmd('AT+CIPSENDrn'))return 10;  //开始透传

       if(!(strstr((char*)USART3_RX_BUFFER,'>')))

       {

            return 11;

       }

        //如果想要退出发送:  '+++'

    }

关键字:STM32  JAVA引用地址:基于STM32+JAVA宠物管理系统的设计与实现声明:本文内容及配图由平台用户或入驻媒体撰写。文章观点仅代表作者本人,不代表EEWorld网站立场。文章及其配图仅供工程师学习之用,如有内容侵权或违规,请联系本站处理,邮箱地址:bbs_service@eeworld.com.cn

相关知识

基于STM32+JAVA宠物管理系统的设计与实现
基于java的宠物管理系统设计与实现
毕业设计:基于java的宠物管理系统设计与实现
基于Javaweb的宠物健康生活管理系统的设计与实现
【2024】基于springboot的宠物领养管理系统设计与实现
基于node.js+vue的宠物医院在线预约管理系统的设计与实现
基于Spring Boot的宠物医院管理系统设计与实现
[1180]基于JAVA的宠物网站智慧管理系统的设计与实现
[1173]基于JAVA的宠物仪器设备智慧管理系统的设计与实现
基于java+springboot的宠物商店、宠物管理系统设计与实现

网址: 基于STM32+JAVA宠物管理系统的设计与实现 https://m.mcbbbk.com/newsview288301.html

所属分类:萌宠日常
上一篇: (附源码)spring boot
下一篇: 宠物食品的储存运输及标识管理要求