FABRICATION d’un AÉROGLISSEUR

Vidéos

Liste des composants

Arduino Nano – GotronicAmazon

Module NRF24L01 – Gotronic(50m) / Gotronic(250m) / Amazon(1100m)

Batteries 18650 – Gotronic / Amazon

ServoMoteur – Gotronic

Ventilateurs – Récupérés sur un vieux pc

Mosfet iRFZ44N – Gotronic / Amazon

Port Jack – Amazon

Bms – AmaZon

Interrupteurs – GotronicAmazon

LM2596 – GotronicAmazon

Support Batteries 18650 – Gotronic / Amazon

Les Schémas

Schéma Télécommande :

Schéma Aéroglisseur :

Les Fichiers 3D

Les codes Arduino

//------------------------------------------------------
//                https://gammatroniques.fr/
//                    Code Télécommande
//                  08/2020 - by Bearduino
//------------------------------------------------------

#include <SPI.h>      // Pour la communication via le port SPI
#include <Mirf.h>     // Pour la gestion de la communication
#include <nRF24L01.h> // Pour les définitions des registres du nRF24L01
#include <MirfHardwareSpiDriver.h> // Pour la communication SPI
 
typedef struct {
  int Xvaleur;
  int Yvaleur;
} MaStructure;
 
void setup() {
  Serial.begin(9600);
   
  Mirf.cePin = 8; // Broche CE sur D8
  Mirf.csnPin = 10; // Broche CSN sur D10
  Mirf.spi = &MirfHardwareSpi; // On veut utiliser le port SPI hardware
  Mirf.init(); // Initialise la bibliothèque

  Mirf.channel = 1; // Choix du canal de communication (128 canaux disponibles, de 0 à 127)
  Mirf.payload = sizeof(MaStructure); // Taille d'un message (maximum 32 octets)
  Mirf.config(); // Sauvegarde la configuration dans le module radio

  Mirf.setTADDR((byte *) "nrf02"); // Adresse de transmission
  Mirf.setRADDR((byte *) "nrf01"); // Adresse de réception
   
  Serial.println("Go !"); 
}
 
void loop() {
  MaStructure message;
  
  message.Xvaleur = analogRead(A0); // Valeur X du Joystick
  message.Yvaleur = analogRead(A1); // Valeur Y du Joystick
  
  Mirf.send((byte*) &message); // On envoie le message
  while(Mirf.isSending()); // On attend la fin de l'envoi

  delay(50);
}   
//------------------------------------------------------
//                https://gammatroniques.fr/
//                    Code Aéroglisseur
//                  08/2020 - by Bearduino
//------------------------------------------------------

#include <SPI.h>      // Pour la communication via le port SPI
#include <Mirf.h>     // Pour la gestion de la communication
#include <nRF24L01.h> // Pour les définitions des registres du nRF24L01
#include <MirfHardwareSpiDriver.h> // Pour la communication SPI
#include <Servo.h>    // Pour le contrôle du ServoMoteur

typedef struct {
  int Xvaleur;
  int Yvaleur;
} MaStructure;

Servo myServo;
int X = 90;
int derval = 90;

void setup() {
  
  myServo.attach(6);

  Mirf.cePin = 8; // Broche CE sur D8
  Mirf.csnPin = 10; // Broche CSN sur D10
  Mirf.spi = &MirfHardwareSpi; // On veut utiliser le port SPI hardware
  Mirf.init(); // Initialise la bibliothèque

  Mirf.channel = 1; // Choix du canal de communication (128 canaux disponibles, de 0 à 127)
  Mirf.payload = sizeof(MaStructure); // Taille d'un message (maximum 32 octets)
  Mirf.config(); // Sauvegarde la configuration dans le module radio

  Mirf.setTADDR((byte *) "nrf01"); // Adresse de transmission
  Mirf.setRADDR((byte *) "nrf02"); // Adresse de réception

  Serial.println("Go !"); 
  
  myServo.write(X);
}

void loop() {
  MaStructure message;

  if(Mirf.dataReady()){
    Mirf.getData((byte*) &message); // Réception du paquet

    int Y = map(message.Yvaleur, 0, 1023, 0, 255);  //Adapter Valeur Y pour ventilateur
    X = map(message.Xvaleur, 0, 1023, 0, 180);  // Adapter Valeur X pour moteur
    
    analogWrite(5, Y);  // Pour faire tourner le ventilateur

    if (X < derval){
      derval = derval-5;
      myServo.write(derval);
    }
    else if (X > derval){           // Faire tourner le moteur
      derval = derval+5;            // sans bloquer le code
      myServo.write(derval);
    }
    else {
      myServo.write(derval);
    }  
  }
}