สารบัญ:

ภาพรวม: ความบันเทิงภายในบ้านและระบบรักษาความปลอดภัย: 6 ขั้นตอน
ภาพรวม: ความบันเทิงภายในบ้านและระบบรักษาความปลอดภัย: 6 ขั้นตอน

วีดีโอ: ภาพรวม: ความบันเทิงภายในบ้านและระบบรักษาความปลอดภัย: 6 ขั้นตอน

วีดีโอ: ภาพรวม: ความบันเทิงภายในบ้านและระบบรักษาความปลอดภัย: 6 ขั้นตอน
วีดีโอ: 10 อันดับ บ้านที่มีระบบความปลอดภัยที่ดีที่สุดในโลก 2024, มิถุนายน
Anonim
ภาพรวม: ความบันเทิงภายในบ้านและระบบรักษาความปลอดภัย
ภาพรวม: ความบันเทิงภายในบ้านและระบบรักษาความปลอดภัย
ภาพรวม: ความบันเทิงภายในบ้านและระบบรักษาความปลอดภัย
ภาพรวม: ความบันเทิงภายในบ้านและระบบรักษาความปลอดภัย
ภาพรวม: ความบันเทิงภายในบ้านและระบบรักษาความปลอดภัย
ภาพรวม: ความบันเทิงภายในบ้านและระบบรักษาความปลอดภัย

เกี่ยวกับแอปพลิเคชัน

ระบบ IOT นี้เป็นระบบความบันเทิงภายในบ้านและระบบรักษาความปลอดภัย

  1. ความปลอดภัย

    1. แตะบัตร RFID และการป้อนข้อมูลจะถูกบันทึกลงใน Firebase
    2. หากได้รับอนุญาต ให้เข้าไปอย่างสงบแล้วถ่ายรูปลง S3
    3. หากไม่ได้รับอนุญาต ฝ่ายป้องกันจะเข้ามาและหน้าจอ LCD จะแจ้งว่าคุณไม่ได้รับอนุญาต
  2. ป้องกัน

    1. กดปุ่มบนแดชบอร์ด
    2. Laser Turrets จะโจมตีด้วยการระเบิดแบบสุ่มและความเร็ว
  3. ความบันเทิง

    1. หากตรวจพบการเคลื่อนไหว เกมจะเริ่มขึ้น
    2. หลังจากที่ผู้ใช้เล่นเกม คะแนนจะถูกบันทึกลงใน Firebase
    3. ค่า LDR จะถูกนำไปและส่งออกบนแดชบอร์ด

แอปพลิเคชันนี้สามารถควบคุมและดูได้ผ่านเว็บเซิร์ฟเวอร์ IBM Node-Red เราใช้ประโยชน์จาก AWS และ IBM Cloud Services และเราใช้ Firebase เป็นฐานข้อมูลของเรา

สรุปขั้นตอนที่จะอธิบาย

  • ข้อกำหนดด้านฮาร์ดแวร์
  • ความปลอดภัย - วิธีสร้างระบบรักษาความปลอดภัยที่ใช้อินพุต RFID และซอฟต์แวร์จดจำภาพ
  • Defense - วิธีสร้างป้อมปืนเลเซอร์
  • ความบันเทิง - วิธีสร้างเกมไซมอนพูด
  • IOT App Watson บน IBM Bluemix - วิธีรวมระบบทั้งหมดไว้ในแดชบอร์ดเดียว

ไปข้างหน้าและเข้าถึงไฟล์ pdf เพื่อดูคำอธิบายโดยละเอียดเพิ่มเติมเกี่ยวกับวิธีสร้างโครงการนี้

ขั้นตอนที่ 1: ข้อกำหนดฮาร์ดแวร์

นี่คือสิ่งที่คุณต้องการ

  1. ความปลอดภัย

    • 1 ราสเบอร์รี่ Pi
    • 1 LCD
    • เครื่องอ่าน RFID 1 เครื่อง
    • 1 PicCam
    • การ์ด/ปุ่ม RFID 2 ใบ
    • X หญิง -> สายจัมเปอร์ชาย
  2. ป้องกัน

    • 1 ราสเบอร์รี่ Pi
    • 2 10 ㏀ ตัวต้านทาน (สำหรับปุ่ม)
    • 2 ไมโครเซอร์โว
    • 1 โมดูลส่งสัญญาณเลเซอร์ 650nm
    • 2 ปุ่มกด
    • 1 Buzzer
    • แถบยางขนาดเล็ก 3 เส้น/สายรัด (สำหรับยึด)
    • X หญิง -> สายจัมเปอร์ชาย
    • X สายกระโดดปกติ
    • 1 ทรานซิสเตอร์
    • 1 ตัวเก็บประจุ
  3. ความบันเทิง

    • 1 ราสเบอร์รี่ Pi
    • 3 1 ㏀ ตัวต้านทาน (สำหรับ LED)
    • 1 10㏀ ตัวต้านทาน (สำหรับ LDR)
    • ไฟ LED 3 ดวง (สีต่างๆ)
    • 3 ปุ่ม
    • 1 LDR
    • 1 LCD
    • 1 Pir Motion Sensor
    • X หญิง -> สายจัมเปอร์ชาย
    • X สายกระโดดปกติ

ขั้นตอนที่ 2: ความปลอดภัย

ความปลอดภัย
ความปลอดภัย
ความปลอดภัย
ความปลอดภัย
ความปลอดภัย
ความปลอดภัย

การสร้างฮาร์ดแวร์ระบบรักษาความปลอดภัย

ต่อวงจรตามที่แสดงในแผนภาพ

การสร้างซอฟต์แวร์ระบบรักษาความปลอดภัย

  1. กำหนดค่า AWS ด้วยการสร้างสิ่งของ
  2. ติดตั้ง AWS Python Library
  3. ติดตั้ง LCD Library
  4. ติดตั้งห้องสมุด RFID
  5. ตั้งค่า Firebase
  6. ตั้งค่า S3 Storage
  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, ปุ่ม, เวลาเซอร์โวอิมพอร์ตจากการนำเข้าสัญญาณ หยุดการนำเข้าแบบสุ่ม

#led = LED(12)

#pir = MotionSensor(19, sample_rate=5, queue_len=1) buzzer_pin = Buzzer(17) โจมตี = ปุ่ม(5, pull_up=False) #reset = ปุ่ม(6, pull_up=False) servo1 = เซอร์โว(18) servo2 = เซอร์โว(24)

def ledON():

led.on() print("LED is on") def ledOFF(): led.off() print("LED is off")

def ไฟ ():

พิมพ์ ("อาวุธร้อนแรง") 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 รายละเอียด = [timeBetweenBurst, timeBetweenShots, servo1.value, servo2.value, numShots] พิมพ์ (รายละเอียด) ในขณะที่ shot<numshots: shot+="1" servo1.value="servo1start" servo2.value="servo2start" servo1start="servo1change" servo2start="servo2change" 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 (ความถี่, ความยาว): #create ฟังก์ชัน "buzz" และป้อนระดับเสียงและระยะเวลา)

ถ้า(ความถี่==0):

time.sleep(length) ระยะคืนตัว = 1.0 / ความถี่ #frequency delayValue = period / 2 #คำนวณเวลาสำหรับครึ่งหนึ่งของคลื่น numCycles = int(length * frequency) #num ของคลื่น = duratime x freq สำหรับ i ในช่วง (numCycles): #start วนจาก 0 ถึงตัวแปร "รอบ" ที่คำนวณเหนือ buzzer_pin.on() time.sleep(delayValue) buzzer_pin.off() time.sleep(delayValue)

def play (ทำนอง, จังหวะ, หยุดชั่วคราว, เพซ=0.800):

สำหรับฉันอยู่ในช่วง (0, len (ทำนอง)): # เล่นเพลงโน้ต Duration = ก้าว / จังหวะ buzz (ทำนอง , noteDuration) # เปลี่ยนความถี่ตามโน้ตเพลงหยุดชั่วคราวBetweenNotes = noteDuration * หยุดชั่วคราว time.sleep(หยุดระหว่างหมายเหตุ)

ในขณะที่จริง:

laserturret() แตก;

ขั้นตอนที่ 4: ความบันเทิง

ความบันเทิง
ความบันเทิง
ความบันเทิง
ความบันเทิง
ความบันเทิง
ความบันเทิง

การสร้างความบันเทิงฮาร์ดแวร์

เราสร้างเกมปุ่ม Simon-says ซึ่งคุณต้องทำตามรูปแบบของไฟ LED ที่สว่างขึ้นและกดปุ่มที่เกี่ยวข้อง จะอัปโหลดคะแนนและการประทับเวลาลงในฐานข้อมูล Firebase NoSQL เพื่อใช้งานเพิ่มเติมในแดชบอร์ด

ต่อวงจรตามที่แสดงในแผนภาพ Fritzing

การสร้างซอฟต์แวร์เพื่อความบันเทิง

ความบันเทิง.py

นำเข้า RPi. GPIO เป็น GPIOimport เวลาเกลียวนำเข้า tweepy นำเข้าสุ่มนำเข้าระบบปฏิบัติการที่นำเข้าจาก rpi_lcd การนำเข้าแอลซีดีจากการเรียกกระบวนการย่อยที่นำเข้าจากเวลานอนที่นำเข้าจากวันที่และเวลาวันที่และเวลาที่นำเข้าจาก Firebase CONSUMER_KEY นำเข้า Firebase = 'h5Sis7TXdoUVncrpjSzGAvhBH' CONSUMER_SECRET = 'ZfDVxc4aTd9doGmBQO3HiSKKzxSTKT4C3g0B3AGx8eETCJm2rY' ACCESS_KEY = '988333099669901312- YDLEQN1weW2n1JP4lxJcFPppCsbvzQh 'ACCESS_SECRET = 'K2IlUPur6jx7DO5S0HhhZW29H5AQFOvkMMevSsk9ZzwLk' รับรองความถูกต้อง = tweepy. OAuthHandler (CONSUMER_KEY, CONSUMER_SECRET) auth.secure = auth.set_access_token ทรู (ACCESS_KEY, ACCESS_SECRET) API = tweepy. API (รับรองความถูกต้อง) Firebase = firebase. FirebaseApplication (' https:// iotca2 -12f48.firebaseio.com', None) lcd=LCD() lcd.text('Have fun!', 1) lcd.text('Good Luck!', 2) sleep(1) # Red, Yellow, Green LIGHTS = [40, 38, 36] BUTTONS = [37, 33, 35] NOTES = ["E3", "A4", "E4"] # ค่าที่คุณสามารถเปลี่ยนได้ซึ่งส่งผลต่อความเร็วในการเล่นเกม = 0.5 # ธงที่ใช้ส่งสัญญาณเกม สถานะ is_displaying_pattern = เท็จ is_won_curr ent_level = False is_game_over = False # สถานะเกม current_level = 1 current_step_of_level = 0 รูปแบบ = def initialize_gpio (): GPIO.setmode (GPIO. BOARD) GPIO.setup (LIGHTS, GPIO. OUT เริ่มต้น = GPIO. LOW) GPIO ตั้งค่า (BUTTONS, GPIO. IN, pull_up_down=GPIO. PUD_DOWN) สำหรับฉันในช่วง (3): GPIO.add_event_detect(BUTTONS, GPIO. FALLING, Verify_player_selection) def Verify_player_selection (channel): global current_step_of,_level, current_level is_game_over ถ้าไม่ใช่ is_displaying_pattern และไม่ใช่ is_won_current_level และไม่ใช่ 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 >= current_level:def current_step_over = 1 ระดับคือ 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, 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 = True GPIO.output(LIGHTS, GPIO. LOW) ระดับสำหรับ i: 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 global current_level, current_step_of_level, รูปแบบ is_displaying_pattern_of False is_won_current_over = False คือ 0 GPIO.output(LIGHTS, GPIO. LOW) def send_data(score): lcd.text('End of game, ', 1) lcd.text('See you soon!', 2) datestr = str(วันที่และเวลา now()) ในขณะที่ True: print(datestr) print(score) data={ 'Date': datestr, 'Score': score } result = firebase.post('/scores/', data) print(result) if score > 2: status='Someone has คะแนน ' + (str(คะแนน)) +' ใน '+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("จบเกม! คะแนนคือ {} สี!\n".format(current_level - 1)) sleep(2) print("ขอบคุณสำหรับการเล่น!\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(): ลอง: os.system('cls' ถ้า os.name == 'nt ' อื่น 'ชัดเจน') พิมพ์ ("เริ่มต้นรอบใหม่!\n") initialize_gpio() start_game_monitor() ในที่สุด: GPIO.cleanup() ถ้า _name_ == '_main_': main()

ขั้นตอนที่ 5: IOT App Watson บน IBM Bluemix [ตอนที่หนึ่ง]

ตั้งค่า Blumix IoT Service

  1. ตั้งค่าประเภทอุปกรณ์เกตเวย์
  2. ตั้งค่าอุปกรณ์

ทำขั้นตอนที่ 1 และ 2 เป็นเวลา 3 ครั้ง หนึ่ง RPi สำหรับหนึ่งส่วน (ความปลอดภัย/การป้องกัน/ความบันเทิง)

ตั้งค่าโหนด-แดง

เรียกใช้โหนดสีแดง

โหนดสีแดงเริ่มต้น

  1. ไปที่จัดการจานสีในเมนูแฮมเบอร์เกอร์ (บนขวา)
  2. ดาวน์โหลดพาเลทต่อไปนี้

    1. node-red-แดชบอร์ด
    2. node-red-contrib-firebase
    3. node-red-contrib-ibm-watson-iot

ขั้นตอนที่ 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

ดาวน์โหลดไฟล์และส่งออกไปยังโหนดสีแดงของคุณ

โหนดความปลอดภัย-สีแดง

ไม่มี

กลาโหม Rpi Node-Red

laserturret.txt

ความบันเทิง Rpi Node-Red

  • ความบันเทิง rpi flow.txt
  • ldr rpi flow.txt

IBM Bluemix Node-Red

แนะนำ: