Përmbajtje:

Vështrim i përgjithshëm: Argëtimi në shtëpi dhe sistemi i sigurisë: 6 hapa
Vështrim i përgjithshëm: Argëtimi në shtëpi dhe sistemi i sigurisë: 6 hapa

Video: Vështrim i përgjithshëm: Argëtimi në shtëpi dhe sistemi i sigurisë: 6 hapa

Video: Vështrim i përgjithshëm: Argëtimi në shtëpi dhe sistemi i sigurisë: 6 hapa
Video: Busworld 23 Pjesa 2 me Vanhool Setra Mercedes dhe Solaris 2024, Nëntor
Anonim
Vështrim i përgjithshëm: Argëtimi në shtëpi dhe sistemi i sigurisë
Vështrim i përgjithshëm: Argëtimi në shtëpi dhe sistemi i sigurisë
Vështrim i përgjithshëm: Argëtimi në shtëpi dhe sistemi i sigurisë
Vështrim i përgjithshëm: Argëtimi në shtëpi dhe sistemi i sigurisë
Vështrim i përgjithshëm: Argëtimi në shtëpi dhe sistemi i sigurisë
Vështrim i përgjithshëm: Argëtimi në shtëpi dhe sistemi i sigurisë

Rreth Aplikimit

Ky sistem IOT është një sistem argëtimi dhe sigurie në shtëpi.

  1. Siguria
    1. Prekni RFID Card dhe hyrjet ruhen në Firebase.
    2. Nëse jeni të autorizuar, mund të hyni në mënyrë paqësore dhe fotografia merret dhe ngarkohet në S3
    3. Nëse është e paautorizuar, hyn seksioni i mbrojtjes dhe një ekran LCD do të thotë që nuk jeni i autorizuar.
  2. Mbrojtjes

    1. Shtypni butonin në pult.
    2. Frëngjitë Laser do të sulmojnë me hov dhe shpejtësi të rastësishme.
  3. Argëtuese

    1. Nëse lëvizja zbulohet, loja do të fillojë.
    2. Pasi përdoruesi të luajë lojën, rezultati ruhet në Firebase.
    3. Vlerat LDR do të merren dhe dalin në pult.

Ky aplikacion është i kontrollueshëm dhe i shikueshëm përmes serverit të uebit IBM Node-Red. Ne përdorim AWS dhe IBM Cloud Services dhe kemi përdorur Firebase si bazën tonë të të dhënave.

Përmbledhje e hapave që do të përshkruhen

  • Kërkesat e harduerit
  • Siguria - Si të krijoni një sistem sigurie që përdor hyrjen RFID dhe një softuer për njohjen e imazhit
  • Mbrojtja - Si të krijoni një frëngji lazer
  • Argëtim - Si të krijoni një lojë Simon -thotë
  • IOT App Watson në IBM Bluemix - Si të integroni të gjitha sistemet në një pult

Shkoni përpara dhe hyni në skedarin pdf për një shpjegim më të detajuar se si të krijoni këtë projekt.

Hapi 1: Kërkesa për harduer

Kjo është ajo që do t'ju duhet

  1. Siguria
    • 1 mjedër Pi
    • 1 LCD
    • 1 Lexues RFID
    • 1 PiCam
    • 2 Kartela/Butona RFID
    • X Femra -> Kabllo meshkuj bluzë
  2. Mbrojtjes

    • 1 mjedër Pi
    • 2 Rezistencë 10 (për butonat)
    • 2 Mikro Servo
    • 1 Modul Transmetues Laser 650nm
    • Butoni 2 Shtypi
    • 1 Zile
    • 3 shirita të vegjël gome/lidhje kabllore (për fiksim)
    • X Femra -> Kabllo meshkuj bluzë
    • X Kabllo të rregullta të kërcimit
    • 1 tranzistor
    • 1 Kondensator
  3. Argëtuese

    • 1 mjedër Pi
    • 3 1 ㏀ Rezistencë (për LED)
    • 1 10㏀ Rezistencë (për LDR)
    • 3 LED (ngjyra të ndryshme)
    • 3 butona
    • 1 LDR
    • 1 LCD
    • Sensori i lëvizjes 1 Pir
    • X Femra -> Kabllo meshkuj bluzë
    • X Kabllo të rregullta të kërcimit

Hapi 2: Siguria

Siguria
Siguria
Siguria
Siguria
Siguria
Siguria

Krijimi i pajisjeve të sistemit të sigurisë

Lidhni qarqet siç tregohet në diagramin e ngrirjes

Krijimi i softuerit të sistemit të sigurisë

  1. Konfiguroni AWS duke krijuar një gjë
  2. Instaloni Bibliotekën AWS Python
  3. Instaloni Bibliotekën LCD
  4. Instaloni Bibliotekën RFID
  5. Konfiguro Firebase
  6. Konfiguro S3 Storage
  7. Instaloni Boto në Raspberry Pi
  8. Instaloni AWS ClI në Raspberry Pi
  9. Krijoni Kredencialet AWS
  10. Konfiguro AWS
  11. Ngarko security.py te RPi
  12. Ngarko imagerecognition.py te RPi

security.py është një kod që do të lexojë hyrjet rfid dhe do të zbulojë nëse përdoruesi është një ndërhyrës apo jo. Nëse përdoruesi njihet, një imazh do të merret dhe ngarkohet në s3. Kodi gjithashtu publikon një temë në aws MQTT

Hapi 3: Mbrojtja

Mbrojtjes
Mbrojtjes
Mbrojtjes
Mbrojtjes
Mbrojtjes
Mbrojtjes

Krijimi i harduerit të frëngjisë lazer

  1. Ne krijojmë frëngji lazer duke përdorur 2 servos dhe 1 Modul Laser
  2. Lidhni qarqet siç tregohet në diagramin e ngrirjes

Krijimi i softuerit të frëngjisë lazer

Kodi më poshtë do të bëjë që frëngji lazer të qëllojë në drejtime të rastësishme, në shpërthime dhe shpejtësi të rastësishme

laserturret.py

nga gpiozero import LED, Buzzer, Button, Servoimport koha nga sinjali i importit pauzë importin e rastësishëm

#led = LED (12)

#pir = MotionSensor (19, mostra_rate = 5, queue_len = 1) buzzer_pin = Sulmuesi (17) sulmi = Butoni (5, pull_up = False) #reset = Button (6, pull_up = False) servo1 = Servo (18) servo2 = Servo (24)

def ledON ():

led.on () print ("LED është i ndezur") def ledOFF (): print. led.off () ("LED është i fikur")

def fire ():

print ("armë të nxehta") 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) shtënë = 0 detaje = [timeBetweenBurst, timeBetweenShots, servo1.value, servo2.value, numShots] print (detaje) gjatë xhirimit <numshots: shot+= "1" servo1.value = "servo1start" servo2.vlera = "servo2start" servo1start = "servo1change" servo2start = "servo2change" zjarr () = "" kohë. gjumë (kohë midis ndryshimeve) = "" kohë. gjumë (kohë midis shpërthimit)

shënime = {

'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 (frekuenca, gjatësia): #krijoni funksionin "gumëzhimë" dhe ushqeni atë me lartësinë dhe kohëzgjatjen)

nëse (frekuenca == 0):

koha.gjumi (gjatësia) periudha e kthimit = 1.0 / frekuenca #vonesa e frekuencësVlera = periudha / 2 #vlerësoni kohën për gjysmën e valës num): #filloni një lak nga 0 në variablin "cikle" të llogaritur më sipër buzzer_pin.on () time.sleep (delayValue) buzzer_pin.off () time.sleep (delayValue)

def lojë (melodi, tempo, pauzë, ritëm = 0.800):

për i në rang (0, len (melodi)): # Luani shënimin e këngësKohëzgjatja = ritmi/tempo gumëzhimë (melodi , shënimDuration) # Ndryshoni frekuencën përgjatë pauzës së notës së këngësNdërmjetNotes = shënimKohëzgjatje * kohë pauzë.gjumë (pauzëMë mes Shënimeve)

ndërsa e vërtetë:

pushim laserturret ();

Hapi 4: Argëtim

Argëtuese
Argëtuese
Argëtuese
Argëtuese
Argëtuese
Argëtuese

Krijimi i pajisjeve argëtuese

Ne krijojmë lojën e butonave Simon-thotë, të cilën duhet ta ndiqni sipas modelit të ndriçimit të LED-ve dhe shtypni butonat përkatës. Ai ngarkon rezultatet dhe afatin kohor në bazën e të dhënave NoSQL të bazës së zjarrit për përdorim të mëtejshëm në pult.

Lidhni qarqet siç tregohet në diagramin Fritzing.

Krijimi i softuerit argëtues

argëtuese.py

import RPi. GPIO si GPIOimport kohë filetim import import rastit os import import tweepy nga rpi_lcd import LCD nga thirrje subprocess importit nga importi kohë gjumi nga DATETIME DATETIME importit nga firebase CONSUMER_KEY import firebase = 'h5Sis7TXdoUVncrpjSzGAvhBH' CONSUMER_SECRET = ACCESS_KEY 'ZfDVxc4aTd9doGmBQO3HiSKKzxSTKT4C3g0B3AGx8eETCJm2rY' = '988333099669901312- YDLEQN1weW2n1JP4lxJcFPppCsbvzQh 'ACCESS_SECRET =' K2IlUPur6jx7DO5S0HhhZW29H5AQFOvkMMevSsk9ZzwLk 'auth = tweepy. OAuthHandler (CONSUMER_KEY, CONSUMER_SECRET) auth.secure = auth.set_access_token vërtetë (ACCESS_KEY, ACCESS_SECRET) api = tweepy. API (auth) firebase = firebase. FirebaseApplication (' https:// iotca2 -12f48.firebaseio.com ', Asnjë) lcd = LCD () lcd.text (' Have fun! ', 1) lcd.text (' Fat i mirë! ', 2) fle (1) # Dritat e kuqe, të verdha, jeshile = [40, 38, 36] BUTTONS = [37, 33, 35] SHESNIME = ["E3", "A4", "E4"] # vlera që mund të ndryshoni që ndikojnë në shpejtësinë e lojës = 0.5 # flamuj të përdorur për të sinjalizuar lojën statusi është_displaying_pattern = Falsiteti është_i fituar_curr ent_level = E gabuar is_game_over = E pavërtetë # gjendja e lojës aktuale_level = 1 current_step_of_level = 0 model = def initialize_gpio (): GPIO.setmode (GPIO. BOARD) GPIO.setup (LIGHTS, GPIO. OUT, inicial = GPIO. LOW) GPIO konfigurimi (BUTTONS, GPIO. IN, pull_up_down = GPIO. PUD_DOWN) për i në rangun (3): GPIO.add_event_detect (BUTTONS , GPIO. FALLING, verify_player_selection) def verify_player_selection (channel_vel_vel_strevel_, is_game_over nëse jo nuk është_displaying_pattern dhe nuk is_won_current_level dhe nuk is_game_over: flash_led_for_button (channel) if channel == BUTTONS [model [current_step_of_level]: current_step_of_level += 1 if current_step_level_vel_vel_vel flash_led_for_button (button_channel): led = LIGHTS [BUTTONS.index (button_channel)] GPIO.putput (led, GPIO. HIGH) time.sleep (0.4) GPIO.output (led, GPIO. LOW) def add_new_color_to_pattern_), global_rent 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_ProportI: GPIO.output (LIGHTS [model , GPIO. HIGH) time.sleep (speed) GPIO.output (LIGHTS [model , GPIO. LOW) time.sleep (speed) is_displaying_pattern = Pritja e rreme def_for_player_to_repeat_pattern (): ndërkohë që nuk është_won_current_level dhe nuk 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_vel_velle_vel_level_vel_level_vel_level_vel_vel_vel_vel_vel_vel_vel_vel_vel GPIO.output (LIGHTS, GPIO. LOW) def send_data (rezultati): lcd.text ('Fundi i lojës,', 1) lcd.text ('Shihemi së shpejti!', 2) datestr = str (ora e datës) tani ()) ndërsa True: print (datestr) printoni (rezultati) të dhënat = {'Data': datestr, 'Rezultati': score} rezultati = firebase.post ('/scores/', data) printoni (rezultati) nëse rezultati> 2: statusi = 'Dikush ka shënuar' +(str (rezultati))+'në'+datestr+'!' api.update_status (statusi = statusi) pushim def_ start_game (): ndërsa True: add_new_color_to_pattern () display_pattern_to_player () wait_for_player_to_repeat_pattern () nëse është_game_over: send_data (niveli aktual - niveli 1) ngjyrat / "! Game over!.format (niveli aktual - 1)) gjumi (2) print ("Faleminderit për lojën! / n") lcd.text ('', 1) lcd.text ('', 2) koha e pushimit. gjumi (2) def start_game_monitor (): t = fillimi. Tema (target = start_game) t.daemon = True t.start () t.join () def main (): try: os.system ('cls' nëse os.name == 'nt 'else' clear ') print ("Filloni raundin e ri! / n") filloni_gpio () start_game_monitor () më në fund: GPIO.cleanup () nëse _name_ ==' _main_ ': main ()

Hapi 5: IOT App Watson në IBM Bluemix [Pjesa e Parë]

Konfiguroni Blumix IoT Service

  1. Vendosni një Lloji të Pajisjes Gateway
  2. Vendosni një pajisje

Bëni hapat 1 dhe 2 për 3 herë. Një RPi është për një seksion (Siguri/Mbrojtje/Argëtim)

Konfiguro Node-Red

Drejtoni nyjen me të kuqe

nyja-fillimi i kuq

  1. Shkoni për të menaxhuar paletën në menunë e hamburgerit (lart djathtas)
  2. Shkarkoni paletat e mëposhtme

    1. nyje-e kuqe-pult
    2. nyje-e kuqe-kontribuese-firebase
    3. nyje-e kuqe-kontribut-ibm-watson-iot

Hapi 6: Rrjedhat e Kuqe të Nyjes

Nyja Rrjedhat e Kuqe
Nyja Rrjedhat e Kuqe
Nyja Rrjedhat e Kuqe
Nyja Rrjedhat e Kuqe
Nyja Rrjedhat e Kuqe
Nyja Rrjedhat e Kuqe
Nyja Rrjedhat e Kuqe
Nyja Rrjedhat e Kuqe

Shkarkoni skedarët dhe eksportoni në nyjen tuaj të kuqe.

Nyja e Sigurisë-E kuqe

asnje

Nyja Rpi e Mbrojtjes-E kuqe

laserturret.txt

Argëtim Rpi Nyja-E kuqe

  • rrjedha argëtuese rpi.txt
  • ldr rpi flow.txt

IBM Bluemix Nyje-Kuqe

Recommended: