Cuprins:

Prezentare generală: Sistem de securitate și divertisment la domiciliu: 6 pași
Prezentare generală: Sistem de securitate și divertisment la domiciliu: 6 pași

Video: Prezentare generală: Sistem de securitate și divertisment la domiciliu: 6 pași

Video: Prezentare generală: Sistem de securitate și divertisment la domiciliu: 6 pași
Video: Au Uitat Să Oprească Camera De FILMAT! Momente Incredibile Filmate În LIVE 2024, Iunie
Anonim
Prezentare generală: Sistem de securitate și divertisment la domiciliu
Prezentare generală: Sistem de securitate și divertisment la domiciliu
Prezentare generală: Sistem de securitate și divertisment la domiciliu
Prezentare generală: Sistem de securitate și divertisment la domiciliu
Prezentare generală: Sistem de securitate și divertisment la domiciliu
Prezentare generală: Sistem de securitate și divertisment la domiciliu

Despre aplicație

Acest sistem IOT este un sistem de divertisment și securitate la domiciliu.

  1. Securitate

    1. Atingeți Card RFID și intrarea este salvată în Firebase.
    2. Dacă sunteți autorizat, puteți intra pașnic și fotografia este făcută și încărcată în S3
    3. Dacă este neautorizat, intră secțiunea de apărare și un ecran LCD va spune că nu sunteți autorizat.
  2. Apărare

    1. Apăsați butonul de pe tabloul de bord.
    2. Turelele laser vor ataca în rafală și viteză aleatorii.
  3. Divertisment

    1. Dacă este detectată mișcare, jocul va începe.
    2. După ce utilizatorul joacă jocul, scorul este salvat în Firebase.
    3. Valorile LDR vor fi luate și afișate pe tabloul de bord.

Această aplicație este controlabilă și vizualizată prin serverul web IBM Node-Red. Folosim AWS și IBM Cloud Services și am folosit Firebase ca bază de date.

Rezumatul pașilor care vor fi descriși

  • Cerințe hardware
  • Securitate - Cum se creează un sistem de securitate care utilizează intrarea RFID și un software de recunoaștere a imaginilor
  • Apărare - Cum se creează o turelă laser
  • Divertisment - Cum să creați un joc Simon-says
  • IOT App Watson pe IBM Bluemix - Cum se integrează toate sistemele într-un singur tablou de bord

Mergeți mai departe și accesați fișierul pdf pentru o explicație mai detaliată despre cum să creați acest proiect.

Pasul 1: Cerințe hardware

De asta vei avea nevoie

  1. Securitate

    • 1 Raspberry Pi
    • 1 ecran LCD
    • 1 cititor RFID
    • 1 PiCam
    • 2 carduri / butoane RFID
    • X Femelă -> Cabluri jumper masculine
  2. Apărare

    • 1 Raspberry Pi
    • 2 Rezistor de 10 ㏀ (pentru butoane)
    • 2 Micro Servo
    • 1 Modul emițător laser 650nm
    • 2 Apăsați butonul
    • 1 buzzer
    • 3 benzi mici de cauciuc / legături de cablu (pentru fixare)
    • X Femelă -> Cabluri jumper masculine
    • X Cabluri de salt regulat
    • 1 tranzistor
    • 1 condensator
  3. Distracții

    • 1 Raspberry Pi
    • 3 1 ㏀ Rezistor (pentru LED-uri)
    • 1 rezistor 10㏀ (pentru LDR)
    • 3 LED-uri (culori diferite)
    • 3 butoane
    • 1 LDR
    • 1 ecran LCD
    • 1 senzor de mișcare Pir
    • X Femelă -> Cabluri jumper masculine
    • X Cabluri salt regulate

Pasul 2: Securitate

Securitate
Securitate
Securitate
Securitate
Securitate
Securitate

Crearea hardware-ului sistemului de securitate

Conectați circuitele așa cum se arată în diagrama fritzing

Crearea software-ului sistemului de securitate

  1. Configurați AWS prin crearea unui lucru
  2. Instalați AWS Python Library
  3. Instalați Biblioteca LCD
  4. Instalați biblioteca RFID
  5. Configurați Firebase
  6. Configurare stocare S3
  7. Instalați Boto pe Raspberry Pi
  8. Instalați AWS ClI pe Raspberry Pi
  9. Creați acreditări AWS
  10. Configurați AWS
  11. Încărcați security.py pe RPi
  12. Încărcați imagerecognition.py pe RPi

security.py este un cod care va citi intrările RFID și va detecta dacă utilizatorul este sau nu un intrus. Dacă utilizatorul este recunoscut, o imagine va fi luată și încărcată în s3. Codul publică, de asemenea, pe un subiect din aws MQTT

Pasul 3: Apărare

Apărare
Apărare
Apărare
Apărare
Apărare
Apărare

Crearea turnului laser Hardware

  1. Creăm turela laser utilizând 2 servome și 1 modul laser
  2. Conectați circuitele așa cum se arată în diagrama fritzing

Crearea software-ului cu turelă laser

Codul de mai jos va face ca turela laser să tragă în direcții aleatorii, în rafale și viteză aleatorii

laserturret.py

din LED-ul de import gpiozero, Buzzer, Buton, Servoimport timp din importul semnalului pauză import aleatorie

#led = LED (12)

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

def ledON ():

led.on () print ("LED-ul este aprins") def ledOFF (): led.off () print ("LED-ul este stins")

def fire ():

print („arme fierbinți”) 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)

note = {

„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}

buzz def (frecvență, lungime): #creați funcția "buzz" și alimentați-l cu tonul și durata)

dacă (frecvență == 0):

time.sleep (length) period return = 1.0 / frequency #frequency delayValue = period / 2 #calcuate the time for half of the wave numCycles = int (length * frequency) #num of waves = duratime x freq for i in range (numCycles): #start a loop of 0 to the variable "cycles" calculate above buzzer_pin.on () time.sleep (delayValue) buzzer_pin.off () time.sleep (delayValue)

redare def (melodie, tempo, pauză, ritm = 0.800):

pentru i în interval (0, len (melodie)): # Redare melodie note Durată = ritm / tempo zumzet (melodie , notă Durată) # Modificarea frecvenței de-a lungul notei melodiei pauzăBetweenNotes = noteDuration * pause time.sleep (pauseBetweenNotes)

în timp ce este adevărat:

laserturret () pauză;

Pasul 4: Divertisment

Divertisment
Divertisment
Divertisment
Divertisment
Divertisment
Divertisment

Crearea divertismentului Hardware

Creăm jocul cu butoane Simon-says, care trebuie să urmeze modelul luminilor LED-urilor și să apăsăm butoanele corespunzătoare. Încarcă scoruri și timestamp în baza de date NoSQL Firebase pentru o utilizare ulterioară în tablourile de bord.

Conectați circuitele așa cum se arată în diagrama Fritzing.

Crearea software-ului de divertisment

entertainment.py

import RPi. GPIO ca GPIOimport timp filetare import tweepy import aleatoare os de import de import de la LCD rpi_lcd import din apel subproces import din timpul de somn import din datetime datetime import din firebase CONSUMER_KEY firebase import = 'h5Sis7TXdoUVncrpjSzGAvhBH' CONSUMER_SECRET = ACCESS_KEY 'ZfDVxc4aTd9doGmBQO3HiSKKzxSTKT4C3g0B3AGx8eETCJm2rY' = „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 ', Niciuna) lcd = LCD () lcd.text („Distrează-te!”, 1) lcd.text („Noroc!”, 2) somn (1) # Roșu, Galben, Verde LUMINI = [40, 38, 36] BUTONURI = [37, 33, 35] NOTE = ["E3", "A4", "E4"] # valori pe care le puteți modifica, care afectează viteza de joc = 0,5 # steaguri utilizate pentru a semnaliza jocul status is_displaying_pattern = False is_won_curr ent_level = False is_game_over = False # starea jocului 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) pentru i în intervalul (3): GPIO.add_event_detect (BUTTONS , GPIO. FALLING, verify_player_selection) def verify_player_selection (canal): current_step_of_level, current_level, current_level, current_level, current_level is_game_over if not is_displaying_pattern and not is_won_current_level și not is_game_over: flash_led_for_button (canal) if channel == BUTTONS [pattern [current_step_of_level]: current_step_of_level + = 1 if current_step_of_level = = current_le_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 = 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.output (LIGHTS): GPIO.output (LIGHTS [pattern , GPIO. HIGH) time.sleep (speed) GPIO.output (LIGHTS [pattern , GPIO. LOW) time.sleep (speed) is_displaying_pattern = Def fals def wait_for_player_to_repeat_pattern (): while not is_won_current_level și not 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_display_pattern GPIO.output (LIGHTS, GPIO. LOW) def send_data (scor): lcd.text („Sfârșitul jocului”, 1) lcd.text („Ne vedem curând!”, 2) datestr = str (datetime. now ()) în timp ce True: print (datestr) print (scor) data = {'Date': datestr, 'Score': score} result = firebase.post ('/ scores /', data) print (result) if score> 2: status = 'Cineva a marcat' + (str (scor)) + 'pe' + 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! scorul este {} culori!).format (current_level - 1)) sleep (2) print ("Vă mulțumim pentru joc! / 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 'else' clear ') print ("Începeți runda nouă! / n") initialize_gpio () start_game_monitor () în cele din urmă: GPIO.cleanup () if _name_ ==' _main_ ': main ()

Pasul 5: IOT App Watson pe IBM Bluemix [Prima parte]

Configurați serviciul Blumix IoT

  1. Configurați un tip de dispozitiv Gateway
  2. Configurați un dispozitiv

Faceți pașii 1 și 2 de 3 ori. Un RPi este pentru o singură secțiune (Securitate / Apărare / Divertisment)

Configurați Node-Red

Rulați nod roșu

nod roșu start

  1. Accesați pentru a gestiona paleta din meniul hamburger (dreapta sus)
  2. Descărcați următoarele palete

    1. nod-roșu-tablou de bord
    2. nod-roșu-contrib-firebase
    3. nod-roșu-contrib-ibm-watson-iot

Pasul 6: Nodul Fluxurile roșii

Nod Fluxuri roșii
Nod Fluxuri roșii
Nod Fluxuri roșii
Nod Fluxuri roșii
Nod Fluxuri roșii
Nod Fluxuri roșii
Nod Fluxuri roșii
Nod Fluxuri roșii

Descărcați fișierele și exportați-le în roșu.

Nod de securitate - roșu

nici unul

Defence Rpi Node-Red

laserturret.txt

Divertisment Rpi Node-Red

  • entertainment rpi flow.txt
  • ldr rpi flow.txt

IBM Bluemix Node-Red

Recomandat: