我将Adafruit Feather 32u4 RFM95 Lora Radio用作远程传感器和开关的MCU。我正在使用RadioHead库与无线电模块进行交互。
我的目标是让Feather定期发送传感器数据。我还希望它能够远程接收命令,以打开和关闭连接的设备。我已将其连接到电池和太阳能电池板。到目前为止,我的解决方案是
void loop()
{
if (rf95.available())
{
handleRFInput();
}
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= TIME_BETWEEN_PACKETS)
{
// Sends the data
sendSensorData();
// save the last time data was sent
previousMillis = currentMillis;
}
}
这有一些问题。第一个也是最大的问题是我很容易丢失传入的数据。第二个问题是处理器始终处于运行状态,而我担心丢失传入消息而无法使其入睡。我想通过让它尽可能长时间地睡眠来保留尽可能多的能量。
此问题的明显解决方案是在有新消息可用时触发中断。我不知道该怎么做。 documentation中有一个针脚#7,表示它是IRQ。我尝试过
#define RFM95_INT 7
attachInterrupt(digitalPinToInterrupt(RFM95_INT), handleRFInput, CHANGE);
但是当我运行它时,什么也没发生。没有传输传感器数据或任何东西。我该怎么办才能在消息到达时得到中断?