Wifi et récupération de fichier

Bonjour, j’ai actuellement une centrale d’acquisition avec une Arduino et plusieurs capteurs, les données des capteurs sont enregistrés dans une carte SD à l’aide d’un shield. Pour des raisons de praticité, je souhaiterai pouvoir envoyer le fichier csv de la carte SD vers un téléphone ou un ordinateur à l’aide d’une carte wifi.

Avez vous des conseils à me donner ? Et un tutoriel pour pouvoir programmer un transfert de fichier à l’aide d’un point d’accès crée par la carte wifi de l’arduino si vous avez.

Merci pour votre aide

Salut.
Plutôt que d'ajouter un module WIFI à l'ARDUINO je suggérerais de remplacer l'ARDUINO par un ESP8266 ou ESP32.
Tout dépend de la quantité d'entrées / sorties nécessaires. L'ESP32 a par exemple plusieurs entrées ADC, l'ESP8266 une seule.
Ils possèdent également un système de fichier en FLASH, ce qui permettrait de se passer de SD si la quantité de données n'excède pas 1Mo.
Ces modules se programment avec l'IDE ARDUINO.

La fonction transfert de fichier peut être réalisée par simple affichage du fichier dans le navigateur ou par téléchargement.
Mais auparavant il faudra choisir la technologie :

  • ESP32
  • ESP8266
  • ARDUINO+ESP8266 (si l'on y tient vraiment)

Merci pour ta réponse, peut être qu'une explication supplémentaire permettrait de savoir quel est la meilleure solution.

Actuellement le système enregistre la tension de 2 capteurs après amplification par des AD623. L'arduino enregistre dans un fichier CSV l'heure et la date à l'aide d'une horloge (DS3231) ainsi que la tension des capteurs et divers variables qui découlent de calculs sur les valeurs de tension. L'arduino contrôle également une LED et un bouton d’arrêt permet d'arréter le programme après le dernier enregistrement dans le fichier.

Quant à la taille du fichier, c'est possible qu'il dépasse 1mo mais néanmoins il y a de faible chance ( je ne suis pas encore sur à 100% de la période sur laquelle les mesures seront réalisées.

J'ai besoin d'intégrer donc la wifi pour récupérer le fichier CSV sans devoir ouvrir la boite étanche qui contient le système.

Il y a donc besoin de 2 entrées analogiques.

2 possibilités :

ARDUINO + ESP01 : je n'ai jamais essayé ce genre de montage qui me semble peu performant, car les requêtes passent par une ligne série entre ESP01 et ARDUINO. Je ne saurais te renseigner car cette technologie ne m'a jamais intéressé.

Voir ICI : https://forum.arduino.cc/index.php?topic=501923.0

ESP32 : avec la librairie de base WebServer ou la librairie ESPAsyncWebServer il sera très simple d'envoyer un fichier en attachement ou non : ESP32 Arduino: Serving file as attachment - techtutorialsx

Quand je dis 1Mo c'est plutôt 1.5Mo.

Un ESP32 permettrait de se passer de 2 éléments : la SD et le DS3231 car on peut obtenir l'heure très simplement via NTP.

Merci beaucoup pour ta réponse très complète , je vais voir cela et effectivement l'ESP32 semble être un bon choix.

Juste pour être sur, pour le NTP , il y a nécessité d'être connecté à un réseau wifi ? Puisque pour tout expliquer mon système sera au milieu d'un champ.

En tout cas merci pour ton temps et tes réponses très rapides.

Juste pour être sur, pour le NTP , il y a nécessité d'être connecté à un réseau wifi ? Puisque pour tout expliquer mon système sera au milieu d'un champ.

Oui, mais on peut très bien imaginer demander l'heure par NTP à domicile et ensuite emmener le montage à l'extérieur, sans coupure d'alimentation. Je suppose que l'alimentation se fait par batterie ?

On peut également combiner les deux : DS3231 + NTP.
Ainsi l'heure du DS3231 sera initialisée par une demande NTP et sera ensuite autonome.

je souhaiterai pouvoir envoyer le fichier csv de la carte SD vers un téléphone ou un ordinateur à l'aide d'une carte wifi.

le Bluetooth a-t-il été envisagé pour la transmission (à qq mètres ?) du fichier CSV ?
(ajout d'un module HC05 côté Arduino et côté smartphone/ordinateur une des applications de 'Terminal Bluetooth')

Le maintien en activité d'un point d'accès WiFi et son serveur impactera fortement l'autonomie de la centrale d'acquisition.

Oui en effet mais comme Artholito n'a pas parlé du mode d'alimentation je ne me suis pas trop attardé sur la consommation.
S'il s'agit d'une batterie il est possible de démarrer le WIFI ou le BT seulement en cas de besoin.

En fonctionnement acquisition l'ESP32 est en mode veille, WIFI non activé, et se réveille périodiquement pour faire les mesures.
En fonctionnement server, l'ESP32 est en mode "normal", WIFI activé.
L'un ou l'autre mode peut être choisi avec un switch.
Qu'en penses-tu ?

cette solution d’activation ponctuelle de la radio (WiFi ou BT) ma va bien !!
il faut juste accepter la contrainte d’une action physique sur le boitier avant de télécharger le fichier par radio

Il me semble que MarsaMatruh est sur un projet de ce type (pluviomètre connecté) mais il a choisi une solution BLE avec une puce nRF52840 performante qui lui permettra de conserver un certain fonctionnement réduit de la radio pour pouvoir lancer (sans contact) la transmission des données

Merci pour vos réponses effectivement c'est sur batterie (12v 7ah) mais avec un panneau solaire 10W en plus donc normalement je suis large. D'après la fiche technique le wifi peut avoir une centaine de mettre de portée ce qui me convient puis qu'il est possible que je dispose plusieurs dispositifs identiques dans le même champ puis que je rapatrie les mesures sur un seul dispositif à l'aide du wifi pour n'avoir au final qu'a récupérer les données sur un seul dispositif.

L'ESP32 consomme une centaine de mA une fois le WIFI démarré.
Pas de souci d'alimentation donc ...

L'ESP32 peut créer son propre réseau WIFI, donc il n'y a pas nécessité d'avoir une box à proximité.
Ce mode est appelé PA "Point d'accès".

Un DS3231 sera utile en cas de coupure d'alimentation.
D'autre part je ne connais pas la précision de l'horloge d'un ESP32. Celle-ci dépend forcément de la précision de l'oscillateur monté sur la carte (à tester donc).
Le DS3231 ne sera peut-être pas inutile.

Bonjour, j'ai une question , tu m'a indiqué que l'on pouvoir initialiser l'heure via ntp puis sans coupure de courant conserver l'heure , comment cela ce passe niveau programmation, en effet si j'utilise la fonction getLocalTime une fois que le wifi sera coupé cela ne va plus fonctionner.

Merci

Non, la récupération de l'heure NTP sur ESP32 se fait à l'aide de :

configTzTime("CET-1CEST-2,M3.5.0/02:00:00,M10.5.0/03:00:00", "pool.ntp.org");

Pour une config avec changement d'heure été / hiver.

getLocalTime() récupère l'heure stockée localement en mémoire, à partir d'un simple compteur qui s'incrémente sous interruption.