DIY无线传感器集线器

  发布人:amy2025 时间:2025-08-08

在这个项目中,我们设计了一个无线传感器集线器,利用ESP32和Arduino通过NRF24L01收发器连接。

您可以从JLCMC获得所有组件。

特性和功能

ESP32中心:

•菜单配置与按钮:选择传感器节点,切换警报模式,查看系统状态,设置开关定时器。

•开关控制:通过物理开关拨动连接的继电器/灯/电器。

•OLED UI:实时显示传感器数据和系统状态。

•NRF24通信:无线接收来自多个节点的传感器告警。

Arduino(ATMEGA328P) -实时监控

Arduino板作为专用警报节点,负责监控关键的安全和自动化组件:

•门传感器:使用簧片开关检测打开/关闭状态,以监控未经授权的访问或进入。

•气体泄漏传感器:使用mq系列传感器连续检查气体泄漏(例如,LPG,甲烷)。

•自动门铃:检测存在使用PIR或按钮按下,触发门铃警报。

•LED指示灯:根据触发的传感器(例如,门,气体,运动)点亮四个LED。

•蜂鸣器警报:当任何传感器检测到故障或存在时,一个响亮的蜂鸣器会激活。

该节点将所有警报无线传输到ESP32,实现快速和集中的显示或操作。

由JLCMC赞助:您的机械零件首选合作伙伴!

介绍JLCMC,值得信赖的JLC家族的最新成员,以市场上最优惠的价格提供高质量的机械零件。凭借JLCPCB建立的卓越传统,JLCMC在这里为您的所有机械需求提供可靠且价格合理的解决方案。

为什么选择JLCMC?

一个值得信赖的名字:JLCMC建立在JLC服务的基础上,JLC是PCB制造和原型设计的全球领导者。他们对质量和客户满意度的承诺体现在他们的机械零件服务中。

无与伦比的价格:忠实于JLC的传统,JLCMC以行业领先的价格提供机械零件,确保您的项目在不影响质量的情况下保持预算。

广泛的产品范围:从精密工程组件到定制解决方案,JLCMC拥有将您的想法变为现实所需的一切,无论您是业余爱好者还是专业人士。

全球信任:JLC的服务赢得了全球数百万制造商的信任。有了JLCMC,你就有了同样的可靠性,现在是在机械部件领域。

代码

#include

#include

#include

#define CE 9

#define CSN 10

#define BUZZER A0

#define DOOR_STATUS_LED 8

RF24 radio(CE, CSN); // CE, CSN

const byte address[6] = "10001";

// Define data structure

struct data {

uint8_t nodeId;

uint8_t nodeState;

uint8_t doorState;

};

unsigned long previousMillis = 0;

bool buzzerState = false;

// bool wasDisconnected = false; // Flag to track disconnection state

void setup() {

Serial.begin(115200);

Serial.println("\nInitializing...");

pinMode(DOOR_STATUS_LED, OUTPUT);

pinMode(BUZZER, OUTPUT);

NRF24_Init();

}

void loop() {

if (radio.available()) {

struct data receiveData;

radio.read(&receiveData, sizeof(receiveData));

Serial.print("ID: ");

Serial.print(receiveData.nodeId);

Serial.print(", Status: ");

Serial.print(receiveData.nodeState);

Serial.print(", Door: ");

Serial.println(receiveData.doorState);

digitalWrite(DOOR_STATUS_LED, receiveData.doorState);

// digitalWrite(BUZZER, receiveData.doorState == 1 ? HIGH : LOW);

buzzer(receiveData.doorState, 100);

}

}

void NRF24_Init() {

if (!radio.begin()) {

Serial.println("❌ NRF24L01 Initialization Failed!");

return;

}

radio.openReadingPipe(1, address);

radio.setPALevel(RF24_PA_MIN);

radio.startListening();

Serial.println("✅ NRF24L01 Initialized Successfully!");

}

void buzzer(int signal, int delayTime) {

if (signal == 1) {

if (millis() - previousMillis >= delayTime) {

previousMillis = millis();

buzzerState = !buzzerState;

digitalWrite(BUZZER, buzzerState);

}

} else {

digitalWrite(BUZZER, LOW);

}

}


关键词: 传感器 ESP32 Arduino ATMEGA328P

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关电路