Sadržaj:

Pregled: Kućna zabava i sigurnosni sistem: 6 koraka
Pregled: Kućna zabava i sigurnosni sistem: 6 koraka

Video: Pregled: Kućna zabava i sigurnosni sistem: 6 koraka

Video: Pregled: Kućna zabava i sigurnosni sistem: 6 koraka
Video: 🟡 POCO X5 PRO - САМЫЙ ДЕТАЛЬНЫЙ ОБЗОР и ТЕСТЫ 2024, Novembar
Anonim
Pregled: Sistem kućne zabave i sigurnosti
Pregled: Sistem kućne zabave i sigurnosti
Pregled: Sistem kućne zabave i sigurnosti
Pregled: Sistem kućne zabave i sigurnosti
Pregled: Sistem kućne zabave i sigurnosti
Pregled: Sistem kućne zabave i sigurnosti

O aplikaciji

Ovaj IOT sistem je sistem za kućnu zabavu i sigurnost.

  1. Sigurnost

    1. Dodirnite RFID kartica i ulaz se sprema u Firebase.
    2. Ako ste ovlašteni, možete mirno ući i slika se snima i postavlja na S3
    3. Ako je neovlašteno, dolazi odjeljak za odbranu i LCD ekran će reći da niste ovlašteni.
  2. Odbrana
    1. Pritisnite dugme na kontrolnoj tabli.
    2. Laserske kupole napadat će nasumičnim rafalom i brzinom.
  3. Zabava
    1. Ako se detektira pokret, igra će započeti.
    2. Nakon što korisnik odigra igru, rezultat se sprema u Firebase.
    3. LDR vrijednosti će se uzeti i ispisati na nadzornoj ploči.

Ovom aplikacijom se može upravljati i vidjeti je putem IBM Node-Red web poslužitelja. Koristimo AWS i IBM Cloud Services, a kao bazu podataka koristili smo Firebase.

Sažetak koraka koji će biti opisani

  • Hardverski zahtevi
  • Sigurnost - Kako stvoriti sigurnosni sistem koji koristi RFID ulaz i softver za prepoznavanje slika
  • Odbrana - Kako stvoriti lasersku kupolu
  • Zabava - Kako stvoriti igru Simon -say
  • IOT App Watson na IBM Bluemixu - Kako integrirati sve sisteme u jednu nadzornu ploču

Samo naprijed i pristupite pdf datoteci za detaljnije objašnjenje o tome kako stvoriti ovaj projekt.

Korak 1: Hardverski zahtjevi

Ovo će vam trebati

  1. Sigurnost

    • 1 Raspberry Pi
    • 1 LCD
    • 1 RFID čitač
    • 1 PiCam
    • 2 RFID kartice/dugmad
    • X Ženski -> Muški kratkospojni kablovi
  2. Odbrana
    • 1 Raspberry Pi
    • 2 10 ㏀ otpornik (za dugmad)
    • 2 Mikro servo
    • 1 Modul laserskog odašiljača 650nm
    • 2 Pritisnite dugme
    • 1 zujalica
    • 3 male gumice/vezice za kablove (za učvršćivanje)
    • X Ženski -> Muški kratkospojni kablovi
    • X Obični kabeli za preskakanje
    • 1 Tranzistor
    • 1 Kondenzator
  3. Zabava
    • 1 Raspberry Pi
    • 3 1 ㏀ Otpornik (za LED diode)
    • 1 10㏀ otpornik (za LDR)
    • 3 LED diode (različite boje)
    • 3 dugmeta
    • 1 LDR
    • 1 LCD
    • 1 Pir senzor pokreta
    • X Ženski -> Muški kratkospojni kablovi
    • X Obični kabeli za preskakanje

Korak 2: Sigurnost

Sigurnost
Sigurnost
Sigurnost
Sigurnost
Sigurnost
Sigurnost

Kreiranje hardvera sigurnosnog sistema

Spojite krugove kao što je prikazano na dijagramu fritzinga

Kreiranje softvera sigurnosnog sistema

  1. Konfigurirajte AWS stvaranjem stvari
  2. Instalirajte AWS Python biblioteku
  3. Instalirajte LCD biblioteku
  4. Instalirajte RFID biblioteku
  5. Postavite Firebase
  6. Postavljanje S3 pohrane
  7. Instalirajte Boto na Raspberry Pi
  8. Instalirajte AWS ClI na Raspberry Pi
  9. Kreirajte AWS vjerodajnice
  10. Konfigurirajte AWS
  11. Otpremite security.py u RPi
  12. Otpremite imagerecognition.py u RPi

security.py je kôd koji će čitati rfid ulaze i otkriti je li korisnik uljez ili ne. Ako je korisnik prepoznat, slika će biti snimljena i postavljena na s3. Kod se takođe objavljuje u temi u aws MQTT

Korak 3: Odbrana

Odbrana
Odbrana
Odbrana
Odbrana
Odbrana
Odbrana

Stvaranje hardverske laserske kupole

  1. Lasersku kupolu izrađujemo pomoću 2 serva i 1 laserskog modula
  2. Spojite krugove kao što je prikazano na dijagramu fritzinga

Izrada softvera laserske kupole

Donji kod će omogućiti da laserska kupola puca u nasumičnim smjerovima, nasumičnim rafalima i brzinom

laserturret.py

sa gpiozero uvoz LED, zujalica, dugme, servoimport vreme od uvoza signala pauza uvoz nasumično

#led = LED (12)

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

def ledON ():

led.on () print ("LED je uključen") def ledOFF (): led.off () print ("LED je isključen")

def fire ():

ispis ("oružje vruće") 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] ispis (detalj) dok je snimljen <numshots: shot+= "1" servo1.value = "servo1start" servo2.value = "servo2start" servo1start = "servo1change" servo2start = "servo2change" fire () = "" time.sleep (timebetweenshots) = "" time.sleep (timebetweenburst)

bilješke = {

'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 (frekvencija, dužina): #kreirajte funkciju "zujanje" i unesite joj visinu i trajanje)

if (frekvencija == 0):

time.sleep (dužina) povratni period = 1.0 / frekvencija #frequency delayValue = period / 2 #izračunati vrijeme za polovinu talasa numCycles = int (dužina * frekvencija) #broj talasa = duratime x frekvencija za i u opsegu (numCycles): #pokretanje petlje od 0 do varijable "ciklusi" izračunato iznad buzzer_pin.on () time.sleep (delayValue) buzzer_pin.off () time.sleep (delayValue)

def play (melodija, tempo, pauza, tempo = 0.800):

za i u dometu (0, len (melodija)): # Reproduciraj pjesmu noteDuration = tempo/tempo zujanje (melodija , noteDuration) # Promijeni frekvenciju uz pauzu nota pjesme Između napomena = nota trajanje * vrijeme pauze.spavanje (pauseBet BetweenNotes)

dok je True:

laserturret () prekid;

Korak 4: Zabava

Zabava
Zabava
Zabava
Zabava
Zabava
Zabava

Kreiranje hardvera za zabavu

Kreiramo igru sa gumbima Simon-say, koju morate slijediti prema LED lampicama koje svijetle i pritisnuti odgovarajuće tipke. Otprema rezultate i vremensku oznaku u Firebase NoSQL bazu podataka za daljnju upotrebu na nadzornim pločama.

Spojite krugove kao što je prikazano na dijagramu Fritzing.

Kreiranje softvera za zabavu

entertainment.py

uvoz RPi. GPIO kao GPIOimport put threading import random uvoz os uvoz tweepy od rpi_lcd uvoz LCD od podproces uvoz poziv iz vremena uvoz sna od datetime uvoz datetime od Firebase uvoza 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 ', nema) lcd = LCD () lcd.text (' Zabavite se! ', 1) lcd.text (' Sretno! ', 2) spavajte (1) # Crveno, Žuto, Zeleno LIGHTS = [40, 38, 36] DUGMETI = [37, 33, 35] NAPOMENE = ["E3", "A4", "E4"] # vrijednosti koje možete promijeniti koje utječu na brzinu igre = 0,5 # zastavice koje se koriste za signaliziranje igre status is_displaying_pattern = Netačno is_won_curr ent_level = False is_game_over = False # stanje igre 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. postavljanje (BUTTONS, GPIO. IN, pull_up_down = GPIO. PUD_DOWN) za i u rasponu (3): GPIO.add_event_detect (BUTTONS , GPIO. FALLING, verify_player_selection) def verify_player_selection (channel): global current_step_vel_vel_, is_game_over ako nije is_displaying_tern, a ne is_won_current_level i nije is_game_over: flash_led_for_button (channel) if channel == BUTTONS [pattern [current_step_of_level]: current_step_of_level += 1 if_ current_level_level flash_led_for_button (button_channel): led = LIGHTS [BUTTONS.index (button_channel)] GPIO.izlaz (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 = Netačno current_step_of_level = 0 next_color = random.randint (0, 2) pattern.append (next_color) def display_pattern_to_player (): globalni is_displaying_pattern is_displaying_pattern = ISTIČNI IZLAZ: GPIO.output (LIGHTS [pattern , GPIO. HIGH) time.sleep (speed) GPIO.output (LIGHTS [pattern , GPIO. LOW) time.sleep (speed) is_displaying_pattern = False def wait_for_player_to_repeat_pattern (): dok nije is_won_current_level, a ne is_game_over: time.sleep (0.1) def reset_board_for_new_game (): globalna_isplaying_tern, is_won_current_level, is_game_verge_telesna_razina = pogrešna_struja GPIO.izlaz (LIGHTS, GPIO. LOW) def send_data (rezultat): lcd.text ('Kraj igre', 1) lcd.text ('Vidimo se uskoro!', 2) datestr = str (datum i vrijeme. now ()) while True: print (datestr) print (score) data = {'Date': datestr, 'Score': score} rezultat = firebase.post ('/scores/', data) ispis (rezultat) ako je rezultat> 2: status = 'Neko je postigao pogodak' +(str (rezultat))+'na'+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 (trenutni_razina - 1) print ("Boja igre! rezultat je n" {}.format (trenutni_razina - 1)) spavanje (2) ispis ("Hvala na igri! / n") lcd.text ('', 1) lcd.text ('', 2) vrijeme prekida.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 ("Započni novu rundu! / n") initialize_gpio () start_game_monitor () konačno: GPIO.cleanup () if _name_ ==' _main_ ': main ()

Korak 5: IOT aplikacija Watson na IBM Bluemixu [prvi dio]

Postavite Blumix IoT uslugu

  1. Postavljanje vrste uređaja pristupnika
  2. Podesite uređaj

Uradite korake 1 i 2 3 puta. Jedan RPi je za jednu sekciju (Sigurnost/Odbrana/Zabava)

Postavite Node-Red

Pokrenite node-red

node-red start

  1. Idite na paletu za upravljanje u meniju hamburgera (gore desno)
  2. Preuzmite sljedeće palete

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

Korak 6: Čvor Crveni tokovi

Čvor Crveni tokovi
Čvor Crveni tokovi
Čvor Crveni tokovi
Čvor Crveni tokovi
Čvor Crveni tokovi
Čvor Crveni tokovi
Čvor Crveni tokovi
Čvor Crveni tokovi

Preuzmite datoteke i izvezite u svoj node-red.

Sigurnosni čvor-crveno

nijedan

Odbrana Rpi čvor-crvena

laserturret.txt

Zabava Rpi Node-Red

  • zabava rpi flow.txt
  • ldr rpi flow.txt

IBM Bluemix čvor-crveni

Preporučuje se: