Talaan ng mga Nilalaman:

Pangkalahatang-ideya: Home Entertainment at Security System: 6 Hakbang
Pangkalahatang-ideya: Home Entertainment at Security System: 6 Hakbang

Video: Pangkalahatang-ideya: Home Entertainment at Security System: 6 Hakbang

Video: Pangkalahatang-ideya: Home Entertainment at Security System: 6 Hakbang
Video: ✨Proud Swordsman EP 01 - EP 60 Full Version [MULTI SUB] 2024, Hunyo
Anonim
Pangkalahatang-ideya: Home Entertainment at Security System
Pangkalahatang-ideya: Home Entertainment at Security System
Pangkalahatang-ideya: Home Entertainment at Security System
Pangkalahatang-ideya: Home Entertainment at Security System
Pangkalahatang-ideya: Home Entertainment at Security System
Pangkalahatang-ideya: Home Entertainment at Security System

Tungkol sa Application

Ang sistemang IOT na ito ay isang Home Entertainment at Security System.

  1. Seguridad

    1. I-tap ang RFID Card at ang pag-input ay nai-save sa Firebase.
    2. Kung pinahintulutan, maaari kang magpasok ng payapa at ang larawan ay kinunan at na-upload sa S3
    3. Kung hindi pinahintulutan, ang seksyon ng pagtatanggol ay papasok at sasabihin ng isang LCD Screen na hindi ka pinahintulutan.
  2. Pagtatanggol

    1. Pindutin ang pindutan sa dashboard.
    2. Pag-atake ng Laser Turrets sa random na pagsabog at bilis.
  3. Aliwan

    1. Kung nakita ang paggalaw, magsisimula ang laro.
    2. Matapos i-play ng gumagamit ang laro, ang marka ay nai-save sa Firebase.
    3. Kukuha ang mga halaga ng LDR at output sa dashboard.

Ang application na ito ay makokontrol at nakikita sa pamamagitan ng IBM Node-Red web server. Ginagamit namin ang AWS at IBM Cloud Services at ginamit namin ang Firebase bilang aming database.

Buod ng mga hakbang na ilalarawan

  • Mga Kinakailangan sa Hardware
  • Seguridad - Paano lumikha ng isang sistema ng seguridad na gumagamit ng RFID input at isang software ng pagkilala sa imahe
  • Depensa - Paano lumikha ng isang laser toresilya
  • Aliwan - Paano lumikha ng isang Simon-sabi na laro
  • IOT App Watson sa IBM Bluemix - Paano isasama ang lahat ng mga system sa isang dashboard

Sige at i-access ang file ng pdf para sa isang mas detalyadong paliwanag sa kung paano lumikha ng proyektong ito.

Hakbang 1: Kinakailangan sa Hardware

Ito ang kakailanganin mo

  1. Seguridad

    • 1 Raspberry Pi
    • 1 LCD
    • 1 RFID Reader
    • 1 PiCam
    • 2 Mga RFID Card / Pindutan
    • X Babae -> Mga kable ng jumper na lalaki
  2. Pagtatanggol

    • 1 Raspberry Pi
    • 2 10 ㏀ Resistor (para sa Mga Pindutan)
    • 2 Micro Servo
    • 1 650nm Laser Transmitter Module
    • 2 Pindutan ng Push
    • 1 Buzzer
    • 3 Maliit na Mga Rubber Bands / Cable Ties (para sa pag-aayos)
    • X Babae -> Mga kable ng jumper na lalaki
    • X Regular na Mga Cables ng Tumalon
    • 1 Transistor
    • 1 Kapasitor
  3. Mga Aliwan

    • 1 Raspberry Pi
    • 3 1 ㏀ Resistor (para sa LEDs)
    • 1 10㏀ Resistor (para sa LDR)
    • 3 LEDs (Iba't ibang Kulay)
    • 3 Mga Pindutan
    • 1 LDR
    • 1 LCD
    • 1 Sensor ng Pir Motion
    • X Babae -> Mga kable ng jumper na lalaki
    • X Regular na Mga Cables ng Tumalon

Hakbang 2: Seguridad

Seguridad
Seguridad
Seguridad
Seguridad
Seguridad
Seguridad

Lumilikha ng hardware system ng seguridad

Ikonekta ang mga circuit na tulad ng ipinakita sa fritzing diagram

Lumilikha ng software ng system ng seguridad

  1. I-configure ang AWS sa pamamagitan ng paglikha ng isang bagay
  2. I-install ang AWS Python Library
  3. I-install ang LCD Library
  4. I-install ang RFID Library
  5. I-setup ang Firebase
  6. I-setup ang Storage ng S3
  7. I-install ang Boto sa Raspberry Pi
  8. I-install ang AWS ClI sa Raspberry Pi
  9. Lumikha ng Mga Kredensyang AWS
  10. I-configure ang AWS
  11. Mag-upload ng security.py sa RPi
  12. Mag-upload ng imagerecognition.py sa RPi

Ang security.py ay isang code na makakabasa ng mga input ng rfid at matutukoy kung ang isang gumagamit ay isang nanghihimasok o hindi. Kung kinikilala ang gumagamit, isang imahe ay kukuha at mai-upload sa s3. Nag-publish din ang code sa isang paksa sa aws MQTT

Hakbang 3: Depensa

Pagtatanggol
Pagtatanggol
Pagtatanggol
Pagtatanggol
Pagtatanggol
Pagtatanggol

Lumilikha ng laser turret Hardware

  1. Lumilikha kami ng laser turret sa pamamagitan ng paggamit ng 2 servos at 1 Laser Module
  2. Ikonekta ang mga circuit na tulad ng ipinakita sa fritzing diagram

Paglikha ng laser turret Software

Ang code sa ibaba ay gagawin ang shoot ng laser turret sa mga random na direksyon, sa mga random na pagsabog at bilis

laserturret.py

mula sa gpiozero import LED, Buzzer, Button, Servoimport oras mula sa pag-import ng signal i-pause ang pag-import ng random

#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 is on") def ledOFF (): led.off () print ("LED is off")

def fire ():

i-print ("mainit na sandata") buzzer_pin.on () time.s Sleep (0.1) buzzer_pin.off ()

def laserturret ():

timeBetweenBurst = random.uniform (0.2, 1) timeBet AntaraShots = 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.s Sleep (0.1) shot = 0 detail = [timeBet AntaraBurst, timeBet AntaraShots, servo1.value, servo2.value, numShots] print (detail) habang kinunan <numshots: shot + = "1" servo1.value = "servo1start" servo2.value = "servo2start" servo1start = "servo1change" servo2start = "servo2change" fire () = "" time.s Sleep (timebetweenshots) = "" time.s Sleep (timebetantaraburst)

mga tala = {

'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 (dalas, haba): # likhain ang pagpapaandar na "buzz" at pakainin ang pitch at tagal)

kung (dalas == 0):

oras. tulog (haba) panahon ng pagbabalik = 1.0 / dalas #frequency pagkaantalaValue = panahon / 2 #husayin ang oras para sa kalahati ng alon numCycle = int (haba * dalas) #num ng mga alon = duratime x freq para sa ako sa saklaw (numCycle): #start isang loop mula 0 hanggang sa variable na "mga pag-ikot" na kinakalkula sa itaas buzzer_pin.on () time.s Sleep (delayValue) buzzer_pin.off () time.s Sleep (delayValue)

def play (himig, tempo, pag-pause, bilis = 0.800):

para sa ako sa saklaw (0, len (himig)): # Patugtugin ang tala ng kantaDurong = tulin / tempo buzz (himig , noteDuration) # Baguhin ang dalas kasama ang tala ng pause ng pauseBet AntaraNotes = noteDuration * pause time.sulog (i-pauseBet pagitanNotes)

habang Totoo:

laserturret () masira;

Hakbang 4: Aliwan

Aliwan
Aliwan
Aliwan
Aliwan
Aliwan
Aliwan

Paglikha ng entertainment Hardware

Lumilikha kami ng Simon-sabi na laro ng pindutan, na kailangan mong sundin ang pattern ng pag-iilaw ng mga LED at pindutin ang mga kaukulang pindutan. Nag-a-upload ito ng mga marka at timestamp sa firebase NoSQL database para sa karagdagang paggamit sa mga dashboard.

Ikonekta ang mga circuit na tulad ng ipinapakita sa diagram ng Fritzing.

Paglikha ng Entertainment Software

entertainment.py

import RPi. GPIO bilang GPIOimport threading import time import random import os import tweepy mula rpi_lcd import LCD mula sa subprocess import tawag sa pana-import na pagtulog mula datetime import datetime mula Firebase import 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 ', Wala) lcd = LCD () lcd.text (' Have fun! ', 1) lcd.text (' Good Luck! ', 2) pagtulog (1) # Pula, Dilaw, Green LIGHTTS = [40, 38, 36] BUTTONS = [37, 33, 35] TANDAAN = ["E3", "A4", "E4"] # na mga halaga na mababago mo na nakakaapekto sa bilis ng pag-play ng laro = 0.5 # mga watawat na ginamit upang hudyat ng laro status is_displaying_pattern = Maling ay_won_curr ent_level = Maling is_game_over = Maling # laro estado kasalukuyang_level = 1 kasalukuyang_step_of_level = 0 pattern = def initialize_gpio (): GPIO.setmode (GPIO. BOARD) GPIO.setup (LIGHTTS, GPIO. OUT, paunang = GPIO. LOW) GPIO. setup (BUTTONS, GPIO. IN, pull_up_down = GPIO. PUD_DOWN) para sa i sa saklaw (3): GPIO.add_event_detect (BUTTONS , GPIO. FALLING, verify_player_selection) def verify_player_selection (channel): global current_step_of_level, current_velent, current_velent is_game_over kung hindi ay_displaying_pattern at hindi is_won_current_level at hindi is_game_over: flash_led_for_button (channel) kung channel == BUTTONS [pattern [current_step_of_level]: current_step_of_level + = 1 kung current_step_of_level> = current_level: = currentle + = 1 flash_led_for_button (button_channel): led = LIGHTTS [BUTTONS.index (button_channel)] GPIO.output (led, GPIO. HIGH) time.s 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 = Maling kasalukuyang_step_of_level = 0 susunod_color = random.randint (0, 2) pattern.append (next_color) def display_pattern_to_player (): pandaigdigan is_displaying_pattern is_displaying_pattern = True GPIO.outvel. LoveTS): GPIO.output (LIGHTTS [pattern , GPIO. HIGH) time.s Sleep (speed) GPIO.output (LIGHTTS [pattern , GPIO. LOW) time.s Sleep (speed) is_displaying_pattern = Fal def def wait_for_player_to_repeat_pattern (): habang hindi is_won_current_level at hindi is_game_over: time.s Sleep (0.1) def reset_board_for_new_game (): pandaigdigan ay_displaying_pattern, is_won_current_level, is_game_over global current_level, current_step_of_level, pattern is_displaying_pattern_ Faltern_current = False GPIO.output (LIGHTTS, GPIO. LOW) def send_data (iskor): lcd.text ('Katapusan ng laro,', 1) lcd.text ('Magkita tayo!', 2) datestr = str (datime. ngayon ()) habang Tama: print (datestr) print (score) data = {'Date': datestr, 'Score': score} resulta = firebase.post ('/ iskor /', data) i-print (resulta) kung iskor> 2: status = 'May nakapuntos' + (str (iskor)) + 'sa' + datestr + '!' api.update_status (status = status) break def start_game (): habang True: add_new_color_to_pattern () display_pattern_to_player () wait_for_player_to_repeat_pattern () kung is_game_over: send_data (current_level - 1) print ("Game Over! score n"}.format (current_level - 1)) sleep (2) print ("Salamat sa pag-play! / 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 ("Start new round! / n") initialize_gpio () start_game_monitor () sa wakas: GPIO.cleanup () kung _name_ ==' _main_ ': main ()

Hakbang 5: IOT App Watson sa IBM Bluemix [Bahagi One]

I-set up ang Serbisyo ng Blumix IoT

  1. Mag-set up ng isang Uri ng Device ng Gateway
  2. Mag-set up ng isang Device

Gawin ang mga hakbang 1 at 2 nang 3 beses. Ang isang RPi ay para sa isang seksyon (Seguridad / Depensa / Aliwan)

I-set up ang Node-Red

Patakbuhin ang node-red

node-red na pagsisimula

  1. Pumunta upang pamahalaan ang palette sa menu ng hamburger (kanang bahagi sa itaas)
  2. I-download ang mga sumusunod na palyet

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

Hakbang 6: Node Red Flows

Mga Pula na Daloy ng Node
Mga Pula na Daloy ng Node
Mga Pula na Daloy ng Node
Mga Pula na Daloy ng Node
Node Red Flows
Node Red Flows
Mga Pula na Daloy ng Node
Mga Pula na Daloy ng Node

I-download ang mga file at i-export sa iyong node-red.

Security Node-Red

wala

Defense Rpi Node-Red

laserturret.txt

Aliwan Rpi Node-Red

  • entertainment rpi flow.txt
  • ldr rpi flow.txt

IBM Bluemix Node-Red

Inirerekumendang: