Bascom Morse Code auswerten ? Bräuchte Hilfe

j34n

Neues Mitglied
29. Nov. 2014
9
0
1
35
Dortmund
Sprachen
  1. BascomAVR
Hallo liebes Forum,

ich möchte euch gern mal wieder mit einem Problem meinerseits belästigen. Und zwar habe ich vor ein paar Jahren von meinem Onkel mal eine art selbstgebauten Tresor bekommen. War für mich immer ein tolles Spielzeug. Nun habe ich das Teil nach Jahren wiedergefunden. Da dieser aber nicht mehr Funktioniert, habe ich mir gedacht dieses Projekt einmal nachzubauen. Nun aber zu meinem Problem.

Die Entriegelung des Tresores funktionierte über einen Taster mit dem man eine festgelegte Reihenfolge von kurzen und langen Tastendrücken richtig hintereinander drücken musste. Wurde dies richtig gemacht, so zieht in dem Tresor ein Relais an und gab die Tür über eine Elektronische Verriegelung frei.

Herz dieses Ganzen war ein Attiny25.

Da ich noch ein relativer Anfänger in der Programierung bin, habe ich leider überhaupt keine Idee wie ich das Abfragen sowie das Festlegen eines solchen Codes nur Realisieren könnte. Ich habe schon Google benutzt sowie meine Bücher nach einen vielleicht verwandten Beispiel durchsucht, bin aber nicht Fündig geworden.

Leider kann ich meinen Onkel auch nicht mehr einbeziehen, da er schon von uns gegangen ist.

Kann mir vielleicht einer von den Erfahrenen einen Tipp, Denkanstoß, Irgendeine Lektüre liefern oder geben die mich in der Hinsicht weiterbringen könnte.?


Ich bin gerad dabei einen Schaltplan des Ganzen zu erstellen und kann den wenn gewünscht auch Hochladen.


Ich freue mich wirklich über jeden Tipp und möchte mich schon mal im Voraus bedanken.!

MFG Holger
 
Hi,

irgendwie ist es schwer herauszufinden, wieweit "runter" man da jetzt mit der Hilfe gehen muß, wie "hoch" Dein derzeitiges Wissen ist.
Generell könnte man das sogar in den noch kleineren Tiny4/5/9/10 implementieren, aber der 25/45/85 tuts natürlich auch.

Letztendlich willst Du quasi sowas wie einen seriellen Datenstrom empfangen - Nullen oder einsen, kurze oder lange Betätigungen. Du brauchst also eine geeignete Zeitbasis, die Dir ... sagen wir mal Zehn-Millisekunden-Takte generiert. Wird der Taster betätigt, beginnst Du diese Takte zu zählen, bis der Taster wieder losgelassen wird. Dann mußt Du nur noch einen Schwellwert festlegen, der zwischen eins und null unterscheidet - vielleicht 100ms (also 10 dieser Takte) hab keine Ahnung vom Morsen.

Jetzt könnte man zB einen achtstelligen Code vorsehen, 8 Bit. Dann könnte man abhängig des gerade empfangenen Bits entweder 'ne 0 oder 'ne 1 in ein Byte reinschieben. Sind alle 8 drin, hast Du den Schlüssel(byte), der jetzt nur noch mit 'nem vorgegebenen Schloß-Byte verglichen werden muß. Bei übereinstimmung zieht der Aktor an (nur 'ne Zeitlang, wobei Du auch wieder auf die Zeitbasis zurückgreifen kannst).

Kommst Du beim zählen eines Bits über 255 (also läuft der Zähler gerade über - bei 2,56s - kannst Du das zB nutzen, um den bisher empfangenen Teilschlüssel zu verwerfen, zB wenn Du Dich vermorst hast...

Wäre eine(!) Möglichkeit, das anzugehen...
 
Hi,

Wäre eine(!) Möglichkeit, das anzugehen...

alternativ schmeißt man die Länger der Tastendrücke in ein Array um dynamisch zwischen langen und kurzen zu unterscheiden. Es wird sich dabei ja hoffentlich eine gewisse Häufung von kurzen Zeiten und langen Zeiten ergeben damit man daraus eine Grenze errechnen kann die die kurzen von den langen Tastendrücken trennt.

Wenn man dann zB 1sek nichts mehr drückt ist die Eingabe beendet und die Auswertung der Zeiten und des Codes beginnt.

Die Zeiten werden nach der Auswertung wieder aus dem Array entfernt und wenn es gepaßt hat öffnet das Schloß.

Bei der Größe des Tiny85-RAMs sollte man da schon ne ganze Kette von Morsezeichen rein bekommen. Gegenüber einer reinen Binärerkennung wie von LotadaC angesprochen (vergleichbar dem DCF-Code) muß man beim Morsecode ja nicht nur die Impulse sondern auch noch die längeren und kürzeren Pausen mit auswerten.

Gruß
Dino
 
Pausen? Mein Vorschlag hätte ja nur die reine Betätigungsdauer ausgewertet (egal wie lang die Pausen dazwischen sind).
Um das Prellen müßte man sich dann aber auch kümmern - entweder mit'nem Tiefpaß, oder man verwirft entsprechend kurze Betätigungen einfach...

Klar gibts viele, auch unterschiedlich komplexe Möglichkeiten das anzugehen - meinen Vorschlag finde ich aber für den Anfang einfacher, zumindest unter Assembler...
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)