Outils pour utilisateurs

Outils du site


cielmonprintemps

Ceci est une ancienne révision du document !


Ciel mon Printemps

Matériel

Code

Code Arduino station météo

#include <WiFiS3.h>
#include "arduino_secrets.h"

#define anemometre A2
#define PI_4 0.78539816339
#define PI_2 1.5707963267948966192313216916398
#define PI3_4 2.35619449019
#define PI 3.1415926535897932384626433832795
#define PI5_4 3.92699081699
#define PI3_2 4.71238898038
#define PI7_4 5.49778714378


int status = WL_IDLE_STATUS;
// Le nom du réseau et le mot de passe sont stockés dans le fichier arduino_secrets.h
char ssid[] = SECRET_SSID;
char pass[] = SECRET_PASS;

WiFiUDP Udp;

// Définition de l'adresse IP et du port de destination
IPAddress serveurIp(192, 168, 1, 159);  // 192.168.1.159
unsigned int serveurPort = 7000;

// définition du port local
unsigned int localPort = 7001;

unsigned long temps;
bool etat = false;
bool etat2 = false;

void setup() {
  Serial.begin(9600);

  // Vérification de la présence du module WiFi
  if (WiFi.status() == WL_NO_MODULE) {
    Serial.println("La communication avec le module WiFi a échouée!");
    // Arrêt
    while (true)
      ;
  }

  String fv = WiFi.firmwareVersion();
  if (fv < WIFI_FIRMWARE_LATEST_VERSION) {
    Serial.println("Mettez à jour le firmware");
  }

  // Tentative de connexionau réseau WiFi
  while (status != WL_CONNECTED) {
    Serial.print("Tentative de connexion au SSID: ");
    Serial.println(ssid);
    status = WiFi.begin(ssid, pass);

    // Attente de 10s pour la connexion
    delay(10000);
  }

  Serial.println("Connecté au WiFi");
  affichageStutWiFi();
  Serial.println("\nConnexion au serveur...");

  // Démarre la liaison UDP
  Udp.begin(localPort);

  // Intialisation des ports de la station météo
  pinMode(anemometre, INPUT);  // Anémomètre
  pinMode(13, OUTPUT);

  temps = millis();
}

void loop() {
  if ((digitalRead(anemometre) == HIGH) && (etat == false) && (etat2 == false)) {
    etat = true;
    etat2 = true;
    int duree = millis() - temps;
    float vitesse = 10.0 / duree;
    float angle;
    switch (analogRead(A1) / 100) {
      case 0:
        angle = 0.0; //
        break;
      case 1:
        angle = PI_4; //
        break;
      case 2:
        angle = PI_2; //
        break;
      case 4:
        angle = PI7_4; //
        break;
      case 6:
        angle = PI3_4; //
        break;
      case 7:
        angle = PI3_2; //
        break;
      case 8:
        angle = PI5_4; //
        break;
      case 9:
        angle = PI; //
        break;
    }
    envoyeDonnees(vitesse * cos(angle), vitesse * sin(angle), serveurIp, serveurPort);
    temps = millis();
  }
  if ((digitalRead(anemometre) == HIGH) && (etat == false) && (etat2 == true)) {
    etat2 = false;
    etat = true;
  }
  if (digitalRead(anemometre) == LOW) {
    etat = false;
  }
}

void envoyeDonnees(float x, float y, IPAddress serveurIp, unsigned int ServeurPort) {

  // Formaqtion du message OSC
  uint8_t message[] = { 0x2F, 0x76, 0x65, 0x6E, 0x74, 0x00, 0x00, 0x00, 0x2C, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
  uint8_t xTab[4];
  uint8_t yTab[4];
  memcpy(&xTab, &x, 4);
  memcpy(&yTab, &y, 4);
  for (int j = 0; j < 4; j++) {
    memcpy(&message[12 + j], &xTab[3 - j], 1);
    memcpy(&message[16 + j], &yTab[3 - j], 1);
  }

  // Envoie du message par UDP
  Udp.beginPacket(serveurIp, ServeurPort);
  Udp.write(message, 20);
  Udp.endPacket();
}

void affichageStutWiFi() {
  // Affiche le SSID du réseau
  Serial.print("SSID: ");
  Serial.println(WiFi.SSID());

  // Affiche l'adresse IP de la carte
  IPAddress ip = WiFi.localIP();
  Serial.print("Adresse IP: ");
  Serial.println(ip);

  // Affiche la force du signal reçu
  long rssi = WiFi.RSSI();
  Serial.print("force du signal (RSSI):");
  Serial.print(rssi);
  Serial.println(" dBm");
}

Code teteDeTurc

Code pour la prise de photos pour les festivaliers.

Archive des sources du programme

Code cielMonPrintemps

Programme principal de l'installation.

Archive des sources du programme

Liens pour le code

cielmonprintemps.1713628604.txt.gz · Dernière modification : 2024/04/20 15:56 de Mushussu