Isi kandungan:

Gambaran Keseluruhan: Hiburan dan Sistem Keselamatan Rumah: 6 Langkah
Gambaran Keseluruhan: Hiburan dan Sistem Keselamatan Rumah: 6 Langkah

Video: Gambaran Keseluruhan: Hiburan dan Sistem Keselamatan Rumah: 6 Langkah

Video: Gambaran Keseluruhan: Hiburan dan Sistem Keselamatan Rumah: 6 Langkah
Video: “Duduk Macam Lelaki” – Netizen Terkejut Lihat Rupa Terkini Anak Perempuan Sharifah Shahira 2024, Jun
Anonim
Gambaran Keseluruhan: Sistem Hiburan dan Keselamatan Rumah
Gambaran Keseluruhan: Sistem Hiburan dan Keselamatan Rumah
Gambaran Keseluruhan: Sistem Hiburan dan Keselamatan Rumah
Gambaran Keseluruhan: Sistem Hiburan dan Keselamatan Rumah
Gambaran Keseluruhan: Sistem Hiburan dan Keselamatan Rumah
Gambaran Keseluruhan: Sistem Hiburan dan Keselamatan Rumah

Mengenai Permohonan

Sistem IOT ini adalah Sistem Hiburan dan Keselamatan Rumah.

  1. Keselamatan

    1. Ketuk Kad RFID dan input disimpan ke Firebase.
    2. Sekiranya dibenarkan, anda boleh memasukkan dengan tenang dan gambar diambil dan dimuat naik ke S3
    3. Sekiranya tidak dibenarkan, bahagian pertahanan masuk dan Skrin LCD akan mengatakan bahawa anda tidak dibenarkan.
  2. Pertahanan

    1. Tekan butang di papan pemuka.
    2. Laser Turret akan menyerang secara semburan dan kelajuan secara rawak.
  3. Hiburan

    1. Sekiranya gerakan dikesan, permainan akan dimulakan.
    2. Setelah pengguna memainkan permainan, skor akan disimpan ke Firebase.
    3. Nilai LDR akan diambil dan dikeluarkan pada papan pemuka.

Aplikasi ini dapat dikawal dan dilihat melalui pelayan web IBM Node-Red. Kami menggunakan Perkhidmatan Awan AWS dan IBM dan kami menggunakan Firebase sebagai pangkalan data kami.

Ringkasan langkah-langkah yang akan dihuraikan

  • Keperluan Perkakasan
  • Keselamatan - Cara membuat sistem keselamatan yang menggunakan input RFID dan perisian pengecam gambar
  • Pertahanan - Cara membuat turet laser
  • Hiburan - Cara membuat permainan Simon-mengatakan
  • IOT App Watson pada IBM Bluemix - Cara mengintegrasikan semua sistem ke dalam satu papan pemuka

Teruskan dan akses fail pdf untuk penjelasan yang lebih terperinci mengenai cara membuat projek ini.

Langkah 1: Keperluan Perkakasan

Inilah yang anda perlukan

  1. Keselamatan

    • 1 Raspberry Pi
    • 1 LCD
    • 1 Pembaca RFID
    • 1 PiCam
    • 2 Kad / Butang RFID
    • X Perempuan -> Kabel pelompat lelaki
  2. Pertahanan

    • 1 Raspberry Pi
    • 2 10 ㏀ Perintang (untuk Butang)
    • 2 Servo Mikro
    • 1 Modul Pemancar Laser 650nm
    • 2 Butang Tekan
    • 1 Buzzer
    • 3 Jalur Getah Kecil / Ikatan Kabel (untuk pemasangan)
    • X Perempuan -> Kabel pelompat lelaki
    • X Kabel Lompat Biasa
    • 1 Transistor
    • 1 Kapasitor
  3. Hiburan

    • 1 Raspberry Pi
    • 3 1 ㏀ Perintang (untuk LED)
    • 1 10㏀ Perintang (untuk LDR)
    • 3 LED (Warna berbeza)
    • 3 Butang
    • 1 LDR
    • 1 LCD
    • 1 Sensor Gerakan Pir
    • X Perempuan -> Kabel pelompat lelaki
    • X Kabel Lompat Biasa

Langkah 2: Keselamatan

Keselamatan
Keselamatan
Keselamatan
Keselamatan
Keselamatan
Keselamatan

Membuat perkakasan sistem keselamatan

Sambungkan litar seperti yang ditunjukkan dalam rajah fritzing

Membuat perisian sistem keselamatan

  1. Konfigurasikan AWS dengan membuat sesuatu
  2. Pasang Pustaka AWS Python
  3. Pasang Perpustakaan LCD
  4. Pasang Perpustakaan RFID
  5. Sediakan Firebase
  6. Sediakan Storan S3
  7. Pasang Boto pada Raspberry Pi
  8. Pasang AWS ClI pada Raspberry Pi
  9. Buat Kelayakan AWS
  10. Konfigurasikan AWS
  11. Muat naik security.py ke RPi
  12. Muat naik imagerecognition.py ke RPi

security.py adalah kod yang akan membaca input rfid dan mengesan sama ada pengguna adalah penceroboh atau tidak. Sekiranya pengguna dikenali, gambar akan diambil dan dimuat naik ke s3. Kod ini juga menerbitkan topik dalam MQTT aws

Langkah 3: Pertahanan

Pertahanan
Pertahanan
Pertahanan
Pertahanan
Pertahanan
Pertahanan

Membuat Perkakasan turret laser

  1. Kami membuat turret laser dengan menggunakan 2 servos dan 1 Modul Laser
  2. Sambungkan litar seperti yang ditunjukkan dalam rajah fritzing

Membuat Perisian turret laser

Kod di bawah ini akan menjadikan pemotretan laser dalam arah rawak, dalam pecahan dan kelajuan secara rawak

laserturret.py

dari gpiozero import LED, Buzzer, Button, Servoimport time dari import signal jeda import secara rawak

#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 on") def ledOFF (): led.off () print ("LED mati")

def def ():

cetak ("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.v. = servis servo2start time.sleep (0.1) = 0 detail = [timeBetweenBurst, timeBetweenShots, servo1.value, servo2.value, numShots] print (detail) semasa ditembak <numshots: shot + = "1" servo1.value = "servo1start" servo2.value = "servo2start" servo1start = "servo1change" servo2start = "servo2change" fire () = "" time.sleep (timebetweenshots) = "" time.sleep (timebetweenburst)

nota = {

'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 beri makan nada dan tempohnya)

jika (kekerapan == 0):

time.sleep (length) period return = 1.0 / frekuensi #frequency delayValue = period / 2 #kira masa untuk separuh gelombang gelombang): #mulakan gelung dari 0 ke pemboleh ubah "kitaran" yang dikira di atas buzzer_pin.on () time.sleep (delayValue) buzzer_pin.off () time.sleep (delayValue)

mainkan def (melodi, tempo, pause, pace = 0.800):

untuk i dalam jarak (0, len (melodi)): # Mainkan nota laguDuration = laju / tempo buzz (melodi , noteDuration) # Tukar frekuensi sepanjang jeda nota laguBetweenNotes = noteDuration * pause time.sleep (berhenti seketika antara Nota)

Walaupun Betul:

laserturret () rehat;

Langkah 4: Hiburan

Hiburan
Hiburan
Hiburan
Hiburan
Hiburan
Hiburan

Membuat Perkakasan hiburan

Kami membuat permainan butang Simon-mengatakan, yang mana anda harus mengikuti corak lampu LED menyala dan menekan butang yang sesuai. Ia memuat naik skor dan cap waktu ke dalam pangkalan data NoSQL firebase untuk penggunaan lebih lanjut di papan pemuka.

Sambungkan litar seperti yang ditunjukkan dalam rajah Fritzing.

Membuat Perisian Hiburan

hiburan.py

import RPi. GPIO sebagai GPIOimport masa threading import tweepy import rawak import os import dari LCD rpi_lcd import dari panggilan subprocess import dari tidur import masa dari datetime datetime import dari Firebase import Firebase CONSUMER_KEY = 'h5Sis7TXdoUVncrpjSzGAvhBH' CONSUMER_SECRET = 'ZfDVxc4aTd9doGmBQO3HiSKKzxSTKT4C3g0B3AGx8eETCJm2rY' ACCESS_KEY = '988333099669901312- YDLEQN1weW2n1JP4lxJcFPppCsbvzQh 'ACCESS_SECRET =' K2IlUPur6jx7DO5S0HhhZW29H5AQFOvkMMevSsk9ZzwLk 'auth = tweepy. OAuthHandler (CONSUMER_KEY, CONSUMER_SECRET) auth.secure = auth.set_access_token sebenar (ACCESS_KEY, ACCESS_SECRET) api = tweepy. API (auth) Firebase = firebase. FirebaseApplication (' https:// iotca2 -12f48.firebaseio.com ', None) lcd = LCD () lcd.text (' Have fun! ', 1) lcd.text (' Good Luck! ', 2) tidur (1) # Merah, Kuning, Hijau CAHAYA = [40, 38, 36] Tombol = [37, 33, 35] CATATAN = ["E3", "A4", "E4"] # nilai yang dapat anda ubah yang mempengaruhi kelajuan permainan permainan = 0.5 # bendera yang digunakan untuk memberi isyarat permainan status is_displaying_pattern = Palsu is_won_curr ent_level = False is_game_over = False # game state current_level = 1 current_step_of_level = 0 pattern = def initialize_gpio (): GPIO.setmode (GPIO. BOARD) GPIO.setup (LIGHTS, GPIO. OUT, awal = GPIO. LOW) GPIO. persediaan (BUTTONS, GPIO. IN, pull_up_down = GPIO. PUD_DOWN) untuk i dalam jarak (3): GPIO.add_event_detect (BUTTONS , GPIO. FALLING, verifikasi_player_selection) def verifikasi_player_selection (saluran): is_game_over if not is_displaying_pattern and not is_won_current_level dan not is_game_over: flash_led_for_button (channel) if channel == BUTTONS [pattern [current_step_of_level]: current_step_of_level + = 1 jika current_step_of_vel_vel_vel_vel_vel_vel_vel_vel_level sekarang 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_c cur 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 = TrueLayar: GPIO.output (LIGHTS [pattern , GPIO. HIGH) time.sleep (speed) GPIO.output (LIGHTS [pattern , GPIO. LOW) time.sleep (speed) is_displaying_pattern = False def waiting_for_player_to_repeat_pattern (): manakala tidak is_won_current_level dan tidak is_game_over: time.sleep (0.1) def reset_board_for_new_game (): is_displaying_pattern global, is_won_current_level, current_level is_game_over global, current_step_of_level, corak is_displaying_pattern = is_won_current_level palsu = is_game_over palsu = current_level palsu = 1 current_step_of_level = 0 corak = GPIO.output (LIGHTS, GPIO. LOW) def send_data (skor): lcd.text ('Akhir permainan,', 1) lcd.text ('Sampai jumpa lagi!', 2) datestr = str (datetime. sekarang ()) sementara Benar: cetak (datestr) cetak (skor) data = {'Tarikh': datestr, 'Skor': skor} hasil = firebase.post ('/ skor /', data) cetak (hasil) jika skor> 2: status = 'Seseorang telah menjaringkan' + (str (skor)) + 'on' + datestr + '!' api.update_status (status = status) break def start_game (): while True: add_new_color_to_pattern () display_pattern_to_player () waiting_for_player_to_repeat_pattern () if is_game_over: send_data (current_level - 1) cetak ("Warna Game! n skor".format (current_level - 1)) sleep (2) print ("Terima kasih kerana bermain! / n") lcd.text ('', 1) lcd.text ('', 2) waktu rehat. tidur (2) def start_game_monitor (): t = threading. Thread (target = start_game) t.daemon = True t.start () t.join () def main (): cuba: os.system ('cls' if os.name == 'nt 'else' clear ') cetak ("Mulakan pusingan baru! / n") initialize_gpio () start_game_monitor () akhirnya: GPIO.cleanup () if _name_ ==' _main_ ': main ()

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

Sediakan Perkhidmatan Blumix IoT

  1. Sediakan Jenis Peranti Gateway
  2. Sediakan Peranti

Lakukan langkah 1 dan 2 sebanyak 3 kali. Satu RPi adalah untuk satu bahagian (Keselamatan / Pertahanan / Hiburan)

Sediakan Node-Red

Jalankan simpul-merah

permulaan simpul-merah

  1. Pergi untuk menguruskan palet di menu hamburger (kanan atas)
  2. Muat turun pallet berikut

    1. papan pemuka simpul-merah
    2. node-red-contrib-firebase
    3. node-red-contrib-ibm-watson-iot

Langkah 6: Node Aliran Merah

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

Muat turun fail dan eksport ke nod merah anda.

Node Keselamatan-Merah

tiada

Pertahanan Rpi Node-Red

laserturret.txt

Hiburan Rpi Node-Red

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

IBM Bluemix Node-Red

Disyorkan: