PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ...ab ins EEPROM-aber wie???



Shunth
19.05.2008, 20:45
Hallo @all,

erstmal möchte ich mich kurz vorstellen. Also ich bin Kommunikationselektroniker aber mehr in der Richtung Fernsehtechnik. Privat eben Bastler in allen Richtungen (Programierkenntnisse, Pic brennen etc.) Nun habe ich ein Privates Projekt was Eure Hilfe bedarf. Es geht um eine Gartentor öffnung mit 433 MHZ. (ich darf mir hier nicht die Blöße geben...) Es ist eine Wette mit folgender Bedingung. Also mein Nachbar hat sich eine Toröffnung mit 433 MHZ zugelegt und eingebaut. Nun habe ich geäußert (hoffentlich nicht zu laut..) das ich eine Möglichkeit finden werde sein Tor zu öffnen ohne je seine FB in den Händen gehabt zu haben. O.K. die Wette gillt! Meine Idee: Wir wohnen ca 50 Meter auseinander. Ich habe einen Empfänger installiert der das 433 MHZ Band scannt und anzeigt. (in meiner Gegend sind nur 2 bislang aufgefallen die mit 433MHZ senden) Jetzt will ich sein gescanntes Signal in einen EEPROM schreiben (zum Zeitpunkt des sendens) und auslesen um die Daten weiter zu verarbeiten oder einfach dann "zu senden" Ich dachte an einen "Schlummermode" des Speichers (Read/Write aktiv oder so) der dann aufzeichnet. Hmmmm.... Gehts oder nicht??? Was meint ihr? Ach, es ist eine billige Tor Geschichte, also nicht so komplex codiert glaube ich.

MfG Shunth

PICture
19.05.2008, 21:03
Hallo Shunth!

Ich glaube nicht, dass es direkt im EEPROM speichern geht. Zuerst würde ich es in RAM einscannen und danach ins EEPROM übertragen.

Um das wiedersenden zu können, muss es mit gleicher Frequenz ausgegeben werden.

Als erstes würde ich mir das empfangene Signal genauer anschauen um Speicherbedarf zu schätzen.

MfG

Robin1508
19.05.2008, 21:10
Also wie man daten in den EEPROM legt weißt du ?

Wenn nicht, so gehts:



Dim A As Eram Byte
Dim B As Eram Word
Dim C As Eram ...

A = 10 'Speichert A in den EEPROM


Gruß

uwegw
19.05.2008, 21:13
Selbst die billigen Teile sollten mittlerweile nen nicht ganz so einfach zu überwindendes Codesystem haben. Da gibt bestimmt nen Haufen fertiger ICs für. Die werden dann Millionenfach produziert und kosten am Ende ein paar Cent...

rideyourstyle
19.05.2008, 21:15
Hi Hi. Super idee. Und wenn seine Karre unter dem Tor steht, dann schliesst es...

Um was hast du denn gewettet???

PICture
19.05.2008, 21:17
Es kann aber auch sein, das jedesmal andere Sequenz gesendet wird, was das ganze unmöglich macht.

shaun
19.05.2008, 21:25
Dann müsste in den letzten drei Jahren ein Quantensprung stattgefunden haben, denn bis dahin habe ich in diversen Billigteilen Standard-ICs mit 6000etwas Codevarianten gefunden (HT600 und wie die alle heissen)

Robin1508
19.05.2008, 21:38
Ja stimmt schon dass es da fertig IC´s gibt. Aber was wenn er seinem Nachbar zusieht, wie er den Taster auf seiner Fernbedienung drückt, und genau in diesem Augenblick alles, was das Teil sendet aufzeichnet und genau das später wieder Sendet um das Tor wieder zu öffnen/schließen? Bin kein Experte, aber ich würds so versuchen.

Shunth
19.05.2008, 21:39
Hallo,
erstmal danke für eure Ideen. Ich weiß das es billige Varianten gibt (fertige Chinaware..) aber mir gehts irgendwie um den Ehrgeiz. Also das die Sequenz wechselt (wie beim Auto) glaube ich nicht bei dem Tor. Ach und der Wetteinsatz ist es auch nicht wirklich wert-der Obligatorische Kasten Bier-! Ich wecke meinen Ehrgeiz eben wieder mal. Also ich habe mal TX und RX programmiert (mit CC 2510FX ) da lief das so ab: Der TX bekam eine HEX-Adresse. Der RX lag im Auslieferungszustand bei Adresse 0101. Dann wurden die beiden "verheiratet" (geschah mit einen Shake-Hand-Modus und dann wurden die Protokolle ausgetauscht-fertig) Das waren 2,4 GHZ Module. So, soweit so gut. Wenn ich das Signal scanne, ich kann es von den anderen unterscheiden da ich ja Sichtkontakt zum "Nachbars Tor" habe, ist eben die Frage wie bekomme ich es in den RAM, EEPROM (mit MSP, mit AVR, mit PIC-wäre mir am liebsten-) Ach, mein Scanner ist nix anderes als ein 433 MHZ Empfänger der mir zur Zeit über eine LED "Sender aktiv" anzeigt. Also, Leutz wo setze ich an??? Ach, es ist kein Problem für mich irgend eine Platine zu basteln. Selbst die Komplizierteste kann ich professionell herstellen lassen. ICH WILL MICH JA NICHT BLAMIEREN!!!!! Also her mit Ideen!

MfG

wkrug
19.05.2008, 22:10
Der erste Schritt dürfte sein die Sendefrequenz festzustellen.

Dann würd den Empfänger mit der gefundenen Frequenz einfach laufen lassen.
Sobald ein 433MHz Träger erkannt wird ( Squelsh ) werden alle 0->1 bzw. 1->0 Wechsel mit einem Zeitstempel ( Timerwert ) versehen und im RAM zwischengespeichert.
Dabei gehe ich natürlich von der Annahme aus, das es sich um ein binäres Signal handelt.
Nun kannst Du dem Controller die Werte in einen PC übertragen lassen, oder die Werte direkt im EEPROM ablegen.

Zur Ausgabe der Werte kannst Du den Comparematch Interrupt des zur Aufzeichnung verwendeten Timers verwenden.

Das sollte genau genug sein um den verwendeten Code zu reproduzieren.

Du kannst auch mehrere Sequenzen aufzeichnen um festzustellen ob der Code tatsächlich geändert wird.

PICture
19.05.2008, 22:11
@ schaun

Heutzutage gilt die Gleichung billig=einfach nicht mehr.

Vor mir liegt gerade ein billiger Handsender mit MC68HSR705J1A (HCMOS Microcontroller Unit). Und was er kann, kann man sich nach Kurzschauen ins Datenblatt ziemlich leicht vorstellen.

http://www.datasheetcatalog.com/datasheets_pdf/M/C/6/8/MC68HC705J1A.shtml

@ Shunth

Ich bin selber PIC-Benutzer und habe in meinem laufendem Projekt schon das Problem von einscannen und wiedergeben von beliebigen digitalen Impulssequenzen gelöst. Bloß das ich die Sequenzen in Flash speichere.

Wenn die Frequenz der Impulse fest und bekannt ist, braucht man nur mit einer bestimmter Frequenz einscannen und wiedergeben.

MfG

Shunth
20.05.2008, 07:34
Hallo,
@PICture
nun das wäre ja am Ende auch egal ob ins EEPROM oder ins Flash hauptsache irgendwo hin. Die PIC Lösung wäre mir am liebsten weil ich die Programmer u.s.w. da hätte. Lass mich etwas von deinen Wissen - wissen!

@Wkrug
auch eine verwertbare Idee. Die Sendefrequenz kenne ich ja (433) oder meinst du den Kanal? Weiß nicht mit welchen Kanalraster die arbeiten. 250 KHZ??? Wenn du von zwischenspeichern ins RAM redest, von welchen µC sprichst du? AVR? Also erstmal vielen Dank für die Tips und nun bauen wir mal......

MfG

PICture
20.05.2008, 10:09
Hallo Shunth!

Ich denke, das das empfangene Signal, das bisher schon die LED steuert, eine richtige Pegel hat und direkt durch ein PIC-Port eingescannt werden kann. Dazu braucht man nur ein Port-Pin.

Die Frequenz der eingescannten Impulsen ist auch wichtig, danach richtet sich die Pause zwischen den Einlesungen ins RAM. Den Inhalt des RAMs wird danach ins EEPROM kopiert.

Da das EEPROM bei PICs nur max. 256 Bytes groß ist, bei längeren Impulsfolgen als 8 x 256 = 2048 wird es nicht reichen. Ich habe Flasch nehmen müssen, weil ich 8 x 1024 gescannte Werte speichere.

Damit ich nicht zu viel darüber schreibe, schau, bitte, in Wiki:

https://www.roboternetz.de/wissen/index.php/PIC_Assembler

Alles was noch unklar wäre, versuche ich dir zu erklären. Als beste Methode, hat sich ein Dialog in der Form: Frage-> Antwort erwiesen, weil dann nur das wichtige behandelt wird.

Also mach dir Gedanken über Realisierung und stell, bitte, konkrete Fragen! O:)

MfG

Shunth
20.05.2008, 10:34
Hallo,

ja, werde ich machen (lesen!) Das mit den PIC habe ich schon verstanden. Interessant zu wissen wäre ja wie ich den PIC in den Modus bekomme das er an PORTA auf das Signal wartet und dann in diesen Moment auch schreibt. Verstehst du? Bislang habe ich die Programme entwickelt und in den PIC geladen...... (ich sehe mein Verständnis über PIC ist noch sehr ausbaufähig...)
Ach, Assembler????????? lieber C/C++

MfG

PICture
20.05.2008, 10:53
Wenn Du C/C++ benutzt, dann kann ich dir nur mit PADs und selbstverständlich mit der Elektronik helfen. Ich finde den PAD als universelle "Programmiersprache" optimal. Danach kann man das in beliebige Programmiersprache wandeln.

Das Einlesen kannst du mit einem externem Interrupt (z.B. INT0) und das Senden z.B mit einer Taste starten. Das Programm ist wirklich nicht kompliziert. Für Programmentwicklung würde ich dir den "PIC Trainer" empfehlen.

MfG

Shunth
20.05.2008, 11:22
Oh, Gott. Auch das noch :^o Ich hatte mal neben C Python zu verstehen versucht. Ne, ich schau mir das PAD mal an. Also ich würde sagen, ich krame mal in der PIC Kiste rum... So, ich habe noch paar 16F84 da. Sollte erstmal gehen,oder? Meine Experimentier Platine ist auch Griffbereit. Fangen wir mal an.....kurze Skizze der Schaltung@PICture? Ich verspreche dir mir selbst auch Gedanken zu machen. Also eine Grundidee zum Einlesen mit Schalter. (den Schalter könnte ich dann mit den Transistor koppeln da der ja die jetzige LED steuert. Aber der schaltet Masse hoch. Hm, gut kann man den PIC ja am Port sagen, oder was denkst du??

MfG

PICture
20.05.2008, 12:10
Ja, der PIC 16F84 sollte sicher für das kleine Programm und die einfache Hardware reichen.

Es muss noch ein Kriterium festgelegt werden, wann das Einscannen beendet werden soll oder werden immer 8 x 64 = 512 scan gespeichert. Ob die übrige 4 RAM Speicherstellen fürs Programm reichen, muß man prüfen.

Laut meiner erster Schätzung werden nur 3 Portpins benötigt, davon nur INT ist durch Hersteller des PICs festgelegt und die zwei andere können frei gewählt werden.

Im Code habe ich meine Vorstellung skizziert. Die Software wird leider nicht so trivial sein. :(

Übrigens, das Thema eignet sich besser fürs "PIC Controller" Forum.

MfG

INT 6.-----.
vom Empfänger >-----------| |
?| |
zum Sender <-----------|PIC |
_/ ?|16F84|
Taste -o/ o------| |
'-----'

Start (INT)

|
V
_ ___ _
| |_| |___| |_

Scan _|_|_|_|_|_|_|_|

Register 1 0 1 1 0 0 1 0

wkrug
20.05.2008, 17:28
@Shunth
Meine Angaben bezogen sich auf einen ATMEL AVR Controller - sollte natürlich auch mit PIC möglich sein.
Wegen des RAM Speichers würd ich zu einem ATMEGA 32 tendieren, obwohl der ansonsten natürlich völlig überdimensioniert ist.

Ich weiß jetzt nicht welches HF Teil du benutzt. Wenn es einen Squelch oder RSSI Ausgang hat könnte man den zum Starten bzw. Stoppen der Aufzeichnung verwenden. Das kann man durch Pollen oder per Interrupt machen.
Eventuell wäre es sinnvoll die 5 oder 10 Impulse vor dem Ansprechen des Squelch Ausgangs auch mit aufzuzeichnen, damit man wirklich alle Impulse kriegt.
Also ständig in einen Ringpuffer aufzeichen, wenn ein Start Signal kommt den aktuellen Pufferzähler - 10 als Startzeiger verwenden.

Shunth
20.05.2008, 18:12
Hallo,

Danke für eure Mühen mit meinen "Projekt" Ich denke den Versuch mit einen PIC zu probieren, da ich dafür alles da habe. (Testplatine, Brenner, PIC u.s.w.) Atmel liegt mir schon lange am Herzen nur dafür ist der Aufwand etwas "übertrieben" aber interessant zugleich. Danke,@wkrug. (es sei denn das Projekt läuft mit ner Fun-Karte O:) da hätte ich auch alles da)
Also mein Empfänger ist nix besonderes. Ist etwas umgebaut aus einer alten Funkklingel. Habe die Antenne und die Anpassung etwas geändert. Erstaunlicherweise zeigt er eben(optisch mit einer LED) immer an wenn mein Nachbar sein Tor öffnet. Sicher ist irgendwie eben abgestimmt und würde bestimmt auch leuchten wenn ein anderer mit der Frequenz sendet. (bisher vielleicht Glück gehabt)
@PICture
jetzt weiß ich was du mit PAD meinst. Ja sicher in C stricke ich das dann irgendwie. Also testen wir das mal mit den 16F84. Mit der Zeit, ja ich weiß auch nicht so recht wie man das Fenster setzen sollte. Du hast schon Recht, irgendwann muß ja gestoppt werden......
MfG

PICture
20.05.2008, 19:44
Am einfachsten wäre immer den ganzen RAM zu beschreiben, vor allem wenn die Länge des gesendeten Codes nicht immer gleich ist.

Es muss auch ermittelt werden welche Modulation benutzt wird. Hoffentlich die einfachste, also 100% AM.

Sehr vorteilhaft wäre, wenn du den Code z.B. auf einem Display siehst, dann kann man die Scanfrequenz varieren und anpassen. Es geht auch mit Matrix LCD, wenn man eigene Zeichen programmiert. Durch ändern der Startadresse (Verschieben) lässt sich dann das ganze RAM anschauen. Und damit würde ich anfangen, sonst tappst du in dunklem.

Wenn du einen gleichen Sender wie dein Nachbar hast, brauchst du bei Erstellung des Programms nicht warten bis er was sendet. Du kannst dann am Ende auch das ganze bei dir ausprobieren.

Es wäre natürlich super, wenn du die Frequenz der Impulse schon kennst, da die Scanfrequenz genau doppelt und sehr stabil seien muss.

MfG

Shunth
20.05.2008, 21:16
Hallo PICture,

ich glaube es ist 100% AM. Ich habe meinen Empfänger ein bischen erweitert. Ich habe jetzt noch einen LED Treiber mit mehreren LED dazu gebaut und den Schwingkreis etwas "erweitert" Wenn das Tor aufgeht (also zu verschiedenen Zeiten beobachtet) leuchtet mein LED Band unterschiedlich, also mal mehr mal weniger. Ich denke das hängt mit dem Sender (also wegen der unterschiedlichen Signalstärke) zusammen. Wenn es FM wäre müssten eigentlich immer alle LED leuchten-weist du was ich meine? Nehmen wir an es ist AM. Wenn der Schreibzyklus eingeleitet wird und nicht gestoppt wird, wird dann FF geschrieben oder gibt es einen Overflow der dann wieder den RAM von vorne beschreibt???? Das wäre dann ja Unsinn und ich bekomme das Signal tatsächlich nicht weil ich das Ende nicht kenne. Was ist mit den Watchdogtimer? Können wir den nutzen??? (ich merke schon, doch nicht so einfach...)

MfG

PICture
20.05.2008, 21:44
Den Watchdog habe ich noch nie benutzt. Es ist ganz einfach, wenn eine Schleife mit bestimmter Anzahl der Durchläufe benutzt wird.

Du mußt wahrscheinlich dein Empfänger noch um AGC (automatische Verstärkungsregelung) erweitern, weil die L und H Pegel stabil seien müssen, sonst werden sie vom PIC nicht richtig erkannt.

Das Thema wurde durch den Treadstarter im Forum "PIC Mikrocontroller" als neu geöffnet, also, bitte, weiter dort schauen:

https://www.roboternetz.de/phpBB2/viewtopic.php?t=40703

MfG