Satura rādītājs:

Nano 33 IoT + EC/pH/ORP + WebAPK: 8 soļi
Nano 33 IoT + EC/pH/ORP + WebAPK: 8 soļi

Video: Nano 33 IoT + EC/pH/ORP + WebAPK: 8 soļi

Video: Nano 33 IoT + EC/pH/ORP + WebAPK: 8 soļi
Video: Gab’s Haven - Hydroponics pH and PPM/EC Automation 2024, Jūlijs
Anonim
Nano 33 IoT + EC/pH/ORP + WebAPK
Nano 33 IoT + EC/pH/ORP + WebAPK

Sekojiet vairāk autora:

Saglabājiet un grafiski ierakstiet EC/pH/ORP datus, izmantojot TICK steku un NoCAN platformu
Saglabājiet un grafiski ierakstiet EC/pH/ORP datus, izmantojot TICK steku un NoCAN platformu
Saglabājiet un grafiski ierakstiet EC/pH/ORP datus, izmantojot TICK steku un NoCAN platformu
Saglabājiet un grafiski ierakstiet EC/pH/ORP datus, izmantojot TICK steku un NoCAN platformu
IoT baseina uzraudzība, izmantojot ThingsBoard
IoT baseina uzraudzība, izmantojot ThingsBoard
IoT baseina uzraudzība, izmantojot ThingsBoard
IoT baseina uzraudzība, izmantojot ThingsBoard
IoT hidroponika - IBM Watson izmantošana PH un EC mērījumiem
IoT hidroponika - IBM Watson izmantošana PH un EC mērījumiem
IoT hidroponika - IBM Watson izmantošana PH un EC mērījumiem
IoT hidroponika - IBM Watson izmantošana PH un EC mērījumiem

Par: Pievienojiet savam Arduino vai Raspberry Pi projektam iespēju izmērīt pH, ORP, EC vai sāļumu. Vairāk par ufire »

Ierīce EK, pH, ORP un temperatūras mērīšanai. To var izmantot, lai uzraudzītu baseinu vai hidroponisko iestatījumu. Tas sazināsies, izmantojot Bluetooth Low Energy un parādīs informāciju tīmekļa lapā, izmantojot Web Bluetooth. Un jautrības labad mēs to pārvērtīsim par progresīvo tīmekļa lietotni, kuru varat instalēt no tīmekļa.

1. darbība. Kādi ir visi šie noteikumi?

EC/pH/ORP/temperatūra ir daži no visizplatītākajiem ūdens kvalitātes mērījumiem. Elektriskā vadītspēja (EK) tiek izmantota hidroponikā, lai izmērītu barības vielu šķīdumu, pH, cik ūdens ir skābs/sārms, un ORP izmanto, lai palīdzētu noteikt ūdens spēju dezinficēt sevi

  • Bluetooth Low Energy ir bezvadu protokols, kas ļauj viegli nosūtīt un saņemt informāciju. Šajā projektā izmantotā Arduino plate ir Nano 33 IoT, un tai ir WiFi un BLE saskarnes.
  • Web Bluetooth ir API komplekts, kas ieviests Google pārlūkprogrammā Chrome (un Opera), kas ļauj tīmekļa lapai tieši sazināties ar BLE ierīci.
  • Progresīvās tīmekļa lietotnes būtībā ir tīmekļa lapas, kas darbojas kā parastās lietotnes. Android un iPhone apstrādā tos atšķirīgi, un galddatoros tie atšķiras, tāpēc jums būs nedaudz jālasa, lai uzzinātu specifiku.

2. darbība: aparatūra

Aparatūra
Aparatūra
Aparatūra
Aparatūra

Pirms mēs varam salikt aparatūru, ir jārisina viena lieta. UFire ISE sensoru ierīcēm ir viena un tā pati I2C adrese, un mēs izmantojam divas, tāpēc viena būs jāmaina. Šim projektam mēs izvēlēsimies vienu no ISE dēļiem un izmantosim to, lai izmērītu ORP. Veicot šeit norādītās darbības, nomainiet adresi uz 0x3e.

Tagad, kad adrese ir mainīta, aparatūras salikšana ir vienkārša. Visas sensoru ierīces izmanto Qwiic connect sistēmu, tāpēc vienkārši savienojiet visu kopā ķēdē. Jums būs nepieciešams viens Qwiic - Male vads, lai savienotu vienu no sensoriem ar Nano 33. Vadi ir konsekventi un krāsoti. Pievienojiet melno Nano GND, sarkano - pie +3.3V vai +5V tapas, zilo - pie SDA tapas, kas ir A4, un dzelteno - pie SCL tapas A5.

Šim projektam tā sagaidīs, ka temperatūras informācija tiks saņemta no EK sensora, tāpēc noteikti piestipriniet temperatūras sensoru pie EK plates. Tomēr visiem dēļiem ir iespēja izmērīt temperatūru. Neaizmirstiet piestiprināt EC, pH un ORP zondes atbilstošajiem sensoriem. Tos ir viegli piestiprināt ar BNC savienotājiem.

Ja jums ir norobežojums, to visu ievietot iekšā būtu laba ideja, jo īpaši ņemot vērā, ka tiks iesaistīts ūdens.

3. darbība: programmatūra

Programmatūras daļa ir sadalīta divās galvenajās sadaļās: Nano 33 programmaparatūra un tīmekļa lapa.

Pamata plūsma ir šāda:

  • Tīmekļa lapa savienojas ar Nano, izmantojot BLE
  • Tīmekļa lapa sūta teksta komandas, lai lūgtu informāciju vai veiktu darbības
  • Nano uzklausa šīs komandas, izpilda tās un atgriež informāciju
  • Tīmekļa lapa saņem atbildes un attiecīgi atjaunina lietotāja saskarni

Šī iestatīšana ļauj tīmekļa lapai veikt visas nepieciešamās funkcijas, piemēram, veikt mērījumus vai kalibrēt sensorus.

4. solis: BLE pakalpojumi un raksturojums

Viena no pirmajām lietām, kas jāapgūst, ir BLE darbības pamati.

Analoģiju ir daudz, tāpēc izvēlieties grāmatu. Pakalpojums būtu grāmata, un īpašība būtu lapas. Šajā "BLE grāmatā" lapām ir daži ar grāmatu nesaistīti rekvizīti, piemēram, iespēja mainīt lapas teikto un saņemt paziņojumu, kad tas notiek.

BLE ierīce var sniegt tik daudz pakalpojumu, cik vēlas. Daži no tiem ir iepriekš definēti un darbojas kā veids, kā standartizēt bieži lietotu informāciju, piemēram, Tx Power vai savienojuma pārtraukšanu, līdz konkrētākām lietām, piemēram, insulīnam vai pulsa oksimetrijai. Jūs varat arī vienkārši izveidot vienu un darīt ar to visu, ko vēlaties. Tie ir definēti programmatūrā un tiek identificēti ar UUID. Šeit varat izveidot UUID.

Šīs ierīces programmaparatūrā ir viens pakalpojums, kas definēts kā:

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

un divas īpašības:

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

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

Tx_Characteristic būs vieta, kur ierīces nosūta informāciju, piemēram, EK mērījumus, lai parādītu tīmekļa lapu. Rx_Characteristic ir vieta, kur tā saņems izpildāmās komandas no tīmekļa lapas.

Šis projekts izmanto ArduinoBLE bibliotēku. Ja paskatās, jūs redzēsit, ka ir dažas atšķirīgas pazīmes, kas jāpasludina par īpašībām. Šajā projektā tiek izmantots BLEStringCharacteristic, jo mēs strādāsim ar virknes tipu, un tas ir vienkārši vieglāk, taču jūs varat arī izvēlēties BLECharCharacteristic vai BLEByteCharacteristic no nedaudziem citiem.

Turklāt ir dažas īpašības, kurām varat piešķirt raksturlielumu. tx_Characteristic kā opcija ir BLENotify. Tas nozīmē, ka mūsu vietne saņems paziņojumu, kad tās vērtība mainīsies. rx_Characteristic ir BLEWrite, kas ļaus mūsu vietnei to mainīt. Ir arī citi.

Tad ir nedaudz koda līmes, lai sasaistītu visas šīs lietas kopā:

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.reklāma ();

Tas ir vairāk vai mazāk pašsaprotami, bet pieskarsimies dažiem punktiem.

rx_Characteristic.setEventHandler (BLEWritten, rxCallback);

Vai jūs izmantojat iespēju saņemt paziņojumu par mainīto vērtību. Līnija liek klasei izpildīt funkciju rxCallback, kad vērtība tiek mainīta.

BLE.reklāma ();

ar ko viss sākas. BLE ierīce periodiski izsūtīs nelielu informācijas paketi, paziņojot, ka tā ir pieejama un ir pieejama savienošanai. Bez tā tas būs neredzams.

5. darbība: teksta komandas

Kā minēts iepriekš, šī ierīce runās ar tīmekļa lapu, izmantojot vienkāršas teksta komandas. To visu ir viegli īstenot, jo smagais darbs jau ir paveikts. UFire sensoriem ir JSON un MsgPack balstīta bibliotēka komandu nosūtīšanai un saņemšanai. Vairāk par EK un ISE komandām varat lasīt to dokumentācijas lapās.

Šis projekts izmantos JSON, jo ar to ir nedaudz vieglāk strādāt un tas ir lasāms, atšķirībā no binārā MsgPack formāta.

Šeit ir piemērs tam, kā tas viss ir saistīts:

  • Tīmekļa lapa lūdz ierīcei veikt EK mērījumu, nosūtot ec (vai precīzāk rakstot ec uz rx_Characteristic raksturlielumu)
  • Ierīce saņem komandu un izpilda to. Pēc tam tā nosūta atpakaļ JSON formatētu atbildi {"ec": 1.24}, rakstot uz tx_Characteristic raksturlielumu.
  • Tīmekļa lapa saņem informāciju un parāda to

6. darbība: tīmekļa lapa

Šī projekta tīmekļa vietnei priekšpusē tiks izmantots Vue.js. Nav nepieciešama aizmugure. Turklāt, lai lietas būtu nedaudz vienkāršākas, netiek izmantota būvēšanas sistēma. Tas ir sadalīts parastajās mapēs, js - javascript, css - CSS, aktīvi - ikonām. Tā html daļa nav nekas īpašs. Stils izmanto bulma.io un izveido lietotāja interfeisu. Sadaļā pamanīsit daudz. Tas pievieno visus css un ikonas, bet arī īpaši pievieno vienu rindiņu.

Tiek ielādēts mūsu manifest.json fails, kas liek notikt visām PWA lietām. Tajā tiek deklarēta informācija, kas mūsu tālrunim norāda, ka šo tīmekļa lapu var pārvērst par lietotni.

Javascript ir vieta, kur notiek lielākā daļa interesantu lietu. Tas ir sadalīts failos, app.js satur pamatus, kā iegūt Vue tīmekļa lapu, kā arī visus ar lietotāja saskarni saistītos mainīgos un dažas citas lietas. ble.js ir bluetooth sīkumi.

7. darbība: Javascript un tīmekļa Bluetooth

Pirmkārt, tas darbojas tikai pārlūkā Chrome un Opera. Es vēlos, lai citas pārlūkprogrammas to atbalstītu, bet kāda iemesla dēļ viņi to neatbalsta. Apskatiet lietotni app.js, un jūs redzēsit tos pašus UUID, kurus izmantojām mūsu programmaparatūrā. Viens uFire pakalpojumam un viens tx un rx īpašībām.

Tagad, ieskatoties ble.js, jūs redzēsiet funkcijas connect () un atvienot ().

Funkcija connect () satur zināmu loģiku, lai lietotāja saskarne tiktu sinhronizēta, taču tā galvenokārt tiek iestatīta, lai nosūtītu un saņemtu informāciju par īpašībām.

Darbojoties ar tīmekļa Bluetooth, ir dažas īpatnības. Savienojums ir jāuzsāk, izmantojot lietotāja fizisku mijiedarbību, piemēram, pieskaroties pogai. Jūs, piemēram, nevarat programmētiski izveidot savienojumu, kad tiek ielādēta tīmekļa lapa.

Kods savienojuma sākšanai izskatās šādi:

this.device = gaidīt navigator.bluetooth.requestDevice ({

filtri: [{namePrefix: "uFire"}], pēc izvēlesServices: [this.serviceUuid]});

Filtri: un pēc izvēlesServisu sadaļa ir nepieciešama, lai izvairītos no katras tur redzamās BLE ierīces. Jūs domājat, ka tikai filtra sadaļa būtu piemērota, taču jums ir nepieciešama arī papildu pakalpojumu daļa.

Iepriekš minētais kods parādīs savienojuma dialoglodziņu. Tā ir daļa no Chrome saskarnes, un to nevar mainīt. Lietotājs izvēlēsies no saraksta. Pat ja ir tikai viena ierīce, ar kuru lietotne varētu izveidot savienojumu, drošības apsvērumu dēļ lietotājam joprojām ir jāiziet šis atlases dialoglodziņš.

Pārējais kods ir pakalpojuma un īpašību iestatīšana. Ņemiet vērā, ka mēs izveidojām atzvanīšanas procedūru, līdzīgi kā programmaparatūras paziņojuma atzvanīšana:

serviss = gaidīt serveri.getPrimaryService (this.serviceUuid);

raksturojums = gaidīt pakalpojumu.getCharacteristic (this.txUuid); gaidīt raksturojumu.startNotifications (); character.addEventListener ("raksturlielumaizmainīts", šis.vērtības_updāts);

Šis.value_update tiks izsaukts katru reizi, kad būs jauna informācija par tx raksturlielumu.

Viena no pēdējām lietām, ko tā veic, ir iestatīt taimeri, lai atjauninātu informāciju ik pēc 5 sekundēm.

value_update () ir tikai gara funkcija, kas gaida jaunas JSON informācijas ienākšanu un ar to atjaunina lietotāja saskarni.

ec.js, ph.js un orp.js satur daudzas mazas funkcijas, kas izsūta komandas, lai izgūtu informāciju un kalibrētu ierīces.

Lai to izmēģinātu, jums jāpatur prātā, ka, lai izmantotu Web Bluetooth, tas ir jāapkalpo, izmantojot HTTPS. Viena no daudzajām vietējā HTTPS servera iespējām ir serve-https. Kad programmaparatūra ir augšupielādēta, viss savienots un tīmekļa lapa tiek pasniegta, jums vajadzētu redzēt, kā viss darbojas.

8. solis: PWA daļa

PWA daļa
PWA daļa

Ir dažas darbības, lai tīmekļa lapu pārvērstu par faktisku lietotni. Progresīvās tīmekļa lietotnes var paveikt daudz vairāk, nekā šis projekts tās izmanto.

  • Tīmekļa lapas uzstādīšana
  • Pēc instalēšanas ir iespējama piekļuve bezsaistē
  • Sākās un darbojas kā parasta lietotne ar regulāra izskata lietotnes ikonu

Lai sāktu, mums būs jāģenerē virkne failu. Pirmais ir manifest.json fails. Ir dažas vietnes, kas to darīs jūsu vietā, lietotņu manifesta ģenerators, kas ir viena no tām.

Pāris lietas, kas jāsaprot:

  • Pielietojuma apjoms ir svarīgs. Es ievietoju šo tīmekļa vietni vietnē ufire.co/uFire-BLE/. Tas nozīmē, ka mana lietojuma joma ir /uFire-BLE /.
  • Arī sākuma URL ir svarīgs. Tas ir ceļš uz jūsu konkrēto tīmekļa lapu, kuras bāzes domēns jau ir pieņemts. Tā kā es to ievietoju vietnē ufire.co/uFire-BLE/, sākuma URL ir/uFire-BLE/too.
  • Displeja režīms noteiks, kā lietotne izskatās, un atsevišķā veidā tā izskatīsies kā parasta lietotne bez Chrome pogām vai saskarnes.

Jūs galu galā saņemsiet json failu. Tas ir jāievieto tīmekļa lapas saknē kopā ar index.html.

Nākamā lieta, kas jums nepieciešama, ir servisa darbinieks. Atkal viņi var darīt daudz, taču šis projekts izmantos tikai kešatmiņu, lai ļautu šai lietotnei piekļūt bezsaistē. Servisa darbinieka īstenošana lielākoties ir katla plāksne. Šis projekts izmantoja Google piemēru un mainīja kešatmiņā saglabāto failu sarakstu. Jūs nevarat saglabāt kešatmiņā failus ārpus sava domēna.

Dodieties uz FavIcon Generator un izveidojiet dažas ikonas.

Pēdējā lieta ir pievienot kādu kodu funkcijai Vue mount ().

uzstādīts: function () {if ('serviceWorker' navigatorā) {navigator.serviceWorker.register ('service-worker.js'); }}

Tādējādi darbinieks tiks reģistrēts pārlūkprogrammā.

Jūs varat pārbaudīt, vai viss darbojas, un, ja nē, varbūt izdomājiet, kāpēc, izmantojot bāku, tā analizēs vietni un pastāstīs jums visdažādākās lietas.

Ja viss darbojās, atverot tīmekļa lapu, pārlūks Chrome jautās, vai vēlaties to instalēt ar uznirstošo reklāmkarogu. To varat redzēt darbībā vietnē ufire.co/uFire-BLE/, ja izmantojat pārlūku Chrome. Ja izmantojat darbvirsmu, varat atrast izvēlnes vienumu, lai to instalētu.