If you have an RTL-SDR compatible radio there’s an excellent chance you’ve heard of the rtl_433 project, which lets you receive and decode signals from an ever-expanding list of supported devices in the ISM radio bands. It’s an incredibly useful piece of software, but the fact that it requires an external software defined radio and a full-fledged computer to run dictated the sort of projects it could realistically be used for.
But thanks to the rtl_433_ESP Arduino library developed by [NorthernMan54], we’re now able to pack that functionality into a much smaller package. All you need is an ESP32 microcontroller and a CC1101 or SX127X transceiver module. If you’re looking for a turn-key hardware platform, the documentation notes the LILYGO LoRa32 V2 board includes the required hardware, plus adds a handy OLED display and microSD slot. It should be noted that the range of these radios don’t compare particularly well to a full-size RTL-SDR device, but that probably won’t come as much of a surprise.
The library ports a large chunk of the rtl_433 project’s code over to the smaller and less powerful platform, which [NorthernMan54] has helpfully documented by listing the source files which were brought over verbatim as well as the ones that needed some extra attention.
As you might expect, some concessions had to be made in the effort: assuming the documentation is up-to-date, the rtl_433_ESP library can decode less than half of the devices supported by rtl_433 proper. But again, considering the vast differences in capability between the hardware the project was originally designed for and a microcontroller that costs a few bucks, it’s hard to complain.
We were tipped off to this project by [1technophile], who tells us he’s integrated the rtl_433_ESP library into his OpenMQTTGateway project. This gives the microcontroller the ability to scoop up data from wireless sensors from all over the home and publish the resulting data via MQTT so it can be picked up by Home Assistant, OpenHAB, or whatever automation package you’ve got running. It’s a trick we’ve seen done before with an RTL-SDR dongle and a computer, but being able to accomplish the same task on a smaller and more energy efficient platform certainly sounds like progress to us.
Excellent – I’ve been looking at homeassistant recently, and wondered why nobody had done the seemingly obvious of a microcontroller + CC1101/RFM69 combo. In the dim and distant past, I had problems with the CC1101 decoding a particular signal (I forget what, but it was a FSK of some kind), so I can quite believe it’s not completely versatile.
Is has been done the” yard stick one “from Michael Ossman it’s the same chip but with the micro on pkg with the Texas instruments cc1101 or cc1110/11 versus separate pkgs it’s been optimized for this type of use on his brd layout and on top of that it works with a Linux cli tool “rfcat” a ipython program able to use the yardstick one from 1ghz and under with both RX and TX ability so replay attacks and brute forcing attacks become possible has the ability to scan frequency and can be used in all kinds of ways just using the default firmware but opportunities are endless with clever ideas….
Great Scott gadgets makes the yardstick one also sold by hak5
please add mesh,
meshstatic or other system
Both those boards come with Meshtastic firmware installed by default.
There seem to be a project that pre-dates this, and which also lists the modified files: https://github.com/m4ri01/rtl_433_ESP
Interestingly, some sentences are the same, like:
“Inspiration for this came from the ESPiLight effort. Kudos to @puuu for this, and the awesome package.”
Looking at that GitHub repo it is an earlier fork of my code base. If you look at files that have not been modified at all, you can see my account as the original committer ( ie README.md ). Am thinking they were trying to do something specific with the package, but did it without the linkage back to the original repository. Which is what OpenSource software is all about.
I made a lot of tests with CC1101 and SX1278 modules using this library. First test was with OpenMqttGateway then later I integrated this in Tasmota firmware for personal use to receive different 433 MHz RF meteo sensors in more locations. Also extended the receive/decode to Oregon Scientific v2, v3 sensors (OOK_PULSE_MANCHESTER_ZEROBIT) and on RF gate opener Nice Flor-S. Both modules I used with cable/external high gain (tuned to 433 MHz) omnidirectional antennas. The radio sensitivity of this modules (at least in ASK/OOK mode and with settings from this library) is VERY bad (compared with old analog SH receivers). So I ended using the old SRX882S v2.0 (and modified this library to receive from data pin of this module). The con thing is I no more have RSSI information, but compared to higher sensitivity of SRX882S, I choose this solution.
Many thanks to NorthernMan54 for this great library, but unfortunately I was not able to use any of this modules (CC1101 or SX1278) to get good signal from my spreaded RF sensors. I supose this is because both modules was not designed for this kind of job (ASK/OOK “blind” receiver).
@Zulea
I also have range issue using CC1101 and I would like to use classic SRX88 instead. I need to receive data from several RF433 sensors. Can you share me some resources on adapting RTL_ESP32 code for this module?
How can I integrate the library into the arduino ide if the package rtl433 index.json link does not work https://github.com/NorthernMan54/rtl_433_ESP/blob/master/package_rtl433_index.json