文章目录

  • 1 简介
  • 2 绪论
    • 2.1 课题背景与目的
  • 3 系统设计
    • 3.1 系统架构
    • 3.2 硬件部分
      • 3.2.1 GMS模块
      • 3.2.2 按键模块
      • 3.2.3 显示模块
      • 3.2.4 继电器模块
      • 3.2.5 蜂鸣器模块
    • 3.3 软件部分
      • 3.3.1 主程序设计
      • 3.3.2 GMS程序设计
    • 3.4 实现效果
    • 3.5 部分相关代码
  • 4 最后

1 简介

Hi,大家好,这里是丹成学长,今天向大家介绍一个 单片机项目

基于单片机的智能快递柜设计与实现

大家可用于 课程设计 或 毕业设计

单片机-嵌入式毕设选题大全及项目分享:

https://blog.csdn.net/m0_71572576/article/details/125409052

2 绪论

2.1 课题背景与目的

一般来说,传统快递服务方式是人对人,即快递员进行揽件派送,与签收人进行面对面签收,确认无误后服务终止。这种传统快递方式虽然保证了包裹的一定安全,但效率低下,花费了双方大量的时间成本。而智能快递箱的诞生使得快递服务变得高效,它不再是门对门,或者是人对人的服务方式,智能快递箱就好比是中介,使得配送方和接收方的时间成本大大减少,更加自由。现在智能快递箱的应用在国内逐渐广泛。

智能快递箱是基于GSM与单片机系统下的一款全天24小时自助服务的服务设备。智能快递箱以单片机STC89C52作为最小控制系统,GSM模块能够插入手机卡,快递人员输入密码进行解锁放柜处理,然后通过矩阵键盘输入手机号进行短信发送,完成将物品投递入柜的功能。取件人通过手机收到的短信,输入对应验证码能够解锁快递箱门,拿取对应快递,完成取件功能。

3 系统设计

智能快递箱设计是以单片机作为最小的控制系统,由GSM模块插入的手机移动通信卡辅助实现整个系统运行。在矩阵键盘上输入手机号发送短信,输入对应验证码可以解锁对应柜子编号,成功取得快递。

该设计的技术难点有以下几个:

(1)矩阵键盘是否能够完成对11位手机号码和6位验证码的正确输入。
(2)取件人的手机号码输入完成后,GSM模块是否能够自动向取件人对应的手机发送取件码。
(3)输入正确的取件码后,单片机需要对电控锁进行正确打开。成功的依据是显示屏能够显示之前的编号。
(4)二次开发时,设计能力有限可能无法发挥产品的全部功能。

3.1 系统架构

(1) 该项目主要分为硬件系统与软件系统两个部分组成。 硬件系统由控制平台、 显示模块、 GSM 模块等组成。 软件系统则有 KEIL 软件上编译 C 程序以及刻录软件构成。

(2) 在掌握单片机工作原理的基础上, 还需要雄厚的 C 语言编译技术作为知识基底, 利用 KEIL 程序, 在其上面编写 C 语言, 以实现本次设计所需要的功能。

3.2 硬件部分

3.2.1 GMS模块

GSM 模块是将 GSM 射频芯片、 基带处理芯片、 存储器、 功放器件等集成在一块线路板上, 具有独立的操作系统、 GSM 射频处理、 基带处理并提供标准接口的功能模块, 包括发送短信, 语音通话以及数据传输的基本通信功能。

3.2.2 按键模块

3.2.3 显示模块

3.2.4 继电器模块

3.2.5 蜂鸣器模块

3.3 软件部分

3.3.1 主程序设计

主程序主要要解决两部分问题, 一是快递员存储快递, 二是取件人拿去快递。

快递员存储快递后需输入命令, 即输入用户11 位手机号码。 GSM 模块接收到 AT 指令后, 生成验证码并将指令转化成信号发送至单片机上。

单片机接收到信号, 生成信息发送至取件人的手机上。 取件人可以依据收到的短信中的验证码进行取件步骤, 如若输入正确的验证码, 快递箱门将会成功打开, 继续等下一个指令; 否则, LED 显示灯将会显示警告并且蜂鸣器电路会工作进行报警。

3.3.2 GMS程序设计

GSM 程序设计主要解决的问题就是收到 AT 指令时, 能够成功生成验证码及发送验证码到对应收件人的手机上。 在设置短息的号码时, 因为手机号码为11 位, 所以我在编写程序时, 将两位数字位置颠倒, 确保了取件人可以接收到消息。

3.4 实现效果


3.5 部分相关代码


/************************************************作者:丹成学长,Q746876041
************************************************/// 键盘部分代码
void KeyDown()
{char a = 0;
GPIO_KEY=0x0f;
while(1)
{if(GPIO_KEY!=0x0f)//读取按键是否按下
{Delay10ms(1);//延时 10ms 进行消抖
if(GPIO_KEY!=0x0f)//再次检测键盘是否按下
{//测试列
GPIO_KEY=0X0F;
switch(GPIO_KEY)
{case(0X07): KeyValue=0;break;
case(0X0b): KeyValue=4;break;
case(0X0d): KeyValue=8;break;
case(0X0e): KeyValue=12;break;
}
//测试行
GPIO_KEY=0XF0;
switch(GPIO_KEY)
{case(0X70): KeyValue=KeyValue+3;break;
case(0Xb0): KeyValue=KeyValue+2;break;
case(0Xd0): KeyValue=KeyValue+1;break;
case(0Xe0):KeyValue=KeyValue;break;
}
……
显示模块部分源代码
void get_rand(void)
{bit_0 = rand(); //获取随机数
user_pass[0] = (bit_0 % 10000)/1000;
user_pass[1] = (bit_0 % 1000)/100;
user_pass[2] = (bit_0 % 100)/10;
user_pass[3] = bit_0 % 10;
bit_1 = rand(); //获取随机数
user_pass[4] = (bit_1 % 10000)/1000;
user_pass[5] = (bit_1 % 1000)/100;
// password[6] = (bit_1 % 100)/10;
// password[7] = bit_1 % 10;
/*
LcdWriteCom(0x01); //清屏
data_clean();
PuZh_2[0] = user_pass[0]+0x30;
PuZh_2[1] = user_pass[1]+0x30;
PuZh_2[2] = user_pass[2]+0x30;
PuZh_2[3] = user_pass[3]+0x30;
PuZh_2[4] = user_pass[4]+0x30;
PuZh_2[5] = user_pass[5]+0x30;
display(); //显示
*/
}
void one_data(uchar *str) //显示第一行数据
{unsigned char y;
for(y=0;y<16;y++)
{PuZh_1[y]=*str;
str++;
}
}
void two_data(uchar *str)//显示第一行数据
{unsigned char y;
for(y=0;y<16;y++)
{PuZh_2[y]=*str;
str++;
}
}
void interface_dist()
{one_data(" WELCOME ");
two_data(" ");
}
void input_pass()
{unsigned char j=0,z=0,x=0,y=0;
LcdWriteCom(0x01); //清屏
one_data(" EMS INPUT ");
two_data(" ");
display(); //显示
j=6;
z=0;
// x=0;
for(;;)
…
GSM 模块部分源代码
void UsartConfiguration()
{SCON=0X50; //设置为工作方式 1
TMOD=0X20; //设置计数器工作方式 2
TH1=0XFd; //计数器初始值设置, 注意波特率是 9600 的
TL1=0XFd; //11.0592 晶振
// PCON=0X80; //波特率加倍
// TH1=0XF3; //计数器初始值设置, 注意波特率是 4800 的
// TL1=0XF3; //12.0000 晶振
ES=1; //打开接收中断
EA=1; //打开总中断
TR1=1; //打开计数器
}
//串行口连续发送 char 型数组, 遇到终止号/0 将停止
void Uart1Sends(uchar *str)
{while(*str!='\0')
{SBUF=*str;
while(!TI);//等待发送完成信号(TI=1) 出现
TI=0;
str++;
}
}
void Uart1Send(uchar c)
{SBUF=c;
while(!TI);//等待发送完成信号(TI=1) 出现
TI=0;
}
void pass_word()
{char i;
for(i=0;i<6;i++)
{SBUF=0x30;
while(!TI);//等待发送完成信号(TI=1) 出现
TI=0;
SBUF=0x30;
while(!TI);//等待发送完成信号(TI=1) 出现
TI=0;
SBUF=0x33;
while(!TI);//等待发送完成信号(TI=1) 出现
TI=0;
SBUF=0x30+user_pass[i];
while(!TI);//等待发送完成信号(TI=1) 出现
TI=0;
}
}
void send_code()
{get_rand();
Uart1Sends("AT+CMGF=1\r\n");
Delay10ms(200);//延时 2 秒
Uart1Sends("AT+CSCS=\"UCS2\"\r\n");
Delay10ms(200);//延时 2 秒
Uart1Sends("AT+CSCA?\r\n");
Delay10ms(200);//延时 2 秒
Uart1Sends("AT+CSMP=\"17,167,0,24\"\r\n");
Delay10ms(200);//延时 2 秒
//15813366585
Uart1Sends("AT+CMGS=\"00310035003800310033003300360036003500380035\"\r\n");//
此处修改为对
Delay10ms(200);//延时 2 秒
Uart1Sends("8BF753D65FEB90129A8C8BC17801");
pass_word();
// Uart1Sends("9A8C8BC17801");//修改短信内容
// Uart1Sends("00310033003300330033003300330039003200340033");//修改短信内容
Delay10ms(200);//延时 2 秒
Uart1Send(0x1a);
Delay10ms(200);//延时 2 秒
}
void main(void)
{unsigned char j=0,z=0,x=0;
UsartConfiguration();
// TMOD = 0X01; //设置定时器 T0 16 位
// EA = 1; //打开中断
// ET0 = 1; //打开 TO 定时器
// TR0 = 1; //开启中断
// TH0 = (65536-5000)/256;
// TL0 = (65536-5000)%256;
time = 0;
BELL = 0;
power = 0;
LcdInit();
error = 0;
Delay10ms(50);
i=0;
LcdWriteCom(0x01); //清屏
interface_dist(); //友好界面显示
Delay10ms(50);
display(); //显示
while(1)
{KeyDown();
if(num == 10)
{input_pass(); //输入密码
if(error == 0)
{LcdWriteCom(0x01); //清屏
one_data(" WELCOME ");
two_data(" SEND MESSAGE ");
display(); //显示
send_code();
LcdWriteCom(0x01); //清屏
one_data(" WELCOME ");
two_data(" SEND SUCCESS ");
display(); //显示
Delay10ms(200);
}
}
LcdWriteCom(0x01); //清屏
interface_dist(); //友好界面显示
Delay10ms(50);
display(); //显示
if(num==12)
{user_input();
}
}
}/*******************************************************************
篇幅有限,只展示部分代码
作者:丹成学长,Q532036360
********************************************************************/

单片机-嵌入式毕设选题大全及项目分享:

https://blog.csdn.net/m0_71572576/article/details/125409052

4 最后

[毕业设计] 基于单片机的智能快递柜设计与实现 - stm32 物联网相关推荐

  1. 基于单片机的智能宠物喂食器设计

     word完整版可点击如下下载>>>>>>>> 基于单片机的智能宠物喂食器设计-硬件开发文档类资源-CSDN下载内容包括详细设计文档word版,附带开题 ...

  2. 基于单片机的智能储存柜的设计

    1绪论 1.1课题研究背景及意义 存储柜是在公共场合十分常见的设备,一般分为机械式和电子式两种.机械式存储柜采用的是传统的机械锁构架,使用者凭借提供的钥匙开关储存柜.这一系统的缺点非常明显,如果钥匙丢 ...

  3. 基于单片机双路温度检测报警系统设计-基于单片机声光控智能开关控制灯设计-基于单片机热电偶智能体温检测设计-基于单片机小型家用燃气锅炉控制系统设计-基于单片机一氧化碳有毒气体采集报警系统设计

    1628基于单片机双路温度检测报警系统设计(串口上位机控制) 基于pcf8591 tlc2543的双路温度检测报警系统 带串口上位机控制带仿真 源程序 温度传感器是 LM35 两路测温通道所用的ad芯 ...

  4. 抢答器c语言程序设计,基于单片机的智能抢答器设计与实现

    [摘要]该智能抢答器以51单片机为核心控制器件,通过串行通信,将主机与8路从机连接,实现了有效抢答信号的识别显示.犯规选手识别显示.不同时长的抢答倒计时.不同时长的答题倒计时.提示报警等功能.文章同时 ...

  5. 基于单片机的智能饮水机设计

    一.硬件方案 基于单片机的饮水机的温度控制系统可以实时检测饮水机水箱的水温,并且可以通过数码管显示饮水机水箱水温度数,可以通过键盘或开关选择制冷或加热,可以人为设置水的温度的上下限,如加热,当温度在设 ...

  6. 毕业设计 基于云平台的火灾报警系统设计与实现 - stm32 物联网 单片机 OneNET云平台

    文章目录 0 简介 1 项目简介 2 开发环境 3 火焰传感器 4 连接OneNET云平台 5 演示效果 6 最后 0 简介 Hi,大家好,学长今天向大家介绍一个 单片机项目 基于云平台的火灾报警器 ...

  7. 毕业设计 基于单片机的智能盲人头盔系统 - 导盲杖 stm32

    文章目录 0 前言 1 简介 2 主要器件 3 实现效果 4 设计原理 4.1 硬件设计 **STM32模块** **HC-SR04超声波避障模块** 导航模块 图象识别模块 光敏传感模块 智能语音合 ...

  8. 毕业设计 基于单片机的智能音响设计与实现 -物联网 嵌入式 stm32

    文章目录 0 前言 1 简介 2 主要器件 3 实现效果 4 设计原理 4.1 PAJ7620U2模块 4.2 HC-05蓝牙模块 4.3 JQ8900语音模块 5 部分核心代码 6 最后 0 前言

  9. 毕业设计 基于单片机的智能窗户系统(源码+硬件+论文)

    文章目录 0 前言 1 主要功能 2 硬件设计(原理图) 3 核心软件设计 4 实现效果 5 最后 0 前言

  10. 毕业设计 基于单片机的交通安全车辆测速系统 - 嵌入式 物联网

    文章目录 0 前言 1 简介 2 主要器件 3 实现效果 4 设计原理 4.1 槽型光耦测速模块 4.2 LCD1602显示模块 5 部分核心代码 6 最后 0 前言

最新文章

  1. Android 获取App的版本号与版本名称的2中方法
  2. Understanding Extension Class Loading--官方
  3. Squid 代理服务器 编译源码 伪造HTTP_X_FORWARDED_FOR 请求头
  4. 2018多校1 hdu6298 6300 6308
  5. 中国大学MOOC 人工智能导论第四章测试
  6. java多线程编程一之java线程的原理
  7. 信息竞赛进阶指南--二叉堆(模板)
  8. java并发编程-Executor框架
  9. lambda 匿名内部类_Lambda运行时内部:窥视无服务器巢穴
  10. 我试了试用 SQL查 Linux日志,好用到飞起
  11. python版本年份_Python问题:至今的年份和年份?
  12. jDom 和dom4j 输出的中文乱码的解决方案
  13. python接受前端传递的参数
  14. linux下安装zmap和zgrab
  15. FDS学习笔记(三)全局变量的设置
  16. win10系统计算机如何分盘,Win10怎么分盘|Win10新电脑怎么分盘
  17. i5处理器学计算机怎么设置,处理器怎么超频 酷睿i3/i5/i7系列CPU超频详细教程 (全文)...
  18. [深入研究4G/5G/6G专题-8]: 测试-测试终端-高端无线CPE/Router的高通SDX55 5G NR芯片方案
  19. 微信js-sdk 微信自定义分享显示图片和描述不显示
  20. java编译器:必须对其进行捕获或声明以便抛出

热门文章

  1. 基于Harry Potter的数据可视化
  2. Map获取key,value的方法
  3. ios保存gif到相册_iOS如何保存下载GIF图片
  4. 什么是L2行情接口?
  5. java-php-python-ssm无人智慧药柜系统设计计算机毕业设计
  6. angularjs技术
  7. 微软高级流格式ASF简介
  8. (pattern),(?:pattern),(?=pattern)(?!pattern)不明白,让我豁然开朗的文章
  9. html5个性音乐播放器,9款优秀HTML5音乐播放器 - 米扑博客
  10. 笔记本设置wifi热点并抓包