胶囊传感器快速入门

[English]

摘要

使用胶囊传感器时,请注意以下问题

  • 胶囊传感器本身定位为一个小型,组装和部署传感器.它没有编程,调试和其他接口.您需要使用[调试板](https://heltec.org/product /cubecell-capsule-debug/)来编写和调试程序

  • 由于储存和运输问题,电池默认不集成在胶囊内.中国大陆用户在下单时可通知我们的客服,我们将提供电池一体化服务.

    • [如何在胶囊传感器内部组装电池](https://heltec-automation-docs.readthedocs.io/en/latest/cubecell/capsule-sensor/htcc-ac01/assemble_a_battery.html)

准备

  • [正确安装CubeCell Arduino开发框架](https://heltec-automation-docs.readthedocs.io/en/latest/cubecell/quick_start.html#install-cubecell-relevant-framework);

  • 一根高质量的Micro USB数据线;

  • 连接胶囊到调试器板

  • 安装CP2102 USB-UART bridge驱动程序.

    • 在大多数情况下,Mac OS和Linux会自动识别the CP2102 USB-UART bridge.如果不能正确识别,请参考此处

胶囊传感器测试

基础测试

在示例菜单CubeCell - xxxx传感器示例中,是基本的测试.程序所使用的胶囊传感器,可用于快速验证传感器,并从传感器读取值:

Heltec生产的传感器示例:Heltec生产的传感器模块.传感器清单:https://github.com/HelTecAutomation/ASR650x-Arduino/blob/master/libraries/SensorBasic/readme.md

**第三方传感器举例:**用户自行开发的第三方传感器模块.传感器列表: https://github.com/HelTecAutomation/ASR650x-Arduino/blob/master/libraries/Sensor_ThirdParty/readme.md

 

通过LoRaWAN协议传输传感器数据

小技巧

此部分操作必须在支持标准LoRaWAN协议的网关中进行.

LoRa→LoRaWAN→LoRaWAN_Sensors(_ThirdParty)示例菜单中,我们提供了一些通过LoRaWAN协议传输传感器数据的示例.

在所有的传感器和LoRaWAN示例中,传感器数据在发送前被读取一次.以HDC1080温湿度传感器为例:

case DEVICE_STATE_SEND:
{
	PrepareTxFrame( AppPort ); //read data from HDC1080 sensor
	LoRaWAN.Send(); //LoRaWAN transmit
	DeviceState = DEVICE_STATE_CYCLE;
	break;
}

PrepareTxFrame读取了温度(float),湿度(float)和电池电压(unsigned int).并将数据转换为字符.内容:

static void PrepareTxFrame( uint8_t port )
{
    pinMode(Vext,OUTPUT);
    digitalWrite(Vext,LOW);
    hdc1080.begin(0x40);
    float Temperature = (float)(hdc1080.readTemperature());
    float Humidity = (float)(hdc1080.readHumidity());
    hdc1080.end();
    digitalWrite(Vext,HIGH);
    uint16_t BatteryVoltage = GetBatteryVoltage();
    unsigned char *puc;

    puc = (unsigned char *)(&Temperature);
    AppDataSize = 10;//AppDataSize max value is 64
    AppData[0] = puc[0];
    AppData[1] = puc[1];
    AppData[2] = puc[2];
    AppData[3] = puc[3];

    puc = (unsigned char *)(&Humidity);
    AppData[4] = puc[0];
    AppData[5] = puc[1];
    AppData[6] = puc[2];
    AppData[7] = puc[3];

    AppData[8] = (uint8_t)(BatteryVoltage>>8);
    AppData[9] = (uint8_t)BatteryVoltage;

    Serial.print("T=");
    Serial.print(Temperature);
    Serial.print("C, RH=");
    Serial.print(Humidity);
    Serial.print("%,");
    Serial.print("BatteryVoltage:");
    Serial.println(BatteryVoltage);
}

为什么要将数据转换为字节?

众所周知 float数据占用内存4个字节,而unsigned int数据占用内存2个字节.假设你有一个非常精确的传感器,例如,测量的数据是12.34567890987654321,如果通过 char data[] = "27.313232421875"这样的字符串发送这个数据,它将花费15个字节.但如果以字节8081 DA 41传输,只需花费4个字节.