查看: 1318|回复: 0

【Mbed_BLE_Sensors_Tag板卡试用】(二):板上的各功能测试(IO、蓝牙、加速度/温度/压力传力感器等)

[复制链接]
  • TA的每日心情
    无聊
    2016-10-8 20:34
  • 签到天数: 10 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2016-8-11 09:03:30 | 显示全部楼层 |阅读模式
    分享到:
    接上一贴https://jingyan.eeboard.com/article/75348
    板子到手后,还不熟悉,还没想好要做什么设计,那么就把板子上的设备先测一遍再说;
    按照linksprite官网页面https://www.linksprite.com/wiki/index.php5?title=Mb...
    一个一个地测来:
    1、LED:双色LED;
    2、KEY:两个按键;
    3、BUZZER:一个无源蜂鸣器;
    4、BLE:蓝牙功能;
    5、UART:板子上的串口;
    6、LIS3DH:SPI接口的三轴加速度传感器;
    7、BMP180:IIC接口的温度和压力传感器;
    测完后,只恨自己不会C++,短时间内也入不了门了,不过勉强还是能使用这块板子的,总结如下:
    1、GPIO口可以正常使用,LED可以用来做指示灯,按键可以用来做输入,蜂鸣器可以用来做提示和警示,剩余引出的GPIO可以用来扩展一些功能;
    2、蓝牙部分需要学习,可以用来跟手机进行通信;串口可以正常使用,可以用来跟PC机进行通信,特别是用于调试;
    3、传感器可以正常使用,可以用在网上找的程序读出传感器数据,加速度传感器可以用来测倾角,振动等,温度传感器可以用来监测板卡温度,压力传感器暂时没想到用来做什么;
    详细测试过程如下:
    1、LED:直接在Mbed_BLE_Sensors_Tag板卡官网找程序,复制粘贴到main.cpp里面,保存编译下载运行,就可以观察到LED闪烁了。
    #include "mbed.h" DigitalOut LED_R(P0_20);    // Configure and control a digital output pinDigitalOut LED_G(P0_19);int main() {     while(1)     {         LED_R=0;   // low level is lighted         LED_G=1;         wait(0.5);         LED_R=1;         LED_G=0;         wait(0.5);     }  }这里面涉及到两个函数,DigitalOut 和wait


    2、KEY:也是直接在Mbed_BLE_Sensors_Tag板卡官网找程序,复制粘贴到main.cpp里面,保存编译下载运行,然后去按按键,观察现象。
    #include "mbed.h" DigitalOut LED_R(P0_20);   // Configure and control a digital output pin DigitalOut LED_G(P0_19); DigitalIn key1(P0_28);     // Configure and control a digital input pin DigitalIn key2(P0_29);  int main() {     unsigned char i = 0;          while(1)     {         if(!key1)  // get key value         {             wait_ms(10);             if(!key1)                 i = 1;             }         else if(!key2)         {             wait_ms(10);             if(!key2)                 i = 2;              }         else i = 0;                  if(i == 1)     // light LED             {                LED_G = !LED_G;                LED_R = 1;                wait(0.2);                }        else if(i == 2)            {                LED_R = !LED_R;                LED_G = 1;                wait(0.2);                }        else            {                LED_R = 1;                LED_G = 1;               }     }  }这里涉及到一个新的函数DigitalIn :

    3、BUZZER:跟LED一样,都是IO口做数字输出用,只是换了一个IO口:
    #include "mbed.h"DigitalOut buzzer(P0_22);    // Configure and control a digital output pinint main() {     unsigned char i = 1;          while(1)     {             buzzer=!buzzer;                 wait_ms( i++ / 100 );  // frequency can be 1KHz/500Hz/333Hz       }  }4、BLE:蓝牙功能,板卡官网上最后面的地方给了一个例程,例程的网址是https://developer.mbed.org/users/helloqi/code/Link...
    还给了安卓系统的蓝牙软件APK地址https://static1.squarespace.com/static/5039e08be4b0...
    把例程下载到板子上,应用软件装在手机上,照着官网的步骤试了一下,可以用。

    5、UART:串口直接在Mbed_BLE_Sensors_Tag板卡官网找程序,复制粘贴到main.cpp里面,保存编译下载运行,连接到PC机,用串口助手就可以看到现象;
    #include<mbed.h>Serial pc(P0_23,P0_25); int main(void){    unsigned char i = 0;    pc.baud(9600);    while(1)    {          printf("--runing--%d--\r\n",i++);        wait(0.5);    }}这里涉及到一个新的函数Serial ,配置时只需要配置基本参数就可以了。

    运行后,用串口助手可以看到测试程序发送的数据,直接使用中文字符编译时会警告串口助手看到乱码:

    6、LIS3DH:SPI接口的三轴加速度传感器,没有去看手册,直接复制Mbed_BLE_Sensors_Tag板卡官网找程序,复制粘贴到main.cpp里面,保存编译下载运行,将加速度信息用串口送到串口助手,观察。
    #include<mbed.h> uint16_t x_a,y_a,z_a; bool flag = 0; SPI spi_master(P0_6,P0_5,P0_7); //mosi miso sclk  DigitalOut cs(P0_4); Serial pc(P0_23,P0_25); uint8_t LIS3DH_SPI_RD(uint8_t addr) {     uint8_t  temp;     cs = 0;     wait_us(10);     spi_master.write(addr);           temp=spi_master.write(0xff);     wait_us(10);     cs = 1;     return temp; } void LIS3DH_SPI_WR(uint8_t addr,uint8_t wrdata) {       cs = 0;     wait_us(10);     spi_master.write(addr);     spi_master.write(wrdata);     wait_us(10);     cs = 1; } void SPI_LIS3DH_Init() {    spi_master.format(8,3);    spi_master.frequency(100000);    wait_ms(5);    LIS3DH_SPI_WR(0x24,0x80);    wait_ms(5);    LIS3DH_SPI_WR(0x20,0x17);    LIS3DH_SPI_WR(0x23,0x80); } void get_val(void) {     uint8_t Dx_L=1,Dy_L=1,Dz_L=1;     uint8_t Dx_H=1,Dy_H=1,Dz_H=1;     if(LIS3DH_SPI_RD(0x0f|0x80)==0x33)     {          printf("check device ok!\r\n");          flag=1;          Dx_H=LIS3DH_SPI_RD(0x29|0x80);             Dx_L=LIS3DH_SPI_RD(0x28|0x80);          Dy_H=LIS3DH_SPI_RD(0x2b|0x80);          Dy_L=LIS3DH_SPI_RD(0x2A|0x80);          Dz_H=LIS3DH_SPI_RD(0x2d|0x80);          Dz_L=LIS3DH_SPI_RD(0x2C|0x80);       }     else printf("check device err!\r\n");     x_a=Dx_H<<8|Dx_L/16;     y_a=Dy_H<<8|Dy_L/16;     z_a=Dz_H<<8|Dz_L/16; } int main(void) {   SPI_LIS3DH_Init();   while(1)   {        get_val();      if(flag)      {          printf("Dx=:%d\r\n",x_a);          printf("Dy=:%d\r\n",y_a);          printf("Dz=:%d\r\n\r\n",z_a);          flag=0;          wait(1);      }   } }板卡静置时的加速度新信息:

    倾斜板卡时的加速度信息:

    7、BMP180:IIC接口的温度和压力传感器,按照Mbed_BLE_Sensors_Tag板卡官网的指导,我没有成功写出可以编译成功的程序,后面就在mebd上搜了一个BMP180的程序,将里面的示例程序修改一下IO口成功的。
    // show how the BMP180 class works#include "mbed.h"#include "BMP180.h"Serial pc(P0_23,P0_25);int main(){   long temp ;   long pressure;   int error ;      pc.baud(9600);   BMP180 mybmp180(P0_17,P0_18);   while(1) {       error = mybmp180.readTP(&temp,&pressure,OVERSAMPLING_ULTRA_HIGH_RESOLUTION);       printf("Temp is %.2f\r\n",(float)temp/10);       printf(&quotressure is %ld\r\n",pressure);       printf("Error is %d\r\n\r\n",error);       wait(2);   }}用手摸一会,温度和压力值会稍微有些变化,由于板卡温度已经超过36℃,所以我手摸上去,温度会稍微降低一些。

    至此,板卡上的各个功能基本测完了。
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /5 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-12-20 07:12 , Processed in 0.122358 second(s), 18 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.