Turinys:

Apžvalga: Namų pramogų ir saugumo sistema: 6 žingsniai
Apžvalga: Namų pramogų ir saugumo sistema: 6 žingsniai

Video: Apžvalga: Namų pramogų ir saugumo sistema: 6 žingsniai

Video: Apžvalga: Namų pramogų ir saugumo sistema: 6 žingsniai
Video: ПЕРВЫЕ ПОСЛЕВОЕННЫЕ ГОДЫ. ВОСТОЧНАЯ ПРУССИЯ. КАЛИНИНГРАД. ИСТОРИИ ПРОФЕССОРА. КОП ПО ВОЙНЕ 2024, Birželis
Anonim
Apžvalga: namų pramogų ir saugumo sistema
Apžvalga: namų pramogų ir saugumo sistema
Apžvalga: namų pramogų ir saugumo sistema
Apžvalga: namų pramogų ir saugumo sistema
Apžvalga: namų pramogų ir saugumo sistema
Apžvalga: namų pramogų ir saugumo sistema

Apie Paraišką

Ši IOT sistema yra namų pramogų ir saugumo sistema.

  1. Saugumas

    1. Bakstelėkite RFID kortelė ir įvestis išsaugoma „Firebase“.
    2. Jei turite leidimą, galite ramiai įeiti, o nuotrauka nufotografuojama ir įkeliama į S3
    3. Jei neleistina, įeina gynybos skyrius ir LCD ekranas pasakys, kad nesate įgaliotas.
  2. Gynyba
    1. Paspauskite mygtuką prietaisų skydelyje.
    2. Lazeriniai bokšteliai puls atsitiktine tvarka ir greičiu.
  3. Pramogos

    1. Jei aptinkamas judesys, žaidimas prasidės.
    2. Kai vartotojas žaidžia žaidimą, rezultatas išsaugomas „Firebase“.
    3. LDR vertės bus paimtos ir išvestos prietaisų skydelyje.

Ši programa yra valdoma ir matoma per „IBM Node-Red“žiniatinklio serverį. Mes naudojame AWS ir „IBM Cloud Services“, o kaip duomenų bazę naudojome „Firebase“.

Apibūdinamų veiksmų santrauka

  • Techninės įrangos reikalavimai
  • Sauga - kaip sukurti apsaugos sistemą, kuri naudoja RFID įvestį ir vaizdo atpažinimo programinę įrangą
  • Gynyba - kaip sukurti lazerinį bokštelį
  • Pramogos - kaip sukurti žaidimą „Simonas sako“
  • „IOT App Watson“„IBM Bluemix“- kaip integruoti visas sistemas į vieną prietaisų skydelį

Eikite į priekį ir pasiekite pdf failą, kad gautumėte išsamesnį paaiškinimą, kaip sukurti šį projektą.

1 žingsnis: aparatinės įrangos reikalavimas

Tai jums reikės

  1. Saugumas

    • 1 „Raspberry Pi“
    • 1 LCD
    • 1 RFID skaitytuvas
    • 1 „PiCam“
    • 2 RFID kortelės/mygtukai
    • X Female -> Vyriški jungiamieji kabeliai
  2. Gynyba
    • 1 „Raspberry Pi“
    • 2 10 ㏀ rezistorius (mygtukams)
    • 2 „Micro Servo“
    • 1 650 nm lazerio siųstuvo modulis
    • 2 Paspauskite mygtuką
    • 1 garsinis signalas
    • 3 mažos guminės juostos/kabelių kaklaraiščiai (tvirtinimui)
    • X Female -> Vyriški jungiamieji kabeliai
    • X Įprasti šuoliai
    • 1 tranzistorius
    • 1 kondensatorius
  3. Pramogos

    • 1 „Raspberry Pi“
    • 3 1 ㏀ Rezistorius (šviesos diodams)
    • 1 10㏀ rezistorius (LDR)
    • 3 šviesos diodai (skirtingų spalvų)
    • 3 mygtukai
    • 1 LDR
    • 1 LCD
    • 1 Pir judesio jutiklis
    • X Female -> Vyriški jungiamieji kabeliai
    • X Įprasti šuoliai

2 žingsnis: saugumas

Saugumas
Saugumas
Saugumas
Saugumas
Saugumas
Saugumas

Apsaugos sistemos aparatūros kūrimas

Prijunkite grandines, kaip parodyta šlifavimo diagramoje

Apsaugos sistemos programinės įrangos kūrimas

  1. Konfigūruokite AWS sukurdami daiktą
  2. Įdiekite „AWS Python“biblioteką
  3. Įdiekite LCD biblioteką
  4. Įdiekite RFID biblioteką
  5. Nustatykite „Firebase“
  6. S3 saugyklos nustatymas
  7. Įdiekite „Boto“„Raspberry Pi“
  8. Įdiekite AWS ClI „Raspberry Pi“
  9. Sukurkite AWS kredencialus
  10. Konfigūruokite AWS
  11. Įkelkite security.py į RPi
  12. Įkelkite imagerecognition.py į RPi

security.py yra kodas, kuris skaitys RFID įvestis ir nustatys, ar vartotojas yra įsibrovėlis, ar ne. Jei vartotojas atpažįstamas, vaizdas bus nufotografuotas ir įkeltas į „s3“. Kodas taip pat skelbiamas „aws MQTT“temoje

3 žingsnis: gynyba

Gynyba
Gynyba
Gynyba
Gynyba
Gynyba
Gynyba

Lazerio bokšto aparatūros kūrimas

  1. Mes sukuriame lazerinį bokštelį naudodami 2 servo ir 1 lazerio modulį
  2. Prijunkite grandines, kaip parodyta šlifavimo diagramoje

Lazerinio bokšto programinės įrangos kūrimas

Žemiau pateiktas kodas privers lazerinį bokštelį šaudyti atsitiktinėmis kryptimis, atsitiktiniais pliūpsniais ir greičiu

laserturret.py

iš „gpiozero“importo šviesos diodas, garsinis signalas, mygtukas, servoimporto laikas nuo signalo importavimo pauzės importavimo atsitiktinis

#led = LED (12)

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

def ledON ():

led.on () print ("LED šviečia") def ledOFF (): led.off () print ("LED yra išjungtas")

prieš ugnį ():

spausdinti („karšti ginklai“) buzzer_pin.on () time.sleep (0,1) buzzer_pin.off ()

def laserturret ():

timeBetweenBurrst = atsitiktinis.uniforminis (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 = servo2pradėjimo laikas.sleep (0.1) shot = 0 detail = [timeBetweenBurrst, timeBetweenShots, servo1.value, servo2.value, numShots] spausdinti (detaliai) fotografuojant <numshots: shot+= "1" servo1.value = "servo1start" servo2.value = "servo2start" servo1start = "servo1change" servo2start = "servo2change" fire () = "" time.sleep (timebetweenshots) = "" time.sleep (timebetweenburst)

užrašai = {

„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 (dažnis, ilgis): #sukurkite funkciją „buzz“ir padėkite jai žingsnį bei trukmę)

jei (dažnis == 0):

time.sleep (ilgis) grąžinimo laikotarpis = 1,0 / dažnis #dažnio uždelsimas): #pradėkite ciklą nuo 0 iki kintamojo „ciklai“, apskaičiuotų aukščiau buzzer_pin.on () time.sleep (delayValue) buzzer_pin.off () time.sleep (delayValue)

def play (melodija, tempas, pauzė, tempas = 0,800):

i diapazone (0, len (melodija)): # Groti dainos užrašąDuration = tempas/tempas buzz (melodija , noteDuration) # Pakeiskite dainos dažnį dainos pauseBetweenNotes = noteDuration * pause time.sleep (pauseBetweenNotes)

nors tiesa:

laserturret () pertrauka;

4 žingsnis: Pramogos

Pramogos
Pramogos
Pramogos
Pramogos
Pramogos
Pramogos

Pramogų aparatūros kūrimas

Sukuriame „Simon-say“mygtukų žaidimą, kurį turite sekti šviečiančių šviesos diodų modeliu ir paspausti atitinkamus mygtukus. Jis įkelia balus ir laiko žymę į „Firebase NoSQL“duomenų bazę, kad būtų galima toliau naudoti prietaisų skydeliuose.

Prijunkite grandines, kaip parodyta Fritzing diagramoje.

Pramogų programinės įrangos kūrimas

pramoga.py

importo RPi. GPIO kaip GPIOimport sriegimo importavimo metu importo atsitiktinai importo os importo tweepy nuo rpi_lcd importo LCD nuo MIME importo skambučio nuo laiko importo miego nuo datetime importo datetime nuo firebase importo firebase CONSUMER_KEY = 'h5Sis7TXdoUVncrpjSzGAvhBH "CONSUMER_SECRET =' ZfDVxc4aTd9doGmBQO3HiSKKzxSTKT4C3g0B3AGx8eETCJm2rY 'ACCESS_KEY =' 988333099669901312- YDLEQN1weW2n1JP4lxJcFPppCsbvzQh "ACCESS_SECRET = 'K2IlUPur6jx7DO5S0HhhZW29H5AQFOvkMMevSsk9ZzwLk" auth = tweepy. OAuthHandler (CONSUMER_KEY, CONSUMER_SECRET) auth.secure = Tiesa auth.set_access_token (ACCESS_KEY, ACCESS_SECRET) API = tweepy. API (auth) firebase = firebase. FirebaseApplication ("https:// iotca2 -12f48.firebaseio.com ", Nėra = [40, 38, 36] BUTTONS = [37, 33, 35] PASTABOS = ["E3", "A4", "E4"] # reikšmių, kurias galite pakeisti, turinčios įtakos žaidimo greičiui = 0,5 # vėliavos, naudojamos žaidimui signalizuoti status is_displaying_pattern = Netiesa is_won_curr ent_level = False is_game_over = Netiesa # žaidimo būsena 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. sąranka (BUTTONS, GPIO. IN, pull_up_down = GPIO. PUD_DOWN), skirta „i“diapazone (3): GPIO.add_event_detect (BUTTONS , GPIO. FALLING, ellenőriz_player_selection) def correct_player_selection (kanalas): global current_step_of_lewlevel, is_game_over, jei ne, is_displaying_pattern, o ne is_won_current_level, o ne is_game_over: flash_led_for_button (channel) if channel == BUTTONS [modelis [dabartinis_pakopas_luoksnis]: dabartinis_pakopas_luoksnis flash_led_for_button (button_channel): LED = ŠVIESOS [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 = tikrasis GPIO.out_ (dabartinis GPIO): GPIO.output (LIGHTS [modelis , GPIO. HIGH) time.sleep (greitis) GPIO.output (LIGHTS [modelis , GPIO. LOW) time.sleep (greitis) is_displaying_pattern = Klaidingas def wait_for_player_to_repeat_pattern (): nors ne is_won_current_level, o ne is_game_over: time.sleep (0.1) def reset_board_for_new_game (): global is_displaying_pattern, is_won_current_level, is_game_over = dabartinis_pasakymas = dabartinis_skelbimas GPIO.output (LIGHTS, GPIO. LOW) def send_data (rezultatas): lcd.text ('Žaidimo pabaiga', 1) lcd.text ('Iki pasimatymo!', 2) datestr = str (datetime. dabar ()), o tiesa: spausdinti (datestr) print (score) data = {'Data': datestr, 'Score': score} result = firebase.post ('/score/', data) print (rezultatas), jei balas> 2: status = 'Kažkas įmušė' +(str (rezultatas))+'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 ("Žaidimas baigtas! rezultatas" {}.format (current_level - 1)) sleep (2) print ("Ačiū, kad žaidėte! / n") lcd.text ('', 1) lcd.text ('', 2) break time.sleep (2) def start_game_monitor (): t = sriegimas. Siūlas (target = start_game) t.daemon = True t.start () t.join () def main (): try: os.system ('cls' if os.name == 'nt 'else' clear ') print ("Pradėti naują raundą! / n") initialize_gpio () start_game_monitor () pagaliau: GPIO.cleanup () if _name_ ==' _main_ ': main ()

5 veiksmas: „IOT App Watson“„IBM Bluemix“[pirmoji dalis]

Nustatykite „Blumix IoT Service“

  1. Nustatykite šliuzo įrenginio tipą
  2. Nustatykite įrenginį

Atlikite 1 ir 2 veiksmus 3 kartus. Vienas RPi skirtas vienai sekcijai (saugumas/gynyba/pramogos)

Nustatykite raudoną mazgą

Paleiskite mazgą raudonai

mazgo raudona pradžia

  1. Eiti valdyti paletę mėsainių meniu (viršuje dešinėje)
  2. Atsisiųskite šiuos padėklus

    1. mazgas-raudonas-prietaisų skydelis
    2. node-red-contrib-firebase
    3. node-red-contrib-ibm-watson-iot

6 žingsnis: mazgas raudonas srautas

Mazgas Raudoni srautai
Mazgas Raudoni srautai
Mazgas Raudoni srautai
Mazgas Raudoni srautai
Mazgas Raudoni srautai
Mazgas Raudoni srautai
Mazgas Raudoni srautai
Mazgas Raudoni srautai

Atsisiųskite failus ir eksportuokite į raudoną mazgą.

Apsaugos mazgas-raudonas

nė vienas

Gynybos Rpi mazgas-raudonas

laserturret.txt

Pramogos „Rpi Node-Red“

  • pramogų rpi flow.txt
  • ldr rpi flow.txt

„IBM Bluemix Node-Red“

Rekomenduojamas: