PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Projekt Open GeoFlash



djdune
06.10.2009, 16:43
So liebe Gemeinde, ich möchte hier ein weiteres meiner Projekte vorstellen. Hat diesmal zwar nichts mit Robotern zu tun, könnte aber der eine oder andere brauchen.

Open GeoFlash

Dieses Teil soll Nightcaching einfacher machen oder es überhaupt ermöglichen. Was das überhaupt ist findet ihr auf geocaching.com oder www.geocaching.com Kurz gesagt: Schatzsuche.

Die Aufgabe des "Gerätes":
Es soll wenn es von einer Taschenlampe angeleuchtet wird, ein Blinksignal zurücksenden. Dabei soll es so stromsparend wie möglich sein, da es oft wochenlang ohne genutzt zu werden herumliegt.
Der Kostenfaktor dabei ist auch sehr wichtig. Ich habe so etwas ähnliches schon in einem Onlineshop gesehen, allerdings hab ich keine Lust 20 Euro für so etwas zu zahlen. Meine Variante kommt auf ca 5€, sofern man nicht bei den teuren Versandhäusern bestellt.

Und so sieht der Prototyp aus:
https://www.roboternetz.de/phpBB2/album_pic.php?pic_id=2385

Technische Daten:
Microcontroller: PIC12F683
Leds: Ultrahelle Leds
LDR: Erstbeste die ich in dem unübersichtlichen Shop gefunden habe
Versorgung durch Lithium Batterie

Der Microcontroller wird durch seinen internen RC Oszillator betrieben, welcher durch Teilen auf 31kHz läuft und daher sehr stromsparend ist. Im Leerlauf nimmt die Schaltung 30µA auf. Leider macht der Spannungsteiler für die LDR noch Probleme, da damit 400µA an Strom fließen. Da der µC über High Power Ausgänge verfügt, die direkt LEDs schalten können, braucht man auch keine Treiber davor, was wieder der Schaltungsgröße zu Gute kommt.

Ich habe noch eine Schaltung dazu gezeichnet, falls das jemand nachbauen möchte:
https://www.roboternetz.de/phpBB2/album_pic.php?pic_id=2386

Der eingezeichnete Knopf ist noch nicht in Verwendung. Dieser wird mal später zum Einstellen der Grundhelligkeit und Batterietest sein.

Noch ein kleines Layout:
https://www.roboternetz.de/phpBB2/album_pic.php?pic_id=2384

Aufgrund der Größe sollte es problemlos in eine transparente Filmdose hineinpassen.

Hier noch ein Video vom Funktionstest. Die Videoleute wird hier als Taschenlampe zweckentfremdet.
http://www.youtube.com/watch?v=KTFawAGBJa4

Zu guter letzt noch der Sourcecode, da es ja "Open" ist. Leider hab ich in meiner Schusseligkeit den Originalcode verloren, aber ich habe den Code aus den Pic zurückgelesen, wodurch wenigstens ein Hex Code vorhanden ist:


; PIC-Assembler-Listing by sprut 2002..2005
; 14-bit-core

; D:\Elektronik\GeoFlash\main.hex

; Adr. Code Marke Mnemonic
; ================================

ORG 0x0000
START
0000 3000 MOVLW 0x00
0001 008A MOVWF PCLATH
0002 2814 GOTO M0014

0003 0000 NOP
INT
M0004
0004 3002 MOVLW 0x02
0005 02A9 SUBWF 0x29,f
0006 1C03 BTFSS STATUS,C
0007 2813 GOTO M0013
0008 3029 MOVLW 0x29 ; ')'
0009 0084 MOVWF FSR
000A 0800 MOVF INDF,w
000B 1903 BTFSC STATUS,Z
000C 2813 GOTO M0013
000D 2811 GOTO M0011

M000E
000E 280F GOTO M000F

M000F
000F 2810 GOTO M0010

M0010
0010 0000 NOP
M0011
0011 0B80 DECFSZ INDF,f
0012 280E GOTO M000E
M0013
0013 3400 RETLW 0x00

M0014
0014 0184 CLRF FSR
0015 301F MOVLW 0x1F
0016 0583 ANDWF STATUS,f
0017 3001 MOVLW 0x01
0018 1683 BSF STATUS,RP0
0019 008F MOVWF 0x0F
001A 1283 BCF STATUS,RP0
001B 131F BCF 0x1F,6
001C 1683 BSF STATUS,RP0
001D 101F BCF 0x1F,0
001E 109F BCF 0x1F,1
001F 111F BCF 0x1F,2
0020 119F BCF 0x1F,3
0021 3007 MOVLW 0x07
0022 1283 BCF STATUS,RP0
0023 0099 MOVWF 0x19
0024 1683 BSF STATUS,RP0
0025 0801 MOVF 0x01,w ; TMR0/OPTION
0026 39C7 ANDLW 0xC7
0027 3808 IORLW 0x08
0028 0081 MOVWF 0x01 ; TMR0/OPTION
0029 3009 MOVLW 0x09
002A 1283 BCF STATUS,RP0
002B 0098 MOVWF 0x18
002C 300D MOVLW 0x0D
002D 00A0 MOVWF 0x20
002E 3007 MOVLW 0x07
002F 0181 CLRF 0x01 ; TMR0/OPTION
0030 3081 MOVLW 0x81
0031 0084 MOVWF FSR
0032 0800 MOVF INDF,w
0033 39F0 ANDLW 0xF0
0034 3807 IORLW 0x07
0035 0080 MOVWF INDF
0036 0064 CLRWDT
0037 0800 MOVF INDF,w
0038 39F7 ANDLW 0xF7
0039 19A0 BTFSC 0x20,3
003A 39F0 ANDLW 0xF0
003B 0420 IORWF 0x20,w
003C 0080 MOVWF INDF
003D 131F BCF 0x1F,6
003E 1683 BSF STATUS,RP0
003F 141F BSF 0x1F,0
0040 109F BCF 0x1F,1
0041 111F BCF 0x1F,2
0042 119F BCF 0x1F,3
0043 161F BSF 0x1F,4
0044 169F BSF 0x1F,5
0045 131F BCF 0x1F,6
0046 1283 BCF STATUS,RP0
0047 139F BCF 0x1F,7
0048 141F BSF 0x1F,0
0049 0190 CLRF 0x10
004A 3000 MOVLW 0x00
004B 00A1 MOVWF 0x21
004C 0092 MOVWF 0x12
004D 3000 MOVLW 0x00
004E 1683 BSF STATUS,RP0
004F 0092 MOVWF 0x12
0050 3007 MOVLW 0x07
0051 1283 BCF STATUS,RP0
0052 0099 MOVWF 0x19
0053 1683 BSF STATUS,RP0
0054 0805 MOVF 0x05,w ; PORTA/TRISA
0055 1283 BCF STATUS,RP0
0056 0819 MOVF 0x19,w
0057 118C BCF 0x0C,3
0058 1683 BSF STATUS,RP0
0059 0199 CLRF 0x19
005A 3001 MOVLW 0x01
005B 008F MOVWF 0x0F
M005C
005C 3000 MOVLW 0x00
005D 1283 BCF STATUS,RP0
005E 00A1 MOVWF 0x21
005F 081F MOVF 0x1F,w
0060 39F3 ANDLW 0xF3
0061 0421 IORWF 0x21,w
0062 009F MOVWF 0x1F
0063 3064 MOVLW 0x64 ; 'd'
0064 00A9 MOVWF 0x29
0065 2004 CALL M0004
0066 149F BSF 0x1F,1
M0067
0067 189F BTFSC 0x1F,1
0068 2867 GOTO M0067
0069 081E MOVF 0x1E,w
006A 01A7 CLRF 0x27
006B 00A6 MOVWF 0x26
006C 3064 MOVLW 0x64 ; 'd'
006D 00A9 MOVWF 0x29
006E 2004 CALL M0004
M006F
006F 08A7 MOVF 0x27,f
0070 1D03 BTFSS STATUS,Z
0071 287E GOTO M007E
0072 0826 MOVF 0x26,w
0073 3C7F SUBLW 0x7F ; ''
0074 1C03 BTFSS STATUS,C
0075 287E GOTO M007E
0076 149F BSF 0x1F,1
M0077
0077 189F BTFSC 0x1F,1
0078 2877 GOTO M0077
0079 081E MOVF 0x1E,w
007A 01A7 CLRF 0x27
007B 00A6 MOVWF 0x26
007C 0063 SLEEP

007D 286F GOTO M006F

M007E
007E 0064 CLRWDT
007F 1683 BSF STATUS,RP0
0080 1085 BCF 0x05,1 ; PORTA/TRISA
0081 1283 BCF STATUS,RP0
0082 1485 BSF 0x05,1 ; PORTA/TRISA
0083 1683 BSF STATUS,RP0
0084 1105 BCF 0x05,2 ; PORTA/TRISA
0085 1283 BCF STATUS,RP0
0086 1505 BSF 0x05,2 ; PORTA/TRISA
0087 30FA MOVLW 0xFA
0088 00A9 MOVWF 0x29
0089 2004 CALL M0004
008A 0064 CLRWDT
008B 1683 BSF STATUS,RP0
008C 1085 BCF 0x05,1 ; PORTA/TRISA
008D 1283 BCF STATUS,RP0
008E 1085 BCF 0x05,1 ; PORTA/TRISA
008F 1683 BSF STATUS,RP0
0090 1105 BCF 0x05,2 ; PORTA/TRISA
0091 1283 BCF STATUS,RP0
0092 1105 BCF 0x05,2 ; PORTA/TRISA
0093 3002 MOVLW 0x02
0094 00A8 MOVWF 0x28
M0095
0095 30FA MOVLW 0xFA
0096 00A9 MOVWF 0x29
0097 2004 CALL M0004
0098 0BA8 DECFSZ 0x28,f
0099 2895 GOTO M0095
009A 0064 CLRWDT
009B 1683 BSF STATUS,RP0
009C 1085 BCF 0x05,1 ; PORTA/TRISA
009D 1283 BCF STATUS,RP0
009E 1485 BSF 0x05,1 ; PORTA/TRISA
009F 1683 BSF STATUS,RP0
00A0 1105 BCF 0x05,2 ; PORTA/TRISA
00A1 1283 BCF STATUS,RP0
00A2 1505 BSF 0x05,2 ; PORTA/TRISA
00A3 3085 MOVLW 0x85
00A4 00A0 MOVWF 0x20
M00A5
00A5 0BA0 DECFSZ 0x20,f
00A6 28A5 GOTO M00A5
00A7 0064 CLRWDT
00A8 1683 BSF STATUS,RP0
00A9 1085 BCF 0x05,1 ; PORTA/TRISA
00AA 1283 BCF STATUS,RP0
00AB 1085 BCF 0x05,1 ; PORTA/TRISA
00AC 1683 BSF STATUS,RP0
00AD 1105 BCF 0x05,2 ; PORTA/TRISA
00AE 1283 BCF STATUS,RP0
00AF 1105 BCF 0x05,2 ; PORTA/TRISA
00B0 3096 MOVLW 0x96
00B1 00A9 MOVWF 0x29
00B2 2004 CALL M0004
00B3 0064 CLRWDT
00B4 1683 BSF STATUS,RP0
00B5 1085 BCF 0x05,1 ; PORTA/TRISA
00B6 1283 BCF STATUS,RP0
00B7 1485 BSF 0x05,1 ; PORTA/TRISA
00B8 1683 BSF STATUS,RP0
00B9 1105 BCF 0x05,2 ; PORTA/TRISA
00BA 1283 BCF STATUS,RP0
00BB 1505 BSF 0x05,2 ; PORTA/TRISA
00BC 3085 MOVLW 0x85
00BD 00A0 MOVWF 0x20
M00BE
00BE 0BA0 DECFSZ 0x20,f
00BF 28BE GOTO M00BE
00C0 0064 CLRWDT
00C1 1683 BSF STATUS,RP0
00C2 1085 BCF 0x05,1 ; PORTA/TRISA
00C3 1283 BCF STATUS,RP0
00C4 1085 BCF 0x05,1 ; PORTA/TRISA
00C5 1683 BSF STATUS,RP0
00C6 1105 BCF 0x05,2 ; PORTA/TRISA
00C7 1283 BCF STATUS,RP0
00C8 1105 BCF 0x05,2 ; PORTA/TRISA
00C9 3096 MOVLW 0x96
00CA 00A9 MOVWF 0x29
00CB 2004 CALL M0004
00CC 0064 CLRWDT
00CD 1683 BSF STATUS,RP0
00CE 1085 BCF 0x05,1 ; PORTA/TRISA
00CF 1283 BCF STATUS,RP0
00D0 1485 BSF 0x05,1 ; PORTA/TRISA
00D1 1683 BSF STATUS,RP0
00D2 1105 BCF 0x05,2 ; PORTA/TRISA
00D3 1283 BCF STATUS,RP0
00D4 1505 BSF 0x05,2 ; PORTA/TRISA
00D5 3085 MOVLW 0x85
00D6 00A0 MOVWF 0x20
M00D7
00D7 0BA0 DECFSZ 0x20,f
00D8 28D7 GOTO M00D7
00D9 0064 CLRWDT
00DA 1683 BSF STATUS,RP0
00DB 1085 BCF 0x05,1 ; PORTA/TRISA
00DC 1283 BCF STATUS,RP0
00DD 1085 BCF 0x05,1 ; PORTA/TRISA
00DE 1683 BSF STATUS,RP0
00DF 1105 BCF 0x05,2 ; PORTA/TRISA
00E0 1283 BCF STATUS,RP0
00E1 1105 BCF 0x05,2 ; PORTA/TRISA
00E2 3096 MOVLW 0x96
00E3 00A9 MOVWF 0x29
00E4 2004 CALL M0004
00E5 0064 CLRWDT
00E6 1683 BSF STATUS,RP0
00E7 1085 BCF 0x05,1 ; PORTA/TRISA
00E8 1283 BCF STATUS,RP0
00E9 1485 BSF 0x05,1 ; PORTA/TRISA
00EA 1683 BSF STATUS,RP0
00EB 1105 BCF 0x05,2 ; PORTA/TRISA
00EC 1283 BCF STATUS,RP0
00ED 1505 BSF 0x05,2 ; PORTA/TRISA
00EE 3085 MOVLW 0x85
00EF 00A0 MOVWF 0x20
M00F0
00F0 0BA0 DECFSZ 0x20,f
00F1 28F0 GOTO M00F0
00F2 0064 CLRWDT
00F3 1683 BSF STATUS,RP0
00F4 1085 BCF 0x05,1 ; PORTA/TRISA
00F5 1283 BCF STATUS,RP0
00F6 1085 BCF 0x05,1 ; PORTA/TRISA
00F7 1683 BSF STATUS,RP0
00F8 1105 BCF 0x05,2 ; PORTA/TRISA
00F9 1283 BCF STATUS,RP0
00FA 1105 BCF 0x05,2 ; PORTA/TRISA
00FB 3096 MOVLW 0x96
00FC 00A9 MOVWF 0x29
00FD 2004 CALL M0004
00FE 0064 CLRWDT
00FF 1683 BSF STATUS,RP0
0100 1085 BCF 0x05,1 ; PORTA/TRISA
0101 1283 BCF STATUS,RP0
0102 1485 BSF 0x05,1 ; PORTA/TRISA
0103 1683 BSF STATUS,RP0
0104 1105 BCF 0x05,2 ; PORTA/TRISA
0105 1283 BCF STATUS,RP0
0106 1505 BSF 0x05,2 ; PORTA/TRISA
0107 3085 MOVLW 0x85
0108 00A0 MOVWF 0x20
M0109
0109 0BA0 DECFSZ 0x20,f
010A 2909 GOTO M0109
010B 0064 CLRWDT
010C 1683 BSF STATUS,RP0
010D 1085 BCF 0x05,1 ; PORTA/TRISA
010E 1283 BCF STATUS,RP0
010F 1085 BCF 0x05,1 ; PORTA/TRISA
0110 1683 BSF STATUS,RP0
0111 1105 BCF 0x05,2 ; PORTA/TRISA
0112 1283 BCF STATUS,RP0
0113 1105 BCF 0x05,2 ; PORTA/TRISA
0114 0063 SLEEP

0115 1683 BSF STATUS,RP0
0116 285C GOTO M005C

0117 0063 SLEEP

END.
; end of file


Fuses:

Oszillator: LP, Watchdog Timer: ON, Power Up Timer: OFF

Ein paar Dinge sind noch zu verbessern, aber im großen und ganzen funktioniert das Teil so wie ich es mir vorstelle. Kleines Projekt, langer Text...

Liebe Grüße!