Мазмуну:
- 1 -кадам: Булардын баары кандай шарттар?
- 2 -кадам: Аппараттык
- 3 -кадам: Программалык камсыздоо
- 4 -кадам: BLE кызматтары жана мүнөздөмөсү
- 5 -кадам: Текст буйруктары
- 6 -кадам: Webpage
- 7 -кадам: Javascript жана Web Bluetooth
- 8 -кадам: PWA бөлүгү
Video: Nano 33 IoT + EC/pH/ORP + WebAPK: 8 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:40
By ufireFollow Автордун дагы:
Жөнүндө: Arduino же Raspberry Pi долбооруңузга pH, ORP, EC же туздуулукту өлчөө мүмкүнчүлүгүн кошуңуз. Ufire жөнүндө көбүрөөк маалымат »
EC, рН, ORP жана температураны өлчөөчү прибор. Бул бассейнди же гидропоникалык орнотууну көзөмөлдөө үчүн колдонулушу мүмкүн. Бул Bluetooth Low Energy аркылуу байланышып, маалыматты Web Bluetooth аркылуу веб -баракчада көрсөтөт. Жана көңүл ачуу үчүн, биз муну Интернеттен орното турган Прогрессивдүү Веб Колдонмого айландырабыз.
1 -кадам: Булардын баары кандай шарттар?
EC/pH/ORP/температура суунун сапатынын эң кеңири таралган өлчөөлөрүнүн бири. Электр өткөрүмдүүлүгү (EC) гидропоникада азыктын эритмесин, рНдин канчалык кислоталуу/негиздүү экендигин өлчөө үчүн колдонулат жана ORP суунун өзүн дезинфекциялоо жөндөмүн аныктоого жардам берүү үчүн колдонулат
- Bluetooth Low Energy - бул маалыматты жөнөтүү жана алуу үчүн зымсыз протокол. Бул долбоордо колдонулган Arduino тактасы Nano 33 IoT жана WiFi жана BLE интерфейстери менен коштолот.
- Веб Bluetooth - бул Google Chrome браузеринде (жана Операда) ишке ашырылган, веб -баракчага BLE түзмөгү менен түз байланышууга мүмкүнчүлүк берген APIлердин жыйындысы.
- Прогрессивдүү Желе Колдонмолору негизинен кадимки колдонмолор сыяктуу иштеген веб -баракчалар. Android жана iPhone'дор аларды башкача иштешет, жана алар иш столдорунда ар башка, андыктан сиз өзгөчөлүктөр үчүн бир аз окууңуз керек.
2 -кадам: Аппараттык
Аппаратты чогултуудан мурун, бир нерсени чечүү керек. UFire ISE сенсор түзмөктөрү бир эле I2C дареги менен келет жана биз экөөнү колдонуп жатабыз, ошондуктан бирин алмаштыруу керек болот. Бул долбоор үчүн биз ISE такталарынын бирин тандап, ORPти өлчөө үчүн колдонобуз. Бул жердеги кадамдарды аткаргандан кийин, даректи 0x3e деп өзгөртүңүз.
Эми дарек өзгөргөндөн кийин, аппараттык жабдыктарды бирге коюу оңой. Бардык сенсордук түзмөктөр Qwiic туташуу системасын колдонушат, андыктан баарын чынжыр менен бириктиргиле. Сенсорлордун бирин Nano 33ке туташтыруу үчүн сизге Qwiic to Male зымы керек болот. Зымдар ырааттуу жана түстүү коддолгон. Кара түстү Нанонун GND'ине, кызылын +3.3V же +5V пинге, көктү A4 болгон SDA пинине, сарыга A5деги SCL пинине туташтырыңыз.
Бул долбоор үчүн температура жөнүндө маалымат EC сенсорунан келет деп күтөт, андыктан EC тактасына температура сенсорун тиркеп коюуну унутпаңыз. Бардык такталар температураны өлчөө мүмкүнчүлүгүнө ээ. EC, pH жана ORP зонддорун тиешелүү сенсорлорго тиркөөнү унутпаңыз. Алар оңой BNC туташтыргычы менен тиркелет.
Эгерде сизде короо болсо, мунун баарын ичине коюу жакшы болмок, айрыкча суу тартыларын эске алуу менен.
3 -кадам: Программалык камсыздоо
Мунун программалык бөлүгү эки негизги бөлүмгө бөлүнөт: Nano 33түн камтылган программасы жана веб -баракча.
Негизги агым бул:
- Веб барак Nano менен BLE аркылуу туташат
- Веб баракча маалымат сурап же аракеттерди көрүү үчүн текстке негизделген буйруктарды жөнөтөт
- Нано ал буйруктарды угат, аларды аткарат жана маалыматты кайтарат
- Веб баракча жоопторду алат жана UIди ошого жараша жаңыртат
Бул орнотуу веб -баракчага сенсорлорду өлчөө же калибрлөө сыяктуу бардык керектүү функцияларды аткарууга мүмкүндүк берет.
4 -кадам: BLE кызматтары жана мүнөздөмөсү
Биринчи үйрөнө турган нерселердин бири - BLEдин иштөө негиздери.
Окшоштуктар көп, андыктан китепти тандап алалы. Кызмат - бул китеп, ал эми өзгөчөлүгү барактар болмок. Бул "BLE китебинде", барактарда бир нече китеп эмес касиеттер бар, алар барактын айткандарын өзгөртө алат жана ал болгондо эскертме алат.
BLE түзмөгү каалаган кызматты жасай алат. Кээ бирлери алдын ала аныкталган жана Tx Power же байланышты жоготуу сыяктуу кеңири таралган маалыматты Инсулин же Пульсоксиметрия сыяктуу конкреттүү нерселерге стандартташтыруунун жолу катары иштешет. Сиз ошондой эле бирөөсүн жасап, аны менен каалаган нерсеңизди жасай аласыз. Алар программалык камсыздоодо аныкталган жана UUID менен идентификацияланган. UUIDдерди бул жерден жасай аласыз.
Бул аппараттын камтылган программасында төмөнкүдөй аныкталган бир кызмат бар:
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);
Tx_Characteristic, веб -баракчаны көрсөтүү үчүн, түзмөктөр EC өлчөөлөрү сыяктуу маалыматты жөнөткөн жерде болот. Rx_Characteristic - бул веб -баракчадан буйруктарды аткаруу үчүн.
Бул долбоор ArduinoBLE китепканасын колдонот. Эгер карап көрсөңүз, анда мүнөздөмөнү жарыялоодо башкача жубайлар бар экенин көрөсүз. Бул долбоор BLEStringCharacteristic колдонот, анткени биз String түрү менен иштейбиз жана бул оңой, бирок сиз BLECharCharacteristic же BLEByteCharacteristicти башкалардын арасынан тандасаңыз болот.
Кошумча катары, сиз мүнөздөмө бере турган кээ бир касиеттери бар. tx_Characteristic параметр катары BLENotifyге ээ. Бул биздин веб -баракчанын мааниси өзгөргөндө эскертме алат дегенди билдирет. rx_Characteristic BLEWrite бар, бул биздин веб -баракчаны өзгөртүүгө мүмкүндүк берет. Башкалар бар.
Андан кийин бул нерселерди бириктирүү үчүн бир аз код-клей бар:
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.advertis ();
Бул аздыр-көптүр түшүнүктүү, бирок бир нече пунктка токтололу.
rx_Characteristic.setEventHandler (BLEWritten, rxCallback);
Бул жерде сиз баалуулуктун өзгөртүлүшү жөнүндө кабардар болуп турасыз. Сап класска мааниси өзгөргөндө rxCallback функциясын аткарууну айтат.
BLE.advertis ();
бүт нерсенин башталышы ушул. BLE түзмөгү маал -маалы менен ал жерде жана туташуу үчүн жеткиликтүү экенин билдирген кичинекей маалымат пакетин жөнөтүп турат. Ансыз ал көрүнбөйт.
5 -кадам: Текст буйруктары
Жогоруда айтылгандай, бул түзмөк веб -баракча менен жөнөкөй текст буйруктары аркылуу сүйлөшөт. Бардыгын ишке ашыруу оңой, анткени оор жумуш буга чейин эле жасалган. UFire сенсорлору буйруктарды жөнөтүү жана алуу үчүн JSON жана MsgPack негизделген китепкана менен коштолот. EC жана ISE буйруктары жөнүндө алардын документтери барактарынан көбүрөөк окуй аласыз.
Бул долбоор JSONду колдонот, анткени экилик болгон MsgPack форматынан айырмаланып, иштөө бир аз оңой жана окулат.
Бул жерде анын баары бири -бирине кантип байланышы бар экени жөнүндө мисал келтирилген:
- Веб баракча ECден өлчөөнү сурайт (же тагыраак айтканда rx_Characteristic мүнөздөмөсүнө ec жазуу)
- Түзмөк буйрукту алат жана аны аткарат. Андан кийин ал tx_Characteristic мүнөздөмөсүнө жазуу аркылуу JSON форматындагы {"ec": 1.24} жоопту кайра жөнөтөт.
- Веб баракча маалыматты алат жана аны көрсөтөт
6 -кадам: Webpage
Бул долбоордун веб-баракчасы Vue.jsти алдыңкы бөлүгү үчүн колдонот. Эч кандай арткы кереги жок. Андан тышкары, бир аз жөнөкөй болуш үчүн, эч кандай куруу системасы колдонулбайт. Ал кадимки папкаларга бөлүнөт, javascript үчүн js, CSS үчүн CSS, сүрөтчөлөр үчүн активдер. Анын html бөлүгү өзгөчө эч нерсе эмес. Бул стилдөө үчүн bulma.io колдонот жана колдонуучу интерфейсин түзөт. Сиз бөлүмдө көп нерсени байкайсыз. Бул бардык CSS жана сүрөтчөлөрдү кошуп жатат, бирок өзгөчө бир сапты кошуп жатат.
Бул биздин manifest.json файлды жүктөп жатат, бул бардык PWA нерселерин ишке ашырат. Бул биздин веб -баракчаны колдонмого айландырса болорун айткан кээ бир маалыматты жарыялайт.
JavaScript - бул кызыктуу нерселердин көбү болгон жерде. Ал файлдарга бөлүнгөн, app.js VU веб-баракчасын UIге байланышкан бардык өзгөрмөлөр жана башка нерселер менен бирге алуунун негиздерин камтыйт. ble.js bluetooth нерселери бар.
7 -кадам: Javascript жана Web Bluetooth
Биринчиден, бул Chrome жана Operaда гана иштейт. Башка браузерлер муну колдошун каалайм, бирок кандайдыр бир себептерден улам алар колдобойт. App.js баракчасына көз жүгүртүп көрүңүз, ошондо биз микроб программабызда колдонулган UUIDдерди көрө аласыз. Бири uFire кызматы үчүн, жана бири tx жана rx мүнөздөмөлөрү үчүн.
Эми сиз ble.jsден карасаңыз, connect () жана ажыратуу () функцияларын көрөсүз.
Connect () функциясы UI синхрондоштуруу үчүн логиканы камтыйт, бирок негизинен мүнөздөмөлөр боюнча маалыматты жөнөтүү жана алуу үчүн нерселерди орнотот.
Веб Bluetooth менен иштөөдө кээ бир өзгөчөлүктөр бар. Байланыш баскычты басуу сыяктуу колдонуучулардын кандайдыр бир физикалык өз ара аракети менен башталышы керек. Мисалы, веб -баракча жүктөлгөндө, сиз программалык түрдө туташа албайсыз.
Байланышты баштоо коду мындай көрүнөт:
this.device = navigator.bluetooth.requestDevice күтөбүз ({
чыпкалар: [{namePrefix: "uFire"}], optionalServices: [this.serviceUuid]});
Чыпкалар: жана optionalServices бөлүмү ал жерде ар бир BLE түзмөгүн көрбөө үчүн керек. Сиз жөн гана чыпка бөлүмү жакшы болмок деп ойлойт элеңиз, бирок сизге кошумча кызматтар бөлүгү дагы керек.
Жогорудагы код байланыш диалогун көрсөтөт. Бул Chrome интерфейсинин бир бөлүгү жана аны өзгөртүү мүмкүн эмес. Колдонуучу тизмеден тандайт. Колдонмого туташа турган бир гана түзмөк бар болсо дагы, коопсуздук көйгөйлөрүнө байланыштуу колдонуучу бул тандоо диалогунан өтүшү керек.
Калган коду кызматты жана мүнөздөмөлөрдү орнотуу. Программалык камсыздоонун билдирүүсүнө кайра чалууга окшош кайра чалуу тартибин орнотконубузга көңүл буруңуз:
service = server.getPrimaryService күтөбүз (this.serviceUuid);
мүнөздүү = күтүү кызматы.getCharacteristic (this.txUuid); мүнөздү күтөбүз.startNotifications (); мүнөздүү.addEventListener ("мүнөздөмөнүн баалуулугу өзгөртүлдү", бул. баалуулуктун_ жаңыртылышы);
this.value_update азыр tx мүнөздөмөсү боюнча жаңы маалымат болгондо чакырылат.
Акыркы кылган нерселеринин бири - бул ар бир 5 секунд сайын маалыматты жаңыртуу үчүн таймерди коюу.
value_update () - бул жаңы JSON маалыматынын келишин күткөн жана UIди жаңыртуучу узун функция.
ec.js, ph.js жана orp.js маалымат алуу жана түзмөктөрдү калибрлөө үчүн буйруктарды жөнөтүүчү көптөгөн кичинекей функцияларды камтыйт.
Муну аракет кылуу үчүн, Веб Bluetoothду колдонуу үчүн, ал HTTPS аркылуу берилиши керек экенин эстен чыгарбоо керек. Жергиликтүү HTTPS серверинин көптөгөн варианттарынын бири сервис-https. Камтылган программалык камсыздоо жүктөлүп, бардыгы туташып, веб -баракча кызмат кылып жаткандан кийин, сиз баарынын иштеп жатканын көрө алышыңыз керек.
8 -кадам: PWA бөлүгү
Веб -баракчаны чыныгы колдонмого айлантуу үчүн бир нече кадамдар бар. Прогрессивдүү Желе Колдонмолору бул долбоор аларды колдонгондон алда канча көптү кыла алат.
- Веб -баракчаны орнотуу
- Орнотулгандан кийин, оффлайнга кирүү мүмкүн
- Кадимки колдонмо сөлөкөтү менен кадимки колдонмо катары башталган жана иштейт
Баштоо үчүн, биз бир топ файлдарды түзүшүбүз керек. Биринчиси manifest.json файлы. Сиз үчүн муну кыла турган бир нече сайттар бар, App Manifest Generator, алардын бири.
Бир -эки нерсени түшүнүү керек:
- Колдонуу чөйрөсү маанилүү. Мен бул веб-баракчаны ufire.co/uFire-BLE/ сайтына койдум. Бул менин колдонуу чөйрөм /uFire-BLE /дегенди билдирет.
- Баштоо URL да маанилүү. Бул сиздин веб -баракчаңыздын жолу, буга чейин болжолдонгон базалык домен. Мен муну ufire.co/uFire-BLE/ сайтына койгонум үчүн, баштапкы URL/uFire-BLE/да.
- Дисплей режими колдонмонун кандай болорун аныктайт, Standalone аны Chrome баскычтары же интерфейси жок кадимки колдонмо кылып көрсөтөт.
Сиз json файлы менен аяктайсыз. Ал веб -баракчанын түпкүрүндө, index.html менен бирге жайгаштырылышы керек.
Сизге керек болгон кийинки нерсе - Кызматкер. Дагы, алар көп нерсени кыла алышат, бирок бул долбоор бул колдонмого оффлайнга кирүү үчүн кэштөөнү гана колдонот. Тейлөө кызматкерин ишке ашыруу көбүнчө казан плитасы. Бул долбоор Google мисалын колдонгон жана кэштелүүчү файлдардын тизмесин өзгөрткөн. Домениңизден тышкары файлдарды кэштей албайсыз.
FavIcon Генераторуна баш багыңыз жана бир нече сүрөтчөлөрдү жасаңыз.
Акыркы нерсе - Vue mounted () функциясына кээ бир кодду кошуу.
орнотулган: function () {if ('serviceWorker' навигатордо) {navigator.serviceWorker.register ('service-worker.js'); }}
Бул браузерде жумушчуну каттайт.
Сиз баары иштеп жаткандыгын текшере аласыз, эгер андай болбосо, балким Lighthouse колдонуп, ал сайтты талдап, сизге ар кандай нерселерди айтып берерин аныктай аласыз.
Эгер баары иштесе, веб -баракчага киргенде, Chrome аны калкып чыгуучу баннер менен орнотууну каалаарыңызды сурайт. Мобилдик Chrome'до болсоңуз, аны ufire.co/uFire-BLE/ дарегинен көрө аласыз. Эгерде сиз рабочий столунда болсоңуз, аны орнотуу үчүн меню пунктун таба аласыз.