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

发布时间:2024-03-22  

【摘要】 本系统主要是由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灯,用来显示刷卡的状态—成功与否。

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

imgimgimg

#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; //开启

文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    ,店内消费管理等功能。 宠物店管理系统主要分为以下模块: 1.RFID模块:由天线和射频电路组成,通过自动识别电子标签,采集数据,采用RFID封装技术将其封装,并传输给服务器。 2.电子......
    基于数据分析和视频识别的智能酒店管理系统研究成果得到广泛应用;近日,国家科学信息技术部研究中心“十四五”全国科学技术发展研究规划重点课题《大数据信息技术应用与研究》总课题组子课题《基于数据分析和视频识别的智能酒店管理系统......
    物联网智能宠物管理系统;随着物联网技术发展,智能宠物管理系统备受关注。本文提出基于物联网技术的系统,智能管理宠物饮食和环境。宠主可通过手机App实时监控饮食量、粮食余量,并远程操控粪便清理器。系统......
    在公司的地位不稳。 即便以上种种还不足以引起关注,位于旧金山的OpenAI办公室附近的居民和商家也表达了对公司越来越多的神秘行为的担忧。一名邻近宠物店的收银员描述该办公室带有“神秘感”。 附近......
    化和人口老龄化等问题不断凸显出来。人民生活中休闲、消费和情感寄托方式也呈多样化的发展。家庭宠物的饲养已经成为了城市居民生活消遣的新方式。 宠物的喂养和看护往往是宠物主人最关心的问题,目前宠物主要还是依靠人工进行喂食,宠物看护系统还停留在专人看护和宠物店......
    基于Gokit3微信宠物屋与机智云的物联网智能家居;本文介绍的智能家居系统主要采用了Gokit3微信宠物屋(WiFi+STM32F103)作为主控芯片,由数据采集系统、数据处理系统、数据云传输系统以及智能家居智能调节系统......
    通过智能控制及物联网嵌入式技术,实现了对阳台微生态花园的智能化控制。在设计过程中,除了常规的温湿度调节、追光系统宠物屋和鱼缸控制等智能操作外,还能通过改变终端传感器应用节点,分层分级管理获取空间参数,实现......
    化的释放了员工的精力。” 李宁公司渠道部门 李帅琦 作为李宁践行ESG责任的重要合作伙伴,美的楼宇科技为该店提供了零碳商业综合解决方案,包括两个智慧终端和一个强弱电一体柜。其中,智慧门店管理......
    个零售业应用最核心的就是如何提高效率以及如何增加收入,另外一个问题就是数据的安全性和时效性。 现在整个中国的零售从前到后整个产业链,其实各人用的设备、软件都不太一样,你要想把它统一管理起来,这些管理系统应该如何一致?还有这些应用系统......
    足新兴的大规模物联网应用的需求,例如,智能交通危险报警灯将于 2026 年写入西班牙的交通法规。新灯取代汽车上的三角形状的被动危险报警灯,,能够在发生事故时向当地交通管理系统发送实时汽车地理定位,与欧洲道路安全宪章一致。ST87M01......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>