Indholdsfortegnelse:

Oversigt: Home Entertainment og Security System: 6 trin
Oversigt: Home Entertainment og Security System: 6 trin

Video: Oversigt: Home Entertainment og Security System: 6 trin

Video: Oversigt: Home Entertainment og Security System: 6 trin
Video: ПЕРВЫЕ ПОСЛЕВОЕННЫЕ ГОДЫ. ВОСТОЧНАЯ ПРУССИЯ. КАЛИНИНГРАД. ИСТОРИИ ПРОФЕССОРА. КОП ПО ВОЙНЕ 2024, Juni
Anonim
Oversigt: Home Entertainment and Security System
Oversigt: Home Entertainment and Security System
Oversigt: Home Entertainment and Security System
Oversigt: Home Entertainment and Security System
Oversigt: Home Entertainment and Security System
Oversigt: Home Entertainment and Security System

Om ansøgningen

Dette IOT -system er et hjemmeunderholdnings- og sikkerhedssystem.

  1. Sikkerhed

    1. Tryk på RFID -kort, og input gemmes i Firebase.
    2. Hvis du har tilladelse, kan du gå ind fredeligt, og billedet tages og uploades til S3
    3. Hvis det er uautoriseret, kommer forsvarsafsnittet ind, og en LCD -skærm siger, at du ikke er autoriseret.
  2. Forsvar

    1. Tryk på knappen på instrumentbrættet.
    2. Lasertårne angriber i tilfældig burst og hastighed.
  3. Underholdning

    1. Hvis der registreres bevægelse, starter spillet.
    2. Efter at brugeren har spillet spillet, gemmes scoren i Firebase.
    3. LDR -værdier tages og udsendes på instrumentbrættet.

Denne applikation kan kontrolleres og kan ses via IBM Node-Red webserveren. Vi gør brug af AWS og IBM Cloud Services, og vi brugte Firebase som vores database.

Resumé af de trin, der vil blive beskrevet

  • Krav til hardware
  • Sikkerhed - Sådan opretter du et sikkerhedssystem, der bruger RFID -input og en billedgenkendelsessoftware
  • Forsvar - Sådan opretter du et lasertårn
  • Underholdning - Sådan opretter du et Simon -siger -spil
  • IOT App Watson på IBM Bluemix - Sådan integreres alle systemerne i et dashboard

Gå videre og få adgang til pdf -filen for en mere detaljeret forklaring på, hvordan du opretter dette projekt.

Trin 1: Krav til hardware

Dette er hvad du får brug for

  1. Sikkerhed

    • 1 Hindbær Pi
    • 1 LCD
    • 1 RFID -læser
    • 1 PiCam
    • 2 RFID -kort/knapper
    • X Kvinde -> Han -jumperkabler
  2. Forsvar

    • 1 Hindbær Pi
    • 2 10 ㏀ Modstand (til knapper)
    • 2 Micro Servo
    • 1 650nm lasersender modul
    • 2 Tryk på knappen
    • 1 summer
    • 3 små gummibånd/kabelbindere (til fastgørelse)
    • X Kvinde -> Han -jumperkabler
    • X Regelmæssige springkabler
    • 1 Transistor
    • 1 kondensator
  3. Underholdning

    • 1 Hindbær Pi
    • 3 1, modstand (til lysdioder)
    • 1 10㏀ modstand (til LDR)
    • 3 lysdioder (forskellige farver)
    • 3 knapper
    • 1 LDR
    • 1 LCD
    • 1 Pir -bevægelsessensor
    • X Kvinde -> Han -jumperkabler
    • X Regelmæssige springkabler

Trin 2: Sikkerhed

Sikkerhed
Sikkerhed
Sikkerhed
Sikkerhed
Sikkerhed
Sikkerhed

Oprettelse af sikkerhedssystemets hardware

Tilslut kredsløbene som vist i fritz -diagrammet

Oprettelse af sikkerhedssystemets software

  1. Konfigurer AWS ved at oprette en ting
  2. Installer AWS Python Library
  3. Installer LCD -bibliotek
  4. Installer RFID -bibliotek
  5. Opsætning af Firebase
  6. Opsætning af S3 -lagring
  7. Installer Boto på Raspberry Pi
  8. Installer AWS ClI på Raspberry Pi
  9. Opret AWS -legitimationsoplysninger
  10. Konfigurer AWS
  11. Upload security.py til RPi
  12. Upload imagerecognition.py til RPi

security.py er en kode, der vil læse rfid -input og registrere, om brugeren er en ubuden gæst eller ej. Hvis brugeren genkendes, tages et billede og uploades til s3. Koden publiceres også til et emne i aws MQTT

Trin 3: Forsvar

Forsvar
Forsvar
Forsvar
Forsvar
Forsvar
Forsvar

Oprettelse af lasertårnet Hardware

  1. Vi skaber lasertårnet ved hjælp af 2 servoer og 1 lasermodul
  2. Tilslut kredsløbene som vist i fritz -diagrammet

Oprettelse af lasertårnet Software

Koden herunder vil få lasertårnet til at skyde i tilfældige retninger, i tilfældige bursts og hastighed

laserturret.py

fra gpiozero import LED, summer, knap, servoimport tid fra signalimport pause import tilfældig

#led = LED (12)

#pir = MotionSensor (19, sample_rate = 5, queue_len = 1) buzzer_pin = summer (17) angreb = knap (5, pull_up = falsk) #reset = knap (6, pull_up = falsk) servo1 = Servo (18) servo2 = Servo (24)

def ledON ():

led.on () print ("LED er tændt") def ledOFF (): led.off () print ("LED er slukket")

def fire ():

print ("våben varmt") 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)

noter = {

'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 (frekvens, længde): #creat funktionen "buzz" og fodre den med tonehøjde og varighed)

hvis (frekvens == 0):

time.sleep (længde) returperiode = 1,0 / frekvens #frekvensforsinkelseValue = periode / 2 #beregn tiden for halvdelen af bølgen numCycles = int (længde * frekvens) #antal bølger = varighed x freq for i inden for rækkevidde (numCycles): #start en sløjfe fra 0 til variablen "cyklusser" beregnet over buzzer_pin.on () time.sleep (delayValue) buzzer_pin.off () time.sleep (delayValue)

def play (melodi, tempo, pause, tempo = 0.800):

for i inden for rækkevidde (0, len (melodi)): # Afspil sangnoteDuration = tempo/tempo buzz (melodi , noteDuration) # Skift frekvens langs sangnoten pauseBetweenNotes = noteDuration * pause tid. søvn (pauseBetweenNotes)

mens det er sandt:

laserturret () pause;

Trin 4: Underholdning

Underholdning
Underholdning
Underholdning
Underholdning
Underholdning
Underholdning

Oprettelse af underholdningshardware

Vi skaber Simon-siger-knapspil, som du skal følge mønsteret for lysdioderne, der lyser og trykke på de tilsvarende knapper. Det uploader scoringer og tidsstempel til Firebase NoSQL -databasen for yderligere brug i dashboards.

Tilslut kredsløbene som vist i Fritzing -diagrammet.

Oprettelse af underholdningssoftware

underholdning.py

import RPi. GPIO som GPIOimport threading import tid import tilfældig import os import tweepy fra rpi_lcd import LCD fra underproces import opkald fra tid import søvn fra datetime import datetime fra 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 ', Ingen) lcd = LCD () lcd.text (' God fornøjelse! ', 1) lcd.text (' Held og lykke! ', 2) søvn (1) # Rød, gul, grøn LYS = [40, 38, 36] BUTTONS = [37, 33, 35] NOTES = ["E3", "A4", "E4"] # værdier, du kan ændre, der påvirker spilhastighed = 0,5 # flag, der bruges til at signalere spil status is_displaying_pattern = Falsk er_won_curr ent_level = Falsk is_game_over = Falsk # game state 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. opsætning (BUTTONS, GPIO. IN, pull_up_down = GPIO. PUD_DOWN) for i inden for område (3): GPIO.add_event_detect (BUTTONS , GPIO. FALLING, verify_player_selection) def verify_player_selection (channel): global current_step_of_level, current_, current_ is_game_over hvis ikke is_displaying_pattern og ikke is_won_current_level og ikke 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> = current_ is_vel_ 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_ 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 = True GPIO. TSput: GPIO.output (LIGHTS [mønster , GPIO. HIGH) time.sleep (hastighed) GPIO.output (LIGHTS [mønster , GPIO. LOW) time.sleep (speed) is_displaying_pattern = Falsk def wait_for_player_to_repeat_pattern. GPIO.output (LIGHTS, GPIO. LOW) def send_data (score): lcd.text ('End of game', 1) lcd.text ('Vi ses snart!', 2) datestr = str (datetime. nu ()) mens True: print (datestr) print (score) data = {'Dato': datestr, 'Score': score} resultat = firebase.post ('/scores/', data) print (resultat) hvis score> 2: status = 'Nogen har scoret' +(str (score))+'on'+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 er"} farver!.format (current_level - 1)) sleep (2) print ("Tak fordi du spillede! / 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 (): prøv: os.system ('cls' if os.name == 'nt 'andet' klart ') print ("Start ny runde! / n") initialiser_gpio () start_game_monitor () endelig: GPIO.cleanup () hvis _name_ ==' _main_ ': main ()

Trin 5: IOT App Watson på IBM Bluemix [1. del]

Opsæt Blumix IoT Service

  1. Konfigurer en Gateway -enhedstype
  2. Opsæt en enhed

Udfør trin 1 og 2 3 gange. Én RPi er for en sektion (Sikkerhed/forsvar/underholdning)

Opsæt Node-Red

Kør node-rød

knude-rød start

  1. Gå til håndteringspaletten i hamburgermenuen (øverst til højre)
  2. Download følgende paller

    1. node-red-dashboard
    2. node-red-contrib-firebase
    3. node-red-contrib-ibm-watson-iot

Trin 6: Knude røde strømninger

Node røde flyder
Node røde flyder
Node røde flyder
Node røde flyder
Node røde strømninger
Node røde strømninger
Node røde flyder
Node røde flyder

Download filerne og eksporter til din knude-rød.

Sikkerhedsknude-rød

ingen

Forsvar Rpi Node-Red

laserturret.txt

Underholdning Rpi Node-Red

  • underholdning rpi flow.txt
  • ldr rpi flow.txt

IBM Bluemix Node-Red

Anbefalede: