Innehållsförteckning:

Översikt: Hemunderhållning och säkerhetssystem: 6 steg
Översikt: Hemunderhållning och säkerhetssystem: 6 steg

Video: Översikt: Hemunderhållning och säkerhetssystem: 6 steg

Video: Översikt: Hemunderhållning och säkerhetssystem: 6 steg
Video: Nya ledtrådar | ep08 - Hitta hem säsong 1 2024, November
Anonim
Översikt: Hemunderhållning och säkerhetssystem
Översikt: Hemunderhållning och säkerhetssystem
Översikt: Hemunderhållning och säkerhetssystem
Översikt: Hemunderhållning och säkerhetssystem
Översikt: Hemunderhållning och säkerhetssystem
Översikt: Hemunderhållning och säkerhetssystem

Om ansökan

Detta IOT -system är ett hemunderhållnings- och säkerhetssystem.

  1. säkerhet

    1. Tryck på RFID -kort och inmatningen sparas i Firebase.
    2. Om du är behörig kan du gå in fredligt och bilden tas och laddas upp till S3
    3. Om det är obehörigt kommer försvarsavdelningen in och en LCD -skärm säger att du inte är auktoriserad.
  2. Försvar

    1. Tryck på knappen på instrumentpanelen.
    2. Lasertorn kommer att attackera i slumpmässig burst och hastighet.
  3. Underhållning

    1. Om rörelse upptäcks startar spelet.
    2. Efter att användaren har spelat spelet sparas poängen i Firebase.
    3. LDR -värden tas och matas ut på instrumentpanelen.

Denna applikation kan kontrolleras och visas via IBM Node-Red-webbservern. Vi använder AWS och IBM Cloud Services och vi använde Firebase som vår databas.

Sammanfattning av stegen som kommer att beskrivas

  • Hårdvarukrav
  • Säkerhet - Hur man skapar ett säkerhetssystem som använder RFID -ingång och ett program för bildigenkänning
  • Försvar - Hur man skapar ett lasertorn
  • Underhållning - Hur man skapar ett Simon -säger -spel
  • IOT App Watson på IBM Bluemix - Hur man integrerar alla system i en instrumentpanel

Gå vidare och öppna pdf -filen för en mer detaljerad förklaring om hur du skapar detta projekt.

Steg 1: Hårdvarukrav

Detta är vad du behöver

  1. säkerhet

    • 1 hallon Pi
    • 1 LCD
    • 1 RFID -läsare
    • 1 PiCam
    • 2 RFID -kort/knappar
    • X Kvinna -> Manliga bygelkablar
  2. Försvar

    • 1 hallon Pi
    • 2 10 ㏀ Motstånd (för knappar)
    • 2 Micro Servo
    • 1 650nm lasersändarmodul
    • 2 Tryckknapp
    • 1 summer
    • 3 små gummiband/kabelband (för fixering)
    • X Kvinna -> Manliga bygelkablar
    • X Vanliga hoppkablar
    • 1 Transistor
    • 1 kondensator
  3. Nöjen

    • 1 hallon Pi
    • 3 1, motstånd (för lysdioder)
    • 1 10㏀ motstånd (för LDR)
    • 3 lysdioder (olika färger)
    • 3 knappar
    • 1 LDR
    • 1 LCD
    • 1 Pir -rörelsessensor
    • X hona -> hankablar
    • X Vanliga hoppkablar

Steg 2: Säkerhet

säkerhet
säkerhet
säkerhet
säkerhet
säkerhet
säkerhet

Skapa säkerhetssystemets hårdvara

Anslut kretsarna som visas i fritzdiagrammet

Skapa säkerhetssystemets programvara

  1. Konfigurera AWS genom att skapa en sak
  2. Installera AWS Python Library
  3. Installera LCD -bibliotek
  4. Installera RFID -bibliotek
  5. Konfigurera Firebase
  6. Konfigurera S3 -lagring
  7. Installera Boto på Raspberry Pi
  8. Installera AWS ClI på Raspberry Pi
  9. Skapa AWS -referenser
  10. Konfigurera AWS
  11. Ladda upp security.py till RPi
  12. Ladda upp imagerecognition.py till RPi

security.py är en kod som läser rfid -ingångar och upptäcker om användaren är en inkräktare eller inte. Om användaren känns igen tas en bild och laddas upp till s3. Koden publiceras också för ett ämne i aws MQTT

Steg 3: Försvar

Försvar
Försvar
Försvar
Försvar
Försvar
Försvar

Skapar lasertornets hårdvara

  1. Vi skapar laserturnén med hjälp av 2 servon och 1 lasermodul
  2. Anslut kretsarna som visas i fritzdiagrammet

Skapar lasertårnet Programvara

Koden nedan gör att lasertornet skjuter i slumpmässiga riktningar, i slumpmässiga skurar och hastighet

laserturret.py

från gpiozero import LED, summer, knapp, servoimporttid från signalimport paus import slumpmässig

#led = LED (12)

#pir = MotionSensor (19, sample_rate = 5, queue_len = 1) buzzer_pin = Summer (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 is on") def ledOFF (): led.off () print ("LED is off")

def fire ():

print ("vapen heta") 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), 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)

anteckningar = {

'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ängd): #create funktionen "buzz" och mata det tonhöjd och varaktighet)

om (frekvens == 0):

time.sleep (längd) returperiod = 1,0 / frekvens #frequency delayValue = period / 2 #calculate the time for half of the wave numCycles = int (length * frequency) #number of waves = duratime x freq for i in range (numCycles): #start en slinga från 0 till variabeln "cykler" beräknat ovanför summern_pin.on () time.sleep (delayValue) buzzer_pin.off () time.sleep (delayValue)

def play (melodi, tempo, paus, tempo = 0,800):

för i inom intervallet (0, len (melodi)): # Spela upp song noteDuration = tempo/tempo buzz (melodi , noteDuration) # Ändra frekvensen längs låtnotpausenBetweenNotes = noteDuration * paustid. sov (pauseBetweenNotes)

medan det är sant:

laserturret () paus;

Steg 4: Underhållning

Underhållning
Underhållning
Underhållning
Underhållning
Underhållning
Underhållning

Skapa underhållningshårdvaran

Vi skapar knapparna Simon-säger, som du måste följa mönstret för lysdioderna som lyser upp och trycka på motsvarande knappar. Den laddar upp poäng och tidsstämpel till brandbasen NoSQL -databasen för vidare användning i instrumentbrädorna.

Anslut kretsarna som visas i Fritzing -diagrammet.

Skapa underhållningsprogramvaran

underhållning.py

import RPi. GPIO som GPIOimport gäng import Import vid slumpimport os import tweepy från rpi_lcd import LCD från delprocessen import samtal från tid import sömn från datetime importdatetime från 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 (' Have fun! ', 1) lcd.text (' Good Luck! ', 2) sleep (1) # Red, Yellow, Green LIGHTS = [40, 38, 36] BUTTONS = [37, 33, 35] NOTES = ["E3", "A4", "E4"] # värden du kan ändra som påverkar spelhastigheten = 0,5 # flaggor som används för att signalera spel status is_displaying_pattern = Falskt är_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, initial = GPIO. LOW) GPIO. setup (BUTTONS, GPIO. IN, pull_up_down = GPIO. PUD_DOWN) för i inom intervall (3): GPIO.add_event_detect (BUTTONS , GPIO. FALLING, verify_player_selection) def verify_player_selection (channel): global current_step_of_level, current_velvel, current_ is_game_over om inte is_displaying_pattern och inte is_won_current_level och inte 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_ = current_store_stor_intern_stor flash_led_for_button (button_channel): led = LIGHT [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_ byracka 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. TSp (in) L: GPIO.output (LIGHTS [pattern , GPIO. HIGH) time.sleep (speed) GPIO.output (LIGHTS [pattern , GPIO. LOW) time.sleep (speed) is_displaying_pattern = False def wait_for_player_to_repeat_pattern. GPIO.output (LIGHTS, GPIO. LOW) def send_data (poäng): lcd.text ('Slut på spelet', 1) lcd.text ('Vi ses snart!', 2) datestr = str (datetime. nu ()) medan True: print (datestr) print (score) data = {'Date': datestr, 'Score': score} resultat = firebase.post ('/scores/', data) print (resultat) om poäng> 2: status = 'Någon har gjort' +(str (poäng))+'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! poäng är"} färger!.format (current_level - 1)) sleep (2) print ("Tack för att du spelade! / 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 (): try: os.system ('cls' if os.name == 'nt 'annat' klart ') tryck ("Börja ny omgång! / n") initialisera_gpio () start_spel_monitor () slutligen: GPIO.cleanup () om _name_ ==' _main_ ': main ()

Steg 5: IOT App Watson på IBM Bluemix [del ett]

Konfigurera Blumix IoT -tjänst

  1. Konfigurera en Gateway -enhetstyp
  2. Konfigurera en enhet

Utför steg 1 och 2 tre gånger. En RPi är för en sektion (säkerhet/försvar/underhållning)

Ställ in Node-Red

Kör nod-rött

nodröd start

  1. Gå till hanteringspaletten i hamburgermenyn (högst upp till höger)
  2. Ladda ner följande pallar

    1. nod-röd-instrumentpanel
    2. node-red-contrib-firebase
    3. nod-röd-bidrag-ibm-watson-iot

Steg 6: Röd nodflöde

Node röda flöden
Node röda flöden
Node röda flöden
Node röda flöden
Node röda flöden
Node röda flöden
Node röda flöden
Node röda flöden

Ladda ner filerna och exportera till din nod-röda.

Säkerhetsnod-röd

ingen

Försvar Rpi Node-Red

laserturret.txt

Underhållning Rpi Node-Red

  • underhållning rpi flow.txt
  • ldr rpi flow.txt

IBM Bluemix Node-Red

Rekommenderad: