Sida 1 av 1

RF sändare. (Kjell 433 MHz och Tiny2313)

Postat: 16 september 2012, 21:55:26
av bachler
Hej alla

Jag håller på och försöker klura ut hur fjärren till min projektorduk skickar data till duken.

Då duken saknar eller har fel på ändlägesgivare för nedre läget, så rullar den upp sig åt fel håll om man inte manuellt stoppar den.
Fjäkon har alltså 3 knappar, Upp, Stopp och Ned. Eller som det står på knapparna, OPEN, STOP och CLOSE.
Ologiskt nog så är close-knappen den som man rullar ned duken med och Open den som man rullar upp duken med...
Så jag antar att fjäkon är igentligen någon garageport-fjäko och inte orginal.

Tanken är att programmera en AVR med en 433mhz sändare som sedan kan styra duken med hjälp av timeout istället.

Fjärren är en 433mhz sändare och i duken sitter en liten PIC12?? something or other.

Jag tänkte prova min nyinköpta Saleae klon.
Öppnade helt sonika fjäkon och lödde på två tåtar på lämpligt ställe efter en utbildad gissning.
Sedan in på logikanalysatorn och igång med programmet.

Här är vad jag fick, borse från spikarna på närliggande kabel (kanal1)

Ser ut som att det är 25bitar och 0or och 1or skils åt beroende på pulsbrädden, 25% och 75%

Open ser ut som 0111000111010001000011000
Open.JPG
Stop ser ut som 0111000111010001000000110
Stop.jpg
Close ser ut som 0111000111010001001100000
Close.jpg
fjäko.JPG

Kod: Markera allt

		 Word 1(id)	   Byte(kommando)
		 Byte1	  Byte2	   Byte3    ? stop	
Open ser ut som  01110001 11010001 00001100 0
Kommando=0x0C

Stop ser ut som  01110001 11010001 00000011 0
Kommando=0x03

Close ser ut som 01110001 11010001 00110000 0
Kommando=0x30

ID=0x71,0xD1?
Någon som har några förslag?

Iofs så *måste* jag ju inte klura ut protokollet igentligen.
Jag skulle ju kunna programmet min AVR så att den bara härmar timingen rakt av.
Men jag känner att det skulle vara en elegantare lösning att känna till protokollet.
Eventuellt idnummer mm och bara ändra kommandot som skickas istället så att säga.
Tanken är att en ATTiny2313 eller ATTiny26 skall för göra jobbet.
2313 känns lockande då den har hårdvaru UART och skulle passa till att låta en dator(HTPC) styra duken.
fjäkon.jpg
logik_fjäko.jpg
Saleae klonen från DX funkar fint.
Även fast jag kanske råkade köra in 12v nu när jag tänker efter...
Vilket kanske förklarar spikarna på kanal1...
Aja, jag har råd med en till för det priset ifall den nu skulle bli skadad.
saleae.jpg
edit: titel

Re: Bygga 433mhz sändare. vad kan detta vara för protokoll?

Postat: 16 september 2012, 22:11:41
av Micke_s
Inte så att Chippet heter sc2262? Finns en del matnyttigt på Google om den

Re: Bygga 433mhz sändare. vad kan detta vara för protokoll?

Postat: 16 september 2012, 22:19:56
av bachler
Aha, där fick man för att man antog att det var en kina microprocessor på kortet och inte tänkte längre... :doh:

Sådär går det väl när man har en ny logikanalysator som man vill testa och så gärna vill att det ska vara någon megahemligt protokoll man skall avkoda.. :doh:

Tack för sparken åt rätt håll, skall kolla igenom databladet. Blir lite bed-time-reading.

Jag lägger upp mera info när jag får klart något som funkar eller så...

edit: dock heter kretsen PT-2262-S

Re: Bygga 433 MHz sändare. vad kan detta vara för protokoll?

Postat: 17 september 2012, 06:30:28
av EvilGhozt
Är det denna du har köpt? http://www.dealextreme.com/p/logic-anal ... 45?item=34
Priset var ju helt klart överkomligt :)

Re: Bygga 433 MHz sändare. vad kan detta vara för protokoll?

Postat: 17 september 2012, 14:46:09
av Micke_s
Processor kostar för mycket pengar och någon måste programmera den :roll:

Re: Bygga 433 MHz sändare. vad kan detta vara för protokoll?

Postat: 24 september 2012, 16:13:00
av bachler
Sådär, efter lite real-life stuff så har jag åter igen börjat klura lite på detta projekt.


(
Jag sökte på nätet, eller som det heter, "BING it!"
Man går alltså in på http://www.bing.com och skriver in "google.com" och sedan klickar man på Google.com länken och
när har kommit till google så skriver man in det man ville söka på och klickar sök alternativt trycker enter.
)
pt2262.pdf
Skämt åsido.

Protokollet verkar vara ett 12bitars protokoll och varje bit kan ha 3 lägen på inpinnarna, 0, 1 och flytande
Skickas i stötar av 2 pulser

0a:
första pulsen 25% och andra pulsen 25%

1a:
första pulsen 75% och andra pulsen 75%

Flytande:
första pulsen 25% och andra pulsen 75%


Och till sist efter 12 "bitarna" så kommer en syncpuls. därav dom 25 pulserna.

Ska nog kolla lite närmare på detta efter att jag städat hobbyrummet.. efter jobbet...

Mera info kommer eftersom.

Re: Bygga 433 MHz sändare. vad kan detta vara för protokoll?

Postat: 24 september 2012, 16:18:03
av bachler
EvilGhozt skrev:Är det denna du har köpt? http://www.dealextreme.com/p/logic-anal ... 45?item=34
Priset var ju helt klart överkomligt :)
Jag tror att det var dock ett annat SKU nummer på den jag köpte.
Men jag skulle tro att det inte är något som skiljer dem åt.

Fungerar över förväntan, med tanke på priset.

Kombinera med http://dx.com/p/electrical-wire-testing ... ece-134173 efter behov.

Re: Bygga 433 MHz sändare. vad kan detta vara för protokoll?

Postat: 24 september 2012, 16:25:25
av gOry
Är de inte bara enklare att laga ändlägesbrytaren? Om den inte har någon kan de ju inte vara allt för svårt att fixa en?

Re: Bygga 433 MHz sändare. vad kan detta vara för protokoll?

Postat: 24 september 2012, 22:16:38
av bachler
Hehe, jo om jag inte vore så jäkla lat så skulle jag kanske skruvat ner den från taket igen.
Men det är ingen rolig historia att skruva ner den...

+ att jag tror att det är en intern microbrytare i själva "rullen" som är för nedåt läget.
Och den är nog ännu tråkigare att försöka få fix på.

Givaren för uppläget bryter bara matningen till själva motorn, den består av en vanlig "cherry switch" som duken gått upp emot i själva kapslingen

Men microprocessorn i mottagaren inte märker att den gått upp och håller reläet draget tills man manuellt trycker på stoppknappen.
Det, tillsammans med den inte fullt så logiska texten (open stop close) på knapparna får mig att tro att styrningen inte är orginal.

Tanken har funnits att tillverka ett helt nytt kort för styrning av duken med en ny microprocessor som kanske kan läsa RC5 via IR eller liknande,
men det är som jag nämnde inte så kul att få ned duken från taket. (bor i ett gammalt hus och det är ganska högt i tak)
Så det får bli denhär lösningen istället

Men det är rätt så kul och lärorikt att bygga en sådanhära pryl,
om det bara var så att jag ville få upp och ner duken så kan jag köra den med fjärren som den är nu.

Tanken är att, på sikt skall en HTPC skall styra både en projektor och duken.

Re: Bygga 433 MHz sändare. vad kan detta vara för protokoll?

Postat: 29 september 2012, 03:22:49
av bachler
Ett första utkast på en quick and dirty kodsnutt. Inte testad ännu, för nu ska jag sova.
Men alltid något.

Imorron ska jag sätta fart på en Tiny2313 processor på labbdäck så jag kan testa koden och jämnföra om det liknar vad jag tänkt att det ska göra.

Kod: Markera allt

.nolist
.include "tn2313def.inc"
.list


;1mhz får man köra 2400 baud

.dseg
.org 0x0060

.cseg
.org 0x0000
	rjmp main


.equ 	LED_PORT 		= PORTB
.equ 	LED_DDR 		= DDRB
.equ	LED1 			= PB1

.equ 	TX_PORT 		= PORTB
.equ 	TX_DDR	 		= DDRB
.equ 	TX	 			= PB0


main:
	; init stack
	ldi r16, 0x00DF
	out SPL, r16

	; init ports
	ldi r16, (1<<PB0)
	out DDRB, r16

	ldi r16, (1<<LED1)
	out LED_DDR, r16

	; TODO: fix uart kod.
	;rcall init_uart


loop:

	rcall updown_delay
	rcall updown_delay

	rcall down
	
	rcall updown_delay
	rcall updown_delay
	
	rcall up

	rjmp loop

;------------------------------------------------------------------------------

down:
	sbi LED_PORT, LED1
	rcall send_command_down
	rcall updown_delay
	rcall send_command_stop
	ret

up:
	cbi LED_PORT, LED1
	rcall send_command_up
	rcall updown_delay
	rcall send_command_stop
	ret


send_command_up:
	;12 bitar + sync
	rcall float		; A0  -__ --_
	rcall one		; A1  --_ --_
	rcall zero		; A2  -__ -__
	rcall float   	; A3  -__ --_
	rcall one		; A4  --_ --_
	rcall float		; A5  -__ --_
	rcall zero		; A6  -__ -__
	rcall float		; A7  -__ --_
	rcall zero		; A8  -__ -__
	rcall zero	
	rcall one		
	rcall zero	
	rcall sync		; Sync-_______
	ret

send_command_down:
	;12 bitar + sync
	rcall float		; A0  -__ --_
	rcall one		; A1  --_ --_
	rcall zero		; A2  -__ -__
	rcall float   	; A3  -__ --_
	rcall one		; A4  --_ --_
	rcall float		; A5  -__ --_
	rcall zero		; A6  -__ -__
	rcall float		; A7  -__ --_
	rcall zero		; A8  -__ -__
	rcall one		
	rcall zero	
	rcall zero	
	rcall sync		; Sync-_______
	ret	

send_command_stop:
	;12 bitar + sync
	rcall float		; A0  -__ --_
	rcall one		; A1  --_ --_
	rcall zero		; A2  -__ -__
	rcall float 	; A3  -__ --_
	rcall one		; A4  --_ --_
	rcall float		; A5  -__ --_
	rcall zero		; A6  -__ -__
	rcall float		; A7  -__ --_
	rcall zero		; A8  -__ -__
	rcall zero	
	rcall zero	
	rcall one 	
	rcall sync		; Sync-_______
	ret

updown_delay:
	nop
	nop
	nop
	;nopnopnoppelinoppnopp
	; kanske en abort via uart?
	ret


zero:					; 3
	rcall send25		; 
	rcall send25
	ret					; 4

one:
	rcall send75
	rcall send75
	ret

float:
	rcall send25
	rcall send75
	ret				

sync:
	rcall send25
	rcall sync_delay
	ret


send25:
	sbi TX_PORT, TX					; 1
	rcall send_delay	;1/5		; 
	nop
	nop
	nop
	nop
	cbi TX_PORT, TX
	rcall send_delay	;2/5
	nop
	nop
	nop
	nop
	rcall send_delay	;3/5
	nop
	nop
	nop
	nop
	rcall send_delay	;4/5
	ret								; 4

send75:
	sbi TX_PORT, TX
	rcall send_delay	;1/5
	nop
	nop
	nop
	nop
	rcall send_delay	;2/5
	nop
	nop
	nop
	nop
	rcall send_delay	;3/5
	nop
	nop
	nop
	cbi TX_PORT, TX
	rcall send_delay	;5/5
	ret

send_delay:								;3
	; ============================= 
	;    delay loop generator 
	;     500 cycles:
	; ----------------------------- 
	; delaying 498 cycles:
	          ldi  R19, $A0
	WGLOOP0:  dec  R19
	          brne WGLOOP0
	; ----------------------------- 
	; delaying 2 cycles:
	          nop
	          nop
	; =============================
	ret

sync_delay:
	ret

Re: RF sändare. (Kjell 433 MHz och Tiny2313)

Postat: 29 september 2012, 07:53:57
av Variosboy
Om det var min skulle jag laga ändlägesbrytaren och sen koppla om motorn så den går åt rätt håll med Open close knapparna.

Re: RF sändare. (Kjell 433 MHz och Tiny2313)

Postat: 29 september 2012, 23:12:40
av bachler
Det är svårt att laga brytaren, om det enns finns någon.
På jobbet brukar vi styra dukarna med timer, man tajmar in det så dom hamnar på rätt höjd.

Men nu funkar det iaf.
Byggde ihop ett litet kort med en Tiny2313 och en kjell o co 433mHz sändare.

Slängde dit en 38kHz IR demodulator också, för att det kanske blir så att jag vill använda tv-fjäkon att styra duken med.

Koden skulle behövas snyggas till, men det funkar iaf.

När jag duttar med tråden ansluten till PD6 på GND så startar testprogrammet.
Duken åker neråt i ca 1 sek, stannar. väntar ett tag. och sedan åker den upp i 1 sek och stannar.

Jag var rädd att det inte skulle fungera med kjelles 433mHz sändare, men det gjorde det.

Alla gillar bilder :D
_IGP2356.JPG
Vissa gillar kod.

Kod: Markera allt

; Rf sändare till projektorduk
; tiny2313, 4mhz kristalloscillator
; bachler 2012

.nolist
.include "tn2313def.inc"
.list


.dseg
.org 0x0060

.cseg
.org 0x0000
	rjmp main


.equ 	LED_PORT 		= PORTB
.equ 	LED_DDR 		= DDRB
.equ	LED1 			= PB7

.equ 	TX_PORT 		= PORTB
.equ 	TX_DDR	 		= DDRB
.equ 	TX	 			= PB0


main:
	; init stack
	ldi r16, 0x00DF
	out SPL, r16

	ldi r16, (1<<LED1) + (1<<TX)
	out LED_DDR, r16

	ldi r16, (1<<PD6)
	out PORTD, r16
	nop
	nop

loop:

	wait_for_keypress:
	sbic PIND, PD6
	rjmp wait_for_keypress

	rcall down
	rcall updown_delay
	rcall updown_delay
	rcall updown_delay
	rcall updown_delay
	rcall up
	rcall updown_delay
	rcall updown_delay
	rcall updown_delay
	rcall updown_delay
	rjmp loop

;------------------------------------------------------------------------------

down:
	sbi LED_PORT, LED1
	rcall send_command_down
	rcall updown_delay
	rcall send_command_stop
	ret

up:
	cbi LED_PORT, LED1
	rcall send_command_up
	rcall updown_delay
	rcall send_command_stop
	ret


send_command_up:
	;12 bitar + sync
	rcall float		; A0  -__ --_
	rcall one		; A1  --_ --_
	rcall zero		; A2  -__ -__
	rcall float   	; A3  -__ --_
	rcall one		; A4  --_ --_
	rcall float		; A5  -__ --_
	rcall zero		; A6  -__ -__
	rcall float		; A7  -__ --_
	rcall zero		; A8  -__ -__
	rcall zero	
	rcall one		
	rcall zero	
	rcall sync		; Sync-_______
	ret

send_command_down:
	;12 bitar + sync
	rcall float		; A0  -__ --_
	rcall one		; A1  --_ --_
	rcall zero		; A2  -__ -__
	rcall float   	; A3  -__ --_
	rcall one		; A4  --_ --_
	rcall float		; A5  -__ --_
	rcall zero		; A6  -__ -__
	rcall float		; A7  -__ --_
	rcall zero		; A8  -__ -__
	rcall one		
	rcall zero	
	rcall zero	
	rcall sync		; Sync-_______
	ret	

send_command_stop:
	;12 bitar + sync
	rcall float		; A0  -__ --_
	rcall one		; A1  --_ --_
	rcall zero		; A2  -__ -__
	rcall float 	; A3  -__ --_
	rcall one		; A4  --_ --_
	rcall float		; A5  -__ --_
	rcall zero		; A6  -__ -__
	rcall float		; A7  -__ --_
	rcall zero		; A8  -__ -__
	rcall zero	
	rcall zero	
	rcall one 	
	rcall sync		; Sync-_______
	ret

updown_delay:
	; ============================= 
	;    delay loop generator 
	;     4000000 cycles:
	; ----------------------------- 
	; delaying 3999996 cycles:
	          ldi  R19, $24
	WGLOOP10:  ldi  R20, $BC
	WGLOOP11:  ldi  R21, $C4
	WGLOOP12:  dec  R21
	          brne WGLOOP12
	          dec  R20
	          brne WGLOOP11
	          dec  R19
	          brne WGLOOP10
	; ----------------------------- 
	; delaying 3 cycles:
	          ldi  R19, $01
	WGLOOP13:  dec  R19
	          brne WGLOOP13
	; ----------------------------- 
	; delaying 1 cycle:
	          nop
	; ============================= 
	ret


zero:					; 3
	rcall send25		; 
	rcall send25
	ret					; 4

one:
	rcall send75
	rcall send75
	ret

float:
	rcall send25
	rcall send75
	ret				

sync:
	rcall send25
	rcall sync_delay
	ret


send25:
	sbi TX_PORT, TX					; 1
	rcall send_delay	;1/5		; 
	nop
	nop
	nop
	nop
	cbi TX_PORT, TX
	rcall send_delay	;2/5
	nop
	nop
	nop
	nop
	rcall send_delay	;3/5
	nop
	nop
	nop
	nop
	rcall send_delay	;4/5
	ret								; 4

send75:
	sbi TX_PORT, TX
	rcall send_delay	;1/5
	nop
	nop
	nop
	nop
	rcall send_delay	;2/5
	nop
	nop
	nop
	nop
	rcall send_delay	;3/5
	nop
	nop
	nop
	cbi TX_PORT, TX
	rcall send_delay	;5/5
	ret

send_delay:								;3
	; ============================= 
	;    delay loop generator 
	;     2000 cycles:
	; ----------------------------- 
	; delaying 1998 cycles:
	          ldi  R19, $03
	WGLOOP0:  ldi  R20, $DD
	WGLOOP1:  dec  R20
	          brne WGLOOP1
	          dec  R19
	          brne WGLOOP0
	; ----------------------------- 
	; delaying 2 cycles:
	          nop
	          nop
	; ============================= 
	ret

sync_delay:
	ret

Som sagt, koden måste väl snyggas till lite kanske.
Ska försöka jobba lite på en IR mottagare. typ RC5 eller vad det nu är mina fjärrkontroller använder.
Mera användning för min logikanalysator.

Borde nog fixa en RS232 nivåkrets och programmera någon UART grejs också.
Men nu när man vet att det faktiskt fungerar så känner man sig rätt så nöjd.