这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 板卡试用 » 【ARDUINONANO33BLESENSE】过程贴

共1条 1/1 1 跳转至

【ARDUINONANO33BLESENSE】过程贴

助工
2025-05-16 11:16:41     打赏

   
开发环境是Arduino, 在板卡管理器中,选择“Arduino Mbed OS Nano Boards”

image.png

后续在过程贴中记录开发的一些细节。

image.png

采集车内气压数据使用的是LPS22HB大气压力传感器。LPS22HB 是一款超紧凑型压阻式绝对压力传感器,可用作数字输出气压计。该器件包括一个传感元件和一个 I2C 接口,该接口通过 I 2 C 或 SPI 从传感元件与应用程序进行通信。
检测绝对压力的传感元件由采用 ST 开发的专用工艺制造的悬浮膜组成。
LPS22HB 采用全模制、带孔 LGA 封装 (HLGA)。保证在 -40 °C 至 +85 °C 的温度范围内运行。封装上有孔,以允许外部压力到达传感元件。对于LPS22HB,可以使用IIC进行通讯。要注意最大通信速率为400K.

image.png
                            
     要驱动这个传感器,需要安全驱动:

image.png

初始化:

#include <Arduino_LPS22HB.h>

  if (!BARO.begin()) {    
  Serial.println("Failed to initialize pressure sensor!");    
  while (1)      
  ;  
  }

   这颗传感器还同时可以获取温度!

    

  float pressure = BARO.readPressure();
  // print the sensor value  Serial.print("Pressure = ");  Serial.print(pressure);  Serial.println(" kPa");
  float temperature = BARO.readTemperature();
  // print the sensor value  Serial.print("Temperature = ");  Serial.print(temperature);  Serial.println(" C");

           

串口测试:

image.png


对于车内湿度数据的获取,采用HS300X驱动板载的HS3003温湿度传感器。


image.png


  float humidity = HS300x.readHumidity();  Serial.print("Humidity    = ");  Serial.print(humidity);  Serial.println(" %");  // print an empty line  Serial.println();


串口输出:

image.png


APDS9960是一个多功能传感器,不仅可以用作接近传感器,还可以分别颜色,通过R,G,B三个分量结合公式,可以算出相对光亮照度。

image.png


代码

  static int proximity;
  if (APDS.proximityAvailable()) {
    // read the proximity
    // - 0   => close
    // - 255 => far
    // - -1  => error
    proximity = APDS.readProximity();

    // print value to the Serial Monitor
    Serial.print("Proximity    = ");
    Serial.println(proximity);
  }

  static int r, g, b;
#if 1
  // Check if a color reading is available
  if (APDS.colorAvailable()) {
    APDS.readColor(r, g, b);
  }

  // print the values
  Serial.print("r = ");
  Serial.println(r);
  Serial.print("g = ");
  Serial.println(g);
  Serial.print("b = ");
  Serial.println(b);
  Serial.println();

  float lux;
  lux = ((r * 299.0) + (g * 587.0) + (b * 114.0)) / 1000.0;


为了实现蓝牙开关灯的效果,加入了Arduino BLE模块,这样手机就可以连接开发板,控制板载的LED灯。

image.png

enum {
  LED_OFF = -1,
  LED_R = 0,
  LED_G = 1,
  LED_B = 2,
  LED_Default = 3
};

int led = -1;

const char* deviceServiceUuid = "19b10000-e8f2-537e-4f6c-d104768a1214";
const char* deviceServiceCharacteristicUuid = "19b10001-e8f2-537e-4f6c-d104768a1214";

BLEService ledService(deviceServiceUuid);
BLEByteCharacteristic ledCharacteristic(deviceServiceCharacteristicUuid, BLERead | BLEWrite);

在loop循环中:

  BLEDevice central = BLE.central();
  Serial.println("- Discovering central device...");

  if (central) {
    Serial.println("* Connected to central device!");
    Serial.print("* Device MAC address: ");
    Serial.println(central.address());
    Serial.println(" ");

    while (central.connected()) {
      if (ledCharacteristic.written()) {
        led = ledCharacteristic.value();
        writeled(led);
      }

      UpdateSensorValue();
    }

    Serial.println("* Disconnected to central device!");
  }


烧录后,打开手机蓝牙助手,可以看到小开发板的设备名称。

image.png

image.png


通过发送不同的指令,可以控制不同颜色的灯。

image.png




共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]