Съдържание:

Общ преглед: Система за домашно забавление и сигурност: 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 Services и използвахме 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 ㏀ Резистор (за светодиоди)
    • 1 10㏀ резистор (за LDR)
    • 3 светодиода (различни цветове)
    • 3 бутона
    • 1 LDR
    • 1 LCD
    • 1 Pir сензор за движение
    • X Женски -> Мъжки кабели
    • X Редовни скачащи кабели

Стъпка 2: Сигурност

Сигурност
Сигурност
Сигурност
Сигурност
Сигурност
Сигурност

Създаване на хардуер на системата за сигурност

Свържете веригите, както е показано на диаграмата за пържене

Създаване на софтуер на системата за сигурност

  1. Конфигурирайте AWS, като създадете нещо
  2. Инсталирайте AWS Python Library
  3. Инсталирайте LCD библиотека
  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 за импортиране, Звуков сигнал, Бутон, Сервоимпорт време от импортиране на сигнал пауза внос на случаен принцип

#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 () печат ("LED is off")

def fire ():

print ("оръжия горещи") 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. = servo2start time.sleep (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):

time.sleep (дължина) период на връщане = 1,0 / честота #честотно забавянеValue = период / 2 #изчисляване на времето за половината от вълната numCycles = int (дължина * честота) #брой вълни = продължителност x честота за i в обхвата (numCycles): #стартирайте цикъл от 0 до променливата "цикли", изчислена над buzzer_pin.on () time.sleep (delayValue) buzzer_pin.off () time.sleep (delayValue)

def play (мелодия, темпо, пауза, темп = 0.800):

за i в обхват (0, лен (мелодия)): # Възпроизвеждане на песен NoteDuration = темп/темп бръмчене (мелодия , noteDuration) # Промяна на честотата по време на паузата в нотата на песента Между бележки = noteDuration * време на пауза. пауза между бележки)

докато е вярно:

laserturret () прекъсване;

Стъпка 4: Забавление

Развлечения
Развлечения
Развлечения
Развлечения
Развлечения
Развлечения

Създаване на хардуер за забавление

Създаваме играта с бутони на Simon-казва, която трябва да следвате модела на светлинните светодиоди и да натиснете съответните бутони. Той качва резултати и времеви знак в базата данни на firebase NoSQL за по -нататъшно използване в таблата за управление.

Свържете веригите, както е показано на диаграмата на Fritzing.

Създаване на развлекателен софтуер

entertainment.py

внос RPi. GPIO като GPIOimport време резби внос tweepy внос случаен внос OS внос от LCD rpi_lcd внос от подпроцес внос обаждане от време на сън внос от час и дата час и дата внос от firebase внос firebase CONSUMER_KEY = 'h5Sis7TXdoUVncrpjSzGAvhBH "CONSUMER_SECRET =' ZfDVxc4aTd9doGmBQO3HiSKKzxSTKT4C3g0B3AGx8eETCJm2rY" ACCESS_KEY = '988333099669901312- YDLEQN1weW2n1JP4lxJcFPppCsbvzQh "ACCESS_SECRET = 'K2IlUPur6jx7DO5S0HhhZW29H5AQFOvkMMevSsk9ZzwLk" удостоверяване = 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) # Червено, жълто, зелено LIGHTS = [40, 38, 36] БУТОНИ = [37, 33, 35] ЗАБЕЛЕЖКИ = ["E3", "A4", "E4"] # стойности, които можете да промените, които влияят на скоростта на играта = 0,5 # знамена, използвани за сигнализиране на играта status is_displaying_pattern = False is_won_curr ent_level = False is_game_over = False # състояние на играта 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. настройка (BUTTONS, GPIO. IN, pull_up_down = GPIO. PUD_DOWN) за i в обхват (3): GPIO.add_event_detect (BUTTONS , GPIO. FALLING, verify_player_selection) def verify_player_selection (канал): global current_step_vel_vel_, is_game_over, ако не is_displaying_tern 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, 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 (): глобален is_displaying_pattern is_displaying_pattern = ИЛИ GPOW.: GPIO.output (LIGHTS [pattern , GPIO. HIGH) time.sleep (скорост) GPIO.output (LIGHTS [pattern , GPIO. LOW) time.sleep (скорост) is_displaying_pattern = False def wait_for_player_to_repeat_pattern (): не е GPIO.output (LIGHTS, GPIO. LOW) def send_data (score): lcd.text ('Край на играта', 1) lcd.text ('Ще се видим скоро!', 2) datestr = str (datetime. now ()) while True: print (datestr) print (score) data = {'Date': datestr, 'Score': 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 is_game_over: send_data (current_level - 1) print ("Game Over! 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 (): try: os.system ('cls' if os.name == 'nt 'else' clear ') print ("Започнете нов кръг! / n") initialize_gpio () start_game_monitor () накрая: GPIO.cleanup () if _name_ ==' _main_ ': main ()

Стъпка 5: IOT App Watson на IBM Bluemix [Първа част]

Настройте услугата Blumix IoT

  1. Задайте тип устройство на шлюз
  2. Настройте устройство

Направете стъпки 1 и 2 3 пъти. Един RPi е за една секция (Сигурност/Отбрана/Развлечения)

Настройте Node-Red

Изпълнете node-red

възел-червен старт

  1. Отидете за управление на палитрата в менюто за хамбургер (горе вдясно)
  2. Изтеглете следните палети

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

Стъпка 6: Червен поток на възел

Възел Червени потоци
Възел Червени потоци
Възел Червени потоци
Възел Червени потоци
Възел Червени потоци
Възел Червени потоци
Възел Червени потоци
Възел Червени потоци

Изтеглете файловете и експортирайте във вашия node-red.

Защитен възел-червен

нито един

Защита Rpi възел-червен

laserturret.txt

Забавление Rpi Node-Red

  • развлечение rpi flow.txt
  • ldr rpi flow.txt

IBM Bluemix Node-Red

Препоръчано: