Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Nano 33 IoT + EC/pH/ORP + WebAPK

Komponen dan persediaan

Arduino Nano 33 IoT
× 1
Antarmuka Penyelidikan EC Terisolasi Microfire LLC
× 1
Antarmuka Probe ISE Terisolasi Microfire LLC
× 2

Tentang proyek ini

Apa yang akan kita buat?

Alat untuk mengukur EC, pH, ORP, dan suhu. Ini dapat digunakan untuk memantau pengaturan kolam atau hidroponik. Ini akan berkomunikasi melalui Bluetooth Low Energy dan menampilkan informasi pada halaman web menggunakan Web Bluetooth. Dan untuk bersenang-senang, kami akan mengubahnya menjadi Aplikasi Web Progresif yang dapat Anda instal dari web.

Anda bisa mendapatkan semua itu di ufire.co.

Apa saja istilah-istilah itu?

  • EC/pH/ORP/suhu adalah beberapa pengukuran kualitas air yang paling umum. Konduktivitas listrik (EC) digunakan dalam hidroponik untuk mengukur larutan nutrisi, pH untuk seberapa asam/basa air, dan ORP digunakan untuk membantu menentukan kemampuan air untuk mendisinfeksi dirinya sendiri.
  • Bluetooth Low Energy adalah protokol nirkabel untuk mengirim dan menerima informasi dengan mudah. Papan Arduino yang digunakan dalam proyek ini adalah Nano 33 IoT dan dilengkapi dengan antarmuka WiFi dan BLE.
  • Web Bluetooth adalah sekumpulan API yang diterapkan di browser Google Chrome (dan Opera) yang memungkinkan laman web berkomunikasi langsung dengan perangkat BLE.
  • Aplikasi Web Progresif pada dasarnya adalah halaman web yang bertindak seperti aplikasi biasa. Android dan iPhone menanganinya secara berbeda, dan keduanya berbeda di desktop, jadi Anda perlu membaca sedikit untuk mengetahuinya secara spesifik.

Perangkat keras

Sebelum kita dapat merakit perangkat keras, ada satu hal yang harus diperhatikan. Perangkat sensor uFire ISE datang dengan alamat I2C yang sama dan kami menggunakan dua, jadi salah satunya harus diubah. Untuk proyek ini, kita akan memilih salah satu papan ISE dan menggunakannya untuk mengukur ORP. Ikuti langkah-langkah di sini, ubah alamat menjadi 0x3e.

Sekarang setelah alamatnya diubah, menyatukan perangkat keras menjadi mudah. Semua perangkat sensor menggunakan sistem koneksi Qwiic, jadi hubungkan saja semuanya dalam satu rantai. Anda memerlukan satu kabel Qwiic ke Male untuk menghubungkan salah satu sensor ke Nano 33. Kabelnya konsisten dan diberi kode warna. Hubungkan hitam ke GND Nano, merah ke pin +3.3V atau +5V, biru ke pin SDA yaitu A4, dan kuning ke pin SCL di A5.

Untuk proyek ini, informasi suhu diharapkan datang dari sensor EC, jadi pastikan untuk memasang sensor suhu ke papan EC. Semua papan memiliki kemampuan untuk mengukur suhu sekalipun. Jangan lupa untuk memasang probe EC, pH dan ORP ke sensor yang sesuai. Mereka mudah dipasang dengan konektor BNC.

Jika Anda memiliki selungkup, memasukkan semua ini ke dalam adalah ide yang bagus, terutama mengingat air akan terlibat.

Perangkat lunak

Bagian perangkat lunak ini dibagi menjadi dua bagian utama:firmware pada Nano 33, dan halaman web.

Alur dasarnya adalah ini:

  • Halaman web terhubung ke Nano melalui BLE
  • Laman web mengirimkan perintah berbasis teks untuk meminta informasi atau mengambil tindakan
  • Nano mendengarkan perintah tersebut, menjalankannya, dan mengembalikan informasi
  • Laman web menerima tanggapan dan memperbarui UI yang sesuai

Penyiapan ini memungkinkan halaman web melakukan semua fungsi yang diperlukan seperti yang Anda harapkan, seperti melakukan pengukuran atau mengkalibrasi sensor.

Layanan dan Karakteristik BLE

Salah satu hal pertama yang harus dipelajari adalah dasar-dasar cara kerja BLE.

Ada banyak analogi, jadi mari kita pilih buku. Sebuah layanan akan menjadi sebuah buku, dan sebuah karakteristik akan menjadi halaman-halamannya. Dalam "buku BLE" ini, halaman memiliki beberapa properti non-buku seperti kemampuan untuk mengubah apa yang dikatakan halaman dan menerima pemberitahuan saat itu terjadi.

Perangkat BLE dapat membuat layanan sebanyak yang diinginkan. Beberapa telah ditentukan sebelumnya dan bertindak sebagai cara untuk menstandarisasi informasi yang umum digunakan seperti Tx Power atau kehilangan koneksi, ke hal-hal yang lebih spesifik seperti Insulin atau Pulse Oksimetri. Anda juga dapat membuatnya dan melakukan apa pun yang Anda inginkan dengannya. Mereka didefinisikan dalam perangkat lunak dan diidentifikasi dengan UUID. Anda dapat membuat UUID di sini, atau untuk alternatif sumber terbuka, coba UUIDTools.com.

Dalam firmware untuk perangkat ini, ada satu layanan, yang didefinisikan sebagai:

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

dan dua karakteristik:

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

tx_Characteristic akan menjadi tempat perangkat mengirimkan informasi, seperti pengukuran EC, untuk ditampilkan di halaman web. rx_Characteristic adalah tempat ia akan menerima perintah dari halaman web untuk dieksekusi.

Proyek ini menggunakan perpustakaan ArduinoBLE. Jika Anda perhatikan, Anda akan melihat ada beberapa perbedaan yang menyatakan suatu ciri. Proyek ini menggunakan BLStringCharacteristic karena kita akan berurusan dengan tipe String dan itu lebih mudah, tetapi Anda juga bisa memilih BLECharCharacteristic atau BLEByteCharacteristic dari beberapa lainnya.

Selain itu, ada beberapa properti yang dapat Anda berikan karakteristiknya. tx_Characteristic memiliki BLENotify sebagai pilihan. Itu berarti bahwa halaman web kita akan menerima pemberitahuan ketika nilainya berubah. rx_Characteristic memiliki BLEWrite yang akan memungkinkan halaman web kami untuk memodifikasinya. Ada yang lain.

Kemudian ada sedikit lem kode untuk mengikat semua ini menjadi satu:

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();

Kurang lebih sudah cukup jelas, tapi mari kita bahas beberapa poin.

rx_Characteristic.setEventHandler(BLEWritten, rxCallback); 

Di sinilah Anda memanfaatkan pemberitahuan tentang nilai yang diubah. Baris memberitahu kelas untuk menjalankan fungsi rxCallback saat nilainya diubah.

BLE.advertise(); adalah apa yang memulai semuanya. Perangkat BLE secara berkala akan mengirimkan paket kecil informasi yang mengumumkan bahwa itu ada di luar sana dan tersedia untuk dihubungkan. Tanpa itu, itu tidak akan terlihat.

Perintah teks

Seperti disebutkan sebelumnya, perangkat ini akan berbicara dengan halaman web melalui perintah teks sederhana. Semuanya mudah diimplementasikan karena kerja keras telah dilakukan. Sensor uFire hadir dengan perpustakaan berbasis JSON dan MsgPack untuk mengirim dan menerima perintah. Anda dapat membaca lebih lanjut tentang perintah EC dan ISE di halaman dokumentasinya.

Proyek ini akan menggunakan JSON karena sedikit lebih mudah untuk dikerjakan dan dibaca, tidak seperti format MsgPack yang biner.

Berikut ini contoh bagaimana semuanya saling terkait:

  • Laman web meminta perangkat untuk pengukuran EC dengan mengirimkan ec (atau lebih khusus menulis ec dengan karakteristik rx_Characteristic)
  • Perangkat menerima perintah dan menjalankannya. Kemudian mengirimkan kembali respons berformat JSON dari {"ec":1.24} dengan menulis ke karakteristik tx_Characteristic.
  • Laman web menerima informasi dan menampilkannya

Halaman web

Halaman web untuk proyek ini akan menggunakan Vue.js untuk front-end. Tidak diperlukan backend. Selain itu, untuk membuat semuanya lebih sederhana, tidak ada sistem build yang digunakan. Ini dibagi menjadi folder biasa, js untuk javascript, css untuk CSS, aset untuk ikon.

Bagian htmlnya tidak ada yang istimewa. Ini menggunakan bulma.io untuk menata dan membuat antarmuka pengguna. Anda akan melihat banyak hal di bagian. Ini menambahkan semua css dan ikon, tetapi juga menambahkan satu baris secara khusus.

 

Itu memuat file manifest.json kami yang membuat semua hal PWA terjadi. Ini menyatakan beberapa informasi yang memberi tahu ponsel kita bahwa halaman web ini dapat diubah menjadi aplikasi.

Javascript adalah tempat sebagian besar hal menarik terjadi. Ini dipecah menjadi file, app.js berisi dasar-dasar untuk membuat halaman web Vue berjalan bersama dengan semua variabel terkait UI dan beberapa hal lainnya. ble.js memiliki fitur bluetooth.

Javascript dan Bluetooth Web

Pertama, ini hanya berfungsi di Chrome dan Opera. Saya berharap browser lain akan mendukung ini, tetapi untuk alasan apa pun, mereka tidak.

Lihat app.js dan Anda akan melihat UUID yang sama yang kami gunakan di firmware kami. Satu untuk Layanan uFire, dan masing-masing untuk karakteristik tx dan rx.

Sekarang jika Anda melihat di ble.js, Anda akan melihat connect() dan disconnect() fungsi.

connect() fungsi berisi beberapa logika untuk menjaga UI tetap sinkron, tetapi sebagian besar mengatur hal-hal untuk mengirim dan menerima informasi tentang karakteristik.

Ada beberapa keistimewaan ketika berhadapan dengan Web Bluetooth. Koneksi harus dimulai dengan semacam interaksi fisik pengguna, seperti mengetuk tombol. Anda tidak dapat terhubung secara terprogram saat halaman web dimuat, misalnya.

Kode untuk memulai koneksi terlihat seperti ini:

this.device =menunggu navigator.bluetooth.requestDevice({
filter:[
{
namePrefix:"uFire"
}
],
Layanan opsional:[this.serviceUuid]
});

Filter:dan bagian Layanan opsional diperlukan untuk menghindari melihat setiap perangkat BLE di luar sana. Anda akan berpikir hanya bagian filter yang akan baik-baik saja, tetapi Anda juga memerlukan bagian Layanan opsional juga.

Kode di atas akan menampilkan dialog koneksi. Itu bagian dari antarmuka Chrome dan tidak dapat diubah. Pengguna akan memilih dari daftar. Meskipun hanya ada satu perangkat yang akan terhubung dengan aplikasi, pengguna tetap harus melalui dialog pemilihan ini, karena masalah keamanan.

Sisa kodenya adalah menyiapkan layanan dan karakteristik. Perhatikan bahwa kami menyiapkan panggilan balik rutin, mirip dengan panggilan balik pemberitahuan firmware:

service =menunggu server.getPrimaryService(this.serviceUuid);
karakteristik =menunggu service.getCharacteristic(this.txUuid);
menunggu karakteristik.startNotifications();
karakteristik .addEventListener(
"characteristicvaluechanged",
this.value_update
);

this.value_update sekarang akan dipanggil setiap kali ada informasi baru tentang karakteristik tx.

Salah satu hal terakhir yang dilakukannya adalah menyetel timer untuk memperbarui informasi setiap 5 detik.

value_update() hanyalah fungsi panjang yang menunggu informasi JSON baru masuk dan memperbarui UI dengannya.

ec.js, ph.js, dan orp.js berisi banyak fungsi kecil yang mengirimkan perintah untuk mengambil informasi dan mengkalibrasi perangkat.

Untuk mencoba ini, Anda harus ingat bahwa untuk menggunakan Bluetooth Web, Bluetooth harus dilayani melalui HTTPS. Salah satu dari banyak opsi untuk server HTTPS lokal adalah serve-https. Dengan firmware yang diunggah, semuanya terhubung, dan halaman web disajikan, Anda seharusnya dapat melihat semuanya berfungsi.

Bagian PWA

Ada beberapa langkah untuk mengubah halaman web menjadi aplikasi yang sebenarnya. Progressive Web Apps dapat melakukan lebih dari yang digunakan proyek ini.

  • Pemasangan halaman web
  • Setelah diinstal, akses offline dimungkinkan
  • Dimulai dan dijalankan sebagai aplikasi biasa dengan ikon aplikasi yang tampak biasa

Untuk memulai, kita perlu membuat banyak file. Yang pertama adalah file manifest.json. Ada beberapa situs yang akan melakukan ini untuk Anda, App Manifest Generator, salah satunya.

Beberapa hal yang perlu dipahami:

  • Cakupan aplikasi itu penting. Jika menempatkan halaman web ini di ufire.co/uFire-BLE/. Itu berarti lingkup aplikasi saya adalah /uFire-BLE/.
  • URL Mulai juga penting. Ini adalah jalur ke halaman web khusus Anda dengan domain dasar yang sudah diasumsikan.
  • Mode Tampilan akan menentukan tampilan aplikasi, Standalone akan membuatnya tampak seperti aplikasi biasa tanpa tombol atau antarmuka Chrome.

Anda akan mendapatkan file json. Itu harus ditempatkan di akar halaman web, tepat bersama dengan index.html.

Hal berikutnya yang Anda perlukan adalah Service Worker. Sekali lagi, mereka dapat melakukan banyak hal, tetapi proyek ini hanya akan menggunakan caching agar aplikasi ini dapat diakses secara offline. Implementasi pekerja layanan sebagian besar adalah boilerplate. Proyek ini menggunakan contoh Google dan mengubah daftar file yang akan di-cache. Anda tidak dapat menyimpan file di luar domain Anda.

Buka FavIcon Generator dan buat beberapa ikon.

Hal terakhir adalah menambahkan beberapa kode di Vue mounted() fungsi.

mount:function () {
if ('serviceWorker' di navigator) {
navigator.serviceWorker.register('service-worker.js');
}
},

Ini akan mendaftarkan pekerja ke browser.

Anda dapat memeriksa apakah semuanya berfungsi, dan jika tidak, mungkin mencari tahu alasannya dengan menggunakan Lighthouse, Lighthouse akan menganalisis situs dan memberi tahu Anda berbagai hal.

Jika semuanya berfungsi, saat Anda membuka laman web, Chrome akan menanyakan apakah Anda ingin memasangnya dengan spanduk munculan.

Kode

Arduino Buat Kode
GitHub
https://github.com/u-fire/uFire-BLE

Skema

Semua koneksi dibuat dengan kabel Qwiic.

Proses manufaktur

  1. Infineon bernama Advanced Technology Partner to Amazon Web Services
  2. IoT Dasar – RaspberryPI HDC2010 cara
  3. Windows IoT:Pintu Pengenalan Wajah
  4. Tombol AWS IoT Terkendali Gerakan
  5. Windows 10 IoT Core dan SHT15
  6. Windows 10 IoT Core untuk Raspberry Pi 3 Model B+
  7. Raspberry Pi 4 Sebagai Server Web [Buat Website Sendiri]
  8. GoPiGo v2 dengan Windows IoT
  9. Kolam Renang Azure IoT
  10. Dampak IoT pada Masa Depan Desain &Pengembangan Aplikasi Web