arduino2/lora_transmitter/lora_transmitter.ino
2021-12-26 14:42:41 +01:00

104 lines
2.3 KiB
C++

#include <SPI.h>
#include <Wire.h>
#include <SSD1306.h>
#include <LoRa.h>
//#include "images.h"
//#define LORA_BAND 433
//#define LORA_BAND 868
#define LORA_BAND 868
#define OLED_SDA 4
#define OLED_SCL 15
#define OLED_RST 16
#define SCK 5 // GPIO5 -- SX1278's SCK
#define MISO 19 // GPIO19 -- SX1278's MISO
#define MOSI 27 // GPIO27 -- SX1278's MOSI
#define SS 18 // GPIO18 -- SX1278's CS
#define RST 14 // GPIO14 -- SX1278's RESET
#define DI0 26 // GPIO26 -- SX1278's IRQ(Interrupt Request)
SSD1306 display(0x3c, OLED_SDA, OLED_SCL);
// Forward declarations
void displayLoraData(String countStr);
void showLogo();
void setup() {
Serial.begin(115200);
while (!Serial);
Serial.println();
Serial.println("LoRa Transmitter");
// Configure the LED an an output
pinMode(LED_BUILTIN, OUTPUT);
// Configure OLED by setting the OLED Reset HIGH, LOW, and then back HIGH
pinMode(OLED_RST, OUTPUT);
digitalWrite(OLED_RST, HIGH);
delay(100);
digitalWrite(OLED_RST, LOW);
delay(100);
digitalWrite(OLED_RST, HIGH);
display.init();
display.flipScreenVertically();
//showLogo();
delay(2000);
display.clear();
display.setFont(ArialMT_Plain_16);
display.setTextAlignment(TEXT_ALIGN_CENTER);
display.drawString(display.getWidth() / 2, display.getHeight() / 2, "LoRa Transmitter");
display.display();
delay(2000);
// Configure the LoRA radio
SPI.begin(SCK, MISO, MOSI, SS);
LoRa.setPins(SS, RST, DI0);
if (!LoRa.begin(LORA_BAND * 1E6)) {
Serial.println("Starting LoRa failed!");
while (1);
}
Serial.println("init ok");
}
void loop() {
static int counter = 0;
// send packet
LoRa.beginPacket();
LoRa.print("hello ");
LoRa.print(counter);
LoRa.endPacket();
String countStr = String(counter, DEC);
Serial.println(countStr);
displayLoraData(countStr);
// toggle the led to give a visual indication the packet was sent
digitalWrite(LED_BUILTIN, HIGH);
delay(250);
digitalWrite(LED_BUILTIN, LOW);
delay(250);
counter++;
delay(1500);
}
void displayLoraData(String countStr) {
display.clear();
display.setTextAlignment(TEXT_ALIGN_LEFT);
display.setFont(ArialMT_Plain_10);
display.drawString(0, 0, "Sending packet: ");
display.drawString(90, 0, countStr);
display.display();
}
© 2021 GitHub, Inc.