基于 CC3200 的超声波测距
扫描二维码
随时随地手机看文章
0 引 言
物联网是融合了传感器、计算机、通信网络、半导体技术实现的物与物之间的互联通信,其核心是“物物互联”[1]。传感器技术是物联网的关键技术之一,承担了对信息的实时采集,而无线网络通信技术则承担了对信息的有效传递。
客观世界里,物体总处在不断的运动变化中,因此物体之间距离的变化经常是需要实时监测的物理量。在物联网领域,距离数据采集与远程监测是常需解决的问题。
利用超声波遇到障碍物反射的原理制成的超声波传感器可用于近距离测量。超声波传感器模块能够将超声波的传输时间转换为电信号脉冲宽度,测量出脉冲宽度与已知声音的传输速度,经过计算转换就能得到待测距离。
TI CC3200 是德州仪器推出的一款用于物联网解决方案的单片无线 MCU,内部集成了 WiFi 处理器,可通过CC3200 实现测距数据的无线传输与远程监控。本文主要利用 CC3200 连接超声波测距模块,并在此基础上通过 CC3200工作在 WiFi 无线 AP 模式,实现用户通过浏览器在网页中控制与实时获取测距结果。
1 总体设计
本文系统由超声波模块、CC3200 Launchpad、客户端浏览器等组成。超声波模块用于发射、接收超声波,并将超声波的传播时间转换为电信号的脉冲宽度。CC3200 Launchpad板是整个系统的核心,其与超声波模块相连接,负责发送触发信号,启动超声波测距,接收脉宽信号,计算并转换为距离数据,同时作为 WiFi 无线 AP 服务器,将距离数据传输到客户端浏览器。用户使用时,在浏览器中打开 CC3200 服务器页面,通过页面中的按钮启动测距,网页中即可实时显示当前距离数据(单位 :mm)。系统总体结构如图 1 所示。
2 系统硬件
2.1 超声波模块
本文系统采用的超声波模块具备如下功能特性 :
(1)工作电压为直流 5 V ;
(2)发射 40 kHz 超声波进行测距 ;
(3)最远探测距离为 3.5 m,最近探测距离为 3 cm ;
(4)探测精度为 3 mm。
模块接口信号包括 VCC 电源正极、GND 地、Trig 触发信号输入、Echo 回波信号输出。其中,Trig 触发信号用于启动单次测距,由 CC3200 的 I/O 口输出到超声波模块 ;Echo回波输出信号的高电平脉冲宽度表示超声波的往返传输时间,输出到 CC3200 的 I/O 口进行采集,具体时序如图 2 所示。
2.2 SimpleLinkTM CC3200 Launchpad
本文系统的核心部件是 CC3200 Launchpad 开发板,CC3200 是 TI 推出的一款以 ARM Cortex-M4 为核心,集成WiFi 网络处理器的 MCU,主要应用于物联网解决方案。而CC3200 Launchpad 是 TI 为研发 CC3200 处理器应用提供的开发板,该开发板上集成有 Micro USB 接口(可连接电脑用于供电和调试)、FTDI JTAG 仿真器(支持串口编程)及40 Pin 接口(用于连接外部器件)等。CC3200 硬件概况如图 3 所示。
CC3200 MCU有多达27个GPIO口,分为4组(GPIOA0~ 3),可编程为输入或输出引脚,所有 GPIO 引脚均有中断能力,具有可配置的驱动能力。本文系统使用 CC3200 的 2 个GPIO 口 :其中一个作为输出,用于与超声波模块的 Trig 脚相连 ;另一个作为输入,与超声波模块的 Echo 脚相连。
2.3 3.3 V 转 5 V 接口电路
因为 CC3200 Launchpad 板的工作电压为 3.3 V,而超声波模块的工作电压为 5 V,所以当 CC3200 GPIO 引脚与超声波模块引脚互联时,需要解决 3.3 V 到 5 V 的电平转换问题。
本文系统采用的方法分为如下两种情况 :
(1)CC3200 引脚输出,超声波模块 Trig 引脚输入。根 据 CC3200 的 Datasheet,其 GPIO 引脚输出逻辑“1”的电压 VOH ≥ 2.4 V,因此可以与超声波模块 Trig 引脚直接相连。
(2)CC3200 引脚输入,超声波模块 Echo 引脚输出。采用电阻分压做电平转换,具体电路如图 4 所示。
电阻取值为 R1=1.2 MΩ,R2=1.2 MΩ 时,可保证 CC3200输入高电平的电压大于 VIH=0.65Vcc=2.132 V,且输入低电平的电压不高于 VIL=0.35Vcc=1.148 V(Vcc=3.28 V)。
3 系统软件
本文系统的网络架构采用典型的客户端 - 服务器模式。CC3200 的 SimpleLink 网络处理器工作在无线 AP 模式,作为服务器监听客户端发来的请求。用户可使用 PC、手机、平板连接该系统的无线 AP,用浏览器打开对应网页,网页中的按钮用于发出开启与关闭测距的指令,前端网页设计中采用 AJAX 技术在不重新加载全部页面的情况下实时更新显示当前测距结果。
3.1 CC3200 程序设计
CC3200 MCU 程序在 CCS 集成开发环境下开发,TI 同时提供了软件开发包 CC3200 SDK,SDK 中包含外设驱动库、SimpleLink 网络处理器驱动代码、各种网络协议 API,TIRTOS 实时操作系统等,用户可充分利用这些已有的 API 和库更高效地编写 CC3200 MCU 的各种应用程序。本文系统总体流程如图 5 所示。
3.1.1 GPIO 口配置
正确配置 CC3200 的 GPIO 口是连接超声波模块程序的基础。PinMuxConfi g() 为 GPIO 引脚复用配置函数,其中调用 MAP_PinTypeGPIO() 设置引脚类型,MAP_GPIODirModeSet() 设置引脚方向, 参 数 GPIO_DIR_MODE_IN 为输入,GPIO_DIR_MODE_OUT 为输出。
3.1.2 Echo 脉冲宽度测量
CC3200 内部有 4 个 32 位可编程通用定时器,本文程序使用其中的 TIMERA0,操作模式由函数 Timer_IF_Init()设置为 TIMER_CFG_ONE_SHOT,即 32 位单次定时器。当查询检测到 Echo 信号被拉高时,调用函数 Timer_IF_Start()开始定时器计时,然后等待 Echo 信号被拉低,再停止定时器计时,调用 MAP_TimerValueGet()获取定时时间,该函数返回的时间数值单位为毫秒。本文程序同时设置定时器中断作为 Echo 信号超时处理。
3.1.3 距离计算
距离计算公式为 :被测距离 =(Echo 信号脉冲宽度 ×声速)/2。其中,Echo 信号脉冲宽度已通过定时器获取,声速一般是 340 m/s,该值可根据实际测量时的环境情况校准。
3.1.4 响应 GET 请求
SimpleLinkHttpServerCallback() 是处理 HTTP 服务器事件的回调函数,其中由 case 语句分类处理客户端的 POST 和 GET 请求。客户端定时发出 GET 请求获取测距数据,并且该 GET 请求用“__SL_G_DST”进行标记。 “__SL_G_DST”是程序根据预定义标记(Token)规则定义的用户标记,用以标识网页对服务器测距数据的请求。SimpleLinkHttpServerCallback()接收到该标记后,将测距数据的值转换为字符串作为标记值返回至客户端。
3.2 前端网页程序设计
本文应用的网页存储在 CC3200 内部 FLASH 中,需要事先使用 TI 的 CCS UniFlash 工具进行编程烧录。网页程序使用 Javascript 语言编写,在客户端设备上执行。为了能够在不重载页面的情况下与服务器交换数据,实时显示测距结果,本文采用 AJAX 技术。对于程序中编写的标记轮询函数com.TI.tokenPoller(),第一个参数“paramPage”指定调用$.ajax()时的参数网页,第二个参数“refreshRate”控制轮询的周期即数据刷新时间,第三个参数“valueMap”指定调用 $.ajax()函数时包含的 GET 标记“__SL_G_DST”,同时参数也指定了服务器成功返回时的处理函数,该函数用于获取返回的“__SL_G_DST”标记的值,并更新网页中的测距结果显示。
4 结 语
本文介绍了基于 CC3200 芯片的超声波测距系统,该系统实现了距离的检测及测量结果的无线传输。本文充分利用了 CC3200 芯片集成的网络功能,以单芯片方式实现了连接传感器模块测距与 HTTP 服务器两个功能,使用户能方便地通过网页获取测距结果,在物联网数据采集领域具有一定的应用价值。