Sisukord:
- Samm: mis on kõik need tingimused?
- Samm: riistvara
- Samm: tarkvara
- 4. samm: BLE teenused ja omadused
- Samm: tekstikäsklused
- 6. samm: veebisait
- Samm: Javascript ja veebibluetooth
- 8. samm: PWA osa
Video: Nano 33 IoT + EC/pH/ORP + WebAPK: 8 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:48
Jälgige rohkem autorit:
Teave: lisage oma Arduino või Raspberry Pi projektile pH, ORP, EC või soolsuse mõõtmise võimalus. Ufire kohta rohkem »
Seade EÜ, pH, ORP ja temperatuuri mõõtmiseks. Seda saab kasutada basseini või hüdropoonika seadistuse jälgimiseks. See suhtleb Bluetooth Low Energy kaudu ja kuvab teabe veebisaidil Web Bluetooth. Nalja pärast muudame selle progressiivseks veebirakenduseks, mille saate veebist installida.
Samm: mis on kõik need tingimused?
EC/pH/ORP/temperatuur on ühed levinumad veekvaliteedi mõõtmised. Elektrijuhtivust (EC) kasutatakse hüdropoonikas, et mõõta toitelahust, pH -d, kui happeline/aluseline vesi on, ja ORP -d kasutatakse vee desinfitseerimisvõime määramiseks
- Bluetooth Low Energy on juhtmevaba protokoll teabe hõlpsaks saatmiseks ja vastuvõtmiseks. Selles projektis kasutatav Arduino plaat on Nano 33 IoT ning sellel on WiFi ja BLE liidesed.
- Veeb Bluetooth on Google'i Chrome'i brauseris (ja Opera) juurutatud API -de kogum, mis võimaldab veebilehel otse suhelda BLE -seadmega.
- Progressiivsed veebirakendused on põhimõtteliselt veebilehed, mis toimivad nagu tavalised rakendused. Android ja iPhone käitlevad neid erinevalt ning lauaarvutitel on need erinevad, seega peate täpsustamiseks natuke lugema.
Samm: riistvara
Enne riistvara kokkupanekut tuleb tegeleda ühe asjaga. UFire ISE anduriseadmetel on sama I2C -aadress ja me kasutame kahte, seega tuleb üks muuta. Selle projekti jaoks valime ühe ISE -plaatide ja kasutame seda ORP mõõtmiseks. Järgides siin toodud juhiseid, muutke aadressiks 0x3e.
Nüüd, kui aadress on muudetud, on riistvara kokkupanek lihtne. Kõik anduriseadmed kasutavad Qwiic ühendussüsteemi, nii et ühendage kõik ahelas kokku. Ühe anduri ühendamiseks Nano 33 -ga vajate ühte Qwiic -Male juhet. Juhtmed on ühtlased ja värvikoodiga. Ühendage must Nano GND -ga, punane kas +3,3 V või +5 V pistikuga, sinine SDA -tihvtiga, mis on A4, ja kollane A5 SCL -tihvtiga.
Selle projekti puhul eeldab see, et temperatuuriteave tuleb EC -andurilt, seega kinnitage kindlasti temperatuuriandur EC -plaadi külge. Kõigil plaatidel on aga võimalus temperatuuri mõõta. Ärge unustage kinnitada EC, pH ja ORP sondid vastavatele anduritele. Neid on lihtne ühendada BNC pistikutega.
Kui teil on ümbris, oleks hea see kõik sisse panna, eriti kui arvestada, et sellega kaasneb vesi.
Samm: tarkvara
Selle tarkvara osa on jagatud kaheks põhiosaks: Nano 33 püsivara ja veebileht.
Põhivool on järgmine:
- Veebileht ühendub Nano kaudu BLE kaudu
- Veebileht saadab tekstipõhiseid käske teabe küsimiseks või toimingute tegemiseks
- Nano kuulab neid käske, täidab neid ja tagastab teabe
- Veebileht saab vastused ja värskendab kasutajaliidest vastavalt
See seadistus võimaldab veebisaidil täita kõiki nõutavaid funktsioone, näiteks mõõta mõõtmisi või kalibreerida andureid.
4. samm: BLE teenused ja omadused
Üks esimesi asju, mida õppida, on BLE toimimise põhitõed.
Analooge on palju, nii et valime raamatu. Teenus oleks raamat ja iseloomulik oleks lehed. Selles "BLE-raamatus" on lehtedel mõned mitteraamatulised omadused, näiteks võimalus muuta lehe öeldut ja saada märguanne, kui see juhtub.
BLE -seade saab teha nii palju teenuseid kui soovib. Mõned neist on eelnevalt määratletud ja toimivad viisina tavapärase teabe, näiteks Tx Power või ühenduse katkestamise, standardimiseks konkreetsemate asjadega, nagu insuliin või pulssoksümeetria. Võite ka selle lihtsalt teha ja teha sellega kõike, mida soovite. Need on määratletud tarkvaras ja identifitseeritud UUID -ga. Siin saate teha UUID -sid.
Selle seadme püsivaras on üks teenus, mis on määratletud järgmiselt:
BLEService uFire_Service ("4805d2d0-af9f-42c1-b950-eae78304c408");
ja kaks omadust:
BLEStringCharacteristic tx_Characteristic ("50fa7d80-440a-44d2-967a-ec7731ec736a", BLENotify, 20);
BLEStringCharacteristic rx_Characteristic ("50fa7d80-440b-44d2-967b-ec7731ec736b", BLEWrite, 20);
Tx_Character on see, kus seadmed saadavad veebilehele kuvatava teabe, näiteks EÜ mõõtmised, välja. Rx_Characteristic on koht, kus ta saab veebilehelt käske täita.
See projekt kasutab ArduinoBLE raamatukogu. Kui vaatate, näete, et on paar erinevat omadust. See projekt kasutab BLEStringCharacteristic, kuna tegeleme String -tüübiga ja see on lihtsalt lihtsam, kuid võite valida ka käputäie teiste hulgast BLECharCharacteristic või BLEByteCharacteristic.
Lisaks on omadusi, millele saate selle omaduse anda. tx_Characteristic on suvandina BLENotify. See tähendab, et meie veebisait saab teate, kui selle väärtus muutub. rx_Characteristicil on BLEWrite, mis võimaldab meie veebisaidil seda muuta. On ka teisi.
Siis on natuke koodiliimi, et kõik see kraam kokku siduda:
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.reklaam ();
See on enam-vähem iseenesestmõistetav, kuid puudutagem mõnda punkti.
rx_Characteristic.setEventHandler (BLEWritten, rxCallback);
See on koht, kus saate kasu sellest, et teile teatatakse muutuvast väärtusest. Rida käsib klassil väärtuse muutmisel täita funktsiooni rxCallback.
BLE.reklaam ();
see on see, mis kogu asja käima paneb. BLE -seade saadab perioodiliselt välja väikese teabepaketi, mis teatab, et see on olemas ja ühendamiseks saadaval. Ilma selleta on see nähtamatu.
Samm: tekstikäsklused
Nagu varem mainitud, räägib see seade veebilehega lihtsate tekstikäskluste kaudu. Kogu asja on lihtne rakendada, sest raske töö on juba tehtud. UFire anduritega on kaasas käskude saatmiseks ja vastuvõtmiseks JSON ja MsgPack põhine teek. Lisateavet EC ja ISE käskude kohta saate lugeda nende dokumentatsiooni lehtedelt.
See projekt kasutab JSON -i, kuna sellega on natuke lihtsam töötada ja lugeda, erinevalt binaarsest MsgPack -vormingust.
Siin on näide selle kohta, kuidas see kõik on ühendatud:
- Veebileht küsib seadmelt EC mõõtmist, saates ec (või täpsemalt kirjutades ec rx_Characteristic tunnusele)
- Seade võtab käsu vastu ja täidab selle. Seejärel saadab see tagasi JSON -vormingus vastuse {"ec": 1.24}, kirjutades tx_Characteristic tunnusele.
- Veebileht võtab teabe vastu ja kuvab selle
6. samm: veebisait
Selle projekti veebileht kasutab kasutajaliidese jaoks Vue.js. Taustaprogrammi pole vaja. Lisaks ei kasutata ehitussüsteemi, et asjad oleksid veidi lihtsamad. See on jagatud tavalisteks kaustadeks, js JavaScripti jaoks, css CSS -i jaoks, varadeks ikoonide jaoks. Selle html -osa pole midagi erilist. See kasutab stiilimiseks bulma.io -d ja loob kasutajaliidese. Jaotises märkate palju. See lisab kõik css -id ja ikoonid, aga ka ühe rea lisamise.
See laadib meie manifest.json faili, mis paneb kõik PWA asjad juhtuma. See deklareerib teatud teavet, mis ütleb meie telefonile, et selle veebisaidi saab muuta rakenduseks.
Javascriptis toimub enamik huvitavaid asju. See on jagatud failideks, app.js sisaldab põhitõdesid Vue veebilehe koos kõigi kasutajaliidesega seotud muutujate ja mõne muu asjaga. ble.js -s on bluetoothi kraam.
Samm: Javascript ja veebibluetooth
Esiteks töötab see ainult Chrome'is ja Opera. Soovin, et teised brauserid seda toetaksid, kuid mingil põhjusel nad seda ei tee. Vaadake app.js ja näete samu UUID -sid, mida kasutasime oma püsivaras. Üks uFire teenuse jaoks ja üks tx ja rx omaduste jaoks.
Kui vaatate ble.js -i, näete funktsioone Connect () ja Disconnect ().
Funktsioon connect () sisaldab teatud loogikat kasutajaliidese sünkroonimiseks, kuid enamasti seab see asjad omaduste kohta teabe saatmiseks ja vastuvõtmiseks.
Veebibluetoothiga suhtlemisel on mõned eripärad. Ühenduse peab algatama kasutaja füüsiline suhtlus, näiteks nupu puudutamine. Näiteks veebisaidi laadimisel ei saa te programmeerivalt ühendust luua.
Ühenduse alustamise kood näeb välja selline:
this.device = oota navi.bluetooth.requestDevice ({
filtrid: [{namePrefix: "uFire"}], valikulisedServices: [this.serviceUuid]});
Filtrid: ja valikuline Teenuste jaotis on vajalik, et vältida iga BLE -seadme nägemist. Te arvate, et lihtsalt filtriosa oleks hea, kuid vajate ka valikulist teenuste osa.
Ülaltoodud kood näitab ühenduse dialoogi. See on osa Chrome'i liidesest ja seda ei saa muuta. Kasutaja valib loendist. Isegi kui on ainult üks seade, millega rakendus kunagi ühendust loob, peab kasutaja turvamure tõttu selle valikudialoogi läbima.
Ülejäänud kood on teenuse ja omaduste seadistamine. Pange tähele, et seadistasime tagasihelistamisrutiini, mis sarnaneb püsivara märguande tagasikutsumisega:
teenus = oota server.getPrimaryService (this.serviceUuid);
iseloomulik = oodata teenust.getCharacteristic (this.txUuid); oodata iseloomulikku.startNotifications (); character.addEventListener ("iseloomulik väärtus muutunud", see.väärtuse_värskendus);
see.value_update helistatakse nüüd iga kord, kui tx omaduste kohta on uut teavet.
Üks viimaseid asju, mida ta teeb, on taimeri seadistamine teabe uuendamiseks iga 5 sekundi järel.
value_update () on lihtsalt pikk funktsioon, mis ootab uue JSON -teabe saabumist ja värskendab sellega kasutajaliidest.
ec.js, ph.js ja orp.js sisaldavad palju väikseid funktsioone, mis saadavad käske teabe hankimiseks ja seadmete kalibreerimiseks.
Selle proovimiseks peate meeles pidama, et veebi Bluetoothi kasutamiseks tuleb seda edastada HTTPS -i kaudu. Üks paljudest kohaliku HTTPS-serveri valikutest on serve-https. Kui püsivara on üles laaditud, kõik ühendatud ja veebileht on serveeritud, peaksite nägema, et kõik töötab.
8. samm: PWA osa
Veebilehe tegelikuks rakenduseks muutmiseks on mõned sammud. Progressiivsed veebirakendused võivad teha palju rohkem, kui see projekt neid kasutab.
- Veebilehe paigaldamine
- Pärast installimist on võrguühenduseta juurdepääs võimalik
- Käivitati ja töötab tavalise välimusega rakenduse ikooniga tavalise rakendusega
Alustamiseks peame genereerima hulga faile. Esimene on manifest.json -fail. Seal on käputäis saite, mis teevad seda teie jaoks, App Manifest Generator, olles üks neist.
Paar asja, millest aru saada:
- Rakenduse ulatus on oluline. Panin selle veebilehe aadressile ufire.co/uFire-BLE/. See tähendab, et minu rakenduse ulatus on /uFire-BLE /.
- Algus -URL on samuti oluline. See on tee teie konkreetsele veebilehele, mille baasidomeen on juba eeldatud. Kuna ma panin selle aadressile ufire.co/uFire-BLE/, on algus-URL/uFire-BLE/too.
- Ekraanirežiim määrab, kuidas rakendus välja näeb, eraldiseisev näib, et see on tavaline rakendus ilma Chrome'i nuppude või liideseta.
Lõpuks saate json -faili. See tuleb paigutada veebilehe juure, koos indeksiga.html.
Järgmine asi, mida vajate, on teenindustöötaja. Jällegi saavad nad palju ära teha, kuid see projekt kasutab ainult vahemällu salvestamist, et sellele rakendusele võrguühenduseta juurde pääseda. Teenindustöötaja rakendamine on enamasti katlaplaat. See projekt kasutas Google'i näidet ja muutis vahemällu salvestatavate failide loendit. Te ei saa faile väljaspool domeeni vahemällu salvestada.
Minge FavIcon Generator'i ja tehke mõned ikoonid.
Viimane asi on lisada mõni kood funktsioonile Vue mount ().
monteeritud: function () {if ('serviceWorker' navigaatoris) {navigator.serviceWorker.register ('service-worker.js'); }}
See registreerib töötaja brauseris.
Saate kontrollida, kas kõik töötab, ja kui ei, siis võib -olla Lighthouse'i abil saate aru, miks see analüüsib saiti ja räägib teile igasuguseid asju.
Kui kõik toimis, küsib Chrome veebisaidile minnes, kas soovite selle hüpikbänneriga installida. Kui kasutate mobiilset Chrome'i, näete seda tegevuses aadressil ufire.co/uFire-BLE/. Kui kasutate töölauda, leiate selle installimiseks menüüelemendi.