Show Posts
Pages: 1 [2] 3
16  International / Generale / traduttore protocollo trasmissione radio proprietario on: April 13, 2012, 08:17:12 am
Sempre più difficile!  smiley
Per il mio sempre più folle progetto dovrei arrivare ad utilizzare una ricevente RC standard da modellismo (es. futaba) al posto di quella originale che comanda la centralina di un carro armato RC cinese. Il guaio è che il sistema del sol levante utilizza un protocollo di comunicazione PPM che non c'entra niente con quello standard... (sigh)
In pratica la Arduino mi dovrebbe fare da interprete tra la ricevente standard (al posto di quella "originale") e la centralina cinese.
In allegato metto un documento che descrive questo protocollo proprietario.
La comunicazione tra la ricevente e la centralina cinese è un singolo cavetto che fa da ppmsum.
La trasmittente è una (pseudo) 4 canali con 3 tasti per funzioni particolari.
Da quello che ho capito c'è un ciclo unico di 25ms che contiene i bit delle varie funzioni del carro. La domanda vera è come posso ricreare questo ciclo con una Arduino?? E come posso, in fase di studio, "leggere" il comando della ricevente cinese per avere la certezza dei comandi inviati in origine??

grazie a tutti per l'aiuto !!!
17  International / Software / Re: Output in PPMsum, è possibile? on: April 11, 2012, 07:23:45 am
Tutto chiaro! Grazie Astrobeed!
18  International / Software / Output in PPMsum, è possibile? on: April 11, 2012, 04:52:25 am
Ciao a tutti,

per il mio progetto avrei bisogno di un output in PPMsum a 4 canali: con arduino leggo i 4 canali di una ricevente RC e li dovrei replicare (con o senza modifiche al valore dei singoli canali a seconda della situazione) in un unico output in PPMsum. Come si può realizzare l'output in PPMsum?
grazie a tutti per l'aiuto.
19  International / Generale / Re: Aiuto con decodifica IR on: January 31, 2012, 06:24:16 am
Ciao Shine,

si l'avevo visto nei commenti e ho già scaricato la libreria di Ken con il protocollo panasonic implementato. Appena posso farò le prove con quella versione e "dovrei" venirne finalmente a capo.
grazie ancora a tutti.
20  International / Generale / Re: Aiuto con decodifica IR on: January 31, 2012, 03:13:31 am
Eureka!  smiley
Ho scoperto che il mio IR da decodificare è un panasonic*! Ora devo "solo" implementare il protocollo nella libreria di Ken..
Grazie a tutti per il supporto.

* la scoperta è avvenuta al di fuori del mondo arduino. Diciamo che la stanchezza unita ad una grande dose di fortuna assieme al fatto di avere televisore e dvd della panasonic ha fatto il resto.  smiley-cool
21  International / Generale / Re: Aiuto con decodifica IR on: January 30, 2012, 04:00:52 pm
Ho rifatto le prove con lo sketch di Pablos (che suppongo sia una derivazione dell'IRrecvdump) dove ho "sparato" l'impulso da decifrare e a seguire quello di un telecomando decodificato (NEC)
il risultato è questo:
Code:
0
Could not decode message
Raw (6): -7900 3050 -2950 4600 -150 1300

FD906F
Decoded NEC: FD906F (32 bits)
Raw (68): -6230 9250 -4350 750 -350 750 -400 750 -350 750 -400 700 -450 700 -400 750 -400 700 -450 700 -1500 700 -1550 750 -1550 700 -1550 700 -1550 700 -1550 700 -400 750 -1550 700 -1550 650 -500 650 -450 700 -1550 700 -450 700 -450 650 -450 650 -500 650 -450 650 -1600 700 -1600 650 -450 650 -1650 650 -1550 650 -1600 700 -1600 650

Credo che il raw del non codificato non sia completo.
Gli esperimenti e le ricerche continuano....
22  International / Generale / Re: Aiuto con decodifica IR on: January 30, 2012, 07:41:06 am
Ciao Pablos,

il risultato che ho postato l'ho ottenuto con lo sketch di ladydada.
Con quello di Ken non mi buttava fuori niente con quel comando IR, mentre con un altro telecomando si percui dovrebbe essere a posto. La mia ipotesi era che quel protocollo fosse talmente fuori standard da non riconoscerlo proprio.
Appena mi è possibile faccio altri esperimenti.
grazie
23  International / Generale / Re: Aiuto con decodifica IR on: January 30, 2012, 05:52:21 am
Grazie Pitusso!
Vi farò sapere se riesco a venirne a capo.
24  International / Generale / Re: Aiuto con decodifica IR on: January 30, 2012, 05:16:47 am
Purtroppo ci ho già provato con la libreria di Ken Shirriff ma non mi riconosce il protocollo e non mi riceve niente. Se riuscissi almeno a scoprire il protocollo potrei integrarlo nella libreria ma non ci sono riuscito.  smiley-confuse
25  International / Generale / Aiuto con decodifica IR on: January 30, 2012, 04:19:45 am
Ciao a tutti,

per il mio progetto sto cercando di carpire e replicare un comando IR di cui non conosco il protocollo.
Per farlo sto utilizzando gli sketch di ladydada di questo indirizzo http://www.ladyada.net/learn/sensors/ir.html e precisamente questo
Code:
/* Raw IR decoder sketch!
 
 This sketch/program uses the Arduno and a PNA4602 to
 decode IR received. This can be used to make a IR receiver
 (by looking for a particular code)
 or transmitter (by pulsing an IR LED at ~38KHz for the
 durations detected
 
 Code is public domain, check out www.ladyada.net and adafruit.com
 for more tutorials!
 */
 
// We need to use the 'raw' pin reading methods
// because timing is very important here and the digitalRead()
// procedure is slower!
//uint8_t IRpin = 2;
// Digital pin #2 is the same as Pin D2 see
// http://arduino.cc/en/Hacking/PinMapping168 for the 'raw' pin mapping
#define IRpin_PIN      PIND
#define IRpin          2
 
// the maximum pulse we'll listen for - 65 milliseconds is a long time
#define MAXPULSE 65000
 
// what our timing resolution should be, larger is better
// as its more 'precise' - but too large and you wont get
// accurate timing
#define RESOLUTION 20
 
// we will store up to 100 pulse pairs (this is -a lot-)
uint16_t pulses[100][2];  // pair is high and low pulse
uint8_t currentpulse = 0; // index for pulses we're storing
 
void setup(void) {
  Serial.begin(9600);
  Serial.println("Ready to decode IR!");
}
 
void loop(void) {
  uint16_t highpulse, lowpulse;  // temporary storage timing
  highpulse = lowpulse = 0; // start out with no pulse length
 
 
//  while (digitalRead(IRpin)) { // this is too slow!
    while (IRpin_PIN & (1 << IRpin)) {
     // pin is still HIGH
 
     // count off another few microseconds
     highpulse++;
     delayMicroseconds(RESOLUTION);
 
     // If the pulse is too long, we 'timed out' - either nothing
     // was received or the code is finished, so print what
     // we've grabbed so far, and then reset
     if ((highpulse >= MAXPULSE) && (currentpulse != 0)) {
       printpulses();
       currentpulse=0;
       return;
     }
  }
  // we didn't time out so lets stash the reading
  pulses[currentpulse][0] = highpulse;
 
  // same as above
  while (! (IRpin_PIN & _BV(IRpin))) {
     // pin is still LOW
     lowpulse++;
     delayMicroseconds(RESOLUTION);
     if ((lowpulse >= MAXPULSE)  && (currentpulse != 0)) {
       printpulses();
       currentpulse=0;
       return;
     }
  }
  pulses[currentpulse][1] = lowpulse;
 
  // we read one high-low pulse successfully, continue!
  currentpulse++;
}
 
void printpulses(void) {
  Serial.println("\n\r\n\rReceived: \n\rOFF \tON");
  for (uint8_t i = 0; i < currentpulse; i++) {
    Serial.print(pulses[i][0] * RESOLUTION, DEC);
    Serial.print(" usec, ");
    Serial.print(pulses[i][1] * RESOLUTION, DEC);
    Serial.println(" usec");
  }
}
.

Il risultato che ottengo è questo:
Code:
Received:

OFF    ON
35824 usec, 3240 usec
2640 usec, 6080 usec
7660 usec, 3120 usec
2780 usec, 6000 usec
7720 usec, 3080 usec
2840 usec, 5940 usec
7800 usec, 3020 usec
2860 usec, 5920 usec
7840 usec, 2980 usec
2880 usec, 4360 usec
80 usec, 1480 usec
7820 usec, 2980 usec
2900 usec, 5920 usec
7820 usec, 2960 usec
2940 usec, 5900 usec
7840 usec, 2920 usec
2960 usec, 5900 usec
7820 usec, 2940 usec
2960 usec, 5880 usec
7840 usec, 2940 usec
2960 usec, 5880 usec
7840 usec, 2920 usec
2960 usec, 5900 usec
7820 usec, 2960 usec
2960 usec, 5860 usec
7840 usec, 2960 usec
2960 usec, 5860 usec
7840 usec, 2940 usec
2960 usec, 5860 usec
7860 usec, 2940 usec
2960 usec, 5860 usec
7860 usec, 2920 usec
2960 usec, 5860 usec
7880 usec, 2920 usec
2960 usec, 5860 usec
7880 usec, 2900 usec
2960 usec, 5880 usec
7860 usec, 2920 usec
2960 usec, 5880 usec
7860 usec, 2900 usec
3000 usec, 5840 usec
7880 usec, 2900 usec
2960 usec, 5880 usec
7880 usec, 2900 usec
2960 usec, 5860 usec
7880 usec, 2920 usec
2940 usec, 5900 usec
7860 usec, 2920 usec
2960 usec, 5860 usec
7860 usec, 2920 usec
2960 usec, 5880 usec
7860 usec, 2900 usec
3000 usec, 5840 usec
7880 usec, 2900 usec
2980 usec, 5860 usec
7860 usec, 2920 usec
2980 usec, 5860 usec
7860 usec, 2900 usec
2980 usec, 5860 usec
7880 usec, 2900 usec
2980 usec, 5860 usec
7860 usec, 2920 usec
2980 usec, 5840 usec
7880 usec, 2920 usec
2960 usec, 5860 usec
7860 usec, 2940 usec
2960 usec, 5860 usec
7860 usec, 2940 usec
2940 usec, 5860 usec
7860 usec, 2940 usec
2960 usec, 5860 usec
7860 usec, 2940 usec
2940 usec, 5860 usec
7860 usec, 2940 usec
2960 usec, 5860 usec
7880 usec, 2900 usec
2960 usec, 5880 usec
7880 usec, 2900 usec
2960 usec, 5880 usec
7860 usec, 2900 usec
3000 usec, 5860 usec
7860 usec, 2900 usec
2980 usec, 5860 usec
7860 usec, 2920 usec
2980 usec, 5860 usec
7860 usec, 2920 usec
2980 usec, 5860 usec
7860 usec, 2900 usec
2980 usec, 5860 usec
7860 usec, 2920 usec
2980 usec, 5860 usec
7860 usec, 2920 usec
2960 usec, 5860 usec
7860 usec, 2940 usec
2960 usec, 5860 usec
7860 usec, 2920 usec
2960 usec, 5880 usec
7860 usec, 2920 usec
2960 usec, 5860 usec
7860 usec, 2940 usec
22476 usec, 460 usec
8192 usec, 480 usec
34816 usec, 0 usec
0 usec, 0 usec
0 usec, 0 usec
0 usec, 0 usec
0 usec, 0 usec
0 usec, 0 usec
0 usec, 0 usec
0 usec, 0 usec
0 usec, 0 usec
0 usec, 0 usec
0 usec, 0 usec
0 usec, 0 usec
0 usec, 0 usec
0 usec, 0 usec
0 usec, 0 usec
0 usec, 0 usec
0 usec, 0 usec
0 usec, 50148 usec
51460 usec, 33728 usec
1316 usec, 50148 usec
33648 usec, 9856 usec
60668 usec, 30652 usec
30336 usec, 10336 usec
33848 usec, 33648 usec
65532 usec, 5176 usec
33888 usec, 1316 usec
50148 usec, 51460 usec
1316 usec, 50148 usec
51460 usec, 65492 usec
15316 usec, 9856 usec
60668 usec, 15416 usec
33888 usec, 1316 usec
50148 usec, 33648 usec
10196 usec, 100 usec
320 usec, 7740 usec
0 usec, 20000 usec
0 usec, 0 usec
0 usec, 16200 usec
17560 usec, 3940 usec
3920 usec, 3840 usec
3860 usec, 3960 usec
15440 usec, 25740 usec
20 usec, 15440 usec
25740 usec, 60436 usec
65196 usec, 1748 usec
5176 usec, 33780 usec
55256 usec, 5840 usec
7880 usec, 2920 usec
2960 usec, 5860 usec
int IRsignal[] = {
// ON, OFF (in 10's of microseconds)
   324, 264,
   608, 766,
   312, 278,
   600, 772,
   308, 284,
   594, 780,
   302, 286,
   592, 784,
   298, 288,
   436, 8,
   148, 782,
   298, 290,
   592, 782,
   296, 294,
   590, 784,
   292, 296,
   590, 782,
   294, 296,
   588, 784,
   294, 296,
   588, 784,
   292, 296,
   590, 782,
   296, 296,
   586, 784,
   296, 296,
   586, 784,
   294, 296,
   586, 786,
   294, 296,
   586, 786,
   292, 296,
   586, 788,
   292, 296,
   586, 788,
   290, 296,
   588, 786,
   292, 296,
   588, 786,
   290, 300,
   584, 788,
   290, 296,
   588, 788,
   290, 296,
   586, 788,
   292, 294,
   590, 786,
   292, 296,
   586, 786,
   292, 296,
   588, 786,
   290, 300,
   584, 788,
   290, 298,
   586, 786,
   292, 298,
   586, 786,
   290, 298,
   586, 788,
   290, 298,
   586, 786,
   292, 298,
   584, 788,
   292, 296,
   586, 786,
   294, 296,
   586, 786,
   294, 294,
   586, 786,
   294, 296,
   586, 786,
   294, 294,
   586, 786,
   294, 296,
   586, 788,
   290, 296,
   588, 788,
   290, 296,
   588, 786,
   290, 300,
   586, 786,
   290, 298,
   586, 786,
   292, 298,
   586, 786,
   292, 298,
   586, 786,
   290, 298,
   586, 786,
   292, 298,
   586, 786,
   292, 296,
   586, 786,
   294, 296,
   586, 786,
   292, 296,
   588, 786,
   292, 296,
   586, 786,
   294, 404,
   64, 2355,
   68, 5836,
   0, 0,
   0, 0,
   0, 0,
   0, 0,
   0, 0,
   0, 0,
   0, 0,
   0, 0,
   0, 0,
   0, 0,
   0, 0,
   0, 0,
   0, 0,
   0, 0,
   0, 0,
   0, 0,
   0, 0,
   4979, 190,
   4628, 2963,
   4979, 190,
   4628, 2963,
   190, 4628,
   3067, 2963,
   473, 6047,
   2979, 5146,
   6469, 1529,
   2977, 6003,
   1547, 3364,
   6553, 517,
   190, 4628,
   1029, 3,
   3364, 5533,
   2977, 5146,
   106, 118,
   774, 0,
   2000, 0,
   0, 0,
   1620, 1756,
   394, 392,
   384, 386,
   396, 1544,
   2574, 2,
   1544, 2574,
   6043, 6519,
   174, 517,
   3378, 5525,
   584, 788,
   292, 296,
   586, 0};

Quello che non mi è chiaro è che valori utilizzare quando vado a replicare il comando con le istruzioni PulseIR e Delaymicrosecond quando mi trovo una sequenza di 0 microsecondi sia in ON che in OFF
0 usec, 0 usec
0 usec, 0 usec
0 usec, 0 usec
0 usec, 0 usec
0 usec, 0 usec
0 usec, 0 usec
0 usec, 0 usec

Grazie fin da ora per l'aiuto.
26  International / Generale / Performance Arduino, sono abbastanza per il mio progetto? on: January 25, 2012, 08:36:21 am
Ciao a tutti,

un piccolo passo dopo l'altro sto capendo sempre più cose sul mondo arduino e sono estremamente felice di tutto ciò. Mentre avanzo un pezzetto dopo l'altro nel mio progetto ora ho abbastanza chiaro quello che devo fare e come farlo.
La domanda che mi si pone ora è relativa alle prestazioni della Arduino in se ossia se sono sufficienti per il mio progetto che vado qui a riassumere.
Il mio progetto è quello di creare una unità di controllo per un carro armato radiocomandato comandato tramite radio comando da modellismo con suono motore ed effetti e sistema di battaglia ad Infrarosso.
Gli ingredienti sono:
Arduino Mega con collegata ricevente a 4 canali (potrebbero bastarne 3 ma non è sicuro)
wave shield (per loop del suono motore e suoni di sparo e colpo ricevuto)
dual ESC per il controllo dei motori dei cingoli
due L293 per il controllo dei motorini di "servizio" (rotazione torretta, alzo del cannone e rinculo del cannone)
un emettitore IR per emettere un impulso quando il carro "spara"
un ricevitore IR per ricevere i colpi

Per la lettura dei canali radio pensavo di utilizzare la pulsein.
La mega ce la può fare a reggere un simile carico? Dando ovviamente per scontato che il codice sia il più ottimizzato possibile?
grazie in aticipo per l'aiuto

27  International / Generale / Re: Copyright sugli shield? on: January 20, 2012, 05:25:38 am
C'è scritto che è rilasciato in CC2.5 Attrib/Share-alike, cioè devi ridistribuire il tuo lavoro con la stessa licenza (con i permessi che hai segnalato tu) e dichiarare l'origine dei file originali, attribuendoli al suo autore (Adafruit).

Yes, ci mancherebbe!
grazie
28  International / Generale / Re: Copyright sugli shield? on: January 20, 2012, 05:05:31 am
Guardando sul sito del produttore ladydada nello schema dello shield (http://www.ladyada.net/images/wavshield/v11/wave11schem.png) c'è scritto che è rilasciato in creative commons 2.5 la quale dice in breve che:
Quote
You are free:
to Share — to copy, distribute and transmit the work
to Remix — to adapt the work
to make commercial use of the work

dovrei essere a posto giusto? In ogni caso chiederei la "benedizione" dell'autore ma per arrivare a questo ce ne passa ancora un bel po...
29  International / Generale / Re: Problema con serial monitor e "writestrln(PSTR(\" on: January 20, 2012, 04:54:35 am
che i bit rilevati, messi in sequenza, letti come numeri, e confrontati con la tabella ascii (che trasforma un numero in lettera), corrispondono a valori non rappresentabili (sui 256 carretteri della tabella ascii estesa solo una cinquantina sono visualizzabili)

semplicemente vuol dire che chi ha scritto quei segnali NON ha usato caratteri ascii, ma dei numeri a caso, cosa molto normale.

prova ad osservare quei valori in esadecimale (ovvero il valore numerico senza passare per la tabella ascii), e forse riconoscerai delle sequenze che si ripetono che corrispondo ai comandi

Ciao Lesto (o dovrei chiamarti tutor visto tutti i consigli che mi dai?  smiley )

La stringa di numeri che corrisponde al mio comando l'avevo già individuata, però non mi sarebbe dispiaciuto capire cosa cerca di dirmi quello sketch  smiley-wink
Nelle prove che ho fatto non ho ancora provato a replicare il comando con l'emettitore, appena ho un attimo di tempo lo faccio e vediamo se i problemi sono solo di "linguaggio differente"
30  International / Generale / Copyright sugli shield? on: January 19, 2012, 10:55:56 am
Ciao a tutti,

una domanda di carattere legale/diritti d'autore.
Posto che un domani il mio progetto veda la luce dovrei arrivare ad avere una arduino mega con il waveshield più dei ponti H. L'ideale sarebbe magari farmi un PCB con lo shield dimensionato per la Mega con sopra una "copia" del waveshield e i suoi componenti più la parte che serve ai miei scopi. Così facendo infrangerei qualche copyright?
Posto che la cosa sia fattibile e in linea ipotetica che un domani un amico vede il io progetto e me ne commissiona uno uguale che io mi faccio pagare sarebbe regolare?

 
Pages: 1 [2] 3