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:


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:


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

Noch ein kleines Layout:


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:

Code:
; 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:
Code:
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!