hallo zusammen. Ich bin gerade dabei aus folgenden Bauteilen: Tiny13/85 PTC 10k und einem funksender und empfänger kit für cent beträge ala China in einem kleinem 60x40x30 gehäuße eine mit einer 3V knopfzelle betriebenen Sender zu verwirklichen welcher kontinuirlich die Außentemperatur misst( alle 30min). Als gedankengang um energie zu sparen und die Batterie mit ihrer geringen kapazität bei nidrigen temperaturen zu schonen soll zwischenzeitlich ein sleepmodus verwendet werden. Nun auf dem Empfängermodul steht XY-FS-5V und auf dem empfänger FS1000A nun das die Module nicht der brüller sind war mir vorher durchaus bewusst nur: Ein aufbau auf dem breadboard bei welchem ich per taster Signale auf den Eingang gegeben habe und per (über transistor geschaltene) LED am Empfänger ablesen wollte um die Funktion der Module zu testen, war höchst merkwürdig. Die LED funzelt immer ein wenig vor sich hin und geht bei einem tasterdruck kurz an. Der zweite vesuch war per uart zwischen 2 tiny2313 signale hin und her zu schicken. Der eine tiny zählt ein register hoch, gibt den wert am USART aus von welchem der tx pin am Sender anliegt. der andere wartet auf eingehende Daten vom USART und gibt diese in einer interruptroutine am portb aus(LED´S angeschlossen)..Nun der Erfolg dieses vesuchs...nichts kommt an..keine LED leuchtet. nun wurde ich stuzig. Die Reichweite konnte doch nicht geringer als 20 cm sein....=> sender und empfänger neben einander==> ebenfalls nichts. dann hatte ich die schnautze voll. Ich schrieb ein Programm welches mir seriell die Daten ohne Manchester Code, also ganz simpel TTL Pegel 5V=1 0V ist 0 ausgab...=> der Andere tiny bekahm nichts. Nun wollte ich fragen ob schon einmal jemand solche module zum laufen gebracht hat... dar der tiny2313 eigentlich für die Aufgabe ziemlich ungeeignet ist welche das ganze später einmal erfüllen soll kahm mir mein tiny13 - Lager in den Sinn.. Ich kaufte einmal etliche zum schnäppchen Preis...leider hatten sie bis heute immer so wenig IO´s...zuwenig Flash oder waren mangels externen Quarz ungeeignet. Leider besitzt der Tiny13 leider keinen Usart... hat jemand evtl Codebeispiele in Assembler zur Hand und kann mir evtl die Funktionsweise und worauf zu achtne ist näher erklären? MFG Daniel
Stichhwort OOK. Such mal nach virtualwire und schau Dir den Quellcode an.
Das Problem ander Sache ist nur das Ich mit C absolut nichts am Hut habe. Sogut kann der Quellcode garnicht kommentiert sein, das ich fähig wäre es in ASM nachzubilden. Desweitern (auch wenn es einige Leute gibt die anders denken, halte ich ASM immer noch für die simpelste Programmiersprache..Der einzige mir ersichtliche Nachteil, auch wenn es eigentlich keiner ist, ist das es keine libs und weniger fertige routinen gibt.) Ich habe mich etwas eingelsen und verstehe leider garnichts in dem quellcode:/
>halte ich ASM immer noch für die simpelste >Programmiersprache. ASM ist die komplizierteste Programmiersprache. a = a + 1; versteht jeder Depp.
https://en.wikipedia.org/wiki/Amplitude-shift_keying https://de.wikipedia.org/wiki/Amplitudenumtastung und hier im Forum mal suchen.
Leider hilft mir der Quellcode wirklich nicht weiter. Ach ja was ich vergessen habe zu erwähnen. Die Reichweite des ganzen sollte ca 15-20m sein. Wie funktioniert das VirtualWire Protokol? und gibt es dazu keinerlei deutschen infos?
Daniel B. schrieb: > hat jemand evtl Codebeispiele in Assembler zur Hand und kann mir evtl > die Funktionsweise und worauf zu achtne ist näher erklären? JoeS hat es dir schon gesagt. JoeS schrieb: > Such mal nach virtualwire und schau Dir den Quellcode an. Alles was weniger tut als VirtualWire wird mit Sicherheit sehr schlecht oder überhaupt gar nicht funktionieren. Daniel B. schrieb: > halte ich ASM immer noch für die simpelste Programmiersprache. Dann würde ich vorschlagen du baust VirtualWire in Assembler nach. Das wird sicher zum Erfolg führen aber einige Zeit in Anspruch nehmen. PS: Es haben schon viele Leute geglaubt man könne mit besagten Modulen einfach über die serielle Schnittstelle kommunizieren.
Ich gehe davon aus, dass die die Daten auf eine bestimmte Art codieren musst, damit sie über diese Module übertragen werden können. Die sind nicht so Intelligent, wie Modems. Ich kenne das von anderen ähnlich aussehenden Modulen so, dass du zunächst ein Startsignal aus 101010 Wechseln mit einer bestimmten Frequenz und einigen hundert ms Dauer senden musst. Erst wenn sich der Empfänger auf dieses Signal eingeschwungen hat, kannst du anfangen, Nutzdaten zu senden. Und die müssen so codiert sein, dass sowohl High- als auch Low Pegel weder zu kurz noch zu lang andauern und dass das Signal im Durchschnitt 50% High ist. Bit-Folgen wie 10000000 sind tabu. Wenn Du keine detaillierte Beschreibung für die Module findest, brauchst du wohl ein Oszilloskop um zu sehen, was der Empfänger gut und was er weniger gut empfangen kann. Das könnte helfen: http://www.pocketmagic.net/using-fs1000axy-fst-rf-radio-module-with-avrs/
Achte mal bitte ein bisschen auf deine Rechtschreibung. Wenn du deinen Chef was fragst, nuschelst du ihm schließlich auch nichts vor. Eine Rechtschreibschwäche ist keine Entschuldigung für Unhöflichkeit! Nutze die Rechtschreibprüfung deines Browsers, wenn du es selbst nicht kannst. Die Module scheinen empfindlich auf schlechte Versorgung zu reagieren. Möglicherweise bricht dir die Versorgungsspannung ein. Schließe mal 10 nF Keramik und 10 uF Elko parallel direkt an die Versorgung der Module an und schaue, ob's besser wird. Sorge für eine gute Antenne. Bei 315 MHz möchtest du λ/4 = ungefähr 25cm Draht haben. VirtualWire ist eine C-Bibliothek für das, was du suchst. Schaue da rein. Selbst, wenn du C nicht magst, solltest du es wenigstens in Grundzügen lesen können. Gilt für Englisch übrigens auch.
Daniel B. schrieb: > mit einer 3V knopfzelle Die Sender leben erst richtig auf, wenn sie mit 12V betrieben werden. Mein Versuche mit 3,3V habe ich für gescheitert erklärt.
Ein Step-Up regler welcher die wenigen mA für den sender liefert wäre diesbezüglich evtl die Lösung. Die Frage die sich mir bei dem ganzen Suche nach informationen und Tipps für die umsetzung stellt, ist ob sich der Aufwand lohnt das ganze zu verinnerlichen und in Asm umzusetzen,oder es nicht sinnvoller wäre auf ein anderes Modul umzusatteln. Die Frage die sich dann stellt ist natürlich..Welches. Es ist ja nur eine übertragung in eine richtung notwendig, RFM01+RFM02 mit SPI schnittstelle? Der Aufwand um diese Module vernünftig in betrieb zu nehmen scheint mir doch unrentabel.
Daniel B. schrieb: > Wie funktioniert das VirtualWire Protokol? und gibt es dazu keinerlei > deutschen infos? Manchester encoding funktioniert genauso zuverlässig und es gibt jede Menge Infos dazu. Nachteil, wenn überhaupt: es braucht 16 bit pro Byte. Arduino F. schrieb: > Die Sender leben erst richtig auf, wenn sie mit 12V betrieben werden. > Mein Versuche mit 3,3V habe ich für gescheitert erklärt. Ja, allerdings geht es mit 5V ohne Probleme.
Diese OOK Sender/Empfänger wollen eine relativ lange Einschwingzeit sehen, 100ms 0-1 Wechsel vorweg, sonst passiert nichts sinnvolles. Nimm dir das Scope und sieh dir den Empfänger Ausgang an. Im Ruhezustand kommt da Rauschen=Müll heraus. Das muss deine Software alles sortieren.
holger schrieb: >>halte ich ASM immer noch für die simpelste >>Programmiersprache. > > ASM ist die komplizierteste Programmiersprache. > > a = a + 1; > > versteht jeder Depp. Das geht in ASM noch einfacher: incf a
Jan W. schrieb: > Das geht in ASM noch einfacher: incf a "noch noch kompakter" kann man es auch in C schreiben: a++;
:
Bearbeitet durch User
Und dann sehen wir uns an wie viele Takte der Compiler hierfür verdaddelt :) und is wird sicher mehr als 1 sein. Aber back to topic. Ich habe gestern den gesamten abend geopfert und Sitze nun seit Feierabend wieder hier vor meinem PC und dem breadboard. Die Problematik die sich mir stellt ist. Eine Manchester code zu senden mit dem Tiny sollte sich bewerkstelligen lassen. Aber das ganze zu empfangen, bei wahrscheinlich relativ ungenauer Taktung des signals wird noch interessanter..
Daniel B. schrieb: > Die Problematik die sich mir stellt ist. Eine Manchester code zu senden > mit dem Tiny sollte sich bewerkstelligen lassen. Aber das ganze zu > empfangen, bei wahrscheinlich relativ ungenauer Taktung des signals wird > noch interessanter.. Weder senden noch empfangen ist ein Problem. Kein Tiny hat einen Taktfehler > 3% aber nehmen wir mal an, dass dein Tiny 10% hat. Wenn man die Bitlänge mit 100 annimmt, dann kann es nur folgende 2 Zeiten bei Manchester geben: 100 und 200. Mit 10% Fehler sind es 90-110 und 180-220. Und wenn du diese 2 Zeiten nicht richtig decodieren kannst, dann nimm lieber Arduino und seine Bibliotheken dafür. Oder noch besser, such dir ein anderes Hobby.
:
Bearbeitet durch User
Stefan U. schrieb: > Den seriellen Port kannst du dafür vergessen. Meine Erfahrung ist anders. Sofern die Telegramme hinreichend kurz sind, kann man mit genügend Vorspann auch die Daten direkt aus dem seriellen Port verwenden. Manchester Kodierung ist nicht unbedingt notwendig.
Marc V. schrieb: > Und wenn du diese 2 Zeiten nicht richtig decodieren kannst, dann > nimm lieber Arduino und seine Bibliotheken dafür. Ich danke dir, dass du die Brauchbarkeit der Arduinolibs anerkennst. Nur, die Stechrichtung, behagt mir nicht. Wobei ich aber doch anmerken möchte, das auch einige wenige Arduino Jünger Probleme beim Verständnis der Manchester Kodierung zeigen.
Georg G. schrieb: > Sofern die Telegramme hinreichend kurz sind, > kann man mit genügend Vorspann auch die Daten direkt aus dem seriellen > Port verwenden. Es muss ein gleichspannungsfreier Leitungskode verwendet werden. Nur so lassen sich eine ansprechende Datendichte und Qualität erreichen.
Arduino F. schrieb: > gleichspannungsfreier Leitungskode Wenn du die passende Präambel verwendest und nur ein kurzes Telegramm hast, geht es hervorragend auch nicht-gleichstromfrei. Niemand bezweifelt, dass Manchester Kodierung oder ein Pseudo-Scrambler helfen. Wenn ich den TO richtig verstehe, will er nicht an die technischen Grenzen sondern braucht etwas quick and dirty.
Arduino F. schrieb: > Ich danke dir, dass du die Brauchbarkeit der Arduinolibs anerkennst. > Nur, die Stechrichtung, behagt mir nicht. Hat nichts mit Arduino zu tun, nur mit dem Umstand, dass es dort praktisch für alles schon fertige Bibliotheken gibt. Ich persönlich habe nichts gegen Arduino User, habe diese auch niemals angespuckt oder sonstwie beleidigt. Im Gegenteil, für mich ist Arduino Code == C oder C++ code. Dass die Herren, die herablassend auf Arduino runterschauen das nicht wahrhaben wollen, ist ihr Problem, nicht meins.
Marc V. schrieb: > Dass > die Herren, die herablassend auf Arduino runterschauen das nicht > wahrhaben wollen, ist ihr Problem, nicht meins. Die Welt ist schlecht! Und viel besser, werde ich wohl auch nicht sein. :-)
Jan W. schrieb: > Das geht in ASM noch einfacher: > incf a das heißt doch vermutlich "input carry flag in Akkumulator a", oder ist es doch nicht so einfach :-)
HAt den noch niemand diese Art von Module verwendet und eine brauchbare sende und empfangsroutine realisiert. Ich habe, auch wenn es Leute geben wird die dies falsch verstehen, leider des öfteren das gefühl das die hilfsbereitschaft im Forum leider etwas nachlässt. Wenn jemand etwas benötigt, das ich bereits funktionstüchtig umgesetzt habe, bin ich immer wieder gerne bereit selbiges zu teilen. Ich habe leider die erfahrung gemacht das mit dem USART wirklich keine effektive Art der Datenübertragung möglich ist. Das ganze ist einfach viel zu Fehleranfällig..In einem Testprogramm(AVR sendet über das Modul, Empfänger über MAX232 an PC. Beides aus einer 4,5V Flachbatterie gespeist), bekomme ich wenn ich etwas empfange nur sinnlose hyroglyphen anstatt dem gesendeten "abcdefghijk....". Mit Manchestercodierung habe ich es ebenfalls aufgegeben, dar das Senden sich relativ einfach gestalltet, das empfangen allerdings für mich eine unlösbare problematik darstellt... Mein aktueller gedanke ist, das ich shcon viel zu viel Zeit damit vertan habe um meinem Ziel keinen millimeter näher zu kommen. Ich würde diese Module gerne in betrieb nehmen...Die alternativen ala RFM12 scheinen mir für das bisschen Daten welche anfallen einfach ein bisschen zu oversized... Desweitern sind diese Module Preismäßig natürlich unschalgbar. 3 Empfänger und 3 Sender für 4 €....
zeig doch einfach mal, was du bisher hast, was wo nicht funktioniert, und was du bisher schon alles unternommen hast, um das Problem einzukreisen. Zeigen ist NICHT der Prosa-Text dessen was du gemacht hast, sondern Code Schnipsel.
Daniel B. schrieb: > HAt den noch niemand diese Art von Module verwendet und eine brauchbare > sende und empfangsroutine realisiert. Ja, habe ich, warum ? Daniel B. schrieb: > Ich habe leider die erfahrung > gemacht das mit dem USART wirklich keine effektive Art der > Datenübertragung möglich ist. Das ganze ist einfach viel zu > Fehleranfällig..In einem Testprogramm(AVR sendet über das Modul, > Empfänger über MAX232 an PC. Beides aus einer 4,5V Flachbatterie > gespeist), bekomme ich wenn ich etwas empfange nur sinnlose hyroglyphen Klar, Empfänger muss sich erst mal einschwingen, deswegen sendet man zuerst ein Synch-Burst und erst danach kommen die Daten. Sende doch 10 Mal unmittelbar hintereinander 0xAA, eine Pause von 5-10ms und dann ein Telegramm mit z.B. 4 Bytes. Falls es nicht funktioniert, sende 20 Mal 0xAA. Synch-Burst und Daten unterscheidest du eben mit dieser Pause von 5-10ms Dauer. Kann doch nicht so schwer sein, wenn du schon mit Manchester nicht klar kommst... > Ich habe, auch wenn es Leute geben > wird die dies falsch verstehen, leider des öfteren das gefühl das die > hilfsbereitschaft im Forum leider etwas nachlässt. Wenn jemand etwas Hilfsbereitschaft ist eine Sache, eine Routine für jemanden zu schreiben, ist etwas ganz anderes. Hast du schon etwas versucht, geschrieben, wenn ja, was ? So, wie du dir das vorstellst, geht es bestimmt nicht, zumindest nicht ohne dass du ein bisschen dazu beiträgst. Und wenn du schon bei Manchester gescheitert bist, sehe ich Schwarz.
:
Bearbeitet durch User
hallo ich habe mit mit der Fernsteuerung (s. Bild) eine 2 Servo-Fernsteuerung mit Attiny 2313 programmiert. Als Empfänger habe ich einen ganz einfaches 'dummes' 1€ Modul genommen. Da der Sender (arbeitet mit PT2272 Codier Chip) vorgegeben war, habe ich dessen Protokoll verwendet. min 4ms low, dann 170µS High/550µs low für die 0 und 520µS High/190µs low für die 1 die ersten 16 bit sind die Adresse des chips Empfangs-Programm habe ich mal angehängt. erst: ;--------- Wartet auf 4ms low ------------------ Status=0 dann: ;--------- INT1 Flanken Aenderung interrupt ------------ Auswertung im Interrupt Status ungerade = Status 1,3,5... -> steigende Flanke wird bei jeder Flanke hochgezählt Status gerade = fallende Flanke Status= 49 Telegramm zu Ende. 4 Tasten -> alle Kombinationen haben Funktionen - manche auch als Sequenz alles andere sind eigentlich die Servo Funktionen. Der Sender und Empfänger soll ja nur als Beispiel dienen, wie man Daten übertragen kann. Eine eigene Senderoutine ist eigentlich kein Problem. (Kann man sogar mit Warteschleifen machen ;-) )
Daniel B. schrieb: > Mit Manchestercodierung habe > ich es ebenfalls aufgegeben, dar das Senden sich relativ einfach > gestalltet, das empfangen allerdings für mich eine unlösbare problematik > darstellt... Das ist keine Raketenwissenschaft. Dazu braucht man einen externen Interrupt zur Flankenerkennung und einen Timerinterrupt, um die Pseudoflanken auzusortieren. Du mußt Dich also mit Interrupts beschäftigen. Das gilt aber auch für andere Protokolle. Allerdings schränkt die Versteifung auf AVR-Assembler das Finden von Beispielen sehr stark ein.
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.