Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Arduino Nano 33 IoT : Capteur d'eau multi-paramètres (CE, pH, ORP) avec BLE et PWA

Composants et fournitures

Composant Quantité
Arduino Nano 33 IoT 1
Interface sonde EC isolée Microfire LLC 1
Interface sonde ISE isolée Microfire LLC 2

À propos de ce projet

Que allons-nous réaliser ?

Un dispositif pour mesurer la conductivité électrique (CE), le pH, le potentiel d'oxydoréduction (ORP) et la température. Il peut servir à surveiller une piscine ou une installation hydroponique. La communication se fait via Bluetooth Low Energy (BLE) et les données s'affichent sur une page web grâce à Web Bluetooth. Pour aller plus loin, nous transformerons cette page en Progressive Web App (PWA) installable depuis le navigateur.

Arduino Nano 33 IoT : Capteur d eau multi-paramètres (CE, pH, ORP) avec BLE et PWA
Arduino Nano 33 IoT : Capteur d eau multi-paramètres (CE, pH, ORP) avec BLE et PWA

Tout le matériel est disponible sur ufire.co.

Explication des termes techniques

Le matériel

Avant l'assemblage, une modification s'impose : les interfaces ISE uFire partagent la même adresse I2C. Comme nous en utilisons deux, il faut en changer une. Suivez cette procédure pour définir l'adresse 0x3e sur l'une des cartes ISE (celle dédiée à l'ORP).

Le raccordement est ensuite simplifié grâce au système Qwiic : chainer simplement tous les capteurs. Un câble Qwiic vers broches mâles relie le premier capteur au Nano 33 IoT :

Arduino Nano 33 IoT : Capteur d eau multi-paramètres (CE, pH, ORP) avec BLE et PWA

La sonde de température doit être connectée à la carte EC (bien que toutes les cartes puissent en mesurer). Branchez les sondes CE, pH et ORP sur leurs interfaces respectives via connecteurs BNC. Un boîtier étanche est fortement recommandé vu la présence d'eau.

Le logiciel

Deux parties : le firmware sur le Nano 33 et la page web.

Flux de fonctionnement

  1. La page web se connecte au Nano via BLE
  2. Elle envoie des commandes textuelles pour demander des mesures ou actions
  3. Le Nano exécute les commandes et renvoie les résultats
  4. La page met à jour l'interface utilisateur

Cette architecture permet d'effectuer toutes les opérations attendues : mesures, calibrations, etc.

Services et caractéristiques BLE

Un service BLE = un "livre", une caractéristique = une "page" modifiable avec notifications.

Dans le firmware, un service unique :

BLEService uFire_Service("4805d2d0-af9f-42c1-b950-eae78304c408");

Et deux caractéristiques :

BLEStringCharacteristic tx_Characteristic("50fa7d80-440a-44d2-967a-ec7731ec736a", BLENotify, 20);
BLEStringCharacteristic rx_Characteristic("50fa7d80-440b-44d2-967b-ec7731ec736b", BLEWrite, 20);

Code d'initialisation :

BLE.setLocalName("uFire BLE");
BLE.setAdvertisedService(uFire_Service);
uFire_Service.addCharacteristic(tx_Characteristic);
uFire_Service.addCharacteristic(rx_Characteristic);
BLE.addService(uFire_Service);
rx_Characteristic.setEventHandler(BLEWritten, rxCallback);
BLE.advertise();

rx_Characteristic.setEventHandler(BLEWritten, rxCallback); déclenche rxCallback à chaque écriture. BLE.advertise(); rend le périphérique visible.

Commandes textuelles

Communication par commandes textuelles simples via JSON (plus lisible que MsgPack). Exemple :

La bibliothèque uFire gère déjà l'encodage/décodage JSON pour les capteurs CE et ISE.

La page web

Front-end en Vue.js, sans backend ni système de build. Structure classique : js/, css/, assets/. Style avec Bulma.io.

Dans le <head> : <link rel="manifest" href="manifest.json"> pour la PWA.

Le JavaScript est découpé : app.js (UI, variables Vue), ble.js (Bluetooth).

JavaScript et Web Bluetooth

Compatible uniquement Chrome et Opera.

Les UUIDs du firmware sont repris dans app.js. Dans ble.js, les fonctions connect() et disconnect().

La connexion nécessite une interaction utilisateur (clic bouton) :

this.device = await navigator.bluetooth.requestDevice({
  filters: [{ namePrefix: "uFire" }],
  optionalServices: [this.serviceUuid]
});

Un dialogue natif Chrome s'affiche pour sélectionner le périphérique (sécurité).

Configuration du service et caractéristiques :

service = await server.getPrimaryService(this.serviceUuid);
characteristic = await service.getCharacteristic(this.txUuid);
await characteristic.startNotifications();
characteristic.addEventListener("characteristicvaluechanged", this.value_update);

value_update traite le JSON entrant et met à jour l'UI. Un timer rafraîchit les données toutes les 5 secondes. Les fichiers ec.js, ph.js, orp.js contiennent les fonctions de commande et calibration.

Important : Web Bluetooth requiert HTTPS. Pour tester localement, utilisez serve-https ou équivalent.

La partie PWA

Étapes pour transformer la page en application installable :

Manifest.json

Généré via App Manifest Generator. Points clés :

Placer manifest.json à la racine, à côté de index.html.

Service Worker

Pour le cache hors-ligne. Implémentation standard (exemple Google) avec liste des fichiers à cacher (même domaine uniquement).

Icônes

Générées via FavIcon Generator.

Enregistrement du Service Worker

Dans mounted() de Vue :

mounted: function () {
  if ('serviceWorker' in navigator) {
    navigator.serviceWorker.register('service-worker.js');
  }
},

Validation

Utilisez Lighthouse (onglet Chrome DevTools) pour auditer la PWA. Si tout est bon, Chrome propose l'installation via une bannière.

Arduino Nano 33 IoT : Capteur d eau multi-paramètres (CE, pH, ORP) avec BLE et PWA

Code

Arduino Create
GitHub

https://github.com/u-fire/uFire-BLE

Schématiques

Tous les raccordements se font par câbles Qwiic.

Arduino Nano 33 IoT : Capteur d eau multi-paramètres (CE, pH, ORP) avec BLE et PWA

Processus de fabrication

  1. Infineon nommé Advanced Technology Partner par Amazon Web Services
  2. Raspberry Pi et HDC2010 : guide complet de configuration du capteur I2C température et humidité
  3. Construire une porte à reconnaissance faciale sécurisée avec Windows IoT et Raspberry Pi
  4. Construire un bouton IoT AWS contrôlé par mouvement avec Raspberry Pi, capteur PIR et MQTT
  5. Surveillance Précise de Température et Humidité avec SHT15 sur Windows 10 IoT Core
  6. Installation de Windows 10 IoT Core sur Raspberry Pi 3 Model B+ : Guide Étape par Étape
  7. Transformez votre Raspberry Pi 4 en serveur web et créez votre propre site
  8. Étendre GoPiGo v2 sur Windows 10 IoT Core pour Raspberry Pi 3
  9. Système de Contrôle de Piscine IoT Azure : Capteurs Intelligents & Surveillance à Distance