Სარჩევი:

Nano 33 IoT + EC/pH/ORP + WebAPK: 8 ნაბიჯი
Nano 33 IoT + EC/pH/ORP + WebAPK: 8 ნაბიჯი

ვიდეო: Nano 33 IoT + EC/pH/ORP + WebAPK: 8 ნაბიჯი

ვიდეო: Nano 33 IoT + EC/pH/ORP + WebAPK: 8 ნაბიჯი
ვიდეო: Gab’s Haven - Hydroponics pH and PPM/EC Automation 2024, ივლისი
Anonim
ნანო 33 IoT + EC/pH/ORP + WebAPK
ნანო 33 IoT + EC/pH/ORP + WebAPK

ავტორის მიერ დაიცავით ვრცლად:

შეინახეთ და გრაფიკულად ჩაწერეთ EC/pH/ORP მონაცემები TICK Stack და NoCAN პლატფორმით
შეინახეთ და გრაფიკულად ჩაწერეთ EC/pH/ORP მონაცემები TICK Stack და NoCAN პლატფორმით
შეინახეთ და გრაფიკულად ჩაწერეთ EC/pH/ORP მონაცემები TICK Stack და NoCAN პლატფორმით
შეინახეთ და გრაფიკულად ჩაწერეთ EC/pH/ORP მონაცემები TICK Stack და NoCAN პლატფორმით
IoT აუზის მონიტორინგი ThingsBoard– ით
IoT აუზის მონიტორინგი ThingsBoard– ით
IoT აუზის მონიტორინგი ThingsBoard– ით
IoT აუზის მონიტორინგი ThingsBoard– ით
IoT Hydroponics - IBM's Watson– ის გამოყენება PH და EC გაზომვებისათვის
IoT Hydroponics - IBM's Watson– ის გამოყენება PH და EC გაზომვებისათვის
IoT Hydroponics - IBM's Watson– ის გამოყენება PH და EC გაზომვებისათვის
IoT Hydroponics - IBM's Watson– ის გამოყენება PH და EC გაზომვებისათვის

შესახებ: დაამატეთ pH, ORP, EC ან მარილიანობის გაზომვის შესაძლებლობა თქვენს Arduino ან Raspberry Pi პროექტს. მეტი ufire შესახებ »

მოწყობილობა EC, pH, ORP და ტემპერატურის გასაზომად. ის შეიძლება გამოყენებულ იქნას აუზის ან ჰიდროპონიული კონფიგურაციის მონიტორინგისთვის. ის დაუკავშირდება Bluetooth Low Energy– ს საშუალებით და აჩვენებს ინფორმაციას ვებ – გვერდზე ვებ – Bluetooth– ის გამოყენებით. და გასართობად, ჩვენ ამას გადავაქცევთ პროგრესულ ვებ აპლიკაციად, რომლის დაყენებაც შეგიძლიათ ინტერნეტიდან.

ნაბიჯი 1: რა არის ყველა ეს პირობა?

EC/pH/ORP/ტემპერატურა წყლის ხარისხის ზოგიერთი ყველაზე გავრცელებული გაზომვაა. ელექტროგამტარობა (EC) გამოიყენება ჰიდროპონიკაში მკვებავი ხსნარის გასაზომად, pH რამდენად მჟავე/ფუძეა წყალი და ORP გამოიყენება წყლის დეზინფექციის უნარის დასადგენად

  • Bluetooth Low Energy არის უკაბელო პროტოკოლი ინფორმაციის გასაგზავნად და მისაღებად. ამ პროექტში გამოყენებული Arduino დაფა არის Nano 33 IoT და გააჩნია WiFi და BLE ინტერფეისები.
  • ვებ Bluetooth არის Google– ის Chrome ბრაუზერში (და ოპერაში) დანერგილი API– ების ერთობლიობა, რომელიც საშუალებას აძლევს ვებგვერდს უშუალოდ დაუკავშირდეს BLE მოწყობილობას.
  • პროგრესული ვებ პროგრამები ძირითადად არის ვებ გვერდები, რომლებიც მოქმედებენ როგორც ჩვეულებრივი პროგრამები. Android და iPhone მათ სხვადასხვანაირად მართავენ და ისინი განსხვავდებიან სამუშაო მაგიდაზე, ასე რომ თქვენ უნდა წაიკითხოთ ცოტაოდენი სპეციფიკისთვის.

ნაბიჯი 2: აპარატურა

აპარატურა
აპარატურა
აპარატურა
აპარატურა

სანამ ჩვენ შევძლებთ აპარატურის აწყობას, არის ერთი რამ, რასაც მივმართავთ. UFire ISE სენსორულ მოწყობილობებს აქვთ იგივე I2C მისამართი და ჩვენ ვიყენებთ ორს, ამიტომ ერთი უნდა შეიცვალოს. ამ პროექტისთვის ჩვენ ვაპირებთ ავირჩიოთ ISE– ს ერთ – ერთი დაფა და გამოვიყენოთ ORP– ის გასაზომად. ნაბიჯების შემდეგ, შეცვალეთ მისამართი 0x3e.

ახლა, როდესაც მისამართი შეიცვალა, აპარატურის გაერთიანება ადვილია. ყველა სენსორული მოწყობილობა იყენებს Qwiic დამაკავშირებელ სისტემას, ასე რომ უბრალოდ დააკავშირეთ ყველაფერი ჯაჭვში. თქვენ დაგჭირდებათ ერთი Qwiic to Male მავთული, რომ დააკავშიროთ ერთი სენსორი ნანო 33 -თან. მავთულები არის თანმიმდევრული და ფერადი კოდირებული. შეაერთეთ შავი ნანოს GND– სთან, წითელი ან +3.3V ან +5V პინზე, ლურჯი SDA პინზე, რომელიც არის A4 და ყვითელი SCL პინზე A5– ზე.

ამ პროექტისთვის ის ელოდება ტემპერატურის ინფორმაციას EC სენსორიდან, ამიტომ დარწმუნდით, რომ მიამაგრეთ ტემპერატურის სენსორი EC დაფაზე. ყველა დაფას აქვს ტემპერატურის გაზომვის შესაძლებლობა. არ დაგავიწყდეთ EC, pH და ORP ზონდების მიმაგრება შესაბამის სენსორებზე. ისინი ადვილად ერთვის BNC კონექტორებით.

თუ გალავანი გაქვთ, ამ ყველაფრის შიგნით ჩადება კარგი იდეა იქნება, განსაკუთრებით წყლის გათვალისწინებით.

ნაბიჯი 3: პროგრამული უზრუნველყოფა

პროგრამული უზრუნველყოფის ნაწილი დაყოფილია ორ მთავარ ნაწილად: firmware Nano 33 -ზე და ვებ გვერდი.

ძირითადი ნაკადი ასეთია:

  • ვებ გვერდი უკავშირდება ნანოს BLE საშუალებით
  • ვებგვერდი აგზავნის ტექსტზე დაფუძნებულ ბრძანებებს ინფორმაციის მოთხოვნის ან ქმედებების მისაღებად
  • ნანო უსმენს ამ ბრძანებებს, ასრულებს მათ და აბრუნებს ინფორმაციას
  • ვებ გვერდი იღებს პასუხებს და შესაბამისად განაახლებს ინტერფეისს

ეს დაყენება საშუალებას აძლევს ვებგვერდს შეასრულოს ყველა საჭირო ფუნქცია, რასაც ელოდით, მაგალითად, გაზომვის ჩატარება ან სენსორების დაკალიბრება.

ნაბიჯი 4: BLE სერვისები და მახასიათებლები

ერთ – ერთი პირველი რაც უნდა ვისწავლოთ არის BLE– ის მუშაობის საფუძვლები.

ბევრი ანალოგია, ამიტომ ავირჩიოთ წიგნი. მომსახურება იქნება წიგნი და მახასიათებელი იქნება გვერდები. ამ "BLE წიგნში" გვერდებს აქვთ რამდენიმე არაჯავშნული თვისება, როგორიცაა გვერდის ნათქვამის შეცვლა და შეტყობინების მიღება, როდესაც ეს მოხდება.

BLE მოწყობილობას შეუძლია გააკეთოს იმდენი სერვისი, რამდენიც სურს. ზოგიერთი მათგანი წინასწარ არის განსაზღვრული და მოქმედებს როგორც სტანდარტიზებული ინფორმაცია ჩვეულებრივ გამოყენებულ ინფორმაციაზე, როგორიცაა Tx Power ან კავშირის დაკარგვა, უფრო კონკრეტულ საკითხებზე, როგორიცაა ინსულინი ან პულსის ოქსიმეტრია. თქვენ ასევე შეგიძლიათ გააკეთოთ ერთი და გააკეთოთ რაც გსურთ მასთან ერთად. ისინი განსაზღვრულია პროგრამულ უზრუნველყოფაში და იდენტიფიცირებულია UUID– ით. აქ შეგიძლიათ გააკეთოთ UUID.

ამ მოწყობილობის firmware– ში არის ერთი სერვისი, განსაზღვრული:

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 რადგან ჩვენ გვექნება საქმე სიმების ტიპთან და ეს უფრო ადვილია, მაგრამ თქვენ ასევე შეგიძლიათ აირჩიოთ 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.advertise ();

მეტ-ნაკლებად თავისთავად ახსნადია, მაგრამ შევეხოთ რამდენიმე პუნქტს.

rx_Characteristic.setEventHandler (BLEWritten, rxCallback);

ეს არის ადგილი, სადაც ისარგებლებთ იმით, რომ შეგატყობინებთ ცვლილების ღირებულების შესახებ. ხაზი ეუბნება კლასს შეასრულოს ფუნქცია rxCallback როდესაც მნიშვნელობა შეიცვლება.

BLE.advertise ();

ეს არის ის, რაც იწყებს მთელს საქმეს. BLE მოწყობილობა პერიოდულად გაგზავნის ინფორმაციის მცირე პაკეტს, რომელიც აცხადებს, რომ ის არსებობს და დასაკავშირებლად არის შესაძლებელი. ამის გარეშე ის უხილავი იქნება.

ნაბიჯი 5: ტექსტური ბრძანებები

როგორც უკვე აღვნიშნეთ, ეს მოწყობილობა დაელაპარაკება ვებ გვერდს მარტივი ტექსტური ბრძანებების საშუალებით. ყველაფერი ადვილი განსახორციელებელია, რადგან მძიმე სამუშაო უკვე შესრულებულია. UFire სენსორები აღჭურვილია JSON და MsgPack ბიბლიოთეკით, ბრძანებების გაგზავნისა და მიღებისათვის. თქვენ შეგიძლიათ წაიკითხოთ მეტი EC და ISE ბრძანებების შესახებ მათ დოკუმენტაციის გვერდებზე.

ეს პროექტი გამოიყენებს JSON- ს, რადგან მასთან მუშაობა და წაკითხვა ოდნავ ადვილია, განსხვავებით MsgPack ფორმატიდან, რომელიც ორობითია.

აქ არის მაგალითი იმისა, თუ როგორ არის ეს ყველაფერი ერთმანეთთან დაკავშირებული:

  • ვებგვერდი ითხოვს მოწყობილობას EC გაზომვისთვის ეკ -ს გაგზავნით (ან უფრო კონკრეტულად წერს ec rx_Characteristic მახასიათებელს)
  • მოწყობილობა იღებს ბრძანებას და ასრულებს მას. შემდეგ ის აგზავნის JSON ფორმატირებულ პასუხს {"ec": 1.24} წერილობით tx_Characteristic მახასიათებლით.
  • ვებ გვერდი იღებს ინფორმაციას და აჩვენებს მას

ნაბიჯი 6: ვებ გვერდი

ამ პროექტის ვებ – გვერდი გამოიყენებს Vue.js წინა გვერდისთვის. არ არის საჭირო უკანა ბლანკი. გარდა ამისა, იმისათვის, რომ ყველაფერი ცოტა უფრო მარტივი იყოს, არ გამოიყენება ასაშენებელი სისტემა. ის იყოფა ჩვეულებრივ საქაღალდეებად, js for javascript, css for CSS, აქტივები ხატებისთვის. მისი html ნაწილი განსაკუთრებული არაფერია. იგი იყენებს bulma.io სტილისთვის და ქმნის მომხმარებლის ინტერფეისს. ბევრს შეამჩნევთ განყოფილებაში. ის ამატებს ყველა css და ხატს, მაგრამ ასევე ამატებს ერთ ხაზს.

ეს იტვირთება ჩვენი manifest.json ფაილი, რაც ქმნის ყველა PWA პერსონალს. ის აცხადებს ინფორმაციას, რომელიც ეუბნება ჩვენს ტელეფონს, რომ ეს ვებ გვერდი შეიძლება გადაიქცეს აპად.

Javascript არის იქ, სადაც ხდება ყველაზე საინტერესო რამ. ის დაყოფილია ფაილებად, app.js შეიცავს Vue ვებ – გვერდის მიღების საფუძვლებს, UI– სთან დაკავშირებულ ყველა ცვლადთან და რამდენიმე სხვა ნივთთან ერთად. ble.js აქვს bluetooth პერსონალი.

ნაბიჯი 7: Javascript და ვებ Bluetooth

პირველი, ეს მუშაობს მხოლოდ Chrome და Opera– ზე. ვისურვებდი, რომ სხვა ბრაუზერები მხარს უჭერდნენ ამას, მაგრამ რაიმე მიზეზის გამო, ისინი ამას არ აკეთებენ. გადახედეთ app.js- ს და ნახავთ იმავე UUID- ებს, რომლებსაც ჩვენ ვიყენებდით ჩვენს firmware- ში. ერთი uFire სერვისისთვის და თითოეული თითო tx და rx მახასიათებლებისთვის.

ახლა თუ შეხედავთ ble.js- ში, ნახავთ connect () და disconnect () ფუნქციებს.

დაკავშირების () ფუნქცია შეიცავს გარკვეულ ლოგიკას, რომ შეინარჩუნოს ინტერფეისი სინქრონიზაციაში, მაგრამ ის ძირითადად აყალიბებს ინფორმაციას მახასიათებლების შესახებ ინფორმაციის გაგზავნისა და მიღებისათვის.

არსებობს გარკვეული იდიოსინკრაზიები ვებ Bluetooth– თან მუშაობისას. კავშირი უნდა დაიწყოს მომხმარებლის გარკვეული ფიზიკური ურთიერთქმედებით, მაგალითად ღილაკზე დაჭერით. მაგალითად, ვებ გვერდის ჩატვირთვისას თქვენ ვერ შეძლებთ პროგრამულად დაკავშირებას.

კავშირის დასაწყებად კოდი ასე გამოიყურება:

this.device = დაელოდეთ navigator.bluetooth.requestDevice ({

ფილტრები: [{namePrefix: "uFire"}], არჩევითი სერვისები: [this.serviceUuid]});

ფილტრები: და სურვილისამებრ სერვისების განყოფილებაა საჭირო, რათა თავიდან იქნას აცილებული თითოეული BLE მოწყობილობა. თქვენ ფიქრობთ, რომ მხოლოდ ფილტრის განყოფილება კარგი იქნება, მაგრამ თქვენ ასევე გჭირდებათ დამატებითი სერვისების ნაწილიც.

ზემოთ მოყვანილი კოდი აჩვენებს კავშირის დიალოგს. ეს არის Chrome ინტერფეისის ნაწილი და მისი შეცვლა შეუძლებელია. მომხმარებელი ირჩევს სიიდან. მაშინაც კი, თუ არსებობს მხოლოდ ერთი მოწყობილობა, რომელთანაც აპლიკაცია ოდესმე დაუკავშირდებოდა, მომხმარებელს კვლავ სჭირდება ამ შერჩევის დიალოგის გავლა, უსაფრთხოების მიზეზების გამო.

დანარჩენი კოდი ადგენს მომსახურებას და მახასიათებლებს. გაითვალისწინეთ, რომ ჩვენ შევქმენით ზარის დაბრუნების რუტინა, მსგავსი firmware– ის შეტყობინების გამოძახების მსგავსი:

სერვისი = დაელოდეთ server.getPrimaryService (this.serviceUuid);

დამახასიათებელი = დაელოდეთ service.getCharacteristic (this.txUuid); დაელოდეთ დამახასიათებელი. დაწყება შეტყობინებებს (); karakteristik.addEventListener ("დამახასიათებელი მნიშვნელობა შეიცვალა", this.value_update);

this.value_update იქნება დარეკილი ყოველ ჯერზე, როდესაც ახალი ინფორმაცია იქნება tx მახასიათებლის შესახებ.

ერთ -ერთი ბოლო რამ, რასაც აკეთებს არის ის, რომ დააყენოს ქრონომეტრი ინფორმაციის განახლებისთვის ყოველ 5 წამში.

value_update () არის მხოლოდ გრძელი ფუნქცია, რომელიც ელოდება JSON– ის ახალი ინფორმაციის შემოსვლას და განაახლებს UI მას.

ec.js, ph.js და orp.js შეიცავს ბევრ პატარა ფუნქციას, რომლებიც აგზავნიან ბრძანებებს ინფორმაციის მოპოვებისა და მოწყობილობების დაკალიბრებისათვის.

ამის საცდელად, თქვენ უნდა გახსოვდეთ, რომ ვებ Bluetooth– ის გამოსაყენებლად, ის უნდა ემსახურებოდეს HTTPS– ით. ადგილობრივი HTTPS სერვერის მრავალი ვარიანტიდან ერთ-ერთი არის serve-https. Firmware ატვირთული, ყველაფერი დაკავშირებული და ვებ გვერდი, რომელსაც ემსახურება, თქვენ უნდა ნახოთ ყველაფერი მუშაობს.

ნაბიჯი 8: PWA ნაწილი

PWA ნაწილი
PWA ნაწილი

რამდენიმე ნაბიჯია ვებ გვერდის რეალურ აპლიკაციად გადაქცევისთვის. პროგრესულ ვებ პროგრამებს შეუძლიათ გაცილებით მეტი გააკეთონ, ვიდრე ეს პროექტი მათ იყენებს.

  • ვებგვერდის ინსტალაცია
  • დაინსტალირების შემდეგ, შესაძლებელია ხაზგარეშე წვდომა
  • დაიწყო და მუშაობს როგორც ჩვეულებრივი აპლიკაცია რეგულარული გარეგნობის პროგრამის ხატულასთან ერთად

დასაწყებად, ჩვენ გვჭირდება რამოდენიმე ფაილის შექმნა. პირველი არის manifest.json ფაილი. არსებობს რამოდენიმე საიტი, რომელიც ამას გააკეთებს თქვენთვის, App Manifest Generator, როგორც ერთ -ერთი მათგანი.

რამდენიმე რამ გასაგებია:

  • განაცხადის სფერო მნიშვნელოვანია. მე დავდე ეს ვებ გვერდი ufire.co/uFire-BLE/. ეს ნიშნავს, რომ ჩემი განაცხადის სფეროა /uFire-BLE /.
  • დაწყების URL ასევე მნიშვნელოვანია. ეს არის გზა თქვენი კონკრეტული ვებგვერდისკენ, რომლის ძირითადი დომენი უკვე ვარაუდობს. ასე რომ, რადგან მე ამას ვდებ ufire.co/uFire-BLE/, საწყისი URL არის/uFire-BLE/ასევე.
  • ჩვენების რეჟიმი განსაზღვრავს, თუ როგორ გამოიყურება აპლიკაცია, დამოუკიდებელი გახდის მას ჩვეულებრივ პროგრამად Chrome– ის ღილაკების და ინტერფეისის გარეშე.

თქვენ დასრულდება json ფაილით. ის უნდა განთავსდეს ვებგვერდის ძირში, ინდექსთან ერთად. Html.

შემდეგი რაც თქვენ გჭირდებათ არის სერვისის მუშაკი. ისევ და ისევ, მათ შეუძლიათ ბევრი რამის გაკეთება, მაგრამ ეს პროექტი გამოიყენებს მხოლოდ ქეშირებას, რათა ეს აპლიკაცია იყოს ხაზგარეშე წვდომა. მომსახურე პერსონალის განხორციელება ძირითადად ქვაბის ფირფიტაა. ამ პროექტმა გამოიყენა Google მაგალითი და შეცვალა ფაილების სია, რომლებიც უნდა იყოს ქეშირებული. თქვენ არ შეგიძლიათ ფაილების ქეშირება თქვენი დომენის გარეთ.

გადადით FavIcon Generator– ში და შექმენით რამდენიმე ხატი.

ბოლო არის გარკვეული კოდის დამატება Vue mounted () ფუნქციაში.

დამონტაჟებულია: ფუნქცია () {if ('serviceWorker' ნავიგატორში) {navigator.serviceWorker.register ('service-karker.js'); }}

ეს დაარეგისტრირებს მუშაკს ბრაუზერში.

თქვენ შეგიძლიათ შეამოწმოთ, რომ ყველაფერი მუშაობს, და თუ არა, იქნებ გაარკვიოთ რატომ Lighthouse– ის გამოყენებით, ის გაანალიზებს საიტს და გეტყვით ყველანაირ ნივთს.

თუ ყველაფერი მუშაობს, როდესაც გადახვალთ ვებგვერდზე, Chrome გკითხავთ, გსურთ თუ არა მისი დაყენება ამომხტარი ბანერით. თქვენ შეგიძლიათ ნახოთ ის მოქმედებაში ufire.co/uFire-BLE/, თუ მობილურ Chrome- ზე ხართ. თუ დესკტოპზე ხართ, შეგიძლიათ იპოვოთ მენიუს პუნქტი, რომ დააინსტალიროთ.