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

Kucing Pavlov: Timer Makan IoT untuk Melatih Kucing Anda

Komponen dan Perlengkapan

Aplikasi dan Layanan Online

Tentang Proyek Ini

Catatan: Tutorial ini mungkin sudah ketinggalan zaman, silakan pergi di sini untuk versi yang lebih terkini.

Jika Anda pernah mencoba melatih kucing, Anda tahu betapa sulitnya. Kucing adalah tuan rumah mereka sendiri, tetapi sekarang Anda memiliki kesempatan untuk membiarkan kucing melakukan permintaan Anda menggunakan perangkat IoT ini.

Selamat Datang di Percobaan Kucing Pavlov!

Dalam proyek ini, Anda akan mempelajari cara mengajari kucing Anda kapan saatnya (dan bukan saatnya) makan malam hanya menggunakan komponen dalam MKR IoT Bundle dan beberapa kardus.

Dan kita semua tahu bahwa kucing sudah suka kotak kardus!

Setiap kali kucing mendengar melodi tertentu, kucing menerima makanan. Sensor cahaya mendeteksi kehadiran kucing. Melodi lain tidak melakukan apa-apa. Lihat bagaimana ini akan bekerja?

Anda akan dapat memantau kemajuan kucing Anda dari waktu ke waktu, dan mengatur laju pengeluaran makanan dari ponsel Anda. Setelah Anda mencapai statistik yang memuaskan, saatnya untuk mengubah fungsi sensor menjadi wearable. Kucing Anda dari saat itu harus mengikuti Anda jika Anda membuat suara bip itu.

Penafian: Tidak ada kucing yang terluka dalam pengembangan percobaan ini. Juga, tidak ada jaminan bahwa kucing akan makan makanan, tapi Anda paham kan, kan?

Singkatnya

Anda akan dapat membuat pemisah makanan Anda sendiri dengan mengikuti instruksi langkah demi langkah yang sederhana ini. Pemisahnya pada dasarnya hanya beberapa kardus dan servo motor dengan sedikit ajaib Arduino.

Menggunakan layanan pesan bernama Telegram, Anda dapat mengatur jumlah makanan yang akan dikeluarkan dan memicu melodi yang diputar dengan buzzer.

Sensor cahaya digunakan untuk mendeteksi apakah kucing bereaksi terhadap melodi dan sampai ke makanan.

Pro Tip: Anda dapat meng-host halaman web pada MKR1000 dan menampilkan data yang dikumpulkan dalam tabel yang praktis.

Komponen

Kucing Pavlov: Timer Makan IoT untuk Melatih Kucing Anda

Tujuan Pembelajaran

Dalam percobaan ini Anda akan mempelajari cara:

Pro Tips berguna tetapi tidak secara ketat langkah-langkah yang diperlukan yang menambahkan lapisan kompleksitas pada proyek.

Ingin Tahu Lebih Banyak?

Tutorial ini adalah bagian dari serangkaian percobaan yang mempersiapkan Anda dengan MKR1000 dan IoT. Semua percobaan dapat dibuat menggunakan komponen yang terkandung dalam MKR IoT Bundle.

Telegram dan Arduino

Telegram adalah aplikasi pesan populer untuk seluler dan desktop. Selain membiarkan kita obrolan dengan teman-teman itu juga memungkinkan kita untuk membuat chat-bot yang praktis dan kuat!

Library TelegramBot untuk Arduino memberikan cara mudah untuk mengimplementasikan logika di balik chat-bot.

Untuk mempelajari cara membuat Bot dan mengelola fungsionalitas dasar lihat tutorial I Love You Pillow.

Buat Keyboard Kustom Anda

Telegram memungkinkan kita untuk membuat keyboard kustom untuk balasan cepat. Itu berarti ketika Anda berbicara dengan bot sekumpulan tombol tertentu akan ditampilkan sebagai ganti keyboard default. Anda dapat dengan mudah menyesuaikan tombol tersebut dan meningkatkan pengalaman pengguna perangkat Anda.

Keyboard kustom kami terlihat seperti ini:

Kucing Pavlov: Timer Makan IoT untuk Melatih Kucing Anda

Kami akan menggunakan baris pertama tombol untuk memutar melodi dan mengeluarkan makanan, sementara baris kedua tombol akan digunakan untuk mengatur kecepatan servo motor dan oleh karena itu jumlah makanan yang akan dikeluarkan.

Untuk membuat keyboard kustom kita perlu mendeklarasikannya terlebih dahulu:

TelegramKeyboard keyboard_one; 

Lalu tentukan baris:

 const char* row_one[] = {MusicAndFood, MusicNoFood}; const char* row_two[] = {OnePortion, TwoPortion, ThreePortion}; 

Dan akhirnya tetapkan baris ke keyboard:

keyboard_one.addRow(row_one, 2); // assign a row to one or more keyboards keyboard_one.addRow(row_two, 3); // second argument is the length of the row 

Ingatlah bahwa emoji perlu dikirim menggunakan UNICODE. Misalnya untuk mengirim emoji hati kita akan menggunakan: \U00002764

Anda dapat melihat daftar lengkap kode unicode emoji di sini. Itu berarti untuk mendefinisikan tombol-tombol kita kita akan menggunakan ini:

 const char* MusicAndFood = "\U0001F3B6 + \U0001F36A"; // Note + Cookie const char* MusicNoFood = "\U0001F3B6 NO \U0001F36A"; // Note NO Cookie const char* OnePortion = "\U0001F408"; // CAT const char* TwoPortion = "\U0001F408 \U0001F408"; // 2 CATS const char* ThreePortion = "\U0001F408 \U0001F408 \U0001F408"; // 3 CATS 

Berikut adalah skets lengkap:

#include <WiFi101.h> #include <SPI.h> #include <TelegramBot.h> const char* ssid = SECRET_SSID; const char* password = SECRET_PSWD; const char BotToken[] = SECRET_BOT_TOKEN; WiFiSSLClient client; TelegramBot bot (BotToken, client); TelegramKeyboard keyboard_one; String OldChatId = ""; void setup() { Serial.begin(115200); delay(3000); Serial.print("Connecting Wifi: "); Serial.println(ssid); while (WiFi.begin(ssid, password) != WL_CONNECTED) { Serial.print("."); delay(500); } Serial.println(""); Serial.println("WiFi connected"); const char* MusicAndFood = "\U0001F3B6 + \U0001F36A"; const char* MusicNoFood = "\U0001F3B6 NO \U0001F36A"; const char* OnePortion = "\U0001F408"; const char* TwoPortion = "\U0001F408 \U0001F408"; const char* ThreePortion = "\U0001F408 \U0001F408 \U0001F408"; const char* row_one[] = {MusicAndFood, MusicNoFood}; const char* row_two[] = {OnePortion, TwoPortion, ThreePortion}; keyboard_one.addRow(row_one, 2); keyboard_one.addRow(row_two, 3); bot.begin(); } void loop() { message m = bot.getUpdates(); if ( m.chat_id != 0 ) { OldChatId = m.chat_id; Serial.println(m.text); bot.sendMessage(m.chat_id, "Hello !", keyboard_one); } delay(1000); } 

Sayangnya cara bot mengirim emoji tidak sama dengan cara menerima mereka. Menggunakan contoh EchoBot adalah cara mudah untuk melihat bagaimana bot menerima emoji.

Misalnya emoji yang akan kita gunakan diterima seperti ini:

ud83cudfb6 // Melody ud83cudf6a // Cookie ud83dudc08 // Cat 

Deteksi Kehadiran Kucing!

Untuk mendeteksi kehadiran kucing kita akan menggunakan phototransistor, yang dapat mengukur intensitas cahaya dan oleh karena itu apakah seseorang telah melewati dekatnya.

Kucing Pavlov: Timer Makan IoT untuk Melatih Kucing Anda

Perhatikan bahwa kami menggunakan resistor 220 ohm.

Untuk membaca nilai dari sensor kita hanya membutuhkan analogRead(A6).

Karena kita tertarik untuk mendeteksi kehadiran kucing hanya setelah melodi, dan hanya untuk waktu tertentu kita dapat menggunakan logika berikut:

unsigned long timer; bool startDetecting = true; int threshold=200; // nilai arbitrari void setup(){ timer=millis() Serial.begin(9600); } void loop(){ if (startDetecting) { int value = analogRead(A6); if (value < threshold) { Serial.println("cat detected!"); startDetecting = false; } else if (millis() - timer > 120000) { Serial.println("no cat detected in the past two minutes"); startDetecting = false; } } } 

Perhatikan bahwa kami menggunakan fungsi millis() untuk mengatur timer. Millis() memberi kita waktu dalam milidetik sejak papan nyala. Kita dapat menggunakannya untuk mengatur timer dan memicu peristiwa setelah waktu tertentu.

Kami juga menggunakan ambang untuk menentukan apakah kucing terdeteksi. Ambang tersebut arbitrari, Anda dapat mengaturnya sesuai kondisi cahaya Anda.

Putar Lagu

Untuk memutar lagu kita akan menggunakan buzzer dan fungsi tone() .

Kucing Pavlov: Timer Makan IoT untuk Melatih Kucing Anda

Kita akan menggunakan versi yang sedikit dimodifikasi dari contoh standar toneMelody. Anda dapat menemukannya dalam menu dropdown:

examples > digital > toneMelody. 

Tambahkan Servo Motor

Servo digunakan untuk membuka kotak dan mengirimkan makanan.

Perhatikan bahwa kita menggunakan variabel int PortionAmount = 1; untuk mengatur jumlah waktu servo harus tetap diputar 90 derajat. Kita akan dapat mengubah nilainya melalui Telegram.

Pasang servo ke pin 7 dan unggah skets ini untuk melihatnya bekerja.

#include <Servo.h> Servo myservo; int pos = 0; int PortionAmount = 1; void setup() { myservo.attach(7); } void loop() { moveServo(); delay(2000); } void moveServo() { Serial.println("moving servo"); for (pos = 0; pos <= 90; pos += 1) { myservo.write(pos); delay(15); } delay(PortionAmount * 300); for (pos = 90; pos >= 0; pos -= 1) { myservo.write(pos); delay(15); } } 

#ProTip: Tambahkan Web Server

Salah satu fungsionalitas paling kuat dari MKR1000 adalah Access Point Mode.

Itu memungkinkan kita untuk meng-host halaman web pada MKR1000 yang dapat kita akses dengan menggunakan alamat IP papan dan terhubung ke jaringan yang sama.

Kita akan menggunakan alat ini untuk mencetak data yang dikumpulkan oleh pemisah makanan.

Kucing Pavlov: Timer Makan IoT untuk Melatih Kucing Anda

Langkah ini memerlukan pengetahuan dasar HTML dan CSS (atau banyak kepercayaan pada skets contoh. Anda dapat memeriksa contoh web server dasar di:

> example > WiFi101 > AP_SimpleWebServer 

Kita akan memicu mode access point dengan mengirimkan kata tertentu ke Bot Telegram kami, yang akan membalas dengan tautan untuk mencapai halaman web. Lalu klien telegram akan terputus dan web-server dimulai.

else if(m.text == "Server"){ IPAddress ip = WiFi.localIP(); web_server_mode=true; String message = "To see the webpage go to https://"+IpToString(ip); bot.sendMessage(m.chat_id, message , keyboard_one); telegram_client.stop(); delay(1000); server.begin(); // start the web server on port 80 } 

Halaman web memiliki sebuah tombol yang akan mematikan mode web server dan kembali sebagai klien telegram:

if (currentLine.endsWith("GET /BACKBUTTON")) { // if button pressed web_server_mode=false; client.stop(); delay(1000); bot.begin(); bot.sendMessage(OldChatId, "Back online !", keyboard_one); } 

Setiap kali deteksi kucing selesai sel sel baru dari tabel ditambahkan dengan data yang dikumpulkan: apakah makanan dikirimkan, apakah kucing muncul dalam dua menit dan berapa waktu yang dibutuhkan untuk mencapai pemisah.

AddTableCell(food/noFood, Yes/No, TimeValue); 

Lalu String yang berisi semua sel tabel diperbarui dan diintegrasikan dalam sisa html utama.

 table_cells+=cell; // add new cell html = html_1 + table_cells + html_2; // add cells to main html 

Periksa contoh Pro akhir untuk melihat cara mengintegrasikan semua fungsionalitas baru ini!

Tip: jika Anda ingin data Anda bertahan setelah reset papan perhatikan library Flash Storage atau periksa proyek Nerd!

Kode

Skets Lengkap
#ProTips skets lengkap

Bagian dan Kotak Khusus

Kardus 2 mmpavlovcase_ShVm1OJRIF.dxf

Skematik

Kucing Pavlov: Timer Makan IoT untuk Melatih Kucing Anda

Proses manufaktur

  1. Ilmu dan Industri Sayuran Beku: Dari Panen hingga Meja
  2. TV Dinners: Sejarah, Produksi, dan Inovasi Masa Depan
  3. CT Scanner: Evolusi, Desain, dan Masa Depan Citra Medis 3-D
  4. Sejarah dan Dampak Kotoran Kucing: Dari Tanah Liat hingga Industri
  5. Panduan Lengkap Makanan Beku Kering: Pelestarian, Produksi, dan Tren Masa Depan
  6. Produksi Makanan Hewan Peliharaan: Dari Bahan hingga Regulasi – Panduan Lengkap
  7. Shop.Cat.Com: Sumber Daya One-Stop untuk Peralatan, Lampiran dan Alat
  8. Optimalkan Mesin Cat®: Panduan Akhir My.Cat.com
  9. Mesin Vending Makanan Serbaguna: Dari Snack hingga Sandwich Segar
  10. Mempercepat Produksi Pangan Secara Aman dengan Otomatisasi