diff --git a/README.md b/README.md index 58fbd6d..acdeee9 100644 --- a/README.md +++ b/README.md @@ -1,39 +1,31 @@ # avrrfm -[![make](https://github.com/gitdode/avrrfm/actions/workflows/build.yml/badge.svg)](https://github.com/gitdode/avrrfm/actions/workflows/build.yml) - ## About Experimental project around RFM radio modules using an ATmega328P MCU and [librfm69](https://github.com/gitdode/librfm69/tree/main) (FSK)/[librfm95](https://github.com/gitdode/librfm95/tree/main) (FSK + LoRa). -To do something really extraordinary, the temperature reading of an MCP9808 -sensor is periodically transmitted to the receiver. -To save battery power, the controller, radio module and temperature sensor -are put to power down/sleep mode in between transmissions. The idle current -is ~75µA, which is still quite a lot, but already better than 8mA 🙂 -MCU, radio and temp sensor take about 5µA, so the TC1262 3.3V regulator seems -to account for ~70µA. -There is basic [SD card support](https://github.com/gitdode/libsdc/tree/main) -that might be useful for something like a data logger. +To do something really extraordinary, the temperature reading of an MCP9808 sensor is periodically transmitted to the receiver. +To save battery power, the controller, radio module and temperature sensor are put to power down/sleep mode in between transmissions. +The idle current is ~75µA, which is still quite a lot, but already better than 8mA 🙂 +MCU, radio and temp sensor take about 5µA, so the TC1262 3.3V regulator seems to account for ~70µA. +There is basic [SD card support](https://github.com/gitdode/libsdc/tree/main) that might be useful for something like a data logger. -![IMG_20250413_184140](https://github.com/user-attachments/assets/1ac75c87-bcc0-4c7b-a6b3-39a937d728f0) +![IMG_20250413_184140](https://static.luniks.net/GitBucket/avrrfm/IMG_20250413_184140.jpg) -The receiver currently converts the raw temperature reading to °C and displays -it with the RSSI value, CRC result and transmitter output power on a nice IPS -TFT display. It responds to the transmitter as kind of ack with the RSSI, which -is used for some very basic power management in the transmitter, significantly -reducing the supply current by reducing the output power i.e. on short distance. -The transmitter waits for this response with a timeout so it won't be blocked -and consumes a lot of power just because there is no response coming back. +The receiver currently converts the raw temperature reading to °C and displays it with the RSSI value, +CRC result and transmitter output power on a nice IPS TFT display. It responds to the transmitter as kind of ack with the RSSI, +which is used for some very basic power management in the transmitter, significantly reducing the supply current by reducing +the output power i.e. on short distance. The transmitter waits for this response with a timeout so it won't be blocked and +consumes a lot of power just because there is no response coming back. -![IMG_20250413_190306](https://github.com/user-attachments/assets/b6226805-6778-4cc8-bec5-2a36f91b4585) +![IMG_20250413_190306](https://static.luniks.net/GitBucket/avrrfm/IMG_20250413_190306.jpg) ## Fun Stuff Looking at the payload in the FSK modulated signal from the transmitter in URH (with an RTL-SDR Blog V4): -![urh](https://github.com/user-attachments/assets/4c0b159a-5ae9-444c-99f1-6edc385ba4b1) +![urh](https://static.luniks.net/GitBucket/avrrfm/urh.png) The four selected payload bytes are: @@ -49,27 +41,20 @@ So, 21.2 °C 🙂 -The first 15 `0b10101010` bytes are the preamble, then there are 4 sync word -bytes. After the 4 payload bytes, there are 2 CRC bytes as described in the -datasheet of the RFM69HCW: +The first 15 `0b10101010` bytes are the preamble, then there are 4 sync word bytes. +After the 4 payload bytes, there are 2 CRC bytes as described in the datasheet of the RFM69HCW: -![PackageFormat](https://github.com/user-attachments/assets/11687645-552c-46e5-a0bf-ef490b1bca48) +![PackageFormat](https://static.luniks.net/GitBucket/avrrfm/PackageFormat.png) ### LoRa With LoRa, the signal of course looks a bit different: -![urhLoRa](https://github.com/user-attachments/assets/2f8c4392-da10-4c44-b266-18e3726e1e39) +![urhLoRa](https://static.luniks.net/GitBucket/avrrfm/urhLoRa.png) And it doesn't look like URH can decode LoRa for the time being. Interesting information about decoding LoRa can be found at [DecodingLora - RevSpace](https://revspace.nl/DecodingLora). The chirps of the LoRa signal in the waterfall view of SDR++: -![41_7kHz-SF10s](https://github.com/user-attachments/assets/0c45a3d3-c5cd-4fa7-a8da-a4a13c1b5ae6) - -## Silly Stuff - -A hopelessly underpowered RFM95 in FSK mode going haywire (turn on sound): - -https://github.com/user-attachments/assets/85de6b50-0ec8-4264-92a5-a77f90162c87 +![41_7kHz-SF10s](https://static.luniks.net/GitBucket/avrrfm/41_7kHz-SF10s.png)