A LoRa APRS node with KISS interface based on a Raspberry Pi Pico
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

75 lines
1.7 KiB

#include <stdio.h>
#include <string.h>
#include "pico/stdlib.h"
#include "pico/binary_info.h"
#include "LoRa-RP2040.h"
#include "Config.h"
#include "KISS.h"
bool startRadio();
int main() {
/* Among others, this initializes the USB-serial port at 115200bps 8N1 */
stdio_init_all();
printf("Hello, world!\n");
/* while (1) {
printf("1");
sleep_ms(1000);
}
*/
// override the default CS, reset, and IRQ pins (optional)
// LoRa.setPins(7, 6, 1); // set CS, reset, IRQ pin
sleep_ms(5000);
printf("loraFrequency = %u\n", loraFrequency);
startRadio();
int counter = 0;
while (1) {
int packetSize = LoRa.parsePacket();
if (packetSize) {
// received a packet
printf("Received packet \n");
// TODO: read packet into array and check if APRS header is correct (header = 0x3C 0xFF 0x01)
// If it all checks out, remove the header from the string
while (LoRa.available()) {
printf("%c", LoRa.read());
}
// print RSSI of packet
printf(" (RSSI = %idBm)\n",LoRa.packetRssi());
}
}
return 0;
}
/*
* Initializes the LoRa module with the parameters set in config.h
*/
bool startRadio() {
printf("Starting LoRa radio");
if (!LoRa.begin(loraFrequency)) {
//kissIndicateError(ERROR_INITRADIO);
printf(" [ FAILED ]\n");
while(1);
}
else {
LoRa.setPreambleLength(loraPreamble);
LoRa.setSignalBandwidth(loraBandwidth);
LoRa.setTxPower(loraTxPower,LoRaPaSelect);
LoRa.setSpreadingFactor(loraSpreadingFactor);
LoRa.setCodingRate4(loraCodingRate);
LoRa.enableCrc();
//LoRa.onReceive(receiveCallback);
//LoRa.receive();
printf(" [ DONE ]\n");
}
}