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
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 = 1000.0 / duree;
envoyeDonnees(analogRead(A1) / 100, vitesse, serveurIp, serveurPort);
temps = millis();
}
if ((digitalRead(anemometre) == HIGH) && (etat == false) && (etat2 == true)) {
etat2 = false;
etat = true;
}
if (digitalRead(anemometre) == LOW) {
etat = false;
}
}
void envoyeDonnees(int direction, float vitesse, IPAddress serveurIp, unsigned int ServeurPort) {
// Formaqtion du message OSC
uint8_t message[] = {0x2F, 0x76, 0x65, 0x6E, 0x74, 0x00, 0x00, 0x00, 0x2C, 0x69, 0x66, 0x00, 0x00, 0x00, 0x03, 0xE8, 0x3F, 0x9D, 0xF3, 0xB6};
uint8_t dirTab[4];
uint8_t dirVit[4];
memcpy(&dirTab, &direction, 4);
memcpy(&dirVit, &vitesse, 4);
for (int j = 0; j < 4; j++) {
memcpy(&message[12 + j], &dirTab[3 - j], 1);
memcpy(&message[16 + j], &dirVit[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.1713620353.txt.gz · Dernière modification : de Mushussu
