104 lines
2.3 KiB
C++
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.
|