本文作者:立创EDA开源平台 OSHWHub 用户@doee,点击查看原文章
1、项目介绍
外卖自提柜,类似蜂巢之类的快递柜。
工作流程
1、外卖员通过手机APP扫描柜体上面的固定二维码,在APP中输入客户的手机号
2、完成后,服务器向对应手机号发送含有取货密码的短信
3、同时自动分配一个空柜子,向设备端发送一个开柜指令,内容包括,柜号、开柜密码等
4、设备端收到开柜指令后开柜
5、客户收到短信后凭密码取外卖,取完后设备端上报服务器取货成功的信息。
基本功能包括与服务器通信,控制开柜,显示信息,声音提示,验证码输入等等。服务器和APP是别人做的,我做设备端,柜体用下面这种。
项目选型
方案: MCU + WIFI模块 + GPRS模块 + 显示屏 + 键盘 选型: stm32f103rbt6 + esp8266 + sim800 + lcd彩屏 + 矩阵键盘。
一开始觉得这个项目so easy
烂大街 ,乍一看确实,这选型也太烂大街了(笑),如果说这是一道电赛题,几天也能弄出来,最后花了两个月左右...
工作流程
设备端主要工作流程如下:
1、硬件开机后与服务器连接,连接成功后,硬件自动向服务器发送注册指令, 包含本机的Id,服务器收到后会将该机器注册进来,进行监管。2、当有客户想要存放时,会扫描硬件二维码获取机器Id,然后在App上打开某个格子,服务器会向该机器发送存货指令 , 包含要打开的机器Id,格子Id,存放模式,取货验证码等等,同时服务器会向取货的客户发送6位验证码短信。
3、机器接收到存柜存货指令后,尝试打开相应格子,并保存验证码,若打开成功,则发回给服务器开柜成功指令表示成功。否则返回开柜失败指令表示失败。
4、客户来取物品时,在机器上输入相应的六位密码,响应密码的格子就会自动打开,然后向服务器发送取货指令,报告格子被打开。
5、持续工作,设备需要每30s发送一次心跳指令。
协议制定
协议部分雏形是做服务器的同学定的,这部分直接导致系统从裸奔变成跑FreeRTOS。
帧头 + Length + CmdId + DevId + Content + FrameId + 校验和
不同指令的Content不同:
任务代码和详细工作流程部分:请参见原文
3、原理图和PCB绘制
ESP8266和SIM800供电选择电路:
这里使用一个NMOS和一个PMOS实现模块切换,测试效果正常。
电磁锁驱动电路
我用的是NMOS,栅极电阻可以小一点,我实际用的是470R,这里甚至可以把栅极电阻短接。 R39是为了栅极下拉,防止IO口浮空时导致输出不稳定 D13是续流二极管,电磁锁是感性元件,防止关断瞬间击穿MOS
单片机最小系统部分
这里有一个防反接电路,主要是考虑到SWD接口容易插反,烧掉单片机,Q16是一个NMOS,用来防反接,插反以后MOS自动关断,R12是一个0欧电阻,不想用防反接功能,可以焊接R12进行短接。
USB转TTL部分
这个保险丝救了我好几次,一定不要省!!!用的是6V 700mA的自恢复保险丝。
PCB的一点点经验,大佬勿喷。实话说,这种板子,随便画也能用...
芯片的电源引脚做好退耦,退耦电容要靠近引脚
晶振走线尽量短,晶振周围不要走电源线
等等...
4、实物展示
1.8寸TFT屏、SIM800L、ESP8266:
4x4薄膜矩阵键盘:
焊接:
成品图:
5、文档
6、BOM 相关器件(点击商品编号可查看产品详细信息)
| 商品编号 | 型号 | 品牌 | 规格/描述 |
| C503597 | ESP8266 |
Ai-Thinker(安信可) |
ESP8266测试板 |
| C8735 | STM32F103RBT6 | ST(意法半导体) |
LQFP-64_10x10x05P / MCU |
| C124276 | SIM800L |
SIMCOM(芯讯通无线科技) |
LGA / GSM/GPRS模块 |
| C98241 |
STC8F2K64S2 |
STC(宏晶) |
LQFP-32_7x7x08P/ MCU |
| GP2302 |
GP(格瑞宝)
|
SOT23 / N-MOS |
您也可以点击下载BOM或点击直接在立创商城下单
本文作者:立创EDA开源平台 OSHWHub 用户@doee,未经许可禁止转载,请自行验证。