Isi kandungan:

Cara Membina Sistem Pengesanan Gerak Dengan Arduino: 7 Langkah
Cara Membina Sistem Pengesanan Gerak Dengan Arduino: 7 Langkah

Video: Cara Membina Sistem Pengesanan Gerak Dengan Arduino: 7 Langkah

Video: Cara Membina Sistem Pengesanan Gerak Dengan Arduino: 7 Langkah
Video: Tonton Sampai Habis !!! Belajar Arduino Di Jamin Bisa 2024, Julai
Anonim
Cara Membina Sistem Pengesanan Gerak Dengan Arduino
Cara Membina Sistem Pengesanan Gerak Dengan Arduino

Bina kaunter pengeluaran gerak dan kehadiran menggunakan Feather HUZZAH yang diprogramkan dengan Arduino dan dikuasakan oleh Ubidots.

Pergerakan fizikal dan pengesanan kehadiran yang berkesan di Rumah Pintar dan Pembuatan Pintar sangat berguna dalam aplikasi mulai dari penyelesaian Ambient Assisted Living (AAL) warga tua atau Sistem Pengiraan Pengeluaran yang memberi makan MES yang lebih besar. Aplikasi lain untuk Pengesanan Gerak dan Kehadiran termasuk tetapi tidak terhad kepada:

  1. Automasi pintu dan pintu
  2. Sensor tempat letak kereta untuk menentukan tempat percuma
  3. Pemantauan tahap tangki jauh
  4. Rumah pintar dan kemudahan untuk pencahayaan dan keselamatan
  5. Pengesanan dan pengiraan unit dalam garis penghantar
  6. Tandakan pengesanan pada bahan bercetak
  7. Pengesanan cecair di dalam kadbod, plastik, dan kemiringan kertas
  8. Pengesanan jarak
  9. Kaunter orang

Walaupun terdapat banyak aplikasi untuk kehadiran dan gerakan, sensor sama banyak untuk mengumpulkan data, seperti sensor kapasitif, induktif, fotolistrik, dan ultrasonik. Bergantung pada kos, keadaan persekitaran, dan keperluan ketepatan, seseorang harus memilih perkakasan yang paling sesuai untuk keperluan persekitaran dan aplikasi.

Untuk tutorial ini, kami akan memberi tumpuan untuk membina kaunter pengeluaran masa nyata; aplikasi akan mengira setiap unit yang lewat pada tali sawat. Kami akan menggunakan Arduino IDE untuk memprogram Feather HUZZAH ESP8266, sensor ultrasonik, dan Ubidots untuk mengembangkan aplikasi kami dan memaparkan papan pemuka IoT kami.

Langkah 1: Keperluan

  1. Bulu HUZZAH dengan ESP8266MB7389-100
  2. Sensor Ultrasonik
  3. Arduino IDE 1.8.2 atau lebih tinggi
  4. Akaun Ubidots-atau STEM License

Langkah 2: Persediaan

  • Saya Penyediaan Perkakasan
  • II. Persediaan Firmware
  • III. Pembangunan Aplikasi Ubidots (peristiwa, pemboleh ubah, dan papan pemuka)

Langkah 3: Persediaan Perkakasan

Persediaan Perkakasan
Persediaan Perkakasan
Persediaan Perkakasan
Persediaan Perkakasan

Sensor Ultrasonik MB7389-100 adalah pilihan kos rendah untuk aplikasi Industri dengan keperluan penggunaan pelbagai dan kuasa rendah dalam keadaan cuaca yang mencabar berkat penilaian IPv67.

Untuk memulakan, cerminkan rajah di bawah untuk memasang sensor ultrasonik ke Feather HUZZAH ESP8266.

CATATAN: Bacaan sensor boleh diambil sebagai bacaan analog atau PWM; di bawah ini kami akan menerangkan persediaan untuk pembacaan PWM, untuk maklumat tambahan sila lihat contoh yang ditunjukkan di atas.

[Secara pilihan] letakkan pengawal mikro dan sensor di dalam casing de IP67 untuk melindungi mereka dari habuk, air, dan faktor persekitaran yang mengancam lain. Kotak standard kelihatan serupa dengan yang ditunjukkan dalam gambar di atas.

Langkah 4: Persediaan Firmware

Persediaan Firmware
Persediaan Firmware
Persediaan Firmware
Persediaan Firmware

Pertama, anda harus memasang Feather Huzzah di Arduino IDE dan menyusun kodnya. Ingatlah untuk mengesahkan penyediaan ini dengan melakukan ujian berkelip sederhana. Untuk maklumat lebih lanjut mengenai menyambungkan peranti Feather anda, lihat panduan persediaan perkakasan yang berguna ini.

Untuk menghantar data sensor ke Ubidots IoT Development Platform, salin dan tampal kod di bawah ke Arduino IDE. Ingatlah untuk memberikan nama rangkaian Wi-Fi, kata laluan, dan Token akaun Ubidots anda yang dinyatakan dalam kod.

/ ******************************** Perpustakaan termasuk *************** **************** / # sertakan / ****************************** ** Pemalar dan objek ******************************* // * Ubidots * / const char * SSID_NAME = "xxxxxxxx"; // Letakkan di sini ciri SSID anda * SSID_PASS = "xxxxxxxx"; // Masukkan di sini charconconst anda * TOKEN = "Assig_your_ubidots_token"; // Masukkan di sini char TOKENconst anda * DEVICE_LABEL = "motion-control"; // Peranti labelconst char anda * VARIABLE_LABEL = "jarak"; // Pemboleh ubah labelconst anda * USER_AGENT = "ESP8266"; const char * VERSION = "1.0"; const char * HTTPSERVER = "industrial.api.ubidots.com"; // Pengguna perniagaan Ubidots // const char * HTTPSERVER = " things.ubidots.com "; // Ubidots Pendidikan penggunaint HTTPPORT = 80; / * Ultrasonic Sensor * / const int pwPin1 = 5; // Pin PWM di mana sensor disambungkanWiFiClient clientUbi; / ******************************** Fungsi Auxiliar *** **************************** // ** Mendapatkan panjang badan @arg memboleh ubah badan jenis char @return dataLen the panjang pemboleh ubah * / int dataLen (char * variable) {uint8_t dataLen = 0; untuk (int i = 0; i jarak / 25.4 * / jarak apungan = pulseIn (pwPin1, HIGH); sendToUbidots (DEVICE_LABEL, VARIABLE_LABEL, jarak); kelewatan (1000);} batal sendToUbidots (const char * device_label, const char * variabel_label, float sensor_value) {char * body = (char *) malloc (sizeof (char) * 150); char * data = (char *) malloc (sizeof (char) * 300); / * Ruang untuk menyimpan nilai untuk dihantar * / char str_val [10]; / * ---- Mengubah nilai sensor menjadi jenis char ----- * / / * 4 adalah lebar minimum, 2 adalah ketepatan; nilai apungan disalin ke str_val * / dtostrf (sensor_value, 4, 2, str_val); / * Membina badan yang akan dihantar ke permintaan * / sprintf (body, "{"% s / ":% s}", variabel_label, str_val); / * Membangun HTTP minta menjadi POST * / sprintf (data, "POST /api/v1.6/devices/%s", device_label); sprintf (data, "% s HTTP / 1.1 / r / n", data); sprintf (data, "% sHost: things.ubidots.com / r / n", data); sprintf (data, "% sUser-Agent:% s /% s / r / n", data, USER_AGENT, VERSION); sprintf (data, "% sX-Auth-Token:% s / r / n", data, TOKEN); pecut f (data, "% sConnection: close / r / n", data); sprintf (data, "% sContent-Type: application / json / r / n", data); sprintf (data, "% sContent-Length:% d / r / n / r / n", data, dataLen (badan)); sprintf (data, "% s% s / r / n / r / n", data, badan); / * Sambungan awal * / clientUbi.connect (HTTPSERVER, HTTPPORT); / * Sahkan sambungan pelanggan * / jika (clientUbi.connect (HTTPSERVER, HTTPPORT)) {Serial.println (F ("Posting your variables:")); Serial.println (data); / * Kirim Permintaan HTTP * / clientUbi.print (data); } / * Semasa pelanggan tersedia, baca respons pelayan * / while (clientUbi.available ()) {char c = clientUbi.read (); Serial.write (c); } / * Memori percuma * / percuma (data); percuma (badan); / * Hentikan klien * / clientUbi.stop ();}

ProTip: anda boleh memeriksa sama ada peranti anda disambungkan dengan betul dengan membuka monitor bersiri di Arduino IDE.

Anda boleh mengesahkan bahawa peranti dibuat di backend Ubidots dengan melihatnya di akaun anda Pengurusan Peranti -> Peranti.

Dengan mengklik peranti anda, anda akan menemui pemboleh ubah yang disebut "jarak" di mana bacaan sensor disimpan. Nama ini diberikan dalam kod yang baru anda tempelkan di Arduino IDE. Sekiranya anda ingin menyesuaikan pemboleh ubah automatik anda, lakukan dengan mengedit kad Peranti atau dengan memaparkan kod yang dikemas kini dengan nomenklatur pemboleh ubah yang betul untuk aplikasi anda.

Dengan Feather HUZZAH ESP8266 terhubung dan melaporkan data ke Ubidots, kini saatnya untuk membina aplikasi menggunakan Ubidots yang dirancang dengan teliti konfigurasi aplikasi bebas kod.

Langkah 5: Pembangunan Aplikasi Ubidots

Pembangunan Aplikasi Ubidots
Pembangunan Aplikasi Ubidots
Pembangunan Aplikasi Ubidots
Pembangunan Aplikasi Ubidots
Pembangunan Aplikasi Ubidots
Pembangunan Aplikasi Ubidots

Konfigurasi Acara Ubidots

Bacaan semasa yang kami hantar ke Ubidots adalah input jarak. Untuk menerjemahkan pembacaan ini ke output yang diinginkan yang kita mahukan -kira unit- kita harus membuat acara mengikuti langkah-langkah berikut:

  1. Di dalam peranti semasa "gerakan kawalan" buat pemboleh ubah lalai baru yang disebut "kotak", yang akan menerima 1 setiap kali unit baru dikira.
  2. Pergi ke Pengurusan Peranti -> Acara, dan klik ikon tambah biru di sudut kanan atas halaman untuk menambahkan acara baru.
  3. Konfigurasikan acara anda bermula dengan "If triggers":
  • Pilih pemboleh ubah: "jarak"
  • Nilai: nilai (lalai)
  • Kurang daripada atau sama dengan [jarak maksimum yang diharapkan] antara sensor dan kotak yang melewati * aplikasi kami memerlukan 500mm
  • Selama 0 minit
  • Jimat

4. Setelah pemicu dikonfigurasi sesuai dengan spesifikasi aplikasi anda, klik ikon "plus" berwarna jingga di sudut kanan atas untuk menambahkan tindakan bersyarat.

5. Pilih "Tetapkan Pembolehubah" sebagai tindakan.

6. Seterusnya, pilih "kotak" pemboleh ubah lalai yang dibuat sebelumnya dan nilai "1".

7. Simpan perubahan. Sekiranya acara diatur dengan betul, ia akan mengirim "1" setiap kali jarak antara sensor dan unit lebih panjang dari ambang yang ditunjukkan, yang menunjukkan bahawa tidak ada objek yang dekat - dan harus mengira unit baru yang baru saja dilewati.

Dalam kad Peranti khusus Feather, anda akan mendapati bahawa "kotak" pemboleh ubah di mana "1" dihantar setiap kali kehadiran unit dirasakan.

Terutama berguna untuk tali sawat industri dan penghitungan unit prototaip ini dapat disesuaikan agar sesuai dengan persekitaran atau perkakasan yang berbeza hanya dalam pengekodan atau pengembangan aplikasi anda.

8. Visualisasikan jumlah unit yang dirasakan (atau kali objek dikesan) Sekarang, dengan menggunakan pemboleh ubah "kotak", kita akan membuat pemboleh ubah tetingkap baru untuk menjumlahkan jumlah bacaan yang diterima dari pemboleh ubah "kotak" di spam yang ditentukan (minit, jam, hari, minggu, dll). Untuk melaksanakan perkembangan ini, ikuti langkah mudah berikut:

Tetapkan kelayakan berikut ke pemboleh ubah tetingkap baru anda

Pilih peranti: kawalan gerakan (atau nama peranti yang anda kirimkan data anda)

Pilih pemboleh ubah: kotak

Hitung jumlah:

Setiap: "1" jam (atau sesuai dengan permintaan aplikasi anda)

Sekarang tetapkan nama ke pemboleh ubah baru yang menunjukkan bilangan kotak (atau pergerakan) yang dikira dalam satu jam, seperti "kotak / jam" atau "unit / jam.

Langkah 6: Konfigurasi Papan Pemuka

Konfigurasi Papan Pemuka
Konfigurasi Papan Pemuka

Akhirnya, buat papan pemuka untuk memaparkan jumlah unit yang dirasakan.

Pergi ke Pengurusan Peranti -> Papan Pemuka dan tambahkan widget baru. Widget ini akan memaparkan jumlah kotak yang dihitung hari ini dipecahkan mengikut jam.

Tetapkan kelayakan berikut ke widget baru anda untuk menggambarkan jumlah anda.

Bagaimana anda ingin melihat data anda ?: Carta

Pilih jenis widget: carta garis

Tambahkan peranti: kawalan gerakan

Tambahkan pemboleh ubah: kotak / jam

Selesai. Dan dengan pengembangan papan pemuka akhir ini - aplikasi anda sudah lengkap dan anda kini mempunyai sistem pengesanan pergerakan dan kehadiran yang cekap dan berkesan. Inilah gambaran terakhir hasil kami.

Disyorkan: