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.
Wenn du Sender und Empfänger ohne Hf koppelst, dann kannst du zumindest mal die Funkstrecke als Fehlerquelle ausschließen.
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. ^^'
Ich meinet den Hf-Sende und Empfangsteil auszuschalten und die Daten direkt von Kontroller zu Kontroller zu senden.
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?
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.