J-C a écrit:Ok, les modules X-Bee et le protocole ZigBee sont bien tentant... mais très cher je trouve.
André a écrit:Juste une remarque sur le joystick : moi je préfèrerais des boutons rotatifs et repérés qui permettraient de connaître ( à peu près... ) l'orientation de la nacelle et son inclinaison sans avoir besoin d'une paire de jumelles ( mais c'est sans doute beaucoup demander... ).
André a écrit:Juste une remarque sur le joystick : moi je préfèrerais des boutons rotatifs et repérés qui permettraient de connaître ( à peu près... ) l'orientation de la nacelle et son inclinaison sans avoir besoin d'une paire de jumelles ( mais c'est sans doute beaucoup demander... ).
Très intéressant en tous cas
alpaph a écrit:J'ai fait un petit cahier des charges sur mon site (l'ensemble du projet est dans une rubrique ad hoc).
alpaph a écrit:Mon idée est donc de pouvoir commander, depuis une petite télécommande, la position de servos et aussi de récupérer des infos de la nacelle (message reçu, liaison établie (pour le passage automatique en autoKAP), ...). J'ai fait un petit cahier des charges sur mon site (l'ensemble du projet est dans une rubrique ad hoc). J'ai aussi réfléchi à une messagerie très simple entre l'émetteur et la nacelle.
alpaph a écrit:Pour ma part, je travaille sur une liaison entre deux Arduino via des modules Xbee 2.4 Ghz.
alpaph a écrit:J'ai aussi réalisé les programmes d'émission de trames et de décodage des trames reçues (en espérant avoir couvert la plupart des cas d'erreur).
alpaph a écrit:Dans l'attente de mon matériel, j'essaie de contrôler un encodeur incrémental (c'est ce que je voudrais utiliser à la place d'un joystick ou d'un manche pour contrôler les servos). C'est pas encore fait mais la solution n'est pas loin.
J-C a écrit:Moi aussi j'ai renoncé à la radio commande RC car trop volumineuse, encombrante, ...etc. Et finalement, le signal PPM est assez pénible à exploiter.
J-C a écrit:Après, j'ai regardé chez DIY Drones ceci : http://store.diydrones.com/product_p/br-ppme.htm . En fait c'est une carte avec un chip Atmel (le même que pour l'arduino), mais dédié à l'écoute des voies du récepteur.
J-C a écrit:Et que voit-on ? Un Arduino Duemilanove surmonté d'un module Joystick, accompagné d'un module de transmission sans fil APC220 (434 MHz... mais changeable)... Bref une radiocommande de poche.
ormes a écrit:Je profite donc de cette misérable confession pour réitérer l'idée, pour ceux qui ont un système abouti (existant ou à venir), d'un petit pdf (ou autre format) pour les nuls.
ormes a écrit:Je lorgne depuis la présentation de Maneke, sur le camremote, mais une solution home made offre toujours un petit plus.
André a écrit:moi je préfèrerais des boutons rotatifs et repérés qui permettraient de connaître ( à peu près... ) l'orientation de la nacelle et son inclinaison
fxix a écrit:et bien moi j'ai une nacelle arduino qui fait de l'autokap (programmée avec vos conseils à tous) et avoue attendre que vous trouviez une solution simple à mettre en œuvre pour un néophyte en électronique et en soudure.
Deltakap a écrit:et ce nouveau fil n'est pas étranger à tes posts sur ton blog
Deltakap a écrit:C'est aussi un peu l'objet de ce post... le protocole à utiliser (ou à construire) ne devrait-il pas avoir une certaine cohérence entre nous ? Aucune importance pour jouer tout seul, plus embêtant si on se retrouve à plusieurs et sur la même fréquence.
Deltakap a écrit:ça n'avait que peu d'intérêt car "inaccessible" pour la plupart (soft et matos spécifiques).
J-C a écrit:Le procédé de décalage exposé est assez simple et rapide.
J-C a écrit:Sinon, pour les modules, ils sont vendus directement chez Sure Electronics : http://www.sureelectronics.net/goods.php?id=1053
Compter environ 5 $ pour les frais de port les plus économiques... durée de livraison ??? (en général 10-15 jours mais parfois plus).
JC
alpaph a écrit:Et ainsi, c'est toi, LE lecteur de mon blog. Cool !
alpaph a écrit:J'ai établi ce protocole (qui est un peu raz-le-pâquerettes, faut bien le dire et en même temps, on n'est pas au boulot) dans mon coin. J'ai un petit peu pensé aux autres en ajoutant un identifiant propre à l'utilisateur. Mais ça reste sommaire.
alpaph a écrit:J'ai vu que J-C travaillait sur le sujet aussi. Ceci dit, et si ça vous tente, on peut faire un truc en commun
Deltakap a écrit:J'ai acheté mes deux APC220 sur la bay en Angleterre pour un peu plus de 40€ port compris, mais il y avait avec une petite carte d'adaptation qui permet d'en brancher un directement sur un port usb du PC. (qui sera bien inutile plus tard)
Faut que je reprenne les docs que j'ai trouvé sur le net sur cet APC220... mais il semble me souvenir que je n'ai rien du tout sur la façon de changer de fréquence par exemple
Il semble qu'il existe un programme (win?) qui permette de changer les différents paramètres... mais je ne l'ai pas trouvé non plus !
// Emetteur code de J-C
#define idlezone 20
#define incmax 10
#define joymid 512
#define panspeed 20
int x=1;
int y=0;
int button_A= 5;
int button_B= 3;
int button_C= 4;
int LED=13;
int valx = 0;
int valy = 0;
byte Clicbouton = 0;
void setup()
{
int i;
for(i=3;i<=5;i++)
pinMode(i, INPUT);
pinMode(LED,OUTPUT);
Serial.begin(9600);
}
void loop()
{
int val;
while(1)
{
// Lecture Joystick Tilt
val=analogRead(x);
if (val > joymid + idlezone){
valx = map(val, joymid + idlezone, 1023, 0, incmax);
}
if (val < joymid - idlezone){
valx = map(val, joymid - idlezone, 0, 0, incmax);
valx = -valx;
}
if (val <= joymid + idlezone && val >= joymid - idlezone){
valx = 0;
}
// Conversion Tilt en byte pour emission
byte tilt = 50 + valx;
// Lecture Joystick Pan
val=analogRead(y);
if (val > joymid + idlezone){
valy = map(val, joymid + idlezone, 1023, 0, panspeed);
}
if (val < joymid - idlezone){
valy = map(val, joymid + idlezone, 0, 0, panspeed);
valy = -valy;
}
if (val >= joymid - idlezone && val <= joymid + idlezone){
valy = 0;
}
// Conversion Pan en byte pour emission
byte pan = 50 + valy;
// Lecture bouton 2 / déclenchement
if(digitalRead(button_B)==0)
{
Clicbouton = 10;
}
else Clicbouton = 0;
// Envoi des données Tilt, puis Pan, puis bouton
Serial.print(0xff, BYTE);
Serial.print(tilt);
Serial.print(pan);
Serial.print(Clicbouton);
}
}
// Récepteur code de J-C
#include <Servo.h>
#define servomin 1000
#define servomax 2000
#define panidle 1500
#define panspeed 20
#define Pan_pin 3
#define Tilt_pin 4
#define Clic_pin 13
int servox = 1500;
int x=1;
int y=0;
int val1;
int val2;
int val3;
int panpos = panidle;
Servo pan_servo; // le servo PAN
Servo tilt_servo; //le servo TILT
//(¯`·.¸¸.-Déclenchement direct de l'APN Ricoh par USB-.¸¸.·´¯)
// Cette routine doit changer si on utilise un gentled ou autre...
void clicricoh(){
digitalWrite(Clic_pin, HIGH); // pin APN ON
delay(30); // durée 30ms (half-press et focus)
digitalWrite(Clic_pin, LOW); // pin APN OFF
delay(200); // pause
digitalWrite(Clic_pin, HIGH); // pin APN ON
delay(150); // durée 150ms (full-press)
digitalWrite(Clic_pin, LOW); // pin APN OFF
delay(100); // delai après photo 2s (a régler)
digitalWrite(Clic_pin, HIGH); // pin APN ON
delay(30); // durée 30ms (release)
digitalWrite(Clic_pin, LOW); // pin APN OFF
delay(30); // durée 30ms
digitalWrite(Clic_pin, HIGH); // pin APN ON
delay(30); // durée 30ms
digitalWrite(Clic_pin, LOW); // pin APN OFF
}
void setup()
{
pan_servo.attach(Pan_pin);
tilt_servo.attach(Tilt_pin);
pinMode(Clic_pin, OUTPUT);
Serial.begin(9600);
}
void loop()
{
int val;
while (Serial.available() >= 4) {
if (Serial.read() == 0xff) {
val1 = Serial.read();
val2 = Serial.read();
val3 = Serial.read();
Serial.flush();
val = val1 - 50;
if (val > 0){
if (servox != servomax){
servox = servox + val;
if (servox > servomax) servox = servomax;
}
}
if (val < 0){
if (servox != servomin){
servox = servox + val;
if (servox < servomin) servox = servomin;
}
}
tilt_servo.writeMicroseconds(servox);
delay (50);
val = val2 - 50;
if (val != 0){
panpos = panidle + val;
}
else {
panpos = panidle;
}
pan_servo.writeMicroseconds(panpos);
// delay (50);
if (val3 == 10){
clicricoh();
delay (50);
}
}
}
}
Deltakap a écrit:Un lien sans doute intéressant pour l'encodeur: http://hifiduino.blogspot.com/2009/06/a ... coder.html
2 résistances et ce code et hop, tu sais dans quel sens il tourne, y'a plus qu'à compter les crans.
// Programme de lecture des sorties encodeur.
// Tourner dans le sens horaire allume une LED.
// Tourner dans le sens anti-horaire eteind la LED.
// Affichage d'un compteur sur le port série.
// Définition des PIN
#define CI_11_A 2
#define CI_11_B 3
#define ledPin 13
// Définition des variables
// Mémorise l'état des sorties A et B
int StateA = 0;
int StateB = 0;
// Mémorise l'état des sorties A et B antérieures
int StateA_anterieur = 0;
int StateB_anterieur = 0;
int compteur = 0;
int compteur_anterieur = 0;
void setup() {
// Initialise la sortie LED
pinMode(ledPin, OUTPUT);
// Initialise les entrées A et B de l'encodeur
pinMode(CI_11_A, INPUT);
pinMode(CI_11_B, INPUT);
Serial.begin(9600);
}
void loop(){
// Lecture des sorties A et B de l'encodeur. Avant chaque lecture,
// mémorisation de l'état antérieur de chaque broche. Ce principe permet
// la détection d'un front montant.
StateA_anterieur= StateA;
StateA = digitalRead(CI_11_A);
StateB_anterieur= StateB;
StateB = digitalRead(CI_11_B);
// Détection du front montant :
// Etat actuel : haut, état antérieur : bas
if ((StateA == HIGH) && (StateA_anterieur == LOW)) {
if (StateB == LOW) {
digitalWrite(ledPin, HIGH);
Serial.println("HORAIRE");
compteur = compteur + 5;
}
};
// Détection du front montant :
// Etat actuel : haut, état antérieur : bas
if ((StateB == HIGH) && (StateB_anterieur == LOW)) {
if (StateA == LOW) {
digitalWrite(ledPin, LOW);
Serial.println("ANTI-HORAIRE");
compteur = compteur - 5;
};
}
// Affichage du compteur seulement si sa valeur est modifiée.
if (compteur != compteur_anterieur) {
Serial.println(compteur);
}
compteur_anterieur = compteur;
}
J-C a écrit:Serial.flush();
J-C a écrit:C'est "au cas où"... car bizarrement, pour le bouton de déclenchement, c'est comme s'il restait appuyé dès la première pression.
// Lecture bouton 2 / déclenchement
// Deux variables etat_button_B_avant et etat_button_B ont été créées
etat_button_B_avant = etat_button_B;
etat_button_B = digitalRead(button_B);
// Détection front descendant
if ((etat_button_B==LOW) && (etat_button_B_avant == HIGH))
{
Clicbouton = 10;
}
else Clicbouton = 0;
attachInterrupt(interrupt, function, mode)
Description
Specifies a function to call when an external interrupt occurs. Replaces any previous function that was attached to the interrupt. Most Arduino boards have two external interrupts: numbers 0 (on digital pin 2) and 1 (on digital pin 3). The Arduino Mega has an additional four: numbers 2 (pin 21), 3 (pin 20), 4 (pin 19), and 5 (pin 18).
Deltakap a écrit:Un truc qui serait pas mal (mais je suis atrocement en retard pour essayer) ça serait, au niveau de la télécommande, de stocker les valeurs des capteurs à un instant (potars ou encodeurs) et de n'envoyer le signal radio que si on a un changement de valeur !? (ça éviterait l'émission permanente et de pourrir le buffer avec des infos inutiles
Deltakap a écrit:Un truc qui serait pas mal (mais je suis atrocement en retard pour essayer) ça serait, au niveau de la télécommande, de stocker les valeurs des capteurs à un instant (potars ou encodeurs) et de n'envoyer le signal radio que si on a un changement de valeur !? (ça éviterait l'émission permanente et de pourrir le buffer avec des infos inutiles ).
alpaph a écrit:Bonjour,
Petite question pour les possesseurs d'Arduino mini Pro 5V : comment alimentez-vous la carte ? 4*LR6, pile 9v ou bien ...
Merci d'avance de vos réponses.
A +
Deltakap a écrit:La pile 9V ne va pas durer des siècles, même si elle n'alimente que l'arduino.
alpaph a écrit:Pour l'autoKAP, j'utilise un accu 9V sur mon Duemilanove et l'autonomie atteignait facilement 90 minutes
alpaph a écrit:Autre question sur les antennes 2.4 Ghz. J'ai trouvé http://www.wimo.de/cgi-bin/verteiler.pl?url=wifi-omnidirectionel-interieure-antennes_f.html pour mettre sur mon xBee. Le gain est de 1 dB. Je pense que ça suffit mais vous, qu'en pensez-vous
Deltakap a écrit:Je n'ai pas vu d'antenne 1dBi dans cette série
Deltakap a écrit:Parce que la doc donne 3.3V @ 295mA et la batterie 9V et ses 180mAh va cette fois être juste en durée.
alpaph a écrit:tu as l'oeil aiguisé
alpaph a écrit:(...) Même si je compte descendre la puissance en émission car nous sommes limités à 10mW
Retourner vers L'électronique embarquée et au sol
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 46 invités