Съдържание:
- Стъпка 1: Хардуерни изисквания
- Стъпка 2: Сигурност
- Стъпка 3: Защита
- Стъпка 4: Забавление
- Стъпка 5: IOT App Watson на IBM Bluemix [Първа част]
- Стъпка 6: Червен поток на възел
Видео: Общ преглед: Система за домашно забавление и сигурност: 6 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:53
Относно Приложението
Тази система IOT е система за домашно забавление и сигурност.
-
Сигурност
- Докоснете RFID карта и въведените данни се запазват във Firebase.
- Ако имате разрешение, можете да влезете спокойно и снимката се прави и качва в S3
- Ако е неупълномощен, влиза раздел за защита и LCD екран ще каже, че не сте упълномощени.
-
Защита
- Натиснете бутона на таблото за управление.
- Лазерните кули ще атакуват с произволен взрив и скорост.
-
Развлечения
- Ако се открие движение, играта ще започне.
- След като потребителят играе играта, резултатът се записва във Firebase.
- LDR стойностите ще бъдат взети и изведени на таблото за управление.
Това приложение е управляемо и видимо чрез уеб сървъра на IBM Node-Red. Използваме AWS и IBM Cloud Services и използвахме Firebase като наша база данни.
Обобщение на стъпките, които ще бъдат описани
- Хардуерни изисквания
- Защита - Как да създадете система за сигурност, която използва RFID вход и софтуер за разпознаване на изображения
- Защита - Как да създадете лазерна кула
- Забавление - Как да създадете игра на Саймън казва
- IOT App Watson на IBM Bluemix - Как да интегрирате всички системи в едно табло за управление
Продължете и влезте в pdf файла за по -подробно обяснение как да създадете този проект.
Стъпка 1: Хардуерни изисквания
Това е, което ще ви трябва
-
Сигурност
- 1 Малина Пи
- 1 LCD
- 1 RFID четец
- 1 PiCam
- 2 RFID карти/бутони
- X Женски -> Мъжки кабели
-
Защита
- 1 Малина Пи
- 2 10 ㏀ резистор (за бутони)
- 2 микро серво
- 1 650nm модул за лазерен предавател
- 2 Натиснете бутона
- 1 зумер
- 3 малки гумени ленти/кабелни връзки (за фиксиране)
- X Женски -> Мъжки кабели
- X Редовни скачащи кабели
- 1 транзистор
- 1 кондензатор
-
Забавления
- 1 Малина Пи
- 3 1 ㏀ Резистор (за светодиоди)
- 1 10㏀ резистор (за LDR)
- 3 светодиода (различни цветове)
- 3 бутона
- 1 LDR
- 1 LCD
- 1 Pir сензор за движение
- X Женски -> Мъжки кабели
- X Редовни скачащи кабели
Стъпка 2: Сигурност
Създаване на хардуер на системата за сигурност
Свържете веригите, както е показано на диаграмата за пържене
Създаване на софтуер на системата за сигурност
- Конфигурирайте AWS, като създадете нещо
- Инсталирайте AWS Python Library
- Инсталирайте LCD библиотека
- Инсталирайте RFID библиотека
- Настройка на Firebase
- Настройка на S3 Storage
- Инсталирайте Boto на Raspberry Pi
- Инсталирайте AWS ClI на Raspberry Pi
- Създайте идентификационни данни на AWS
- Конфигурирайте AWS
- Качете security.py в RPi
- Качете imagerecognition.py в RPi
security.py е код, който ще прочете rfid входовете и ще открие дали потребителят е нарушител или не. Ако потребителят бъде разпознат, изображение ще бъде взето и качено в s3. Кодът също се публикува в тема в aws MQTT
Стъпка 3: Защита
Създаване на хардуер за лазерна кула
- Ние създаваме лазерната кула, като използваме 2 сервомотора и 1 лазерен модул
- Свържете веригите, както е показано на диаграмата за пържене
Създаване на софтуер за лазерна кула
Кодът по -долу ще накара лазерната кула да стреля в произволни посоки, в случайни изблици и скорост
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 3 пъти. Един RPi е за една секция (Сигурност/Отбрана/Развлечения)
Настройте Node-Red
Изпълнете node-red
възел-червен старт
- Отидете за управление на палитрата в менюто за хамбургер (горе вдясно)
-
Изтеглете следните палети
- node-red-dashboard
- node-red-contrib-firebase
- 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
Препоръчано:
KS-Garden: Общ преглед: 9 стъпки
KS-Garden: Общ преглед: KS-Garden може да се използва за напояване/обезвъздушаване/осветяване на вашата градина/оранжерийни растения в задния двор или вашите стайни растения за отглеждане на кутии (Модулен дизайн) Системата KS-Garden се състои главно от следните модули-Main системна кутия - Реле и кутия за захранване
Дървена система за забавление на Super Nintendo (SNES): 11 стъпки
Дървена система за забавление на Super Nintendo (SNES): На панаир във Виена случайно се натъкнах на дървена система за развлечения Super Nintendo (SNES). Играех с такава игрална конзола с по -големия си брат, когато бях дете. Тъй като разпознах, че отново съм пристрастен към Супер Марио
8-битов компютър на макета Общ преглед: 3 стъпки
8-битов компютър на чертова дъска Общ преглед: Целта ми за този проект беше да изградя по-добро разбиране на компютърната архитектура, хардуерния дизайн и езиците на ниво монтаж. Като младши в университета, изучавайки компютърно инженерство, наскоро завърших курсове по електроника, лаборатории и
Проектиране и офорт на печатни платки Общ преглед: 5 стъпки
Проектиране и офорт на печатни платки Общ преглед: Има няколко начина за проектиране и офортване на печатни платки, от най -простите до най -сложните. Междувременно е лесно да се объркате коя да изберете, коя ще отговаря най -добре на вашите нужди. За да изясним някои въпроси като т
Часовник с касети за система за забавление на Nintendo: 7 стъпки (със снимки)
Часовник с касети от системата за забавление на Nintendo: Преди известно време моята приятелка Каролин Майн направи някои часовници с касети NES за приятели за Коледа. Те се разлюляха. Удивителността на касетата с часовници на NES трябва да бъде разпръсната по всички земи. Сега можете да отидете онлайн и да си купите един … НО: 1) Всички знаем как