Obsah:
- Krok 1: Hardvérová požiadavka
- Krok 2: Zabezpečenie
- Krok 3: Obrana
- Krok 4: Zábava
- Krok 5: Aplikácia IOT Watson na serveri IBM Bluemix [prvá časť]
- Krok 6: Červené toky uzla
Video: Prehľad: Systém domácej zábavy a zabezpečenia: 6 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:59
O aplikácii
Tento systém IOT je systémom domácej zábavy a zabezpečenia.
-
Zabezpečenie
- Klepnite na RFID karta a vstup sa uloží do Firebase.
- Ak máte oprávnenie, môžete pokojne vstúpiť a obrázok sa nasníma a odovzdá do S3
- Ak je neoprávnený, vstúpi sekcia obrany a LCD obrazovka oznámi, že nie ste autorizovaný.
- Obrana
- Stlačte tlačidlo na palubnej doske.
- Laserové veže budú útočiť v náhodných dávkach a rýchlosťou.
- Zábava
- Ak sa zistí pohyb, hra sa spustí.
- Keď si hru používateľ zahrá, skóre sa uloží do Firebase.
- Hodnoty LDR budú prevzaté a odoslané na palubnú dosku.
Táto aplikácia je ovládateľná a zobraziteľná prostredníctvom webového servera IBM Node-Red. Využívame cloudové služby AWS a IBM a ako databázu sme použili Firebase.
Zhrnutie krokov, ktoré budú popísané
- Hardvérové požiadavky
- Zabezpečenie - Ako vytvoriť bezpečnostný systém, ktorý používa vstup RFID a softvér na rozpoznávanie obrázkov
- Obrana - Ako vytvoriť laserovú vežu
- Zábava - Ako vytvoriť hru Simon -say
- IOT App Watson na IBM Bluemix - Ako integrovať všetky systémy do jedného palubného panela
Neváhajte a navštívte súbor pdf, kde nájdete podrobnejšie vysvetlenie, ako vytvoriť tento projekt.
Krok 1: Hardvérová požiadavka
To je to, čo budete potrebovať
-
Zabezpečenie
- 1 malina Pi
- 1 LCD
- 1 čítačka RFID
- 1 PiCam
- 2 karty/tlačidlá RFID
- X Zásuvky -> Samčie prepojovacie káble
- Obrana
- 1 malina Pi
- 2 10 ㏀ odpor (pre tlačidlá)
- 2 mikro servo
- 1 650nm modul laserového vysielača
- 2 Tlačidlo
- 1 bzučiak
- 3 malé gumové pásky/káblové zväzky (na upevnenie)
- X Zásuvky -> Samčie prepojovacie káble
- X bežných prepojovacích káblov
- 1 tranzistor
- 1 kondenzátor
-
Zábavy
- 1 malina Pi
- 3 1 ㏀ Rezistor (pre LED diódy)
- 1 10㏀ odpor (pre LDR)
- 3 LED diódy (rôzne farby)
- 3 tlačidlá
- 1 LDR
- 1 LCD
- 1 snímač pohybu Pir
- X Zásuvky -> Samčie prepojovacie káble
- X bežných prepojovacích káblov
Krok 2: Zabezpečenie
Vytvorenie hardvéru systému zabezpečenia
Pripojte obvody podľa schémy spájania
Vytvorenie softvéru bezpečnostného systému
- Nakonfigurujte AWS vytvorením veci
- Nainštalujte si knižnicu AWS Python
- Nainštalujte knižnicu LCD
- Nainštalujte si knižnicu RFID
- Nastavte Firebase
- Nastavte úložisko S3
- Nainštalujte Boto na Raspberry Pi
- Nainštalujte AWS ClI na Raspberry Pi
- Vytvorte poverenia AWS
- Konfigurácia AWS
- Nahrajte security.py do RPi
- Nahrajte obrázok imagerecognition.py do RPi
security.py je kód, ktorý bude čítať vstupy rfid a zisťovať, či je užívateľ votrelec alebo nie. Ak je používateľ rozpoznaný, nasníma sa obrázok a odovzdá sa do s3. Kód tiež publikuje na tému v aws MQTT
Krok 3: Obrana
Vytvorenie hardvéru laserovej veže
- Laserovú vežu vytvárame pomocou 2 serv a 1 laserového modulu
- Pripojte obvody podľa schémy spájania
Vytvorenie softvéru laserovej veže
Nasledujúci kód prinúti laserovú vežu strieľať v náhodných smeroch, v náhodných dávkach a rýchlosťou
laserturret.py
z gpiozero import LED, bzučiak, tlačidlo, 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 () print („LED svieti“) def ledOFF (): led.off () print („LED nesvieti“)
def fire ():
vytlačiť ("zbrane horúce") 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) while shot <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 (frekvencia, dĺžka): #vytvorte funkciu „buzz“a dajte jej výšku a trvanie)
ak (frekvencia == 0):
time.sleep (length) return period = 1.0 / Frequency #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): #spustite slučku od 0 do premennej „cykly“vypočítanej vyššie buzzer_pin.on () time.sleep (delayValue) buzzer_pin.off () time.sleep (delayValue)
def play (melódia, tempo, pauza, tempo = 0,800):
pre i v rozsahu (0, len (melódia)): # Prehrať poznámku k skladbe Trvanie = tempo/tempo bzučať (melódia , notaDurácia) # Zmeniť frekvenciu pozdĺž pauzy noty k piesniBetweenNotes = notaDurácia * čas pauzy.spánok (pauseBetweenNotes)
kým je pravda:
laserturret () prestávka;
Krok 4: Zábava
Vytváranie zábavného hardvéru
Vytvárame gombíkovú hru Simon-say, v ktorej musíte postupovať podľa rozsvietenia diód LED a stlačiť príslušné tlačidlá. Odošle skóre a časovú pečiatku do databázy NoSQL firebase na ďalšie použitie na dashboardoch.
Pripojte obvody podľa Fritzingovho diagramu.
Vytvorenie zábavného softvéru
Entertainment.py
import RPi. GPIO as GPIOimport threading import časového import random import osí dovozné tweepy z rpi_lcd dovoznej LCD z čiastkové proces importu volanie z časového dovoznej 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 sa! ', 1) lcd.text (' Veľa šťastia! ', 2) spánok (1) # červená, žltá, zelená SVETLÁ = [40, 38, 36] BUTTONS = [37, 33, 35] NOTES = ["E3", "A4", "E4"] # hodnoty, ktoré môžete zmeniť a ktoré ovplyvňujú rýchlosť hrania hry = 0,5 # vlajok použitých na signalizáciu 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. nastavenie (BUTTONS, GPIO. IN, pull_up_down = GPIO. PUD_DOWN) pre 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_ is_game_over, ak nie je 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 islev_cur kur 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 (rýchlosť) GPIO.output (LIGHTS [vzor , GPIO. LOW) time.sleep (speed) is_displaying_pattern = False def wait_for_player_to_repeat_pattern (): aj keď nie je_won_current_level a nie je_game_over: time.sleep (0,1) GPIO.output (LIGHTS, GPIO. LOW) def send_data (skóre): lcd.text ('End of game', 1) lcd.text ('See you soon!', 2) datestr = str (datetime. now ()) while True: print (datestr) vytlačiť (skóre) údaje = {'Dátum': datestr, 'Skóre': skóre} výsledok = firebase.post ('/skóre/', údaje) vytlačiť (výsledok), ak je skóre> 2: status = 'Niekto dal gól' +(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 (current_level - 1)) spánok (2) tlač („Ďakujeme, že hráte! / n“) lcd.text ('', 1) lcd.text ('', 2) prestávka.spánok (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čnite nové kolo! / n") initialize_gpio () start_game_monitor () nakoniec: GPIO.cleanup () if _name_ ==' _main_ ': main ()
Krok 5: Aplikácia IOT Watson na serveri IBM Bluemix [prvá časť]
Nastavte službu Blumix IoT
- Nastavte typ zariadenia brány
- Nastavte zariadenie
Vykonajte kroky 1 a 2 trikrát. Jedno RPi je pre jednu sekciu (bezpečnosť/obrana/zábava)
Nastavte Node-Red
Spustite node-red
uzol-červený štart
- V ponuke hamburgera (vpravo hore) prejdite na správu palety
-
Stiahnite si nasledujúce palety
- uzol-červená-palubná doska
- node-red-contrib-firebase
- node-red-contrib-ibm-watson-iot
Krok 6: Červené toky uzla
Stiahnite si súbory a exportujte do svojho uzla-červená.
Bezpečnostný uzol-červený
žiadny
Obrana Rpi Node-Red
laserturret.txt
Zábava Rpi Node-Red
- zábava rpi flow.txt
- ldr rpi flow.txt
IBM Bluemix Node-Red
Odporúča:
Systém zabezpečenia kľúča proti odtlačkom prsta: 8 krokov
DIY-Systém zabezpečenia kľúčov odtlačkov prstov: Táto aplikácia je užitočná na zabezpečenie našich každodenných požadovaných kľúčov (zámok). Niekedy máme niektoré bežné kľúče, ako sú domov, garáž, parkovanie medzi dvoma alebo viacerými ľuďmi. Na trhu je k dispozícii množstvo biometrických systémov, ktoré
Vytvorte si vlastný systém sledovania zabezpečenia GPS SMS: 5 krokov (s obrázkami)
Vytvorte si vlastný systém sledovania zabezpečenia GPS SMS: V tomto projekte vám ukážem, ako kombinovať modul SIM5320 3G s Arduino a piezoelektrickým prevodníkom ako snímač otrasov, aby ste vytvorili systém sledovania zabezpečenia, ktorý vám pošle polohu vášho vzácne vozidlo prostredníctvom SMS, keď
SMS systém zabezpečenia dverí pomocou GboardPro (GSM Cum Arduino Mega): 4 kroky
SMS systém zabezpečenia dverí pomocou GboardPro (GSM Cum Arduino Mega): Jedná sa o jednoduchý, ale veľmi užitočný projekt domácich kutilov s upozornením na domácu bezpečnosť. Tento projekt som urobil kvôli krádeži v mojej kancelárii
Ako oklamať systém zabezpečenia proti odtlačkom prsta rovnako ľahko ako ABC: 12 krokov (s obrázkami)
Ako oklamať bezpečnostný systém proti odtlačkom prsta rovnako ľahko ako ABC: Tento návod vám ukáže, ako oklamať bezpečnostný systém proti odtlačkom prsta rovnako jednoducho ako ABC. Spoločnosť IBM nikdy nechcela, aby ste o tom vedeli. funguje to aj pre väčšinu systému zabezpečenia odtlačkov prstov. Napríklad: napr. dvere, mobilný telefón …. Tento návod je dodávaný s v
Lacný, ľahký, internetom riadený systém domácej automatizácie: 5 krokov (s obrázkami)
Lacný, ľahký, internetom riadený systém automatizácie domácnosti: Ak máte domáce zvieratá/deti a potrebujete ich nakŕmiť alebo im dať výprask cez internet, tento systém vám môže byť užitočný. Je to veľmi ľahký a lacný spôsob, ako ovládať motory, LED diódy atď. Doma z akéhokoľvek počítača pripojeného k webu. Všetko, čo potrebujete, je Webc