Satura rādītājs:

Pārskats: Mājas izklaides un drošības sistēma: 6 soļi
Pārskats: Mājas izklaides un drošības sistēma: 6 soļi

Video: Pārskats: Mājas izklaides un drošības sistēma: 6 soļi

Video: Pārskats: Mājas izklaides un drošības sistēma: 6 soļi
Video: ПЛЮСЫ ЖИЗНИ В ЯПОНИИ спустя 12 лет жизни тут! 2024, Jūnijs
Anonim
Pārskats: Mājas izklaides un drošības sistēma
Pārskats: Mājas izklaides un drošības sistēma
Pārskats: Mājas izklaides un drošības sistēma
Pārskats: Mājas izklaides un drošības sistēma
Pārskats: Mājas izklaides un drošības sistēma
Pārskats: Mājas izklaides un drošības sistēma

Par pieteikumu

Šī IOT sistēma ir mājas izklaides un drošības sistēma.

  1. Drošība
    1. Pieskarieties RFID kartei un ievadītā informācija tiek saglabāta Firebase.
    2. Ja ir atļauts, varat mierīgi ieiet, un attēls tiek uzņemts un augšupielādēts S3
    3. Ja tas nav atļauts, tiek parādīta aizsardzības sadaļa, un LCD ekrānā būs redzams, ka neesat pilnvarots.
  2. Aizsardzība
    1. Nospiediet pogu uz paneļa.
    2. Lāzera torņi uzbruks nejaušā sprādzienā un ātrumā.
  3. Izklaide

    1. Ja tiek konstatēta kustība, spēle sāksies.
    2. Pēc tam, kad lietotājs ir spēlējis spēli, rezultāts tiek saglabāts Firebase.
    3. LDR vērtības tiks ņemtas un parādītas informācijas panelī.

Šo lietojumprogrammu var kontrolēt un apskatīt, izmantojot IBM Node-Red tīmekļa serveri. Mēs izmantojam AWS un IBM mākoņpakalpojumus, un kā datu bāzi izmantojām Firebase.

Apkopoto darbību kopsavilkums

  • Prasības aparatūrai
  • Drošība - kā izveidot drošības sistēmu, kas izmanto RFID ievadi un attēlu atpazīšanas programmatūru
  • Aizsardzība - kā izveidot lāzera torni
  • Izklaide - kā izveidot Simona saka spēli
  • IOT lietotne Watson uz IBM Bluemix - kā integrēt visas sistēmas vienā informācijas panelī

Dodieties uz priekšu un piekļūstiet pdf failam, lai iegūtu sīkāku skaidrojumu par šī projekta izveidi.

1. darbība. Aparatūras prasības

Tas jums būs vajadzīgs

  1. Drošība
    • 1 Raspberry Pi
    • 1 LCD
    • 1 RFID lasītājs
    • 1 PiCam
    • 2 RFID kartes/pogas
    • X Female -> Vīriešu džemperu kabeļi
  2. Aizsardzība
    • 1 Raspberry Pi
    • 2 10 ㏀ Rezistors (pogām)
    • 2 Mikro servo
    • 1 650 nm lāzera raidītāja modulis
    • 2 Nospiediet pogu
    • 1 skaņas signāls
    • 3 mazas gumijas lentes/kabeļu saites (fiksēšanai)
    • X Female -> Vīriešu džemperu kabeļi
    • X parastie lēcienu kabeļi
    • 1 tranzistors
    • 1 kondensators
  3. Izklaide

    • 1 Raspberry Pi
    • 3 1 ㏀ Rezistors (gaismas diodēm)
    • 1 10㏀ rezistors (LDR)
    • 3 gaismas diodes (dažādas krāsas)
    • 3 pogas
    • 1 LDR
    • 1 LCD
    • 1 Pir kustības sensors
    • X Female -> Vīriešu džemperu kabeļi
    • X parastie lēcienu kabeļi

2. darbība. Drošība

Drošība
Drošība
Drošība
Drošība
Drošība
Drošība

Drošības sistēmas aparatūras izveide

Pievienojiet ķēdes, kā parādīts fritēšanas diagrammā

Drošības sistēmas programmatūras izveide

  1. Konfigurējiet AWS, izveidojot lietu
  2. Instalējiet AWS Python bibliotēku
  3. Instalējiet LCD bibliotēku
  4. Instalējiet RFID bibliotēku
  5. Iestatiet Firebase
  6. Iestatiet S3 krātuvi
  7. Instalējiet Boto vietnē Raspberry Pi
  8. Instalējiet AWS ClI Raspberry Pi
  9. Izveidojiet AWS akreditācijas datus
  10. Konfigurējiet AWS
  11. Augšupielādējiet security.py uz RPi
  12. Augšupielādējiet imagerecognition.py RPi

security.py ir kods, kas nolasa RFID ievadi un nosaka, vai lietotājs ir iebrucējs vai nē. Ja lietotājs tiek atpazīts, attēls tiks uzņemts un augšupielādēts s3. Kods tiek publicēts arī tēmā aws MQTT

3. solis: Aizsardzība

Aizsardzība
Aizsardzība
Aizsardzība
Aizsardzība
Aizsardzība
Aizsardzība

Lāzera torņa aparatūras izveide

  1. Mēs izveidojam lāzera tornīti, izmantojot 2 servo un 1 lāzera moduli
  2. Pievienojiet ķēdes, kā parādīts fritēšanas diagrammā

Lāzera torņa programmatūras izveide

Tālāk esošais kods lāzeru tornim liks šaut nejaušos virzienos, nejaušos pārrāvumos un ātrumā

laserturret.py

no gpiozero importēšanas gaismas diodes, skaņas signāls, poga, servoimporta laiks no signāla importēšanas pauzes importēšanas nejaušība

#led = LED (12)

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

def ledON ():

led.on () print ("LED ir ieslēgts") def ledOFF (): led.off () print ("LED ir izslēgts")

ugunsgrēks ():

drukāt ("karsti ieroči") buzzer_pin.on () time.sleep (0,1) buzzer_pin.off ()

def laserturret ():

timeBetweenBurrst = 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 = servo2sākšanas laiks.sleep (0,1) shot = 0 detaļa = [timeBetweenBurrst, timeBetweenShots, servo1.value, servo2.value, numShots] drukāt (detalizēti), kamēr tiek uzņemts <numshots: shot+= "1" servo1.value = "servo1start" servo2.value = "servo2start" servo1start = "servo1change" servo2start = "servo2change" fire () = "" time.sleep (timebetweenshots) = "" time.sleep (timebetweenburst)

piezīmes = {

“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 (biežums, garums): #izveidojiet funkciju "buzz" un ievadiet tai piķi un ilgumu)

ja (biežums == 0):

time.sleep (ilgums) atgriešanās periods = 1,0 / frekvence #frekvences aiztureVērtība = periods / 2 #aprēķiniet laiku pusei viļņa numCycles = int (garums * frekvence) #viļņu skaits = ilgums x biežums i diapazonā (numCycles): #start ciklu no 0 līdz mainīgajam "cikliem", kas aprēķināts virs buzzer_pin.on () time.sleep (delayValue) buzzer_pin.off () time.sleep (delayValue)

def play (melodija, temps, pauze, temps = 0,800):

i diapazonā (0, len (melodija)): # Atskaņot dziesmu noteDuration = temps/temps buzz (melodija , noteDuration) # Mainiet frekvenci dziesmas piezīmē pauseBetweenNotes = noteDuration * pause time.sleep (pauseBetweenNotes)

kamēr taisnība:

laserturret () pārtraukums;

4. solis: izklaide

Izklaide
Izklaide
Izklaide
Izklaide
Izklaide
Izklaide

Izklaides aparatūras izveide

Mēs izveidojam pogu Simona saka poga, kurai ir jāievēro iedegas gaismas diodes un jānospiež atbilstošās pogas. Tā augšupielādē punktus un laika zīmogu firebase NoSQL datu bāzē, lai tos turpmāk izmantotu informācijas paneļos.

Pievienojiet ķēdes, kā parādīts Fritzing diagrammā.

Izklaides programmatūras izveide

izklaide.py

imports RPi. GPIO kā GPIOimport vītņu imports laika imports nejauši importa os importa tweepy no rpi_lcd importa LCD no subprocess importa zvanu no laika importa miega no datetime importa datetime no firebase imports 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 (autorizāciju) firebase = firebase. FirebaseApplication ("https:// iotca2 -12f48.firebaseio.com ', nav) lcd = LCD () lcd.text (' Have fun! ', 1) lcd.text (' Good luck! ', 2) sleep (1) # Sarkana, dzeltena, zaļa = [40, 38, 36] POGAS = [37, 33, 35] PIEZĪMES = ["E3", "A4", "E4"] # vērtības, kuras varat mainīt un kas ietekmē spēles ātrumu = 0,5 # karodziņi, kas tiek izmantoti spēles signālam statuss is_displaying_pattern = Nepareizs ir_uzvarēts_curr ent_level = False is_game_over = False # spēles stāvoklis 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. iestatīšana (BUTTONS, GPIO. IN, pull_up_down = GPIO. PUD_DOWN) i diapazonā (3): GPIO.add_event_detect (BUTTONS , GPIO. FALLING, ellenőriz_player_selection) def verifikācijas_spēles_izvēle (kanāls): globālais pašreizējais_solis_līmeņu līmenis, is_game_over ja nav is_displaying_pattern un nav is_won_current_level un not is_game_over: flash_led_for_button (kanāls), ja kanāls == POGAS [modelis [current_step_of_level]: current_step_of_level += 1 ja current_step_of_leve_level flash_led_for_button (button_channel): led = GAISMAS [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 (): globālā is_displaying_pattern is_displaying_pattern = globālā is_displayingpattern: GPIO.output (LIGHTS [modelis , GPIO. HIGH) time.sleep (ātrums) GPIO.output (LIGHTS [modelis , GPIO. LOW) time.sleep (ātrums) is_displaying_pattern = False def wait_for_player_to_repeat_pattern (): kamēr nav is_won_current_level un nav is_game_over: time.sleep (0.1) def reset_board_for_new_game (): global is_displaying_pattern, is_won_current_level, is_game_over_vel_verfle_fle_fle_fun_free GPIO.output (LIGHTS, GPIO. LOW) def send_data (score): lcd.text ('Spēles beigas', 1) lcd.text ('Tiekamies drīz!', 2) datestr = str (datetime. tagad ()), kamēr True: print (datestr) print (score) data = {'Date': datestr, 'Score': score} result = firebase.post ('/score/', data) print (result) if score> 2: status = 'Kāds ir guvis vārtus' +(str (score))+'on'+datestr+'!' api.update_status (statuss = statuss) break def start_game (): kamēr 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 ir {}.format (current_level - 1)) sleep (2) print ("Paldies, ka spēlējāt! / n") lcd.text ('', 1) lcd.text ('', 2) break time.sleep (2) def start_game_monitor (): t = vītņošana. Vītne (target = start_game) t.daemon = True t.start () t.join () def main (): try: os.system ('cls' if os.name == 'nt 'else' clear ') print ("Begin new round! / n") initialize_gpio () start_game_monitor () beidzot: GPIO.cleanup () if _name_ ==' _main_ ': main ()

5. darbība: IOT lietotne Watson uz IBM Bluemix [pirmā daļa]

Iestatiet Blumix IoT pakalpojumu

  1. Iestatiet vārtejas ierīces tipu
  2. Iestatiet ierīci

Veiciet 1. un 2. darbību 3 reizes. Viens RPi ir paredzēts vienai sadaļai (Drošība/Aizsardzība/Izklaide)

Iestatiet mezglu-sarkanu

Palaist mezglu sarkanu

mezgla sarkans sākums

  1. Dodieties uz paletes pārvaldīšanu hamburgeru izvēlnē (augšējā labajā stūrī)
  2. Lejupielādējiet šādas paletes

    1. mezgls-sarkans-informācijas panelis
    2. node-red-contrib-firebase
    3. mezgls-sarkans-ieguldījums-ibm-vatsons-iot

6. solis: mezgla sarkanās plūsmas

Mezgls Sarkanās plūsmas
Mezgls Sarkanās plūsmas
Mezgls Sarkanās plūsmas
Mezgls Sarkanās plūsmas
Mezgls Sarkanās plūsmas
Mezgls Sarkanās plūsmas
Mezgls Sarkanās plūsmas
Mezgls Sarkanās plūsmas

Lejupielādējiet failus un eksportējiet tos uz sarkano mezglu.

Drošības mezgls-sarkans

neviena

Aizsardzbas Rpi mezgls-sarkans

laserturret.txt

Izklaide Rpi Node-Red

  • izklaides rpi flow.txt
  • ldr rpi flow.txt

IBM Bluemix mezgls-sarkans

Ieteicams: