Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Arduino Nano 33 IoT: Mehrparameter-Wassersensor (EC, pH, Redox) mit BLE & PWA

Komponenten und Zubehör

Komponente Menge
Arduino Nano 33 IoT 1
Microfire LLC Isolierte EC-Sonden-Schnittstelle 1
Microfire LLC Isolierte ISE-Sonden-Schnittstelle 2

Über dieses Projekt

Was werden wir bauen?

Ein Gerät zur Messung von elektrischer Leitfähigkeit (EC), pH-Wert, Redoxpotenzial (ORP) und Temperatur. Es eignet sich zur Überwachung von Pools oder Hydrokulturen. Die Kommunikation erfolgt über Bluetooth Low Energy (BLE), die Daten werden auf einer Webseite per Web Bluetooth angezeigt. Als besonderes Feature wird die Anwendung als Progressive Web App (PWA) realisiert, die sich wie eine native App installieren lässt.

Arduino Nano 33 IoT: Mehrparameter-Wassersensor (EC, pH, Redox) mit BLE & PWA
Arduino Nano 33 IoT: Mehrparameter-Wassersensor (EC, pH, Redox) mit BLE & PWA

Alle benötigten Komponenten sind bei ufire.co erhältlich.

Begriffserklärungen

Hardware-Aufbau

Wichtiger Hinweis: Die uFire ISE-Sensorboards haben standardmäßig die gleiche I2C-Adresse. Da wir zwei davon verwenden, muss die Adresse eines Boards geändert werden. Für dieses Projekt konfigurieren wir eines der ISE-Boards für ORP-Messung und setzen die Adresse auf 0x3e (Anleitung siehe Herstellerdokumentation).

Anschließend ist der Aufbau dank Qwiic-Verbindersystem einfach: Alle Sensoren werden in Reihe geschaltet. Ein Qwiic-auf-Male-Kabel verbindet den ersten Sensor mit dem Nano 33 IoT. Die farbcodierten Drähte werden wie folgt angeschlossen:

Arduino Nano 33 IoT: Mehrparameter-Wassersensor (EC, pH, Redox) mit BLE & PWA

Der Temperatursensor wird an das EC-Board angeschlossen (andere Boards können ebenfalls Temperatur messen). EC-, pH- und ORP-Sonden werden per BNC-Stecker an die entsprechenden Boards angeschlossen. Ein wasserdichtes Gehäuse wird dringend empfohlen.

Software

Die Software besteht aus zwei Teilen: Firmware auf dem Nano 33 IoT und der Webanwendung.

Datenfluss

  1. Die Webseite verbindet sich per BLE mit dem Nano.
  2. Die Webseite sendet Textbefehle zur Abfrage von Messwerten oder Kalibrierung.
  3. Der Nano empfängt, führt aus und sendet JSON-Antworten zurück.
  4. Die Webseite aktualisiert die Benutzeroberfläche.

BLE-Services und Characteristics

Ein BLE-Service entspricht einem „Buch“, Characteristics sind die „Seiten“. Unser Gerät definiert einen benutzerdefinierten Service mit zwei Characteristics:

BLEService uFire_Service("4805d2d0-af9f-42c1-b950-eae78304c408");
BLEStringCharacteristic tx_Characteristic("50fa7d80-440a-44d2-967a-ec7731ec736a", BLENotify, 20);
BLEStringCharacteristic rx_Characteristic("50fa7d80-440b-44d2-967b-ec7731ec736b", BLEWrite, 20);

Initialisierung:

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) ruft rxCallback auf, wenn die Webseite Daten sendet. BLE.advertise() macht das Gerät für Verbindungen sichtbar.

Textbasierte Befehle

Die Kommunikation erfolgt über einfache Textbefehle. Die uFire-Bibliotheken unterstützen JSON und MsgPack; dieses Projekt nutzt JSON für bessere Lesbarkeit.

Beispiel:

Die Webanwendung

Frontend: Vue.js ohne Build-System, Styling mit Bulma.io. Ordnerstruktur: js/, css/, assets/.

Im <head> wird das PWA-Manifest eingebunden:

<link rel="manifest" href="manifest.json">

JavaScript-Module: app.js (Vue-Setup, UI-State), ble.js (Bluetooth-Logik), ec.js, ph.js, orp.js (sensorspezifische Befehle).

JavaScript und Web Bluetooth

Hinweis: Funktioniert nur in Chrome und Opera.

Die UUIDs aus der Firmware werden in app.js wiederverwendet. In ble.js stecken die Kernfunktionen connect() und disconnect().

Verbindungsaufbau (muss durch Benutzerinteraktion ausgelöst werden):

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

Danach werden Service und Characteristics initialisiert, und ein Listener für characteristicvaluechanged registriert:

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

Ein Timer aktualisiert die Anzeige alle 5 Sekunden. value_update() parst eingehende JSON-Daten und aktualisiert die UI.

PWA-Umsetzung

Schritte zur Progressive Web App:

  1. manifest.json erzeugen (z. B. mit App Manifest Generator). Wichtig: Application Scope (z. B. /uFire-BLE/), Start URL, Display Mode: standalone. Datei liegt im Webroot neben index.html.
  2. Service Worker für Offline-Caching (boilerplate, z. B. Google-Beispiel). Datei: service-worker.js.
  3. Icons erstellen (z. B. FavIcon Generator).
  4. In Vue mounted() den Worker registrieren:
    mounted: function () {
      if ('serviceWorker' in navigator) {
        navigator.serviceWorker.register('service-worker.js');
      }
    }
    
  5. Mit Lighthouse (Chrome DevTools) prüfen. Bei Erfolg erscheint Installations-Banner.
Arduino Nano 33 IoT: Mehrparameter-Wassersensor (EC, pH, Redox) mit BLE & PWA

Code

Schaltplan

Alle Verbindungen erfolgen über Qwiic-Kabel.

Arduino Nano 33 IoT: Mehrparameter-Wassersensor (EC, pH, Redox) mit BLE & PWA

Herstellungsprozess

  1. Infineon als Advanced Technology Partner von Amazon Web Services benannt
  2. Raspberry Pi & HDC2010: Kompletter I2C Temperatur- & Feuchtigkeitssensor Setup-Guide
  3. Sichere Gesichtserkennungs-Tür mit Windows IoT und Raspberry Pi bauen
  4. Bewegungsgesteuerter AWS IoT Button mit Raspberry Pi, PIR-Sensor und MQTT
  5. Präzise Temperatur- & Feuchtigkeitsüberwachung mit SHT15 unter Windows 10 IoT Core
  6. Windows 10 IoT Core auf Raspberry Pi 3 Model B+ installieren – Schritt-für-Schritt
  7. Raspberry Pi 4 als Webserver nutzen und eigene Website erstellen
  8. GoPiGo v2 auf Windows 10 IoT Core für Raspberry Pi 3 erweitern
  9. Azure IoT Schwimmbadsteuerung: Smarte Sensoren & Fernüberwachung
  10. Wie IoT Web-App-Design und -Entwicklung revolutioniert