Sisukord:

Ülevaade: kodune meelelahutus- ja turvasüsteem: 6 sammu
Ülevaade: kodune meelelahutus- ja turvasüsteem: 6 sammu

Video: Ülevaade: kodune meelelahutus- ja turvasüsteem: 6 sammu

Video: Ülevaade: kodune meelelahutus- ja turvasüsteem: 6 sammu
Video: Meri Zaat Zarra e Benishan - Full Song | HAR PAL GEO 2024, Juuni
Anonim
Ülevaade: kodune meelelahutus- ja turvasüsteem
Ülevaade: kodune meelelahutus- ja turvasüsteem
Ülevaade: kodune meelelahutus- ja turvasüsteem
Ülevaade: kodune meelelahutus- ja turvasüsteem
Ülevaade: kodune meelelahutus- ja turvasüsteem
Ülevaade: kodune meelelahutus- ja turvasüsteem

Teave rakenduse kohta

See IOT -süsteem on kodune meelelahutus- ja turvasüsteem.

  1. Turvalisus

    1. Puudutage valikut RFID -kaart ja sisend salvestatakse Firebase'i.
    2. Kui teil on luba, saate rahulikult siseneda ning pilt tehakse ja laaditakse üles S3 -sse
    3. Kui see on volitamata, siseneb kaitseala ja LCD -ekraan ütleb, et te pole volitatud.
  2. Kaitse

    1. Vajutage armatuurlaua nuppu.
    2. Laseritornid ründavad juhusliku plahvatuse ja kiirusega.
  3. Meelelahutus

    1. Kui tuvastatakse liikumine, algab mäng.
    2. Pärast seda, kui kasutaja on mängu mänginud, salvestatakse skoor Firebase'i.
    3. LDR väärtused võetakse ja väljastatakse armatuurlauale.

See rakendus on kontrollitav ja vaadatav IBM Node-Red veebiserveri kaudu. Kasutame AWS -i ja IBMi pilveteenuseid ning kasutasime andmebaasina Firebase'i.

Kirjeldatavate sammude kokkuvõte

  • Riistvara nõuded
  • Turvalisus - kuidas luua turvasüsteem, mis kasutab RFID -sisendit ja pildituvastustarkvara
  • Kaitse - kuidas luua laseritorn
  • Meelelahutus - kuidas luua Simon -ütleb mängu
  • IOT App Watson IBM Bluemixis - kuidas integreerida kõik süsteemid ühte armatuurlauale

Minge edasi ja avage pdf -fail, et saada üksikasjalikumat selgitust selle projekti loomise kohta.

Samm: riistvaranõue

Seda vajate

  1. Turvalisus

    • 1 Vaarika Pi
    • 1 LCD
    • 1 RFID -lugeja
    • 1 PiCam
    • 2 RFID -kaarti/nuppu
    • X Naissoost -> isased hüppajakaablid
  2. Kaitse

    • 1 Vaarika Pi
    • 2 10 ㏀ takisti (nuppude jaoks)
    • 2 Mikroservo
    • 1 650 nm laser -saatja moodul
    • 2 Vajutage nuppu
    • 1 helisignaal
    • 3 väikest kummipaela/kaablisidet (kinnitamiseks)
    • X Naissoost -> isased hüppajakaablid
    • X Tavalised hüppekaablid
    • 1 Transistor
    • 1 kondensaator
  3. Meelelahutused

    • 1 Vaarika Pi
    • 3 1 ㏀ Takisti (LED -ide jaoks)
    • 1 10㏀ takisti (LDR jaoks)
    • 3 LED -i (erinevad värvid)
    • 3 nuppu
    • 1 LDR
    • 1 LCD
    • 1 Pir liikumisandur
    • X Naissoost -> isased hüppajakaablid
    • X Tavalised hüppekaablid

2. samm: turvalisus

Turvalisus
Turvalisus
Turvalisus
Turvalisus
Turvalisus
Turvalisus

Turvasüsteemi riistvara loomine

Ühendage vooluahelad, nagu on näidatud praadimisskeemil

Turvasüsteemi tarkvara loomine

  1. Seadistage AWS asja loomisega
  2. Installige AWS Pythoni teek
  3. Installige LCD -raamatukogu
  4. Installige RFID -kogu
  5. Firebase'i seadistamine
  6. Seadistage S3 salvestusruum
  7. Installige Boto Raspberry Pi -le
  8. Installige AWS ClI Raspberry Pi -le
  9. Looge AWS -i mandaat
  10. AWS -i seadistamine
  11. Laadige failile security.py RPi alla
  12. Laadige üles imagerecognition.py RPi -sse

security.py on kood, mis loeb RFID -sisendid ja tuvastab, kas kasutaja on sissetungija või mitte. Kui kasutaja tuvastatakse, tehakse pilt ja laaditakse see üles s3 -sse. Kood avaldab ka teema aws MQTT -s

3. samm: kaitsmine

Kaitse
Kaitse
Kaitse
Kaitse
Kaitse
Kaitse

Laseritorni riistvara loomine

  1. Loome laseritorni, kasutades 2 servot ja 1 lasermoodulit
  2. Ühendage vooluahelad, nagu on näidatud praadimisskeemil

Laseritorni tarkvara loomine

Allolev kood paneb lasertorni tulistama juhuslikes suundades, juhuslike pursete ja kiirusega

laserturret.py

gpiozero impordi LED, sumin, nupp, servoimportimise aeg signaali importimise pausi import juhuslik

#led = LED (12)

#pir = MotionSensor (19, sample_rate = 5, queue_len = 1) buzzer_pin = summeri (17) rünnak = nupp (5, pull_up = False) #reset = Button (6, pull_up = False) servo1 = Servo (18) servo2 = Servo (24)

def ledON ():

led.on () print ("LED põleb") def ledOFF (): led.off () print ("LED ei põle")

tulekahju ():

print ("relvad kuumad") buzzer_pin.on () time.sleep (0,1) buzzer_pin.off ()

def laserturret ():

timeBetweenBurrst = juhuslik.ühtlane (0,2, 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 = [timeBetweenBurrst, timeBetweenShots, servo1.value, servo2.value, numShots] print (detail) võtte ajal <numshots: shot+= "1" servo1.value = "servo1start" servo2.value = "servo2start" servo1start = "servo1change" servo2start = "servo2change" fire () = "" time.sleep (timebetweenshots) = "" time.sleep (timebetweenburst)

märkmed = {

"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 (sagedus, pikkus): #looge funktsioon "buzz" ja sisestage sellele samm ja kestus)

kui (sagedus == 0):

time.sleep (pikkus) tagasipöördumisperiood = 1,0 / sagedus #sageduse viivitusVäärtus = periood / 2 #arvesta aeg pooleks laineks numCycles = int (pikkus * sagedus) #lainete arv = kestus x sagedus i vahemikus (numCycles): #käivitage tsükkel 0 -st muutuja "tsükliteni", mis on arvutatud ülalpool buzzer_pin.on () time.sleep (delayValue) buzzer_pin.off () time.sleep (delayValue)

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

i jaoks vahemikus (0, len (meloodia)): # Esita laulu noteDuration = tempo/tempo buzz (meloodia , noteDuration) # Muuda sagedust laulumärkides pauseBetweenNotes = noteDuration * pause time.sleep (pauseBetweenNotes)

kuigi tõsi:

laserturret () paus;

4. samm: meelelahutus

Meelelahutus
Meelelahutus
Meelelahutus
Meelelahutus
Meelelahutus
Meelelahutus

Meelelahutuse loomine Riistvara

Loome nupumängu Simon-sanoo, mis peab järgima süttivate LED-ide mustrit ja vajutama vastavaid nuppe. See laadib hinded ja ajatempli Firebase NoSQL andmebaasi, et neid juhtpaneelidel edasi kasutada.

Ühendage vooluringid, nagu on näidatud Fritzingu diagrammil.

Meelelahutustarkvara loomine

meelelahutus.py

import RPi. GPIO nagu GPIOimport väliskeermestamiseks import ajal import juhuslik import os import tweepy alates rpi_lcd import LCD alates alamprotsessi import kõne ajal import une datetime import datetime alates 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 ', Puudub) lcd = LCD () lcd.text (' Have fun! ', 1) lcd.text (' Palju õnne! ', 2) uni (1) # Punane, kollane, roheline LIGHTS = [40, 38, 36] NUPPID = [37, 33, 35] MÄRKUSED = ["E3", "A4", "E4"] # väärtust, mida saate muuta, mis mõjutavad mängu kiirust = 0,5 # mängu tähistamiseks kasutatavat lippu staatus is_displaying_pattern = Vale on_võit ent_level = False is_game_over = Vale # mängu olek 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. seadistus (BUTTONS, GPIO. IN, pull_up_down = GPIO. PUD_DOWN) i jaoks vahemikus (3): GPIO.add_event_detect (BUTTONS , GPIO. FALLING, ellenőriz_player_selection) def correct_player_selection (kanal): globaalne praegune_astmes_tase, tase 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_lever = true> flash_led_for_button (nupu_kanal): 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_wonvelcurrent 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 (): globaalne is_displaying_pattern is_displaying_pattern = üldine GPIOL -i väljund (GPIO): GPIO.output (LIGHTS [muster , GPIO. HIGH) time.sleep (kiirus) GPIO.output (LIGHTS [muster , GPIO. LOW) time.sleep (kiirus) is_displaying_pattern = Vale def wait_for_player_to_repeat_pattern (): kuigi pole isovõitu_voolutase ja ei ole_mänguülekanne: aeg.maganud (0,1) def reset_board_for_new_game (): globaalne is_displaying_pattern, is_won_current_level, is_game_over_ve_leve = praegune_tüüp = praegune GPIO.output (LIGHTS, GPIO. LOW) def send_data (skoor): lcd.text ('Mängu lõpp', 1) lcd.text ('Kohtumiseni!', 2) datestr = str (datetime. nüüd ()) samas Tõsi: print (datestr) print (score) data = {'Date': datestr, 'Score': score} result = firebase.post ('/score/', data) print (result) if score> 2: status = 'Keegi on skoorinud' +(str (skoor))+'on'+datestr+'!' api.update_status (olek = olek) break def start_game (): samas 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").format (current_level - 1)) sleep (2) print ("Täname mängimise eest! / n") lcd.text ('', 1) lcd.text ('', 2) break time.sleep (2) def start_game_monitor (): t = keermestamine. Lõng (target = start_game) t.daemon = True t.start () t.join () def main (): try: os.system ('cls' if os.name == 'nt 'else' clear ') print ("Alusta uut ringi! / n") initialize_gpio () start_game_monitor () lõpuks: GPIO.cleanup () if _name_ ==' _main_ ': main ()

Samm: IOT App Watson IBM Bluemixis [esimene osa]

Seadistage Blumix IoT Service

  1. Seadistage lüüsi seadme tüüp
  2. Seadistage seade

Tehke samme 1 ja 2 3 korda. Üks RPi on ühe sektsiooni jaoks (turvalisus/kaitse/meelelahutus)

Seadistage punane sõlm

Käivita sõlm-punane

sõlm-punane algus

  1. Avage hamburgeri menüü palett (paremal üleval)
  2. Laadige alla järgmised paletid

    1. sõlm-punane-armatuurlaud
    2. node-red-contrib-firebase
    3. node-red-contrib-ibm-watson-iot

6. samm: sõlmed punased

Sõlm punane voolab
Sõlm punane voolab
Sõlm punane voolab
Sõlm punane voolab
Sõlm punane voolab
Sõlm punane voolab
Sõlm punane voolab
Sõlm punane voolab

Laadige failid alla ja eksportige oma punasesse sõlme.

Turvasõlm-punane

mitte ühtegi

Kaitse Rpi Sõlm-Punane

laserturret.txt

Meelelahutus Rpi Node-Red

  • meelelahutus rpi flow.txt
  • ldr rpi flow.txt

IBM Bluemix Node-Red

Soovitan: