Sida 1 av 2
					
				NEXA mottagare
				Postat: 3 oktober 2009, 21:33:59
				av lond
				Har hållit på med detta projekt sedan december och kört fast några gånger, men med nya mätinstrument (logikanalysator från Saleae) och information från forumet här fick jag det att fungera tillslut 
µP avkodar det den får från 433,92MHz mottagaren och skickar informationen vidare via 3 pinnar (TXD, CTS & RTS) till nästa µP eller dator.
Denna version har jag kopplad via rs232-USB till en dator som övervakar via ett terminal program 
Framsida Baksida
Den gamla version (annan modell av µP) sitter nu i detta projekt 
IKEA Jonisk LED.
Nästa steg är att förbättra dekodningen av signalerna för att stödja fler tillverkare av sändare och att implementera mottagaren tillsammans med en TellStick mm.
// Marcus
 
			 
			
					
				Re: NEXA mottagare
				Postat: 9 oktober 2009, 20:27:48
				av jadler
				Varför vill du bygga en mottagare?
			 
			
					
				Re: NEXA mottagare
				Postat: 10 oktober 2009, 11:46:13
				av lond
				För det första för att kunna se om jag kunde få det hela att fungera från teori till praktik 

 , för det andra att kunna styra saker med NEXA fjärrkontroller, tex min 
IKEA Jonisk LED, som jag styr med on/off och mode från en väggsändare och alla andra funktioner: färgstyrning, hastighet, minnespositioner etc. från en YCT-100 fjärrkontroll.
// Marcus
 
			 
			
					
				Re: NEXA mottagare
				Postat: 21 oktober 2009, 14:42:30
				av lond
				Har nu fått mottagaren att förstå PROOVE-2000 formatet. 
Nu skall bara µP i lampan tolka informationen till kommandon 
// Marcus
 
			 
			
					
				Re: NEXA mottagare
				Postat: 21 oktober 2009, 15:22:51
				av PHermansson
				Tell me more! Var hittar jag kod&schema?
			 
			
					
				Re: NEXA mottagare
				Postat: 21 oktober 2009, 17:20:42
				av danielr112
				Riktigt sjysst! 
Håller stenkoll på detta med och allt resultat hoppas jag är öppet  

 
			 
			
					
				Re: NEXA mottagare
				Postat: 21 oktober 2009, 17:33:48
				av lond
				Det nya NEXA/PROOVE-2000 systemet är uppbyggt på följande sätt:
1 start bit och 33st informations bitar där bit 1-26 är sändarens id, 27 & 28 on/off och bit 29-33 är button information.
Sedan kommer en paus på ca 10,2mS innan informationen sänds igen.
Summan av dom 33st informationsbitarna blir 66 (Som jag har tolkat det 

 ).
Har mätt upp detta med hjälp av en fjärrkontroll (LYCT-705) och en magnetbrytare (LMST-606).
Pdf-fil hur det hela är uppbyggt
Kretsschema:
Layout:
Måste "qouta" koden mera innan jag släpper den 
Håll till godo så länge.
// Marcus
 
			 
			
					
				Re: NEXA mottagare
				Postat: 21 oktober 2009, 17:56:21
				av victor_passe
				Detta är exakt vad jag letar efter men jag förstår inte databladet.
			 
			
					
				Re: NEXA mottagare
				Postat: 21 oktober 2009, 18:05:12
				av danielr112
				Klockrent!
Synd att man inte har tid att börja med sitt egna projekt nu. Då hade jag gladeligen hjälpt till och lagt ut mina ritnignar o.s.v. Men just nu finns de bara i huvudet :/
			 
			
					
				Re: NEXA mottagare
				Postat: 21 oktober 2009, 18:18:33
				av lond
				Lite ytterligare förklaring:

Varje informationsbit skickas genom ett antal pulser som µP räknar och tolkar om till ett värde.
// Marcus
 
			 
			
					
				Re: NEXA mottagare
				Postat: 21 oktober 2009, 19:30:49
				av danielr112
				Vilken motagare och sändare kör du med? Motsvarigheten KjelloCo ?
			 
			
					
				Re: NEXA mottagare
				Postat: 21 oktober 2009, 19:44:15
				av lond
				Sändare LYCT-705, mottagare Kjell.com:s 433MHz mottagare modul.
// Marcus
			 
			
					
				Re: NEXA mottagare
				Postat: 21 oktober 2009, 19:51:19
				av lond
				Har även en fjärrkontroll + en väggsändare av den gamla modellen som också fungerar 

Och en LMST-606 som är ombyggd så att den får plats bakom en vanlig strömbrytare och magnetbrytaren ersatt av 2 trådar som går till den befintliga strömbrytaren som är bytt till en dubbel-trapp så att allt är isolerat, gjorde detta för att slippa dra en helt omöjlig tändtråd 
// Marcus
 
			 
			
					
				Re: NEXA mottagare
				Postat: 21 oktober 2009, 20:50:22
				av lond
				Här kommer koden för er alla nyfikna personer som har suttit och väntat 
Kod: Markera allt
'****************************************************************
'*  Name    : 433_reciver_5.BAS                                 *
'*  Author  : Marcus Löfstrand                                  *
'*  Notice  : Copyright (c) 2008 Marcus Löfstrand               *
'*          : All Rights Reserved                               *
'*  Date    : 2009-10-19                                        *
'*  Version : 5.1.0.107                                         *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
' -----[ µP Definitions ]--------------------------------------------------
    Device = 16F688
    Reminders false 
    Config EXTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, BOD_OFF, CP_OFF, MCLRE_OFF, CPD_OFF
    Reminders true
    Xtal = 16
    
    All_Digital = TRUE
' -----[ I/O Definitions ]-------------------------------------------------
            
    Symbol RX433 = PORTC.5
    Symbol D0 = PORTC.2                 ' Led 0
    Symbol D1 = PORTC.1                 ' Led 1
    Symbol D2 = PORTC.4                 ' Led 2
    Symbol D3 = PORTC.3                 ' Led 3
    
    Symbol RTS = PORTA.1
    Symbol CTS = PORTC.0
                
' -----[ Variables ]-------------------------------------------------------
        
    Dim T_1 As Word
    Dim T_2 As Word
    Dim loop As Byte
    
    Dim value As Byte
    Dim pointer As Word
    
    Dim Out As Word
    Dim Out_New[34] As Byte
    Dim Out_New_Control[34] As Byte
        
    Declare Serial_Baud 4800
    Declare Rsout_Pin PORTA.0           ' TX data
    Declare Rsout_Mode 0
    
' -----[ Constants ]-------------------------------------------------------
    Dim CR As $0D                       ' Carriage Return
    Dim LF As $0A                       ' Line Feed
    
    Dim Value_Low_0 As 100              ' Spannet för en 0:a
    Dim Value_High_0 As 250
    Dim Value_low_1 As 350              ' Spannet för en 1:a
    Dim Value_High_1 As 500
    
    Dim NEXA_2000_value As 4055         ' Timming värdet för NEXA 2000
    Dim NEXA_old_value As 4550          ' Timming värdet för NEXA old
    Dim Diff As 150                     ' Max - Min
            
' -----[ Initialization ]--------------------------------------------------
Input RX433
Input CTS
Low RTS
DelayMS 200
' -----[ Program Code ]----------------------------------------------------
Main:                                   ' I väntan på mottagning
Low D0                                  ' Släcker alla Led
Low D1
Low D2
Low D3
If RX433 = 1 Then GoTo Measure          ' Om det kommer en 1:a från mottagaren - börja jobba
GoTo Main
' -----[ Subroutines ]-----------------------------------------------------
Measure:
T_1 = PulsIn RX433, 0                   ' Mät efterföljande 0:a
    ' AKA Hoppar över första data paketet och mäter pausen mellan paketen
If T_1 >= NEXA_2000_value - Diff And T_1 <= NEXA_2000_value + Diff Then
    GoTo NEXA_2000                      ' Om mellanrummet är ca 10,2mS så är datan NEXA_2000                      
ElseIf T_1 >= NEXA_old_value - Diff And T_1 <= NEXA_old_value + Diff Then
    GoTo NEXA_old                       ' Om mellanrummet är ca 11,3mS så är datan NEXA_old
EndIf
GoTo Main                               ' Annars tillbaka till huvudloopen och vänta
NEXA_old:
Repeat Until RX433 = 0                  ' Vänta på en 0:a
High D0
For loop = 0 To 11
    Toggle D1
    
    T_1 = PulsIn RX433, 1               ' Mät 1:an
    Toggle D3
        
    If T_1 >= Value_Low_0 And T_1 <= Value_High_0 Then 
        value = 0
    ElseIf T_1 >= Value_low_1 And T_1 <= Value_High_1 Then 
        value = 1
    Else                                ' Beroende på längd 0:a, 1:a eller ogiltig
        GoTo Main
    EndIf
    Repeat Until RX433 = 1
                                        ' Hoppa över nästa puls
    Repeat Until RX433 = 0
    If loop = 0 Then                    ' Fixa till så att informationen är lättläst
        Out.8 = value
    ElseIf loop = 1 Then
        Out.9 = value
    ElseIf loop = 2 Then
        Out.10 = value
    ElseIf loop = 3 Then
        Out.11 = value
    ElseIf loop = 4 Then
        Out.4 = value
    ElseIf loop = 5 Then
        Out.5 = value
    ElseIf loop = 6 Then
        Out.6 = value
    ElseIf loop = 7 Then
        Out.7 = value
    ElseIf loop = 8 Then
        Out.3 = value
    ElseIf loop = 9 Then
        Out.2 = value
    ElseIf loop = 10 Then
        Out.1 = value
    ElseIf loop = 11 Then
        Out.0 = value
    EndIf
    
Next
If Out.1 = 1 And Out.2 = 1 And Out.3 = 0 Then GoTo Send_Data_old    ' Kontrollera så att datan är godkänd.
GoTo Main
NEXA_2000:                              ' Om det är NEXA_2000 data
Repeat Until RX433 = 0                  ' Vänta på en 0:a
High D0
Clear Out_New                           ' Se till så allt det inte finns något kvar sen förra gången
loop = 0                                ' Nolla all räknare
T_1 = 0
T_2 = 0
DelayMS 2
While 1 = 1
    Inc T_1
    DelayUS 1
    If T_1 = 120 Then                   ' T_1 = 120 så är det en ny bit
        Toggle D1                       ' Nollställ allt och flytta fram markören för mätvärdet ett steg
        Inc loop
        T_1 = 0
        Inc T_2
        If loop >= 33 Then Break        ' Har vi fått 33 mätvärden - gå ur loopen
    EndIf
    If T_2 >= 2 Then GoTo Main          ' Har vi hafft en 0:a så här länge så är det något fel - Gå till huvudloopen
    If RX433 = 1 Then                   ' Om vi får en 1:a så öka mätvärdet med 1
        High D3
        Inc Out_New[loop]
        Repeat Until RX433 = 0
        Low D3
        T_1 = 0                         ' Nolla 0-kontrollanterna
        T_2 = 0
    EndIf
Wend
Repeat Until RX433 = 1                  ' Hoppa över en 1:a och en 0:a
Repeat Until RX433 = 0
Clear Out_New_Control                   ' Gör allt en gång till men med _Control istället
loop = 0
T_1 = 0
T_2 = 0
DelayMS 2
While 1 = 1
    Inc T_1
    DelayUS 1
    If T_1 = 120 Then
        Toggle D1
        Inc loop
        T_1 = 0
        Inc T_2
        If loop >= 33 Then Break
    EndIf
    If T_2 >= 2 Then GoTo Main
    If RX433 = 1 Then
        High D3
        Inc Out_New_Control[loop]
        Repeat Until RX433 = 0
        Low D3
        T_1 = 0
        T_2 = 0
    EndIf
Wend
For loop = 0 To 32                      ' Jämför Out_New med Out_New_Control
    If Out_New[loop] <> Out_New_Control[loop] Then GoTo Main
Next
GoTo Send_Data_2000                     ' Om dom var lika så kan vi skicka datan vidare
Send_Data_old:
High D2
High RTS                                ' Sätt RTS hög
Repeat Until CTS = 1                    ' och vänta på att nästa enhet skall svara
DelayMS 2
RSOut Hex3 Out                          ' Skicka dom 3 hexadecimala värderna
RSOut CR, LF                            ' och avsluta med CR, LF
Low RTS                                 ' Återställ RTS
DelayMS 500                             ' Vänta en liten stund
GoTo Main                               ' och återgå till att vänta på nästa mottagning
Send_Data_2000:
High D2
High RTS                                ' Sätt RTS hög
Repeat Until CTS = 1                    ' Och vänta på att nästa enhet skall svara
DelayMS 2
For loop = 0 To 32
    RSOut Hex1 Out_New[loop]            ' Skicka informationen som 33 st hexadecimala värden
Next
RSOut CR, LF                            ' och avsluta med CR, LF
Low RTS                                 ' Återställ RTS
DelayMS 500                             ' Vänta en liten stund
GoTo Main                               ' och återgå till att vänta på nästa mottagning
End
Jag vet att den är skriven i BASIC, men det är det jag programmerar i.  
 
// Marcus
 
			 
			
					
				Re: NEXA mottagare
				Postat: 21 oktober 2009, 22:30:58
				av PHermansson
				Tackar!
Dags att ta upp mitt gamla projekt igen alltså, här får man ju en del på köpet. Mitt mål var att använda en USB-Pic, ska se om jag kan porta koden till C18...