Egen Nexa Sändare/Mottagare/Sniffer :)

Allmänna frågor och synpunkter.
Korak
3 stars
3 stars
Posts: 69
Joined: Mon 22 Nov 2010, 22:26
Location: Luleå

Egen Nexa Sändare/Mottagare/Sniffer :)

Post by Korak » Tue 04 Jan 2011, 00:12

-Ni får ursäkta min nördighet...men..... :geek: -jag KUNDE inte låta bli att ,förutom göra en egen Nexa sändare, åxå göra en egen mottagare :mrgreen:
Mottagaren används just nu bl.a som "Nexa sniffer" och funkar väl sisådär ;)
Sändaren däremot funkar klockrent och styr mina belysningar via SK och "event listener".

På bilden syns en liten "pryl" längst till vänster, det är en fullt fungerande Nexa sändare :!: :D , kostar ca. 100:- på kjell & co., sen behövs en liten microcontroller med 8-ben åxå förståss, kostar nån tia :)
Den större (vita) burken är min ClicStic (Nexa sändare/mottagare) byggd av en annan produkt, här i "sniffer" utförande med extern USB adapter.
IMG_1626_small_2.jpg

Här syns resultatet av en Nexa sändare som sniffern fångat upp...kanske inte alltid 100% korrekt ;) ..men man får väl "tuna" mottagar rutinerna lite till då :roll:
ClicStic_Sniffer.JPG
Om nån är intresserad att bygga eget, liknande, hör gärna av er så hjälper jag gärna till.
You do not have the required permissions to view the files attached to this post.
________________________________________________________________________
   // Sonny //              ( If assembler looks blurry....try 2 C# ;)

Extreeem
1 star
1 star
Posts: 13
Joined: Tue 09 Nov 2010, 21:51

Re: Egen Nexa Sändare/Mottagare/Sniffer :)

Post by Extreeem » Tue 04 Jan 2011, 02:16

Coooolt!
Är det art.nr. 88901 hos Kjell du använt dig av?

Jag skulle mycket gärna vilja ta del av kopplingsschema samt ev. mjukvara du knåpat ihop!
Hur är räckvidden på din sändare? Ser att du har någon vit kabel där som antenn? Hur blir responstiden när du kopplat det via event listener?

Även din sniffer verkar vara en trevlig pryl, finns möjlighet att plocka upp signaler från väderstationer och dyl. som kommunicerar på 433MHz-bandet också?

Berätta gärna mer, älskar sådanna här små projekt!

zeputt
1 star
1 star
Posts: 6
Joined: Tue 09 Nov 2010, 21:51

Re: Egen Nexa Sändare/Mottagare/Sniffer :)

Post by zeputt » Tue 04 Jan 2011, 09:47

+1 8-)

Korak
3 stars
3 stars
Posts: 69
Joined: Mon 22 Nov 2010, 22:26
Location: Luleå

Re: Egen Nexa Sändare/Mottagare/Sniffer :)

Post by Korak » Tue 04 Jan 2011, 14:48

Jorå, det är den kjell modulen ;)
Kopplingsschemat är inget märkvärdigt alls, man kopplar en valfri processorpinne till TX ingången på modulen åsså tillser man att både modulen och processorn får jord och ca. 3-5V matningsspänning, sen kopplar man en lämplig antenntråd (som du mycket riktigt gissade) som är av typen 1/2 eller 1/4 eller 1/8 dels våglängd, jag kör på 34,5cm i mitt projekt.

Det är det lätta biten, nu blir det lite mer bök ;)
Nu måste du flasha microcontrollern med lämplig .HEX fil (själva programmet) , detta program kan du göra själv om du gillar att programmera :mrgreen: , men du kan åxå få hjälp av mig att fixa det, flashningen måste man ha en programmerare till, kan t.ex. vara kjells 87815. Naturligtvis kan jag skicka dig färdigprogrammerade microcontrollers åxå, beror lite på vilken version du behöver.

Det som är lite bök är att få programvaran att fungera som den skall, just mottagning är lite bökigt, sändare däremot är väldans enkla att göra om man känner till protokollet....fast ibland kanske man inte gör det ens..utan man "kopierar" en signal som man fångat med oscilloskop/spektrumanalysator eller nåt, det går det med :)

Här är en bild på ett enkelt sändarsteg med kjell modulen:
TX.JPG
Svårare än så är det inte, men himla kul :D
Fördelen med att "göra allt själv" är ju att du kan hitta på en massa kuliga saker med dessa microcontrollers, ladda bara hem lämplig kompilator, t.ex mikroelektronikas "C", "Basic" eller "Pascal" kompilator och kör igång, köper du dessutom deras "PicFlash2" programmerare så kan du flasha direkt inifrån den miljön.
Deras kompilatorer är fullt fungerande med begränsar resultatkoden (HEX-filen) till ca. 2kB i den "fria" versionen, men för småprojekt är det mer än nog.
Behöver du kompilera större program så kan jag kompilera dom åt dig, du kan dessutom om du vill, få källkod ("C") från mig så du kan starta därifrån ganska enkelt.

Du kan dessutom bygga en mottagare med deras modul 88900 enligt detta schema:
RX.JPG
You do not have the required permissions to view the files attached to this post.
________________________________________________________________________
   // Sonny //              ( If assembler looks blurry....try 2 C# ;)

Korak
3 stars
3 stars
Posts: 69
Joined: Mon 22 Nov 2010, 22:26
Location: Luleå

Re: Egen Nexa Sändare/Mottagare/Sniffer :)

Post by Korak » Tue 04 Jan 2011, 15:24

Postar en exempelkod som lämpar sig till detta, har inte testat just denna, men i grund är det delar av samma kod som jag själv kör.

Code: Select all

 //
 // Example code for a NEXA transmitter produced by Sonny -11
 // Needs adjustment depending of wich microcontroller choosen.
 //
 
 // Defines for connected processor port
 #define TX_HI PORTx.F2 = 1
 #define TX_LO PORTx.F2 = 0
 #define BUTTON PORTx.F0
 
 unsigned long saved_sender = 123456; // The "remote-control" id
 unsigned short saved_recicpient = 7; // Receiver channel
 unsigned short saved_group = 0;      // no "group" message
 unsigned short saved_action = 1;     // "on" :)
 unsigned short PACKETS = 7;          // Packets to send out
 unsigned short true = 1;
 unsigned short false = 0;
 

void main () {
     //
     // Some setup commands goes here ..
     // ex. ...
     PORTx = 0;    // Define states of processor pins ...
     TRISx = 1;    // Define in (1) or out (0) of processor pins ...
     //
     while( 1 ) {
         if ( BUTTON == 1 ) {
            transmitNEXA(saved_sender, saved_recipient, saved_group, saved_action, PACKETS);
            delay_ms(500);
         }
     }
}


void sendPairNEXA(unsigned short b) {
    // Manchester data is 01 or 10, never 11 or 00
    if(b == 0) {
        sendBitNEXA(true);
        sendBitNEXA(false);
    } else {
        sendBitNEXA(false);
        sendBitNEXA(true);
    }
    return;
}


void sendBitNEXA(unsigned short b) {
    if (b == 1) {
        TX_HI;
        delay_us(320);
        TX_LO;
        delay_us(200);
    } else {
        TX_HI;
        delay_us(320);
        TX_LO;
        delay_us(1210);
    }
    return;
}


void transmitNEXA( unsigned long SenderID, unsigned short RecCh, unsigned short Group, unsigned short Enabled, unsigned short Repeats ){
  //
  // Takes approx. 80mS / packet
  //
  unsigned short i,cnt;
  unsigned long DA;
  unsigned short RCP;
  //
  GIEN = 0;
  //
  //Preamble();            // Send a "Preamble" to wakr the receivers up or just send seweral packets to do the same job ;)
  //
  for (cnt = 0;cnt < Repeats;cnt++) {
      //
      DA = SenderID;
      RCP = RecCh;
      //
      TX_HI;
      delay_us(320);
      TX_LO;
      delay_us(2510);
      //
      for(i=0; i<26;i++) {     // Send bits 0-25 ,Device Address..
        //
         if((DA & 0x02000000)==0x02000000) {
             sendPairNEXA(true);
         } else {
             sendPairNEXA(false);
         }
         DA <<= 1;
      }

      // Send 26th bit - group 1/0
      sendPairNEXA(Group);

      // Send 27th bit - on/off 1/0
      sendPairNEXA(Enabled);

      // last 4 bits - recipient
      //
       for(i=0; i<4;i++) {
         //
         if((RCP & 0x8)==0x8) {
             sendPairNEXA(true);
         } else {
             sendPairNEXA(false);
         }
         RCP <<= 1;
      }
      //
      // Now send "EndOfMessage" pattern ...
      //
      TX_HI;
      delay_us(310);
      TX_LO;
      delay_us(9810);  // put low for at least this time :)
  }
  //
  return;
}
________________________________________________________________________
   // Sonny //              ( If assembler looks blurry....try 2 C# ;)

Korak
3 stars
3 stars
Posts: 69
Joined: Mon 22 Nov 2010, 22:26
Location: Luleå

Re: Egen Nexa Sändare/Mottagare/Sniffer :)

Post by Korak » Tue 04 Jan 2011, 15:35

Oj, glömde....

Sändarräckvidden blir ganska bra trots den "enkla" modulen, sänder hemma ca. 20meter till Nexa-modulen "längst" bort, från datarumment bakom garaget, genom två väggar.
Kollade på spektrumanalysatorn och tyckte att den matchade "köpes-fjärren" ganska väl i uteffekt.
Responstiden genom event-listener, från det att jag trycker kommandot i SK klienten, fram till lampan reagerar, är väl typ 2 sekunder.
Vad beträffar mottagaren så är den (just iaf.) inte lika känslig som en köpt Nexa-mottagare, nära på men inte riktigt.
________________________________________________________________________
   // Sonny //              ( If assembler looks blurry....try 2 C# ;)

Korak
3 stars
3 stars
Posts: 69
Joined: Mon 22 Nov 2010, 22:26
Location: Luleå

Re: Egen Nexa Sändare/Mottagare/Sniffer :)

Post by Korak » Tue 04 Jan 2011, 21:09

Testade att justera och kompilera exempelkoden för en PIC12F629 processor och fick ledigt in det i minnet :)
Capture.JPG
Och den är ju mindre än 2kB ...såå...det går att kompilera detta med den "fria" Mikro-C kompilatorn :clap:
You do not have the required permissions to view the files attached to this post.
________________________________________________________________________
   // Sonny //              ( If assembler looks blurry....try 2 C# ;)

Extreeem
1 star
1 star
Posts: 13
Joined: Tue 09 Nov 2010, 21:51

Re: Egen Nexa Sändare/Mottagare/Sniffer :)

Post by Extreeem » Thu 06 Jan 2011, 18:11

Oh, vilken härlig utläggning, tack för kopplingsschemat!

Jag har faktiskt lekt lite med PIC-programmering tidigare, dock bara på en väldigt grundläggande nivå. Har en PicKit2 liggandes hemma :)

Detta är den enkla sändaren du byggt va? Den går inte att ansluta till datorn på något vis? Du använder en tryckknapp för att sända signalen? Vilka ben kopplar du knappen på på PIC:en?

Jag vet att det finns PIC:ar med USB-stöd, t.ex. PIC2550 (om jag inte minns fel), skulle det med en sådan (och sändarmodulen från kjell) gå att bygga en egen väldigt basic tellstick?

En annan sak som jag gärna hade velat mecka ihop är en fjärrkontroll (med tryckknappar) med fasta dimmersteg (till de självlärande dimmrarna som stöder absolutdimmning). Denna skulle sedan placeras på väggen för att styra t.ex. takbelysningen. Jag tänker mig typ tre eller fyra olika dim-nivåer, dvs. tre-fyra fysiska knappar. Vad tror du om detta, det borde väl inte vara några konstigheter om man bara får tag i rätt kommandon?

Skall iväg en vecka nu, så hinner tyvärr inte börja bygga på något precis just nu, men när jag kommer tillbaks, då smäller det!

Nu blev det mycket frågor, förhoppningsvis kan du besvara dem alla :)

Korak
3 stars
3 stars
Posts: 69
Joined: Mon 22 Nov 2010, 22:26
Location: Luleå

Re: Egen Nexa Sändare/Mottagare/Sniffer :)

Post by Korak » Fri 07 Jan 2011, 12:53

PicKit2 borde väl funka alldeles utomförträffligt... :)
Denna enkla sändare har ingen hw UART, men det är egentligen flashminnets storlek som mest hindrar att man skulle kunna ansluta den till en dator, man kan nämligen skriva en "mjukvaru uart" som härmar funktionen av en uart. Denna tar dock plats i minnet och även om jag inte på rak arm kan tala om HUR stor den blir så kommer det att bli ett problem med endast 1k flashminne :?
Väljer man däremot en processor med tillräckligt med minne fungerar det bra :)

Man kan använda alla lediga "portar" på denna lilla processor att koppla till brytare å annat, så den skulle kunna funka till ditt "dim" projekt om flashminnet räcker förstås.
2550 kan man använda, ja ...men.... det blir lite bök med USB-kod och processorinställningar å så... , kanske inte det lättaste att börja sin bana med.
Rekommenderar att man börjar lite enklare, typ med UART och en RS232 konverter till serieporten på datorn, eller en USB-serie konverter om du hellre vill ha USB.
Min tes är att minimera allt trubbelskapande "runt i kring" så man kan koncentrera sig på att lösa sitt problem istället för att jävlas med allt annat.......typ KISS metoden (KeepItSimpleStupid) ;)

Dimma med absolutnivåer är rent tekniskt inga problem, men man måste känna till hur protokollet ser ut för detta, och det är nåt jag inte har hittat på nätet än :o
Men det skall nog gå att fixa om man sätter manken till...
________________________________________________________________________
   // Sonny //              ( If assembler looks blurry....try 2 C# ;)

Korak
3 stars
3 stars
Posts: 69
Joined: Mon 22 Nov 2010, 22:26
Location: Luleå

Re: Egen Nexa Sändare/Mottagare/Sniffer :)

Post by Korak » Sat 08 Jan 2011, 12:53

Nu finns det en repeater i systemet åxå 8-)

Håller på att testa lite olika sätt att repetera på, det är nämligen inte så enkelt som det låter :shock: när man tänker på hur signalerna färdas å så ...

Om man har flera repeaters så kanske eventuellt måste man införa nån slags "blocking" eller "TTL" så att inte den repeterade signalen "studsar" i evigheter mellan repeatrarna ....
Har testa med att repeatrarna först sänder med sitt eget "id" så att repeater-2 ser att repeater-1 sänder och blockas således en stund så att inte nästföljande sändning repeteras..hmmm....kanske inte en helt optimal lösning.

Idealet vore om det fanns en "bit" i orginalprotokollet som betydde att en repeater sänt meddelandet...det skulle vara kanon :?

Nåja, det funkar bra med EN repeater iallafall...och fler åxå om dom inte "hör" varann ...

(Om ni undrar vad det är för hårdvara jag kör på så är det en produkt som vi på jobbet konstruerat till ett annat liknande användningsområde, den har då en PIC18LF2420 processor samt en RFM TR1001/868MHz transciever samt ett RS485 gränssnitt, och i vissa länder där 868MHz inte får användas har den en RFM 3000/434MHz radio, det är just denna 434MHz version jag använder + lite små modd förståss ;) , jag har några "döda" exemplar av dessa som jag fixat upp och använder som NEXA sändare )

IMG_1630_2.jpg
You do not have the required permissions to view the files attached to this post.
________________________________________________________________________
   // Sonny //              ( If assembler looks blurry....try 2 C# ;)

Post Reply

Who is online

Users browsing this forum: No registered users and 19 guests