Obsah:

Přehled: Systém domácí zábavy a zabezpečení: 6 kroků
Přehled: Systém domácí zábavy a zabezpečení: 6 kroků

Video: Přehled: Systém domácí zábavy a zabezpečení: 6 kroků

Video: Přehled: Systém domácí zábavy a zabezpečení: 6 kroků
Video: Naše denc můvs🕺💃🤣 #czech #youtubeshorts #dance #dancevideo 2024, Červen
Anonim
Přehled: Systém domácí zábavy a zabezpečení
Přehled: Systém domácí zábavy a zabezpečení
Přehled: Systém domácí zábavy a zabezpečení
Přehled: Systém domácí zábavy a zabezpečení
Přehled: Systém domácí zábavy a zabezpečení
Přehled: Systém domácí zábavy a zabezpečení

O aplikaci

Tento systém IOT je systém domácí zábavy a zabezpečení.

  1. Bezpečnostní

    1. Klepněte na kartu RFID a vstup se uloží do Firebase.
    2. Pokud je to povoleno, můžete v klidu vstoupit a snímek je pořízen a nahrán do S3
    3. Pokud je neoprávněný, vstoupí obranná sekce a na LCD obrazovce se zobrazí, že nejste autorizován.
  2. Obrana
    1. Stiskněte tlačítko na palubní desce.
    2. Laserové věže budou útočit v náhodných dávkách a rychlostí.
  3. Zábava
    1. Pokud je detekován pohyb, hra se spustí.
    2. Poté, co uživatel hru hraje, je skóre uloženo do Firebase.
    3. Hodnoty LDR budou převzaty a vyvedeny na řídicí panel.

Tato aplikace je ovladatelná a zobrazitelná prostřednictvím webového serveru IBM Node-Red. Využíváme cloudové služby AWS a IBM a jako databázi jsme použili Firebase.

Shrnutí kroků, které budou popsány

  • Hardwarové požadavky
  • Zabezpečení - Jak vytvořit bezpečnostní systém, který používá vstup RFID a software pro rozpoznávání obrázků
  • Obrana - Jak vytvořit laserovou věž
  • Zábava - Jak vytvořit hru Simon -said
  • IOT App Watson na IBM Bluemix - Jak integrovat všechny systémy do jednoho řídicího panelu

Neváhejte a otevřete si soubor pdf, kde najdete podrobnější vysvětlení, jak tento projekt vytvořit.

Krok 1: Hardwarový požadavek

To je to, co budete potřebovat

  1. Bezpečnostní

    • 1 Raspberry Pi
    • 1 LCD
    • 1 čtečka RFID
    • 1 PiCam
    • 2 karty/tlačítka RFID
    • X Žena -> Samčí propojovací kabely
  2. Obrana
    • 1 Raspberry Pi
    • 2 10 ㏀ Rezistor (pro tlačítka)
    • 2 mikro servo
    • 1 650nm modul laserového vysílače
    • 2 Tlačítko
    • 1 bzučák
    • 3 malé gumové pásky/kabelové svazky (k upevnění)
    • X Žena -> Samčí propojovací kabely
    • X Pravidelné propojovací kabely
    • 1 tranzistor
    • 1 kondenzátor
  3. Zábavy

    • 1 Raspberry Pi
    • 3 1 ㏀ Rezistor (pro LED)
    • 1 10㏀ odpor (pro LDR)
    • 3 LED diody (různé barvy)
    • 3 tlačítka
    • 1 LDR
    • 1 LCD
    • 1 snímač pohybu Pir
    • X Žena -> Samčí propojovací kabely
    • X Pravidelné propojovací kabely

Krok 2: Zabezpečení

Bezpečnostní
Bezpečnostní
Bezpečnostní
Bezpečnostní
Bezpečnostní
Bezpečnostní

Vytvoření hardwaru zabezpečovacího systému

Zapojte obvody podle schématu fritzování

Vytvoření softwaru zabezpečovacího systému

  1. Konfigurujte AWS vytvořením věci
  2. Nainstalujte si knihovnu AWS Python
  3. Nainstalujte si knihovnu LCD
  4. Nainstalujte si knihovnu RFID
  5. Nastavte Firebase
  6. Nastavte úložiště S3
  7. Nainstalujte Boto na Raspberry Pi
  8. Nainstalujte AWS ClI na Raspberry Pi
  9. Vytvořte pověření AWS
  10. Konfigurace AWS
  11. Nahrajte security.py do RPi
  12. Nahrajte imagerecognition.py do RPi

security.py je kód, který bude číst vstupy rfid a detekovat, zda je uživatel vetřelec nebo ne. Pokud je uživatel rozpoznán, bude pořízen snímek a nahrán do s3. Kód také publikuje na téma v aws MQTT

Krok 3: Obrana

Obrana
Obrana
Obrana
Obrana
Obrana
Obrana

Vytvoření hardwaru laserové věže

  1. Laserovou věž vytváříme pomocí 2 serv a 1 laserového modulu
  2. Zapojte obvody podle schématu fritzování

Vytvoření softwaru laserové věže

Níže uvedený kód způsobí, že laserová věž střílí v náhodných směrech, v náhodných dávkách a rychlosti

laserturret.py

z gpiozero import LED, bzučák, tlačítko, Servoimport čas od importu signálu pauza import náhodný

#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 () tisk ("LED svítí") def ledOFF (): led.off () tisk ("LED nesvítí")

def fire ():

tisk ("zbraně horké") 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) výstřel = 0 detail = [timeBetweenBurst, timeBetweenShots, servo1.value, servo2.value, numShots] tisk (detail) při záběru <numshots: shot+= "1" servo1.value = "servo1start" servo2.value = "servo2start" servo1start = "servo1change" servo2start = "servo2change" fire () = "" time.sleep (timebetweenshots) = "" time.sleep (timebetweenburst)

poznámky = {

'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 (frekvence, délka): #vytvořte funkci „buzz“a přidejte jí výšku a trvání)

pokud (frekvence == 0):

time.sleep (length) návratová perioda = 1.0 / frekvence #frequency delayValue = period / 2 #calcuate the time for half of the wave numCycles = int (length * frequency) #num of waves = duratime x freq for i in range (numCycles): #spusťte smyčku od 0 do proměnné „cykly“vypočítané výše buzzer_pin.on () time.sleep (delayValue) buzzer_pin.off () time.sleep (delayValue)

def play (melodie, tempo, pauza, tempo = 0,800):

pro i v rozsahu (0, len (melodie)): # Přehrát notu skladbyDuration = tempo/tempo buzz (melodie , notaDuration) # Změnit frekvenci podél pauzy noty pauseBetweenNotes = noteDuration * pauza time.sleep (pauseBetweenNotes)

zatímco pravda:

laserturret () přestávka;

Krok 4: Zábava

Zábava
Zábava
Zábava
Zábava
Zábava
Zábava

Vytváření hardwaru pro zábavu

Vytváříme hru Simon-said button, u které musíte postupovat podle rozsvícení LED a stisknout odpovídající tlačítka. Nahrává skóre a časové razítko do databáze NoSQL firebase pro další použití na řídicích panelech.

Připojte obvody podle Fritzingova diagramu.

Vytvoření softwaru pro zábavu

Entertainment.py

import RPi. GPIO as GPIOimport threading import časového import random import os dovozní tweepy z rpi_lcd dovozní LCD z dílčí proces importu volání z časového dovozní spánku z datetime import datetime z 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 = True auth.set_access_token (ACCESS_KEY, ACCESS_SECRET) api = tweepy. API (auth) firebase = firebase. FirebaseApplication (' https:// iotca2 -12f48.firebaseio.com ', None) lcd = LCD () lcd.text (' Bavte se! ', 1) lcd.text (' Hodně štěstí! ', 2) spánek (1) # Červená, žlutá, zelená SVĚTLA = [40, 38, 36] TLAČÍTKA = [37, 33, 35] POZNÁMKY = ["E3", "A4", "E4"] # hodnoty, které můžete změnit a které ovlivňují rychlost hraní hry = 0,5 # vlajek použitých k signalizaci hry status is_displaying_pattern = False is_won_curr ent_level = False is_game_over = False # herní stav current_level = 1 current_step_of_level = 0 pattern = def initialize_gpio (): GPIO.setmode (GPIO. BOARD) GPIO.setup (LIGHTS, GPIO. OUT, initial = GPIO. LOW) GPIO. nastavení (BUTTONS, GPIO. IN, pull_up_down = GPIO. PUD_DOWN) pro i v rozsahu (3): GPIO.add_event_detect (BUTTONS , GPIO. FALLING, verify_player_selection) def verify_player_selection (channel): global current_step_of_level, current_level, current_level, aktuální_úroveň is_game_over if not is_displaying_pattern and not is_won_current_level and not is_game_over: flash_led_for_button (channel) if channel == BUTTONS [pattern [current_step_of_level]: current_step_of_level += 1 if current_step_of_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 islevwrent voříšek 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.output (LIGHTS [vzor , GPIO. HIGH) time.sleep (rychlost) GPIO.output (LIGHTS [vzor , GPIO. LOW) time.sleep (speed) is_displaying_pattern = False def wait_for_player_to_repeat_pattern (): zatímco není is_won_current_level a není is_game_over: time.sleep (0,1) GPIO.output (LIGHTS, GPIO. LOW) def send_data (score): lcd.text ('End of game', 1) lcd.text ('See you soon!', 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 = 'Somebody Boded' +(str (skóre))+'na'+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! score is {} colors!.format (aktuální_úroveň - 1)) spánek (2) tisk ("Děkujeme za hraní! / n") lcd.text ('', 1) lcd.text ('', 2) doba přestávky.spánek (2) def start_game_monitor (): t = threading. Thread (target = start_game) t.daemon = True t.start () t.join () def main (): try: os.system ('cls' if os.name == 'nt 'else' clear ') print ("Začněte nové kolo! / n") initialize_gpio () start_game_monitor () konečně: GPIO.cleanup () if _name_ ==' _main_ ': main ()

Krok 5: IOT App Watson na IBM Bluemix [část první]

Nastavte službu IoT Blumix

  1. Nastavte typ zařízení brány
  2. Nastavte zařízení

Proveďte kroky 1 a 2 třikrát. Jeden RPi je pro jednu sekci (Zabezpečení/Obrana/Zábava)

Nastavte Node-Red

Spustit node-red

uzlově červený start

  1. Přejít na správu palety v nabídce hamburgeru (vpravo nahoře)
  2. Stáhněte si následující palety

    1. uzel-červená-palubní deska
    2. node-red-contrib-firebase
    3. node-red-contrib-ibm-watson-iot

Krok 6: Uzly červené toky

Červený tok uzlu
Červený tok uzlu
Červený tok uzlu
Červený tok uzlu
Červený tok uzlu
Červený tok uzlu
Červený tok uzlu
Červený tok uzlu

Stáhněte si soubory a exportujte je do uzlu.

Security Node-Red

žádný

Obrana Rpi Node-Red

laserturret.txt

Zábava Rpi Node-Red

  • zábava rpi flow.txt
  • ldr rpi flow.txt

IBM Bluemix Node-Red

Doporučuje: