Arduino NANO empfängt kein Signal über HC12.

Hallo an Alle!

Ich will eine kabelose Verbinmgung zwichen 2 Arduinos herstellen um eine Drone verzusteuern. Um diese Verbingun zu testen will ich die Arduinos erst mal per Serial Monitor kommonizeiren lassun, um später die eigentliche stgeuerung und oder Funktionen hinzuzufügen.

Dafür benutze ich 2 HC12 Module aber irgentwie kann der Arduino NANO nur Daten senden und keine empfangen. Mit Daten meine Buchstaben und Zeichen die ich in den Seriellen Monitor schreibe.
Ich habe schon durch versuchen rausgefunden, dass der Arduino UNO Daten mit der Kabellosen übertragung von dem Arduino UNO empfangen kann aber nicht umgekehrt.

Ich hätte es aber gerne genau anderst herum was aber nicht zu klappen scheint, was auch der Grund dafür ist, dass ich mich an dieses Forum wende.
Da die Verbingn nur einseitig funktioniert habe ich Versucht nur mit 2 Nanos zu arbeiten und bin zu dem Entschluss gekommen, dass die Arduino Nanos keine Daten vom jeweils anerden empfangen können.

Eventuell ist etwas an meinem Code oder am Aufbau der Schaltung falsch und da ich mich hiermit nicht so gut auskenne, hoffe ich das mir jemand von euch helfen kann. Mein Ziel ist es wie gesagt, die beiden Arduino Nanos per Serial Monitor komonizieren zu lassen.

Ich habe mich auch an diesem Video orientiert:

Das ist der Code den ich auf beide Arduino NANOs verwendet habe:

//UNO

#include <SoftwareSerial.h>
SoftwareSerial HC12(2, 3); // HC-12 TX Pin, HC-12 RX Pin
void setup() {
  Serial.begin(9600);             // Serial port to computer
  HC12.begin(9600);               // Serial port to HC12
}
void loop() {
  while (HC12.available()) {        // If HC-12 has data
    Serial.write(HC12.read());      // Send the data to Serial monitor
  }
  while (Serial.available()) {      // If Serial monitor has data
    HC12.write(Serial.read());      // Send that data to HC-12
  }

}

So habe ich beide Arduinos jeweils mit dem HC12 Modul verbunden:

Vilen Dank für eure Hilfe!

Aufrgund einiger Antwortren habe ich jetzt die Pins geändert und auch den Code dementsprechennd verändert - ohne Erfolg.

Hier ist ein kurzen Video von meinem Aufbau:

SoftwareSerial HC12(1, 10);

Pin 0 und Pin 1 werden von Serial schon genutzt.
Eine Doppelbelegung wird versagen.

(deleted)

Verwende einfach andere Pins für SoftwareSerial, z.B. Pin 10 und Pin 11, oder Pin 2 und Pin 3.
Aber nicht Pin 0 und Pin 1, das wurde dir ja schon geschrieben.

Hi

Kenne die SoftSerial-Lib nicht so. möglich, daß als RX-Pin ein Interrupt-Pin von Vorteil ist (wäre dann Pin 2 oder 3 möglich).
Da man den Kram auch per PCINT lösen könnte, wäre aber auch (bei Nano/Uno ALLE Anderen) möglich, daß diese Beschränkung gar nicht gegeben ist - oder gar nur gepollt wird - dann braucht's gar keinen Interrupt.

MfG

Da man den Kram auch per PCINT lösen könnte,

SoftwareSerial macht das so.

Peter-CAD-HST:
Moin

Probier mal die Kommunikation ohne Funkmodule aus.

Gruss Peter

Aber dann können sie doch garnicht kommonizieren odeer?

HotSystems:
Verwende einfach andere Pins für SoftwareSerial, z.B. Pin 10 und Pin 11, oder Pin 2 und Pin 3.
Aber nicht Pin 0 und Pin 1, das wurde dir ja schon geschrieben.

Danke für die Antwort!
ich verwende jetzt den 2 und 3 Pin aber es klappt immer noch nicht. Habe den code auch dementsprechend geändert aber es scheint nichts zu helfen.

postmaster-ino:
Hi

Kenne die SoftSerial-Lib nicht so. möglich, daß als RX-Pin ein Interrupt-Pin von Vorteil ist (wäre dann Pin 2 oder 3 möglich).
Da man den Kram auch per PCINT lösen könnte, wäre aber auch (bei Nano/Uno ALLE Anderen) möglich, daß diese Beschränkung gar nicht gegeben ist - oder gar nur gepollt wird - dann braucht's gar keinen Interrupt.

MfG

Danke für die Antwort!
Was ist PCINT und wie nutze ich es um mein Problem zu lößen?

Hi

PCINT ist der PinChangeINTerrupt.
Dieser Interrupt ist portweise zuschaltbar, man kann dabei auch festlegen, auf welche Pins des Port dabei geachtet wird.
Wenn sich nun einer dieser Pins ändert (CHANGE), reagiert dieser Interrupt und die entsprechende ISR wird aufgerufen.
Dort muß dann allerdings nachgeschaut werden, WER diesen Interrupt überhaupt ausgelöst hat - im Zweifel stehen 8 Verdächtige zur Auswahl, da ein Port bis zu 8 Pins haben kann, Die auch Alle aktiviert sein können.
Wenn nur ein Pin aktiviert ist, kann auch nur Dieser den Interrupt ausgelöst haben - dort kann man Sich dann das Prüfen der Verdächtigen sparen.

Dazu attachinterrupt anschauen.
Auf nur PCINT-fähige Pins (wie geschrieben, DAS können bei Nano und Uno Alle Pins), ist nur CHANGE als Bedingung gültig - sagt Dir aber auch der Kompiler, wenn Du dort was Anderes probierst.

Pin 2 und 3 sind komplett Interrupt-fähig, können also auf beide Flanken oder einem LOW reagieren.

Überlege Dir, ob Du unbedingt Interrupts brauchst - man muß beim Zugriff auf gemeinsam verwendete Variablen und in der ISR schon ein/zwei Kleinigkeiten beachten, sonst geht's in die Hose - und Keiner weiß, warum ... klappt einfach nicht immer ...

Dazu wären atomar und volatile wohl gute Suchbegriffe.
Auch darf man in einer ISR nicht alle Möglichkeiten des Arduino nutzen - delay() und millis() klappen hier nicht (millis wird zwar ausgelesen, ändert aber den Wert nicht - millis hängt selber an einem Interrupt und es ist immer nur ein Interrupt aktiv - der Rest muß warten).
Serial.print ... ganz schlechte Idee - auch Alles, was (viel) Zeit braucht, hat in einer ISR NICHTS (!!! 1ELF1) verloren - wir reden hier von Millisekunden.

So wie combie schrieb, nutzt SoftSerial den PCINT, man kann also jeden Pin von Uno/Nano fpr RX nutzen - TX braucht keinen Interrupt, da wir auf diesem Pin selber senden - und wir sind live dabei, wenn sich hier der Zustand ändert :wink:
Bei den Antworten, Die auf RX rein kommen, ist Das nicht der Fall - Die können 'immer' erfolgen, deshalb ist hier ein Interrupt nötig - Das macht aber die Lib für Dich.

MfG

lukas862001:
Danke für die Antwort!
Was ist PCINT und wie nutze ich es um mein Problem zu lößen?

Das musst du nicht.
Es wurde doch schon geschrieben, das bearbeitet SoftwareSerial.

Ich gehe davon aus, du hast deine HC-12 noch nicht richtig eingestellt.
Sieh dir dazu mal diese Seite an. Die sollte helfen.

Edit:
Bilder immer hier im Forum posten und nicht irgenwo im Web.
Da verschwinden die meist kurzfristig. Dann kann keiner mehr mit deinem Post etwas anfangen.

(deleted)

@lukas862001
Ich habe mir jetzt am PC mal deine Bilder (Dumme Sache die extern zu posten) angesehen, da hast du die Pins im Nano nicht verlötet. Warum nicht ?

Das kann nicht funktionieren.
Verlöte die mal sauber, dann hast du schon massig Fehlerquellen ausgeschlossen.
Und evtl. hast du da auch ein Problem mit der Spannungsversorgung.

Die äußeren Spannungsschienen (Plus und GND) auf dem Steckbrett sind nicht durchgehend, die sind in der Mitte getrennt.

HotSystems:
Die äußeren Spannungsschienen (Plus und GND) auf dem Steckbrett sind nicht durchgehend, die sind in der Mitte getrennt.

Nicht immer. Es gibt auch durchgehende. Da muss man halt genau hinschauen.

Ich habe mit durchgehenden begonnen und dann mal eine unterbrochene erwischt und mich gewundert, warum es nicht ging.

Gruß Tommy

Tommy56:
Nicht immer. Es gibt auch durchgehende. Da muss man halt genau hinschauen.

Ich habe mit durchgehenden begonnen und dann mal eine unterbrochene erwischt und mich gewundert, warum es nicht ging.

Gruß Tommy

Sicher ??
Wenn schon die farbigen Kennzeichnungen nicht durchgezogen sind, gehe ich schon mal davon aus, auch die Spannung führenden Schienen sind es nicht.
Aber es gibt ja auch schwarze Schafe.

Ja, ganz sicher. Ich habe 3, da sind die Linien und auch die Verbindungen durchgezogen.

Gruß Tommy

Tommy56:
Ja, ganz sicher. Ich habe 3, da sind die Linien und auch die Verbindungen durchgezogen.

Gruß Tommy

Das ist klar.

Ich glaub wir reden aneinander vorbei.

Nur wenn die Linien nicht durchgezogen sind, sind auch die Verbindungen unterbrochen.
Bisher war das jedenfalls bei meinen Boards so.

Sein Hauptproblem sind aber die nicht vorhandenen Lötstellen.

Das wird sein Problem sein.

Gruß Tommy

Tommy56:
Das wird sein Problem sein.

Gruß Tommy

Wohl eins von vielen.
Allerdings hat sich der TO wieder verkrochen. :wink:

HotSystems:
@lukas862001
Ich habe mir jetzt am PC mal deine Bilder (Dumme Sache die extern zu posten) angesehen, da hast du die Pins im Nano nicht verlötet. Warum nicht ?

Das kann nicht funktionieren.
Verlöte die mal sauber, dann hast du schon massig Fehlerquellen ausgeschlossen.
Und evtl. hast du da auch ein Problem mit der Spannungsversorgung.

Die äußeren Spannungsschienen (Plus und GND) auf dem Steckbrett sind nicht durchgehend, die sind in der Mitte getrennt.

Danke für die Antwort!

Ich habe nur die Pins verlötet, die ich für die Funktion benötige. Das habe ich getan um den Arduinoi später wieder einfacher abnehmen zu können. Weiter habe ich es auch schon mit einem anderen Arduino NANO versucht, der ohne ein Breadboard angeschlossen war.