Litar

Bagaimana Membangun Sistem Pengesanan Pergerakan Dengan Arduino: 7 Langkah

MEMBUAT ALAT KONTROL PERALATAN MENGGUNAKAN ARDUINO MELALUI SMARTPHONE (BUTTON CONTROL) //TUTORIAL1

MEMBUAT ALAT KONTROL PERALATAN MENGGUNAKAN ARDUINO MELALUI SMARTPHONE (BUTTON CONTROL) //TUTORIAL1

Isi kandungan:

Anonim

Bina gerakan pengeluaran kehadiran dan kehadiran menggunakan bulu HUZZAH yang diprogramkan dengan Arduino dan dikuasakan oleh Ubidots.

Gerakan fizikal yang berkesan dan pengesanan kehadiran di Smart Homes and Smart Manufacturing boleh menjadi sangat berguna dalam aplikasi yang terdiri daripada penyelesaian Ambient Assisted Living (AAL) tua atau Sistem Penghitungan Pengeluaran yang memberi makan kepada MES yang lebih besar. Permohonan lain untuk Pengesanan Pergerakan dan Kehadiran termasuk tetapi tidak terhad kepada:

  1. Pintu dan automasi pintu
  2. Penderia tempat letak kereta untuk menetapkan tempat percuma
  3. Pemantauan paras tangki jauh
  4. Rumah pintar dan kemudahan untuk pencahayaan dan keselamatan
  5. Unit pengesanan dan pengiraan dalam talian penghantar
  6. Tandakan pengesanan pada bahan bercetak
  7. Pengesanan cecair dalam kadbod, plastik, dan kertas tilam
  8. Pengesanan jarak
  9. Kaunter orang

Walaupun terdapat banyak aplikasi untuk kehadiran dan gerakan, terdapat banyak sensor untuk mengumpulkan data, seperti sensor kapasitif, induktif, fotoelektrik, dan ultrasonik. Bergantung pada kos, keadaan persekitaran, dan keperluan ketepatan, seseorang harus memilih perkakasan pemasangan terbaik untuk keperluan persekitaran dan aplikasi.

Untuk tutorial ini, kami akan memberi tumpuan kepada membina kaunter pengeluaran masa nyata; permohonan itu akan mengira setiap unit yang dilalui oleh tali pinggang penghantar. Kami akan menggunakan IDE Arduino untuk memprogramkan Feather HUZZAH ESP8266, sensor ultrasonik, dan Ubidots untuk membangunkan aplikasi kami dan memaparkan papan pemuka IoT kami.

Bekalan:

Langkah 1: Keperluan

  1. Bulu HUZZAH dengan ESP8266MB7389-100
  2. Sensor ultrasonik
  3. Arduino IDE 1.8.2 atau lebih tinggi
  4. Ubidots account -or- Lesen Pendidikan

Langkah 2: Persediaan

  • Saya Perisian Perkakasan
  • II. Persediaan firmware
  • III. Pembangunan Aplikasi Ubidots (peristiwa, pembolehubah, dan papan pemuka)

Langkah 3: Persediaan Perkakasan

Sensor ultrasonik MB7389-100 adalah pilihan kos rendah untuk aplikasi Perindustrian dengan keperluan luas dan penggunaan kuasa rendah dalam keadaan cuaca yang mencabar berkat rating IPv67.

Untuk memulakan, cermin gambarajah di bawah untuk melampirkan sensor ultrasonik ke Bulu HUZZAH ESP8266.

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

Secara pilihan letakkan pengawal mikro dan sensor di dalam kes IP67 untuk melindungi mereka dari habuk, air, dan lain-lain faktor persekitaran yang mengancam. Kes standard kelihatan sama seperti yang ditunjukkan dalam gambar di atas.

Langkah 4: Persediaan firmware

Pertama, anda perlu memasang Feather Huzzah dalam Arduino IDE dan menyusun kod tersebut. Ingat untuk mengesahkan penyiapan ini dengan melakukan ujian berkedip mudah. Untuk maklumat lanjut mengenai menyambungkan peranti Feather anda, lihat panduan persediaan perkakasan yang berguna ini.

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

/ ******************************** Perpustakaan termasuk *************** **************** / # termasuk / ******************************** Perlahan dan objek ************** ***************** // * Ubidots * / const char * SSID_NAME = "xxxxxxxx"; / / Letakkan SSID nameconst char anda SSID_PASS = "xxxxxxxx"; // Masukkan di sini passwordconst char anda * TOKEN = "Assig_your_ubidots_token"; / / Letakkan di sini char TOKENconst anda * DEVICE_LABEL = "gerakan-gerakan"; / // labelconst peranti char * VARIABLE_LABEL = "jarak"; // Character labelconst char anda * USER_AGENT = "ESP8266"; const char * VERSION = "1.0"; const char * HTTPSERVER = "industrial.api.ubidots.com"; // Pengguna Ubidots Perniagaan // const char * HTTPSERVER = " things.ubidots.com "; / / Ubidots Educational usersint HTTPPORT = 80; / * Ultrasonic Sensor * / const int pwPin1 = 5; // Pin PWM di mana sensor disambungkanWiFiClient clientUbi; / ******************************** Fungsi Auxiliar *** **************************** // ** Dapatkan panjang badan @arg pemboleh ubah badan jenis char @return dataLen the panjang variable * / int dataLen (variable char) {uint8_t dataLen = 0; untuk (int i = 0; i <= 250; i ++) {if (variable i! = ' 0') {dataLen ++; } else {break; }} dataLen kembali;} / ******************************** Fungsi Utama ********* ********************** / void setup () {Serial.begin (115200); / * Menyambung ke AP * / WiFi.begin (SSID_NAME, SSID_PASS); sementara (WiFi.status ()! = WL_CONNECTED) {kelewatan (500); Serial.print ("."); } pinMode (pwPin1, INPUT); WiFi.setAutoReconnect (benar); Serial.println (F ("disambungkan WiFi")); Serial.println (F ("alamat IP:")); Serial.println (WiFi.localIP ());} void loop () {/ * Bacaan sensor dikembalikan dalam milimeter, jika anda menginginkan * menukar kepada inci hanya membuat variable yang menunjuk ke -> jarak / 25.4 * = pulseIn (pwPin1, HIGH); sendToUbidots (DEVICE_LABEL, VARIABLE_LABEL, jarak); kelewatan (1000);} void 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); / * Ruang untuk menyimpan nilai untuk menghantar * / char str_val 10; / * ---- Mengubah nilai-nilai sensor ke jenis char ----- * / / * 4 adalah lebar mininum, 2 adalah ketepatan; nilai terapung disalin ke str_val * / dtostrf (sensor_value, 4, 2, str_val); / * Membina badan untuk dihantar ke permintaan * / sprintf (body, "{"% s ":% s}", variable_label, str_val); / * Membina 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-Ejen:% 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 (body)); sprintf (data, "% s% s r n r n", data, badan); / * Sambungan awal * / clientUbi.connect (HTTPSERVER, HTTPPORT); / * Sahkan sambungan klien * / jika (clientUbi.connect (HTTPSERVER, HTTPPORT)) {Serial.println (F ("Menyiarkan pemboleh ubah anda:")); Serial.println (data); / * Hantar Permintaan HTTP * / clientUbi.print (data); } / * Walaupun pelanggan boleh didapati membaca sambutan pelayan * / sementara (clientUbi.available ()) {char c = clientUbi.read (); Serial.write (c); } / * Memori percuma * / percuma (data); percuma (badan); / * Hentikan klien * / clientUbi.stop ();}

ProTip: anda boleh menyemak jika peranti anda disambungkan dengan betul dengan membuka monitor bersiri dalam IDE Arduino.

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

Dengan mengklik peranti anda, anda akan menemui pembolehubah yang dipanggil "jarak" di mana bacaan sensor disimpan. Nama ini telah diberikan dalam kod yang baru saja anda pasang dalam Arduino IDE. Jika anda ingin menyesuaikan pembolehubah automatik anda, sila lakukan dengan menyunting kad Peranti atau dengan menghidupkan kod dikemas kini dengan tatal ubah pembolehubah yang betul untuk permohonan anda.

Dengan Feather HUZZAH ESP8266 menyambung dan melaporkan data ke Ubidots, kini sudah tiba masanya untuk membina aplikasi itu menggunakan konfigurasi aplikasi bebas kod yang dirancang Ubidots.

Langkah 5: Pembangunan Aplikasi Ubidots

Konfigurasi Acara Ubidots

Bacaan semasa yang kami hantar ke Ubidots adalah input jarak jauh. Untuk menterjemahkan pembacaan ini ke output yang dikehendaki yang kami mahu -membuat unit-kita harus membuat peristiwa berikut langkah-langkah berikut:

  1. Di dalam peranti semasa "gerakan-kawalan" mencipta pemboleh ubah lalai baru yang dipanggil "kotak", yang akan menerima 1 setiap kali unit baru dikira.
  2. Pergi ke Pengurusan Peranti -> Acara, dan klik ikon tambah biru di penjuru kanan sebelah atas halaman untuk menambah acara baru.
  3. Konfigurasikan acara anda bermula dengan "Jika mencetuskan":

  • Pilih pemboleh ubah: "jarak"
  • Nilai: nilai (lalai)
  • Adalah kurang atau sama dengan jarak maksimum yang dijangkakan} di antara sensor dan kotak yang dilalui oleh * panggilan aplikasi kami untuk 500mm
  • Untuk 0 minit
  • Simpan

4. Setelah pemicu telah dikonfigurasi untuk spesifikasi aplikasi anda, klik ikon oren "tambah" di sudut kanan atas untuk menambahkan tindakan bersyarat.

5. Pilih "Set Variable" sebagai tindakan.

6. Seterusnya, pilih "kotak" pembolehubah lalai yang telah dibuat sebelumnya dan nilai "1".

7. Simpan perubahan. Sekiranya acara itu disiapkan dengan betul, ia akan menghantar "1" setiap kali jarak antara sensor dan unit lebih panjang daripada ambang yang ditunjukkan, yang menunjukkan bahawa tiada objek berhampiran - dan harus mengira unit baru yang baru diluluskan oleh .

Dalam kad Peranti tertentu Feather, anda akan mendapati bahawa "kotak" berubah di mana "1" dihantar bila-bila masa kehadiran unit dirasakan.

Terutamanya berguna untuk tali pinggang penghantar perindustrian dan unit menghitung prototaip ini boleh disesuaikan untuk memenuhi persekitaran yang berbeza atau perkakasan semata-mata dalam pengekodan anda atau pembangunan aplikasi anda.

8. Visualisasikan bilangan unit yang dirasakan (atau kali objek dikesan)
Sekarang, dengan menggunakan pembolehubah "kotak", kita akan membuat pemboleh ubah tetingkap rolling baru untuk jumlah jumlah bacaan yang diterima daripada "kotak" berubah dalam spam yang ditetapkan (minit, jam, hari, minggu, dll). Untuk melaksanakan pembangunan ini, ikuti langkah berikut:

Berikan kelayakan berikut kepada pembolehubah tetingkap rolling baru anda

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

Pilih pemboleh ubah: kotak

Kiraan: jumlah

Setiap: "1 jam" (atau mengikut permintaan permohonan anda)

Sekarang berikan nama kepada pemboleh ubah baru yang menunjukkan jumlah kotak (atau pergerakan) yang dihitung dalam satu jam, sama seperti "kotak / jam" atau "unit / jam.

Langkah 6: Konfigurasi Papan Pemuka

Akhir sekali, buat papan pemuka untuk memaparkan bilangan unit yang dirasakan.

Pergi ke Pengurusan Peranti -> Dashboard dan tambahkan widget baru. Widget ini akan memaparkan jumlah kotak dikira hari ini dipecahkan mengikut jam.

Berikan kelayakan berikut untuk widget baru anda untuk memvisualisasikan kiraan anda.

Bagaimana anda ingin melihat data anda ?: Carta

Pilih jenis widget: carta garisan

Tambah peranti: kawalan gerakan

Tambah pembolehubah: kotak / jam

Selesai. Dan dengan perkembangan papan pemuka akhir ini - permohonan anda selesai dan anda kini mempunyai sistem pengesanan dan pengamatan keupayaan dan berkesan. Inilah pandangan terakhir pada hasil kami.

Langkah 7: