• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

Wählscheibentelefon und MP3-Player von Tiny13 gesteuert

huzzel

Geowizard
Ich möchte hier mal mein Wählscheibentelefon vorstellen, das mit einem Tiny13 einen MP3-Player steuert.
Hier die Schaltung:
wvl4u2yy.jpg

Stromversorgung wird über zwei AAA-Batterien gewährleistet. Der MP3-Player nutzt nur eine der Batterien. Das hat zur Folge, dass die Reihenfolge beim Einlegen zu beachten ist, da sich der Tiny auch über den Player Strom zieht und schon anfängt, wo er es noch gar nicht soll :/ .
Die Ausgänge B.0, B.1 und B.2 steuern den MP3-Player über einen Optokoppler.
B.3 ist der Wählscheibeneingang
B.4 wird als Eingang (Gabelschalter) und als Ausgang (READY-LED) benutzt.
Ich habe hier diesen Kompromiss wählen müssen, da ich keine Tinys verbraten wollte, weil ich den Resteingang mitbenutze (Ich habe keinen Hochvoltprogrammierer, sonst hätte ich den Resteingang mitbenutzt)
Die große Schwierigkeit war, den MP3-Player bei Starten auf einen definierten Zustand zu bringen. Bei meinem verbauten Player ging das über Verzeichnis vorwärts, beim letzten Verzeichnis ging es nicht weiter und somit hatte ich meinen definierten Anfangstrack.
Die READY-LED zeigt an, ob das Telefon bereit ist. Beim Start dauert es sehr lange (ca. 15 Sekunden bis alles durch ist), aber im Betrieb max eine Sekunde.
Die ganze Programmierung kommt ohne Interrups aus.
Nach jeder gewählten Nummer wird diese überprüft. Die programmierte Nummer ist im EEPROM abgelegt, also max. 64 Stellen (man hätte zwar auch noch mehr programmieren können, aber 64 Stellen reichen auch so ;) ). Sind alle Ziffern richtig gewählt, springt das Programm zur Ausgabe.
Wenn zuwenige Ziffern gewählt wurden, wartet das Programm, ob noch eine Ziffer kommt, wenn nicht, dann geht es zum "Kein Anschluss unter dieser Nummer"
Der Gabelschalter wird ständig überprüft, ob der Hörer aufgelegt wird, wenn ja, zurück auf Anfang.
Auch innerhalb der Ausgabe Wird der Gabelschalter überprüft. Wenn Aufgelegt wird, wird wieder auf den definierten Track weitergesprungen. Der definierte Track ist ein Track mit 12 Minuten nichts. Aber auch mehr wie 12 Minuten zu warten bringt nichts, da der Player fest auf Trackwiederholen eingestellt ist :D .
Die richtige und die falsche Ansage wird nach einer definierten Zeit beendet und es geht zurück auf Anfang.
Und hier noch der Code
Code:
$regfile = "ATtiny13.DAT"
$crystal = 128000                                           'Frequenz des internen Oszillators
$hwstack = 16
Const Nummern = 11                                          'hardwarestack herabsetzen damit genügend variablen zur verfügung stehen
Config Portb = &B00010111                             


'PIN 3 (PIN4) Eingabe/Ausgabe Gabelumschalter    0-> Aufgelegt 1-> Abgehoben / READY-LED
' Schalter offen -> Abgehoben
'Pin 2 (PIN3) Eingabe Wählschalter

'PIN 7 (PB2) Ausgabe Enter
'Pin 6 (PB1) Ausgabe Vorwärts
'PIN 5 (PB0) Ausgabe Play


Portb = 0                                                   'Ausgänge   auf Low setzen
Stop Ac                                                     'Analog-Kom parator abschalten, um Strom zu sparen
Stop Adc

Dim X As Byte
Dim Y As Integer
Dim Ziffern As Byte
Dim Zahl As Byte
Dim Ok As Bit
Dim Pruefziffer As Byte

Config Portb.4 = Output
Portb.4 = 1        'LED-Test
Wait 2
Portb.4 = 0
' Warten, bis hochgefahren
Wait 9
' Player vorbereiten
' Einschalten
Portb.0 = 1
Waitms 1500
'lange EIN drücken
Portb.0 = 0
Waitms 2000

'Enter um Wiedergabe vorzubereiten
Gosub Enter
Gosub Play

Gosub Warten_lang
Gosub Play                                                  'pause
Gosub Enter                                                 'menü
Gosub Enter                                                 'folder
Gosub Warten_lang
Gosub Vorwaerts                                             'nächster Ordner
Gosub Warten_lang
Gosub Enter                                                 'Ordner auswählen
Gosub Warten_lang
Gosub Play


'Grundzustand
'READY-LED an
Portb.4 = 1
Ziffern = 0
Ok = 1
'Wait 4

Do
    Gosub Warten
    If Pinb.3 = 0 Then                                      'Wählschalter = 1
         'READY-LED aus
         Portb.4 = 0
         Config Portb.4 = Input
         Do
            If Portb.4 = 1 Then
               Ok = 0
               Exit Do
            End If
            Incr Ziffern                                    'Ziffern +1
            Zahl = 0                                        'Zahl 0 setzten
            Do                                              'Zahl +1
               Incr Zahl
               Do
                  nop
               Loop Until Pinb.3 = 1                        'Warten auf 0
               'X ist Zeit, um Zahlende zu erkennen. 10 ergibt 100ms
               For X = 0 To 10
                  'Waitms 10
                  Gosub Warten
                  If Pinb.3 = 0 Then                        'warten, ob noch ein Impuls kommt
                     X = 0
                     Exit For                               'Warten abbrechen
                  End If
               Next X
            ' X MUSS hier 1 höher sein, als bei der for-Schleife!!!
            Loop Until X = 11

            Readeeprom Pruefziffer , Ziffern                'Ziffer prüfen
            If Pruefziffer <> Zahl Then
               Ok = 0                                       'Wenn Ziffer falsch, OK auf 0
            End If

            If Ziffern = Nummern And Ok = 1 Then Exit Do    'wenn bisher alles richtig, dann raus bei x-Ziffern
            'Timeout für zuwenige Ziffern
            For Y = 0 To 250
               'Waitms 10
               If Pinb.4 = 1 Then Exit Do                   'Wenn Hörer aufgelegt, ende
               Gosub Warten
               If Pinb.3 = 0 Then                           'warten, ob noch ein Impuls einer neuen Ziffer kommt
                  Y = 0
                  Exit For
               End If

            Next Y
         'Y MUSS hier 1 höher sein, als bei der for-Schleife!!!
         Loop Until Y = 251

    If Pinb.4 = 0 Then                                      'wenn Hörer nicht aufgelegt
        If Ok = 1 And Y <> 251 Then                         'Wenn alles passt Ausgabe OK
            Gosub Ausgabeok
        Else                                                'sonst Ausgabe Fehler
             Gosub Ausgabefehler
        End If
    End If
    Ziffern = 0                                             'Grundeinstellung
    Ok = 1
    'READY-LED an
    Config Portb.4 = Output
    Portb.4 = 1                                             'Grundeinstellung

    End If
Loop

Warten:
    Waitms 10
Return

Warten_lang:
    Waitms 300
Return

Vorwaerts:
    Portb.1 = 1
    Gosub Warten_lang
    Portb.1 = 0
    Gosub Warten_lang
Return

Play:
    Portb.0 = 1
    Gosub Warten_lang
    Portb.0 = 0
    Gosub Warten_lang
Return

Enter:
    Portb.2 = 1
    Gosub Warten_lang
    Portb.2 = 0
    Gosub Warten_lang
Return

Ausgabefehler:

     Gosub Vorwaerts

     For Y = 0 To 5000
        Gosub Warten
        If Pinb.4 = 1 Then Exit For
     Next Y
     Gosub Vorwaerts
     Gosub Vorwaerts

Return

Ausgabeok:

     Gosub Vorwaerts
     Gosub Vorwaerts

     For Y = 0 To 4700
        Gosub Warten
        If Pinb.4 = 1 Then Exit For
     Next Y
     Gosub Vorwaerts

Return
End
 

thomas_st

Geowizard
huzzel schrieb:
Ich möchte hier mal mein Wählscheibentelefon vorstellen, das mit einem Tiny13 einen MP3-Player steuert.
Das ich die Idee und Umsetzung klasse finde, hatte ich ja schonmal geschrieben. In einem LP angebracht oder hingestellt ist das einfach nur genial ;).

huzzel schrieb:
Hier die Schaltung:
wvl4u2yy.jpg
Sorry, die will nicht.

huzzel schrieb:
Stromversorgung wird über zwei AAA-Batterien gewährleistet. Der MP3-Player nutzt nur eine der Batterien. Das hat zur Folge, dass die Reihenfolge beim Einlegen zu beachten ist, da sich der Tiny auch über den Player Strom zieht und schon anfängt, wo er es noch gar nicht soll :/ .
Grübel. Verstehe ich jetzt nicht - wird aber vielleicht mit der Schaltung klarer.

huzzel schrieb:
Die Ausgänge B.0, B.1 und B.2 steuern den MP3-Player über einen Optokoppler.
B.3 ist der Wählscheibeneingang
B.4 wird als Eingang (Gabelschalter) und als Ausgang (READY-LED) benutzt.
Eventuell hättest Du den Wähleingang und den Gabelschalter in Reihe auf einen Tiny-Eingang legen können. IIRC sind beide bei einem normalen POTS auch in Reihe geschaltet (weshalb man auch mit der Gabel wählen konnte) - ein langes Unterbrechen müsste der Tiny dann als Aufgelegt erkennen und alles in den Ruhemodus versetzen.

huzzel schrieb:
Die READY-LED zeigt an, ob das Telefon bereit ist. Beim Start dauert es sehr lange (ca. 15 Sekunden bis alles durch ist), aber im Betrieb max eine Sekunde.
Die 15s sind doch nur beim Einlegen der Bat. relevant?! - IMO: kein Problem

huzzel schrieb:
Die ganze Programmierung kommt ohne Interrups aus.
Ooch, schade ;)

huzzel schrieb:
Nach jeder gewählten Nummer wird diese überprüft. Die programmierte Nummer ist im EEPROM abgelegt, also max. 64 Stellen (man hätte zwar auch noch mehr programmieren können, aber 64 Stellen reichen auch so ;) ).
:D :roll:

Viele Grüße, schöne Stage und viel Spaß beim :handy:,
Thomas(_st)
 
OP
huzzel

huzzel

Geowizard
thomas_st schrieb:
huzzel schrieb:
Stromversorgung wird über zwei AAA-Batterien gewährleistet. Der MP3-Player nutzt nur eine der Batterien. Das hat zur Folge, dass die Reihenfolge beim Einlegen zu beachten ist, da sich der Tiny auch über den Player Strom zieht und schon anfängt, wo er es noch gar nicht soll :/ .
Grübel. Verstehe ich jetzt nicht - wird aber vielleicht mit der Schaltung klarer.
Leider nicht, Stromversorgung ist nicht abgebildet.
Und Directupload mag in letzter Zeit öfters nicht :/
Aber nochmal, ich hoffe, verständlicher:
Zwei Batterien in Reihe für den Tiny
Der MP3-Player nutz nur eine der beider Batterien, sozusagen eine Mittelanzapfung.
Dabei gibt es das Problem, dass der Tiny schon loslegt, wenn die "zweite" Batterie eingelegt ist. Dann schließt sich über den MP3-Player der Stromkreis. Dann beginnt schon die Wartezeit, die der MP3-Player braucht, obwohl der MP3-Player noch nicht startet. Dann passt natürlich nichts mehr.
Man hätte auch 3 Batterien nehmen können, 2 für den Tiny, 1 für den Player. Ich hatte aber keine passenden Clip zur Hand ;) .
 

thomas_st

Geowizard
huzzel schrieb:
thomas_st schrieb:
Grübel. Verstehe ich jetzt nicht - wird aber vielleicht mit der Schaltung klarer.
Leider nicht, Stromversorgung ist nicht abgebildet.
Und Directupload mag in letzter Zeit öfters nicht :/
Jep, jetzt geht es wieder ;)

huzzel schrieb:
Aber nochmal, ich hoffe, verständlicher:
Zwei Batterien in Reihe für den Tiny
Der MP3-Player nutz nur eine der beider Batterien, sozusagen eine Mittelanzapfung.
Ich versuche es mal zu skizzieren.
Code:
            .----------.
   ---------|          |
   |        |          |
   |        |   Tiny   |
   |        |          |
   |    ----|          |
  ---   |   '----------'
C  -    |
   |    |  A.----------.
   o----|---|          |
   |    |   |          |
  ---   |   |          |
D  -    |   |MP3-Player|
   |    |  B|          |
   '----o---|          |
            '----------'
Ist das ungefähr richtig?

huzzel schrieb:
Dabei gibt es das Problem, dass der Tiny schon loslegt, wenn die "zweite" Batterie eingelegt ist. Dann schließt sich über den MP3-Player der Stromkreis.
Also , wenn Du nur die Bat C eingelegt hast, wird der MP3-Player niederohmig und schließt quasi die Anschlüsse A und B kurz, so dass der Tiny nur mit Bat. C läuft. Ist das richtig so? Von wem kommen eigentlich die Bat? Bringen diese die Cacher mit? Dann wäre es wirklich ein kleines Problem (und dann wären auch die oben erwähnten 15s relevant), Oder installierst Du diese und dann läuft das vor sich hin. Dann kann ich nämlich kein Problem erkennen.
Meine Vorgehensweise ist eigentlich immer: alle externen Verbraucher werden über einen Pin des Tinys versorgt (bzw. mittels Treibertransistor) und werden bei Nichtbenutzung einfach vom Saft getrennt - dann hat man den geringen Verbrauch des Tinys und man kommt mit einem Batteriesatz aus. ... allerdings ist spätestens jetzt der Tiny 13 am Ende seiner Beinchen ;)

Viele Grüße,
Thomas(_st)
 
OP
huzzel

huzzel

Geowizard
Exakt so.
Die Batterien werden von den Cachern mitgebracht, Batterien sind mit 1 und 2 beschriftet und in der Anleitung steht es dick drin. Wenns nicht geht, dann eben nochmal beide raus und wieder rein.
Ich habe ja auch zuerst herumexperimentiert aus den 3 Volt 1,5 zu machen.
Festspannungsregler habe ich keinen mit 1,5 Volt.
Vorgeschaltete Dioden hat auch nicht funktioniert, entweder war die Spannung im Betrieb zu niedrig, oder im Leerlauf viel zu hoch.
Am USB-Port ging die Spannungsversorgung auch nicht, auch wenn sie im PC funktioniert hat :???: :???:
Naja, schauen wir mal, wir sich die Cacher anstellen, ob ich was ändern muss oder ob sie es so hinbekommen.
 

thomas_st

Geowizard
huzzel schrieb:
Exakt so.
Die Batterien werden von den Cachern mitgebracht, Batterien sind mit 1 und 2 beschriftet und in der Anleitung steht es dick drin. Wenns nicht geht, dann eben nochmal beide raus und wieder rein.
Du könntest mal versuchen ob der Brownout-Detektor des Tinys hilft. Wenn Du den auf 1,8V einstellst, sollte der Tiny bei einer Betriebsspannung unter 1,8V noch im Reset bleiben. Falls das nicht klappt und aufgrund von Toleranzen der BOD mit 1,8V den Betrieb mit einer Bat schon zulässt, wäre die nächste Stufe bei 2,7V - da könnte es dann aber knapp werden, wenn Cacher statt Batterien, Akkus einsetzen.

Viele Grüße und HTH,
Thomas(_st)
 

thomas_st

Geowizard
huzzel schrieb:
Über eine Einstellung der Fusebits. Im Datenblatt sind die beiden Fuse mit BODLEVEL0 und 1 bezeichnet. Die Bitkombinationen haben folgende Bedeutung.
Code:
BODLEVEL1   0
    1       1   BOD Disabled
    1       0    1.8V
    0       1    2.7V
    0       0    4.3V

(dabei bedeutet: "1" Fuse ist [b]nicht[/b] programmiert
 und "0" Fuse ist programmiert)
Siehe hierzu das Datenblatt des ATTiny Tabelle 13 und Tabelle 44
Wie die Bezeichnung beim Bascom ist, weiß ich nicht - allerdings erlaube ich mir mal aus Bild 4.4 des Kochbuchs zu extrapolieren und zu vermuten, dass es Fuse 4 und 5 ist.

Viele Grüße,
Thomas(_st)
 

Marcel123

Geocacher
für lost places würde ich das ganze mit eingebautem bewegungsmelder und fest eingebauten akkus bauen.

von meinem telefon gibt es 2 varianten:

var1.
telefon in munbox, du machst die munbox auf, der tiny bekommt strom und nach ca 20 sekunden klingelt das telefon und du bekommst deine anweißungen.

var2.
eingebauter bewegungsmelder. tiny geht auf powerdown, nach 8 sekunden watchdog. bewegungsmelder prüft nun ob personen im raum, wenn ja wartet der tiny noch 20 sekunden, dann klingelt das telefon, wenn nein geht der tiny wieder für 8 sekunden in powerdown. Nimmt man den hörer ab wird durch den kontakt am hörer ein reset ausgelöst und du hörst ein freizeichen.

bei beiden varianten kann man natürlich eine nummer wählen. du landest dann entweder bei einem "anschluss" oder bekommst eine fehlermeldung
 

friskee

Geocacher
Hallo,

also bei meinem Telefon habe ich ein Reed-Kontakt eingebaut und damit den Minuspol der Batterie getrennt. Wenn jemand das Telefon nutzen möchte muss er einen Magnet an die gekennzeichnete Stelle legen. Wenn jeder seinen Magneten wieder mitnimmt sollten die Akkus recht lange halten.
 

upigors

Geowizard
warum nicht den gabelschalter nutzen?
hab nen tastentelefon ausgeschlachtet und umgebaut da hat der hörer 2 wechslerkontakte, einer trennt jetzt die stromversorgung vom voicemodul, einer die von der restlichen elektronik. mal nen dauertest machen wenn alles fertig ist aber sollte gut funktionieren.
gruß uwe
 

Lutzzz

Geocacher
Hallo, und wenn einer den Höhrer nich wieder auflegt? Überlege da auch schon...allerdings habe ich Feldtelefone.
Gruß Lutzzz
 

Marcel123

Geocacher
wenn bei mir jemand den hörer nicht auflegt geht der tiny in powerdown. watchdog fragt alle 8 sekunden ab ob der hörer wieder aufgelegt ist, wenn ja funktioniert das telefon wieder. Bei der bewegungsmeldervariante klingelt das telefon trotzdem man müsste halt dann den hörer auflegen und gleich wieder abnehmen
 

schnasemann

Geocacher
@huzzel: Nachdem ich mir das alles nochmal durchgelesen habe, ist mir auch eingefallen, was mir beim Cache irgendwie komisch vorkam: Es tutete am Anfang nicht! Kriegst Du das mit einem weiteren Track noch hin? Wäre noch authentischer.
Grüße,
schnasemann
 
OP
huzzel

huzzel

Geowizard
schnasemann schrieb:
@huzzel: Nachdem ich mir das alles nochmal durchgelesen habe, ist mir auch eingefallen, was mir beim Cache irgendwie komisch vorkam: Es tutete am Anfang nicht! Kriegst Du das mit einem weiteren Track noch hin? Wäre noch authentischer.
Grüße,
schnasemann
Sollte gehen. Müsste eigentlich nur einen Track austauschen. Lass ich mir durch den Kopf gehen. Danke.
 
Oben