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

Papan Skor Basket Cerdas Canggih dengan Bluetooth, Sensor & Pembaruan Real-Time

Komponen dan perlengkapan

Berikut daftar komponen untuk versi 2.0.0:

Aplikasi dan layanan online

Tentang proyek ini

Saya rutin melakukan latihan basket dan selalu mencatat statistik bagian (jumlah tembakan, skor, gagal, dll). Mencatat angka-angka ini cukup membosankan dan sulit dilakukan. Bola cerdas dapat digunakan untuk ini, tetapi mereka memiliki beberapa kelemahan:

Dalam proyek prototipe papan skor basket cerdas saya sebelumnya, saya menggunakan perangkat Avnet SmartEdge untuk menguji metode untuk melacak latihan basket saya. Saya menggunakan sensor percepatan untuk mendeteksi tembakan dan sensor dekat untuk mendeteksi skor. Sekarang, ide proyek ini adalah untuk mengimplementasikan solusi definitif untuk tugas papan skor basket.

Versi

Pada awal proyek, saya menggunakan komponen perangkat keras yang tersedia di rumah dan mengembangkan perangkat lunak (Arduino dan Android) yang dibutuhkan. Versi pertama (1.1.0) terbukti bekerja cukup baik, jadi saya memutuskan untuk melakukan beberapa perubahan untuk menggunakan komponen yang lebih murah dan untuk mengimplementasikan beberapa perbaikan perangkat lunak juga. Versi kedua (2.0.0) bahkan lebih baik, selamat menikmati.

Langkah 1: Arduino

Perangkat keras

Anda dapat melihat daftar komponen perangkat keras untuk versi 2.0.0 di bagian Things.

Ini adalah perubahan utama yang dilakukan dari versi 1.1.0 ke versi 2.0.0:

Beberapa pertimbangan tentang komponen lain yang digunakan dalam proyek ini:

Skematik Arduino untuk kedua versi tersedia di bagian Skematik.

Perangkat lunak

Saya menggunakan Arduino IDE untuk mengembangkan kode Arduino, diprogram dengan strategi berikut:

Ini adalah perubahan utama yang dilakukan dari versi 1.1.0 ke versi 2.0.0:

Kode Arduino untuk kedua versi tersedia di bagian Kode.

Langkah 2: Android

Saya menggunakan MIT App Inventor untuk mengembangkan kode Android, diprogram dengan strategi berikut:

Ini adalah perubahan utama yang dilakukan dari versi 1.1.0 ke versi 2.0.0:

Papan Skor Basket Cerdas Canggih dengan Bluetooth, Sensor & Pembaruan Real-Time
Papan Skor Basket Cerdas Canggih dengan Bluetooth, Sensor & Pembaruan Real-Time

Kode Android untuk kedua versi tersedia di bagian Kode.

Langkah 3: Pengaturan papan basket

Ini adalah papan basket asli yang saya gunakan rutin untuk latihan basket.

Papan Skor Basket Cerdas Canggih dengan Bluetooth, Sensor & Pembaruan Real-Time

Pertama saya membuka tutup plastik di bawah keranjang dan membuat lubang untuk sensor dekat.

Papan Skor Basket Cerdas Canggih dengan Bluetooth, Sensor & Pembaruan Real-Time

Kemudian saya membuat lubang kecil untuk memasang sensor getaran.

Papan Skor Basket Cerdas Canggih dengan Bluetooth, Sensor & Pembaruan Real-Time

Saya tidak dapat memasang sensor langsung ke tutup plastik karena kelengkungannya, jadi saya membuat penopang untuk sensor menggunakan MDF.

Papan Skor Basket Cerdas Canggih dengan Bluetooth, Sensor & Pembaruan Real-Time

Saya memasang sensor dekat dan getaran menggunakan beberapa baut dan poros.

Papan Skor Basket Cerdas Canggih dengan Bluetooth, Sensor & Pembaruan Real-Time

Kemudian saya menghubungkan komponen lain.

Papan Skor Basket Cerdas Canggih dengan Bluetooth, Sensor & Pembaruan Real-Time
Papan Skor Basket Cerdas Canggih dengan Bluetooth, Sensor & Pembaruan Real-Time

Saatnya untuk uji asap.

Papan Skor Basket Cerdas Canggih dengan Bluetooth, Sensor & Pembaruan Real-Time

Akhirnya, saya memasang semuanya pada papan basket.

Papan Skor Basket Cerdas Canggih dengan Bluetooth, Sensor & Pembaruan Real-Time

Langkah 4: Uji latihan basket

Sekarang saatnya untuk menguji semuanya.

Dan finale agung... ini showtime!

Langkah 5: Pertimbangan akhir

Selamat mencoba...

Kode

Kode Arduino (1.1.0)

//----------------------------------------------------------------------------// // Filename : Scoreboard.ino // // Description : Smart Basketball Scoreboard // // Version : 1.1.0 // // Author : Marcelo Avila de Oliveira <marceloavilaoliveira@gmail.com> // //----------------------------------------------------------------------------// #define DEBUG const int prox_pin = 2; const int vibr_pin = 3; const int led_r_pin = 4; const int led_g_pin = 5; const int led_b_pin = 6; const unsigned long wait_interval = 3000; void setup() { pinMode(prox_pin, INPUT); pinMode(vibr_pin, INPUT); pinMode(led_r_pin, OUTPUT); pinMode(led_g_pin, OUTPUT); pinMode(led_b_pin, OUTPUT); set_led(5, 100); Serial.begin(9600); setup_bluetooth(); set_led(4, 100); #ifdef DEBUG Serial.println("Board is alive"); Serial.println(); #endif } void setup_bluetooth() { Serial1.begin(38400); Serial1.print("\r\n+STWMOD=0\r\n"); Serial1.print("\r\n+STNA=Arduino\r\n"); Serial1.print("\r\n+STOAUT=1\r\n"); Serial1.print("\r\n+STAUTO=0\r\n"); delay(2000); Serial1.print("\r\n+INQ=1\r\n"); delay(2000); while (Serial1.available()) { delay(50); Serial1.read(); } } int percent_to_bright(int percent) { return 256 - pow(2, percent / 100 * log10(2) / log10(255)); } void set_led(int color, int bright) { if (color < 0 || color > 6 || bright < 0 || bright > 100) { return; } int led_r_bright = 255; int led_g_bright = 255; int led_b_bright = 255; int bright_aux = percent_to_bright(bright); switch (color) { case 0: led_g_bright = bright_aux; break; case 1: led_r_bright = bright_aux; led_g_bright = bright_aux; break; case 2: led_r_bright = bright_aux; break; case 3: led_g_bright = bright_aux; led_b_bright = bright_aux; break; case 4: led_b_bright = bright_aux; break; case 5: led_r_bright = bright_aux; led_b_bright = bright_aux; break; case 6: led_r_bright = bright_aux; led_g_bright = bright_aux; led_b_bright = bright_aux; break; } analogWrite(led_r_pin, led_r_bright); analogWrite(led_g_pin, led_g_bright); analogWrite(led_b_pin, led_b_bright); } void check_prox() { if (!prox) { if(digitalRead(prox_pin) == LOW) { prox = true; if (!vibr) { wait = true; wait_time = millis() + wait_interval; } set_shot(1); } } } void check_vibr() { if (!prox && !vibr) { if(digitalRead(vibr_pin) == HIGH) { vibr = true; wait = true; wait_time = millis() + wait_interval; set_led(1, 100); } } } void check_wait() { if (wait && millis() > wait_time) { if (!prox) { set_shot(0); } reset(); } } void set_shot(int mode) { if (mode == 0) { set_led(2, 100); } else { set_led(0, 100); } Serial1.print(mode); delay(1000); } void reset() { vibr = false; prox = false; wait = false; set_led(4, 100); } void loop() { check_prox(); check_vibr(); check_wait(); } 

Kode Android (1.1.0)

Android MIT App Inventor (https://ai2.appinventor.mit.edu/)
Tidak ada pratinjau (hanya unduhan).

Kode Arduino (2.0.0)

#include "DHT.h" #include "SoftwareSerial.h" #define DEBUG #define DHTPIN 7 #define DHTTYPE DHT22 DHT dht(DHTPIN, DHTTYPE); SoftwareSerial Bluetooth(10, 11); const int prox_pin = 2; const int vibr_pin = 3; const int led_r_pin = 4; const int led_g_pin = 5; const int led_b_pin = 6; const unsigned long wait_interval = 2000; const unsigned long dht_interval = 10000; void setup() { pinMode(prox_pin, INPUT); pinMode(vibr_pin, INPUT); pinMode(led_r_pin, OUTPUT); pinMode(led_g_pin, OUTPUT); pinMode(led_b_pin, OUTPUT); set_led(5, 100); Serial.begin(9600); setup_bluetooth(); dht.begin(); set_led(4, 100); #ifdef DEBUG Serial.println("Board is alive"); Serial.println(); #endif } void setup_bluetooth() { Bluetooth.begin(9600); while (Bluetooth.available()) { delay(50); Bluetooth.read(); } } int percent_to_bright(int percent) { return 256 - pow(2, percent / 100 * log10(2) / log10(255)); } void set_led(int color, int bright) { if (color < 0 || color > 6 || bright < 0 || bright > 100) { return; } int led_r_bright = 255; int led_g_bright = 255; int led_b_bright = 255; int bright_aux = percent_to_bright(bright); switch (color) { case 0: led_g_bright = bright_aux; break; case 1: led_r_bright = bright_aux; led_g_bright = bright_aux; break; case 2: led_r_bright = bright_aux; break; case 3: led_g_bright = bright_aux; led_b_bright = bright_aux; break; case 4: led_b_bright = bright_aux; break; case 5: led_r_bright = bright_aux; led_b_bright = bright_aux; break; case 6: led_r_bright = bright_aux; led_g_bright = bright_aux; led_b_bright = bright_aux; break; } analogWrite(led_r_pin, led_r_bright); analogWrite(led_g_pin, led_g_bright); analogWrite(led_b_pin, led_b_bright); } void check_prox() { if (!prox) { if(digitalRead(prox_pin) == LOW) { set_led(0, 100); send_data(2); prox = true; if (!vibr) { wait = true; wait_time = millis() + wait_interval; } } } } void check_vibr() { if (!prox && !vibr) { if(digitalRead(vibr_pin) == HIGH) { set_led(1, 100); vibr = true; wait = true; wait_time = millis() + wait_interval; } } } void check_wait() { if (wait && millis() > wait_time) { if (!prox) { set_led(2, 100); send_data(1); } reset(); } } void check_dht() { if (!prox && !vibr) { if (millis() > dht_time) { float humi = dht.readHumidity(); float temp = dht.readTemperature(); float heat = dht.computeHeatIndex(temp, humi, false); send_data(0); dht_time = millis() + dht_interval; } } } void send_data(int shot) { Bluetooth.print(humi); Bluetooth.print(temp); Bluetooth.print(heat); Bluetooth.print(shot); } void reset() { vibr = false; prox = false; wait = false; delay(1000); set_led(4, 100); } void loop() { check_prox(); check_vibr(); check_wait(); check_dht(); } 

Kode Android (2.0.0)

Android MIT App Inventor (https://ai2.appinventor.mit.edu/)
Tidak ada pratinjau (hanya unduhan).

Skematik

Papan Skor Basket Cerdas Canggih dengan Bluetooth, Sensor & Pembaruan Real-TimePapan Skor Basket Cerdas Canggih dengan Bluetooth, Sensor & Pembaruan Real-Time

Proses manufaktur

  1. Bola Basket: Dari Penemuan Naismith Tahun 1891 hingga Teknik Produksi Modern
  2. Membangun Sistem Pertanian Cerdas Open-Source: Memberdayakan Petani dengan IoT Terjangkau dan Interoperabel
  3. ECM3532: Papan Sensor AI Ultra-Rendah Daya Terpadu Pertama Eta Compute
  4. Membangun Pemantau Suhu Rumah Raspberry Pi dengan MCP9808, InfluxDB & Grafana
  5. Tong Sampah Cerdas: Solusi IoT Selular untuk Manajemen Sampah Terotomatisasi
  6. Bartender Cerdas: Bangun Stasiun Koktail Berbasis Raspberry Pi Sendiri
  7. Sensor Emosi & EEG: Hardware Biaya Rendah untuk Deteksi Emosi Real-Time
  8. Sensor Regangan Ultra-Sensitif dan Tahan Lama Revolusioner untuk Tekstil Cerdas
  9. Sensor Ultra-Tipis Revolusioner Meningkatkan Fungsi Lensa Kontak Cerdas
  10. Merevolusi Produksi Sensor: Sensata Menggunakan Mekatronika Cerdas