Мазмұны:
- 1 -қадам: Барлық шарттар дегеніміз не?
- 2 -қадам: аппараттық құрал
- 3 -қадам: Бағдарламалық қамтамасыз ету
- 4 -қадам: BLE қызметтері мен сипаттамалары
- 5 -қадам: Мәтіндік командалар
- 6 -қадам: веб -бет
- 7 -қадам: Javascript және Web Bluetooth
- 8 -қадам: PWA бөлігі
Бейне: Nano 33 IoT + EC/pH/ORP + WebAPK: 8 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:24
Автордың толығырақ авторы:
Бұл туралы: Arduino немесе Raspberry Pi жобасына рН, ORP, EC немесе тұздылықты өлшеу мүмкіндігін қосыңыз. Ufire туралы толығырақ »
EC, рН, ORP және температураны өлшеуге арналған құрылғы. Ол бассейнді немесе гидропоникалық қондырғыны бақылау үшін қолданылуы мүмкін. Ол Bluetooth Low Energy арқылы байланысады және ақпаратты Web Bluetooth арқылы веб -бетте көрсетеді. Ал көңілді болу үшін біз оны Интернеттен орнатуға болатын прогрессивті веб -қосымшасына айналдырамыз.
1 -қадам: Барлық шарттар дегеніміз не?
EC/pH/ORP/температура - судың ең кең тараған өлшемдерінің бірі. Электрөткізгіштік (ЭК) гидропоникада қоректік ерітінділерді, судың қышқылдық/негіздік рН мөлшерін өлшеу үшін қолданылады, ал ОРП судың дезинфекциялау қабілетін анықтауға көмектеседі
- Bluetooth Low Energy - бұл ақпаратты жіберуге және алуға болатын сымсыз хаттама. Бұл жобада Arduino тақтасы Nano 33 IoT болып табылады және WiFi мен BLE интерфейсімен бірге келеді.
- Веб -Bluetooth - бұл Google Chrome шолғышында (және Opera) енгізілген, веб -бетке BLE құрылғысымен тікелей байланысуға мүмкіндік беретін API жиынтығы.
- Прогрессивті веб -қосымшалар - бұл әдеттегі қосымшалар сияқты әрекет ететін веб -беттер. Android және iPhone оларды басқаша өңдейді, ал олар жұмыс үстелінде әр түрлі, сондықтан сіз ерекшеліктерді білу үшін аздап оқуыңыз керек.
2 -қадам: аппараттық құрал
Аппараттық құралдарды жинамас бұрын, бір нәрсені ескеру қажет. UFire ISE сенсорлық құрылғылары бірдей I2C адресімен келеді және біз екеуін қолданамыз, сондықтан біреуін өзгерту қажет болады. Бұл жоба үшін біз ISE тақталарының бірін таңдаймыз және оны ORP өлшеу үшін қолданамыз. Мұндағы қадамдарды орындап, мекенжайды 0x3e етіп өзгертіңіз.
Енді мекен -жай өзгерген кезде, жабдықты біріктіру оңай. Барлық сенсорлық құрылғылар Qwiic қосылу жүйесін қолданады, сондықтан бәрін тізбекке қосыңыз. Сенсорлардың біреуін нано 33 -ке қосу үшін сізге Qwiic to Male сымы қажет болады. Сымдар біркелкі және түспен кодталған. Нано GND -ге қара, +3.3V немесе +5V істікшесіне қызыл, A4 SDA түйрегішіне көк, A5 -дегі SCL түйреуішіне сары түсті қосыңыз.
Бұл жоба үшін температура туралы ақпарат EC сенсорынан келеді деп күтеді, сондықтан EC тақтасына температура сенсорын бекітуді ұмытпаңыз. Барлық тақталар температураны өлшеуге қабілетті. EC, pH және ORP зондтарын тиісті сенсорларға бекітуді ұмытпаңыз. Олар BNC қосқыштарымен оңай бекітіледі.
Егер сізде қоршау болса, мұның бәрін ішке қою жақсы болар еді, әсіресе су тартылатынын ескере отырып.
3 -қадам: Бағдарламалық қамтамасыз ету
Бағдарламалық қамтамасыз ету бөлігі екі негізгі бөлімге бөлінеді: Nano 33 микробағдарламасы және веб -бет.
Негізгі ағын бұл:
- Веб -бет наноға BLE арқылы қосылады
- Веб-бет ақпарат сұрауға немесе әрекеттер жасауға мәтіндік командаларды жібереді
- Нано бұл командаларды тыңдайды, оларды орындайды және ақпаратты қайтарады
- Веб -бет жауаптарды алады және сәйкесінше интерфейсті жаңартады
Бұл орнату веб -беттің сіз күткен барлық функцияларды орындауға мүмкіндік береді, мысалы, өлшеу немесе сенсорларды калибрлеу.
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 жіберу арқылы EC өлшеуін сұрайды (немесе нақтырақ айтқанда rx_Characteristic сипаттамасына ec жазу)
- Құрылғы пәрменді алады және оны орындайды. Содан кейін tx_Characteristic сипаттамасына жазу арқылы {«ec»: 1.24} JSON пішімделген жауабын қайтарады.
- Веб -бет ақпаратты қабылдайды және көрсетеді
6 -қадам: веб -бет
Бұл жобаның веб-бетінде Vue.js фронтальды пайдаланылады. Артқы жағы қажет емес. Сонымен қатар, біршама қарапайым болу үшін құрастыру жүйесі қолданылмайды. Ол әдеттегі қалталарға бөлінеді, javascript үшін js, CSS үшін CSS, белгішелерге арналған активтер. Оның html бөлігі ерекше ештеңе емес. Ол сәндеу үшін bulma.io пайдаланады және пайдаланушы интерфейсін жасайды. Бөлімде сіз көп нәрсені байқайсыз. Ол барлық CSS және белгішелерді қосады, сонымен қатар бір жолды қосады.
Бұл біздің manifest.json файлын жүктейді, бұл барлық PWA заттарын жасайды. Бұл біздің телефонға бұл веб -бетті қосымшаға айналдыруға болатынын көрсететін кейбір ақпаратты жариялайды.
JavaScript - бұл қызықты нәрселердің көпшілігі. Ол файлдарға бөлінген, app.js интерфейсіне қатысты барлық айнымалылармен және тағы басқа нәрселермен бірге Vue веб-бетін алудың негіздерін қамтиды. ble.js -те блютуз бар.
7 -қадам: Javascript және Web Bluetooth
Біріншіден, бұл тек Chrome мен Opera -да жұмыс істейді. Басқа браузерлер мұны қолдайтынын қалаймын, бірақ қандай да бір себептермен олар қолдамайды. App.js қараңыз, сонда сіз біздің микробағдарламада қолданған UUID -терді көресіз. Біреуі uFire қызметіне, ал әрқайсысы tx және rx сипаттамаларына арналған.
Енді сіз ble.js -ке қарасаңыз, connect () және ажырату () функцияларын көресіз.
Connect () функциясында интерфейсті синхрондауға арналған логика бар, бірақ ол негізінен сипаттамалар туралы ақпаратты жіберу мен алуды реттейді.
Web Bluetooth -мен жұмыс жасау кезінде өзіндік ерекшеліктер бар. Байланысты түймені түрту сияқты пайдаланушының физикалық өзара әрекеттесуінен бастау керек. Мысалы, веб -бет жүктелген кезде бағдарламалық түрде қосыла алмайсыз.
Байланысты бастау коды келесідей:
this.device = navigator.bluetooth.requestDevice күтіңіз ({
сүзгілер: [{namePrefix: «uFire»}], optionalServices: [this.serviceUuid]});
Сүзгілер: және міндетті емес Қызметтер бөлімі барлық BLE құрылғыларын көрмеу үшін қажет. Сіз тек сүзгі бөлімі жақсы болар еді деп ойлайсыз, бірақ сізге қосымша қызметтер бөлімі де қажет.
Жоғарыдағы код қосылым диалогын көрсетеді. Бұл Chrome интерфейсінің бөлігі және оны өзгерту мүмкін емес. Пайдаланушы тізімнен таңдайды. Қолданба қосылатын бір ғана құрылғы болса да, қауіпсіздік мәселесіне байланысты пайдаланушы осы таңдау диалогынан өтуі қажет.
Қалған код - бұл қызмет пен сипаттамаларды орнату. Микробағдарламаның хабарландыруына кері байланысқа ұқсас, кері шақыру тәртібін орнатқанымызды ескеріңіз:
service = server.getPrimaryService күтіңіз (this.serviceUuid);
сипаттамасы = күтіңіз service.getCharacteristic (this.txUuid); сипаттаманы күтіңіз.startNotifications (); xarakteristik.addEventListener («сипаттаманың мәні өзгертілді», бұл. мәннің_жаңартуы);
this.value_update енді tx сипаттамасы туралы жаңа ақпарат болған сайын шақырылады.
Соңғы әрекеттің бірі - бұл ақпаратты әр 5 секунд сайын жаңартып отыратын таймер.
value_update () - бұл жаңа JSON ақпаратының келуін күтетін және интерфейсті жаңартатын ұзақ функция.
ec.js, ph.js және orp.js көптеген кіші функцияларды қамтиды, олар ақпаратты алу және құрылғыларды калибрлеу командаларын жібереді.
Мұны байқап көру үшін, веб -Bluetooth -ды пайдалану үшін оған HTTPS арқылы қызмет көрсету керектігін есте ұстау қажет. Жергілікті HTTPS сервері үшін көптеген нұсқалардың бірі-service-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 қалқымалы баннермен орнатқыңыз келетінін сұрайды. Сіз мұны ufire.co/uFire-BLE/ сайтынан көре аласыз, егер сіз мобильді Chrome-да болсаңыз. Егер сіз жұмыс үстелінде болсаңыз, оны орнату үшін мәзір элементін таба аласыз.