智能咖啡厅系统设计与实现

2022-05-27 15:34:04 浏览数 (1)

引言

本项目通过使用VS2019 物联网虚拟仿真实验平台实现物联网的智能咖啡馆项目。实现的功能有账号密码比对(使用数据库),预警拍照,实时监测温湿度、烟雾等环境数据、无线控制设备风扇、加湿器、LED等装置,智能控制餐厅、RFID卡识别,会员卡消费充值、无线通信点单(局域网)、会员信息增删改查等功能。

背景及需求分析

首先,近年来人工智能的飞速发展,是我们的生活越来越“智能化”,“简单化”。随着中国市场经济的高速发展,越来越多的上班族和学生愿意去咖啡厅消费。 目前,我国人均咖啡消费量还有很大的上升空间。一方面,数据显示,2018年,与其他地区相比,我国人均咖啡消费量仅6.2杯。另一方面,人们消费意愿是咖啡消费市场的强大基石,2019年,全国居民的食品烟酒消费支出比上年名义增长8.6%,占人均消费支出的比重为28.2%,占比排名首位。综合来看,中国咖啡的消费市场还有很大的开发空间。 但在高速发展的同时,咖啡厅行业普遍采用手工管理方式,整体科技含量低。随着咖啡厅的规模和顾客数量的增加,手工管理模式无论是在工作效率还是成本上都难以适应现代化的企业发展。为有效解决这类企业问题,可以采用RFID应用加以物联网化技术融合而成的智能咖啡厅管理系统。

总体设计

智能咖啡馆管理系统采用RFID技术对原材料和消费人员进行管理,同时和物联网智能控制相结合,对咖啡馆环境进行安全舒适监测控制。基于RFID应用的会员卡消费模式,更有利于咖啡管的正常运营发展。在咖啡馆开业之初,对每一位顾客发放装有RFID标签的会员卡,并提前初始化会员卡的信息,对顾客信息进行录入。收银台装有RFID 读写器对每一个顾客的会员卡进行读写录入,摒弃繁琐的传统现金支付,采用RFID技术,明显更利于咖啡馆未来的发展。在餐厅中安放远程遥控开关,可以对室内的风扇、加湿器喷头、照明灯、窗户等进行遥控开关。在咖啡馆中安放多种传感器进行测量室内环境,检测室内当前的温度、湿度、光照强度,并进行实时显示。还可进入智能调控安全模式,系统会根据室内有无火焰、有无烟雾等,自动选择是否打开消防喷头、窗户等,从而构建一个安全、舒适、智能的咖啡馆环境。管理人员登录系统需要输入密码,正确可以进入,错误三次将会电脑自动进行拍照,保障智能咖啡厅的安全。

账号密码比对及预警

工作人员在登陆页面输入自己身份卡的对应密码即可进入到智能咖啡厅收银端操作界面,如果密码有误,会进行提示,如果错误次数超过三次,将会自动进行拍照,防止有人非法登录智能咖啡厅界面。 具体界面如下。

会员卡服务

首先对每一位顾客进行办理会员卡服务,把用户的手机号,姓名,性别,家庭住址都填写进此顾客的卡中。后期可进行查询、删除和更改用户信息的操作。 每次顾客进店,在收银台装有的RFID ISO14443读写器都可对会员卡进行消费和充值服务,顾客还可查询余额,但顾客没有更改余额和信息的权限。

智能环境控制

首先需要连接到网关,之后可在控制台选择三种模式:手动控制、自动安全防控、数据检测。 在手动模式中,可对智能咖啡厅的照明系统、风扇、窗户和加湿装置进行远程控制。 在自动安全防控模式下,当打开检测火焰或者检测烟雾的开关时,就能自动检测智能咖啡厅内的烟雾含量和火焰是否出现。当出现火灾时,不需要人员的控制,就可以自动的打开消防喷头,对火灾进行控制。在出现大量烟雾时,也能自主的打开窗户。这种智能防控装置,不需要人员的调控,就能自主进行反应,大大的增加了智能咖啡厅的安全性和智能性。 在数据检测模式下,在智能咖啡厅内装有的温湿度传感器、光照传感器等,可实时显示室内的温度、湿度和光照强度。便于人员调控室内环境,给来到智能咖啡厅的顾客一个舒适的消费环境,增加了顾客体验,更加促进消费和推广,从而使智能咖啡厅更加具有知名度。

无线点单

实现无线点单功能,主要分成收银端和客户点单端两个部分。客户点单端通过点单端软件进行相应产品的选择,,收银端接收到客户点单端发来的消息后,工作人员向客户点单端发送一个响应,告诉消费者,工作人员已经收到了顾客点单的信息,最后通过此信息的内容进行备餐和送餐。

开发环境

  1. VS2019
  2. 物联网仿真平台

硬件设计

本设计为了方便调试,使用仿真系统。用到的有RFID14443读写器、温湿度传感器、烟雾传感器、火焰传感器、光照传感器、LED灯、风扇、消防喷头等。连接方式如下:(项目文件里放了仿真文件,直接在仿真平台上打开即可)

软件设计

使用的上位机开发语言为 C#

数据库设计

智能咖啡厅系统中的数据库使用SQL Server数据库来实现数据的增、删、改、查,数据库包含两个数据表,分别是工作人员信息表和顾客信息表。工作人员信息表是储存(工作人员)登录系统的账号和对应密码的表单,该表单以工作人员的卡号为主键, 每个工作人员的卡号对应一条不重复的记录,智能咖啡厅系统必须使用数据库中的A类卡片的卡号和对应密码才能登录系统进行管理、控制,具体设计如表1所示。顾客信息表是一个用于存放顾客信息的表单,该表单以顾客卡号为主键, 每个顾客卡号对应一条不重复的记录, 每一个表项包括顾客会员卡卡号、用户余额、地址、手机号等数据,具体设计如表2所示。

在程序中主要更改的东西有:自己的电脑设备名、数据库名称、数据表名称。 account,password都是自己的表项,建表的时候的名称,可参考上面的图。

代码语言:javascript复制
string connString = "server=自己的电脑设备名\SQLEXPRESS; database=数据库名称 ;integrated security=SSPI";
string sqlString = "select account,password from 数据表名称 where account='"   textzhanghao   "'and password='"   textmima   "' ";

找不到自己设备名的话,可以看下图,在这里找自己的。

系统登录

工作人员登录部分主要是由密码比对和预警拍照组成。登录者在账号、密码输入位置输入自己的账号、密码,系统会将这个密码和后台数据库中账号对应的密码进行比对,如果正确,进入到管理功能界面,如果错误会进行提示。当错误次数超过三次时,系统会自动调用电脑的摄像头进行拍照,保障餐厅财产安全。密码比对逻辑代码如下:

代码语言:javascript复制
 if (cishu >= 3)
{
       MessageBox.Show("输入密码次数超过三次");
       Form2.pForm2.Photograph_Click(sender,e);
       cishu = 1;
 }
 else
{
       Form2.pForm2.btnClose_Click_1(sender, e);
       if (sqlDataReader.HasRows)
       {
                    cishu = 0;
                    frm3.Show();
                    this.Hide();
        }
        else{
                    cishu  ;
                    MessageBox.Show("账号密码不正确");
             }
}

预警拍照其实就是一个简单的调用摄像头,具体可以参考我以前的文章摄像头拍照功能是怎样实现的?自己动手做一个!。

会员信息录入

本系统的会员信息录入功能实际上就是将会员的信息存入到智能餐厅的后台数据库中。本设计中使用ADO.NET数据库访问技术实现相应功能,首先通过串口获取会员卡号,然后工作人员通过询问消费者,获得姓名、手机号、性别和家庭住址等信息,将这些填入对应位置,使用ADO.NET数据库访问技术存到后台数据库中。使用ADO.NET数据库访问的流程为: (1)建立一个数据库连接。 (2)在建立连接的条件下可以使用Command对象对数据库发送新增、查询、修改或删除等命令。 (3)建立DataAdapter对象,从数据库中取得数据。 (4)建立DataSet对象,将DataAdapter对象填充到DataSet对象(数据集)中。 (5)关闭数据连接。

代码语言:javascript复制
string sex = "";
            if (radioButton1.Checked)
            {
                sex = "男";
            }
            else
            {
                sex = "女";
            }
            string connString = "Data Source=设备名\SQLEXPRESS;Integrated Security=True";
            string sqlString = "insert into 数据表(sno,sname,RFIDNumber,sex,college)values('"   textBox1.Text   "','"   textBox2.Text   "','"   textBox3.Text   "','"   sex   "','"   textBox4.Text   "')";
            master = new SqlConnection(connString);//建立连接对象
            master.Open();
            cmd = new SqlCommand(sqlString, master);//建立数据命令对象
            cmd.ExecuteNonQuery();
            MessageBox.Show("插入记录成功!");
            textBox1.Text = textBox2.Text = textBox3.Text = textBox4.Text = "";//清空各文本框

会员信息查询、修改及销卡

本系统的会员信息查询、修改及销卡实际上就是对后台数据库中的会员信息进行查询、修改及删除。同样是使用ADO.NET数据库访问技术实现相应功能,首先通过串口获取会员卡号,之后系统会将此卡号在后台数据库中进行检索,找到此信息后,显示出来,工作人员可以点击相应按钮进行会员信息的查询、修改和销卡,基本的查询和删除对应的SQL语句如下: (1)查询:SELECT *FROM <数据表名> where card=”要查询的卡号” (2)删除:DELETE *FORM <数据表名> where card=”要删除的卡号”

充值与消费

本系统的充值消费是通过对数据库信息的检索及修改完成的,消费者首先将自己的会员卡放在收银台旁的读卡器上,工作人员连接到后台数据库,将此会员卡对应的信息调取出来。然后填写消费或者充值的数值,最后点击消费或者充值的按钮即可。

无线点单

本系统的无线点单功能的实现主要分成两个部分,一个是收银端上位机,另一个是点单客户端。通过使用双端通信,进而完成无线点单功能。 收银端上位机充当服务器,接收各个点单客户端发送来的信息。工作人员首先将餐厅的IP地址填入其中,进行监听有没有点单客户端发来的信息,如果有,根据客户的要求进行备餐,并根据发来信息中的座位号给客人送餐,每次收到消费者发来的消息后,返回一个反馈给发送者,让他知道收银端已经收到他发送来的消息。 关键程序如下:

代码语言:javascript复制
	private string GetIpAddress()
        {
            string hostName = Dns.GetHostName();   //获取本机名
            IPHostEntry localhost = Dns.GetHostByName(hostName);    
            localhost = Dns.GetHostEntry(hostName);   //获取IPv6地址
            IPAddress localaddr = localhost.AddressList[0];

            return localaddr.ToString();
        }

        public void UdpSend()
        {
            //Parse()把十进制iP转化成IPAddress类,绑定IP地址和端口
            remoteIPEp = new IPEndPoint(IPAddress.Parse("1IP地址"), CLIENT_UDP_PORT);
            //创建发送数据 Socket 对象与数据缓冲区
            udpSendDataBuf = new byte[1024];
            skUdpSend = new Socket(AddressFamily.InterNetwork,
            SocketType.Dgram, ProtocolType.Udp);

            //为false,等待执行
            mreUdpShutDown = new ManualResetEvent(false);
            mreUdpSend = new ManualResetEvent(false);
            whUdp = new WaitHandle[2];
            whUdp[0] = mreUdpShutDown;//UDP结束命令
            whUdp[1] = mreUdpSend; //UDP服务结束命令 

            int iWaitRetCode;
            iWaitRetCode = WaitHandle.WaitAny(whUdp, 1000);   //等待指定数组中的任意元素接收信号,同时使用 TimeSpan 指定时间间隔
            byte[] b_txt;
            int iByteLen;

            //满足条件
            while (iWaitRetCode != 0)
            {
                switch (iWaitRetCode)
                {
                    case 1://发送数据 
                        b_txt = Encoding.UTF8.GetBytes(strSendTxt);
                        iByteLen = b_txt.Length;
                        //初始化缓存数据
                        Array.Clear(udpSendDataBuf, iWaitRetCode, iByteLen);
                        //复制数组
                        Array.Copy(b_txt, udpSendDataBuf, iByteLen);
                        //发送到指定IP
                        skUdpSend.SendTo(udpSendDataBuf, remoteIPEp);
                        //消费掉一次事件
                        mreUdpSend.Reset();
                        break;
                    case WaitHandle.WaitTimeout://超时
                        break;
                }
                //继续下次事件检测
                iWaitRetCode = WaitHandle.WaitAny(whUdp, 1000);
            }
            skUdpSend.Close();
            skUdpSend = null;
        }
        #endregion    UDP发送线程线程 
        public static string strSendTxt;
        private void button1_Click(object sender, EventArgs e)
        {
            mreUdpShutDown.Set();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            strSendTxt = GetIpAddress()  ":"  textBox1.Text   "rn";
            mreUdpSend.Set();
        }

环境控制

首先需要连接到网关,之后可在控制台选择三种模式:手动控制、自动安全防控、数据检测。 在手动模式中,可对智能咖啡厅的照明系统、风扇、窗户和加湿装置进行远程控制。 在自动安全防控模式下,当打开检测火焰或者检测烟雾的开关时,就能自动检测智能咖啡厅内的烟雾含量和火焰是否出现。当出现火灾时,不需要人员的控制,就可以自动的打开消防喷头,对火灾进行控制。在出现大量烟雾时,也能自主的打开窗户。这种智能防控装置,不需要人员的调控,就能自主进行反应,大大的增加了智能咖啡厅的安全性和智能性。 在数据检测模式下,在智能咖啡厅内装有的温湿度传感器、光照传感器等,可实时显示室内的温度、湿度和光照强度。便于人员调控室内环境,给来到智能咖啡厅的顾客一个舒适的消费环境,增加了顾客体验,更加促进消费和推广,从而使智能咖啡厅更加具有知名度。 控制设备的典型程序如下:

代码语言:javascript复制
            if (btn_diancisuo.Text == "打开")
            {
                foreach (SensorBase sensor in Relays)
                {
                    byte[] data = sensor.Data;
                    data = new byte[] { data[0], data[1], data[2], 0x01, data[4] };
                    gateWay.SendData(sensor.Type, sensor.Addr, data);
                    ShowMessage(string.Format("电磁锁打开成功!", Converts.ByteToString(sensor.Addr)));
                }
                btn_diancisuo.Text = "关闭";
                lb_ElectromagneticDoor.Text = "打开";
            }
            else
            {
                foreach (SensorBase sensor in Relays)
                {
                    byte[] data = sensor.Data;
                    data = new byte[] { data[0], data[1], data[2], 0x00, data[4] };
                    gateWay.SendData(sensor.Type, sensor.Addr, data);
                    ShowMessage(string.Format("电磁锁关闭成功!", Converts.ByteToString(sensor.Addr)));
                }
                btn_diancisuo.Text = "打开";
                lb_ElectromagneticDoor.Text = "关闭";
            }

总结

我自主设计的智能咖啡厅系统以RFID 高频 ISO 14443原理为基础,物联网智能控制为辅。建立一个安全、智能、舒适、便捷的智能咖啡厅系统。其中使用了数据库技术进行会员卡信息的管理,统计;使用RFID 高频 ISO 14443技术进行会员卡的消费、充值和查询功能;使用网关和配置器进行远程控制各种室内环境装置、如风扇、窗户、照明系统等:通过在室内安装各种传感器,如光照传感器、温湿度传感器、火焰传感器和烟雾传感器等对室内环境进行检控、并进行实时显示。 智能咖啡厅系统充分迎合了当今时代咖啡厅发展的痛点,摒弃传统咖啡厅行业普遍采用的手工管理方式,解决传统模式整体科技含量低的问题。智能咖啡厅通过RFID应用加以物联网化技术相融合,构建出智能化、舒适化、快捷化、安全化的智能咖啡厅环境,必将是未来咖啡厅的一个重大发展趋势。

0 人点赞