Tartalomjegyzék:

Nano 33 IoT + EC/pH/ORP + WebAPK: 8 lépés
Nano 33 IoT + EC/pH/ORP + WebAPK: 8 lépés

Videó: Nano 33 IoT + EC/pH/ORP + WebAPK: 8 lépés

Videó: Nano 33 IoT + EC/pH/ORP + WebAPK: 8 lépés
Videó: Gab’s Haven - Hydroponics pH and PPM/EC Automation 2024, Július
Anonim
Nano 33 IoT + EC/pH/ORP + WebAPK
Nano 33 IoT + EC/pH/ORP + WebAPK

Kövesse a szerző további információit:

Tárolja és ábrázolja az EC/pH/ORP adatokat a TICK Stack és a NoCAN platform segítségével
Tárolja és ábrázolja az EC/pH/ORP adatokat a TICK Stack és a NoCAN platform segítségével
Tárolja és ábrázolja az EC/pH/ORP adatokat a TICK Stack és a NoCAN platform segítségével
Tárolja és ábrázolja az EC/pH/ORP adatokat a TICK Stack és a NoCAN platform segítségével
IoT Pool megfigyelés a ThingsBoard segítségével
IoT Pool megfigyelés a ThingsBoard segítségével
IoT Pool megfigyelés a ThingsBoard segítségével
IoT Pool megfigyelés a ThingsBoard segítségével
IoT hidroponika - Az IBM Watsonjának használata PH és EC mérésekhez
IoT hidroponika - Az IBM Watsonjának használata PH és EC mérésekhez
IoT hidroponika - Az IBM Watsonjának használata PH és EC mérésekhez
IoT hidroponika - Az IBM Watsonjának használata PH és EC mérésekhez

Névjegy: Adja hozzá a pH, az ORP, az EC vagy a sótartalom mérésének képességét az Arduino vagy a Raspberry Pi projekthez. Bővebben az ufire -ről »

Eszköz az EC, a pH, az ORP és a hőmérséklet mérésére. Használható a medence vagy a hidroponikus rendszer figyelésére. A Bluetooth Low Energy segítségével kommunikál, és megjeleníti az információkat egy weboldalon a Web Bluetooth használatával. És szórakozásból ezt progresszív webalkalmazássá alakítjuk, amelyet az internetről telepíthet.

1. lépés: Mik ezek a feltételek?

Az EC/pH/ORP/hőmérséklet a leggyakoribb vízminőségi mérések. Az elektromos vezetőképességet (EC) használják a hidroponikában a tápoldat mérésére, a víz savas vagy lúgos pH -ját, és az ORP -t használják a víz fertőtlenítő képességének meghatározására

  • A Bluetooth Low Energy egy vezeték nélküli protokoll, amely könnyen küld és fogad információt. Az ebben a projektben használt Arduino kártya a Nano 33 IoT, és WiFi és BLE interfészekkel rendelkezik.
  • A Web Bluetooth a Google Chrome böngészőjében (és az Opera -ban) megvalósított API -k összessége, amelyek lehetővé teszik egy weboldal közvetlen kommunikációját a BLE -eszközzel.
  • A progresszív webes alkalmazások alapvetően olyan weboldalak, amelyek úgy működnek, mint a hagyományos alkalmazások. Az Android és az iPhone másképp kezeli őket, és asztali számítógépeken is különböznek egymástól, ezért a részletekért olvasni kell.

2. lépés: A hardver

A hardver
A hardver
A hardver
A hardver

Mielőtt összeállíthatnánk a hardvert, egy dolgot kell kezelnünk. Az uFire ISE érzékelőeszközök ugyanazzal az I2C címmel érkeznek, és kettőt használunk, ezért egyet ki kell cserélni. Ehhez a projekthez az ISE táblák közül választunk egyet, és az ORP mérésére használjuk. Az itt leírt lépéseket követve módosítsa a címet 0x3e értékre.

Most, hogy a cím megváltozott, a hardver összeállítása egyszerű. Minden érzékelő eszköz a Qwiic connect rendszert használja, így csak össze kell kötni mindent egy láncban. Szüksége lesz egy Qwiic -Male vezetékre az egyik érzékelő Nano 33 -hoz való csatlakoztatásához. A vezetékek konzisztensek és színkódoltak. Csatlakoztassa a feketét a Nano GND -jéhez, a pirosat a +3,3 V vagy a +5 V -os tűhöz, a kéket az SDA -tűhöz, amely A4 -es, és sárgát az A5 -ös SCL -tűhöz.

Ebben a projektben elvárja, hogy a hőmérsékleti információk az EK -érzékelőtől érkezzenek, ezért feltétlenül csatlakoztasson egy hőmérséklet -érzékelőt az EK -panelhez. Bár minden tábla képes a hőmérséklet mérésére. Ne felejtse el csatlakoztatni az EC, pH és ORP szondákat a megfelelő érzékelőkhöz. Könnyen rögzíthetők BNC csatlakozókkal.

Ha van háza, akkor jó ötlet mindezt behelyezni, különösen, ha figyelembe vesszük a vizet.

3. lépés: A szoftver

Ennek szoftverrésze két fő részre oszlik: a Nano 33 firmware -jére és a weboldalra.

Az alapfolyamat a következő:

  • A weboldal a BLE -n keresztül kapcsolódik a Nano -hoz
  • A weboldal szöveges parancsokat küld, hogy információt kérjen vagy intézkedéseket tegyen
  • A Nano hallgatja ezeket a parancsokat, végrehajtja őket, és információkat ad vissza
  • A weboldal megkapja a válaszokat, és ennek megfelelően frissíti a felhasználói felületet

Ez a beállítás lehetővé teszi, hogy a weboldal elvégezze az elvárható összes szükséges funkciót, például mérést végezzen vagy kalibrálja az érzékelőket.

4. lépés: BLE szolgáltatások és jellemzők

Az egyik első dolog, amit meg kell tanulni, a BLE működésének alapjai.

Rengeteg hasonlat létezik, ezért válasszunk egy könyvet. A szolgáltatás könyv lenne, és jellegzetessége az oldalak. Ebben a "BLE könyvben" az oldalaknak van néhány nem könyvtulajdonsága, például az oldal mondanivalójának megváltoztatása, és értesítés küldése, amikor ez megtörténik.

Egy BLE eszköz annyi szolgáltatást tud nyújtani, amennyit csak akar. Egyesek előre definiáltak, és egyfajta módon szabványosítják az általánosan használt információkat, például a Tx Power -t vagy a kapcsolat elvesztését, és olyan specifikusabb dolgokat, mint az inzulin vagy a pulzus -oximetria. Te is készíthetsz egyet, és bármit megtehetsz vele. Ezeket szoftverek határozzák meg, és azonosítják őket UUID azonosítóval. Itt készíthet UUID -t.

Ennek az eszköznek a firmware -jében van egy szolgáltatás, amelyet a következőképpen határoznak meg:

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

és két jellemző:

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

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

A tx_Characteristic lesz az, ahol az eszközök kiküldik az információkat, például az EC méréseket, a weboldal megjelenítéséhez. Az rx_Characteristic az, ahol végrehajtandó parancsokat kap a weblapról.

Ez a projekt az ArduinoBLE könyvtárat használja. Ha megnézed, látni fogod, hogy egy páran eltérnek attól, hogy jellemzőt nyilvánítanak. Ez a projekt a BLEStringCharacteristic -t használja, mert a String típussal fogunk foglalkozni, és ez egyszerűbb, de a BLECharCharacteristic vagy a BLEByteCharacteristic közül is választhat maroknyi közül.

Ezenkívül vannak olyan tulajdonságok, amelyek megadhatják a jellemzőt. A tx_Characteristic a BLENotify opciót tartalmazza. Ez azt jelenti, hogy weboldalunk értesítést kap, ha annak értéke megváltozik. Az rx_Characteristic rendelkezik BLEWrite programmal, amely lehetővé teszi weboldalunk számára, hogy módosítsa azt. Vannak mások is.

Ezután van egy kis kódragasztó, hogy összekösse ezeket az anyagokat:

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 ();

Ez többé-kevésbé magától értetődő, de érintsünk meg néhány pontot.

rx_Characteristic.setEventHandler (BLEWritten, rxCallback);

Ez az a hely, ahol kihasználja, hogy értesítést kap az érték változásáról. A sor azt mondja az osztálynak, hogy az érték megváltoztatásakor hajtsa végre az rxCallback függvényt.

BLE.advertise ();

ez indítja el az egészet. A BLE eszköz rendszeres időközönként egy kis információcsomagot küld ki arról, hogy kint van, és csatlakozhat hozzá. Enélkül láthatatlan lesz.

5. lépés: Szöveges parancsok

Amint korábban említettük, ez az eszköz egyszerű szöveges parancsokon keresztül fog beszélni a weblappal. Az egészet könnyű megvalósítani, mert a kemény munkát már elvégezték. Az uFire érzékelők JSON és MsgPack alapú könyvtárral rendelkeznek a parancsok küldéséhez és fogadásához. Az EC és ISE parancsokról bővebben a dokumentációs oldalakon olvashat.

Ez a projekt a JSON -t fogja használni, mert egy kicsit könnyebb vele dolgozni és olvasható, ellentétben a bináris MsgPack formátummal.

Íme egy példa arra, hogyan kapcsolódik össze minden:

  • A weboldal EC -mérést kér az eszköztől az ec elküldésével (vagy pontosabban az ec írásával az rx_Characteristic karakterisztikához)
  • Az eszköz megkapja a parancsot és végrehajtja. Ezt követően a tx_Characteristic jellemzőre írva visszaküldi az "ec": 1.24} JSON formátumú választ.
  • A weboldal megkapja az információkat és megjeleníti azokat

6. lépés: A weboldal

A projekt weboldala a Vue.js-t fogja használni a kezelőfelülethez. Nincs szükség háttérrendszerre. Ezenkívül, hogy a dolgok egy kicsit egyszerűbbek legyenek, nem használnak felépítési rendszert. A szokásos mappákra van felosztva, js a javascripthez, css a CSS -hez, eszközök az ikonokhoz. A html része semmi különös. A bulma.io -t használja a stílushoz, és létrehozza a felhasználói felületet. Sokat fogsz észrevenni a részben. Hozzáadja az összes css -t és ikont, de egy sort is.

Ez tölti be a manifest.json fájlunkat, ami az összes PWA -dolog megtörténését eredményezi. Bizonyos információkat deklarál, amelyek azt mondják telefonunknak, hogy ez a weboldal alkalmazássá alakítható.

A javascriptben történik a legtöbb érdekes dolog. Fájlokra van bontva, az app.js tartalmazza a Vue weboldal alapjait, az összes felhasználói felülethez kapcsolódó változóval és néhány más dologgal együtt. A ble.js rendelkezik a bluetooth cuccokkal.

7. lépés: Javascript és webes Bluetooth

Először is, ez csak Chrome és Opera operációs rendszereken működik. Bárcsak más böngészők támogatnák ezt, de bármilyen okból nem. Nézze meg az app.js oldalt, és ugyanazokat az UUID -ket fogja látni, amelyeket a firmware -ben használtunk. Egyet az uFire szolgáltatáshoz, egyet pedig a tx és rx jellemzőkhöz.

Ha most a ble.js fájlba nézel, látni fogod a connect () és aconnect () függvényeket.

A connect () függvény tartalmaz némi logikát a kezelőfelület szinkronban tartásához, de többnyire úgy állítja be, hogy információkat küldjön és fogadjon a jellemzőkkel kapcsolatban.

Van néhány sajátosság a Web Bluetooth használatával. A kapcsolatot valamilyen fizikai felhasználói interakcióval kell kezdeményezni, például egy gomb megérintésével. Nem programozhatóan csatlakozhat például a weboldal betöltésekor.

A kapcsolat elindításához szükséges kód így néz ki:

this.device = wait navigator.bluetooth.requestDevice ({

szűrők: [{namePrefix: "uFire"}], opcionálisSzolgáltatások: [this.serviceUuid]});

A szűrők: és az opcionális Szolgáltatások szakaszra azért van szükség, hogy ne jelenjen meg minden egyes BLE -eszköz. Azt gondolná, hogy csak a szűrő rész lenne jó, de szüksége van az opcionálisServices részre is.

A fenti kód egy kapcsolat párbeszédablakot jelenít meg. Ez a Chrome felület része, és nem módosítható. A felhasználó választ a listából. Még ha csak egy olyan eszköz is van, amelyhez az alkalmazás valaha is csatlakozna, a felhasználónak biztonsági okok miatt továbbra is végig kell mennie ezen a kiválasztási párbeszédpanelen.

A kód többi része a szolgáltatás és a jellemzők beállítása. Vegye figyelembe, hogy a firmware értesítési visszahívásához hasonló visszahívási rutint állítottunk be:

service = wait server.getPrimaryService (this.serviceUuid);

jellemző = várakozás a szolgáltatásra.getCharacteristic (this.txUuid); várja a jellemzőt.startNotifications (); karakterisztika.addEventListener ("jellemzőértékváltozott", this.value_update);

Ezt az érték.frissítést most minden alkalommal meg kell hívni, amikor új információ érkezik a tx karakterisztikáról.

Az egyik utolsó dolog, amit tesz, az az időzítő beállítása, amely 5 másodpercenként frissíti az információkat.

A value_update () csak egy hosszú függvény, amely várja, hogy új JSON -információk érkezzenek, és ezzel frissíti a felhasználói felületet.

Az ec.js, a ph.js és az orp.js sok apró funkciót tartalmaz, amelyek elküldik a parancsokat az információk lekérésére és az eszközök kalibrálására.

Ennek kipróbálásához szem előtt kell tartania, hogy a Web Bluetooth használatához HTTPS protokollon keresztül kell megjeleníteni. A helyi HTTPS szerver számos lehetősége közül az egyik a serve-https. A firmware feltöltésével, minden csatlakoztatottal és a kiszolgált weboldallal látnia kell, hogy minden működik.

8. lépés: A PWA alkatrész

A PWA rész
A PWA rész

Van néhány lépés, amellyel a weboldalt tényleges alkalmazássá alakíthatja. A progresszív webes alkalmazások sokkal többet tehetnek, mint amennyit ez a projekt felhasznál.

  • Weboldal telepítése
  • A telepítés után offline hozzáférés lehetséges
  • Elindult és normál alkalmazásként fut, rendes megjelenésű alkalmazás ikonnal

A kezdéshez létre kell hoznunk egy csomó fájlt. Az első egy manifest.json fájl. Van egy maroknyi webhely, amely ezt megteszi helyetted, App Manifest Generator, ezek egyike.

Pár dolog, amit meg kell érteni:

  • Az alkalmazás hatóköre fontos. Ezt a weboldalt az ufire.co/uFire-BLE/ címen tettem fel. Ez azt jelenti, hogy az alkalmazási köröm az /uFire-BLE /.
  • A kezdő URL is fontos. Ez az útvonal az adott weboldalhoz, ahol az alaptartomány már feltételezett. Tehát mivel ezt az ufire.co/uFire-BLE/ címre tettem, a kezdő URL/uFire-BLE/too.
  • A megjelenítési mód határozza meg, hogy az alkalmazás hogyan néz ki, az önálló pedig úgy tűnik, hogy normál alkalmazás, Chrome gombok és kezelőfelület nélkül.

A végén egy json fájlt kap. A weboldal gyökerében kell elhelyezni, közvetlenül az index.html fájllal együtt.

A következő dolog, amire szüksége lesz, egy szervizmunkás. Ismét sokat tehetnek, de ez a projekt csak a gyorsítótárazást használja az alkalmazás offline eléréséhez. A szervizmunkás megvalósítása többnyire kazánlemez. Ez a projekt a Google példáját használta, és megváltoztatta a gyorsítótárazni kívánt fájlok listáját. Nem tárolhat gyorsítótárat a tartományán kívüli fájlokban.

Menjen a FavIcon generátorhoz, és készítsen néhány ikont.

Az utolsó dolog az, hogy hozzáadunk néhány kódot a Vue mount () függvényhez.

csatolt: function () {if ('serviceWorker' a navigátorban) {navigator.serviceWorker.register ('service-worker.js'); }}

Ezzel regisztrálja a dolgozót a böngészőben.

Ellenőrizheti, hogy minden működik -e, és ha nem, akkor talán a Lighthouse használatával találja ki, miért, az elemzi a webhelyet, és mindenfélét elmond.

Ha minden működött, amikor a weboldalra megy, a Chrome megkérdezi, hogy fel szeretné -e telepíteni egy felugró szalaghirdetéssel. Láthatja működés közben az ufire.co/uFire-BLE/ címen, ha mobil Chrome-ot használ. Ha asztali számítógépen tartózkodik, talál egy menüpontot a telepítéshez.