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

Membuat Kotak Teka-Teki IoT Aman dengan Arduino MKR Bundle – Panduan Langkah demi Langkah

Komponen dan Perlengkapan

KomponenKeteranganJumlah
Membuat Kotak Teka-Teki IoT Aman dengan Arduino MKR Bundle – Panduan Langkah demi Langkah
Arduino MKR IoT Bundle
×1

Aplikasi dan Layanan Online

AplikasiKeterangan
Membuat Kotak Teka-Teki IoT Aman dengan Arduino MKR Bundle – Panduan Langkah demi Langkah
Blynk

Tentang Proyek Ini

Catatan: Tutorial ini mungkin sudah usang, silakan pergi di sini untuk versi yang lebih baru.

Menjaga barang berharga Anda dari mata yang ingin tahu kadang-kadang sulit, kecuali Anda menaruhnya di dalam lemari besar atau semacamnya... tapi siapa yang punya ruang untuk itu?

Alih-alih, buat kotak teka-teki Anda sendiri menggunakan komponen dari MKR IoT Bundle dan beberapa kardus! Kami tidak dapat menjamin keamanan barang Anda, tetapi setidaknya itu akan menjadi cara menghindari yang menyenangkan bagi pencuri yang berminat.

Tentu saja, kami menyarankan Anda untuk menyimpan permen di dalamnya... bukan barang berharga asli.

Dalam Kesesingkatnya

Untuk membuka kotak, yang ditutup dengan motor servo, Anda harus memutar potensiometer sampai mendapatkan kombinasi yang benar. Kombinasi dapat diatur melalui aplikasi online Blynk. Seorang LED akan membantu Anda menebak, memberikan umpan balik warna: semakin dekat Anda semakin hangat warnanya.

Ketika kombinasi yang benar ditebak buzzer akan mulai memutar lagu sementara servo akan membuka kotak.

Untuk membuat kotak teka-teki kami akan membutuhkan komponen berikut:

Membuat Kotak Teka-Teki IoT Aman dengan Arduino MKR Bundle – Panduan Langkah demi Langkah

Tujuan Pembelajaran

Ingin Tahu Lebih Banyak?

Tutorial ini adalah bagian dari serangkaian eksperimen yang mempelajari Anda dengan MKR1000 dan IoT. Semua eksperimen dapat dibangun menggunakan komponen yang terkandung dalam MKR IoT Bundle.

Mengenalkan Blynk

Blynk adalah aplikasi seluler populer untuk Internet of Things, ini memungkinkan kami untuk dengan mudah mengontrol Arduino yang terhubung internet dari mana saja, kapan saja.

Ini didirikan di Kickstarter dan dengan cepat menjadi salah satu aplikasi yang paling banyak digunakan di bidang ini, berkat dokumentasi yang luar biasa dan kesederhanaannya.

Memulai dengan Blynk

Membuat proyek baru sangat mudah, ikuti langkah-langkah sederhana ini atau lihat getting started resmi dari Blynk.

Membuat Kotak Teka-Teki IoT Aman dengan Arduino MKR Bundle – Panduan Langkah demi Langkah
Membuat Kotak Teka-Teki IoT Aman dengan Arduino MKR Bundle – Panduan Langkah demi Langkah
Membuat Kotak Teka-Teki IoT Aman dengan Arduino MKR Bundle – Panduan Langkah demi Langkah
Membuat Kotak Teka-Teki IoT Aman dengan Arduino MKR Bundle – Panduan Langkah demi Langkah
Membuat Kotak Teka-Teki IoT Aman dengan Arduino MKR Bundle – Panduan Langkah demi Langkah
Membuat Kotak Teka-Teki IoT Aman dengan Arduino MKR Bundle – Panduan Langkah demi Langkah
Membuat Kotak Teka-Teki IoT Aman dengan Arduino MKR Bundle – Panduan Langkah demi Langkah
Membuat Kotak Teka-Teki IoT Aman dengan Arduino MKR Bundle – Panduan Langkah demi Langkah
Membuat Kotak Teka-Teki IoT Aman dengan Arduino MKR Bundle – Panduan Langkah demi Langkah

Setelah Anda berhasil membuat proyek baru Anda juga akan menerima melalui email Auth Token. Ini adalah pengidentifikasi unik yang diperlukan untuk menghubungkan hardware Anda ke ponsel Anda. Setiap proyek baru yang Anda buat akan memiliki Auth Token sendiri.

Untuk menghubungkan Arduino ke aplikasi kita perlu menginstal library Blynk. Jika Anda menggunakan Arduino Web Editor library akan secara otomatis diunduh saat Anda menyertakannya dalam sketch, jika tidak Anda dapat mengunduhnya dari library manager.

Sekarang kita siap. Unggah sketch ini dan bermain dengan slider untuk melihat hasilnya:

#include <WiFi101.h> #include <BlynkSimpleWiFiShield101.h> const char* ssid = SECRET_SSID; // your network SSID (name) const char* password = SECRET_PSWD; // your network password char auth[] = SECRET_TOKEN; // your Blynk API token // Variables to store the combination value // Set the intitial combination to ( 1 1 1 ) int SliderValueOne = 1; int SliderValueTwo = 1; int SliderValueThree = 1; // Blynk functions to retrive values BLYNK_WRITE(V1) { SliderValueOne = param.asInt(); // assigning incoming value from pin V1 to a variable } BLYNK_WRITE(V2) { SliderValueTwo = param.asInt(); // assigning incoming value from pin V1 to a variable } BLYNK_WRITE(V3) { SliderValueThree = param.asInt(); // assigning incoming value from pin V1 to a variable } void setup() { Serial.begin(9600); Blynk.begin(auth, ssid, password); // start Blynk functionalities and connect to WiFi } void loop() { // Variambles to temporarily store the combination int Temp_Slider_One_value = SliderValueOne; int Temp_Slider_Two_value = SliderValueTwo; int Temp_Slider_Three_value = SliderValueThree; Blynk.run(); // poll new combination values from the online app // check if combination values are changed and print them on the console if(Temp_Slider_One_value != SliderValueOne || Temp_Slider_Two_value != SliderValueTwo || Temp_Slider_Three_value != SliderValueThree){ Serial.print("New combination: "); Serial.print(SliderValueOne); Serial.print(" "); Serial.print(SliderValueTwo); Serial.print(" "); Serial.println(SliderValueThree); } } 
Membuat Kotak Teka-Teki IoT Aman dengan Arduino MKR Bundle – Panduan Langkah demi Langkah

Menggunakan Layar LCD

Waktu untuk menghubungkan layar!

Layar LCD mudah digunakan tetapi membutuhkan banyak kabel, jadi siapkanlah untuk membuktikan kesabaran Anda.

Membuat Kotak Teka-Teki IoT Aman dengan Arduino MKR Bundle – Panduan Langkah demi Langkah

Perhatikan bahwa kami menggunakan pasokan daya 5V dan resistor 220 Ohm.

Kecerahan dapat diatur mengubah nilai output dari pin Analog 3 dari 0 hingga 255 dengan 0 adalah nilai maksimum.

analogWrite(A3, 0); 

Sekarang kita dapat mengunggah sketch contoh dan melihat apakah semuanya berjalan dengan baik.

// include the library code: #include <LiquidCrystal.h> // initialize the library by associating any needed LCD interface pin // with the arduino pin number it is connected to const int rs = 12, en = 11, d4 = 2, d5 = 3, d6 = 4, d7 = 5; LiquidCrystal lcd(rs, en, d4, d5, d6, d7); void setup() { analogWrite(A3, 0); // Set the brightness to its maximum value // set up the LCD's number of columns and rows: lcd.begin(16, 2); // Print a message to the LCD. lcd.print("hello, world!"); } void loop() { // set the cursor to column 0, line 1 // (note: line 1 is the second row, since counting begins with 0): lcd.setCursor(0, 1); // print the number of seconds since reset: lcd.print(millis() / 1000); } 

Menambahkan Potensiometer

Untuk membaca nilai potensiometer kita hanya membutuhkan analogRead() pada pin yang benar. Kami menghubungkannya ke pin Analog 0 , 1 , 2.

Membuat Kotak Teka-Teki IoT Aman dengan Arduino MKR Bundle – Panduan Langkah demi Langkah

Perhatikan bahwa nilai potensiometer berkisar dari 0 hingga 1023 sehingga kombinasi tidak mungkin ditebak. Untuk memetakan nilai tersebut dari 0 hingga 9 kita akan menggunakan fungsi map(),

 int PotOne = map(analogRead(A0), 0, 1023, 0, 9); 

Anda dapat menggunakan kode contoh ini untuk mencetak nilai potensiometer pada layar LCD.

#include <LiquidCrystal.h> // LCD screen pins const int rs = 12, en = 11, d4 = 2, d5 = 3, d6 = 4, d7 = 5; LiquidCrystal lcd(rs, en, d4, d5, d6, d7); void setup() { analogWrite(A3, 0); // set the brightness of the LCD screen to the maximum value Serial.begin(9600); lcd.begin(16, 2); // begin LCD screen with 16 columns and 2 rows } void loop() { int PotOne = map(analogRead(A0), 0, 1023, 0, 9); int PotTwo = map(analogRead(A1), 0, 1023, 0, 9); int PotThree = map(analogRead(A2), 0, 1023, 0, 9); lcd.setCursor(0, 0); lcd.print(PotOne); lcd.setCursor(2, 0); lcd.print(PotTwo); lcd.setCursor(4, 0); lcd.print(PotThree); } 

Menambahkan LED RGB

Kami akan menggunakan LED RGB sebagai umpan balik untuk membantu orang menebak kombinasi, semakin dekat mereka ke nilai yang benar semakin hangat warna LED, berkisar dari biru, aqua, kuning dan merah.

Membuat Kotak Teka-Teki IoT Aman dengan Arduino MKR Bundle – Panduan Langkah demi Langkah
Membuat Kotak Teka-Teki IoT Aman dengan Arduino MKR Bundle – Panduan Langkah demi Langkah

Anda dapat menggunakan sketch contoh ini untuk melihat LED RGB dalam aksi!

// RGB LED pins int redPin = 6; int greenPin = 8; int bluePin = 7; void setup() { pinMode(redPin, OUTPUT); pinMode(greenPin, OUTPUT); pinMode(bluePin, OUTPUT); Serial.begin(9600); } void loop() { setColor(0, 0, 255); // blue delay(1000); setColor(0, 255, 255); // aqua delay(1000); setColor(255, 255, 0); // yellow delay(1000); setColor(255, 0, 0); // Red delay(1000); } // Send RGB values to the LED pins void setColor(int red, int green, int blue){ analogWrite(redPin, red); analogWrite(greenPin, green); analogWrite(bluePin, blue); } 

Menghubungkannya ke Blynk

Sekarang kita siap untuk menyatukan semuanya: menghubungkan papan ke Blynk, potensiometer ke layar LCD dan membuat LED berkedip hijau ketika kombinasi benar.

void giveColorFeedback(int PotOne, int PotTwo, int PotThree){...} 
int SliderValueOne = 1; int SliderValueTwo = 1; int SliderValueThree = 1; 

Perhatikan bahwa nilai awal diatur ke 1, itu akan berubah hanya jika Anda mengubah nilai slider di aplikasi. Jika Anda mereset papan kombinasi akan kembali ke nilai default.

Unggah sketch contoh ini untuk melihatnya dalam aksi:

#include <LiquidCrystal.h> #include <SPI.h> #include <WiFi101.h> #include <BlynkSimpleWiFiShield101.h> // RGB LED pins int redPin = 6; int greenPin = 8; int bluePin = 7; const char* ssid = SECRET_SSID; // your network SSID (name) const char* password = SECRET_PSWD; // your network password char auth[] = SECRET_TOKEN; // your Blynk API token // LCD screen pins const int rs = 12, en = 11, d4 = 2, d5 = 3, d6 = 4, d7 = 5; bool start = true; // Variables to store the combination value // Set the intitial combination to ( 1 1 1 ) int SliderValueOne = 1; int SliderValueTwo = 1; int SliderValueThree = 1; // Blynk functions to retrive values BLYNK_WRITE(V1) { SliderValueOne = param.asInt(); // assigning incoming value from pin V1 to a variable } BLYNK_WRITE(V2) { SliderValueTwo = param.asInt(); // assigning incoming value from pin V1 to a variable } BLYNK_WRITE(V3) { SliderValueThree = param.asInt(); // assigning incoming value from pin V1 to a variable } LiquidCrystal lcd(rs, en, d4, d5, d6, d7); void setup() { pinMode(redPin, OUTPUT); pinMode(greenPin, OUTPUT); pinMode(bluePin, OUTPUT); analogWrite(A3, 0); // set the brightness of the LCD screen to the maximum value Serial.begin(9600); lcd.begin(16, 2); // begin LCD screen with 16 columns and 2 rows Blynk.begin(auth, ssid, password); // start Blynk functionalities } void loop() { // Variambles to temporarily store the combination int Temp_Slider_One_value = SliderValueOne; int Temp_Slider_Two_value = SliderValueTwo; int Temp_Slider_Three_value = SliderValueThree; Blynk.run(); // poll new combination values from the online app // check if combination values are changed and print them on the console if(Temp_Slider_One_value != SliderValueOne || Temp_Slider_Two_value != SliderValueTwo || Temp_Slider_Three_value != SliderValueThree){ Serial.print("New combination: "); Serial.print(SliderValueOne); Serial.print(" "); Serial.print(SliderValueTwo); Serial.print(" "); Serial.println(SliderValueThree); } int PotOne = map(analogRead(A0), 0, 1023, 0, 9); int PotTwo = map(analogRead(A1), 0, 1023, 0, 9); int PotThree = map(analogRead(A2), 0, 1023, 0, 9); lcd.setCursor(0, 0); lcd.print(PotOne); lcd.setCursor(2, 0); lcd.print(PotTwo); lcd.setCursor(4, 0); lcd.print(PotThree); if (start) { giveColorFeedback(PotOne, PotTwo, PotThree); if (PotOne == SliderValueOne && PotTwo == SliderValueTwo && PotThree == SliderValueThree) { blinkGreenLed(); start = false; } } if(!start) { if(PotOne == 0 && PotTwo == 0 && PotThree == 0){ start = true; } } } // Give feedback based on how close the potentiometer are to the combination value // The more it's close the warmer is the color of the LED void giveColorFeedback(int PotOne, int PotTwo, int PotThree) { if (abs(PotOne - SliderValueOne) <= 1 && abs(PotTwo - SliderValueTwo) <= 1 && abs(PotThree - SliderValueThree) <= 1 ) { // Red setColor(255, 0, 0); } else if (abs(PotOne - SliderValueOne) <= 3 && abs(PotTwo - SliderValueTwo) <= 3 && abs(PotThree - SliderValueThree) <= 3 ) { // yellow setColor(255, 255, 0); } else if (abs(PotOne - SliderValueOne) <= 4 && abs(PotTwo - SliderValueTwo) <= 4 && abs(PotThree - SliderValueThree) <= 4 ) { // aqua setColor(0, 255, 255); } else { // blue setColor(0, 0, 255); } } void blinkGreenLed() { for (int a = 0; a < 2; a++) { for (int b = 0; b <= 255; b += 5) { setColor(0, b, 0); delay(5); } for (int b = 255; b >= 0; b -= 5) { setColor(0, b, 0); delay(5); } } for (int b = 0; b <= 255; b += 5) { setColor(0, b, 0); delay(5); } } // Send RGB values to the LED pins void setColor(int red, int green, int blue){ analogWrite(redPin, red); analogWrite(greenPin, green); analogWrite(bluePin, blue); } 

Menambahkan Buzzer

Kami akan menggunakan buzzer untuk memutar melodi ketika kotak dibuka. Lebih tepatnya kami akan memutar lagu tema Star Wars!

Menghubungkan buzzer sangat sederhana:

Membuat Kotak Teka-Teki IoT Aman dengan Arduino MKR Bundle – Panduan Langkah demi Langkah

Unggah kode contoh ini dan dengarkan:

const int c = 261; const int d = 294; const int e = 329; const int f = 349; const int g = 391; const int gS = 415; const int a = 440; const int aS = 455; const int b = 466; const int cH = 523; const int cSH = 554; const int dH = 587; const int dSH = 622; const int eH = 659; const int fH = 698; const int fSH = 740; const int gH = 784; const int gSH = 830; const int aH = 880; int counter = 0; #define buzzerPin 1 void setup() { pinMode(buzzerPin, OUTPUT); Serial.begin(9600); } void loop() { play_jingle(); delay(3000); } void play_jingle() { beep(a, 500); beep(a, 500); beep(a, 500); beep(f, 350); beep(cH, 150); beep(a, 500); beep(f, 350); beep(cH, 150); beep(a, 650); delay(500); beep(eH, 500); beep(eH, 500); beep(eH, 500); beep(fH, 350); beep(cH, 150); beep(gS, 500); beep(f, 350); beep(cH, 150); beep(a, 650); delay(500); } void beep(int note, int duration) { //Play tone on buzzerPin tone(buzzerPin, note, duration); //Stop tone on buzzerPin noTone(buzzerPin); delay(50); //Increment counter counter++; } 

Menambahkan Motor Servo

Motor servo adalah kunci kotak kami, kita akan membutuhkannya untuk berputar 90 derajat ketika kombinasi benar, sehingga kotak akan terbuka.

Menghubungkan servo hanya membutuhkan tiga kabel.

Membuat Kotak Teka-Teki IoT Aman dengan Arduino MKR Bundle – Panduan Langkah demi Langkah

Untuk memutarnya 90 derajat kita akan menggunakan fungsi berikut:

#include <Servo.h> int pos = 0; // variable to store the servo position Servo myservo; // create servo object to control a servo void setup() { myservo.attach(9); // attaches the servo on pin 9 to the servo object myservo.write(pos); // set the servo in position 0 } void loop() { open_the_box(); delay(2000); close_the_box(); delay(2000); } void open_the_box(){ for (pos = 0; pos <= 90; pos += 1) { // goes from 0 degrees to 90 degrees myservo.write(pos); // tell servo to go to position in variable 'pos' delay(15); // waits 15ms for the servo to reach the position } } void close_the_box(){ for (pos = 90; pos >= 0; pos -= 1) { // goes from 90 degrees to 0 degrees myservo.write(pos); // tell servo to go to position in variable 'pos' delay(15); // waits 15ms for the servo to reach the position } } 

Perhatikan bahwa untuk memutar servo kembali dan menutup kotak yang perlu Anda lakukan adalah memutar semua potensiometer ke 0.

Bangun Kotak Teka-Teki Anda

Itu tidak akan menjadi kotak tanpa kotak, jadi unduh file kotak di bawah ini dan gunakan sebagai panduan untuk membuat kotak Anda sendiri.

Perhatikan bahwa kami menggunakan karton 2mm.

Kode

Sketch Lengkap

Bagian dan Enclosure Custom

2 mm kartonbox_E5j7tnFdNC.dxf

Skema Sirkuit

Membuat Kotak Teka-Teki IoT Aman dengan Arduino MKR Bundle – Panduan Langkah demi Langkah

Proses manufaktur

  1. Menguasai Sintaks Netlist SPICE: Penamaan Komponen, Elemen Pasif & Aktif, dan Definisi Sumber
  2. Sirkuit Terpadu (IC): Chip Kompak dan Canggih yang Menggerakkan Elektronik Modern
  3. Integrasikan TI SensorTag dengan Blynk melalui Node-RED di Raspberry Pi Zero
  4. Proyek Dadu Digital Arduino: Buat Generator Angka Acak berbasis LCD
  5. Sistem Sensor Suhu Multi-Posisi untuk Integrasi Rumah Cerdas
  6. Pengontrol USB Game Arduino DIY – Buat Gamepad Tinggi Performa Sendiri
  7. Kit Proyek MOSMusic: MOSFET, Arduino, dan Lainnya
  8. Memahami Mikroelektronika: Ilmu Elektronika Kecil
  9. Komponen Esensial Mesin Bor: Gambaran Umum Komprehensif
  10. Komponen Utama Mesin Pembakaran Dalam