胶囊传感器快速入门
摘要
使用胶囊传感器时,请注意以下问题
胶囊传感器本身定位为一个小型,组装和部署传感器.它没有编程,调试和其他接口.您需要使用[调试板](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 - 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个字节.