RAK12039传感器如何参与LoRaWAN水培环境监测物联网系统集成
扫描二维码
随时随地手机看文章
介绍
本文档概述了将RAK12039传感器(基于盛思rion的SCD30传感器,专门用于测量CO₂、温度和湿度)集成到基于WisBlock技术和LoRaWAN的现有物联网系统中的完整过程。这种集成通过提供有关空气质量和二氧化碳平衡的关键信息扩展了系统的功能,这对水培栽培的环境控制至关重要。
组件使用
•RAK12039:用于二氧化碳,温度和湿度的环境传感器(基于SCD30)。
•RAK1906:环境传感器(温度,相对湿度,大气压力和室内空气质量)。
•RAK11300:中央WisBlock模块与RP2040微控制器和LoRa连接。
•RAK19007-O: WisBlock基板,允许传感器和模块的模块化连接。
•TTN平台:用于数据管理和可视化的公共LoRaWAN网络。
传感器组装与连接
•连接RAK12039:
•将RAK12039模块插入其中一个可用的I2C端口(如果槽位A已被占用,最好插入槽位B)。
•使用随附螺钉固定传感器。
•连接RAK1906:
•将RAK1906插入另一个可用的I2C端口(如果有槽位A)。
•两个传感器都可以共享I2C总线而没有冲突,因为它们的地址不同(RAK12039的0x61和RAK1906的0x76)。
•验证:
•系统上电时,请确保RAK11300指示灯闪烁。
•在IDE中打开串行监视器以验证两个传感器是否被正确识别。
Arduino IDE设置
•先决条件:
•安装Arduino IDE。
•添加RAKWireless包URL
•安装以下库:
•Adafruit BME680
•SparkFun SCD30 Arduino库
•WisBlock-API
•LoRaWan-RAK11300
•单板和端口配置:
•选择WisBlock RAK11300单板。
•通过USB Type-C连接节点,并选择正确的端口。
结论
将RAK12039传感器集成到系统中,可以实时监测二氧化碳水平,补充RAK1906提供的环境数据。这种整合对于改善水培栽培系统的环境控制、优化光合作用和通风以及与可持续发展目标(可持续发展目标2、7、9和13)保持一致至关重要。由此产生的系统是可扩展的,准确的,能源自给自足-理想的教育,农业,或实验设置。
代码
#include
#include
#include
// I2C address for BME680
Adafruit_BME680 bme; // Uses default I2C address 0x76
// RAK12039 Touch sensor on IO1
#define TOUCH_SENSOR_PIN WB_IO1
void setup() {
Serial.begin(115200);
while (!Serial);
pinMode(TOUCH_SENSOR_PIN, INPUT);
Serial.println("Initializing RAK1906 (BME680)...");
if (!bme.begin()) {
Serial.println("Could not find a valid BME680 sensor, check wiring!");
while (1);
}
// Configure BME680 oversampling and filter settings
bme.setTemperatureOversampling(BME680_OS_8X);
bme.setHumidityOversampling(BME680_OS_2X);
bme.setPressureOversampling(BME680_OS_4X);
bme.setIIRFilterSize(BME680_FILTER_SIZE_3);
bme.setGasHeater(320, 150); // 320*C for 150 ms
}
void loop() {
// Read touch sensor
int touchValue = digitalRead(TOUCH_SENSOR_PIN);
Serial.print("Touch Sensor State: ");
Serial.println(touchValue == HIGH ? "TOUCHED" : "NOT TOUCHED");
// Trigger BME680 reading
if (!bme.performReading()) {
Serial.println("Failed to perform reading from BME680");
return;
}
Serial.print("Temperature = ");
Serial.print(bme.temperature);
Serial.println(" *C");
Serial.print("Humidity = ");
Serial.print(bme.humidity);
Serial.println(" %");
Serial.print("Pressure = ");
Serial.print(bme.pressure / 100.0);
Serial.println(" hPa");
Serial.print("Gas Resistance = ");
Serial.print(bme.gas_resistance / 1000.0);
Serial.println(" KOhms");
Serial.println("---------------------------");
delay(2000); // Delay between readings
}
本文编译自hackster.io