Daftar Isi:

Ikhtisar: Hiburan Rumah dan Sistem Keamanan: 6 Langkah
Ikhtisar: Hiburan Rumah dan Sistem Keamanan: 6 Langkah

Video: Ikhtisar: Hiburan Rumah dan Sistem Keamanan: 6 Langkah

Video: Ikhtisar: Hiburan Rumah dan Sistem Keamanan: 6 Langkah
Video: Ali rasa, Kim pernah cerita dia ada seorang kakak yang rapat dan selalu jaga dia~ 2024, November
Anonim
Ikhtisar: Hiburan Rumah dan Sistem Keamanan
Ikhtisar: Hiburan Rumah dan Sistem Keamanan
Ikhtisar: Hiburan Rumah dan Sistem Keamanan
Ikhtisar: Hiburan Rumah dan Sistem Keamanan
Ikhtisar: Hiburan Rumah dan Sistem Keamanan
Ikhtisar: Hiburan Rumah dan Sistem Keamanan

Tentang Aplikasi

Sistem IoT ini adalah Sistem Hiburan dan Keamanan Rumah.

  1. Keamanan

    1. Ketuk Kartu RFID dan masukan disimpan ke dalam Firebase.
    2. Jika diizinkan, Anda dapat masuk dengan tenang dan gambar diambil dan diunggah ke S3
    3. Jika tidak sah, bagian pertahanan masuk dan Layar LCD akan mengatakan Anda tidak berwenang.
  2. Pertahanan

    1. Tekan tombol di dasbor.
    2. Laser Turret akan menyerang dalam burst dan kecepatan acak.
  3. Hiburan

    1. Jika gerakan terdeteksi, permainan akan dimulai.
    2. Setelah pengguna memainkan game, skor disimpan ke dalam Firebase.
    3. Nilai LDR akan diambil dan dikeluarkan di dashboard.

Aplikasi ini dapat dikontrol dan dilihat melalui server web IBM Node-Red. Kami menggunakan AWS dan IBM Cloud Services dan kami menggunakan Firebase sebagai database kami.

Ringkasan langkah-langkah yang akan dijelaskan

  • Persyaratan Perangkat Keras
  • Keamanan - Cara membuat sistem keamanan yang menggunakan input RFID dan perangkat lunak pengenalan gambar
  • Pertahanan - Cara membuat menara laser
  • Hiburan - Cara membuat game Simon-says
  • Aplikasi IOT Watson di IBM Bluemix - Cara mengintegrasikan semua sistem ke dalam satu dasbor

Silakan dan akses file pdf untuk penjelasan lebih rinci tentang cara membuat proyek ini.

Langkah 1: Persyaratan Perangkat Keras

Inilah yang Anda butuhkan

  1. Keamanan

    • 1 buah raspberry
    • 1 LCD
    • 1 Pembaca RFID
    • 1 kamera
    • 2 Kartu/Tombol RFID
    • X Female -> Kabel jumper pria
  2. Pertahanan

    • 1 buah raspberry
    • 2 10 Resistor (untuk Tombol)
    • 2 Servo Mikro
    • 1 Modul Pemancar Laser 650nm
    • 2 Tombol Tekan
    • 1 Buzzer
    • 3 Karet Gelang Kecil/Pengikat Kabel (untuk pemasangan)
    • X Female -> Kabel jumper pria
    • X Kabel Lompat Reguler
    • 1 transistor
    • 1 Kapasitor
  3. Hiburan

    • 1 buah raspberry
    • 3 1 Resistor (untuk LED)
    • 1 10㏀ Resistor (untuk LDR)
    • 3 LED (Warna Berbeda)
    • 3 Tombol
    • 1 LDR
    • 1 LCD
    • Sensor Gerak 1 Pir
    • X Female -> Kabel jumper pria
    • X Kabel Lompat Reguler

Langkah 2: Keamanan

Keamanan
Keamanan
Keamanan
Keamanan
Keamanan
Keamanan

Membuat perangkat keras sistem keamanan

Hubungkan sirkuit seperti yang ditunjukkan pada diagram fritzing

Membuat perangkat lunak sistem keamanan

  1. Konfigurasikan AWS dengan membuat sesuatu
  2. Instal Pustaka Python AWS
  3. Instal Perpustakaan LCD
  4. Instal Perpustakaan RFID
  5. Siapkan Firebase
  6. Siapkan Penyimpanan S3
  7. Instal Boto di Raspberry Pi
  8. Instal AWS ClI di Raspberry Pi
  9. Buat Kredensial AWS
  10. Konfigurasikan AWS
  11. Unggah security.py ke RPi
  12. Unggah imagerecognition.py ke RPi

security.py adalah kode yang akan membaca input rfid dan mendeteksi apakah pengguna adalah penyusup atau bukan. Jika pengguna dikenali, gambar akan diambil dan diunggah ke s3. Kode juga diterbitkan ke topik di aws MQTT

Langkah 3: Pertahanan

Pertahanan
Pertahanan
Pertahanan
Pertahanan
Pertahanan
Pertahanan

Membuat Perangkat Keras menara laser

  1. Kami membuat menara laser dengan menggunakan 2 servos dan 1 Modul Laser
  2. Hubungkan sirkuit seperti yang ditunjukkan pada diagram fritzing

Membuat Perangkat Lunak menara laser

Kode di bawah ini akan membuat menara laser menembak ke arah acak, dalam semburan dan kecepatan acak

laserturret.py

dari gpiozero impor LED, Buzzer, Tombol, Servoimpor waktu dari sinyal impor jeda impor acak

#led = LED(12)

#pir = MotionSensor(19, sample_rate=5, queue_len=1) buzzer_pin = Buzzer(17) attack = Button(5, pull_up=False) #reset = Button(6, pull_up=False) servo1 = Servo(18) servo2 = Servo (24)

def ledON():

led.on() print("LED menyala") def ledOFF(): led.off() print("LED mati")

def api():

print("senjata panas") buzzer_pin.on() time.sleep(0.1) buzzer_pin.off()

def laserturret():

timeBetweenBurst = random.uniform(0.2, 1) timeBetweenShots = random.uniform(0.05, 0.2) servo1start = random.randrange(-1, 1) servo1end = random.randrange(-1, 1) servo2start = random.randrange(-1, 1) servo2end = random.randrange(-1, 1) numShots = random.randrange(5, 20) servo1change = (servo1end - servo1start)/numShots servo2change = (servo2end - servo2start)/numShots servo1.value = servo1start servo2.value = servo2start time.sleep(0.1) shot = 0 detail = [timeBetweenBurst, timeBetweenShots, servo1.value, servo2.value, numShots] print(detail) saat ditembak<numshots: shot+="1" servo1.value="servo1start" servo2.value="servo2start" servo1start="servo1change" servo2start="servo2change" time.sleep(timebetweenburst)

catatan = {

'B0': 31, 'C1': 33, 'CS1': 35, 'D1': 37, 'DS1': 39, 'EB1': 39, 'E1': 41, 'F1': 44, 'FS1 ': 46, 'G1': 49, 'GS1': 52, 'A1': 55, 'AS1': 58, 'BB1': 58, 'B1': 62, 'C2': 65, 'CS2': 69, 'D2': 73, 'DS2': 78, 'EB2': 78, 'E2': 82, 'F2': 87, 'FS2': 93, 'G2': 98, 'GS2': 104, 'A2': 110, 'AS2': 117, 'BB2': 123, 'B2': 123, 'C3': 131, 'CS3': 139, 'D3': 147, 'DS3': 156, 'EB3 ': 156, 'E3': 165, 'F3': 175, 'FS3': 185, 'G3': 196, 'GS3': 208, 'A3': 220, 'AS3': 233, 'BB3': 233, 'B3': 247, 'C4': 262, 'CS4': 277, 'D4': 294, 'DS4': 311, 'EB4': 311, 'E4': 330, 'F4': 349, 'FS4': 370, 'G4': 392, 'GS4': 415, 'A4': 440, 'AS4': 466, 'BB4': 466, 'B4': 494, 'C5': 523, 'CS5 ': 554, 'D5': 587, 'DS5': 622, 'EB5': 622, 'E5': 659, 'F5': 698, 'FS5': 740, 'G5': 784, 'GS5': 831, 'A5': 880, 'AS5': 932, 'BB5': 932, 'B5': 988, 'C6': 1047, 'CS6': 1109, 'D6': 1175, 'DS6': 1245, 'EB6': 1245, 'E6': 1319, 'F6': 1397, 'FS6': 1480, 'G6': 1568, 'GS6': 1661, 'A 6': 1760, 'AS6': 1865, 'BB6': 1865, 'B6': 1976, 'C7': 2093, 'CS7': 2217, 'D7': 2349, 'DS7': 2489, 'EB7': 2489, 'E7': 2637, 'F7': 2794, 'FS7': 2960, 'G7': 3136, 'GS7': 3322, 'A7': 3520, 'AS7': 3729, 'BB7': 3729, 'B7': 3951, 'C8': 4186, 'CS8': 4435, 'D8': 4699, 'DS8': 4978 }

def buzz(frekuensi, panjang): #buat fungsi "buzz" dan berikan nada dan durasinya)

jika (frekuensi==0):

waktu.tidur(panjang) periode kembali = 1,0 / frekuensi #frekuensi tundaNilai = periode / 2 #hitung waktu untuk setengah dari jumlah gelombangSiklus = int(panjang * frekuensi) #jumlah gelombang = durasi x frekuensi untuk i dalam jangkauan(jumlahSiklus): #mulai loop dari 0 ke variabel "siklus" yang dihitung di atas buzzer_pin.on() time.sleep(delayValue) buzzer_pin.off() time.sleep(delayValue)

def play (melodi, tempo, jeda, kecepatan = 0,800):

for i in range(0, len(melody)): # Mainkan lagu noteDuration = pace/tempo buzz(melody, noteDuration) # Ubah frekuensi sepanjang not lagu pauseBetweenNotes = noteDuration * pause time.sleep(jedaAntaraCatatan)

sementara Benar:

laserturret() istirahat;

Langkah 4: Hiburan

Hiburan
Hiburan
Hiburan
Hiburan
Hiburan
Hiburan

Membuat Perangkat Keras hiburan

Kami membuat permainan tombol Simon-says, di mana Anda harus mengikuti pola lampu LED yang menyala dan menekan tombol yang sesuai. Ini mengunggah skor dan stempel waktu ke dalam basis data firebase NoSQL untuk penggunaan lebih lanjut di dasbor.

Hubungkan sirkuit seperti yang ditunjukkan pada diagram Fritzing.

Membuat Perangkat Lunak Hiburan

entertainment.py

impor RPi. GPIO sebagai GPIOimport waktu threading impor tweepy impor acak import os impor dari LCD rpi_lcd impor dari panggilan sub proses impor dari waktu tidur impor dari datetime datetime impor dari firebase impor firebase CONSUMER_KEY = 'h5Sis7TXdoUVncrpjSzGAvhBH' CONSUMER_SECRET = 'ZfDVxc4aTd9doGmBQO3HiSKKzxSTKT4C3g0B3AGx8eETCJm2rY' ACCESS_KEY = '988333099669901312- YDLEQN1weW2n1JP4lxJcFPppCsbvzQh 'ACCESS_SECRET = 'K2IlUPur6jx7DO5S0HhhZW29H5AQFOvkMMevSsk9ZzwLk' auth = tweepy. OAuthHandler (CONSUMER_KEY, CONSUMER_SECRET) auth.secure = True auth.set_access_token (ACCESS_KEY, ACCESS_SECRET) api = tweepy. API (auth) firebase = firebase. FirebaseApplication (' https:// iotca2 -12f48.firebaseio.com', Tidak Ada) lcd=LCD() lcd.text('Selamat bersenang-senang!', 1) lcd.text('Semoga Sukses!', 2) tidur(1) # LAMPU Merah, Kuning, Hijau = [40, 38, 36] TOMBOL = [37, 33, 35] CATATAN = ["E3", "A4", "E4"] # nilai yang dapat Anda ubah yang memengaruhi kecepatan bermain game = 0,5 # flag yang digunakan untuk memberi sinyal game status is_displaying_pattern = Salah is_won_curr ent_level = Salah is_game_over = Salah # status permainan current_level = 1 current_step_of_level = 0 pola = def initialize_gpio(): GPIO.setmode(GPIO. BOARD) GPIO.setup(LIGHTS, GPIO. OUT, initial=GPIO. LOW) GPIO. setup(BUTTONS, GPIO. IN, pull_up_down=GPIO. PUD_DOWN) untuk i dalam jangkauan(3): GPIO.add_event_detect(BUTTONS, GPIO. FALLING, verifikasi_player_selection) def verifikasi_player_selection(channel): global current_step_of_level, current_level, is_won is_game_over jika bukan is_displaying_pattern dan bukan is_won_current_level dan bukan is_game_over: flash_led_for_button(channel) jika saluran == BUTTONS[pattern[current_step_of_level]: current_step_of_level += 1 jika current_step_of_level >= current_level: current_level_lainnya += 1 is_won_level flash_led_for_button(button_channel): led = LIGHTS[BUTTONS.index(button_channel)] GPIO.output(led, GPIO. HIGH) time.sleep(0.4) GPIO.output(led, GPIO. LOW) def add_new_color_to_pattern(): global is_won_current_level, bajingan rent_step_of_level is_won_current_level = False current_step_of_level = 0 next_color = random.randint(0, 2) pattern.append(next_color) def display_pattern_to_player(): global is_displaying_pattern is_displaying_pattern = True GPIO.output(LIGHTS, GPIO. LOW) untuk i: GPIO.output(LIGHTS[pattern, GPIO. HIGH) time.sleep(speed) GPIO.output(LIGHTS[pattern, GPIO. LOW) time.sleep(speed) is_displaying_pattern = Salah def wait_for_player_to_repeat_pattern (): sementara bukan is_won_current_level dan bukan is_game_over: time.sleep(0.1) def reset_board_for_new_game(): global is_displaying_pattern, is_won_current_level, is_game_over global current_level, current_step_of_level, pola is_displaying_pattern = Salah is_won_level_permainan saat ini = Salah_tingkat_langkah_saat ini = Salah_tingkat_permainan saat ini = Salah_tingkat_permainan saat ini =Salah_tingkat_permainan saat ini GPIO.output(LIGHTS, GPIO. LOW) def send_data(skor): lcd.text('Akhir permainan, ', 1) lcd.text('Sampai jumpa!', 2) datestr = str(datetime. now()) while True: print(datestr) print(score) data={ 'Date': datestr, 'Score': score } result = firebase.post('/scores/', data) print(result) if score > 2: status='Seseorang telah mencetak ' + (str(skor)) +' pada '+datestr+'!' api.update_status (status = status) break def start_game(): while True: add_new_color_to_pattern() display_pattern_to_player() wait_for_player_to_repeat_pattern() if is_game_over: send_data(current_level - 1) print("Game Over! skor adalah {} warna!\n".format(current_level - 1)) sleep(2) print("Terima kasih sudah bermain!\n") lcd.text('', 1) lcd.text('', 2) break time.sleep(2) def start_game_monitor (): t = threading. Thread(target=start_game) t.daemon = True t.start() t.join() def main(): coba: os.system('cls' if os.name == 'nt ' else 'clear') print("Mulai babak baru!\n") initialize_gpio() start_game_monitor() akhirnya: GPIO.cleanup() if _name_ == '_main_': main()

Langkah 5: Aplikasi IOT Watson di IBM Bluemix [Bagian Satu]

Siapkan Layanan Blumix IoT

  1. Siapkan Jenis Perangkat Gateway
  2. Siapkan Perangkat

Lakukan langkah 1 dan 2 sebanyak 3 kali. Satu RPi untuk satu bagian (Keamanan/Pertahanan/Hiburan)

Siapkan Node-Merah

Jalankan simpul-merah

simpul-merah mulai

  1. Pergi untuk mengelola palet di menu hamburger (kanan atas)
  2. Unduh palet berikut

    1. simpul-merah-dasbor
    2. node-red-contrib-firebase
    3. simpul-merah-kontrib-ibm-watson-iot

Langkah 6: Aliran Merah Node

Aliran Node Merah
Aliran Node Merah
Aliran Node Merah
Aliran Node Merah
Aliran Node Merah
Aliran Node Merah
Aliran Node Merah
Aliran Node Merah

Unduh file dan ekspor ke node-red Anda.

Node Keamanan-Merah

tidak ada

Pertahanan Rpi Node-Red

laserturret.txt

Hiburan Rpi Node-Red

  • hiburan rpi flow.txt
  • ldr rpi flow.txt

IBM Bluemix Node-Merah

Direkomendasikan: