基于STM32的外卖柜,使用红外模块检测外卖状态、舵机模式外卖门,使用GSM模块进行通信,利用矩阵按键进行用户交互。将外卖放入外卖柜,输入手机号码,系统将自动发送数据并携带验证码给我们输入的手机号,拿外卖的时候,我们需要输入验证码才可以打开外卖柜并取走外卖,实现整个智能存取过程。
一、仿真工程搭建
1、电路设计
本次设计为基于STM32的智能外卖柜,由于Proteus并没有GSM模块,所以本次设计利用串口进行设计,实际上STM32实现GSM功能也是通过UART进行与GSM模块的通信。由于Proteus矩阵按键的仿真效果并不好,这边为了系统可用,使用独立按键完成功能。并使用单刀双开关设计红外模块,实际上的红外传感器也是数字传感器,检测到物体输出0,否则为1。为了可视化,本次设计采用LCD1602进行显示,虽然正式硬件设计上使用的是0.96寸OLED,但是可以实现类似功能的仿真。如下图:
2、功能演示
仿真开始,LCD1602显示 Phone 的英文字体,此时我们可以输入号码,并且将红外打到低电平,此时外卖已经放入柜子中,串口会发送 111111111111 Your takeaway has arrived ,同时设置了超时提醒,当外卖放置时间过长,会发出提示:111111111111 You didn't take the takeaway
当我们将红外打到高电平,此时显示屏显示,has been taken,串口调试助手会显示 The takeaway has been picked up。
按下清零,被清空,此时可以进行下一次放置。
3、仿真总结
本次仿真设计借助了Proteus仿真,由于Proteus的限制,功能和实物呈现的效果有细微差异,但是大致仿真出了该系统功能。
二、硬件设计
综合上述仿真设计的经验,我们接下来需要设计硬件,由于本次设计硬件上并不是难点,一般只需要一下接口然后放置外部器件就可以实现,绘制PCB也仅仅是为了美观整合这些模块:如下图:
1、原理图
2、PCB图
3、最终效果图
本次设计在外观上呈现效果并不好,但是功能大致已经实现
三、软件设计
1、Unicode
本次设计的GSM模块利用串口进行通信,但是其编码一般要求是unicode格式,虽然也可以进行更改,将Unicode编码改为UTF-8,因为本次设计并不难,所以编码并不进行修改。号码是数字,量并不算大,所以在使用API函数进行编码转化并不是难事,如下:
/**********************************************************************
描述: ASCII 转 unicode 比如 '1' 转成 "0031"
****************************************