Სარჩევი:

მიმოხილვა: სახლის გასართობი და უსაფრთხოების სისტემა: 6 ნაბიჯი
მიმოხილვა: სახლის გასართობი და უსაფრთხოების სისტემა: 6 ნაბიჯი

ვიდეო: მიმოხილვა: სახლის გასართობი და უსაფრთხოების სისტემა: 6 ნაბიჯი

ვიდეო: მიმოხილვა: სახლის გასართობი და უსაფრთხოების სისტემა: 6 ნაბიჯი
ვიდეო: კახი კალაძე დატროლეს 😀🤣🤣 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 Cloud სერვისებს და ჩვენ გამოვიყენეთ Firebase როგორც ჩვენი მონაცემთა ბაზა.

იმ ნაბიჯების შეჯამება, რომლებიც აღწერილი იქნება

  • აპარატურის მოთხოვნები
  • უსაფრთხოება - როგორ შევქმნათ უსაფრთხოების სისტემა, რომელიც იყენებს RFID შეყვანას და გამოსახულების ამოცნობის პროგრამულ უზრუნველყოფას
  • დაცვა - როგორ შევქმნათ ლაზერული კოშკი
  • გასართობი - როგორ შევქმნათ სიმონ -ამბობს თამაში
  • IOT App Watson IBM Bluemix– ზე - როგორ გავაერთიანოთ ყველა სისტემა ერთ დაფაზე

გააგრძელეთ და შედით pdf ფაილში უფრო დეტალური ახსნისთვის, თუ როგორ უნდა შექმნათ ეს პროექტი.

ნაბიჯი 1: აპარატურის მოთხოვნა

ეს არის ის, რაც დაგჭირდებათ

  1. უსაფრთხოება

    • 1 ჟოლო პი
    • 1 LCD
    • 1 RFID მკითხველი
    • 1 PiCam
    • 2 RFID ბარათი/ღილაკი
    • X ქალი -> მამაკაცი მხტუნავი კაბელები
  2. თავდაცვა

    • 1 ჟოლო პი
    • 2 10 ㏀ რეზისტორი (ღილაკებისთვის)
    • 2 მიკრო სერვო
    • 1 650nm ლაზერული გადამცემის მოდული
    • 2 დააჭირეთ ღილაკს
    • 1 ბუზერი
    • 3 პატარა რეზინის ზოლები/საკაბელო ჰალსტუხი (დასაფიქსირებლად)
    • X ქალი -> მამაკაცი მხტუნავი კაბელები
    • X რეგულარული გადახტომის კაბელები
    • 1 ტრანზისტორი
    • 1 კონდენსატორი
  3. გასართობი

    • 1 ჟოლო პი
    • 3 1 ㏀ რეზისტორი (LED- ებისთვის)
    • 1 10㏀ რეზისტორი (LDR– ისთვის)
    • 3 LED (განსხვავებული ფერი)
    • 3 ღილაკი
    • 1 LDR
    • 1 LCD
    • 1 პირ მოძრაობის სენსორი
    • X ქალი -> მამაკაცი მხტუნავი კაბელები
    • X რეგულარული გადახტომის კაბელები

ნაბიჯი 2: უსაფრთხოება

უსაფრთხოება
უსაფრთხოება
უსაფრთხოება
უსაფრთხოება
უსაფრთხოება
უსაფრთხოება

უსაფრთხოების სისტემის აპარატურის შექმნა

შეაერთეთ სქემები, როგორც ნაჩვენებია მოციმციმე დიაგრამაში

უსაფრთხოების სისტემის პროგრამული უზრუნველყოფის შექმნა

  1. კონფიგურაცია AWS ნივთის შექმნით
  2. დააინსტალირეთ AWS პითონის ბიბლიოთეკა
  3. დააინსტალირეთ LCD ბიბლიოთეკა
  4. დააინსტალირეთ RFID ბიბლიოთეკა
  5. დააინსტალირეთ Firebase
  6. S3 შენახვის დაყენება
  7. დააინსტალირეთ ბოტო ჟოლოს პიზე
  8. დააინსტალირეთ AWS ClI ჟოლოს პიზე
  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 = servo2 დაწყების დრო. ძილი (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 #გამოთვალეთ დრო ტალღის ნახევრისთვის numCycles = int (სიგრძე * სიხშირე) #ტალღების რიცხვი = ხანგრძლივობა x სიხშირე i დიაპაზონში): #დაიწყეთ მარყუჟი 0 -დან ცვლადის "ციკლების" ზემოთ გამოთვლილი buzzer_pin.on () time.sleep (delayValue) buzzer_pin.off () time.sleep (delayValue)

def თამაში (მელოდია, ტემპი, პაუზა, ტემპი = 0.800):

for i in range (0, len (მელოდია)): # დაკვრა სიმღერაში შენიშვნაDuration = ტემპი/ტემპი ხმაური (მელოდია , noteDuration) # შეცვალეთ სიხშირე სიმღერის ნოტის გასწვრივ პაუზა BetweenNotes = შენიშვნა ხანგრძლივობა * პაუზის დრო. ძილი (პაუზა შენიშვნებს შორის)

მართალია:

laserturret () შესვენება;

ნაბიჯი 4: გართობა

Გასართობი
Გასართობი
Გასართობი
Გასართობი
Გასართობი
Გასართობი

გასართობი აპარატურის შექმნა

ჩვენ ვქმნით სიმონ-ამბობს ღილაკების თამაშს, რომელიც უნდა დაიცვას LED- ების შუქის შაბლონმა და დააჭიროს შესაბამის ღილაკებს. ის ატვირთავს ქულებს და დროის ნიშნულს firebase NoSQL მონაცემთა ბაზაში, დაფების შემდგომი გამოყენებისათვის.

შეაერთეთ სქემები, როგორც ეს ნაჩვენებია ფრიტინგის დიაგრამაში.

გასართობი პროგრამული უზრუნველყოფის შექმნა

გასართობი.პია

იმპორტი 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 (ავტ) firebase = firebase. FirebaseApplication ("https:// iotca2 -12f48.firebaseio.com ', არცერთი) lcd = LCD () lcd.text (' გაერთეთ! ', 1) lcd.text (' წარმატებებს გისურვებთ! ', 2) ძილი (1) # წითელი, ყვითელი, მწვანე შუქები = [40, 38, 36] ღილაკები = [37, 33, 35] შენიშვნები = ["E3", "A4", "E4"] # მნიშვნელობა, რომლის შეცვლაც შეგიძლია შეცვალო თამაშის სიჩქარეზე = 0.5 # დროშა, რომელიც გამოიყენება თამაშის სიგნალისთვის სტატუსი is_displaying_pattern = ყალბი არის_ მოიგო 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 კონფიგურაცია (ღილაკები, GPIO. IN, pull_up_down = GPIO. PUD_DOWN) i დიაპაზონში (3): GPIO.add_event_detect (ღილაკები , GPIO. FALLING, verify_player_selection) def verify_player_selection (არხი): გლობალური დონე, დონე_ is_game_over თუ არა is_displaying_pattern and not is_won_current_level და not_megame_over: flash_led_for_button (channel) if channel == BUTTONS [pattern [current_step_of_level]: current_step_of_level += 1 if current_step_vel = 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 (): გლობალური 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_pisplaying_pattern is_displaying_pattern = True inI: 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 (): მიუხედავად იმისა, რომ ის არ არის_მოპოვებული_ დონე და არ არის_თამაში: დრო. ძილი (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_level_velle_level_velle_level_velle_level_velver GPIO.output (LIGHTS, GPIO. LOW) def send_data (score): lcd.text ('თამაშის დასასრული,', 1) lcd.text ('შევხვდებით მალე!', 2) datestr = str (თარიღი. ახლა ()) ხოლო True: print (datestr) დაბეჭდვა (ქულა) მონაცემები = {'თარიღი': datestr, 'ქულა': score} result = firebase.post ('/scores/', data) print (result) if score> 2: status = 'ვიღაცამ გაიტანა' +(str (ანგარიში))+'on'+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_ame_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 ("დაიწყე ახალი რაუნდი! / n") initialize_gpio () start_game_monitor () საბოლოოდ: GPIO.cleanup () if _name_ ==' _main_ ': main ()

ნაბიჯი 5: IOT აპლიკაცია უოტსონი IBM Bluemix– ზე [ნაწილი პირველი]

დააყენეთ Blumix IoT სერვისი

  1. დააყენეთ Gateway მოწყობილობის ტიპი
  2. მოწყობილობის დაყენება

შეასრულეთ ნაბიჯები 1 და 2 3 ჯერ. ერთი RPi არის ერთი განყოფილებისთვის (უსაფრთხოება/დაცვა/გართობა)

დააყენეთ Node-Red

გაუშვით კვანძი-წითელი

კვანძ-წითელი დაწყება

  1. გადადით პალიტრის მართვისთვის ჰამბურგერის მენიუში (ზედა მარჯვენა)
  2. ჩამოტვირთეთ შემდეგი პალეტები

    1. კვანძი-წითელი დაფა
    2. node-red-contrib-firebase
    3. კვანძი-წითელი-წვლილი-ibm-watson-iot

ნაბიჯი 6: კვანძის წითელი ნაკადები

კვანძი წითელი ნაკადები
კვანძი წითელი ნაკადები
კვანძი წითელი ნაკადები
კვანძი წითელი ნაკადები
კვანძი წითელი ნაკადები
კვანძი წითელი ნაკადები
კვანძი წითელი ნაკადები
კვანძი წითელი ნაკადები

ჩამოტვირთეთ ფაილები და გადაიტანეთ თქვენს წითელ კვანძში.

უსაფრთხოების კვანძი-წითელი

არცერთი

თავდაცვის Rpi კვანძი-წითელი

laserturret.txt

გასართობი Rpi Node-Red

  • გასართობი rpi ნაკადი. txt
  • ldr rpi ნაკადი. txt

IBM Bluemix Node-Red

გირჩევთ: