Forum: Mikrocontroller und Digitale Elektronik Attiny85 - Nano Clon - 433mhz Sender - Empfang wird nicht ausgewertet


von Drizzi (Gast)


Lesenswert?

Hallo Gemeinde,

bitte steinigt mich nicht, weil das Thema schon häufiger kam. Ich habe 
die meisten Problemstellungen hier im Forum bereits durch geackert. Mir 
fehlt offensichtlich nur jemand, der mich mit der Nase auf mein Problem 
schiebt. :/

Vorgeschichte:
Ich hatte angefangen einen kommerziellen Haustüralarm auseinander zu 
nehmen um den Summer gegen ein Funksignal zu tauschen. Dabei habe ich 
das vorhandene PCB nur noch als Abstandshalter für den Reed-Switch 
verwendet und die SMD Widerstände und µc des Boards ausgelötet.

In den Alarm habe ich dann ein Loch gebohrt um die Antenne des 433 mhz 
Senders nach außen bringen zu können. Getrieben wird dieser von einem 
Attiny85, der mit einem Sparkfun Tiny Programmer programmiert wurde. Der 
Bootloader wurde auf 8 mhz intern gesetzt um das Senden zu ermöglichen.

Da ich bereits ein 433mhz Programm für Funksteckdosen auf einem anderen 
Tiny zum laufen gebracht habe, habe ich dieses Programm zunächst einmal 
in den Tiny geladen. Der auf der RC-Switch Libary basierende Code hat 
die Test-LED am Senderpin auch zum blinken gebracht.
Zur Überprüfung habe ich dann einen Nano-Clone, welcher in der Arduino 
IDE jedoch als Pro Mini behandelt werden möchte, mit dem Empfänger Modul 
versehen und die ReceiveDemo.ino geladen. Seriellen Monitor gestartet 
und... nichts.


Problemstellung:
Nach langem hin und her habe ich den Tiny komplett von allen Bauteilen 
befreit und zurück in den Programmer gesteckt. Daran habe ich nur noch 
den Sender gepackt und ihn neu programmiert.

Der Nano Clon wurde auch nur mit dem Empfänger bestückt und 
ReceiveDemoAdvanced geladen. Der Empfänger hat sogar eine Antenne 
bekommen. Trotzdem kam kein Ergebnis.

Auch das tauschen des Tinys brachte kein Ergebnis.

Ich schloss mein DSO138 an den Senderpin des Tinys und erkannte, dass 
dort durchaus ein Rechtecksignal in den programmierten Abständen bei 
raus kam.
Ich schloss das DSO an den Empfänger und stellte überrascht fest, dass 
auch dort ein Signal ankam.

Ich programmierte den Nano um, sodass er nun keine Libary mehr anzeigte, 
sondern ein analogRead durchführte. Blöderweise sprang der immer im Raum 
von 400 herum, was nicht einmal für ein Eingangssignal reichen dürfte.

Ich spielte mit der VCC-Spannung herum und gab erst dem Sender und dann 
auch dem Empfänger die 5V die er laut Board aushalten soll. Keine 
Änderung.

Frage:
Meine Frage ist nun: wo liegt mein Denkfehler? Ich habe bereits mit 
433mhz Modulen gearbeitet und durchaus das meiste auch ans laufen 
bekommen, aber bei einer simplen Kopplung zweier Atmel-Chips hackt es 
dann? Habe ich irgendwo einen Störfaktor oder ein Versionsupdate 
verpasst?


Code Attiny85:
/*
  Example for different sending methods

  http://code.google.com/p/rc-switch/

*/

#include <RCSwitch.h>

RCSwitch mySwitch = RCSwitch();

void setup() {
  // Transmitter is connected to Arduino Pin #10
  mySwitch.enableTransmit(PB2);
    mySwitch.setProtocol(1);
  mySwitch.setPulseLength(311);

  // Optional set pulse length.
  // mySwitch.setPulseLength(320);

  // Optional set protocol (default is 1, will work for most outlets)
  // mySwitch.setProtocol(2);

  // Optional set number of transmission repetitions.
  // mySwitch.setRepeatTransmit(15);

}

void loop() {

  /* See Example: TypeA_WithDIPSwitches */
  mySwitch.switchOn("11111", "00010");
  delay(1000);
  mySwitch.switchOn("11111", "00010");
  delay(1000);

  /* Same switch as above, but using decimal code */
  mySwitch.send(5393, 24);
  delay(1000);
  mySwitch.send(5396, 24);
  delay(1000);

  /* Same switch as above, but using binary code */
  mySwitch.send("000000000001010100010001");
  delay(1000);
  mySwitch.send("000000000001010100010100");
  delay(1000);

  /* Same switch as above, but tri-state code */
  mySwitch.sendTriState("00000FFF0F0F");
  delay(1000);
  mySwitch.sendTriState("00000FFF0FF0");
  delay(1000);

  delay(200);
}
Code Nano:
/*
  Simple example for receiving

  http://code.google.com/p/rc-switch/
*/

#include <RCSwitch.h>

RCSwitch mySwitch = RCSwitch();

void setup() {
  Serial.begin(9600);
  mySwitch.enableReceive(0);  // Receiver on inerrupt 0 => that is pin 
#2
    mySwitch.setProtocol(1);
  mySwitch.setPulseLength(311);
      Serial.println("Startet");
}

void loop() {

  if (mySwitch.available()) {
    int value = mySwitch.getReceivedValue();
    Serial.println("Hab was!");
    if (value == 0) {
      Serial.print("Unknown encoding");
    } else {
      Serial.print("Received ");
      Serial.print( mySwitch.getReceivedValue() );
      Serial.print(" / ");
      Serial.print( mySwitch.getReceivedBitlength() );
      Serial.print("bit ");
      Serial.print("Protocol: ");
      Serial.println( mySwitch.getReceivedProtocol() );
    }

    mySwitch.resetAvailable();
  }
}

Ein Schaltbild spare ich mir bei dem Punkt mal aus offensichtlichen 
Gründen.

von Hubert G. (hubertg)


Lesenswert?

Wenn du Sender und Empfänger ohne Hf koppelst, dann kannst du zumindest 
mal die Funkstrecke als Fehlerquelle ausschließen.

von (unknown) (Gast)


Lesenswert?

Du meinst die beiden Antennen einfach mit 'nem Draht überbrücken? Das 
haut wegen dem Common-Ground aber doch gar nicht hin? Oder seh ich da 
jetzt was falsch? Andernfalls wüsste ich nu net was du mit HF in dem 
Zusammenhang meinen könntest. ^^'

von Hubert G. (hubertg)


Lesenswert?

Ich meinet den Hf-Sende und Empfangsteil auszuschalten und die Daten 
direkt von Kontroller zu Kontroller zu senden.

von (unknown) (Gast)


Lesenswert?

Interessant.
Ja, wenn ich die Module raus nehme und die Atmels direkt an den 
jeweiligen pins verkabel, dann kommt Gibberish an. Musste im Seriellen 
monitor die Baudrate auf 19200 erhöhen, damit es ordentlich angezeigt 
wird.

Das deutet für mich aber auf zweierlei hin:
1. das Signal vom Receiver ist selbst bei einem Abstand von 30 CM zu 
niedrig.
2. Mein Nano rechnet die Taktfrequenz zum Serielport selbstständig um, 
oder da spinnt was gewaltig.

Klingelt da speziell ein Lösungsansatz oder eine Erklärung die ich mir 
nicht zusammen reimen kann, oder soll ich einfach ein paar Module 
durchtesten bis eines das richtige Ergebnis bringt?

von DAVID B. (bastler-david)


Lesenswert?

Ich schmeiße mal MEINE Gedanken hier hin:
Die 8 Mhz die intern erzeugt werden sind nicht sauber/stabil genug für 
eine 433 Übertragung / attiny sendet müll)
Teste mal mit 8 oder gar 16 MHz extern.
Läuft das überhaupt schon mit 8 MHz ?

Diese 433 Empfänger sind müll welchen haste genau ?
https://img.dxcdn.com/productimages/sku_399919_1.jpg
Die dinger sind gut auch mit 5 Volt senden die schon ein paar meter 
gesetzt die haben eine richtige Antenne einstück draht reicht meist 
NICHT aus.
Die empfänger sind aber müll.

Der hier ist VIEL besser
https://i.ebayimg.com/images/g/q70AAOSwBV5affdP/s-l300.jpg

Als Antennen haben sich bei mir bewert:
https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTMKdcwkc5rX5WzCyKRqccY99VFf_CLiwT6VQ699rzi8cJk4KNq_Q

von (unknown) (Gast)


Lesenswert?

Ich hab die von dir verlinkten Sender/Empfänger Module. ( Die Grünen im 
ersten Bild). Die Spezifikationen sind etwas wirr, da der Empfänger laut 
Datenblatt nur mit 3,3 V arbeiten kann, auf dem Modul selbst jedoch eine 
5V spezifikation drauf steht. auch die SMD Bauteile sind größtenteils 5V 
kompatibel. Etwas wirr das ganze.
Laut Datenblatt und diversen Foreneinträgen läuft der Sender ab einer 
Geschwindigkeit von 8mhz Taktrate. Daher musste ich den Tiny ja bereits 
neu flashen, was dank dem Programmer aber kein problem darstellt.
Die Unterschiedliche Baudrate kann ich mir daher erklären, dass der Nano 
wohl intern standardmäßig auf 5V und 16 mhz läuft. Durch die Erhöhung 
der Baudrate im Seriellen Monitor gleicht sich das ganze wohl wieder 
aus.

Nun aber zur "Lösung" des Problems: Ich hatte ja erwähnt, dass Sender 
und Empfänger nur wenige Centimeter voneinander entfernt sind.
Nun hatte ich in einem anderen Thema einst gelesen, dass sich Sender und 
Empfänger stören können, wenn sie auf dem selben Board installiert sind. 
Ich habe die Entfernung nun ein wenig erhöht und den sender mit 4,5 V 
Batterie betrieben und siehe da, es kommt tatsächlich was an. Allerdings 
hat das das Taktratenproblem nicht behoben. Für den Verwendeten Zweck 
reicht es jedoch, wenn erkennbare Signale übertragen werden. Die Daten 
selbst haben keine Relevanz.

Danke euch beiden für die Hilfe und für den Tipp mit dem Empfänger. Ich 
werde mir mal ein solches Gerät besorgen und schauen, ob das nicht meine 
MCUs ersetzen kann, die ich zur Zeit für andere Projekte nutze. 
Mittelfunk ist doch etwas energieschonender und schneller als eine 
dauerhafte W-Lan Verbindung.

/edit: Ach ja, als Antennen nutze ich tatsächlich gekaufte Drahtstücke 
wie deine. Ich wüsste nicht einmal welche AWG/EWG ich da nehmen sollte 
für so eine Antenne ^^'

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.