INHOUDSOPGAWE:

Oorsig: Huisvermaak en sekuriteitstelsel: 6 stappe
Oorsig: Huisvermaak en sekuriteitstelsel: 6 stappe

Video: Oorsig: Huisvermaak en sekuriteitstelsel: 6 stappe

Video: Oorsig: Huisvermaak en sekuriteitstelsel: 6 stappe
Video: Gr 12 Mod 2.2 Die Gevare van Rekenaarmisdaad 2024, Junie
Anonim
Oorsig: Huisvermaak en sekuriteitstelsel
Oorsig: Huisvermaak en sekuriteitstelsel
Oorsig: Huisvermaak en sekuriteitstelsel
Oorsig: Huisvermaak en sekuriteitstelsel
Oorsig: Huisvermaak en sekuriteitstelsel
Oorsig: Huisvermaak en sekuriteitstelsel

Oor die aansoek

Hierdie IOT -stelsel is 'n tuisvermaak- en sekuriteitstelsel.

  1. Sekuriteit

    1. Tik op RFID -kaart en invoer word in Firebase gestoor.
    2. As u gemagtig is, kan u vreedsaam ingaan en die foto word geneem en na S3 gelaai
    3. As dit ongemagtig is, kom die verdedigingsafdeling en 'n LCD -skerm sal sê dat u nie gemagtig is nie.
  2. Verdediging

    1. Druk die knoppie op die paneelbord.
    2. Lasertorings val in willekeurige sarsies en spoed aan.
  3. Vermaak

    1. As beweging opgespoor word, begin die spel.
    2. Nadat die gebruiker die spel gespeel het, word die telling in Firebase gestoor.
    3. LDR -waardes word geneem en op die paneelbord weergegee.

Hierdie toepassing is beheerbaar en sigbaar via die IBM Node-Red-webbediener. Ons maak gebruik van AWS en IBM Cloud Services en ons gebruik Firebase as ons databasis.

Opsomming van die stappe wat beskryf sal word

  • Hardewarevereistes
  • Beveiliging - Hoe om 'n sekuriteitstelsel te skep wat RFID -invoer en sagteware vir beeldherkenning gebruik
  • Verdediging - Hoe om 'n lasertoring te maak
  • Vermaak - Hoe om 'n Simon -sê -speletjie te skep
  • IOT App Watson op IBM Bluemix - Hoe om al die stelsels in een paneelbord te integreer

Gaan na die pdf -lêer vir 'n meer gedetailleerde verduideliking van hoe u hierdie projek kan skep.

Stap 1: Hardewarevereiste

Dit is wat u nodig het

  1. Sekuriteit

    • 1 Framboos Pi
    • 1 LCD
    • 1 RFID -leser
    • 1 PiCam
    • 2 RFID -kaarte/knoppies
    • X Female -> Manlike jumper kabels
  2. Verdediging

    • 1 Framboos Pi
    • 2 10 ㏀ Weerstand (vir knoppies)
    • 2 Mikro Servo
    • 1 650nm lasersender module
    • 2 Drukknoppie
    • 1 Gonser
    • 3 klein rubberbande/kabelbinders (vir bevestiging)
    • X Female -> Manlike jumper kabels
    • X Gereelde springkabels
    • 1 Transistor
    • 1 Kondensator
  3. Vermaak

    • 1 Framboos Pi
    • 3 1, Weerstand (vir LED's)
    • 1 10㏀ Weerstand (vir LDR)
    • 3 LED's (verskillende kleure)
    • 3 knoppies
    • 1 LDR
    • 1 LCD
    • 1 Pir Bewegingsensor
    • X Female -> Manlike jumper kabels
    • X Gereelde springkabels

Stap 2: Sekuriteit

Sekuriteit
Sekuriteit
Sekuriteit
Sekuriteit
Sekuriteit
Sekuriteit

Skep die hardeware van die sekuriteitstelsel

Verbind die stroombane soos in die ritsdiagram getoon

Skep die sagteware vir die sekuriteitstelsel

  1. Stel AWS op deur 'n ding te skep
  2. Installeer AWS Python Library
  3. Installeer LCD -biblioteek
  4. Installeer RFID -biblioteek
  5. Stel Firebase op
  6. Stel S3 -berging op
  7. Installeer Boto op Raspberry Pi
  8. Installeer AWS ClI op Raspberry Pi
  9. Skep AWS -geloofsbriewe
  10. Stel AWS op
  11. Laai security.py op na RPi
  12. Laai imagerecognition.py op na RPi

security.py is 'n kode wat rfid -insette sal lees en kan vasstel of die gebruiker 'n indringer is of nie. As die gebruiker herken word, word 'n prent geneem en na s3 gelaai. Die kode publiseer ook 'n onderwerp in aws MQTT

Stap 3: Verdediging

Verdediging
Verdediging
Verdediging
Verdediging
Verdediging
Verdediging

Die skepping van die lasertoring -hardeware

  1. Ons maak die lasertoring met behulp van 2 servo's en 1 lasermodule
  2. Verbind die stroombane soos in die ritsdiagram getoon

Die skep van die lasertoringsagteware

Die onderstaande kode laat die lasertoring in ewekansige rigtings skiet, in willekeurige sarsies en spoed

laserturret.py

vanaf gpiozero invoer LED, gonser, knoppie, servo invoer tyd vanaf sein invoer onderbreek invoer ewekansig

#led = LED (12)

#pir = MotionSensor (19, sample_rate = 5, queue_len = 1) buzzer_pin = Gonser (17) aanval = Button (5, pull_up = False) #reset = Button (6, pull_up = False) servo1 = Servo (18) servo2 = Servo (24)

def ledON ():

led.on () print ("LED is aan") def ledOFF (): led.off () print ("LED is af")

def fire ():

druk ("wapens warm") 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)

notas = {

'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 (frekwensie, lengte): #skep die funksie "buzz" en voer dit die toonhoogte en duur)

as (frekwensie == 0):

time.sleep (lengte) terugkeerperiode = 1.0 / frekwensie #frequency delayValue = period / 2 #bereken die tyd vir die helfte van die golf numCycles = int (lengte * frekwensie) #aantal golwe = duur x frekwensie vir i in reeks): #begin 'n lus van 0 na die veranderlike 'siklusse' wat bo buzzer_pin.on () time.sleep (delayValue) buzzer_pin.off () time.sleep (delayValue) bereken word

def play (melodie, tempo, pouse, tempo = 0.800):

vir i in reeks (0, len (melodie)): # Speel liedjie nootDuur = tempo/tempo buzz (melodie , nootduur) # Verander die frekwensie langs die liedjie noot pauseBetweenNotes = noteDuration * pause time.sleep (pauseBetweenNotes)

terwyl dit waar is:

laserturret () breek;

Stap 4: Vermaak

Vermaak
Vermaak
Vermaak
Vermaak
Vermaak
Vermaak

Die skep van die vermaaklikheidshardeware

Ons skep die Simon-sê-knoppiespel, wat u volgens die patroon van die LED's moet volg en op die ooreenstemmende knoppies druk. Dit laai tellings en tydstempel op in die Firebase NoSQL -databasis vir verdere gebruik in die dashboards.

Verbind die stroombane soos aangedui in die Fritzing -diagram.

Die skep van die vermaaklikheidsprogrammatuur

vermaak.py

invoer RPi. GPIO as GPIOimport threading invoer tyd invoer ewekansige invoer os invoer tweepy van rpi_lcd invoer LCD uit subprocess invoer oproep van tyd invoer slaap uit DATETIME invoer DATETIME van firebase invoer 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 ', Geen) lcd = LCD () lcd.text (' Geniet dit! ', 1) lcd.text (' Sterkte! ', 2) slaap (1) # Rooi, geel, groen LIGTE = [40, 38, 36] BUTTONS = [37, 33, 35] NOTAS = ["E3", "A4", "E4"] # waardes wat u kan verander wat die spelsnelheid beïnvloed = 0.5 # vlae wat gebruik word om speletjies aan te dui status is_displaying_pattern = Onwaar is_won_curr ent_level = False is_game_over = Onwaar # 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. opstelling (BUTTONS, GPIO. IN, pull_up_down = GPIO. PUD_DOWN) vir i in reeks (3): GPIO.add_event_detect (BUTTONS , GPIO. FALLING, verify_player_selection) def verify_player_selection (channel): global current_step_of_level, current_vel_, current_ is_game_over indien nie_displaying_patroon en is_won_current_level nie en is_game_over nie: flash_led_for_button (kanaal) as channel == BUTTONS [patroon [current_step_of_level]: current_step_of_level += 1 as 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 = Valse 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 (LIG) in: GPIO.output (LIGHTS [patroon , GPIO. HIGH) time.sleep (speed) GPIO.output (LIGHTS [patroon , GPIO. LOW) time.sleep (speed) is_displaying_pattern = Valse def wait_for_player_to_repeat_pattern (): hoewel nie is_won_current_level en nie is_game_over: time.sleep (0.1) def reset_board_for_new_game (): global is_displaying_pattern, is_won_current_level, is_game_over global current_level, current_step_of_level, pattern is_displaying_pattern = false_patroon_val_verloop_patroon_val_stroom_patroon_val_stroom_patroon_val_stroom_patroon_val_stroom GPIO.output (LIGHTS, GPIO. LOW) def send_data (telling): lcd.text ('Einde van die spel', 1) lcd.text ('Sien jou binnekort!', 2) datestr = str (datetime. nou ()) terwyl True: print (datestr) print (score) data = {'Date': datestr, 'Score': score} result = firebase.post ('/scores/', data) print (resultaat) as telling> 2: status = 'Iemand het behaal' +(str (telling))+'op'+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! n score is {} colors!.format (current_level - 1)) sleep (2) print ("Dankie dat u gespeel het! / 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 (): probeer: os.system ('cls' as os.name == 'nt 'anders' duidelik ') druk ("Begin nuwe rondte! / n") initialiseer_gpio () start_game_monitor () uiteindelik: GPIO.cleanup () as _name_ ==' _main_ ': main ()

Stap 5: IOT App Watson op IBM Bluemix [Deel een]

Stel Blumix IoT -diens op

  1. Stel 'n Gateway -toesteltipe op
  2. Stel 'n toestel op

Doen stappe 1 en 2 3 keer. Een RPi is vir een afdeling (sekuriteit/verdediging/vermaak)

Stel Node-Red op

Begin knooprooi

knooppunt-rooi begin

  1. Gaan na die palet in die hamburger -spyskaart (regs bo)
  2. Laai die volgende palletjies af

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

Stap 6: Knooprooi vloei

Node Rooi vloei
Node Rooi vloei
Node Rooi vloei
Node Rooi vloei
Node Rooi vloei
Node Rooi vloei
Node Rooi vloei
Node Rooi vloei

Laai die lêers af en voer dit uit na u node-rooi.

Sekuriteitsknooppunt-rooi

niks nie

Verdediging Rpi Node-Red

laserturret.txt

Vermaak Rpi Node-Red

  • vermaak rpi flow.txt
  • ldr rpi flow.txt

IBM Bluemix Node-Red

Aanbeveel: