Pages: 1 [2]   Go Down
Author Topic: Moduli 433mhz  (Read 4294 times)
0 Members and 1 Guest are viewing this topic.
Dueville (VI)
Offline Offline
Edison Member
*
Karma: 28
Posts: 1770
http://cesarecacitti.wordpress.com/
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Per trasmettere basta fare uno XOR col clock del segnale..
Per ricevere il codice diventa un pò più complesso.. ma non impossibile da scrivere, in una mezz'ora dovresti farcela

Ciao
ho paura che per un ragazzo di 13 anni quella mezz'ora diventi 7 giorni.
Comunque, non c'è nessun chip che si collega via seriale ad arduino e ci pensa lui alla modulazione?
xbee o nrf24l01+ hanno una librerie dedicata  smiley-mr-green
gli nrf24l04+ ce gli ho già, gli xbee non mi piacciono: troppo costosi.

Vorrei semplicemente usare i modulini che ho già, non è che eseste un chip che codifica e decodifica i dati x mandarli al modulino?
Logged

Il Vero Programmatore non ha bisogno di manuali sull'assembler, sono
  sufficienti i data sheet dei microprocessori.

Offline Offline
Full Member
***
Karma: 4
Posts: 219
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@cece
visto che non demordi quello che posso fare per aiutarti è allegarti un semplicissimo stralcio di codice C che realizza l'algoritmo.
il codice Encode converte in manch un byte, mentre l'encode riporta il  codice in un byte....

la parte encoder manchester:
Code:
void EncodeData(BYTE txbyte)
{
int i,j,b,me; //me=manchester encode int
b = txbyte;

for (i=0; i<2; i++) {
me = 0; // txbyte codificato manchester
for (j=0 ; j<4; j++) {
me >>=2;
if (bit_test(b,0) )
me |= 0b01000000; // 1->0
else
me |= 0b10000000; // 0->1
b >>=1;
}
putc(me);
}
}

questa è la parte decoder manchester:
Code:
BYTE DecodeData(BYTE encoded)
{
BYTE i,dec,enc,pattern;
enc = encoded;

if (enc == 0xf0) // start/end condition encountered
return 0xf0;
dec = 0;
for (i=0; i<4; i++) {
dec >>=1;
pattern = enc & 0b11;
if (pattern == 0b01) // 1
bit_set(dec,3);
else if (pattern == 0b10)
bit_clear(dec,3); // 0
else
return 0xff; // codice illegale
enc >>=2;
}
return dec;
}

esistono codici che ho scritto in altri linguaggi ..... ma questo è il più semplice che potresti utilizzare per la tua applicazione.
ciao
« Last Edit: September 14, 2012, 10:33:35 am by cyclone » Logged

Dueville (VI)
Offline Offline
Edison Member
*
Karma: 28
Posts: 1770
http://cesarecacitti.wordpress.com/
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

@cece
visto che non demordi quello che posso fare per aiutarti è allegarti un semplicissimo stralcio di codice C che realizza l'algoritmo.
il codice Encode converte in manch un byte, mentre l'encode riporta il  codice in un byte....

la parte encoder manchester:
Code:
void EncodeData(BYTE txbyte)
{
int i,j,b,me; //me=manchester encode int
b = txbyte;

for (i=0; i<2; i++) {
me = 0; // txbyte codificato manchester
for (j=0 ; j<4; j++) {
me >>=2;
if (bit_test(b,0) )
me |= 0b01000000; // 1->0
else
me |= 0b10000000; // 0->1
b >>=1;
}
putc(me);
}
}

questa è la parte decoder manchester:
Code:
BYTE DecodeData(BYTE encoded)
{
BYTE i,dec,enc,pattern;
enc = encoded;

if (enc == 0xf0) // start/end condition encountered
return 0xf0;
dec = 0;
for (i=0; i<4; i++) {
dec >>=1;
pattern = enc & 0b11;
if (pattern == 0b01) // 1
bit_set(dec,3);
else if (pattern == 0b10)
bit_clear(dec,3); // 0
else
return 0xff; // codice illegale
enc >>=2;
}
return dec;
}

esistono codici che ho scritto in altri linguaggi ..... ma questo è il più semplice che potresti utilizzare per la tua applicazione.
ciao

cyclone, di dove sei, che ti devo proprio offrire una pizza?
Logged

Il Vero Programmatore non ha bisogno di manuali sull'assembler, sono
  sufficienti i data sheet dei microprocessori.

Dueville (VI)
Offline Offline
Edison Member
*
Karma: 28
Posts: 1770
http://cesarecacitti.wordpress.com/
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

scusa, cyclone ma non riesco a compilare  smiley-confuse
errore dell' encoder con l'ide 0022:
Quote









sketch_sep14a.cpp:18:9: error: macro "putc" requires 2 arguments, but only 1 given
sketch_sep14a:-1: error: variable or field 'EncodeData' declared void
sketch_sep14a:-1: error: expected `)' before 'txbyte'
sketch_sep14a:0: error: variable or field 'EncodeData' declared void
sketch_sep14a:0: error: expected `)' before 'txbyte'
Logged

Il Vero Programmatore non ha bisogno di manuali sull'assembler, sono
  sufficienti i data sheet dei microprocessori.

Offline Offline
Full Member
***
Karma: 4
Posts: 219
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@cece,
ti ricordi cosa avevi chiesto? se non ricordo male uno stralcio di codice.... io ne ho postati 2  smiley-lol
naturalmente scherzo e capisco le tue difficoltà smiley

il codice che ti ho postato è in formato standard C .... e si tratta del pseudo-codice per mostrarti l'agoritmo di
encode e decode manchester.... non puoi prenderlo e compilarlo senza adattarlo al tuo SV.

Hai capito come funziona?
Se SI allora prova a riadattarlo.... se è no, devi trovare altre soluzioni o scopiazzare dalla rete.


Logged

Dueville (VI)
Offline Offline
Edison Member
*
Karma: 28
Posts: 1770
http://cesarecacitti.wordpress.com/
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

@cece,
ti ricordi cosa avevi chiesto? se non ricordo male uno stralcio di codice.... io ne ho postati 2  smiley-lol
naturalmente scherzo e capisco le tue difficoltà smiley

il codice che ti ho postato è in formato standard C .... e si tratta del pseudo-codice per mostrarti l'agoritmo di
encode e decode manchester.... non puoi prenderlo e compilarlo senza adattarlo al tuo SV.

Hai capito come funziona?
Se SI allora prova a riadattarlo.... se è no, devi trovare altre soluzioni o scopiazzare dalla rete.



ok, allora scarico un compilatore x C standard, compilo il tutto e carico l'hex sull' atmega col pickit2 smiley-grin
Logged

Il Vero Programmatore non ha bisogno di manuali sull'assembler, sono
  sufficienti i data sheet dei microprocessori.

Parma
Offline Offline
Edison Member
*
Karma: 21
Posts: 2421
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ma non ti conviene cercare di capire il codice? Impari qualcosa e ne trai sicuramente più soddisfazione che stare a perdere tempo con compilatori C magici..
Logged

Dueville (VI)
Offline Offline
Edison Member
*
Karma: 28
Posts: 1770
http://cesarecacitti.wordpress.com/
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ma non ti conviene cercare di capire il codice? Impari qualcosa e ne trai sicuramente più soddisfazione che stare a perdere tempo con compilatori C magici..
eh si, scherzavo, quando ho dempo do un occhio al codice (e ringrazio ancora cyclone).
Se non ci rieco invito harry potter a cena, che ieri sera ha fatto miracoli smiley-grin
Logged

Il Vero Programmatore non ha bisogno di manuali sull'assembler, sono
  sufficienti i data sheet dei microprocessori.

Dueville (VI)
Offline Offline
Edison Member
*
Karma: 28
Posts: 1770
http://cesarecacitti.wordpress.com/
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

oggi ho trovati questa libreria: https://github.com/mchr3k/arduino-libs-manchester
non ci sono esempi e quindi non capisco bene come usarla, qualcuno mi aiuta?
Logged

Il Vero Programmatore non ha bisogno di manuali sull'assembler, sono
  sufficienti i data sheet dei microprocessori.

Teramo
Offline Offline
Jr. Member
**
Karma: 0
Posts: 76
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

un "esempio" lo trovi in basso, basta scorrere la pagina smiley-wink
Logged

Dueville (VI)
Offline Offline
Edison Member
*
Karma: 28
Posts: 1770
http://cesarecacitti.wordpress.com/
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

un "esempio" lo trovi in basso, basta scorrere la pagina smiley-wink
Grazie, ma l'avevo già visto, il casino è mettere insieme tutto
Logged

Il Vero Programmatore non ha bisogno di manuali sull'assembler, sono
  sufficienti i data sheet dei microprocessori.

Offline Offline
Newbie
*
Karma: 0
Posts: 1
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao,
anch'io recentemente ho avuto a che fare con questi moduli.
Per il test che ho condotto, ho usato oltre all'Arduino (per ricevere) anche un secondo Atmega328 in standalone (in trasmissione).
Ho utilizzato la libreria VirtualWire con i seguenti codici:

<...>

Vedi se riesci a far funzionare il tutto.

Un saluto,
Tredipunta.

Pensate sia possibile utilizzare questa libreria con un attiny85 ?
Se provo a selezionarlo come destinazione, anche eliminando i riferimenti alla seriale, ho errori di compilazione:
C:\Program Files (x86)\arduino-1.0.1\libraries\VirtualWire\VirtualWire.cpp: In function 'void vw_setup(uint16_t)':
C:\Program Files (x86)\arduino-1.0.1\libraries\VirtualWire\VirtualWire.cpp:263: error: 'TCCR1A' was not declared in this scope
C:\Program Files (x86)\arduino-1.0.1\libraries\VirtualWire\VirtualWire.cpp:264: error: 'TCCR1B' was not declared in this scope
C:\Program Files (x86)\arduino-1.0.1\libraries\VirtualWire\VirtualWire.cpp:264: error: 'WGM12' was not declared in this scope


stranamente con un attiny84 invece sembra ok

Anche io volevo utlizzare questi moduletti per dei sensori remoti di temperatura e volevo stare compatto ...
Logged

_____
MazE

Pages: 1 [2]   Go Up
Jump to: