Բովանդակություն:

Ակնարկ. Տնային զվարճանքի և անվտանգության համակարգ. 6 քայլ
Ակնարկ. Տնային զվարճանքի և անվտանգության համակարգ. 6 քայլ

Video: Ակնարկ. Տնային զվարճանքի և անվտանգության համակարգ. 6 քայլ

Video: Ակնարկ. Տնային զվարճանքի և անվտանգության համակարգ. 6 քայլ
Video: Ահա, թե ինչու են գիշերվա կեսին ձգվում ոտքի մկանները. ընդամենը 2 բաղադրիչ, և 2024, Հունիսի
Anonim
Ակնարկ. Տնային զվարճանքի և անվտանգության համակարգ
Ակնարկ. Տնային զվարճանքի և անվտանգության համակարգ
Ակնարկ. Տնային զվարճանքի և անվտանգության համակարգ
Ակնարկ. Տնային զվարճանքի և անվտանգության համակարգ
Ակնարկ. Տնային զվարճանքի և անվտանգության համակարգ
Ակնարկ. Տնային զվարճանքի և անվտանգության համակարգ

Դիմումի մասին

Այս IOT համակարգը տնային զվարճանքի և անվտանգության համակարգ է:

  1. Անվտանգություն

    1. Հպեք RFID քարտին և մուտքագրմանը պահվում են Firebase- ում:
    2. Եթե լիազորված եք, կարող եք խաղաղ մուտք գործել, և նկարը վերցվում և վերբեռնվում է S3
    3. Եթե չարտոնված է, պաշտպանության բաժինը մտնում է, և LCD էկրանը կասի, որ դուք լիազորված չեք:
  2. Պաշտպանություն

    1. Սեղմեք վահանակի կոճակը:
    2. Լազերային պտուտահաստոցները կհարձակվեն պատահականորեն և արագությամբ:
  3. Ժամանց

    1. Եթե շարժումը հայտնաբերվի, խաղը կսկսվի:
    2. Օգտագործողը խաղը խաղալուց հետո հաշիվը պահվում է Firebase- ում:
    3. LDR- ի արժեքները կվերցվեն և դուրս կգան վահանակի վրա:

Այս ծրագիրը վերահսկելի է և տեսանելի է IBM Node-Red վեբ սերվերի միջոցով: Մենք օգտագործում ենք AWS և IBM ամպային ծառայությունները, և մենք օգտագործում էինք Firebase- ը որպես մեր տվյալների բազա:

Այն քայլերի ամփոփում, որոնք նկարագրվելու են

  • Սարքավորման պահանջներ
  • Անվտանգություն - Ինչպես ստեղծել անվտանգության համակարգ, որն օգտագործում է RFID մուտքագրում և պատկերի ճանաչման ծրագրակազմ
  • Պաշտպանություն - Ինչպես ստեղծել լազերային պտուտահաստոց
  • Entամանց - Ինչպես ստեղծել Simon -say խաղ
  • IOT App Watson IBM Bluemix- ում - Ինչպես միացնել բոլոր համակարգերը մեկ վահանակի մեջ

Շարունակեք և մուտք գործեք pdf ֆայլ ՝ ավելի մանրամասն բացատրելու համար, թե ինչպես ստեղծել այս նախագիծը:

Քայլ 1: Սարքավորման պահանջ

Սա այն է, ինչ ձեզ հարկավոր կլինի

  1. Անվտանգություն

    • 1 Ազնվամորի Պի
    • 1 LCD
    • 1 RFID ընթերցող
    • 1 PiCam
    • 2 RFID քարտ/կոճակ
    • X Իգական -> Արական թռիչքային մալուխներ
  2. Պաշտպանություն

    • 1 Ազնվամորի Պի
    • 2 10 ㏀ Resistor (կոճակների համար)
    • 2 միկրո սերվո
    • 1 650 նմ լազերային հաղորդիչ մոդուլ
    • 2 կոճակ
    • 1 բզզոց
    • 3 փոքր ռետինե ժապավեններ/մալուխային կապեր (ամրացման համար)
    • X Իգական -> Արական թռիչքային մալուխներ
    • X Կանոնավոր ցատկման մալուխներ
    • 1 տրանզիստոր
    • 1 կոնդենսատոր
  3. Զվարճություններ

    • 1 Ազնվամորի Պի
    • 3 1 ㏀ դիմադրություն (LED- ների համար)
    • 1 10㏀ դիմադրություն (LDR- ի համար)
    • 3 LED (տարբեր գույներ)
    • 3 կոճակ
    • 1 LDR
    • 1 LCD
    • 1 Pir շարժման ցուցիչ
    • X Իգական -> Արական թռիչքային մալուխներ
    • X Կանոնավոր ցատկման մալուխներ

Քայլ 2: Անվտանգություն

Անվտանգություն
Անվտանգություն
Անվտանգություն
Անվտանգություն
Անվտանգություն
Անվտանգություն

Անվտանգության համակարգի սարքավորումների ստեղծում

Միացրեք սխեմաները, ինչպես ցույց է տրված դիագրամում

Անվտանգության համակարգի ծրագրակազմի ստեղծում

  1. Կարգավորեք AWS- ը ՝ ստեղծելով բան
  2. Տեղադրեք AWS Python գրադարանը
  3. Տեղադրեք LCD գրադարան
  4. Տեղադրեք RFID գրադարանը
  5. Կարգավորել Firebase- ը
  6. Կարգավորել S3 պահեստը
  7. Տեղադրեք Boto- ն Raspberry Pi- ի վրա
  8. Տեղադրեք AWS ClI- ը Raspberry Pi- ի վրա
  9. Ստեղծեք AWS հավատարմագրեր
  10. Կարգավորել AWS- ը
  11. Վերբեռնեք security.py- ն RPi- ում
  12. Վերբեռնեք imagerecognition.py- ը RPi- ին

security.py- ն կոդ է, որը կարդալու է rfid մուտքերը և հայտնաբերելու է, արդյոք օգտվողը ներխուժող է, թե ոչ: Եթե օգտագործողը ճանաչվի, պատկերը կվերցվի և կբեռնվի s3- ում: Կոդը նաև հրապարակում է մի թեմայի aws MQTT- ում

Քայլ 3: Պաշտպանություն

Պաշտպանություն
Պաշտպանություն
Պաշտպանություն
Պաշտպանություն
Պաշտպանություն
Պաշտպանություն

Լազերային պտուտահաստոց սարքավորումների ստեղծում

  1. Մենք ստեղծում ենք լազերային պտուտահաստոց ՝ օգտագործելով 2 սերվո և 1 լազերային մոդուլ
  2. Միացրեք սխեմաները, ինչպես ցույց է տրված դիագրամում

Լազերային պտուտահաստոց ծրագրակազմի ստեղծում

Ստորև բերված ծածկագիրը կստիպի լազերային պտուտահաստոցը կրակել պատահական ուղղություններով, պատահական պայթյուններով և արագությամբ:

laserturret.py

gpiozero ներմուծման LED- ից, Buzzer, Button, Servoimport ժամանակ ազդանշանի ներմուծման դադարից ներմուծման պատահական

#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 = Սերվո (24)

def ledON ():

led.on () print («LED- ը միացված է») def ledOFF (): led.off () print («LED- ն անջատված է»)

def fire ():

տպել («տաք զենքեր») 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) կրակոց = 0 մանրամասնություն = [timeBetweenBurst, timeBetweenShots, servo1.value, servo2.value, numShots] տպել (մանրամասն) նկարահանման ժամանակ <numshots: shot+= "1" servo1.value = "servo1start" servo2.value = "servo2start" servo1start = "servo1change" servo2start = "servo2change" fire () = "" time.sleep (timebetweenshots) = "" time.sleep (timebetweenburst)

նշումներ = {

«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 (հաճախականություն, երկարություն). #ստեղծեք «buzz» գործառույթը և կերակրեք այն սկիպիդարով և տևողությամբ)

եթե (հաճախականությունը == 0):

ժամանակ. քուն (երկարություն) վերադարձի ժամանակաշրջան = 1.0 / հաճախականություն #հաճախականության հետաձգումԱրժեքը = ժամանակահատվածը / 2 #հաշվել ալիքի կեսի ժամանակը num): #սկսեք մի օղակ 0 -ից մինչև buzzer_pin- ի վերը հաշվարկված փոփոխական «ցիկլեր»: () time.sleep (delayValue) buzzer_pin.off () time.sleep (delayValue) արժեքը

def խաղ (մեղեդի, տեմպ, դադար, տեմպ = 0.800):

i- ի միջակայքում (0, լեն (մեղեդի)). pauseBetweenNotes)

իսկ ճշմարիտ:

laserturret () ընդմիջում;

Քայլ 4: ertainամանց

Ժամանց
Ժամանց
Ժամանց
Ժամանց
Ժամանց
Ժամանց

Theամանցի սարքավորումների ստեղծում

Մենք ստեղծում ենք Simon-say կոճակների խաղը, որը պետք է հետևել լուսադիոդների լուսավորության օրինակին և սեղմել համապատասխան կոճակները: Այն վերբեռնում է միավորներն ու ժամանակային նշանը firebase NoSQL տվյալների բազայում ՝ վահանակներում հետագա օգտագործման համար:

Միացրեք սխեմաները, ինչպես ցույց է տրված Fritzing դիագրամում:

Ertainամանցի ծրագրակազմի ստեղծում

entertainment.py

ներմուծման RPi. GPIO քանի որ GPIOimport Threading ներմուծման ժամանակ ներմուծման Պատահական ներմուծման OS Ներմուծման tweepy ից rpi_lcd Ներմուծման LCD ից subprocess Ներմուծման զանգի ժամանակի Ներմուծման քնից datetime Ներմուծման datetime-ից firebase ներմուծման 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 ', Չկա) lcd = LCD () lcd.text (' Have fun! ', 1) lcd.text (' Good Luck! ', 2) քնել (1) # Կարմիր, դեղին, կանաչ ԼՈIGHՅՍԵՐ = [40, 38, 36] ԿՈUTՅԹՆԵՐ = [37, 33, 35] ESԱՆՈԹԱԳՐՈԹՅՈՆՆԵՐ = ["E3", "A4", "E4"] # արժեքներ, որոնք կարող եք փոխել, որոնք ազդում են խաղի արագության վրա = 0.5 # դրոշ, որոնք օգտագործվում են խաղը ազդանշանելու համար կարգավիճակը is_displaying_pattern = False is_won_curr ent_level = Կեղծ is_game_over = Սխալ # խաղի վիճակ 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 կարգավորում (BUTTONS, GPIO. IN, pull_up_down = GPIO. PUD_DOWN) i in տիրույթում (3). GPIO.add_event_detect (BUTTONS , GPIO. FALLING, verify_player_selection) def verify_player_selection (channel_level_level, is_game_over եթե ոչ is_displaying_pattern and not is_won_current_level and not_came_over: flash_led_for_button (channel) if channel == BUTTONS [pattern [current_step_of_level]: current_step_of_level += 1 if current_step_level_vel_mevel 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 կուր 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 = inանապարհային ճշգրիտ ՝ 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 (), մինչդեռ ոչ is_won_current_level եւ ոչ is_game_over: time.sleep (0.1) def reset_board_for_new_game (): Global is_displaying_pattern, is_won_current_level, is_game_over գլոբալ current_level, current_step_of_level, օրինակ is_displaying_pattern = Կեղծ is_won_current_level = Կեղծ is_game_over = Կեղծ current_level = 1 current_step_of_level = 0 օրինակը = GPIO.output (LIGHTS, GPIO. LOW) def send_data (հաշիվ). այժմ ()) իսկ True: print (datestr) print (score) data = {'Date': datestr, 'Score': score} result = firebase.post ('/scores/', data) print (result) if score> 2: status = 'Ինչ -որ մեկը գոլ է խփել' +(փող (հաշիվ))+''+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_game_over: send_data (current_level - 1) print ("Game Over!").ֆորմատ (ընթացիկ_մակարդակ - 1)) քուն (2) տպագիր («Շնորհակալություն խաղալու համար / n») lcd.text ('', 1) lcd.text ('', 2) ընդմիջման ժամանակը: քուն (2) def start_game_monitor (): t = threading. Thread (target = start_game) t.daemon = True t.start () t.join () def main (): try: os.system ('cls' եթե os.name == 'nt 'else' clear ') print ("Begin new round! / n") initialize_gpio () start_game_monitor () վերջապես `GPIO.cleanup () if _name_ ==' _main_ ': main ()

Քայլ 5. IOT App Watson- ը IBM Bluemix- ում [մաս առաջին]

Կարգավորեք Blumix IoT ծառայությունը

  1. Կարգավորեք դարպասի սարքի տեսակը
  2. Կարգավորել Սարքը

Կատարեք 1 -ին և 2 -րդ քայլերը 3 անգամ: Մեկ RPi- ն նախատեսված է մեկ բաժնի համար (անվտանգություն/պաշտպանություն/ժամանց)

Կարգավորեք Node-Red- ը

Գործարկել հանգույց-կարմիր

հանգույց-կարմիր սկիզբ

  1. Գնացեք պալիտրա կառավարելու համար համբուրգերների ընտրացանկում (վերևի աջ)
  2. Ներբեռնեք հետևյալ պալետները

    1. հանգույց-կարմիր-վահանակ
    2. node-red-contrib-firebase
    3. հանգույց-կարմիր-ներդրում-ibm-watson-iot

Քայլ 6. Հանգույցի կարմիր հոսքեր

Հանգույցի կարմիր հոսքեր
Հանգույցի կարմիր հոսքեր
Հանգույցի կարմիր հոսքեր
Հանգույցի կարմիր հոսքեր
Հանգույցի կարմիր հոսքեր
Հանգույցի կարմիր հոսքեր
Հանգույցի կարմիր հոսքեր
Հանգույցի կարմիր հոսքեր

Ներբեռնեք ֆայլերը և արտահանեք ձեր հանգույց-կարմիր:

Անվտանգության հանգույց-կարմիր

ոչ ոք

Պաշտպանության Rpi հանգույց-կարմիր

laserturret.txt

Entամանց Rpi Node-Red

  • զվարճանքի rpi flow.txt
  • ldr rpi հոսք. txt

IBM Bluemix Node-Red

Խորհուրդ ենք տալիս: