Mục lục:
- Bước 1: Yêu cầu phần cứng
- Bước 2: Bảo mật
- Bước 3: Phòng thủ
- Bước 4: Giải trí
- Bước 5: IOT App Watson trên IBM Bluemix [Phần một]
- Bước 6: Node Red Flows
Video: Tổng quan: Hệ thống giải trí và an ninh tại nhà: 6 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:34
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.
-
Bảo vệ
- Nhấn vào Thẻ RFID và thông tin đầu vào được lưu vào Firebase.
- 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
- 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.
-
Phòng thủ
- Nhấn nút trên bảng điều khiển.
- Các tháp pháo laser sẽ tấn công theo tốc độ và tốc độ ngẫu nhiên.
-
Giải trí
- Nếu phát hiện chuyển động, trò chơi sẽ bắt đầu.
- Sau khi người dùng chơi trò chơi, điểm số được lưu vào Firebase.
- 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
-
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
-
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
-
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
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
- Định cấu hình AWS bằng cách tạo một thứ
- Cài đặt Thư viện Python AWS
- Cài đặt Thư viện LCD
- Cài đặt Thư viện RFID
- Thiết lập Firebase
- Thiết lập bộ nhớ S3
- Cài đặt Boto trên Raspberry Pi
- Cài đặt AWS ClI trên Raspberry Pi
- Tạo thông tin đăng nhập AWS
- Định cấu hình AWS
- Tải lên security.py lên RPi
- 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ủ
Tạo phần cứng tháp pháo laser
- 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
- 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í
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
- Thiết lập loại thiết bị cổng
- 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
- Đi tới quản lý bảng màu trong menu bánh hamburger (trên cùng bên phải)
-
Tải xuống các bảng xếp hạng sau
- node-red-dashboard
- node-red-Contrib-firebase
- node-red-Contrib-ibm-watson-iot
Bước 6: 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:
An ninh mạng-vật lý của Bãi đậu xe thông minh và Kiểm soát giao thông: 6 bước
An ninh mạng-vật lý của Bãi đậu xe thông minh và Kiểm soát giao thông: Internet đang phát triển với hàng tỷ thiết bị bao gồm ô tô, cảm biến, máy tính, máy chủ, tủ lạnh, thiết bị di động và nhiều hơn nữa với tốc độ chưa từng có. Điều này dẫn đến nhiều rủi ro và lỗ hổng trong cơ sở hạ tầng, hoạt động
GPS Car Tracker Với Thông báo SMS và Tải lên Dữ liệu Thingspeak, Dựa trên Arduino, Tự động hóa tại nhà: 5 bước (có Hình ảnh)
Công cụ theo dõi ô tô GPS với Thông báo SMS và Tải lên dữ liệu Thingspeak, Dựa trên Arduino, Tự động hóa tại nhà: Tôi đã tạo công cụ theo dõi GPS này vào năm ngoái và vì nó hoạt động tốt nên tôi đã xuất bản nó ngay bây giờ trên Có thể hướng dẫn. Nó được kết nối với các phụ kiện cắm trong cốp xe của tôi. Bộ theo dõi GPS tải lên vị trí xe, tốc độ, hướng và nhiệt độ đo được thông qua dữ liệu di động
Bắt đầu với Tự động hóa tại nhà: Cài đặt Trợ lý tại nhà: 3 bước
Bắt đầu với Tự động hóa gia đình: Cài đặt Trợ lý gia đình: Bây giờ chúng tôi sẽ bắt đầu chuỗi tự động hóa gia đình, nơi chúng tôi tạo ra một ngôi nhà thông minh cho phép chúng tôi điều khiển những thứ như đèn, loa, cảm biến, v.v. bằng cách sử dụng trung tâm cùng với trợ lý giọng nói. Trong bài đăng này, chúng ta sẽ học cách nhập
Nhận thông báo qua email từ hệ thống an ninh gia đình của bạn bằng Arduino: 3 bước
Nhận thông báo qua email từ hệ thống an ninh gia đình của bạn bằng Arduino: Sử dụng Arduino, chúng tôi có thể dễ dàng trang bị thêm chức năng email cơ bản vào hầu hết mọi cài đặt hệ thống bảo mật hiện có. Điều này đặc biệt thích hợp cho các hệ thống cũ hơn mà rất có thể đã bị ngắt kết nối khỏi dịch vụ giám sát từ lâu
Hệ thống an ninh thông minh: 10 bước
Hệ thống an ninh thông minh: Bạn có bao giờ cảm thấy không an toàn trong chính ngôi nhà của mình hay bạn cần bảo vệ công ty của mình? Có lẽ bạn có thể tạo một hệ thống bảo mật để tất cả những vấn đề này được giải quyết. Trong hướng dẫn này, tôi cho bạn biết làm thế nào. Tôi gắn tất cả các bộ phận trên một tấm ván gỗ để trình diễn