我对阿迪诺很陌生,尤其是ESP32。但是--在我收到提示“使用Arduino”之前,我决定选择ESP32,因为它的大小和连接到无线局域网的能力。
然而,我正试图为我的水族馆建造一些控制箱,在第一次设计中,它应该通过遥控插座来控制各种灯具和雨水泵。为此,我得到了一个ESP32 NodeMCU、一个RTC时间模块(它似乎工作得很好)和一个433赫兹接收/发送端集。
我遵循了几个关于配线的教程,并将示例文件上传到ESP32。无论我将接收器连接到哪个引脚(我需要先连接接收器,以便读出输出端附带的433 Hz控制信号),我不会在接收器上接收到任何信号。
我嵌入了库RCSwitch,并尝试按以下方式配置我的开关(这里以PIN 13为例--我还尝试了其他几个引脚):
mySwitch.enableReceive(13)正如我在其他博客中看到的那样,可能需要将引脚号转换为其中断地址,因此我尝试了以下方法:
mySwitch.enableReceive(digitalPinToInterrupt(13))结果总是一样的:串行监视器上的死寂(除了引导消息,等等)。
我是用错了图书馆还是做错了什么?
我读到应该有一个名为RFSwitch的库,但我发现的唯一版本只具有433 Hz的发送方,而不是接收方。
如果有任何关于这个问题的提示,我会非常感激的--我已经被困在这里好几个小时了.
发布于 2021-01-03 03:47:11
今天,RCSwitch在ESP32开发板和433 and接收器和发送器上都取得了成功。以下是我在旅途中遇到的绊脚石。
连接接收器(需要5V)
H19当引用PIN "xx“时,我只是使用了PIN-号。写在ESP32-Dev-Board上的Dxx“
您可以连接一个~17.3cm的天线以提高距离#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch();
#define RXD2 27
void setup() {
Serial.begin(115200);
Serial.print("Ready to receive.");
mySwitch.enableReceive(RXD2);
}
void loop() {
if (mySwitch.available()) {
Serial.print("Received ");
Serial.print( mySwitch.getReceivedValue() );
Serial.print(" / ");
Serial.print( mySwitch.getReceivedBitlength() );
Serial.print("bit ");
Serial.print("Protocol: ");
Serial.print( mySwitch.getReceivedProtocol() );
Serial.print(" / ");
Serial.println( mySwitch.getReceivedDelay() );
mySwitch.resetAvailable();
}
}您的RC和插座中的可以由DIP开关配置,您可能不需要连接整个接收器-您可以直接在RCSwitch Library中插入DIP开关级别。
连接发送者(只需3.3V即可)
您可以使用use 32-3.3来供电GND | VCC | DATA
You
,您可能需要再次检查PIN标签我感到困惑,因为数据标签被关闭,并且首先被解释为GND | DATA | VCC而不是GND | DATA | VCC可以连接一个~17.3cm的天线以提高距离
。
#include <Arduino.h>
#include <WiFi.h>
#include <RCSwitch.h>
#define TXD2 25
RCSwitch mySwitch = RCSwitch();
void setup() {
Serial.begin(115200);
// Transmitter is connected to Arduino Pin #10
mySwitch.enableTransmit(TXD2);
// Optional set protocol (default is 1, will work for most outlets)
// mySwitch.setProtocol(2);
// Optional set pulse length.
mySwitch.setPulseLength(311);
// Optional set number of transmission repetitions.
// mySwitch.setRepeatTransmit(15);
}
void loop() {
/* See Example: TypeA_WithDIPSwitches */
mySwitch.switchOn("01010", "10000");
Serial.println("Switch On");
delay(10000);
mySwitch.switchOff("01010", "10000");
Serial.println("Switch Off");
delay(10000);
}当WiFi处于活动状态时,我还没有使用发送方或接收方。虽然我一直在阅读有关问题,而WiFi是活跃的,并通过433 via接收/发送。
发布于 2020-12-08 23:15:57
我知道这已经很老了,也许你现在已经解决了这个问题,但也许它会对其他人有所帮助。我也遇到了同样的问题,帮助我设置了pinMode:
pinMode(GPIO_NUM_35, INPUT);
mySwitch.enableReceive(digitalPinToInterrupt(GPIO_NUM_35));发布于 2021-01-07 14:55:41
发送器必须有5V电源才能走得更远,并且没有可能损坏ESP32和接收器的输出引脚。相反,必须连接到3.3V,因为它有一个输出到ESP2 (3.3V电源),接收器的输出不能超过3.3V,这样就不会损坏ESP32的GPIO输入。
ESP32
数据发送(输入)转到: GPIO 5:pinMode(5, OUTPUT)
pinMode(4, INPUT)
https://stackoverflow.com/questions/63123935
复制相似问题