Sadržaj:

Pregled: Sustav kućne zabave i sigurnosti: 6 koraka
Pregled: Sustav kućne zabave i sigurnosti: 6 koraka

Video: Pregled: Sustav kućne zabave i sigurnosti: 6 koraka

Video: Pregled: Sustav kućne zabave i sigurnosti: 6 koraka
Video: Красивая история о настоящей любви! Мелодрама НЕЛЮБОВЬ (Домашний). 2024, Lipanj
Anonim
Pregled: Sustav kućne zabave i sigurnosti
Pregled: Sustav kućne zabave i sigurnosti
Pregled: Sustav kućne zabave i sigurnosti
Pregled: Sustav kućne zabave i sigurnosti
Pregled: Sustav kućne zabave i sigurnosti
Pregled: Sustav kućne zabave i sigurnosti

O aplikaciji

Ovaj IOT sustav je sustav 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, a slika se snima i postavlja na S3
    3. Ako je neovlašteno, dolazi odjeljak za obranu i LCD zaslon će reći da niste ovlašteni.
  2. Obrana
    1. Pritisnite gumb na nadzornoj ploči.
    2. Laserske kupole napadat će nasumičnim rafalom i brzinom.
  3. Zabava
    1. Ako se detektira kretanje, 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 se aplikacijom 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 zahtjevi
  • Sigurnost - Kako stvoriti sigurnosni sustav koji koristi RFID ulaz i softver za prepoznavanje slika
  • Obrana - Kako stvoriti lasersku kupolu
  • Zabava - Kako stvoriti igru Simon -say
  • IOT App Watson na IBM Bluemixu - Kako integrirati sve sustave u jednu nadzornu ploču

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

Korak 1: Zahtjevi hardvera

Ovo će vam trebati

  1. Sigurnost

    • 1 Malina Pi
    • 1 LCD
    • 1 RFID čitač
    • 1 PiCam
    • 2 RFID kartice/tipke
    • X Ženski -> Muški prespojni kabeli
  2. Obrana
    • 1 Malina Pi
    • 2 10 ㏀ otpornik (za gumbe)
    • 2 mikro servo
    • 1 Modul laserskog odašiljača 650nm
    • 2 Pritisnite gumb
    • 1 zujalica
    • 3 male gumice/vezice za kablove (za učvršćivanje)
    • X Ženski -> Muški prespojni kabeli
    • X obični kabeli za preskakanje
    • 1 Tranzistor
    • 1 kondenzator
  3. Zabava
    • 1 Malina Pi
    • 3 1 ㏀ Otpornik (za LED diode)
    • 1 10㏀ otpornik (za LDR)
    • 3 LED diode (različite boje)
    • 3 gumba
    • 1 LDR
    • 1 LCD
    • 1 Pir senzor pokreta
    • X Ženski -> Muški prespojni kabeli
    • X obični kabeli za preskakanje

Korak 2: Sigurnost

Sigurnost
Sigurnost
Sigurnost
Sigurnost
Sigurnost
Sigurnost

Stvaranje hardvera sigurnosnog sustava

Spojite krugove kao što je prikazano na dijagramu frcanja

Izrada softvera sigurnosnog sustava

  1. Konfigurirajte AWS stvaranjem stvari
  2. Instalirajte AWS Python knjižnicu
  3. Instalirajte LCD knjižnicu
  4. Instalirajte RFID knjižnicu
  5. Postavi Firebase
  6. Postavljanje S3 pohrane
  7. Instalirajte Boto na Raspberry Pi
  8. Instalirajte AWS ClI na Raspberry Pi
  9. Izradite vjerodajnice AWS -a
  10. Konfigurirajte AWS
  11. Prenesite security.py u RPi
  12. Prenesite 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đer objavljuje na temi u aws MQTT

Korak 3: Obrana

Obrana
Obrana
Obrana
Obrana
Obrana
Obrana

Stvaranje laserske kupole Hardver

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

Izrada softvera laserske kupole

Donji kôd učinit će da laserska kupola puca u nasumičnim smjerovima, nasumičnim rafalima i brzinom

laserturret.py

od gpiozero LED za uvoz, zujalica, gumb, vrijeme servoimporta od uvoza signala pauza uvoz slučajni

#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 snimljeno <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, duljina): #kreirajte funkciju "zujanje" i unesite joj visinu i trajanje)

ako (učestalost == 0):

vrijeme.spavanje (duljina) povratno razdoblje = 1,0 / frekvencija #frequency delayValue = period / 2 #izračunati vrijeme za polovicu vala numCycles = int (duljina * frekvencija) #broj valova = trajanje x frekvencija za i u rasponu (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 rasponu (0, len (melodija)): # Reproduciraj pjesmu noteDuration = pace/tempo zujanje (melodija , noteDuration) # Promijeni frekvenciju uz pauzu nota pjesme Između napomena = notaTrajanje * vrijeme pauze.spavanje (pauseBet BetweenNotes)

dok je istina:

laserturret () prekid;

Korak 4: Zabava

Zabava
Zabava
Zabava
Zabava
Zabava
Zabava

Stvaranje hardvera za zabavu

Kreiramo igru s gumbima Simon-say, koju morate slijediti prema LED lampicama koje svijetle i pritisnuti odgovarajuće tipke. On prenosi 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.

Stvaranje softvera za zabavu

zabava.py

uvoz RPi. GPIO kao GPIOimport navoja uvoz Vrijeme uvoz slučajnim uvoz OS uvoz tweepy od rpi_lcd uvoza LCD od potprocesa uvoza poziv Vrijeme uvoza sna od DATETIME uvoza datetime od firebase uvoz 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 (AUT) 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 SVJETLO = [40, 38, 36] GUMBI = [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 = Laž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 (SVJETLA, GPIO. OUT, početno = 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 (kanal): globalna trenutna_razina_razina, trenutna_razina_razina, is_game_over ako nije is_displaying_pattern, a nije is_won_current_level, a 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) vrijeme.spavanje (0,4) GPIO.izlaz (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 (): globalni is_displaying_pattern is_displaying_pattern = ISTIČNI opseg: 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 i nije is_game_over: time.sleep (0.1) def reset_board_for_new_game (): global is_displaying_tern, is_won_current_level, is_game_over global_level = current_period GPIO.output (LIGHTS, GPIO. LOW) def send_data (score): lcd.text ('Kraj igre', 1) lcd.text ('Vidimo se uskoro!', 2) datestr = str (datetime. now ()) while True: print (datestr) print (score) data = {'Date': datestr, 'Score': score} rezultat = firebase.post ('/scores/', data) ispis (rezultat) ako je rezultat> 2: status = 'Netko 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 (current_level - 1) print ("Igra je gotova! n rezultat je {}").format (current_level - 1)) sleep (2) print ("Hvala što ste svirali! / 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 ("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. Postavite vrstu uređaja pristupnika
  2. Postavljanje uređaja

Učinite korake 1 i 2 3 puta. Jedan RPi je za jedan odjeljak (Sigurnost/Obrana/Zabava)

Postavite Node-Red

Pokreni node-red

čvor-crveni početak

  1. Idite na paletu za upravljanje u izborniku 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

Obrana Rpi Čvor-Red

laserturret.txt

Zabava Rpi Node-Red

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

IBM Bluemix čvor-crveni

Preporučeni: