产品概述

sim900a 51单片机 原创:DIY一部真正属于自己的手机

小编 2025-06-07 产品概述 23 0

原创:DIY一部真正属于自己的手机

关注EEWORLD论坛这个活动很久了,从一开始就关注着,可惜那会正好报了驾校,准备考驾照。每天都得去驾校报告被教练骂。在驾校练车一练一上午,一练一下午,累得很,根本没有精力在来敲代码。 之后,看到大家都陆陆续续的参加了活动,用了STM32、TFT触摸屏等等,心里越发痒痒,也想自己DIY一个手机。现在正好有点空闲时间,可以来敲敲代码,DIY一下。

项目名称:DIY--手机

版 本:V1.0

硬 件:STC51 +LCD12864+SIM900

功 能:

1.打电话

2.游戏

3.闹钟

4.电子日历

没有群里各位大神那么高大上,我的要求不要太高,首先能打电话,其次再加一些小功能,比如游戏、闹钟、电子日历等等。功能不要太多,毕竟这是我的第一个版本,之后肯定会升级。

今天早上起晚了,没去看书,在宿舍把大概框架敲好了,也不知道活动哪天结束,毕竟已经开始很长时间了。管它了,反正我会把它进行到底。

借用锤子一句话:我不在乎输赢,我只是认真.....

上个图吧:

显示界面

菜单

这次DIY手机,用到的SIM900A是用AT指令进行通信的器件,之前从来没有接触过这方面的东西,怀一颗忐忑的心,不知道该怎么下手。从快递公司取回来模块后, 需要做的第一件事就是测试一下模块是不是可以正常工作。

先用USB转串口模块将SIM900A模块和电脑连接好,然后按照AT指令手册用上位机发送了几条指令,就好像是向SIM900A大喊:喂~~你能听到我说话么?SIM900A模块很快作出反应:我听到了~~于是,上面机界面显示出来了反馈信息,这样的话,已经可以正常的和SIM900A模块进行通信了,那试试拨号功能。发送指令拨打10086,很顺利的听到了熟悉的声音:欢迎致电中国移动~~~~~然后一堆废话,这样的话,模块是没有问题了,接下来就是用MCU来控制它了。

把它和单片机连起来。SIM900A模块和单片机的连接特别方便,因为用MCU的UART串行口,所以只需要两根数据线就可以了,即单片机的RXD、TXD分别和SIM900A模块的TXD.RXD相连接即可。

先进行最简单的测试---自动拨号

//串行口初始化:波特率9600

void init_UART(void)

{

TMOD=0x20;//定时器1操作模式2:8位自动重载定时器

TH1=0xfd;//装入初值,波特率9600

TL1=0xfd;

TR1=1;//打开定时器

SM0=0;//设置串行通讯工作模式,(10为一部发送,波特率可变,由定时器1的溢出率控制)

SM1=1;//(同上)在此模式下,定时器溢出一次就发送一个位的数据

REN=1;//串行接收允许位(要先设置sm0sm1再开串行允许)

EA=1;//开总中断

ES=1;//开串行口中断

}

复制代码

先写一个简单的发送函数

//串行口发送数据

void Uart_Send_string(uchar *str)

{

while(*str!='\0')

{

SBUF=*str;

while(!TI);//等待发送完成信号(TI=1)出现

TI=0;

str++;

}

}

复制代码

自动拨号,进行最最简单的测试

#include <REGX52.H>

#define uchar unsigned char

#define uint unsigned int

//以下是开机后拨打的手机号

uchar num[] = "ATD10086;\r";

void main()

{

init_UAR();//串行口初始化:波特率9600

while(1)

{

Uart_Send_string(num); //自动拨号

DelaySec(20); //延时20秒

Uart_Send_string("ATH\r"); //挂机

DelaySec(5); //延时5秒

}

}

复制代码

插入耳机,可以听到10086的声音,简单的测试就完成了。

这只是最最简单的测试,什么都不用管,直接自动拨号然后挂断。但是,实际应用的话用单片机和SIM900A进行通信的话会是这么简单么??肯定不是,实际情况会比这复杂得多得多,欲知后事如何,请听下回分解吧~~~~

这次DIY手机,用到的SIM900A是用AT指令进行通信的器件,之前从来没有接触过这方面的东西,怀一颗忐忑的心,不知道该怎么下手。从快递公司取回来模块后, 需要做的第一件事就是测试一下模块是不是可以正常工作。

项目名称:KaSuo Phone

版 本:V1.0

硬 件: STC89C516

LCD12864(ST7920)

SIM900A模块

功 能:

1.接/打电话

2.时钟

3.游戏

4.工具:闹钟、秒表、电子日历

5.设置:按键音设置、背光调节、情景模式

上图:

1.显示板

2.控制板

组合:

最后的整体图:

KaSuo Phone 介绍:

一。显示界面

显示时间、信号强度、电量信息

二。菜单界面

菜单又分为【拨号】、【时钟】、【游戏】、【工具】、【设置】、【版本】

原文及视频:http://bbs.eeworld.com.cn/thread-443790-1-1.html

以上图文内容均是EEWORLD论坛网友: 季夏木槿 原创,在此感谢。

欢迎微博@EEWORLD

如果你也写过此类原创干货请关注微信公众号:EEWORLD(电子工程世界)回复“投稿”, 也可将你的原创发至: bbs_service@eeworld.com.cn,一经入选,我们将帮你登上头条!

与更多行业内网友进行交流请登陆EEWORLD论坛。

基于STM32和SIM900A的网络多点远程数据监测系统设计

李驰1,段智敏1,丛培田1,张旗2

(1.沈阳理工大学 机械工程学院,辽宁 沈阳 110159;2.国网辽宁省电力有限公司营口供电公司,辽宁 营口 115000)

:针对工业上监测现场数据采集的远程网络传输需求,提出了一种基于STM32F103微控制器和SIM900A通信模块的网络多点远程数据监测系统。STM32下位机可以完成各传感器的周期性数据采集,并利用SIM900A模块实现其与远程上位机在GPRS网络上的不依赖监测现场网络环境的TCP数据通信。系统可以实现不间断对多个监测点的多个监测对象同时进行数据采集和远程数据传输。现场实验表明,该监测系统稳定性高、实时性强、测量误差小、功耗低,可以满足工业上的设计要求。

:数据采集;TCP;GPRS ;STM32;SIM900A

:TP27文献标识码:ADOI: 10.19358/j.issn.1674-7720.2016.24.030

引用格式 :李驰,段智敏,丛培田,等. 基于STM32和SIM900A的网络多点远程数据监测系统设计[J].微型机与应用,2016,35(24):105-108.

0引言

在工业中,数据的采集一直是生产过程中非常重要的环节,无论是机械的正常运转还是作业环境的保持,都离不开准确高效的数据采集技术。

基于嵌入式结构设计的数据采集系统一般采用RS232、RS485等串口的方式与上位机进行数据通信,虽然非常可靠,但受线缆限制,上位机必须保持在一定的距离内。而在某些高温、强腐蚀性环境下,线缆的布置比较困难,也容易损坏[1]。

随着科技的进步,移动通信技术迅猛发展,现在已经具有了非常高的稳定性,这也使移动通信技术在工业中应用成为可能。利用现有的GPRS网络,发挥其网络覆盖率高、传输特性好的优点,为原有的数据采集系统提供了一种方便的无线传输功能。移动通信技术具有布置灵活和可独立联网的优点[2]。

1总体设计

本文所设计的网络多点远程数据监测系统由下位机与上位机组成,下位机利用通信模块与GPRS网络直接连接,实现了基于TCP的不依赖现场网络环境的可靠网络数据传输。其不仅可以在上位机上单独查看各个终端上传的数据,还可以对多个终端的数据进行交叉分析,大大提高了采集效率和数据的利用率。

其中,下位机可大体分为STM32微控制器、SIM900A通信模块和多传感器三部分。整套设备的成本非常低廉,STM32微控制器与SIM900A通信模块组成的核心部件仅需几十元钱,用户可根据需求选择理想的传感器模块。上位机程序采用基于C++语言的Qt设计,下位机与上位机之间通过TCP协议传输网络数据,每台上位机均可以接收多个终端的传感器上传的数据。系统的总体设计框图如图1所示。

2硬件设计

网络多点远程数据监测系统可以完成几乎所有种类的数据采集。因篇幅有限,本文以温度数据采集为例介绍整个系统的框架结构以及具体实现方法。 其他种类的数据采集,设计逻辑与温度数据采集基本相同,只需在下位机主程序循环中加入相应传感器的采集子程序和数据发送流程即可。

远程设备被安装在监测现场上,其通过各种传感器采集数据,经STM32微控制器处理发送至SIM900A通信模块,通信模块会通过端口将TCP数据从GPRS网络发送给上位机。上位机根据设备号的不同区别各个下位机。该系统的硬件电路图如图2所示。

2.1STM32F103ZET6微控制器

STM32F103ZET6增强型微控制器使用高性能的ARM CortexTM-M3 32位的RISC内核,工作频率为72 MHz,其具有112个GPIO接口,多种复用功能,具有非常高的可开发性[3]。

它的综合性能高,运行稳定,价格便宜,在工业应用中广为使用,是很多工程项目的理想解决方案[4]。

2.2SIM900A通信模块

无线通信模块采用SIM900A芯片实现,主要负责实现与远程终端的数据传输功能。SIM900A模块是一款尺寸紧凑、内置TCP/IP协议栈的GSM/GPRS模块[5]。

2.3DS18B20温度传感器

DS18B20是美信公司的一款温度传感器,单片机可以通过1Wire协议与DS18B20进行通信[6]。

3软件设计

本文所设计的系统由下位机程序与上位机程序两部分组成。其中下位机STM32程序负责数据采集以及定时将各种数据以TCP协议经由SIM900A模块发送给上位机。而上位机程序负责监听各端口TCP通信,处理由端口传入的TCP数据。

3.1下位机程序设计

下位机程序由主程序、发送TCP数据子程序和测量温度子程序三部分组成,均通过C语言进行设计。三个模块合作完成数据采集和上传工作。

3.1.1主程序

STM32主程序负责初始化各寄存器以及周期性地调用各功能子程序以采集数据并将采集到的数据通过GPRS网络发送给各上位机。这里需要注意的是,图3主程序流程图STM32微控制器的GPIO口和复用功能均有独立的时钟,使用前必须进行初始化,否则各外设无法正常工作。SysTick时钟用来产生心跳中断,实现延时功能。其系统流程图如图3所示。

3.1.2 发送TCP数据子程序

SIM900A通信模块采用串行接口与STM32进行通信。STM32应用AT指令与SIM900A通信[7]。本文主要应用SIM900A的TCP通信功能,涉及关于TCP协议的主要指令如表1所示。

跟据AT指令以及相应的指令格式,数据发送子程序的流程如图4所示

3.1.3测量温度传感器子程序

DS18B20温度传感器采用1Wire协议与STM32微控制器进行通信,它只有一个DQ引脚负责传递数据,具有非常复杂的软件时序。其程序流程图如图5所示。

3.2上位机程序设计

本文所设计的上位机系统采用Qt设计,它是一个跨平台的C++图形用户界面应用程序框架。它为应用程序开发者提供建立艺术级图形用户界面所需的所有功能。它是完全面向对象的,很容易扩展,并且允许真正的组件编程[8]。只需要编写一次应用程序,就可以在不同操作系统上部署这些程序。

Qt通过信号和槽的机制来完成两个Qt对象之间的通信。信号会在某个时机触发,而槽就是响应和处理信号的对应函数[9]。

3.2.1 ReceivedData类

上位机程序的核心是ReceivedData类,它是一个继承自QWidget类的自定义类。每个ReceivedData类对象对应一个端口,负责接收和处理不同下位机传输的TCP数据并完成数据在图表上的显示工作。

ReceivedData类中主要包含一个QCustomPlot类对象、一个QTcpServer类对象和一个QTcpSocket类对象。QCustomPlot类是一个体积小巧但功能很强的Qt绘图类,它提供给程序一个绘制图表的窗口,使用者可以通过对参数的设置在一个窗口内很容易地实现多条曲线绘制、鼠标拖曳滚轮缩放图像等功能。而QTcpServer类和QTcpSocket类对象的组合可以完成指定端口的TCP数据接收。ReceivedData类的主要构成如表2所示。

3.2.2TCP协议通信处理流程

Qt通过套接字完成TCP数据的传输,在接收到连接请求后TCP服务器会把新的连接绑定到套接字上。作为TCP服务器的上位机与作为TCP客户端的下位机交互流程图如图6所示。

4实验结果

分别在两个地点布置下位机系统,连接各传感器后开启下位机电源,上位机开始从指定端口接收到TCP数据。经过一段时间的监测,从远程的上位机处得到了监测数据的曲线。

图7展示了上位机远程监测两台下位机数据的运行效果,从当前图中可以清楚地看出两个监测地点的温度随时间的变化情况,通过组合框可以切换监测源的监测对象。上位机界面中包括两路通道,分别接收两个下位机上传的数据,多路数据监测界面的设计原理与其相同,只需按要求实例ReceivedData类对象就可以完成指定数量下位机的数据监测。

5结论

本文所设计的数据采集系统是一种非常适合复杂现场环境和临时测量的解决方案。这种测量终端与上位机没有距离限制并且节省了大量的人力物力,只要双方可以连接互联网就可以完成数据传输。在物联网技术迅猛发展的今天,这种结合了GPRS网络的远程数据采集系统非常具有实用价值。

参考文献

[1] 王志义,苗亚春.有线传输技术特点分析和发展方向[J].电子工程技术与软件工程,2013(17):193193

[2] 李阳辉.基于STM32和GSM的温度远程监控系统设计[J].自动化与仪器仪表,2015(1):5659.

[3] 卢有亮.基于STM32的嵌入式系统原理与设计[M].北京:机械工业出版社,2014.

[4] YIU J. ARM CortexM3与CortexM4权威指南[M].吴常玉,曹孟娟,王丽红,译.北京:清华大学出版社,2015.

[5] 甘志伟,闫凯.基于SIM900A的无线数据采集卡设计与实现[J].山西电子技术,2013(1):5558.

[6] 宋雪松,李冬明,崔长胜.手把手教你学51单片机:C语言版[M].北京:清华大学出版社,2014.

[7] 郑优讯,李宗伯.基于STM32微处理器的GPRS数据传输技术的研究[J].微型机与应用,2012,31(21):6164.

[8] 陆文周.Qt5开发及实例(第2版)[M].北京:电子工业出版社,2015.

[9] 金大臣尔.Qt5开发实战[M].张红艳,译.北京:人民邮电出版社,2015.

相关问答

目前常用的 单片机 型号有哪些?都有什么优缺点?

现在市场上的单片机型号可以说是非常多的,其中有通用型的单片机,还有专用型的单片机。专用型单片机一般我们不常见到。今天我们结合这个问题来介绍一下目前常...

华高科技怎么样?

综合排名比较靠前,全国前十的样子,为防杠精,前15吧,但终归来说属于强985华科在华中华南地区的影响力还是很大的,如果有打算在这些地区就业和发展,那华科是...

rm9003 a 和FM3081的功能相同吗?

不相同。因为rm9003a是一款无线WiFi模块,主要用于物联网、智能家居等领域,而FM3081是一款音频解码芯片,主要用于音频播放器等设备,两者的功能完全不同。需要...

盖德曼 900 里面怎么锁?

盖德曼ak900设置步骤如下:1、开始纸规,在门体确定位置上开孔。2、取出锁体,根据开门方向调整斜舌碰面。3、锁体放入开好孔的门体内,挂好天地钩,不能出现...

msp430f149 单片机 控制系统设计数据采集器原理

随着嵌入式系统的发展,嵌入式软件设计向软件平台靠近,单片机软件设计不再是单一线程结构方式,而是逐步采用多任务的设计思想。实时内核也称为实时操...

麻烦各位资深人士!我想了解 重庆什么是通信光模块,通信光...

[回答](11)与51系列单片机P0口连接时候,需要加10K的上拉电阻,与其余口连接不需要。(12)其他系列的单片机,如果是5V的,请参考该系列单片机IO口输出电流大小...

DSDN、BCF、S.P.I、PVC是什么意思?

[回答]词名:BCF中文解释:带通晶体滤波器缩写:BCF来历:bandpasscrystalfilter...

哈工程的自动化专业怎么样?

工业自动化部分主要面向应用,历史久远,常用到plc,单片机等与电气接近;信息控制领域则主要是研究新的控制方法和解决控制问题,理论性很强。电气工程里有一些...

电压补偿的定义

[回答]无功功率补偿装置在电子供电系统中所承担的作用是提高电网的功率因数,降低供电变压器及输送线路的损耗,提高供电效率,改善供电环境。所以无功功率补...

pcb小批量,华强pcb可以做吗?,PCB小批量优势有哪些??

[回答]这要看你所用的单片机和单片机所驱动的负载。如果单片机不带网络功能而且是节能型的,驱动的负载也很轻,则完全可以用钮扣电池,如CR2032电池。如PIC...

猜你喜欢