Sisällysluettelo:

Yleiskatsaus: Kotiviihde- ja turvajärjestelmä: 6 vaihetta
Yleiskatsaus: Kotiviihde- ja turvajärjestelmä: 6 vaihetta

Video: Yleiskatsaus: Kotiviihde- ja turvajärjestelmä: 6 vaihetta

Video: Yleiskatsaus: Kotiviihde- ja turvajärjestelmä: 6 vaihetta
Video: Kattotelineeet . Yleiskatsaus. Багажники. Обзор 2024, Kesäkuu
Anonim
Yleiskatsaus: Kotiviihde- ja turvajärjestelmä
Yleiskatsaus: Kotiviihde- ja turvajärjestelmä
Yleiskatsaus: Kotiviihde- ja turvajärjestelmä
Yleiskatsaus: Kotiviihde- ja turvajärjestelmä
Yleiskatsaus: Kotiviihde- ja turvajärjestelmä
Yleiskatsaus: Kotiviihde- ja turvajärjestelmä

Tietoja sovelluksesta

Tämä IOT -järjestelmä on kotiviihde- ja turvajärjestelmä.

  1. Turvallisuus

    1. Napauta RFID -kortti ja syötteet tallennetaan Firebaseen.
    2. Jos sinulla on lupa, voit mennä rauhallisesti sisään ja kuva otetaan ja ladataan S3: een
    3. Jos luvaton, puolustusosa tulee sisään ja LCD -näyttö sanoo, että et ole valtuutettu.
  2. Puolustus

    1. Paina kojelaudan painiketta.
    2. Laseritornit hyökkäävät satunnaisesti ja nopeasti.
  3. Viihde

    1. Jos liike havaitaan, peli käynnistyy.
    2. Kun käyttäjä on pelannut pelin, pisteet tallennetaan Firebaseen.
    3. LDR -arvot otetaan ja tulostetaan kojelautaan.

Tämä sovellus on hallittavissa ja katseltavissa IBM Node-Red -verkkopalvelimen kautta. Käytämme AWS: ää ja IBM: n pilvipalveluja ja käytimme tietokantana Firebasea.

Yhteenveto kuvatuista vaiheista

  • Laitteistovaatimukset
  • Suojaus - Miten luodaan turvajärjestelmä, joka käyttää RFID -tuloa ja kuvan tunnistusohjelmistoa
  • Puolustus - Kuinka luoda laser -torni
  • Viihde - Simon -sanoo -pelin luominen
  • IOT App Watson IBM Bluemixissä - Kuinka integroida kaikki järjestelmät yhdeksi kojelautaan

Siirry eteenpäin ja käytä pdf -tiedostoa saadaksesi yksityiskohtaisemman selityksen tämän projektin luomisesta.

Vaihe 1: Laitteistovaatimus

Tätä tarvitset

  1. Turvallisuus

    • 1 Vadelma Pi
    • 1 LCD -näyttö
    • 1 RFID -lukija
    • 1 PiCam
    • 2 RFID -korttia/-painiketta
    • X Naaras -> Uroshyppykaapelit
  2. Puolustus

    • 1 Vadelma Pi
    • 2 10 ㏀ Vastus (painikkeille)
    • 2 Mikroservo
    • 1 650nm laserlähetinmoduuli
    • 2 Painike
    • 1 summeri
    • 3 pientä kuminauhaa/nippusiteitä (kiinnitystä varten)
    • X Naaras -> Uroshyppykaapelit
    • X Säännölliset hyppykaapelit
    • 1 Transistori
    • 1 kondensaattori
  3. Viihdettä

    • 1 Vadelma Pi
    • 3 1 ㏀ Vastus (LEDeille)
    • 1 10㏀ Vastus (LDR: lle)
    • 3 LEDiä (eri värejä)
    • 3 painiketta
    • 1 LDR
    • 1 LCD -näyttö
    • 1 Pir -liikeanturi
    • X Naaras -> Uroshyppykaapelit
    • X Säännölliset hyppykaapelit

Vaihe 2: Suojaus

Turvallisuus
Turvallisuus
Turvallisuus
Turvallisuus
Turvallisuus
Turvallisuus

Turvajärjestelmän laitteiston luominen

Kytke piirit kuorrutuskaavion mukaisesti

Turvajärjestelmäohjelmiston luominen

  1. Määritä AWS luomalla asia
  2. Asenna AWS Python Library
  3. Asenna LCD -kirjasto
  4. Asenna RFID -kirjasto
  5. Asenna Firebase
  6. Määritä S3 -tallennus
  7. Asenna Boto Raspberry Pi: hen
  8. Asenna AWS ClI Raspberry Pi: hen
  9. Luo AWS -kirjautumistiedot
  10. Määritä AWS
  11. Lataa security.py RPi: hen
  12. Lataa imagerecognition.py RPi: hen

security.py on koodi, joka lukee RFID -tulot ja havaitsee, onko käyttäjä tunkeilija vai ei. Jos käyttäjä tunnistetaan, kuva otetaan ja ladataan s3: een. Koodi julkaistaan myös aiheeseen aws MQTT: ssä

Vaihe 3: Puolustus

Puolustus
Puolustus
Puolustus
Puolustus
Puolustus
Puolustus

Lasertornin luominen Laitteisto

  1. Luomme lasitornin käyttämällä 2 servoa ja 1 lasermoduulia
  2. Kytke piirit kuorrutuskaavion mukaisesti

Lasertorni -ohjelmiston luominen

Alla oleva koodi saa laseritornin ampumaan satunnaisiin suuntiin, satunnaisiin purskeisiin ja nopeuteen

laserturret.py

gpiozero -tuonti -LED, summeri, painike, servoimportin aika signaalin tuonnin taukon tuonnista satunnaisesti

#led = LED (12)

#pir = MotionSensor (19, sample_rate = 5, queue_len = 1) buzzer_pin = summeri (17) hyökkäys = Button (5, pull_up = False) #reset = Button (6, pull_up = False) servo1 = Servo (18) servo2 = Servo (24)

def ledON ():

led.on () print ("LED palaa") def ledOFF (): led.off () print ("LED ei pala")

palo ():

tulosta ("aseet kuuma") 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 = servo2start time.sleep (0.1) shot = 0 detail = [timeBetweenBurrst, timeBetweenShots, servo1.value, servo2.value, numShots] print (yksityiskohta) kuvattaessa <numshots: shot+= "1" servo1.value = "servo1start" servo2.value = "servo2start" servo1start = "servo1change" servo2start = "servo2change" fire () = "" time.sleep (timebetweenshots) = "" time.sleep (timebetweenburst)

muistiinpanot = {

'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 (taajuus, pituus): #luo toiminto "buzz" ja syötä sille piki ja kesto)

jos (taajuus == 0):

time.sleep (pituus) palautusjakso = 1,0 / taajuus #frekvenssi delayValue = period / 2 #laske aika puolet aallosta numCycles = int (pituus * taajuus) #aaltojen lukumäärä = kesto x taajuus i alueella (numCycles): #start the loop from 0 to muuttuja "cycles", joka on laskettu edellä buzzer_pin.on () time.sleep (delayValue) buzzer_pin.off () time.sleep (delayValue)

def play (melodia, tempo, tauko, tahti = 0.800):

i alueella (0, len (melodia)): # Toista kappaleen nuottiKesto = vauhti/tempo surina (melodia , muistiinpanon kesto) # Muuta taajuutta kappaleen aikana pauseBetweenNotes = noteDuration * pause time.sleep (pauseBetweenNotes)

vaikka totta:

laserturret () tauko;

Vaihe 4: Viihde

Viihde
Viihde
Viihde
Viihde
Viihde
Viihde

Viihdelaitteiston luominen

Luomme Simon-sanoo-nappipelin, jonka on seurattava syttyvien merkkivalojen kaavaa ja painettava vastaavia painikkeita. Se lataa tulokset ja aikaleiman Firebase NoSQL -tietokantaan ja käyttää niitä edelleen koontinäytöissä.

Liitä piirit Fritzing -kaavion mukaisesti.

Viihdeohjelmiston luominen

viihde.py

tuonti RPi. GPIO kuten GPIOimport ketjuttaminen tuonti aikaan tuonti satunnainen tuonti os tuonti tweepy alkaen rpi_lcd tuonti kuvaruutuun alikäsittelyyn tuonti puhelun aika tuonti unta päivämääräaika tuonti datetime alkaen Firebase tuonti Firebase CONSUMER_KEY = 'h5Sis7TXdoUVncrpjSzGAvhBH' CONSUMER_SECRET = 'ZfDVxc4aTd9doGmBQO3HiSKKzxSTKT4C3g0B3AGx8eETCJm2rY' ACCESS_KEY = '988333099669901312- YDLEQN1weW2n1JP4lxJcFPppCsbvzQh 'ACCESS_SECRET = 'K2IlUPur6jx7DO5S0HhhZW29H5AQFOvkMMevSsk9ZzwLk' viran = 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 ', Ei mitään lcd = LCD () lcd.text (' Hauskaa! ', 1) lcd.text (' Onnea! ', 2) uni (1) # Punainen, keltainen, vihreä LIGHTS = [40, 38, 36] PAINIKKEET = [37, 33, 35] HUOMAUTUKSIA = ["E3", "A4", "E4"] # muutettavaa arvoa, jotka vaikuttavat pelin nopeuteen = 0,5 # lippua pelin merkitsemiseen tila is_displaying_pattern = Väärä is_won_curr ent_level = False is_game_over = Väärä # pelitila 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) i alueella (3): GPIO.add_event_detect (BUTTONS , GPIO. FALLING, ellenőriz_player_selection) def tarkistaa_pelaajan_valinta (kanava): globaali nykyinen_vaihe_taso, taso, is_game_over jos ei is_displaying_pattern eikä is_won_current_level and 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 = 1 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 = todellinen GPIO. TS -tulos (GPIO): GPIO.output (LIGHTS [kuvio , GPIO. HIGH) time.sleep (nopeus) GPIO.output (LIGHTS [kuvio , GPIO. LOW) time.sleep (nopeus) is_displaying_pattern = Väärä def wait_for_player_to_repeat_pattern (): vaikka ei ole_voitettu_tason ja ei ole_pelin_peli: aika.unen (0,1) def reset_board_for_new_game (): globaali is_displaying_pattern, is_won_current_level, is_game_ver_velle_verf = nykyinen_kehys = nykyinen_kehys GPIO.output (LIGHTS, GPIO. LOW) def send_data (pisteet): lcd.text ('Pelin loppu', 1) lcd.text ('Nähdään pian!', 2) datestr = str (datetime. now ()), kun taas True: print (datestr) print (score) data = {'Date': datestr, 'Score': score} result = firebase.post ('/score/', data) print (result) if score> 2: status = 'Joku on tehnyt maalin' +(str (pisteet))+'päällä'+datestr+'!' api.update_status (status = status) break def start_game (): kun 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! pisteet on"}.format (current_level - 1)) uni (2) print ("Kiitos pelistä! / n") lcd.text ('', 1) lcd.text ('', 2) tauon aika.unen (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 ("Aloita uusi kierros! / n") initialize_gpio () start_game_monitor () lopuksi: GPIO.cleanup () if _name_ ==' _main_ ': main ()

Vaihe 5: IOT App Watson IBM Bluemix -palvelussa [osa 1]

Asenna Blumix IoT Service

  1. Määritä yhdyskäytävälaitetyyppi
  2. Määritä laite

Tee vaiheet 1 ja 2 3 kertaa. Yksi RPi on yhdelle osalle (turvallisuus/puolustus/viihde)

Aseta solmu-punainen

Suorita solmu-punainen

solmun punainen aloitus

  1. Siirry hallitsemaan palettia hampurilaisvalikossa (oikeassa yläkulmassa)
  2. Lataa seuraavat paletit

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

Vaihe 6: Solmun punaiset virtaukset

Solmu Punaiset virtaukset
Solmu Punaiset virtaukset
Solmu Punainen virtaa
Solmu Punainen virtaa
Solmu Punainen virtaa
Solmu Punainen virtaa
Solmu Punaiset virtaukset
Solmu Punaiset virtaukset

Lataa tiedostot ja vie ne solmu-punaiseen.

Turvasolmu-punainen

ei mitään

Puolustus Rpi-solmu-punainen

laserturret.txt

Viihde Rpi-solmu-punainen

  • viihde rpi flow.txt
  • ldr rpi flow.txt

IBM Bluemix-solmu-punainen

Suositeltava: