Bonjour Thierry,
Tu as avancé sur ton projet ?
Je vais essayer d'envoyer les codes IR à l'entrée trigger du dspiy depuis un raspberry, et par exemple tester si lorsque le raspberry voit que ma freebox est connectée au réseau (via un ping probablement), le dspiy s'allume directement sur le bon preset.
Louis
|
68 messages • Accèder à une page • 1, 2, 3, 4, 5
|
Modérateurs: Modération Forum Installations, Modération Forum DIY, Le Bureau de l’Association HCFR • Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 4 invités
DSPiy + domotiyque
- Misu
- Messages: 284
- Inscription Forum: 04 Nov 2012 16:44
- Localisation: Bordeaux-Poitiers
Tu as avancé sur ton projet ?
Oui, enfin pas vraiment dans le contexte initial.
Je vais faire simple dans un premier temps et réutiliser une carte d’entrées/sorties que j’ai développé pour ma Pick and Place.
Je vais essayer d'envoyer les codes IR à l'entrée trigger du dspiy depuis un raspberry
Très bonne idée, ce sont les codes IR sans la porteuse de 36KHz à envoyer.
- thierryvalk
- Messages: 5617
- Inscription Forum: 08 Mai 2012 9:39
- Localisation: Belgique
D'accord, je serai très intéressé d'en savoir un peu plus quand tu auras terminé !
Ok pour les codes, je pense partir avec la lib LIRC mais je trouve pas de projet similaire à ce que je fais, la plus part des gens qui utilisent la lib l'utilisent en IR, donc je vais devoir encore fouiller un peu
Ok pour les codes, je pense partir avec la lib LIRC mais je trouve pas de projet similaire à ce que je fais, la plus part des gens qui utilisent la lib l'utilisent en IR, donc je vais devoir encore fouiller un peu
- Misu
- Messages: 284
- Inscription Forum: 04 Nov 2012 16:44
- Localisation: Bordeaux-Poitiers
Bonjour,
J'ai récupéré un arduino pour envoyer les codes IR sur le trigger du dspiy. J'ai pas encore choisi le protocole. Est-ce que il y en a un à privilégier ? Je ne sais pas lequel choisir !
J'ai récupéré un arduino pour envoyer les codes IR sur le trigger du dspiy. J'ai pas encore choisi le protocole. Est-ce que il y en a un à privilégier ? Je ne sais pas lequel choisir !
- Misu
- Messages: 284
- Inscription Forum: 04 Nov 2012 16:44
- Localisation: Bordeaux-Poitiers
pour le protocole tout est dispo pareil dans le dspiy. Ton critère de choix dépend peut etre de la télécommande physique que tu utiliseras en parallèle ?
on pourrait imaginer une mini-api pour le dspiy via le triger in et des commandes type telco
plein de choses sont déjà disponibles. A l'usage d'autres peuvent venir, comme par exemple forcer une valeur de volume, changer le contraste de l'écran, etc.
après tu nous fait la télécommande en wifi depuis android avec un arduino+carte wifi esp8266 a 5$
on pourrait imaginer une mini-api pour le dspiy via le triger in et des commandes type telco
plein de choses sont déjà disponibles. A l'usage d'autres peuvent venir, comme par exemple forcer une valeur de volume, changer le contraste de l'écran, etc.
après tu nous fait la télécommande en wifi depuis android avec un arduino+carte wifi esp8266 a 5$
- alkasar
- Messages: 11517
- Inscription Forum: 29 Nov 2005 22:47
- Localisation: Neuf deux
Le but c'est justement de supprimer cette télécommande, mais je voulais savoir s'il y en avait des plus adaptés que d'autres. Sinon à priori je vais partir sur du NEC, ça a l'air assez simple. Je pense avoir une idée pour convertir une adresse + une commande en code NEC assez facilement, pour que chacun puisse en face ce qu'il veut après.
j'était plutôt parti pour de l'ethernet, plus facile à mettre en place je pense, mais sinon c'est à peu près l'idée, sauf que je ne sais absolument rien faire sur android
Je me suis dit que ça permettait d'augmenter le nombre I/O sur le dspiy, parce exemple pour ceux qui voudraient plus de boutons en façade, ou (comme moi) des entrées audio suplémentaires
j'était plutôt parti pour de l'ethernet, plus facile à mettre en place je pense, mais sinon c'est à peu près l'idée, sauf que je ne sais absolument rien faire sur android
Je me suis dit que ça permettait d'augmenter le nombre I/O sur le dspiy, parce exemple pour ceux qui voudraient plus de boutons en façade, ou (comme moi) des entrées audio suplémentaires
- Misu
- Messages: 284
- Inscription Forum: 04 Nov 2012 16:44
- Localisation: Bordeaux-Poitiers
Oui NEC c est ce qui est utilisé en multiDSPiy
- thierryvalk
- Messages: 5617
- Inscription Forum: 08 Mai 2012 9:39
- Localisation: Belgique
Misu a écrit:...sauf que je ne sais absolument rien faire sur android
le plus simple http://appinventor.mit.edu/explore/
plus traditionnel et la référence : android studio
Exemple d'une app android pour piloter les gpios arduino par wifi avec petit machin a 5Euros
https://www.youtube.com/watch?v=li4bN1N6ifA
plein de tutos et de code existe déjà.
- alkasar
- Messages: 11517
- Inscription Forum: 29 Nov 2005 22:47
- Localisation: Neuf deux
Ah oui j'avais oublié appinventor. J'ai déjà eu l'occasion de jouer un peu avec c'est assez simple à prendre en main. Après mon but n'est pas de passer par un smartphone car je trouve ça pas très ergonomique mais ça pourrait être intéressant !
- Misu
- Messages: 284
- Inscription Forum: 04 Nov 2012 16:44
- Localisation: Bordeaux-Poitiers
En passant,
j'avais bataillé qq heures avec appinventor pour faire un VU-mètre à aiguille.
impossible d'avoir un bloc qui donne accès au micro du téléphone !(directement).
faut se taper un programme.
j'avais bataillé qq heures avec appinventor pour faire un VU-mètre à aiguille.
impossible d'avoir un bloc qui donne accès au micro du téléphone !(directement).
faut se taper un programme.
- thierry38efd
- Messages: 1735
- Inscription Forum: 18 Sep 2013 7:36
C'est la grosse limitation de ce genre d'outil de développement.. Mais surprenant qu'il n'y ai rien du tout pour le micro
- Misu
- Messages: 284
- Inscription Forum: 04 Nov 2012 16:44
- Localisation: Bordeaux-Poitiers
Voila ce que j'ai fait rapidement, j'ai pas eu le temps de tester encore. C'est juste pour le principe. On entre une commande à envoyer en décimal, et le programme le "converti" en code NEC. Je ne me suis pas occupé de la partie "adresse" mais c'est exactement le même principe, sauf que l’adresse sera fixe. Je ne connais pas trop le c, j'ai un peu piqué et mélangé ce que j'ai trouvé à droite et à gauche. Les temps de delai seront probablement à réajuster lorsque je ferai un essai et que je mesurerai les durées au scope, il y aura sans doute un écart important. Voila, n'hésitez pas à critiquer.
Louis
- Code: Tout sélectionner
// Decimal to nec converter for arduino
int nec = 13 ; //output is pin 13
int command = 0 ; //command to transfert in nec
void setup() {
pinMode(nec, OUTPUT); } //put pin "nec" as output
void loop() {
int zeros = 8 - String(command,BIN).length(); //convert command in 8-bit
String Com;
for (int i=0; i<zeros; i++) {
Com = Com + "0";
}
Com = Com + String(command,BIN);
digitalWrite(nec,HIGH); //9ms leading pulse burst
delay(9);
digitalWrite(nec,LOW); //4.5ms space
delay(4.5);
//HERE IS FOR THE ADDRESS
for (int j=0; j<8; j++) {
char Bit = Com.charAt(j) ; //8-bit command for the receiving device
if (Bit == 1) // give Bit 1 in nec protocol
{digitalWrite(nec,HIGH);
delay(0.5625);
digitalWrite(nec, LOW);
delay(1.6875);}
else // give Bit 0 in nec protocol
{digitalWrite(nec,HIGH);
delay(0.5625);
digitalWrite(nec, LOW);
delay(0.5625);}}
for (int j=0; j<8; j++) {
char InversedBit = Com.charAt(j) ; // 8-bit inversed command for the receiving device
if (InversedBit == 1) // Bit == 1 --> Inversed Bit == 0
{digitalWrite(nec,HIGH);
delay(0.5625);
digitalWrite(nec, LOW);
delay(0.5625);}
else // Bit == 0 --> Inversed Bit == 1
{digitalWrite(nec,HIGH);
delay(0.5625);
digitalWrite(nec, LOW);
delay(1.6875);}
}
digitalWrite(nec, HIGH);
delay(0.5625);
digitalWrite(nec, LOW);
}
Louis
- Misu
- Messages: 284
- Inscription Forum: 04 Nov 2012 16:44
- Localisation: Bordeaux-Poitiers
C’est pas mauvais, mais un peu répétitif.
Tu pourrais travailler sur 16 bits avec les 8 derniers inversés par un XOR.
Et par la même occasion rajouter l’adresse.
Par contre en regardant mon code, je pense que j’ai raconté une grosse, mais une énorme bêtise.
Le multidspiy semble fonctionner sous le code Sony et non le NEC.
La mémoire me joue des tours, je vais me cacher.
Voici mon code, pas vraiment le même style vu que fonctionne par interrupt via un timer.
La variable unsigned short d comprend l’adresse sur les 8 bits de poids forts suivis des 7 bits datas.
on appelle la fonction multidspyout avec cette donnée et tout le reste suit en interrupt.
Tu pourrais travailler sur 16 bits avec les 8 derniers inversés par un XOR.
Et par la même occasion rajouter l’adresse.
Par contre en regardant mon code, je pense que j’ai raconté une grosse, mais une énorme bêtise.
Le multidspiy semble fonctionner sous le code Sony et non le NEC.
La mémoire me joue des tours, je vais me cacher.
Voici mon code, pas vraiment le même style vu que fonctionne par interrupt via un timer.
La variable unsigned short d comprend l’adresse sur les 8 bits de poids forts suivis des 7 bits datas.
on appelle la fonction multidspyout avec cette donnée et tout le reste suit en interrupt.
- Code: Tout sélectionner
//multidspiy
void TIMER32_0_IRQHandler(void)
{
if ( LPC_TMR32B0->IR & 0x1 )
{
LPC_TMR32B0->IR = 1; // clear interrupt flag
LPC_TMR32B0->TCR = 0x02; /* reset timer */
if(nbitmultidspiy==0){LPC_TMR32B0->TCR = 0x0;return;} //stop timer
if(nbitmultidspiy==1){nbitmultidspiy=0;GPIOSetValue(Port_ISO_OUT,Pin_ISO_OUT,0);LPC_TMR32B0 ->MR0 = 40000; LPC_TMR32B0->TCR = 0x01;return;}//espace entre 2 frames
if((nbitmultidspiy&1)){nbitmultidspiy--;GPIOSetValue(Port_ISO_OUT,Pin_ISO_OUT,0);LPC_TMR32B0 ->MR0 = 600; LPC_TMR32B0->TCR = 0x01;return;} //600µS off
GPIOSetValue(Port_ISO_OUT,Pin_ISO_OUT,1);
if(datamultidspiy&(1)){LPC_TMR32B0 ->MR0 = 1200;}//1 1200µS On
else {LPC_TMR32B0 ->MR0 = 600;}//0 600µS On
nbitmultidspiy--;
datamultidspiy=datamultidspiy>>1;
LPC_TMR32B0->TCR = 0x01;
}
}
void multidspyout(unsigned short d)
{
if(D01_ISO_OUT!=5)return;
while(nbitmultidspiy!=0);//attend fin transmition
while(LPC_TMR32B0->TCR != 0x0);
datamultidspiy=d;
nbitmultidspiy=25;GPIOSetValue(Port_ISO_OUT,Pin_ISO_OUT,1);
LPC_TMR32B0 ->MR0 = 2400; //start IR sony
LPC_TMR32B0->TCR = 0x02;//reset timer
LPC_TMR32B0->TCR = 0x01; //start timer
}
- thierryvalk
- Messages: 5617
- Inscription Forum: 08 Mai 2012 9:39
- Localisation: Belgique
En fait j'étais persuadé que le code NEC c'était le code de sony.. Mais en fait au final ça m'arrange parce que le code sony ne demande pas de reversed adress/commande donc ça va simplifier. Je pourrai rester en NEC, mais je préfère que tout le système utilise le même protocole, et en plus si je veux m'en servir comme master ça sera d'autant plus simple. Merci pour ton code et tes conseils, je regarde tout ça dès que j'ai le temps. D'ailleurs je viens de voir une bêtise dans mon code, il me semble que j'envoie le MSB en premier, il faut juste que j'inverse tout ça.
Louis
Louis
- Misu
- Messages: 284
- Inscription Forum: 04 Nov 2012 16:44
- Localisation: Bordeaux-Poitiers
Hop, voila en code sony, avec l'adresse en plus et les bits dans le bon ordre. Je pourrai pas tester tout de suite car je déménage lundi, mais j'espère faire ça assez rapidement. Si quelqu'un veut tester, qu'il n'hésite pas, ça devrait marcher sans soucis, tout sort sur le pin 13 de l'arduino. Faudra juste réajuster les durées des delays.
- Code: Tout sélectionner
// Decimal to sony converter for arduino
int address = 5 ;
int out = 13 ; //output is pin 13
int command = 10 ; //command to transfert in sony
void setup() {
pinMode(out, OUTPUT); } //put pin "out" as output
void loop() {
int zeros = 7 - String(command,BIN).length(); //convert command in 7-bit
String Com;
for (int i=0; i<zeros; i++) {
Com = Com + "0";
}
Com = Com + String(command,BIN);
zeros = 5 - String(address,BIN).length(); // convert address in 5-BIT
String Address ;
for (int u=0 ; u<zeros; u++) {
Address = Address +"0" ;
}
Address = Address + String(address,BIN);
String ComAddress = Address + Com ; // ComAddress = 5 bit address + 7 bit com
digitalWrite(out,HIGH); //2.4ms leading pulse burst
delay(2.4);
digitalWrite(out,LOW); //0.6ms space
delay(0.6);
for (int j=11; j>-1; j--) {
char Bit = Com.charAt(j) ; //12-bit command + address for the receiving device
if (Bit == 1) // give Bit 1 in sony protocol
{digitalWrite(out,HIGH);
delay(1.5);
digitalWrite(out, LOW);
delay(0.6);}
else // give Bit 0 in sony protocol
{digitalWrite(out,HIGH);
delay(0.6);
digitalWrite(out, LOW);
delay(0.6);}}
}
- Misu
- Messages: 284
- Inscription Forum: 04 Nov 2012 16:44
- Localisation: Bordeaux-Poitiers
|
68 messages
• Page 4 sur 5 • 1, 2, 3, 4, 5
Retourner vers Filtrage actif, Equalisation et Processeurs
|