Оглавление:
- Шаг 1. Требования к оборудованию
- Шаг 2: Безопасность
- Шаг 3: защита
- Шаг 4: Развлечения
- Шаг 5. Приложение Watson для Интернета вещей в IBM Bluemix [Часть первая]
- Шаг 6: Узел красный поток
Видео: Обзор: Домашние развлечения и система безопасности: 6 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:53
О приложении
Эта система IOT представляет собой систему домашних развлечений и безопасности.
-
Безопасность
- Коснитесь RFID-карты, и введенные данные будут сохранены в Firebase.
- Если авторизован, вы можете спокойно войти, и фотография будет сделана и загружена в S3.
- В случае несанкционированного доступа заходит секция защиты, и на ЖК-экране отображается сообщение, что вы не авторизованы.
-
Защита
- Нажмите кнопку на приборной панели.
- Лазерные турели будут атаковать случайными очередями и скоростью.
-
Развлечение
- Если обнаружено движение, игра запустится.
- После того, как пользователь играет в игру, счет сохраняется в Firebase.
- Значения LDR будут приняты и выведены на панель управления.
Этим приложением можно управлять и просматривать его через веб-сервер IBM Node-Red. Мы используем AWS и IBM Cloud Services, а также Firebase в качестве нашей базы данных.
Резюме шагов, которые будут описаны
- Требования к оборудованию
- Безопасность - Как создать систему безопасности, которая использует ввод RFID и программное обеспечение для распознавания изображений.
- Защита - Как создать лазерную турель
- Развлечения - Как создать игру Саймона
- Приложение IOT Watson на IBM Bluemix - Как интегрировать все системы в одну панель управления
Откройте файл pdf для более подробного объяснения того, как создать этот проект.
Шаг 1. Требования к оборудованию
Это то, что вам понадобится
-
Безопасность
- 1 Raspberry Pi
- 1 ЖК-дисплей
- 1 считыватель RFID
- 1 PiCam
- 2 RFID карты / кнопки
- X Female -> Male соединительные кабели
-
Защита
- 1 Raspberry Pi
- 2 резистора 10 Ом (для кнопок)
- 2 микро сервопривода
- 1 модуль лазерного передатчика 650 нм
- 2 кнопки
- 1 зуммер
- 3 маленьких резинки / кабельные стяжки (для фиксации)
- X Female -> Male соединительные кабели
- X обычные соединительные кабели
- 1 транзистор
- 1 конденсатор
-
Развлечения
- 1 Raspberry Pi
- 3 1 Ом резистор (для светодиодов)
- 1 резистор 10 Ом (для LDR)
- 3 светодиода (разных цветов)
- 3 кнопки
- 1 LDR
- 1 ЖК-дисплей
- 1 датчик движения Pir
- X Female -> Male соединительные кабели
- X обычные соединительные кабели
Шаг 2: Безопасность
Создание оборудования системы безопасности
Подключите цепи, как показано на схеме фритзинга.
Создание программного обеспечения системы безопасности
- Настроить AWS, создав вещь
- Установить библиотеку AWS Python
- Установить ЖК-библиотеку
- Установить библиотеку 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 = светодиод (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 = Сервопривод (18) servo2 = Сервопривод (24)
def ledON ():
led.on () print («светодиод горит») def ledOFF (): led.off () print («светодиод не горит»)
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.value = servo2start time.sleep (0.1) shot = 0 detail = [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)
notes = {
«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 (frequency, length): # создать функцию "buzz" и скормить ей высоту тона и продолжительность)
если (частота == 0):
time.sleep (length) return period = 1.0 / frequency #frequency delayValue = period / 2 # вычислить время для половины волны numCycles = int (length * frequency) #num of waves = duratime x freq for i in range (numCycles): # запускаем цикл с 0 до переменной "циклы", вычисленной выше buzzer_pin.on () time.sleep (delayValue) buzzer_pin.off () time.sleep (delayValue)
def play (мелодия, темп, пауза, темп = 0,800):
for i in range (0, len (melody)): # Воспроизвести песню noteDuration = pace / tempo buzz (melody , noteDuration) # Изменить частоту ноты песни pauseBetweenNotes = noteDuration * pause time.sleep (pauseBetweenNotes)
в то время как True:
laserturret () break;
Шаг 4: Развлечения
Создание развлекательного оборудования
Мы создаем игру с кнопками Саймона, в которой вы должны следовать схеме включения светодиодов и нажимать соответствующие кнопки. Он загружает оценки и временную метку в базу данных Firebase NoSQL для дальнейшего использования на информационных панелях.
Подключите цепи, как показано на схеме Фритцинга.
Создание развлекательного программного обеспечения
Entertainment.py
импорт RPi. GPIO в GPIOimport время потоковая импорт импорт случайный импорт ОС импорта tweepy из rpi_lcd импорта LCD из подпроцесса импорта звонка из сна импорта время от даты и времени импорта DateTime из firebase импорта firebase CONSUMER_KEY = «h5Sis7TXdoUVncrpjSzGAvhBH» CONSUMER_SECRET = ACCESS_KEY «ZfDVxc4aTd9doGmBQO3HiSKKzxSTKT4C3g0B3AGx8eETCJm2rY» = «988333099669901312- YDLEQN1weW2n1JP4lxJcFPppCsbvzQh 'ACCESS_SECRET = 'K2IlUPur6jx7DO5S0HhhZW29H5AQFOvkMMevSsk9ZzwLk' AUTH = tweepy. OAuthHandler (CONSUMER_KEY, CONSUMER_SECRET) auth.secure = True auth.set_access_token (ACCESS_KEY, ACCESS_SECRET) апи = tweepy. API (авт) firebase = firebase. FirebaseApplication (' https:// iotca2 -12f48.firebaseio.com ', None) lcd = LCD () lcd.text (' Удачи! ', 1) lcd.text (' Удачи! ', 2) sleep (1) # Красный, желтый, зеленый свет = [40, 38, 36] BUTTONS = [37, 33, 35] NOTES = ["E3", "A4", "E4"] # значения, которые можно изменить, которые влияют на скорость игры = 0,5 # флаги, используемые для обозначения игры status is_displaying_pattern = Ложь 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. setup (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 (канал): глобальный текущий_уровень_уровня_уровня, текущий_уровень_уровня is_game_over, если не is_displaying_pattern и не is_won_current_level и не is_game_over: flash_led_for_button (канал), если канал == BUTTONS [шаблон [текущий_шаг_уровня]: True_step_of_level = True_level_sturrent_level + = 1, если текущий_уровень_уровня + = 1, если текущий_уровень_уровня + = 1, если текущий_уровень_уровня + = 1, если текущий_уровень_уровня + = 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 (): глобальный isrent_color_to_pattern (): global isrent_color_to_pattern () дворняга 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 is_displaying_pattern = (in GPLIO.out), is_displaying_pattern = (in GPLIO.out), is_displaying_pattern = (in GPLIO.out), is_displaying_pattern = (in GPLIO.out): GPIO.output (LIGHTS [шаблон , GPIO. HIGH) time.sleep (скорость) GPIO.output (LIGHTS [шаблон , GPIO. LOW) time.sleep (скорость) is_displaying_pattern = False def wait_for_player_to_repeat_pattern (): в то время как не is_won_current_level, а не is_game_over: time.sleep (0.1) Защита reset_board_for_new_game (): глобальный is_displaying_pattern, is_won_current_level, is_game_over глобального current_level, current_step_of_level, шаблон is_displaying_pattern = False is_won_current_level = False is_game_over = False current_level = 1 current_step_of_level = 0 паттерна = GPIO.output (LIGHTS, GPIO. LOW) def send_data (score): lcd.text ('Конец игры,', 1) lcd.text ('До скорой встречи!', 2) datestr = str (datetime. now ()) в то время как True: print (datestr) print (score) data = {'Date': datestr, 'Score': score} result = firebase.post ('/ scores /', data) print (result) if score> 2: status = 'Кто-то забил' + (str (score)) + '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 («Игра окончена!.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. Приложение Watson для Интернета вещей в IBM Bluemix [Часть первая]
Настроить Blumix IoT Service
- Настройка типа шлюзового устройства
- Настроить устройство
Сделайте шаги 1 и 2 3 раза. Один RPi предназначен для одного раздела (Безопасность / Защита / Развлечения)
Настроить Node-Red
Запускаем node-red
узел-красный старт
- Перейти к управлению палитрой в меню гамбургера (вверху справа)
-
Загрузите следующие поддоны
- узел-красный-приборная панель
- узел-красный-contrib-firebase
- узел-красный-contrib-ibm-watson-iot
Шаг 6: Узел красный поток
Загрузите файлы и экспортируйте в свой узел-красный.
Узел безопасности - красный
никто
Узел защиты Rpi - красный
laserturret.txt
Развлечения Rpi Node-Red
- развлечения rpi flow.txt
- ldr rpi flow.txt
IBM Bluemix Node-Красный
Рекомендуемые:
Развлечения с OLED-дисплеем и Arduino: 12 шагов (с изображениями)
Удовольствие от OLED-дисплея и Arduino: я уверен, что вы наверняка слышали о технологии OLED-дисплеев. Он относительно новый и предлагает лучшее качество, чем старые ЖК-дисплеи. В этом руководстве мы хотим рассмотреть шаги, необходимые для отображения данных на одном из наиболее распространенных одиночных ко
Беспроводная кнопка безопасности для безопасности ПЛК: 6 шагов (с изображениями)
Беспроводная кнопка безопасности для безопасности ПЛК: этот проект является моим доказательством концепции использования Интернета вещей и (в конечном итоге) робототехники для создания дополнительного уровня безопасности для опасных производственных объектов. Эта кнопка может использоваться для запуска или остановки нескольких процессов, включая управление сигналом
Бумажные карманные домашние животные: 5 шагов (с изображениями)
Paper Pocket Pets: Paper Pocket Pets (PPP) - это набор, предназначенный для создания интерактивных модульных и носимых игрушек. Он поощряет детей к движению и общению благодаря реакции питомца и позволяет детям создавать своего собственного репрезентативного питомца, а также менять
Автоматические домашние шторы - мини-проект с модулем MakerChips 'BluChip (nRF51 BLE): 7 шагов (с изображениями)
Автоматизированные домашние шторы - мини-проект с модулем BluChip (nRF51 BLE) от MakerChips: представьте, что вы просыпаетесь и хотите, чтобы в окна проникал солнечный свет, или закрываете шторы, чтобы вы могли спать дальше, не пытаясь подойти поближе. к шторам, а одним нажатием кнопки на смартфоне
Автоматизируйте домашние устройства с помощью MESH и Logitech Harmony: 5 шагов (с изображениями)
Автоматизируйте домашние устройства с помощью MESH и Logitech Harmony: вы ищете способ автоматизировать домашние устройства с минимальными усилиями? Вы устали использовать пульт дистанционного управления для включения устройств на вашем устройстве. и " ВЫКЛ "? Вы можете автоматизировать свои устройства с помощью датчика движения MESH и Logitech Ha