Hallo,
Ich möchte zwischen den o.g. Boards eine Kommunikation via HC-12/433MHz aufbauen.
Der Aufbau soll grundsätzlich so aussehen, dass der "Server" (ESP32) Daten von verschiedenen Clients empfangen und den Erhalt entsprechend bestätigen soll.
Im ersten Schritt bin ich dabei, den Empfang hier im und ums Haus zu testen um zu sehen, ob ich überall dort Empfang habe, wo ich ihn brauche.
Dazu habe ich einen Client (ATtiny85), der einfach nur eine Ping-Nachricht verschickt und der Server schickt ein OK zurück, wenn er etwas empfängt. Aktuell wird aber der Inhalt der Nachrichten gar nicht ausgewertet. Im Grunde checken beide einfach nur, ob sie etwas empfangen und reagieren dann wie gewünscht.
Grundsätzlich funktioniert das, aber nachdem ich jetzt mal den Inhalt der Nachrichten lesen wollte, habe ich am Server festgestellt, dass wohl nur Kauderwelsch ankommt. Zumindest zeigt mit der Serial Monitor nur "������" an.
Ich hatte vorher einen Arduino Uno als Server, da hat alles gut geklappt.
Hier mal der Server-Code:
#include <SoftwareSerial.h>
#define RXD2 D7 //(RX2)
#define TXD2 D6 //(TX2)
SoftwareSerial softSerial(RXD2, TXD2); //RX, TX
void setup() {
Serial.begin(115200);
softSerial.begin(9600);
}
void loop() {
if (Serial.available() > 0) {
//Eingabe am Serial Monitor and send over HC-12
String input = Serial.readString();
Serial.print("Send: ");
Serial.println(input);
// Senden über HC-12
softSerial.println(input);
}
if (softSerial.available() > 1) {
//Empfang am HC-12
String input = softSerial.readString();
// Ausgabe am Serial Monitor
Serial.println(input);
softSerial.println("OK");
}
delay(20);
}
Und hier der Client-Code:
#include <SoftwareSerial.h>
SoftwareSerial softSerial(4, 3); //RX, TX
int nextMessage=0;
int ledPin=2;
void setup() {
Serial.begin(115200);
softSerial.begin(9600);
pinMode(ledPin, OUTPUT);
}
void loop() {
if (Serial.available() > 0) {
//Eingabe am Serial Monitor and send over HC-12
String input = Serial.readString();
Serial.print("Send: ");
Serial.println(input);
// Senden über HC-12
softSerial.println(input);
}
if(nextMessage>=0 && nextMessage<=millis()){
softSerial.println("PING");
nextMessage=-1;
}
if (softSerial.available() > 1) {
//Empfang am HC-12
String input = softSerial.readString();
// Ausgabe am Seral Monitor
Serial.println(input);
nextMessage=0;
digitalWrite(ledPin, HIGH);
delay(100);
digitalWrite(ledPin, LOW);
delay(100);
digitalWrite(ledPin, HIGH);
delay(100);
digitalWrite(ledPin, LOW);
}
delay(20);
}
Hat jemand eine Idee, woran das liegen könnte?
Danke
