diff --git a/README.md b/README.md index 2d3f3af..48b30d6 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # LoLRa -Transmit 900MHz LoRa frames surprisingly far without a radio (And other radio shenanigans using ADCs, PWMs and I2S/SPI busses.) +Transmit 900MHz LoRa frames surprisingly far without a radio (And other radio shenanigans using ADCs, PWMs and I2S/SPI busses) including sending other RF data, as well as receiving RF signals (Though admittedly not a LoRa receiver). If you are looking for the Hackaday 2024 microcontroller radio talk, you can click here. @@ -34,34 +34,34 @@ In general the repo is split up in to many projects, but categoriezed by device * ch32v (Note, all examples require 8MHz (v203) or 24Mhz (v003) crystal oscillator) * General Note: All OLED displays used here are 128x128 SPI-mode OLED displays. * [ch32v003-adcrx](ch32v/ch32v003-adcrx) - prints quadrature values for receiving at 1/4 sample rate signals, or harmonics thereof. Specifically this is tuned to receiv CW on citizen band frequencies, specifically 27.000050 MHz - * ch32v003-lora - Successful (but very poor) transmission of LoRa messages with a ch32v003. - * ch32v003-timer - An attempt to use non-tabled dithering of PWM signals to send FM radio and/or 315MHz signals. *This does not work well* but it is included as a reference for dtrying to dither RF on the 003. - * ch32v003-txrx - Trying to send from one 003 to another 003 receiving. This does not work well - only about 1'. - * ch32v203-adcrx - Very basic quadrature decoding on a ch32v203. - * ch32v203-fft - Perform an FFT on a small window of samples on a ch32v203. This outputs to an OLED display. It doesn't keep up in realtime though. It also relies on fix_fft.h (which cannot be distirbuted with this project because of a lack of license. - * **ch32v203-goertzel** - Perform a full goertzel's tuning on an incoming ADC signal so that it can listen to multiple AM and NBFM radio stations from an ADC pin. - * lib/calculator.html - webpage that can use webhid with ch32v203-goertzel. - * **ch32v203-lora** - Proper transmission of LoRaWAN packets (from the tests outlined below). - * ch32v203-tx - Very basic test, setup to just turn on a PWM on the ch32v203. + * [ch32v003-lora](ch32v/ch32v003-lora) - Successful (but very poor) transmission of LoRa messages with a ch32v003. + * [ch32v003-timer](ch32v/ch32v003-timer) - An attempt to use non-tabled dithering of PWM signals to send FM radio and/or 315MHz signals. *This does not work well* but it is included as a reference for dtrying to dither RF on the 003. + * [ch32v003-txrx](ch32v/ch32v003-txrx) - Trying to send from one 003 to another 003 receiving. This does not work well - only about 1'. + * [ch32v203-adcrx](ch32v203-adcrx) - Very basic quadrature decoding on a ch32v203. + * [ch32v203-fft](ch32v203-fft) - Perform an FFT on a small window of samples on a ch32v203. This outputs to an OLED display. It doesn't keep up in realtime though. It also relies on fix_fft.h (which cannot be distirbuted with this project because of a lack of license. + * [**ch32v203-goertzel**](ch32v/ch32v203-goertzel) - Perform a full goertzel's tuning on an incoming ADC signal so that it can listen to multiple AM and NBFM radio stations from an ADC pin. + * [lib/calculator.html](ch32v/lib/calculator.html) - webpage that can use webhid with ch32v203-goertzel. + * [**ch32v203-lora**](ch32v/ch32v203-lora) - Proper transmission of LoRaWAN packets (from the tests outlined below). + * [ch32v203-tx](ch32v/ch32v203-tx) - Very basic test, setup to just turn on a PWM on the ch32v203. * esp32-s2 - * **loratest** - Full stack protocol for sending LoRa messages from an esp32-s2. (From range test) - * **narrow_fsk_test** - Very basic test using dithering and the PLL in the esp32-s2 to see how tight/narrow control is possible with the esp32-s2. This does not do a dithered closed loop, but would not be terribly hard to add. - * **videoending** - Mechanism for allowing an ESP32-S2 to FSK, hopping around to draw a picture in a spectrogram. This was used for the video ending. + * [**loratest**](esp32-s2/loratest) - Full stack protocol for sending LoRa messages from an esp32-s2. (From range test) + * [**narrow_fsk_test**](esp32-s2/narrow_fsk_test) - Very basic test using dithering and the PLL in the esp32-s2 to see how tight/narrow control is possible with the esp32-s2. This does not do a dithered closed loop, but would not be terribly hard to add. + * [**videoending**](esp32-s2/videoending) - Mechanism for allowing an ESP32-S2 to FSK, hopping around to draw a picture in a spectrogram. This was used for the video ending. * esp8266 - * example_125k_raw - Sending a raw 125kHz wide LoRa message. - * example_500k_raw - Sending a raw 500kHz wide LoRa message. - * **lorawan_example** - Using the I2S bus on the ESP8266 to send a full-stack LoRaWAN message to the things network. - * non_lora_310_transmit - Exmaple of how to transmit 310MHz OOK with an ESP8266. + * [example_125k_raw](esp8266/example_125k_raw) - Sending a raw 125kHz wide LoRa message. + * [example_500k_raw](esp8266/example_500k_raw) - Sending a raw 500kHz wide LoRa message. + * [**lorawan_example**](esp8266/lorawan_example) - Using the I2S bus on the ESP8266 to send a full-stack LoRaWAN message to the things network. + * [non_lora_310_transmit](esp8266/non_lora_310_transmit) - Exmaple of how to transmit 310MHz OOK with an ESP8266. * lib - * aes-cbc-cmac.h - Public Domain RFC4493 AES-CMAC header only library. - * LoRa-SDR-Code.h - MIT (unrestrictive) Licensed code to construct LoRa packets - * lorawan_simple.h - MIT (unrestrictive) Licensed code to construct LoRaWAN packets. - * rf_data_gen.h - Helper function for helping generate bit tables for I2S/SPI outpiut of carefully crafted signals. - * tiny-AES-c.h - Public Domain AES encryption/decryption library. + * [aes-cbc-cmac.h](lib/aes-cbc-cmac.h) - Public Domain RFC4493 AES-CMAC header only library. + * [LoRa-SDR-Code.h](lib/LoRa-SDR-Code.h) - MIT (unrestrictive) Licensed code to construct LoRa packets + * [lorawan_simple.h](lib/lorawan_simple.h) - MIT (unrestrictive) Licensed code to construct LoRaWAN packets. + * [rf_data_gen.h](lib/rf_data_gen.h) - Helper function for helping generate bit tables for I2S/SPI outpiut of carefully crafted signals. + * [tiny-AES-c.h](lib/rf_data_gen.h) - Public Domain AES encryption/decryption library. * tools - * 60-rtlsdr.rules - Make it so you can use your airspy from Linux as a user. - * complex_magsink_to_image.c - * testloradec.grc - Using gr_lora exmaple to decode LoRa in GNURadio + * [60-rtlsdr.rules](tools/60-rtlsdr.rules) - Make it so you can use your airspy from Linux as a user. + * [complex_magsink_to_image.c](tools/complex_magsink_to_image.c) - Generate ultra high resolution (in time domain) waterfall views. + * [testloradec.grc](tools/testloradec.grc) - Using gr_lora exmaple to decode LoRa in GNURadio ## Introduction (LoRa)