Added SD card support and started Lora support
This commit is contained in:
parent
4b4be4c9db
commit
68b86a1d6d
76
src/apps/LoRa.cpp
Normal file
76
src/apps/LoRa.cpp
Normal file
@ -0,0 +1,76 @@
|
||||
#include <RadioLib.h>
|
||||
#include "pins.h"
|
||||
|
||||
|
||||
SX1262 radio = new Module(RADIO_CS_PIN, RADIO_DIO1_PIN, RADIO_RST_PIN, RADIO_BUSY_PIN);
|
||||
|
||||
|
||||
bool setupRadio() {
|
||||
digitalWrite(BOARD_SDCARD_CS, HIGH);
|
||||
digitalWrite(RADIO_CS_PIN, HIGH);
|
||||
digitalWrite(BOARD_TFT_CS, HIGH);
|
||||
SPI.end();
|
||||
SPI.begin(BOARD_SPI_SCK, BOARD_SPI_MISO, BOARD_SPI_MOSI); //SD
|
||||
|
||||
int state = radio.begin(RADIO_FREQ);
|
||||
if (state == RADIOLIB_ERR_NONE) {
|
||||
Serial.println("Start Radio success!");
|
||||
} else {
|
||||
Serial.print("Start Radio failed,code:");
|
||||
Serial.println(state);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (radio.setFrequency(RADIO_FREQ) == RADIOLIB_ERR_INVALID_FREQUENCY) {
|
||||
Serial.println(F("Selected frequency is invalid for this module!"));
|
||||
return false;
|
||||
}
|
||||
|
||||
if (radio.setBandwidth(125.0) == RADIOLIB_ERR_INVALID_BANDWIDTH) {
|
||||
Serial.println(F("Selected bandwidth is invalid for this module!"));
|
||||
return false;
|
||||
}
|
||||
|
||||
if (radio.setSpreadingFactor(10) == RADIOLIB_ERR_INVALID_SPREADING_FACTOR) {
|
||||
Serial.println(F("Selected spreading factor is invalid for this module!"));
|
||||
return false;
|
||||
}
|
||||
|
||||
if (radio.setCodingRate(6) == RADIOLIB_ERR_INVALID_CODING_RATE) {
|
||||
Serial.println(F("Selected coding rate is invalid for this module!"));
|
||||
return false;
|
||||
}
|
||||
|
||||
if (radio.setSyncWord(0xAB) != RADIOLIB_ERR_NONE) {
|
||||
Serial.println(F("Unable to set sync word!"));
|
||||
return false;
|
||||
}
|
||||
|
||||
// set output power to 10 dBm (accepted range is -17 - 22 dBm)
|
||||
if (radio.setOutputPower(17) == RADIOLIB_ERR_INVALID_OUTPUT_POWER) {
|
||||
Serial.println(F("Selected output power is invalid for this module!"));
|
||||
return false;
|
||||
}
|
||||
|
||||
// set over current protection limit to 140 mA (accepted range is 45 - 140 mA) (set value to 0 to disable overcurrent protection)
|
||||
if (radio.setCurrentLimit(140) == RADIOLIB_ERR_INVALID_CURRENT_LIMIT) {
|
||||
Serial.println(F("Selected current limit is invalid for this module!"));
|
||||
return false;
|
||||
}
|
||||
|
||||
// set LoRa preamble length to 15 symbols (accepted range is 0 - 65535)
|
||||
if (radio.setPreambleLength(15) == RADIOLIB_ERR_INVALID_PREAMBLE_LENGTH) {
|
||||
Serial.println(F("Selected preamble length is invalid for this module!"));
|
||||
return false;
|
||||
}
|
||||
|
||||
if (radio.setCRC(false) == RADIOLIB_ERR_INVALID_CRC_CONFIGURATION) {
|
||||
Serial.println(F("Selected CRC is invalid for this module!"));
|
||||
return false;
|
||||
}
|
||||
|
||||
// set the function that will be called when new packet is received
|
||||
//radio.setDio1Action(setFlag);
|
||||
|
||||
return true;
|
||||
}
|
42
src/apps/gotify.cpp
Normal file
42
src/apps/gotify.cpp
Normal file
@ -0,0 +1,42 @@
|
||||
#include <ArduinoWebsockets.h>
|
||||
|
||||
using namespace websockets;
|
||||
|
||||
WebsocketsClient gotifyClient;
|
||||
|
||||
const char* gotify_server = "ws://your.gotify.server.com/stream"; // Use ws:// or wss:// based on your server configuration
|
||||
const char* gotify_token = "your_gotify_app_token";
|
||||
|
||||
// Reconnection parameters
|
||||
unsigned long lastAttemptTime = 0;
|
||||
const unsigned long reconnectInterval = 60000; // 1 minute
|
||||
|
||||
void onMessageCallback(WebsocketsMessage message) {
|
||||
Serial.println("Gotify Notification:");
|
||||
Serial.println(message.data());
|
||||
}
|
||||
|
||||
void connectToGotify() {
|
||||
String url = String(gotify_server) + "?token=" + gotify_token;
|
||||
gotifyClient.onMessage(onMessageCallback);
|
||||
gotifyClient.connect(url);
|
||||
|
||||
if (gotifyClient.available()) {
|
||||
Serial.println("Connected to Gotify WebSocket");
|
||||
} else {
|
||||
Serial.println("Failed to connect to Gotify WebSocket");
|
||||
}
|
||||
}
|
||||
|
||||
void checkGotifyWebSocket() {
|
||||
if (!gotifyClient.available()) {
|
||||
unsigned long currentTime = millis();
|
||||
if (currentTime - lastAttemptTime > reconnectInterval) {
|
||||
Serial.println("Attempting to reconnect to Gotify WebSocket...");
|
||||
lastAttemptTime = currentTime;
|
||||
connectToGotify();
|
||||
}
|
||||
} else {
|
||||
gotifyClient.poll();
|
||||
}
|
||||
}
|
10
src/main.ino
10
src/main.ino
@ -136,6 +136,16 @@ void setup() {
|
||||
digitalWrite(TFT_BL, HIGH);
|
||||
setBrightness(8); // Set the screen brightness to 50%
|
||||
|
||||
// Give power to the SD card
|
||||
pinMode(BOARD_SDCARD_CS, OUTPUT);
|
||||
digitalWrite(BOARD_SDCARD_CS, HIGH);
|
||||
pinMode(BOARD_SPI_MISO, INPUT_PULLUP);
|
||||
SPI.begin(BOARD_SPI_SCK, BOARD_SPI_MISO, BOARD_SPI_MOSI); //SD
|
||||
|
||||
// Turn on power to the radio
|
||||
pinMode(RADIO_CS_PIN, OUTPUT);
|
||||
digitalWrite(RADIO_CS_PIN, HIGH);
|
||||
|
||||
// Start the I2C bus for the keyboard
|
||||
Wire.begin(BOARD_I2C_SDA, BOARD_I2C_SCL);
|
||||
|
||||
|
@ -59,3 +59,5 @@
|
||||
#define READS 20 // Number of readings for averaging
|
||||
|
||||
#define LILYGO_KB_SLAVE_ADDRESS 0x55
|
||||
|
||||
#define RADIO_FREQ 903.0
|
Loading…
Reference in New Issue
Block a user