Hallo zusammen, ich bin ziemlich neu in dieser ganzen Arduino Sache, und beschäftige mich momentan mit LoRa.
Ich möchte für meinen alten VW-Bus T4 letztlich zwei "Telemetrie-Sensoren" bauen, zum einen zur Überwachung der Batteriespannung, zum anderen zur Kontrolle, ob die Standheizung läuft (die ich aktuell über ein GSM-Modul schalten kann).
Hierzu hab ich zunächst mal zum Einstieg ein ganz einfaches Projekt gebastelt.
Auf der einen Seite ein Arduino Nano mit einem DHT21-Sensor und einem SX1276 breakout board, auf der anderen Seite ein Heltec Wirelessboard. Da ich bisher nur ganz wenig Ahnung vom Programmieren habe, hab ich mal fertige Codes hergenommen, die man so online auf diversen Projektseiten findet. Das Nano mit dem DHT21 funktioniert auch problemlos. Im Serial Monitor, wird mir angezeigt dass die Messwerte als Packages gesendet werden. Mit einem Arduino Uno und einem zweiten SX1276 breakout board kontte ich diese Packages auch empfangen. Super Sache!
Nun hab ich mir aber eine Heltec Wireles Stick gekauft. Mit diesem funktioniert das Empfangen der Packages vom Arduino Nano aber leider garnicht. Als Code habe ich hier den Beispiel-Code aus der Heltec ESP32-Lib verwendet.
CODE Arduino Nano+DHT21+SX1276
#include <SPI.h>
#include <Arduino.h>
#include <LoRa.h>
#include "DHT.h"
#define DHTPIN 4
#define DHTTYPE DHT21
DHT dht(DHTPIN, DHTTYPE);
int hum;
float temp; //Stores temperature value
void setup() {
Serial.begin(9600);
dht.begin();
while (!Serial);
Serial.println("LoRa Sender");
if
(!LoRa.begin(868E6)) {
Serial.println("Starting LoRa failed!");
while (1);
}
}
void loop()
{
temp = dht.readTemperature();
hum = dht.readHumidity();
Serial.println("Sending packet: ");
// send packet
LoRa.beginPacket();
LoRa.print("Humidity: ");
LoRa.print(hum);
LoRa.print("%");
LoRa.print(" Temperature:");
LoRa.print(temp);
LoRa.print("C");
Serial.print("Humidity: ");
Serial.print(hum);
Serial.print("%");
Serial.print(" Temperature:");
Serial.print(temp);
Serial.println("C");
Serial.println("");
LoRa.endPacket();
delay(5000);
}
Code für Heltec Wireless Stick Receiver
This is a simple example show the Heltec.LoRa recived data in OLED.
The onboard OLED display is SSD1306 driver and I2C interface. In order to make the
OLED correctly operation, you should output a high-low-high(1-0-1) signal by soft-
ware to OLED's reset pin, the low-level signal at least 5ms.
OLED pins to ESP32 GPIOs via this connecthin:
OLED_SDA -- GPIO4
OLED_SCL -- GPIO15
OLED_RST -- GPIO16
by Aaron.Lee from HelTec AutoMation, ChengDu, China
成都惠利特自动化科技有限公司
www.heltec.cn
This project is also available on GitHub:
https://github.com/Heltec-Aaron-Lee/WiFi_Kit_series
*/
#include "heltec.h"
#include "images.h"
#define BAND 868E6 //you can set band here directly,e.g. 868E6,915E6
String rssi = "RSSI --";
String packSize = "--";
String packet ;
void logo(){
Heltec.display->clear();
Heltec.display->drawXbm(0,5,logo_width,logo_height,logo_bits);
Heltec.display->display();
}
void LoRaData(){
Heltec.display->clear();
Heltec.display->setTextAlignment(TEXT_ALIGN_LEFT);
Heltec.display->setFont(ArialMT_Plain_10);
Heltec.display->drawString(0 , 15 , "Received "+ packSize + " bytes");
Heltec.display->drawStringMaxWidth(0 , 26 , 128, packet);
Heltec.display->drawString(0, 0, rssi);
Heltec.display->display();
}
void cbk(int packetSize) {
packet ="";
packSize = String(packetSize,DEC);
for (int i = 0; i < packetSize; i++) { packet += (char) LoRa.read(); }
rssi = "RSSI " + String(LoRa.packetRssi(), DEC) ;
LoRaData();
}
void setup() {
//WIFI Kit series V1 not support Vext control
Heltec.begin(true /*DisplayEnable Enable*/, true /*Heltec.Heltec.Heltec.LoRa Disable*/, true /*Serial Enable*/, true /*PABOOST Enable*/, BAND /*long BAND*/);
Heltec.display->init();
Heltec.display->flipScreenVertically();
Heltec.display->setFont(ArialMT_Plain_10);
logo();
delay(1500);
Heltec.display->clear();
Heltec.display->drawString(0, 0, "Heltec.LoRa Initial success!");
Heltec.display->drawString(0, 10, "Wait for incoming data...");
Heltec.display->display();
delay(1000);
//LoRa.onReceive(cbk);
LoRa.receive();
}
void loop() {
int packetSize = LoRa.parsePacket();
if (packetSize) { cbk(packetSize); }
delay(10);
}
ich habe zuletzt mit verschieden Einstellungen des SF rumprobiert, aber... ich bekomme keine Einstellung hin mit der der Wireless Stick daten empfangen könnte. Deswegen wäre ich sehr dankbar wenn von euch jemand ne gute Idee hätte.
Besten Dank.
Phil