老年人摔倒现场录像机重点_第1页
老年人摔倒现场录像机重点_第2页
老年人摔倒现场录像机重点_第3页
老年人摔倒现场录像机重点_第4页
老年人摔倒现场录像机重点_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于STM32的彩信发送老人摔倒前图像+定位装置摘要:近年来,关于老人摔倒后无人搀扶、撞倒老人后迅速跑掉的新闻屡见不鲜。随着人们对于道德的淡忘和人情的冷漠,越来越多的老人在发生意外时得不到及时的帮助,本文阐述的装置基于coretex-M3内核,通过摄像头、内存卡和GSM/GPRS模块实现采集图像、存储图像、发送图像以及定位的作用。能够对老人户外安全问题产生较大帮助。 关键词:coretex-M3;STM32;OV2640模块;SIM900A模块;SD卡;彩信;基站定位0 引言图2 显示事故地点图1 彩信发送事故前环境图片老人出门佩戴本文装置时,装置能在老人摔倒时,将摔倒之前几秒钟内的环境图片发

2、送给子女的手机,如图1,并将老人摔倒地点显示在子女手机上,如图2。显而易见这个装置有两个优点:第一,如果有人撞倒老人后不承认或者跑掉,那么,子女手机上的图片会成为直接证据或破案线索。第二,装置记录下了老人摔倒的真实情况,消除了路人想去帮忙但又担心承担责任的顾虑,有利于老人得到路人的及时救助。1 硬件介绍装置完成上述功能,需实现下述流程:开机后,摄像头即进入拍照状态,设置拍照频率为1秒/张,将照片存入内存卡中,当有较大震动的时候,立即进入中断,获取经纬度并上传,之后调取大震动前6秒内图像,通过彩信发送。由于是在户外使用,所以需要配备电池,所以必须考虑如何降低功耗,在这个流程的基础上,装置增加了一

3、个待机模式,如图3。当老人在正常行走过程中,会引起装置轻微的震动,这个小震动保证装置正常运行,当老人将装置放在桌子上或其他原因导致装置25秒内感受不到轻微震动时,装置自动进入待机模式。图3 流程图1.1 处理器模块处理器模块采用STM32F103RBT6核心板,它的处理速度满足上述功能要求,而且,STM32在待机状态下最低仅需要2A的电流,能够实现降低功耗的目的。核心板见图4。图4 STM321.2 图像采集和存储部分摄像头模块采用OV2640,相对于76*图5 OV2640与STM32连线图系列摄像头模块,OV2640优势很明显,不需要FIFO,通过内部DSP压缩后直接输出jpg图像数据,以

4、320像素×240像素RGB565图片为例,76*模块输出原始数据在150KB左右,而OV2640输出JPEG数据只有46KB,虽然是有损压缩,但图像质量仍然非常好,而且同样图像传输JPEG比传输原始数据更快。OV2640与STM32的连接方式如图5(其中USART3_RX是SDA第30pin PB11,USART3_TX是SCL第29pin PB10)。关于彩信发送方面,本文设定将6张图像集中在1个彩信中发送,中国移动对外宣称彩信最大容量为100KB,这使得 OV2640模块成为最优选择。由于在事故发生时装置要调出之前6张照片,单靠处理器内存压力很大,所以本文中为装置增加了一个8G

5、 Micro SD卡,插在Micro SD卡模块中,用来存储照片。1.3 发送模块为了保证装置在户外能够进行定位和发送彩信,需要用到SIM卡。必不可少的与之配套还要有GSM/GPRS模块,这里选择SIM900A模块,SIM900A是一个2频的GSM/GPRS模块,支持接打电话、接发短信、接发彩信、基站定位、GPRS功能。工作频段为:EGSM图6 SIM900A模块 900MHZ和DCS 1800MHZ。SIM900A支持GPRS multi-slot class 10/class 8(可选)和GPRS编码格式 CS-1,CS-2,CS-3 and CS-4。SIM900A采用省电技术设计,在S

6、LEEP模式下最低耗流只有1mA,能够保证装置在没有事故发生时,模块处于SLEEP状态省电的需要。SIM900A模块带一组232电平接口,可以和电脑直接连接,也可以通过USB-TTL连接电脑,模块可以通过AT指令设置自己将读取到的每条指令写出,在串口调试助手上直观地显示出了模块接收到的每一条指令以及模块对应做出的回应,这点对于测试非常方便。此外,该模块内嵌TCP/IP协议,扩展的TCP/IP命令让用户能够很容易使用TCP/IP协议,这些在数据传输方面应用时非常有用。但是SIM900A模块有一点不完美,在搜寻网络和上传数据时,模块的峰值电流将达到2A,所以一般的充电电池就不能满足需要,通过比较,

7、最终选择了1800mah的12V聚合物锂电池,体积只有62mm×37mm×17mm,通过可调降压模块将电压从12V降到4V(SIM900A模块电压范围3.5V-4.5V),电流即可满足峰值需要。硬件连线示意图见图7。图7 硬件连线示意图2 软件介绍在显示事故地点方面,需要手机软件的配合。本文介绍一款国内创业公司开发的物联网平台Yeelink。Yeelink目前定位于做一个开放的通用物联网平台,主要提供传感器数据的接入,存储和展现服务,为所有的开源软硬件爱好者、制造型企业,提供一个物联网项目的平台,使得硬件和制造业者能够在不关心服务器实现细节和运维的情况下,拥有交付物联网化的

8、电子产品的能力。它有很多功能,这里本文仅拿要用到的接入传感器设备这个功能进行描述:它能够支持用户使用HTTP,MQTT或socket等方式连入平台,支持以Json,XML等标准格式上传传感器的数据,在socket模式下,还能提供实时的传感器设备实时反向控制功能(即由web或APP远程控制接入设备),所有的数据存入和取回等API手册完全开放,并支持客户进行二次开发,利用这个功能,装置可以通过SIM900A获取装置经纬度,然后通过HTTP请求,与Yeelink平台建立连接,将经纬度信息上传平台,平台同步更新手机APP和电脑地图界面的坐标显示。手机界面如图8。电脑界面如图9。图中显示了本文在创建的设

9、备中添加了2个传感器:一个是GPS,说是GPS定位,其实并不准确,因为SIM900A不带GPS定位功能,仅带有基站定位功能。GPS适合露天能够搜索到卫星的地方,在室内几乎不能使用,而基站定位,虽然提供的经纬度误差相对于GPS大些,但可以在室内实现定位,本文装置虽然考虑用于户外,但不能排除老人在商场等室内场所摔倒的可能,加上节省成本的考虑,所以这里直接使用了SIM900A自带的基站定位。另外一个是远控开关,这部分可以实现功能是:当老人走失后,子女通过打开这个开关,GPS地图部分即可传回老人所在的地点(由于本文重点不在走失上,所以不对这部分进行详述)。图8 Yeelink手机软件界面图9 Yeel

10、ink电脑界面3 程序设计3.1 OV2640模块部分单片机与OV2640的通信采用串行与并行结合的方式。OV2640带有SCCB(Serial Camera Control Bus)双线串行接口,单片机通过SCCB接口配置和读取OV2640的信息,通过并行接口总线的方式来接收OV2640的图像数据。从OV2640获取图像数据,需要用到的信号线包括:8位数据总线Y2Y9,帧同步信号VSYNC,行同步信号HREF,像素同步信号PCLK,SCCB总线SIO_C和SIO_D。其图像数据输出的时序图如图10。图10 OV2640数据时序图帧同步信号VSYNC是低电平有效,HREF是高电平有效,当引脚V

11、SYNC为高电平时表示一帧数据已经准备好,当由高电平变成低电平时表明是一帧图像数据传输的开始。为了得到有效的像素数据,一般将HREF和PCLK连接一个与非门,使得在行信号无效时不输出像素同步信号,用其输出信号作为像素数据同步。OV2640的初始化配置:OV2640_ReadID(&OV2640_Camera_ID); /*读取OV2640 ID,测试硬件*/OV2640_JPEGConfig(JPEG_320x240); /*输出320x240像素JPG图片*/OV2640_BrightnessConfig(0x20); /*配置亮度,0x40:+2,0x30:+1,0x20:0,0x

12、10:-1,0x00:-2*/OV2640_BandWConfig(0x00); /* 设置黑白彩色模式0x18:B&W,0x40:Negative,0x58:B&W negative,0x00:Normal */OV2640_CaptureGpioInit(); /*数据采集引脚初始化*/OV2640在中断函数中,通过一个全局图像缓存区JpegBuffer存储每张图片数据,然后在存储程序中将数据写入内存卡,涉及到的中断程序如下:void EXTI15_10_IRQHandler(void) if(EXTI_GetITStatus(EXTI_Line15) != RESET)

13、/检查指定的EXTI0线路触发请求发生与否EXTI_ClearITPendingBit(EXTI_Line15); /清除EXTI0线路挂起位JpegBufferJpegDataCnt+ = (u8)(GPIOC->IDR);/把图像数据存入JpegBuffer3.2 内存卡存储部分SD卡(Secure Digital Memory Card)的指令由6个字节组成,字节1的最高2位固定位01,低6位为命令号(比如CMD16,为10000即16进制的0x10,完整的CMD16,第一字节为01010000,即0x10+0x40)。字节25为命令参数,有些命令是没有参数的。字节6的高七位为CR

14、C值,最低位恒定为1,如表1。几个主要的命令如表2。表1 SD卡命令格式字节1字节25字节6765 031 07 1001command命令参数CRC1表2 SD卡主要命令命令参数回应描述CMD0(0x00)NONER1复位SD卡CMD8(0x08)VHS+Check patterR7发送接口状态命令CMD9(0x09)NONER1读取卡特定数据寄存器CMD10(0x0A)NONER1读取卡标志数据寄存器CMD16(0x10)块大小R1设置块大小(字节数)CMD17(0x11)地址R1读取一个块的数据CMD24(0x18)地址R1写入一个块的数据CMD41(0x29)NONER3发送给主机容量

15、支持信息和激活卡初始化过程CMD55(0x37)NONER1告诉SD卡,下一个是特定应用命令CMD58(0x3A)NONER3读取OCR寄存器所有主机与SD卡间的通信由主机控制,主机发送下述两类命令,对卡而言也有两类操作:·卡识别模式在重置(reset)后当主机查找总线上的新卡时,处于卡识别模式。重置后SD卡始终处于该模式,直到收到SEND_RCA命令(CMD3)。·数据传输模式一旦卡的REC发布后,将进入数据传输模式。主机一旦识别了所有总线上的卡后,将进入数据传输模式。图11 SPI模式SD卡操作流程有两种方式可对SD卡进行通信,SPI(Serial Peripheral

16、 Interface)和SDIO(Secure Digital Input and Output Card),这里笔者采用的是SPI模式,在SD卡收到复位命令(CMD0)时,CS为有效电平(低电平)则SPI模式被启用,要注意在发送CMD0之前,必须发送大于74个时钟脉冲,这是因为SD卡内部有个供电电压上升时间,而且还需要SD卡同步,在卡初cc,CLK时钟最大不能超过400KHz。SPI模式下SD卡的操作流程如图11。对卡的基本读写操作命令有:数据块读命令READ_BLOCK(CMD17)、多数据块读命令EAD_MULTIPLE_BLOCK(CMD18)和数据块写命令WRITE_BLOCK(CM

17、D24)、多数据块写命令WRITE_MULTIPLE_BLOCK(CMD25)。初始化步骤:1. 初始化与SD卡连接的硬件条件(MCU的SPI配置,IO口配置)。2. 上电延时(>74个CLK)。3. 复位卡(CMD0),进入IDLE状态。4. 发送CMD8,检查是否支持2.0协议。5. 根据不同协议检查SD卡(命令包括:CMD55、CMD41、CMD58和CMD1等)。6. 取消片选,发多8个CLK,结束初始化。读取步骤:1. 发送CMD17。2. 接收卡响应R1。3. 接收数据起始令牌0xFE。4. 接收数据。5. 接收2个字节的CRC,如果不使用CRC,这两个字节在读取后可以丢掉。

18、6. 禁止片选之后,发多8个CLK。写操作步骤:1. 发送CMD24。2. 接收卡响应R1。3. 发送写数据起始令牌0xFE。4. 发送数据。5. 发送2字节的伪CRC。6. 禁止片选之后,发多8个CLK。通过SD卡初始化程序SD_Init()完成SD卡的初始化。然后通过下面程序判断SD卡初始化情况:switch(SD_Init() case 0: USART_SendString ("SD Card Init Success!n"); break; /初始化成功case 1: USART_SendString ("Time Out!n");break;

19、 /错误,初始化时间过长 case 99: USART_SendString ("No Card!n");break; /错误,没有SD卡 default: USART_SendString ("Oh Mygodn");break; /错误,其他情况由于每张图片仅3KB左右,所以笔者选择通过SD卡最基础的直接向扇区写入和读取的方式来存储和调出图片数据,SD卡读取写入语句:SD_WriteSingleBlock(30,send_data);/向扇区30写入512字节数据(单个块)SD_ReadSingleBlock(30,receive_data);/读出

20、扇区30的所有数据(单个块)SD_WriteMultiBlock(50,send_data,6);/从扇区50开始,写入6个扇区的数据(多个块)SD_ReadMultiBlock(50,receive_data,6);/从扇区50开始,读出6个扇区的数据(多个块)3.3 彩信程序SIM900A模块与STM32之间是串口通信,通过下面两条程序接收STM32指令:USART_SendString(unsigned char *p_STR);/发送字符串指令USART1_Transmit(u8 ch_data);/发送单字节彩信指令发送程序:USART_SendString("ATrn&q

21、uot;);/检验串口通信是否正常USART_SendString("AT+CPIN?rn");/查询SIM卡的状态,主要是PIN码USART_SendString("AT+CGATT?rn");/查询GPRS网络附着情况USART_SendString("AT+CMMSINITrn");/初始化彩信USART_SendString("at+cmmscurl=""rn");/配置中国移动手机彩信中心地址USART_SendString("AT+CMMSCID=1rn");/设

22、置承载上下文IDUSART_SendString("at+cmmsproto="72",80rn");USART_SendString("at+cmmssendcfg=6,3,0,0,2,4rn");/配置彩信USART_SendString("AT+SAPBR=3,1,"Contype","GPRS"rn");/设置网络USART_SendString("AT+SAPBR=3,1,"APN","CMWAP"r

23、n");USART_SendString("AT+SAPBR=1,1rn"); USART_SendString("AT+SAPBR=2,1rn");USART_SendString("AT+CMMSEDIT=1rn");/进入彩信模式for(i2=0;i2<6;i2+)/分6次读取6张图片放在JpegBuffer1中a+=20; /每张图片间隔20个扇区if(a = 120)a = 0;DuQu(address+a);/DuQu()是一个读取每张图片的子函数for(i=0;i<6144;i+)/jpg格式图片以

24、FF D8开头,FF D9结尾,接收到FF D9跳出if(JpegBuffer1i=0xD9)aa1 = i;aa1-;if(JpegBuffer1aa1=0xFF)break;aa1+;/aa1为图片所占字节数ab13 = (aa1%10+48);/将个位赋给ab3aa1/=10;ab12 = (aa1%10+48);/将十位赋给ab2aa1/=10;ab11 = (aa1%10+48);/将百位赋给ab1aa1/=10;ab10 = (aa1%10+48);/将千位赋给ab0USART_SendString("AT+CMMSDOWN="PIC",")

25、;/for(i=0;i<4;i+)USART_Transmit(ab1i); /AT指令中必须有图片字节数(数量必须一样,很重要)USART_SendString(",50000rn");Delay_nMS(1800);for(i=0;i<6144;i+)/向SIM900A写入图片USART_Transmit(JpegBuffer1i);if(JpegBuffer1i=0xD9)aa1 = i;aa1-;if(JpegBuffer1aa1=0xFF)break;/遇到FF D9则表示这张图片上传完成,跳出Delay_nMS(1800);USART_SendStr

26、ing("AT+CMMSRECP="1310217*"rn");/这里写接收者的手机号码USART_SendString("AT+CMMSSENDrn");/通过GPRS上传6张图片USART_SendString("AT+CMMSEDIT=0rn");/退出配置模式USART_SendString("AT+SAPBR=0,1rn");/退出承载,释放网络连接USART_SendString("AT+CMMSTERMrn");/退出彩信功能3.4 基站定位程序SIM900A自

27、带的基站定位可通过AT+CIPGSMLOC=1,1指令返回经纬度信息,在STM32串口接收中断中提取出经纬度坐标,请求经纬度程序如下:USART_SendString("ATrn");USART_SendString("AT+CSQrn");/获取信号强度USART_SendString("AT+CREG?rn");USART_SendString("AT+CGATT?rn");USART_SendString("AT+SAPBR=3,1,"CONTYPE","GPRS&qu

28、ot;rn");/设置网络USART_SendString("AT+SAPBR=3,1,"APN","CMWAP"rn");/设置网络USART_SendString("AT+SAPBR=1,1rn");USART_SendString("AT+SAPBR=2,1rn");USART_SendString("AT+CIPGSMLOC=1,1rn");/这条语句后记录返回的经纬度值for(i10=0;i10<8;i10+)JingDui10 = UsartJie

29、Shou34+i10;/从串口中断读取的经度值给JingDufor(i10=0;i10<7;i10+)WeiDui10 = UsartJieShou45+i10;/ 从串口中断读取的纬度值给WeiDu将SIM900A模块与Yeelink网站进行连接,并上传经纬度信息:USART_SendString("ATrn");USART_SendString("AT+CGATT=1rn");USART_SendString("AT+CIPCSGP=1,"CMNET"rn");/设置网络USART_SendString(

30、"AT+CLPORT="TCP","80"rn");/设置网络类型和端口USART_SendString("AT+CIPSTART="TCP","","80"rn");/Yeelink地址端口USART_SendString("AT+CIPSENDrn");/这条程序后写上传内容USART_SendString("POST /v1.0/device/10321/sensor/18230/datapoints HTTP/1.1r

31、n");/HTTP请求USART_SendString("User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:9.0.1)Gecko/20100101 Firefox/9.0.1rn”); USART_SendString("Host: rn");USART_SendString("U-ApiKey: 73958936022258e6d1aeb6ce*rn");USART_SendString("Content-Length: 52rn");USART_SendString("Content-Type: application/x-www-form-urlencodedrn");USART_SendString("rn");USART_SendString(""value":"lat":");for(i10=0;i10<7;i10+)USART_Transmit(WeiDui10);/上传纬度值USART_SendString(","lng":&qu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论