Sirkuit

Cara Membangun Sistem Deteksi Gerakan Dengan Arduino: 7 Langkah

Trick arduino 2, Mendeteksi gerakan dengan PIR pada arduino

Trick arduino 2, Mendeteksi gerakan dengan PIR pada arduino

Daftar Isi:

Anonim

Buat gerakan dan kehadiran penghitung produksi menggunakan Feather HUZZAH yang diprogram dengan Arduino dan ditenagai oleh Ubidots.

Pendeteksian gerakan fisik dan kehadiran yang efektif di Smart Homes dan Smart Manufacturing dapat sangat berguna dalam aplikasi mulai dari solusi Ambient Assisted Living (AAL) tua atau Sistem Penghitungan Produksi yang memberi makan MES yang lebih besar. Aplikasi lain untuk Deteksi Gerakan dan Kehadiran meliputi tetapi tidak terbatas pada:

  1. Otomatisasi pintu dan gerbang
  2. Sensor parkir untuk menunjuk tempat-tempat gratis
  3. Pemantauan tingkat tangki jarak jauh
  4. Rumah pintar dan fasilitas penerangan dan keamanan
  5. Deteksi dan penghitungan unit dalam jalur konveyor
  6. Tandai deteksi pada bahan cetakan
  7. Deteksi cairan di dalam kardus, plastik, dan kertas miring
  8. Deteksi jarak jauh
  9. Counter orang

Meskipun ada banyak aplikasi untuk kehadiran dan gerakan, ada sensor yang sama banyaknya untuk mengumpulkan data, seperti sensor kapasitif, induktif, fotolistrik, dan ultrasonik. Bergantung pada biaya, kondisi lingkungan, dan persyaratan akurasi, seseorang harus memilih perangkat keras terbaik untuk persyaratan lingkungan dan aplikasi.

Untuk tutorial ini, kami akan fokus membangun konter produksi real-time; aplikasi akan menghitung setiap unit yang lewat pada ban berjalan. Kami akan menggunakan Arduino IDE untuk memprogram Feather HUZZAH ESP8266, sensor ultrasonik, dan Ubidots untuk mengembangkan aplikasi kami dan menampilkan dashboard IoT kami.

Persediaan:

Langkah 1: Persyaratan

  1. Feather HUZZAH dengan ESP8266MB7389-100
  2. Sensor ultrasonik
  3. Arduino IDE 1.8.2 atau lebih tinggi
  4. Akun Ubidots -atau- Lisensi Pendidikan

Langkah 2: Pengaturan

  • I Pengaturan Perangkat Keras
  • II Pengaturan Firmware
  • AKU AKU AKU. Pengembangan Aplikasi Ubidots (acara, variabel, dan dasbor)

Langkah 3: Pengaturan Perangkat Keras

Sensor Ultrasonik MB7389-100 adalah opsi berbiaya rendah untuk aplikasi Industri dengan persyaratan konsumsi daya yang luas dan rendah dalam kondisi cuaca yang menantang berkat peringkat IPv67-nya.

Untuk memulai, mirror diagram di bawah ini untuk memasang sensor ultrasonik ke Bulu HUZZAH ESP8266.

CATATAN: Pembacaan sensor dapat dianggap sebagai pembacaan analog atau PWM; di bawah ini kami akan menjelaskan pengaturan untuk pembacaan PWM, untuk informasi tambahan, silakan lihat contoh yang ditunjukkan di atas.

Opsional tempatkan mikro-controller dan sensor di dalam case de IP67 untuk melindunginya dari debu, air, dan faktor lingkungan yang mengancam lainnya. Kasing standar terlihat mirip dengan yang ditunjukkan pada foto di atas.

Langkah 4: Pengaturan Firmware

Pertama, Anda harus menginstal Feather Huzzah di Arduino IDE dan kompilasi kodenya. Ingatlah untuk memverifikasi pengaturan ini dengan melakukan tes berkedip sederhana. Untuk informasi lebih lanjut tentang menghubungkan perangkat Feather Anda, lihat panduan pengaturan perangkat keras yang bermanfaat ini.

Untuk mengirim data sensor ke Platform Pengembangan IoT Ubidots, salin dan tempel kode di bawah ini ke dalam Arduino IDE. Ingatlah untuk menetapkan nama jaringan Wi-Fi, kata sandi, dan Token akun Ubidots Anda di tempat yang ditunjukkan dalam kode.

/ ******************************** Perpustakaan termasuk *************** **************** / # termasuk / ******************************** Konstanta dan objek ************** ***************** // * Ubidots * / const char * SSID_NAME = "xxxxxxxx"; // Taruh di sini SSID nameconst char Anda * SSID_PASS = "xxxxxxxx"; // Letakkan di sini kata sandi Anda char char * TOKEN = "Assig_your_ubidots_token"; // Taruh di sini TOKENconst char Anda * DEVICE_LABEL = "kontrol gerak"; // Perangkat labelconst char Anda * VARIABLE_LABEL = "distance"; // variabel labelconst char Anda * USER_AGENT = "ESP8266"; const char * VERSION = "1.0"; const char * HTTPSERVER = "industrial.api.ubidots.com"; // Pengguna Ubidots Bisnis // const char * HTTPSERVER = " things.ubidots.com "; // Pengguna Ubidots Education di HTTPPORT = 80; / * Ultrasonic Sensor * / const int pwPin1 = 5; // Pin PWM tempat sensor terhubungWiFiClient clientUbi; / ******************************** Fungsi Auxiliar *** **************************** // // ** Mendapatkan panjang variabel body @arg tubuh tipe char @return dataLen the panjang variabel * / int dataLen (variabel char *) {uint8_t dataLen = 0; untuk (int i = 0; i <= 250; i ++) {if (variabel i! = ' 0') {dataLen ++; } else {break; }} kembalikan dataLen;} / ******************************** Fungsi Utama ********* ********************** / void setup () {Serial.begin (115200); / * Terhubung ke AP * / WiFi.begin (SSID_NAME, SSID_PASS); while (WiFi.status ()! = WL_CONNECTED) {delay (500); Serial.print ("."); } pinMode (pwPin1, INPUT); WiFi.setAutoReconnect (true); Serial.println (F ("WiFi terhubung")); Serial.println (F ("alamat IP:")); Serial.println (WiFi.localIP ());} void loop () {/ * Pembacaan sensor dikembalikan dalam milimeter, jika Anda ingin mengonversikan * menjadi inci hanya buat variabel yang menunjuk ke -> distance / 25.4 * / jarak float = pulseIn (pwPin1, HIGH); sendToUbidots (DEVICE_LABEL, VARIABLE_LABEL, distance); delay (1000);} membatalkan sendToUbidots (const char * device_label, const char * variable_label, float sensor_value) {char * body = (char *) malloc (sizeof (char) * 150); char * data = (char *) malloc (sizeof (char) * 300); / * Spasi untuk menyimpan nilai untuk mengirim * / char str_val 10; / * ---- Mengubah nilai sensor menjadi tipe char ----- * / / * 4 adalah lebar mininum, 2 presisi; nilai float disalin ke str_val * / dtostrf (sensor_value, 4, 2, str_val); / * Membangun tubuh untuk dikirim ke permintaan * / sprintf (tubuh, "{"% s ":% s}", variable_label, str_val); / * Membangun permintaan HTTP 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); sprintf (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 (tubuh)); sprintf (data, "% s% s r n r n", data, tubuh); / * Koneksi awal * / clientUbi.connect (HTTPSERVER, HTTPPORT); / * Verifikasi koneksi klien * / if (clientUbi.connect (HTTPSERVER, HTTPPORT)) {Serial.println (F ("Posting variabel Anda:")); Serial.println (data); / * Kirim Permintaan HTTP * / clientUbi.print (data); } / * Ketika klien tersedia, baca respon dari server * / while (clientUbi.available ()) {char c = clientUbi.read (); Serial.write (c); } / * Memori bebas * / gratis (data); gratis (tubuh); / * Hentikan klien * / clientUbi.stop ();}

ProTip: Anda dapat memeriksa apakah perangkat Anda terhubung dengan benar dengan membuka monitor serial di Arduino IDE.

Anda dapat memverifikasi perangkat yang dibuat di backend Ubidots Anda dengan melihatnya di akun Anda Manajemen Perangkat -> Perangkat.

Dengan mengklik perangkat Anda, Anda akan menemukan variabel yang disebut "jarak" tempat pembacaan sensor disimpan. Nama ini diberikan dalam kode yang baru saja Anda tempel di Arduino IDE. Jika Anda ingin menyesuaikan variabel otomatis Anda, silakan lakukan dengan mengedit kartu Perangkat atau dengan mem-flash kode yang diperbarui dengan nomenklatur variabel yang benar untuk aplikasi Anda.

Dengan Feather HUZZAH ESP8266 terhubung dan melaporkan data ke Ubidots, sekarang saatnya untuk membangun aplikasi menggunakan Ubidots yang dirancang dengan hati-hati konfigurasi aplikasi bebas kode.

Langkah 5: Pengembangan Aplikasi Ubidots

Konfigurasi Acara Ubidots

Bacaan saat ini kami kirim ke Ubidot adalah input jarak. Untuk menerjemahkan bacaan-bacaan ini ke dalam output yang diinginkan yang kita inginkan - unit yang dihitung - kita harus membuat acara dengan langkah-langkah berikut:

  1. Di dalam perangkat saat ini "kontrol gerak" membuat variabel default baru yang disebut "kotak", yang akan menerima 1 setiap kali unit baru dihitung.
  2. Pergi ke Manajemen Perangkat -> Acara, dan klik ikon tambah biru di sudut kanan atas halaman untuk menambahkan acara baru.
  3. Konfigurasikan acara Anda dimulai dengan "Jika memicu":

  • Pilih satu variabel: "jarak"
  • Nilai: nilai (default)
  • Kurang dari atau sama dengan jarak maksimum yang diharapkan} antara sensor dan kotak yang melewati * aplikasi kita membutuhkan 500mm
  • Untuk 0 menit
  • Menyimpan

4. Setelah pemicu telah dikonfigurasi untuk spesifikasi aplikasi Anda, klik ikon oranye "plus" di sudut kanan atas untuk menambahkan tindakan bersyarat.

5. Pilih "Set Variable" sebagai tindakan.

6. Selanjutnya, pilih variabel default "kotak" dan nilai "1".

7. Simpan perubahan. Jika acara diatur dengan benar, itu akan mengirim "1" setiap kali jarak antara sensor dan unit lebih panjang dari ambang yang ditunjukkan, yang menunjukkan bahwa tidak ada objek dekat - dan harus menghitung unit baru yang baru saja dilewati .

Dalam kartu Perangkat khusus Feather, Anda akan menemukan bahwa variabel "kotak" tempat "1" dikirim kapan saja kehadiran unit dirasakan.

Terutama berguna untuk ban berjalan industri dan penghitungan unit prototipe ini dapat disesuaikan agar sesuai dengan lingkungan atau perangkat keras yang berbeda hanya dalam pengkodean Anda atau pengembangan aplikasi Anda.

8. Visualisasikan jumlah unit yang dirasakan (atau berapa kali suatu objek terdeteksi)
Sekarang, menggunakan variabel "kotak", kita akan membuat variabel jendela bergulir baru untuk menjumlahkan jumlah total bacaan yang diterima dari variabel "kotak" dalam spam yang ditentukan (menit, jam, hari, minggu, dll). Untuk menjalankan pengembangan ini, ikuti langkah-langkah sederhana ini:

Tetapkan kredensial berikut untuk variabel rolling window baru Anda

Pilih perangkat: kontrol gerak (atau nama perangkat yang Anda kirim data Anda)

Pilih satu variabel: kotak

Hitung: jumlah

Setiap: "1" jam (atau sesuai permintaan aplikasi Anda)

Sekarang berikan nama ke variabel baru yang menunjukkan jumlah kotak (atau gerakan) yang dihitung dalam satu jam, seperti "kotak / jam" atau "unit / jam.

Langkah 6: Konfigurasi Dashboard

Terakhir, buat dashboard untuk menampilkan jumlah unit yang dirasakan.

Buka Manajemen Perangkat -> Dasbor dan tambahkan widget baru. Widget ini akan menampilkan jumlah kotak yang dihitung hari ini dipecah berdasarkan jam.

Tetapkan kredensial berikut untuk widget baru Anda untuk memvisualisasikan hitungan Anda.

Bagaimana Anda ingin melihat data Anda ?: Grafik

Pilih jenis widget: bagan garis

Tambahkan perangkat: kontrol gerak

Tambahkan variabel: kotak / jam

Selesai. Dan dengan pengembangan dasbor terakhir ini - aplikasi Anda lengkap dan sekarang Anda memiliki sistem deteksi gerakan dan kehadiran yang efisien dan efektif. Inilah hasil akhir dari hasil kami.

Langkah 7: