Telecommande pour voilier (Projet)

Bonjour,

En cours de construction (impression 3D) d'un voilier classe IOM (International One Meter) et residant en Egypte ou l'acces a un systeme de control HF est plus que limite, j'envisage de construire une telecommande basee sur le module Arduino LoRa (j'ai facilement acces tous lkes composants necessaires.

Avant de me lancer, est ce que cela a deja ete fait? Je n'ai rien trouve qui tienne la route sur Google...

Mes besoins au niveau de la telecommande:

  • min 4 canaux
  • Ecran LCD
  • Module longue portee (1 km environ max)
  • Micro SD (Pour log des informations telemetriques recues du bateau

Au niveau du bateau:

  • Controle de 2 servos

Pour envoi d'info vers la telecommande (Affichage sur le LCD)

  • Module GPS
  • Module Gyrocompas
  • Module de controle du niveau des batteries

Si vous avez des pistes ou bien deja vu passe ce genre de projet, merci pour les infosS

Bonjour @yvautrin

je déplace ce message à l'endroit approprié (partie principale du forum francophone) ...
Il est prématuré de le faire figurer dans le sous-forum explicitement dédié , je cite, "aux projets complets et fonctionnels"
chaque chose en son temps .... :wink:

:mag_right: Les bonnes pratiques du Forum Francophone

Si tu veux simplement radioguider 2 servos...

Il semble indiquer que dans son pays, il a difficilement accès à ce genre de produit.

@yvautrin le protocole Lora, implique une limite d'envois de message pour ne pas saturer le réseau, je ne suis pas sûre que cela te permet de pouvoir contrôler ton voilier d'une manière satisfaisante.

Salut!

avant tout bon courage pour ton projet.
Ca ne répondra pas à toutes tes questions, mais sur le forum anglais, un membre discute de la navigation (intégration d'un PID au servomoteur qui barre le bateau) pour un projet équivalent.

Bonjour @terwal

IL convent de distinguer Lora et LoRaWAN

la modulation radio Lora est soumise aux contraintes génériques (puissance, taux d'occupation temporel) définies pour chaque bande ISM 433MhZ ou 868MHz.
Une liaison Lora point à point (sur 433MHz, 868MHz et même 2.54 GHz depuis peu) est peut être compatible avec les besoins de la télécommande mais je ne vois pas ici (courte distance , à vue ..) la valeur ajoutée de LoRa.

le réseau LoRaWAN ajoute des contraintes 'réseau' bien plus plus sévères que celles liée au partage d'une bande ISM (même niveau de contraintes que celles du réseau Sigfox)

Oui, je n'avais pas pensé à deux modules lora communiquant entre eux.
La valeur ajoutée semble être la disponibilité, sinon autant prendre un récepteur/émetteur du marché du modélisme.

Oui mais si une solution 'maison' est décidée , il me semble que les NRF24L01 conviennent meiux au cas de figure, on peut presque occuper un canal à temps plein !

Oui tout à fait, mais le soucis ne semble pas de vouloir spécifiquement faire un truc maison.
Après je ne comprend pas trop sa limitation sur les télécommande et mais pas sur un module LoRa.

le choix Arduino + Lora semble en effet avoir été arrếté, il faut l'acter :wink:
Les divers transceivers LoRa ont leur bibliothèque Arduino pour faire du point à point avec des exempes 'send' et 'receive'

Qelle bande ISM ? je ne connais pas la réglementation particulière de l'Egypte
868MHz ? 915 MHz ?

En effet,j'ai moi meme fait un bateau,voici mon code yvautrin:

 * Pin Conections

 *  CE - 7

    MISO - 12

    MOSI - 11

    SCK - 13

    CS - 8

    POT-A7

*/


#include <SPI.h>  

#include "RF24.h"


RF24 myRadio (7, 8);

struct package

{

  int msg = 0;

};

byte addresses[][6] = {"0"};

typedef struct package Package;

Package data;


void setup()

{

  Serial.begin(9600);

  myRadio.begin();  

  myRadio.setChannel(115);  //115 band above WIFI signals

  myRadio.setPALevel(RF24_PA_MIN); //MIN power low rage

  myRadio.setDataRate( RF24_250KBPS ) ;  //Minimum speed

  delay(500);

  Serial.print("Setup Initialized");

}

void loop()

{

  int Read_ADC = analogRead(A7);

  char servo_value = map (Read_ADC, 0, 1024, 0,180);

    if (servo_value>1)

    data.msg = servo_value;

    WriteData();

    delay(50);

// ReadData(); 

 //delay(200);

}

void WriteData()

{

  myRadio.stopListening();  //Stop Receiving and start transminitng 

  myRadio.openWritingPipe( 0xF0F0F0F0AA); //Sends data on this 40-bit address

  myRadio.write(&data, sizeof(data)); 

Serial.print("\nSent:");

  Serial.println(data.msg);

  delay(300);

}


void ReadData()

{ 

myRadio.openReadingPipe(1, 0xF0F0F0F066); // Which pipe to read, 40 bit Address

  myRadio.startListening(); //Stop Transminting and start Reveicing 

  if ( myRadio.available()) 

  {

    while (myRadio.available())

    {

      myRadio.read( &data, sizeof(data) );

    }

    Serial.print("\nReceived:");

    Serial.println(data.msg);

  }

}

 

Code for Receiver Part:

 

/*CE - 7

MISO - 12

MOSI - 11

SCK - 13

CS - 8

Recently tested with nano

*/

#include <SPI.h>  

#include "RF24.h" 

#include <Servo.h>

Servo myservo;

RF24 myRadio (7, 8); 

struct package

{

  int msg;

};

typedef struct package Package;

Package data;

byte addresses[][6] = {"0"}; 

void setup() 

{

  Serial.begin(9600);

  myRadio.begin(); 

  myRadio.setChannel(115);  //115 band above WIFI signals

  myRadio.setPALevel(RF24_PA_MIN); //MIN power low rage

  myRadio.setDataRate( RF24_250KBPS ) ;  //Minimum speed

  myservo.attach(6);

  

  Serial.print("Setup Initialized");

  delay(500);

}

int Servo_value;

int Pev_servo_value;

void loop()  

{

  ReadData();

  delay(50);

  

  Pev_servo_value = Servo_value;

  Servo_value = data.msg; 

  while (Pev_servo_value< Servo_value)

  {

  myservo.write(Pev_servo_value);

  Pev_servo_value++;

  delay(2);

  }

  while (Pev_servo_value> Servo_value)

  {

  myservo.write(Pev_servo_value);

  Pev_servo_value--;

  delay(2);

  }

   //data.msg = "nothing to send";

   //WriteData();

  // delay(50);

}

void ReadData()

{

  myRadio.openReadingPipe(1, 0xF0F0F0F0AA); //Which pipe to read, 40 bit Address

  myRadio.startListening(); //Stop Transminting and start Reveicing 

  if ( myRadio.available()) 

  {

    while (myRadio.available())

    {

      myRadio.read( &data, sizeof(data) );

    }

    Serial.print("\nReceived:");

    Serial.println(data.msg);

  }

}

void WriteData()

{

  myRadio.stopListening(); //Stop Receiving and start transminitng 

  myRadio.openWritingPipe(0xF0F0F0F066);//Sends data on this 40-bit address

  myRadio.write(&data, sizeof(data)); 

  Serial.print("\nSent:");

  Serial.println(data.msg);

  delay(300);

}

Pour le schemas:

et:

Met un deuxieme servos:A toi de jouer!! :smile:

Pour la legislation,je ne pense pas qu'un module comme ca peut etre illegal :wink:

Ba c'est pourtant simple, les fréquences ouvert au publique sont au bon vouloir de chaque nation.

Bonjour,

Merci a tous pour vos reponses, je vais partir sur cette solution en rajoutant deux ou troi bricoles, cela me parait le plus adapte a mes besoins!
Je vous tiens au courant de l'avancee du projet!

Impec'tu postes ca dans les projets finis,on est impatient!!! :grin:

On (JE) veut voir une photo du voilier!! :grinning:
même s'il est pas fini.


La coque est
terminee! J'attaque l'electronique cette semaine!:wink:

1 Like

Classe !! :+1:

Bon, alors, j'ai trouve un tuto pour une telecommande que je pourrais utiliser avec les voilier, et dans le futur avec un drone, ce projet rassemble tout ce que je cherche, en plus de la telecommande, telemetrie possible (etat batterie, gps, etc....), par contre, mon soucis est au niveau des joysticks, je n'ai trouve que des modules joystick arduino (style PS2), et la je bloque sur le cablage et les modifications au niveau du code....

voila le lien vers ce projet (j'ai toute l'electronique sous la main, la coque est imprimee avec les modifications effectuee pour le nouveau type de joysticks).

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.