Mục lục:

Tổng quan: Hệ thống giải trí và an ninh tại nhà: 6 bước
Tổng quan: Hệ thống giải trí và an ninh tại nhà: 6 bước

Video: Tổng quan: Hệ thống giải trí và an ninh tại nhà: 6 bước

Video: Tổng quan: Hệ thống giải trí và an ninh tại nhà: 6 bước
Video: Nhanh trí dùng ba,o cao s,u#shorts 2024, Tháng mười một
Anonim
Tổng quan: Hệ thống An ninh và Giải trí Gia đình
Tổng quan: Hệ thống An ninh và Giải trí Gia đình
Tổng quan: Hệ thống giải trí và an ninh tại nhà
Tổng quan: Hệ thống giải trí và an ninh tại nhà
Tổng quan: Hệ thống giải trí và an ninh tại nhà
Tổng quan: Hệ thống giải trí và an ninh tại nhà

Giới thiệu về ứng dụng

Hệ thống IOT này là Hệ thống An ninh và Giải trí Gia đình.

  1. Bảo vệ

    1. Nhấn vào Thẻ RFID và thông tin đầu vào được lưu vào Firebase.
    2. Nếu được cho phép, bạn có thể tham gia một cách hòa bình và ảnh được chụp và tải lên S3
    3. Nếu trái phép, phần bảo vệ sẽ xuất hiện và Màn hình LCD sẽ cho biết bạn không được phép.
  2. Phòng thủ

    1. Nhấn nút trên bảng điều khiển.
    2. Các tháp pháo laser sẽ tấn công theo tốc độ và tốc độ ngẫu nhiên.
  3. Giải trí

    1. Nếu phát hiện chuyển động, trò chơi sẽ bắt đầu.
    2. Sau khi người dùng chơi trò chơi, điểm số được lưu vào Firebase.
    3. Giá trị LDR sẽ được lấy và xuất trên bảng điều khiển.

Ứng dụng này có thể điều khiển và xem được thông qua máy chủ web IBM Node-Red. Chúng tôi sử dụng AWS và Dịch vụ đám mây của IBM và chúng tôi đã sử dụng Firebase làm cơ sở dữ liệu của mình.

Tóm tắt các bước sẽ được mô tả

  • yêu cầu phần cứng
  • Bảo mật - Cách tạo hệ thống bảo mật sử dụng đầu vào RFID và phần mềm nhận dạng hình ảnh
  • Phòng thủ - Cách tạo tháp pháo laser
  • Giải trí - Cách tạo trò chơi Simon-say
  • IOT App Watson trên IBM Bluemix - Cách tích hợp tất cả các hệ thống vào một bảng điều khiển

Hãy tiếp tục và truy cập tệp pdf để được giải thích chi tiết hơn về cách tạo dự án này.

Bước 1: Yêu cầu phần cứng

Đây là những gì bạn sẽ cần

  1. Bảo vệ

    • 1 Raspberry Pi
    • 1 màn hình LCD
    • 1 đầu đọc RFID
    • 1 PiCam
    • 2 Thẻ / Nút RFID
    • X Nữ -> Cáp jumper nam
  2. Phòng thủ

    • 1 Raspberry Pi
    • 2 10 ㏀ Điện trở (cho các nút)
    • 2 Micro Servo
    • 1 Mô-đun phát Laser 650nm
    • 2 nút nhấn
    • 1 còi
    • 3 Dây cao su nhỏ / Dây cáp (để cố định)
    • X Nữ -> Cáp jumper nam
    • X Cáp nhảy thông thường
    • 1 bóng bán dẫn
    • 1 tụ điện
  3. Giải trí

    • 1 Raspberry Pi
    • 3 1 ㏀ Điện trở (đối với đèn LED)
    • 1 Điện trở 10㏀ (dành cho LDR)
    • 3 đèn LED (Màu khác nhau)
    • 3 nút
    • 1 LDR
    • 1 màn hình LCD
    • 1 Cảm biến chuyển động Pir
    • X Nữ -> Cáp jumper nam
    • X Cáp nhảy thông thường

Bước 2: Bảo mật

Bảo vệ
Bảo vệ
Bảo vệ
Bảo vệ
Bảo vệ
Bảo vệ

Tạo phần cứng hệ thống bảo mật

Kết nối các mạch như được hiển thị trong sơ đồ fritzing

Tạo phần mềm hệ thống bảo mật

  1. Định cấu hình AWS bằng cách tạo một thứ
  2. Cài đặt Thư viện Python AWS
  3. Cài đặt Thư viện LCD
  4. Cài đặt Thư viện RFID
  5. Thiết lập Firebase
  6. Thiết lập bộ nhớ S3
  7. Cài đặt Boto trên Raspberry Pi
  8. Cài đặt AWS ClI trên Raspberry Pi
  9. Tạo thông tin đăng nhập AWS
  10. Định cấu hình AWS
  11. Tải lên security.py lên RPi
  12. Tải imagerecognition.py lên RPi

security.py là một mã sẽ đọc các đầu vào rfid và phát hiện xem người dùng có phải là kẻ xâm nhập hay không. Nếu người dùng được nhận dạng, một hình ảnh sẽ được chụp và tải lên s3. Mã cũng xuất bản thành một chủ đề trong aws MQTT

Bước 3: Phòng thủ

Phòng thủ
Phòng thủ
Phòng thủ
Phòng thủ
Phòng thủ
Phòng thủ

Tạo phần cứng tháp pháo laser

  1. Chúng tôi tạo tháp pháo laser bằng cách sử dụng 2 servo và 1 mô-đun Laser
  2. Kết nối các mạch như được hiển thị trong sơ đồ fritzing

Tạo phần mềm tháp pháo laser

Đoạn mã dưới đây sẽ làm cho tháp pháo laser bắn theo các hướng ngẫu nhiên, theo tốc độ và phát nổ ngẫu nhiên

laserturret.py

từ đèn LED nhập gpiozero, Buzzer, Nút, ServoiNhập thời gian từ nhập tín hiệu tạm dừng nhập ngẫu nhiên

#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 = Servo (24)

def ledON ():

led.on () print ("LED đang bật") def ledOFF (): led.off () print ("LED đang tắt")

def fire ():

print ("vũ khí nóng") 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) shot = 0 detail = [timeBetweenBurst, timeBetweenShots, servo1.value, servo2.value, numShots] print (detail) while shot <numshots: shot + = "1" servo1.value = "servo1start" servo2.value = "servo2start" servo1start = "servo1change" servo2start = "servo2change" fire () = "" time.sleep (timebetweenshots) = "" time.sleep (timebetweenburst)

ghi chú = {

'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 (tần suất, độ dài): # tạo hàm "buzz" và cấp cho nó cao độ và thời lượng)

nếu (tần số == 0):

time.sleep (độ dài) chu kỳ trả về = 1,0 / tần số # độ trễ tần số trễValue = khoảng thời gian / 2 # tính thời gian cho một nửa của sóng numCycles = int (độ dài * tần số) #num of wave = duratime x freq for i in range (numCycles): # bắt đầu một vòng lặp từ 0 đến biến "chu kỳ" được tính ở trên buzzer_pin.on () time.sleep (delayValue) buzzer_pin.off () time.sleep (delayValue)

chơi def (giai điệu, nhịp độ, tạm dừng, nhịp độ = 0,800):

for i in range (0, len (giai điệu)): # Phát nốt bài hátDuration = nhịp độ / nhịp độ buzz (giai điệu , noteDuration) # Thay đổi tần số dọc theo nốt bài hát pauseBetweenNotes = noteDuration * pause time.sleep (tạm dừngBetweenNotes)

trong khi Đúng:

laserturret () phá vỡ;

Bước 4: Giải trí

Giải trí
Giải trí
Giải trí
Giải trí
Giải trí
Giải trí

Tạo phần cứng giải trí

Chúng tôi tạo trò chơi nút Simon-said, bạn phải tuân theo mô hình đèn LED sáng lên và nhấn các nút tương ứng. Nó tải lên điểm số và dấu thời gian vào cơ sở dữ liệu Firebase NoSQL để sử dụng thêm trong bảng điều khiển.

Kết nối các mạch như trong sơ đồ Fritzing.

Tạo phần mềm giải trí

giải trí.py

nhập khẩu RPi. GPIO như GPIOimport thời gian luồng nhập khẩu tweepy nhập khẩu ngẫu nhiên import os nhập khẩu từ rpi_lcd nhập khẩu LCD từ cuộc gọi subprocess nhập khẩu từ thời điểm nhập khẩu ngủ từ datetime datetime nhập khẩu từ căn cứ hỏa lực CONSUMER_KEY nhập khẩu căn cứ hỏa lực = '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) căn cứ hỏa lực = firebase. FirebaseApplication (' https:// iotca2 -12f48.firebaseio.com ', None) lcd = LCD () lcd.text (' Chúc các bạn vui vẻ! ', 1) lcd.text (' Good Luck! ', 2) sleep (1) # ĐÈN Đỏ, Vàng, Xanh lục = [40, 38, 36] NÚT = [37, 33, 35] LƯU Ý = ["E3", "A4", "E4"] # giá trị bạn có thể thay đổi ảnh hưởng đến tốc độ chơi trò chơi = 0,5 # cờ dùng để báo hiệu trò chơi status is_displaying_pattern = False is_won_curr ent_level = False is_game_over = False # game state 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. thiết lập (BUTTONS, GPIO. IN, pull_up_down = GPIO. PUD_DOWN) cho tôi trong phạm vi (3): GPIO.add_event_detect (BUTTONS , GPIO. FALLING, verify_player_selection) def verify_player_selection (channel): global current_step_of_current, islevel, current_level is_game_over nếu không phải is_displaying_pattern và không phải is_won_current_level và không phải 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_level = true islevel_level_dịch: 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_level, hay gây 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 = True GPIGHIO.output trong dải: GPIO.output (LIGHTS [pattern , GPIO. HIGH) time.sleep (tốc độ) GPIO.output (LIGHTS [pattern , GPIO. LOW) time.sleep (speed) is_displaying_pattern = False def wait_for_player_to_repeat_pattern (): while not is_won_current_level và not is_game_over: time.sleep (0.1) def reset_board_board_for_new_game (): global is_displaying_pattern, is_won_current_level, is_game_over global current_level, current_step_of_level, pattern is_displaying_patter_sevel hiện tại = False_stgame_dạng = False_ hiện tại là hiện tại GPIO.output (LIGHTS, GPIO. LOW) def send_data (score): lcd.text ('End of game,', 1) lcd.text ('Hẹn gặp lại!', 2) datestr = str (datetime. now ()) while True: print (datestr) print (score) data = {'Date': datestr, 'Score': score} result = firebase.post ('/ Score /', data) print (result) if score> 2: status = 'Ai đó đã ghi bàn' + (str (điểm)) + '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 is_game_over: send_data (current_level - 1) print ("Game Over! Score!.format (current_level - 1)) sleep (2) print ("Cảm ơn bạn đã chơi! / n") lcd.text ('', 1) lcd.text ('', 2) break time.sleep (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 ("Bắt đầu vòng mới! / n") Initialize_gpio () start_game_monitor () cuối cùng: GPIO.cleanup () if _name_ ==' _main_ ': main ()

Bước 5: IOT App Watson trên IBM Bluemix [Phần một]

Thiết lập Dịch vụ Blumix IoT

  1. Thiết lập loại thiết bị cổng
  2. Thiết lập một thiết bị

Thực hiện bước 1 và bước 2 trong 3 lần. Một RPi dành cho một phần (An ninh / Quốc phòng / Giải trí)

Thiết lập Node-Red

Chạy nút đỏ

nút đỏ bắt đầu

  1. Đi tới quản lý bảng màu trong menu bánh hamburger (trên cùng bên phải)
  2. Tải xuống các bảng xếp hạng sau

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

Bước 6: Node Red Flows

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ải xuống các tệp và xuất sang nút màu đỏ của bạn.

Nút bảo mật-Đỏ

không ai

Defense Rpi Node-Red

laserturret.txt

Entertainment Rpi Node-Red

  • rpi giải trí flow.txt
  • ldr rpi flow.txt

IBM Bluemix Node-Red

Đề xuất: