Probleme mit dem UNO und den PN 2,5 Sensor PMS5003

Na ja ich schaue grundsätzlich keine Videos, schon das wie das verdrahtet wurde sagt alles über die Qualität, dazu hat Die , Der das Datenblatt auch nicht gelesen.
Schau doch genau wie wurde das Angeklemmt nix mit 0 und 1.
Damit du nicht nach einigen Tagen kommst mit der Aussage wir haben dir nichts gesagt wegen den 3,3V und dadurch dein Sensor ist defekt, halte mich raus.

Dort stecht Garnichts außer was Relevant ist "Switch And Sensor For Arduino STM32"
STM32 ist ein 3,3V System,

Na ja mach was du wolle ist nicht mein Geld, man sollte den das Datenblatt vor die Nase stellen.
Also hat die Diskussion kein Sin.

Ja und was heißt das jetzt für mich konkret für den UNO R4 Minima und dem Sketsch aus der der Beispielbibliothek. "PMS Library/Basic (den ich vorhin als einfaches Beispiel gezeigt habe.
Wie gesagt, ich weiß es nicht welche PIN ich hier konkret für TXD und RXD hier nehmen soll.
Sind hier Serial und Serial1 richtig? Wenn nicht wie soll der Sketch verändert werden für den UNO R4 Minima?

#include "PMS.h"

PMS pms(Serial);
PMS::DATA data;

void setup()
{
  Serial.begin(9600);   // GPIO1, GPIO3 (TX/RX pin on ESP-12E Development Board)
  Serial1.begin(9600);  // GPIO2 (D4 pin on ESP-12E Development Board)
}

void loop()
{
  if (pms.read(data))
  {
    Serial1.print("PM 1.0 (ug/m3): ");
    Serial1.println(data.PM_AE_UG_1_0);

    Serial1.print("PM 2.5 (ug/m3): ");
    Serial1.println(data.PM_AE_UG_2_5);

    Serial1.print("PM 10.0 (ug/m3): ");
    Serial1.println(data.PM_AE_UG_10_0);

    Serial1.println();
  }

}

Du bist der Profi. Ich bin Anfänger :wink: Und vergesse bitte, wie der ganze Mist hier mit der KI angefangen hat, bitte. Ich wollte ganz am Anfang doch nur erstmal sehen, wsas ich an Informationen bringen soll, bevor ich die "Hosen runter lasse" wie du sagst. Ich war vor her viel bei JBMEDIA und Shelly bei der Foren unterwegs. Da habe ich das immer (meist) so bei komplexeren Sachen gemacht. War bisher immer gut bis sehr gut.

Es gibt sogenannte " TTL Logic Level Converter, 3,3V / 5V". Die sorgen für die Anpassung zwischen 5V TX/RX und 3,3V TX/RX. kannst du ja googeln. Die müße immer in die TX/RX Verbindung rein.
Wenn 5 Volt auf Pins treffen der 3,3 Volt erwartet, kann das für ein KO sorgen.
Wenn 3,3 Volt auf einen Pin treffen der 5 Volt erwartet, kann das Signal zu klein sein.

Und immer: TX RX über Kreuz verbinden. Das wurde ja schon gesagt.

Franz

Hat es über Kreuz, wie du sagst probiert, leide auch keine Daten :frowning:

Hier ist noch ein Link wo die Anschaltung erklärt ist. Die da gezeigte Platine ist für zwei Serial Schnittstellen. HV ist 5Volt Seite LV ist die 3,3 Volt Seite. In der Mitte muss die Platine mit 5 Volt (HV) und mit 3,3 Volt (LV) versorgt werden. Rechts und Links ist jeweils eine Serial Schnittstelle.

Dh. dass ggf. der Sensor wegen der 5V an den Sensor-PINs 4 und 5 inzwischen Defekt ist?
PIN1 und PIN2 mit 5V war aber richtig!

Snag_49a67e

Dann waren die Videos ja totaler Mist. Wieso ging das bei den denn?

Ansonsten hast du total Recht !!!
Dein Tipp mit dem Googeln:
" Mit wieviel Spannung laufen die digitalen Pins am Arduino UNO oder Arduino R4 MINIMA?"

Der Arduino Uno und der Arduino R4 MINIMA sind beide Mikrocontroller-Entwicklungsplattformen, die auf dem ATmega328P-Mikrocontroller-Chip basieren. Diese Mikrocontroller verwenden eine 5V-Versorgungsspannung. Daher laufen die digitalen Pins dieser Arduinos standardmäßig mit einer Logikpegelspannung von 5 Volt.

Das bedeutet, dass die digitalen Pins des Arduino Uno und des Arduino R4 MINIMA auf HIGH (logisch 1) etwa 5 Volt und auf LOW (logisch 0) etwa 0 Volt haben.

Es ist wichtig, diese Information zu kennen, wenn Sie externe Geräte oder Sensoren mit dem Arduino verbinden, insbesondere wenn diese Geräte Logikpegel mit einer anderen Spannung (wie 3,3V) verwenden. In solchen Fällen könnte ein Logikpegelwandler (wie der zuvor erwähnte TTL Logic Level Converter) notwendig sein, um die unterschiedlichen Pegel zu korrigieren und eine korrekte Kommunikation zwischen den Geräten sicherzustellen."

**Doch wie schalte ich das? **
Ist so einer hier der richtige?
I2C Pegelwandler/Level Konverter 3.3V-5V bidirektional 2-Kanal

https://www.amazon.de/RoboMall-Pegelwandler-Shifter-Konverter-
bidirektional/dp/B071PD628W/ref=sr_1_2?keywords=I2C+Pegelwandler%2FLevel+Konverter+3.3V-5V+bidirektional+2-Kanal&qid=1703198032&sr=8-2

Snag_58f7f0

ist für mich der blaue und der grüne für TXD und RXD zutreffend?
Die untere Seite (3.3V) kommt vom Sensor und die obere Seite geht zum Arduino (5V), richtig?

Fürchterlicher Unsinn!

Hallo,

D0 und D1 sind doch die normale Serielle Schnittstelle beim UNO R3 und auch beim Uno R4 die wird für die Anzeige auf dem Monitor benutzt.

in #33 findest Du einen Link zu der Lib dort wird eine Schnittstelle zum Anschluss verwendet die mit Arduino pin 8 und pin9 bezeichnet ist, weil die anscheinend so fest codiert ist. Das gilt ja übrigens auch für die normale altseriell lib. Anscheinend wird sich dabei auf den UNO R3 bezogen.

Wobei ich mit jetzt nicht sicher bin , was entspricht das für pins bei dem UNO R4 Minima Board
aus der Doku

würde ich jetzt schließen das es sich ebenfalls um Pin 8 und Pin 9 handeln.

falls Du eine andere softseriell lib verwendest wirst du sicher die pins angeben müssen die dazu benutzt werden. Ich finde in der Doku zum Uno R4 keine pins für eine Seriell1 , vermutlich gibt es die nicht so als hardware.

By the way reden wir überhaupt von der selben lib für den Sensor und welche nutzt du denn.

Nööö!
Der R4 hat natives USB
Serial hat somit keinen Pin nach außen. Es ist eine reine Emulation, namens USB-CDC

Ok danke ,
dann habe ich das Pinout Bild aus der Doku Kapitel 9 und die Liste 9.2 falsch interpretiert. Das steht Serial0 dran

17 D1/TX0 Digital GPIO 1 / Serial 0 Transmitter (TX)
18 D0/TX0 Digital GPIO 0 / Serial 0 Receiver (RX

Ein einfacher loopback Test verschafft Klarheit:

void setup()
{
  Serial.begin(9600);
  Serial1.begin(9600);
}

void loop() 
{
  int c;
  
  c = Serial.read();
  if(c > 0) Serial1.write(c);
  
  c = Serial1.read();
  if(c > 0) Serial.write(c);
}

Setzt man eine Brücke zwischen Pin 1 und 0 gehen die Monitor Eingaben durch.
Zieht man die Brücke, geht nix mehr.

Vergleichbar mit dem Leonardo, bei dem das quasi identisch funktioniert,

Jetzt funtioniert der Sensor PMS5003 : Aber bisher nur auf dem Arduino Nano
NICHT auf den Arduino UNO und auch nicht auf dem Arduino R4 MINIMA - keine Ahnung wieso!!!

Hier der Test-Code:

#include "PMS.h"

PMS pms(Serial);
PMS::DATA data;

void setup()
{
  Serial.begin(9600);   
  delay(3000);
  Serial.print("Versuch Daten vom PMS5003 zu lesen");
}

void loop()
{
  if (pms.read(data))
  {
    Serial.print("PM 1.0 (ug/m3): ");
    Serial.println(data.PM_AE_UG_1_0);

    Serial.print("PM 2.5 (ug/m3): ");
    Serial.println(data.PM_AE_UG_2_5);

    Serial.print("PM 10.0 (ug/m3): ");
    Serial.println(data.PM_AE_UG_10_0);

    Serial.println();
  }

Der Tipp mit dem  IIC I2C Logic Level Converter Module 5V 3.3V 
UND mit dem Über Kreuz von Franz waren entscheidend.

Warum es NICHT auf den Arduino UNO und auch nicht auf dem Arduino R4 MINIMA - sondern nur auf dem Nano geht - ist mir erstmal ein Rätzel.

![23-12-_2023_16-27-02|306x500](upload://bDCbs0IpES7BRTqv714kIJXAQF9.jpeg)




Warum das Programm nicht auf dem Minima läuft habe ich zur genüge erklärt.
Oder?

Schaltplant zeige ich später (ggf. erst nach Weihnachten). Heute schaffe ich das nicht mehr.

Ja hast du. Bitter erkläre mir es so, dass ich es als ziemlicher Anfänger auch verstehe. BITTE
Beim UNO kommt immer eine Fehlermeldung beim Hochladen. Habe aber schon alles weggeräumt.
Habe aber vorher noch die Fehlermeldung kopiert:

avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x51
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x51
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x00
Fehlgeschlagenes Hochladen: Hochladefehler: exit status 1

Die Serielle ist kein Bussystem.