Hallo Zusammen,
ich habe mir einen 5,8 GHz-Sensor von CQRobot und einen 10 GHz Sensor von DFRobot besorgt.
5 GHz: 5.8GHz Doppler Effect Microwave Motion Sensor SKU: CQRSENWB02 - CQRobot-Wiki
10 GHz:
Mein Projekt soll stumpf folgendes können:
2 LEDs leuchten auf, wenn der jeweils zugewiesene Sensor eine Bewegung erkannt hat.
Das funktioniert soweit auch ohne Probleme. Die Sensoren geben ein GPIO-Signal an die digitalen Pins auf dem Arduino Nano Every raus und der verwertet das auch korrekt gemäß Programmierung.
Jetzt habe ich nur folgendes Problem:
Die Reichweite im 10 GHz Sensor kann ich per Stellschraube anpassen.
Laut CQRobot kann ich die Reichweite des 5 GHz Sensors auch anpassen, jedoch nur über serielle Kommunikation. Ich kenne das grundsätzlich nur so, dass mir dann eine Bibliothek für die Arduino-Software vorliegt o.ä.
Bei dem vorliegenden Sensor jedoch ist nur o.g. Website ("Wiki") hinterlegt, auf welchem die Frames für die UART/serielle Kommunikation (RX/TX) für mich gänzlich unverständlich erklärt wird.
Bevor ich Euch hier behelligt habe, habe ich gemeinsam mit ChatGPT versucht, eine funktionierende Programmierung zustande zu kriegen, in welcher ich die Distanz auf dem Chip programmiere.
Das hat nicht geklappt - es scheiterte bereits am Aufbau der seriellen Kommunikation zum Sensor.
const int radar5Pin = 4;
const int radar10Pin = 5;
const int StatusLedWhitePin = 8;
const int BlueLed5Pin = 10;
const int BlueLed10Pin = 9;
int val;
void setup() {
Serial.begin(115200);
pinMode(radar10Pin, INPUT);
pinMode(radar5Pin, INPUT);
pinMode(StatusLedWhitePin, OUTPUT);
pinMode(BlueLed5Pin, OUTPUT);
pinMode(BlueLed10Pin, OUTPUT);
digitalWrite(StatusLedWhitePin, HIGH);
}
void loop() {
int radar10Value = digitalRead(radar10Pin);
if (radar10Value == LOW) {
digitalWrite(BlueLed10Pin, HIGH);
Serial.println("Bewegung erkannt - 10 GHz");
}
else {
digitalWrite(BlueLed10Pin, LOW);
}
val = digitalRead (radar5Pin);
//Serial.println(val);
if (val == LOW)
{digitalWrite (BlueLed5Pin, LOW);
}
else
{
digitalWrite (BlueLed5Pin, HIGH);
Serial.println("Bewegung erkannt - 5 GHz");
}
delay(200);
}
Auf der Website von CQRobot ist dies quasi alles an Erklärung:
Description:
Head: Control frame header, the value is 0x58;
Control Frame Payload: Control frame payload, divided into command packet, control command, parameter length and parameters:
CMD Group: command grouping, 3 effective bits, supports up to 7 grouped commands;
CMD: Control command, 5 effective bits, that is, a group supports up to 32 control commands;
Parameter Length: the total length of the parameter (bytes);
Para_0 ~ Para_n: Parameters (the length is specified by Parameter Length)
Check Code: check code, the value is the sum of the previous data:
Check Code = Head + Payload_0 + ... + Payload_n
Beispiel zum ändern der Erkennungsdistanz:
2.1 Set motion sensing distance
Command code: 0x2
Parameters: para1: distance level 0 - 31
Send command format (HEX): 58 02 01 xx xx xx
Reply frame: refer to reply frame format
e.g., set distance level to 15
HEX is: 58 02 01 0F 6A 00
Resp: 59 02 01 00 5C 00 (success), Other: fail
Kann mir jemand von Euch helfen, Licht ins Dunkel zu bringen? Wie baue ich diese Informationen in meine Programmierung ein?
Ich hoffe, ich habe erstmal die wichtigsten Informationen zusammengefasst.
Vielen Dank und viele Grüße
Rammnick