Obsah:
- Krok 1: Hardwarový požadavek
- Krok 2: Zabezpečení
- Krok 3: Obrana
- Krok 4: Zábava
- Krok 5: IOT App Watson na IBM Bluemix [část první]
- Krok 6: Uzly červené toky
Video: Přehled: Systém domácí zábavy a zabezpečení: 6 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:22
O aplikaci
Tento systém IOT je systém domácí zábavy a zabezpečení.
-
Bezpečnostní
- Klepněte na kartu RFID a vstup se uloží do Firebase.
- Pokud je to povoleno, můžete v klidu vstoupit a snímek je pořízen a nahrán do S3
- Pokud je neoprávněný, vstoupí obranná sekce a na LCD obrazovce se zobrazí, že nejste autorizován.
- Obrana
- Stiskněte tlačítko na palubní desce.
- Laserové věže budou útočit v náhodných dávkách a rychlostí.
- Zábava
- Pokud je detekován pohyb, hra se spustí.
- Poté, co uživatel hru hraje, je skóre uloženo do Firebase.
- 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
-
Bezpečnostní
- 1 Raspberry Pi
- 1 LCD
- 1 čtečka RFID
- 1 PiCam
- 2 karty/tlačítka RFID
- X Žena -> Samčí propojovací kabely
- 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
-
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í
Vytvoření hardwaru zabezpečovacího systému
Zapojte obvody podle schématu fritzování
Vytvoření softwaru zabezpečovacího systému
- Konfigurujte AWS vytvořením věci
- Nainstalujte si knihovnu AWS Python
- Nainstalujte si knihovnu LCD
- Nainstalujte si knihovnu RFID
- Nastavte Firebase
- Nastavte úložiště S3
- Nainstalujte Boto na Raspberry Pi
- Nainstalujte AWS ClI na Raspberry Pi
- Vytvořte pověření AWS
- Konfigurace AWS
- Nahrajte security.py do RPi
- 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
Vytvoření hardwaru laserové věže
- Laserovou věž vytváříme pomocí 2 serv a 1 laserového modulu
- 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
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
- Nastavte typ zařízení brány
- 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
- Přejít na správu palety v nabídce hamburgeru (vpravo nahoře)
-
Stáhněte si následující palety
- uzel-červená-palubní deska
- node-red-contrib-firebase
- node-red-contrib-ibm-watson-iot
Krok 6: Uzly červené toky
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:
Systém zabezpečení klíčů pomocí otisku prstu: 8 kroků
DIY-Fingerprint Key Security System: Tato aplikace je užitečná pro zabezpečení našich každodenních požadovaných klíčů (zámek). Někdy máme nějaké společné klíče jako domov, garáž, parkování mezi dvěma nebo více lidmi. Na trhu je k dispozici řada biometrických systémů, které
Vytvořte si vlastní systém sledování SMS SMS zabezpečení: 5 kroků (s obrázky)
Vytvořte si vlastní systém sledování bezpečnosti SMS SMS: V tomto projektu vám ukážu, jak zkombinovat modul SIM5320 3G s Arduino a piezoelektrickým převodníkem jako snímač otřesů, abyste vytvořili systém sledování zabezpečení, který vám pošle polohu vašeho vzácné vozidlo prostřednictvím SMS, když
ZAŘÍZENÍ PRO Zjištění krádeže IOT s nízkými náklady (domácí zabezpečení Pi): 7 kroků
ZAŘÍZENÍ PRO Zjištění krádeže IOT s nízkými náklady (Pi Home Security): Systém je navržen tak, aby detekoval vniknutí (neoprávněný vstup) do budovy nebo jiných oblastí. Tento projekt lze použít v obytných, komerčních, průmyslových a vojenských nemovitostech k ochraně před vloupáním nebo poškozením majetku
Systém zabezpečení telefonu s Arduino: 5 kroků
Systém zabezpečení telefonu s Arduino: Pokud tento projekt nepoužijete, váš domov bude nechráněný. Tento projekt vám pomůže spustit alarm prostřednictvím mobilního telefonu, když se do vašeho domu vloupá vetřelec. Pokud tedy použijete tento projekt, obdržíte SMS prostřednictvím mobilního telefonu a budete
Jak oklamat systém zabezpečení otisků prstů stejně snadno jako ABC: 12 kroků (s obrázky)
Jak oklamat systém zabezpečení otisků prstů stejně snadno jako ABC: Tento návod vám ukáže, jak oklamat systém zabezpečení otisků prstů stejně snadno jako ABC. IBM nikdy nechtěla, abyste o tom věděli. funguje také pro většinu systému zabezpečení otisků prstů. Například: např. dveře, mobilní telefon …. Tyto pokyny jsou dodávány s