cielmonprintemps
Ceci est une ancienne révision du document !
Table des matières
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.
Code cielMonPrintemps
Programme principal de l'installation.
Liens pour le code
cielmonprintemps.1713628803.txt.gz · Dernière modification : 2024/04/20 16:00 de Mushussu