Tartalomjegyzék:

Áttekintés: Otthoni szórakoztató és biztonsági rendszer: 6 lépés
Áttekintés: Otthoni szórakoztató és biztonsági rendszer: 6 lépés

Videó: Áttekintés: Otthoni szórakoztató és biztonsági rendszer: 6 lépés

Videó: Áttekintés: Otthoni szórakoztató és biztonsági rendszer: 6 lépés
Videó: ÚJ* TikTok Official Rövid Videó -😬🥵Majdnem lebuktam🤣🤣😂 IG:fanniburjan 2024, Június
Anonim
Áttekintés: Otthoni szórakoztató és biztonsági rendszer
Áttekintés: Otthoni szórakoztató és biztonsági rendszer
Áttekintés: Otthoni szórakoztató és biztonsági rendszer
Áttekintés: Otthoni szórakoztató és biztonsági rendszer
Áttekintés: Otthoni szórakoztató és biztonsági rendszer
Áttekintés: Otthoni szórakoztató és biztonsági rendszer

Az Alkalmazásról

Ez az IOT rendszer egy otthoni szórakoztató és biztonsági rendszer.

  1. Biztonság

    1. Koppintson az RFID kártya elemre, és a bemenet a Firebase -be kerül mentésre.
    2. Ha jogosult, nyugodtan beléphet, és a kép elkészül, és feltöltődik az S3 -ra
    3. Ha nem jogosult, akkor megjelenik a védelmi rész, és az LCD -képernyőn megjelenik a felhatalmazás.
  2. Védelem

    1. Nyomja meg a gombot a műszerfalon.
    2. A lézeres tornyok véletlenszerű sorozatban és sebességgel támadnak.
  3. Szórakozás

    1. Ha mozgást észlel, a játék elindul.
    2. Miután a felhasználó játszik a játékkal, a pontszám a Firebase -be kerül mentésre.
    3. Az LDR értékeket leveszi és megjeleníti a műszerfalon.

Ez az alkalmazás az IBM Node-Red webszerveren keresztül vezérelhető és megtekinthető. Az AWS és az IBM Cloud Services szolgáltatásait használjuk, és a Firebase adatbázisát használtuk.

A leírt lépések összefoglalása

  • Hardverkövetelmények
  • Biztonság - RFID bemenetet és képfelismerő szoftvert használó biztonsági rendszer létrehozása
  • Védelem - Hogyan készítsünk lézertornyot
  • Szórakozás - Simon -mondja játék létrehozása
  • IOT App Watson az IBM Bluemix rendszeren - Hogyan lehet az összes rendszert egyetlen műszerfalba integrálni

Lépjen tovább, és nyissa meg a pdf fájlt, hogy részletesebb magyarázatot kapjon a projekt létrehozásáról.

1. lépés: Hardverkövetelmények

Erre lesz szüksége

  1. Biztonság

    • 1 Málna Pi
    • 1 LCD
    • 1 RFID olvasó
    • 1 PiCam
    • 2 RFID kártya/gomb
    • X Női -> Férfi áthidaló kábelek
  2. Védelem

    • 1 Málna Pi
    • 2 10 ㏀ ellenállás (gombokhoz)
    • 2 Micro Servo
    • 1 650 nm -es lézer adó modul
    • 2 Nyomógomb
    • 1 Hangjelző
    • 3 kis gumiszalag/kábelköteg (rögzítéshez)
    • X Női -> Férfi áthidaló kábelek
    • X Rendszeres ugrókábelek
    • 1 tranzisztor
    • 1 kondenzátor
  3. Szórakozások

    • 1 Málna Pi
    • 3 1 ㏀ Ellenállás (LED -ekhez)
    • 1 10㏀ ellenállás (LDR esetén)
    • 3 LED (különböző színek)
    • 3 gomb
    • 1 LDR
    • 1 LCD
    • 1 Pir mozgásérzékelő
    • X Női -> Férfi áthidaló kábelek
    • X Rendszeres ugrókábelek

2. lépés: Biztonság

Biztonság
Biztonság
Biztonság
Biztonság
Biztonság
Biztonság

A biztonsági rendszer hardverének létrehozása

Csatlakoztassa az áramköröket a fritázási diagram szerint

A biztonsági rendszer szoftverének létrehozása

  1. Az AWS beállítása egy dolog létrehozásával
  2. Telepítse az AWS Python Library programot
  3. Telepítse az LCD könyvtárat
  4. Telepítse az RFID könyvtárat
  5. A Firebase beállítása
  6. Az S3 Storage beállítása
  7. Telepítse a Boto -t a Raspberry Pi -re
  8. Telepítse az AWS ClI -t a Raspberry Pi -re
  9. Hozzon létre AWS hitelesítő adatokat
  10. Az AWS konfigurálása
  11. A security.py feltöltése az RPi -be
  12. Töltse fel a imagerecognition.py fájlt az RPi -be

A security.py egy olyan kód, amely beolvassa az RFID bemeneteket, és érzékeli, hogy a felhasználó betolakodó -e vagy sem. Ha a felhasználó felismerhető, akkor egy kép készül és feltöltésre kerül az s3 -ra. A kód az aws MQTT -ben is közzéteszi a témát

3. lépés: Védelem

Védelem
Védelem
Védelem
Védelem
Védelem
Védelem

Lézertorony létrehozása Hardver

  1. A lézertornyot 2 szervó és 1 lézermodul használatával hozzuk létre
  2. Csatlakoztassa az áramköröket a fritázási diagramon látható módon

A lézertorony szoftver létrehozása

Az alábbi kód segítségével a lézertorony véletlenszerű irányokban, véletlenszerű kitörésekben és sebességgel lő

laserturret.py

gpiozero import LED -től, zümmögő, gomb, szervoimport idő a jel importálásától szünet importálás véletlenszerű

#led = LED (12)

#pir = MotionSensor (19, sample_rate = 5, queue_len = 1) buzzer_pin = Zümmögő (17) attack = Button (5, pull_up = False) #reset = Button (6, pull_up = False) servo1 = Servo (18) servo2 = Szervó (24)

def ledON ():

led.on () print ("LED világít") def ledOFF (): led.off () print ("LED ki van kapcsolva")

def fire ():

print ("forró fegyverek") 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 = servo2kezdési idő.alvás (0,1) lövés = 0 részlet = [timeBetweenBurrst, timeBetweenShots, servo1.value, servo2.value, numShots] print (részlet), miközben lövés <numshots: shot+= "1" servo1.value = "servo1start" servo2.value = "servo2start" servo1start = "servo1change" servo2start = "servo2change" fire () = "" time.sleep (timebetweenshots) = "" time.sleep (timebetweenburst)

jegyzetek = {

„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 (gyakoriság, hossz): #hozza létre a "buzz" funkciót, és adja meg a hangmagasságot és az időtartamot)

ha (gyakoriság == 0):

time.sleep (length) return period = 1.0 / frequency #frequency delayValue = period / 2 #számítsa ki az időt a hullám felére): #indítson ciklust 0 -tól a "ciklusok" változóig, amelyet a buzzer_pin.on () időn keresztül alszik (delayValue) buzzer_pin.off () time.sleep (delayValue)

def play (dallam, tempó, szünet, tempó = 0,800):

i tartományban (0, len (dallam)): # Dal lejátszása noteDuration = ütem/tempó zümmögés (dallam , noteDuration) # A frekvencia módosítása a dal mentén pauseBetweenNotes = noteDuration * pause time.sleep (pauseBetweenNotes)

míg igaz:

laserturret () szünet;

4. lépés: Szórakozás

Szórakozás
Szórakozás
Szórakozás
Szórakozás
Szórakozás
Szórakozás

A szórakoztató hardver létrehozása

Létrehozzuk a Simon-mondja gombjátékot, amelynek követnie kell a felgyulladó LED-ek mintáját, és meg kell nyomnia a megfelelő gombokat. Feltölti a pontszámokat és az időbélyeget a Firebase NoSQL adatbázisába, hogy további módon használhassa az irányítópultokat.

Csatlakoztassa az áramköröket a Fritzing diagram szerint.

Szórakoztató szoftver létrehozása

szórakozás.py

import RPi. GPIO mint GPIOimport threading import ideje import random import os import tweepy származó rpi_lcd import LCD származó alprocessz import hívás ideje import alvás datetime import datetime származó firebase import 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 ', Nincs = [40, 38, 36] GOMBOK = [37, 33, 35] MEGJEGYZÉSEK = ["E3", "A4", "E4"] # módosítható érték, amelyek befolyásolják a játék sebességét = 0,5 # zászló a játék jelzésére állapot is_displaying_pattern = Hamis is_won_curr ent_level = Hamis is_game_over = Hamis # játékállapot aktuális_szint = 1 aktuális_lépés_szintű = 0 minta = def initialize_gpio (): GPIO.setmode (GPIO. BOARD) GPIO.setup (LIGHTS, GPIO. OUT, initial = GPIO. LOW) GPIO. beállítás (BUTTONS, GPIO. IN, pull_up_down = GPIO. PUD_DOWN) az (i) tartományban (3): GPIO.add_event_detect (GOMBOK , GPIO. FALLING, ellenőrző_játékos_választás) is_game_over ha nem is_displaying_pattern és nem is_won_current_level és not is_game_over: flash_led_for_button (channel) if channel == BUTTONS [pattern [current_step_of_level]: current_step_of_level += 1 if current_step_of_le_wel_le = 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_wonvel_current korcs rent_step_of_level is_won_current_level = Hamis current_step_of_level = 0 next_color = random.randint (0, 2) pattern.append (next_color) def display_pattern_to_player (): globális is_displaying_pattern is_displaying_pattern = globális is_displaying_pattern is_displaying_pattern = valódi GPIO.teljesítmény (GPIO): GPIO.output (LIGHTS [minta , GPIO. HIGH) time.sleep (sebesség) GPIO.output (LIGHTS [minta , GPIO. LOW) time.sleep (sebesség) is_displaying_pattern = False def wait_for_player_to_repeat_pattern (): bár nem is_won_current_level és nem is_game_over: time.sleep (0.1) def reset_board_for_new_game (): globális is_displaying_pattern, is_won_current_level, is_game_ver_vel_verf = aktuális GPIO.output (LIGHTS, GPIO. LOW) def send_data (score): lcd.text ('A játék vége', 1) lcd.text ('Találkozunk hamarosan!', 2) datestr = str (datetime. most ()), míg True: print (datestr) print (score) data = {'Date': datestr, 'Score': score} result = firebase.post ('/score/', data) print (result) if score> 2: status = 'Valaki gólt szerzett' +(str (score))+'on'+datestr+'!' api.update_status (állapot = állapot) break def start_game (): míg 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! n score").format (current_level - 1)) sleep (2) print ("Köszönjük, hogy játszott! / n") lcd.text ('', 1) lcd.text ('', 2) break time.sleep (2) def start_game_monitor (): t = menet. Thread (target = start_game) t.daemon = True t.start () t.join () def main (): try: os.system ('cls' if os.name == 'nt 'else' clear ') print ("Kezdje az új kört! / n") initialize_gpio () start_game_monitor () végül: GPIO.cleanup () if _name_ ==' _main_ ': main ()

5. lépés: IOT App Watson az IBM Bluemix rendszeren [első rész]

Állítsa be a Blumix IoT szolgáltatást

  1. Állítson be átjáróeszköz -típust
  2. Eszköz beállítása

Végezze el az 1. és 2. lépést háromszor. Egy RPi egy szakaszra vonatkozik (Biztonság/Védelem/Szórakozás)

Állítsa be a piros csomópontot

Fuss csomópont-piros

csomópont-vörös indítás

  1. Menjen a paletta kezeléséhez a hamburger menüben (jobb felső sarokban)
  2. Töltse le a következő palettákat

    1. csomópont-piros-műszerfal
    2. node-red-contrib-firebase
    3. node-red-contrib-ibm-watson-iot

6. lépés: Csomópont piros

Node Red Flows
Node Red Flows
Node Red Flows
Node Red Flows
Node Red Flows
Node Red Flows
Node Red Flows
Node Red Flows

Töltse le a fájlokat, és exportálja a csomópont-vörösbe.

Biztonsági csomópont-piros

egyik sem

Védelmi Rpi Node-Red

laserturret.txt

Szórakozás Rpi Node-Red

  • szórakoztató rpi flow.txt
  • ldr rpi flow.txt

IBM Bluemix Node-Red

Ajánlott: