Forum: Mikrocontroller und Digitale Elektronik HC-SR04P mit I2C/UART Daten gesucht


von Bernhard S. (b_spitzer)


Lesenswert?

Hallo zusammen,
da der bekannte Ultraschall-Sensor HC-SR04 (ohne P) nur mit 5V läuft 
(schlecht bei meinen ESP-Projekten) habe ich mir ein paar andere 
Varianten beschafft. Sehr interessant ist dabei der HC-SR04P in der 
neusten Variante. Der hat Lötjumper auf der Platine für I2C und 
UART-Übertragung. Bei Ali gibts auch Bilder:
https://de.aliexpress.com/item/32823722162.html

Allerdings findet man über den verbauten Chip keinerlei Infos. Der Chip 
heisst RCWL-9600 und ist auch auf dem M5Stack Modul U098 verbaut (unter 
dem Gehäuse gibt es da auch Lötjumper, der M5-Kram läuft aber meist über 
I2C).
https://www.distrelec.biz/en/rcwl-9600-ultrasonic-distance-sensor-unit-m5stack-u098/p/30185753

Erkenntnisse bisher:
====================
Zunächst habe ich den UART-Modus untersucht. Da gibt es das ähnliche 
Modul US-100, welches auch mit 3,3V läuft. Ein Beispielprogramm für das 
US-100 läuft aber nicht mit dem HC-SR04P. Das US-100 antwortet nach dem 
Befehl 0x55 mit 2 Bytes für den gemessenen Abstand.
Ich habe dann alles von 0-255 durchprobiert. Bei 0xA0 und 0xF1 antwortet 
das Modul über UART.
Bei 0xA0 kommen 3 Bytes an, die der Messwert sein könnten - einfaches 
Aneinanderhängen könnte der Abstand in µm sein(!)
Mein Testprogramm:
1
/* HC-SR04P neue Version
2
   Die neuste Version des SR-HC04P hat 2 Lötjumper auf der Platine, um die Schnittstelle umzustellen
3
   Der Chip hat die Bezeichnung RCWL-9600 (weiteres Stichwort zum Suchen: M5Stack Modul U098)
4
   http://www.icstation.com/rcwl-1603-ultrasonic-module-distance-measuring-transducer-sensor-arduino-uart-gpio-output-temperature-compensation-high-precision-p-13185.html
5
6
   Pinbelegung/Modus:
7
   Normal  I2C   Seriell
8
   Trigger SCL   RxD     am ESP32 mit TxPin verbinden
9
   Echo    SDA   TxD     mit RxPin verbinden
10
*/
11
#include <SoftwareSerial.h>
12
const int TxPin = 27, RxPin = 14;
13
SoftwareSerial MySerial (RxPin, TxPin);
14
15
void setup() {
16
  pinMode(RxPin, INPUT);
17
  pinMode(TxPin, OUTPUT);
18
  Serial.begin(115200);     // zum PC
19
  MySerial.begin(9600);     // zum Sensor
20
}
21
22
void loop() {
23
  char Zeichen;
24
  unsigned long Zeit;
25
  int Timeout;
26
  bool Flag;
27
28
  for (int Anzahl = 0; Anzahl < 50; Anzahl++) {
29
    MySerial.flush();          
30
    Zeichen = 0xA0;     // Befehlsbyte, Antwort vermutlich Messwert
31
    Timeout = 0;
32
    Serial.printf("Sende Zeichen %3d\t", Zeichen);
33
    MySerial.write(Zeichen);      
34
    Zeit = millis();
35
    while (MySerial.available() == 0 ) {  // warte auf Antwort des Moduls
36
      Timeout++;                          // falls nix kommt, abbrechen
37
      if (Timeout > 200000) break;
38
    }
39
    Zeit = millis() - Zeit;
40
    Serial.printf("Antwortzeit %ldms \n", Zeit);  // hier ist die Zeit abhängig vom Abstand... verdächtig!
41
    while (MySerial.available() != 0) {
42
      Serial.printf("0x%02X ", MySerial.read());
43
      delay(10);
44
    }
45
    Serial.println();
46
    delay(500);
47
  }
48
  // Kennung auslesen, Befehlsbyte 0xF1
49
  Zeichen = 0xF1;
50
  Flag = true;
51
  Timeout = 0;
52
  Serial.printf("Sende Zeichen %3d\t", Zeichen);
53
  MySerial.write(Zeichen);                         
54
  Zeit = millis();
55
  while (MySerial.available() == 0 ) {  // warte auf Antwort des Moduls
56
    Timeout++;                          // das geht hier immer fix
57
    if (Timeout > 200000) break;        // Timeout eigentlich nicht nötig
58
  }
59
  Zeit = millis() - Zeit;
60
  Serial.printf("Antwortzeit %ldms \n", Zeit);
61
  while (MySerial.available() != 0) {
62
    Serial.printf("%c ", MySerial.read()); // Kennung ausgeben
63
    delay(100);
64
  }
65
  Serial.println();
66
  delay(500);
67
}
Die Antworten auf den Befehl 0xA0 waren z.B.
1
Sende 0xA0:
2
Antwortzeit 17ms  0x0F 0xE8 0x08 = 1042440  (1042mm??)
3
Antwortzeit 10ms  0x08 0x5A 0x48 =  547400
4
Antwortzeit 4ms   0x01 0x71 0x38 =   94520
5
Antwortzeit 4ms   0x01 0x36 0xC8 =   79560
6
Antwortzeit 5ms   0x01 0x86 0x78 =   99960 (99mm?)
7
Antwortzeit 105ms 0x79 0x6E 0x18 = 7958040

Die Antwort auf den Befehl 0xF1 ist immer gleich. Als HEX-Werte:
1
0xCE 0xDE 0xCE 0xFD 0xC8 0xD5 0xB3 0xBF 0xCE 0xEF 0xC1 0xAA 0x00 0x52 0x43 0x57 0x4C 0x2D 0x32 0x30 0x32 0x30
Und als ASCII:
1
⸮ ⸮ ⸮ ⸮ ⸮ ⸮ ⸮ ⸮ ⸮ ⸮ ⸮ ⸮  R C W L - 2 0 2 0
Die erste Hälfte ist scheinbar "Datenmüll", dann kommt ein NUL-Zeichen 
(0x00) und anschließend lesbar ASCII - seltsam...

Besser lief dann der Versuch mit I2C-Bus. Das Beispiel für das 
M5Stack-Modul läuft sofort.
https://github.com/m5stack/M5-ProductExampleCodes/blob/master/Unit/ULTRA/Arduino/ULTRA/ULTRA.ino
Etwas Unsinnig ist hier, den Messwert in Millimetern als float-Wert 
umzuwandeln. Bei dem Teil brauche ich keine 123,45mm als Ergebnis. Daher 
habe ich in meiner Variante das Ergebnis als ganze Millimeter belassen:
1
#include <Wire.h>
2
const int MySCL=27, MySDA=14;   // den Hardware-I2C wollte ich hier gerade mal nicht nehmen. Geht natürlich auch auf 21+22
3
void setup() {
4
  Serial.begin(115200);
5
  Wire.begin(MySDA, MySCL);
6
  Serial.printf("Register 0: 0x%02X\n",readRegUS(0));  // Test, ob da was zurück kommt...
7
  Serial.printf("Register 2: 0x%02X\n",readRegUS(2));  // die 1 fehlt hier, das ist das Datenregister
8
  Serial.printf("Register 3: 0x%02X\n",readRegUS(3));
9
  Serial.printf("Register 4: 0x%02X\n",readRegUS(4));
10
  Serial.printf("Register 5: 0x%02X\n",readRegUS(5));
11
  Serial.printf("Register 6: 0x%02X\n",readRegUS(6));
12
  Serial.printf("Register 7: 0x%02X\n",readRegUS(7));
13
  Serial.printf("Register 8: 0x%02X\n",readRegUS(8));
14
  Serial.printf("Register 9: 0x%02X\n",readRegUS(9));
15
}
16
// Messwerte auslesen, hier aber in ganzen Millimetern
17
unsigned long readEUS() {
18
  uint32_t data;
19
  Wire.beginTransmission(0x57);
20
  Wire.write(0x01);
21
  Wire.endTransmission();
22
  delay(120);
23
  Wire.requestFrom(0x57, 3);
24
  data  = Wire.read(); data <<= 8;
25
  data |= Wire.read(); data <<= 8;
26
  data |= Wire.read();
27
  return data / 1000;
28
}
29
30
void loop() {
31
  unsigned long newvalue;
32
  newvalue = readEUS();
33
  // bei 3,3V misst das Modul nur 3-4m weit... 
34
  if (( newvalue < 2500 ) && ( newvalue > 20 )) {
35
    Serial.printf("Abstand %4ldmm\n", newvalue);
36
  }
37
  delay(100);
38
}
39
// einzelne Register (sofern vorhanden...) auslesen
40
byte readRegUS(byte Register) {
41
  byte data;
42
  Wire.beginTransmission(0x57);
43
  Wire.write(Register);
44
  Wire.endTransmission();
45
  delay(120);
46
  Wire.requestFrom(0x57, 1);
47
  data  = Wire.read();
48
  return data;
49
}
Die Antworten auf meine einzelnen Registernabfragen (Adressen 0, 2-9) 
sind abwechselnd 0x00 und 0xFF. Beim nächsten Aufruf gleich oder 
umgedreht!?! Leider ist scheinbar kein Register dabei, in dem die 
I2C-Adresse des Moduls drin steht.

Nach den ganzen Erkenntnissen kommen jetzt ein paar Fragen...
- Hat zuällig jemand ein Datenblatt vom Chip RCWL-9600?? Ich habe mir 
einen Wolf gesucht :-(
- Beim I2C Modus wäre schick, wenn man die Bausteinadresse setzen 
könnte. Gibt es da was bei M5Stack??

von Stefan F. (Gast)


Lesenswert?

Bitte doch den Händler um Infos, nicht uns.

Ich habe kein Verständnis dafür, dass die Händler bei gewissen Produkten 
großflächig die Katze im Sack verkaufen können, weil wir hier die 
nötigen Infos erarbeiten, ohne dafür einen Cent zu bekommen. Das ist 
unfair.

Wer Produkte verkaufen will, soll gefälligst auch die nötigen Infos dazu 
beschaffen. Ansonsten bitte wieder zurück zur Damenunterwäsche, die hier 
niemandem passt.

von Walter T. (Gast)


Lesenswert?

Genau! Nicht die billigen Module aus China kaufen, sondern hochwertige 
Sensoren! Dann kommt auch direkt der passende Applikationsingenieur mit 
ins Haus!!!

Es ist wirtschaftsschädigend, wenn Hobbyisten unter der Ausrede eines 
kleinen Budgets anders als Konzernentwickler vorgehen!!!!

von Stefan F. (Gast)


Lesenswert?

Walter T. schrieb:
> Genau! Nicht die billigen Module aus China kaufen

Du hast es nicht verstanden. Ich will niemandem "billige Module aus 
China" ausreden. Es geht um die fehlende Doku. Wer so etwas verkauft, 
soll auch die Doku dazu mitliefern oder verlinken. Das ist nicht zu viel 
verlangt. Einen Link setzen ist eine Sache von einer Minute! Bei jedem 
seriösen Händler ist das selbstverständlich.

von Johannes S. (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Bitte doch den Händler um Infos, nicht uns.

Antworte doch einfach mal nicht wenn du keine Infos hast.
Wenn jeder der nichts weiss antworten würde, dann könntest du das Forum 
gleich dicht machen.

von Stefan F. (Gast)


Lesenswert?

Johannes,
antworte doch einfach mal nicht wenn du keine Infos hast.
Wenn jeder der nichts weiss antworten würde, dann könntest du das Forum
gleich dicht machen.

von Johannes S. (Gast)


Lesenswert?

du hast dein Helfersyndrom einfach nicht im Griff.

von HildeK (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Wer so etwas verkauft,
> soll auch die Doku dazu mitliefern oder verlinken. Das ist nicht zu viel
> verlangt.

Da bin ich ganz bei dir.
Entweder ich informiere mich vorher, ob ich irgendwo Dokumentationen 
auftreiben kann und kaufe dann beim billigsten oder ich riskiere, dass 
ich nicht mit der HW klarkomme und es dann Lehrgeld war.
Das ist dann aber mein Problem und nicht das des Forums.
Wie oft kommt das hier vor: man hat bei Ali, eBay, Amazon was gekauft 
und weiß nicht mal, wie man es anschließt oder was es tatsächlich kann - 
und fragt hier ...

von Stefan F. (Gast)


Lesenswert?

HildeK schrieb:
> Entweder ich informiere mich vorher ...

Wobei der Bernhard sie durchaus (mit simplem Logik-Signalen) nutzen kann 
und vielleicht auch wollte. Vielleicht ist er erst durch den Lötjumper 
auf die seriellen Schnittstellen aufmerksam geworden, und die haben 
seine Neugier geweckt. Das er hier fragt, ist völlig OK. Er hat ja sogar 
seine Erkenntnisse veröffentlicht.

Ich habe (wie viele andere hier auch) ein Talent zur Suche im Internet, 
mit dem ich gerne helfe, wenn ich kann. Aber ich habe absolut nichts zum 
Produkt gefunden. Was die Händler da abziehen, ist nicht in Ordnung.

HildeK schrieb:
> Wie oft kommt das hier vor: man hat bei Ali, eBay, Amazon was gekauft
> und weiß nicht mal, wie man es anschließt oder was es tatsächlich kann -
> und fragt hier ...

Ständig. Wir arbeiten kostenlos für die Händler.

Von dem Sprücheklopfer Joachim erwarte ich, dass er sich jetzt Mühe gibt 
und wenigstens bis zum Abend auf die Suche macht. Denn er ist ja ein 
besserer Mensch als ich. Hilfsbereit, Wissend, ohne irgendwelche 
Syndrome.

Wir werden sehen. Vielleicht gibt er mir an Ende doch Recht, dass man 
den Händler fragen sollte.

von Johannes S. (Gast)


Lesenswert?

ich habe eine HC04 Version die unaufgefordert alle 50 ms einen Messwert 
sendet, das hat aber nur 3 Pins und keine Lötjumper.
Für I2C könnte das hier passen:
https://github.com/SGBotic/SGBotic_I2CPing
was aber auch dem M5Stack Code entspricht wie ich das sehe.

von Stefan F. (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Von dem Sprücheklopfer Joachim erwarte ich, ...

Sorry, ich meinte Johannes S. Ich sehe dass er sich tatsächlich bemüht. 
Finde ich gut!

Hier ist der Link zum Produkt auf das sich die Library bezieht.
https://www.sgbotic.com/index.php?dispatch=products.view&product_id=3028

Scheint ein anderes zu sein, als das HC-SR04P.

von Bernhard S. (b_spitzer)


Lesenswert?

Stefan ⛄ F. schrieb:
> Wobei der Bernhard sie durchaus (mit simplem Logik-Signalen) nutzen kann
> und vielleicht auch wollte. Vielleicht ist er erst durch den Lötjumper
> auf die seriellen Schnittstellen aufmerksam geworden, und die haben
> seine Neugier geweckt. Das er hier fragt, ist völlig OK. Er hat ja sogar
> seine Erkenntnisse veröffentlicht.
Ich hatte zunächst nur die 3,3V Option im Focus. Dann habe ich aber die 
Signalbezeichnungen auf der Platine und die Lötjumper gesehen. Das weckt 
Begehrlichkeiten...

> Ich habe (wie viele andere hier auch) ein Talent zur Suche im Internet,
> mit dem ich gerne helfe, wenn ich kann. Aber ich habe absolut nichts zum
> Produkt gefunden. Was die Händler da abziehen, ist nicht in Ordnung.
Ich finde eigentlich auch fast alles, aber trotz intensiver Suche bin 
ich noch nicht einmal auf die Webseite des Chipherstellers gekommen. 
RCWL ist auch nicht bei einer Logo-Suche zu finden :-(

Stefan ⛄ F. schrieb:
> Ich habe kein Verständnis dafür, dass die Händler bei gewissen Produkten
> großflächig die Katze im Sack verkaufen können, weil wir hier die
> nötigen Infos erarbeiten, ohne dafür einen Cent zu bekommen. Das ist
> unfair.
Das betrifft leider auch einige der "großen" Händler. Von Adafruit 
bekommt man einen Ultraschallsensor unter der Bezeichnung RCWL-1601.
https://www.adafruit.com/product/4007
Da passt aber das Foto der Rückseite (mit dem RCWL-9600 Chip) nicht zur 
Vorderseite (beachte die beiden Vias oben!). Auch bei dem Sensor ist 
kein Datenblatt verlinkt und die Software-Beispiele nutzen nur die 
bekannte Trigger/Echo Messung.

Es ist aber wirklich ungewöhnlich, dass man zu den ICs gar nichts 
findet. Auch der Radar-Sensor RCWL-0516 mit dem IC RCWL-9196 - nix an 
Details zu finden. Wahrscheinlich hat der Hersteller des ICs noch ein 
paar Gimmicks für "den Verteidigungsfall" im Angebot und ist daher 
untergetaucht...

von Stefan F. (Gast)


Lesenswert?

Bernhard S. schrieb:
> Das betrifft leider auch einige der "großen" Händler. Von Adafruit ...

Die habe ich sowieso gefressen. Von denen habe ich zum doppelten Preis 
ein Display gekauft, weil sie dazu ein Buch mit Anleitungen angeboten 
hatten. Geliefert wurde nur das nackte Display, ohne Buch und ohne 
Pinbelegung.

Ich habe dann eine Nachlieferung oder wenigstens ein PDF angefordert, 
habe sie ab verweigert. Angeblich gäbe es das Buch doch nicht, sorry. 
Aber das Angebot im Shop wird nicht korrigiert, ist zu aufwändig, sorry.

Die Pinbelegung könnte ich von einem Quelletxt ableiten den ich mir 
selbst bei GitHub suchen. Ein Link gibt's nicht, sorry.

Ich kaufe nie wieder bei Adafruit ein. Das ist der gleiche Ramsch wie 
bei Aliexpress, nur teurer - wie auch beim Conrad.

von Johannes S. (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Wir werden sehen. Vielleicht gibt er mir an Ende doch Recht, dass man
> den Händler fragen sollte.

Witzbold. Kann man machen, man bekommt aber nicht immer eine Antwort. 
Das weiß man wenn man die billigen Module aus China kauft. Die meisten 
Händler sind Kistenschieber, nimm oder lass es sein.
Und deinen gelöschten Text über Adafruit hatte ich gelesen. Ist schon 
peinlich wenn man anderen empfiehlt sich erstmal schlau zu machen und 
dann über andere Händler beschwert. LOL.
Und durch Reverse Engineering mit dem Schwarmwissen hier wurden auch 
hier schon manche Pollin Reste veredelt und zu begehrten Schnäppchen.

Zum HC04 hatte ich vor Jahren auch schon mal hier nachgefragt, zur 
serillen Version ist auch wenig zu finden.

Interessanter als stundenlang zu suchen wäre sicher es mit Engineering 
zu versuchen. Auf den Modulen ist ja nicht viel drauf, das lässt sich 
auch durch einen selbstprogrammierten µC ersetzen wenn man Sonderwünsche 
hat. Eventuell kann die US Transducer direkter an den Xtensa anklemmen.

von Johannes S. (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Ich kaufe nie wieder bei Adafruit ein. Das ist der gleiche Ramsch wie
> bei Aliexpress, nur teurer - wie auch beim Conrad.

was erwartest du? Das Lady Ada dir ein gebundenes Buch persönlich 
vorbeibringt?

von Johannes S. (Gast)


Lesenswert?

da hat sich auch schon jemand die Mühe gemacht das selber zu bauen:
https://uglyduck.vajn.icu/ep/archive/2014/01/Making_a_better_HC_SR04_Echo_Locator.html

von Stefan F. (Gast)


Lesenswert?

Johannes S. schrieb:
> was erwartest du? Das Lady Ada dir ein gebundenes Buch persönlich
> vorbeibringt?

Genau das haben sie in ihrem Shop versprochen. Das ist heute noch deren 
Verkaufsmasche.

Ich hatte vor dem Kauf sogar nach der Doku gefragt und bekam die 
Antwort, dass alle nötige Doku mit Links zu Beispielcodes mitgeliefert 
wird.

War aber nicht so.

von Johannes S. (Gast)


Lesenswert?

und trotzdem gehört Adafruit noch zu denen die auch Entwicklung 
betreiben und von denen reichlich abgekupfert wird. Vielleicht hast du 
da Pech gehabt. Die haben 1500 Repos auf Github, das ist doch schon was, 
da muss man das richtige erstmal finden.

von Holger L. (max5v)


Lesenswert?

Könnte man für I2C ausprobieren:

R4 10k, R5 nc

Slave Adresse 0x57
Write: 0xAE Wert 0x01,  ~200ms Messung
Read: 0xAF Antwort Byte_H, Byte_M, Byte_L
Ergebniss: (( Byte_H<<16) + (Byte_M<<8) + (Byte_L) / 1000) mm

Alle Angaben ohne Gewehr.

von Bernhard S. (b_spitzer)


Lesenswert?

Holger L. schrieb:
> Slave Adresse 0x57
> Write: 0xAE Wert 0x01,  ~200ms Messung
> Read: 0xAF Antwort Byte_H, Byte_M, Byte_L
> Ergebniss: (( Byte_H<<16) + (Byte_M<<8) + (Byte_L) / 1000) mm

Das ist doch genau, was mein Code macht. Slave (=Hardware) Adresse 0x57, 
gibt (0x57<<1)=0xAE als Schreibadresse und (0x57<<1 +1)=0xAF als 
Leseadresse.
Interessant wäre halt noch (sicher, vorab) zu wissen, was als weitere 
Kommandos oder Register von dem Chip noch akzeptiert werden.

von Spess53 (Gast)


Lesenswert?

Hi

Bernhard S. (b_spitzer) schrieb

>Auch der Radar-Sensor RCWL-0516 mit dem IC RCWL-9196 - nix an
>Details zu finden.

Bei dem IC RCWL-9196 würde ich auf Grund der Anschlussbelegung ganz 
spontan auf einen BISS0001 (einer der weit verbreiteten Radar-ICs) 
tippen.

MfG Spess

von Bernhard S. (b_spitzer)


Lesenswert?

Spess53 schrieb:
> Bei dem IC RCWL-9196 würde ich auf Grund der Anschlussbelegung ganz
> spontan auf einen BISS0001 (einer der weit verbreiteten Radar-ICs)
> tippen.
Der RCWL-9196 scheint kompatibel zum BISS0001 zu sein, trotzdem ist 
davon (im Gegensatz zum BISS http://www.sc-tech. cn/en/0001en.htm 
leerzeichen in der URL löschen) kein Hersteler und kein Datenblatt 
verfügbar.
Also ist auch dieser Tipp eher fundierte Kaffesatzleserei.

Hier jat jemand einen ähnlichen Chip eines RCWL-0515 Radar-Moduls 
analysiert, abgeschliffen und im Gehäuse 2(!) Dies entdeckt. Ein LD1117 
und ein Chip mit der Kennzeichnung TT1712. Modulhersteller wieder 
RCWL...
https://www.tinytransistors.net/2020/12/20/rcwl-0515-radar-motion-sensor/

Ich schätze, dass der Hersteller in China Teile für "den 
Verteidigungsfall (mit Dual-Use)" produziert und daher offiziell nirgens 
auftaucht.

von Hugo H. (hugo_hu)


Lesenswert?


von Stefan F. (Gast)


Lesenswert?

Hugo H. schrieb:
> https://docs.m5stack.com/en/unit/sonic

Die Seite bringt uns auch nicht weiter. Erstens wissen wir nicht ob dort 
das gleiche Protokoll verwendet wird, zweitens ist es ebenfalls 
undokumentiert.

von Wolfgang (Gast)


Lesenswert?

Bernhard S. schrieb:
> Der RCWL-9196 scheint kompatibel zum BISS0001 zu sein, trotzdem ist
> davon (im Gegensatz zum BISS http://www.sc-tech. cn/en/0001en.htm
> leerzeichen in der URL löschen) kein Hersteler und kein Datenblatt
> verfügbar.

Der RCWL-9196 ist ein Mikrowellen Doppler Radar. Mit einem PIR Motion 
Detektor IC, wie dem BISS0001 kann der prinzipbedingt schon mal nicht so 
viel gemeinsam haben.

Die einzige Gemeinsamkeit dürfte sein, dass man damit 
Bewegungsdetektoren aufbauen kann.

Zumindest für die  RCWL-9196 Module gibt es mehrere Unterlagen, z.B.
https://www.filipeflop.com/img/files/download/Datasheet_rcwl-0516.pdf
https://www.epitran.it/ebayDrive/datasheet/19.pdf
https://www.mantech.co.za/datasheets/products/RCWL-0516.pdf
https://github.com/jdesbonnet/RCWL-0516
https://wolles-elektronikkiste.de/rcwl-0516-mikrowellenradar-bewegungssensor

von Spess53 (Gast)


Lesenswert?

Hi

>Also ist auch dieser Tipp eher fundierte Kaffesatzleserei.

Ich bin nicht der einzige, der auf diese Idee gekommen ist:

https://www.snapeda.com/parts/rcwl-9196/RCWL/datasheet/

>Auch der Radar-Sensor RCWL-0516 mit dem IC RCWL-9196 - nix an
>Details zu finden. Wahrscheinlich hat der Hersteller des ICs noch ein
>paar Gimmicks für "den Verteidigungsfall" im Angebot und ist daher
>untergetaucht...

Was hast du denn für feuchte Träume? Nichts ist billiger als einen 
massenhaft hergestellten IC mit eigenem Making zu versehen.

>Hier jat jemand einen ähnlichen Chip eines RCWL-0515 Radar-Moduls
>analysiert, abgeschliffen und im Gehäuse 2(!)

Warum sollte sich jemand für ein in D nicht zugelassenes 3,GHz Modul 
diesen Auffwand treiben?

MfG Spess

von Bernhard S. (b_spitzer)


Lesenswert?

Wolfgang schrieb:
> Der RCWL-9196 ist ein Mikrowellen Doppler Radar. Mit einem PIR Motion
> Detektor IC, wie dem BISS0001 kann der prinzipbedingt schon mal nicht so
> viel gemeinsam haben.

Bei dem Modul macht ein einziger Transistor den 3GHz-Oszillator und die 
Demodulation. Der Chip bekommt nur die gefilterte Doppler-Frequenz zu 
sehen. Im RCWL ist keine (kaum) HF-Magie drin... Erklärungen hier:
https://www.youtube.com/watch?v=Hf19hc9PtcE

Spess53 schrieb:
> Warum sollte sich jemand für ein in D nicht zugelassenes 3,GHz Modul
> diesen Auffwand treiben?

Die Sendeleistung beträgt (geschätzte) 1mW. Die Reichweite im Raum 
beträgt 4-5m und Glas schirmt komplett ab. Da kommt sicher kein 
Messwagen der Telekom vorbei...

Davon abgesehen, hier geht es mir eigentlich um den Ultraschall-Sensor 
und das IC RCWL-9600. Den RCWL-9196 habe ich nur als Beispiel eines 
anderen ICs des selben Herstellers (RCW?) genommen, von dem auch keine 
exakten Infos verfügbar sind.

gruß
Bernhard

von Wolfgang (Gast)


Lesenswert?

Bernhard S. schrieb:
> Wolfgang schrieb:
>> Der RCWL-9196 ist ein Mikrowellen Doppler Radar. Mit einem PIR Motion
>> Detektor IC, wie dem BISS0001 kann der prinzipbedingt schon mal nicht so
>> viel gemeinsam haben.
>
> Bei dem Modul macht ein einziger Transistor den 3GHz-Oszillator und die
> Demodulation. Der Chip bekommt nur die gefilterte Doppler-Frequenz zu
> sehen.

Eben - ein PIR detektiert tangentiale Bewegungen und ein Dopplerradar 
radiale.

von Jan (Gast)


Lesenswert?

Danke @Bernhard für die Recherche.

Bernhard S. schrieb:
> Die erste Hälfte ist scheinbar "Datenmüll", dann kommt ein NUL-Zeichen
> (0x00) und anschließend lesbar ASCII - seltsam...

Wie im Kindergarten oben schon dargestellt, ignorieren die frechen 
Chinesen nicht nur den potenten Massenmarkt der Handvoll westlicher 
Hobbyfrickler durch schändliche Unterschlagung gangbarer Datenblätter, 
sondern haben sich da auch noch erlaubt, in ihrer eigenen Firmware 
Chinesisch zu schreiben.

Der Datenmüll ist nämlich GB18030 kodiert und ergibt den Firmennamen 
无锡日晨物联, Google übersetzt das als "Wuxi Richen IoT". Das Original führt 
per Google-Suche zur Homepage des Herstellers https://www.sz-rcwl.com/, 
wo es aber keine Datenblätter gibt, Anfrage getriggert, bisher ohne Echo 
(pun intended).

Mein Wissen kommt von Recherchen, die ich mit anderen Sensoren des Typs 
RCWL-1605 und RCWL-1005 unternommen habe. Für die gibt es auch keine 
Datenblätter, aber auf diversen Produktseiten kann man sich Fragmente 
davon zusammensuchen.

Aus diesen Infos habe ich mir meinen eigenen UART-Sketch gebastelt und 
erst sehr spät gemerkt, dass es die neuere Version des HC-SR04P mit 
ähnlichen Features gibt, und noch später diesen Thread gefunden und 
gemerkt, dass alle offenbar Spielarten des gleichen RCWL-96XX Chips 
verwenden. Duh.

Bei meinen sehr ähnlich gelagerten Tests habe ich aber leider auch nicht 
viel mehr an Features ausgraben können. I2C scan reagiert noch auf 0x58, 
dort aber keinerlei Funktionalität zu entdecken, genau wie unter 0x57 
bei allen Registern außer 0x01.

I2C und UART Modus liefern tatsächlich beide die Messwerte in 
Micrometern, deine Vermutung oben also richtig. Obwohl die 
Datenblattfragmente auf die Relevanz einer Temperaturkorrektur 
hinweisen, wird leider nicht dokumentiert, welche Temperatur der Sensor 
selbst bei der Konversion in Micrometer zugrunde legt.

Meine weiteren, in ausbeuterischer Selbstversklavung unter Blut und 
Tränen erarbeiteten Informationen habe ich zusammen mit einer kleinen 
Library für den I2C Modus hier online gepackt:

https://github.com/ftjuh/RCWL_1X05

Interessant fände ich beim HC-SR04P noch, ob er im I2C Modus eine 
ähnlich miese blind zone hat, die ist bei meinen beiden nämlich 25 cm.

Jan

von Frank D. (sinx)



Lesenswert?

Hallo,

nur für den Fall, dass noch Unklarheiten bestehen und für mein 
zukünftiges Ich, poste ich hier nochmal die gesamte Geschichte:

Also den HC-SR04P (bei mir mit dem RCWL-9610) setzt man in den 
I2C-Modus, indem man einen 10k Widerstand für Pin7=R8=M2 bestückt. Pin10 
bleibt unbestückt.

Der Chip hat die I2C-SlaveAdresse 7bit=0x57/8bit=0xAE.

Zum Start der Messung schreibt (ReadWriteBit=0) man ein einziges 
Datenbyte an den Slave. Also so:

S+0xAE+0x01+P

S: StartCondition; P: stoP condition



Nach 120ms liest man dann 3 Bytes von dem Baustein (ReadWriteBit=1). 
Also so:

S+0xAF+Data[23:16]+Data[15:8]+Data[7:0]+P

S: StartCondition; P: stoP condition
Die Slave-Adresse ist dann immer noch die 7bit=0x57/8bit=0xAE aber mit 
gesetztem RW-Bit => 0xAF auf dem Bus.

Es gibt keine Registeradressen, sondern nur das Startkommando 0x01.

Der Sensor liefert dann den Abstand in Micrometern!
Also die Werte 0x18, 0x8B, 0xC0 werden zu 0x188BC0, was dezimal 
1608880um sind oder 1.608m bis zu meiner Zimmerdecke.

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.