Мазмұны:

Шолу: Үйдегі ойын -сауық және қауіпсіздік жүйесі: 6 қадам
Шолу: Үйдегі ойын -сауық және қауіпсіздік жүйесі: 6 қадам

Бейне: Шолу: Үйдегі ойын -сауық және қауіпсіздік жүйесі: 6 қадам

Бейне: Шолу: Үйдегі ойын -сауық және қауіпсіздік жүйесі: 6 қадам
Бейне: Телефон кодын ашу😱😙 2024, Маусым
Anonim
Шолу: Үйдегі ойын -сауық және қауіпсіздік жүйесі
Шолу: Үйдегі ойын -сауық және қауіпсіздік жүйесі
Шолу: Үйдегі ойын -сауық және қауіпсіздік жүйесі
Шолу: Үйдегі ойын -сауық және қауіпсіздік жүйесі
Шолу: Үйдегі ойын -сауық және қауіпсіздік жүйесі
Шолу: Үйдегі ойын -сауық және қауіпсіздік жүйесі

Өтініш туралы

Бұл IOT жүйесі үйдегі ойын -сауық пен қауіпсіздік жүйесі болып табылады.

  1. Қауіпсіздік

    1. RFID картасын түртіңіз және кіріс Firebase -те сақталады.
    2. Егер рұқсат етілсе, сіз бейбіт түрде кіре аласыз және сурет түсіріліп, S3 -ке жүктеледі
    3. Егер рұқсат етілмеген болса, қорғаныс бөлімі кіреді және СКД экраны сізге рұқсат етілмегенін көрсетеді.
  2. Қорғаныс

    1. Бақылау тақтасындағы түймені басыңыз.
    2. Лазерлік мұнаралар кездейсоқ жарылыс пен жылдамдықпен шабуыл жасайды.
  3. Көңіл көтеру

    1. Егер қозғалыс анықталса, ойын басталады.
    2. Пайдаланушы ойынды ойнағаннан кейін ұпай Firebase -те сақталады.
    3. LDR мәндері алынады және бақылау тақтасында шығарылады.

Бұл бағдарлама IBM Node-Red веб-сервері арқылы басқарылады және қаралады. Біз AWS және IBM Cloud Services қызметтерін қолданамыз және Firebase -ді дерекқор ретінде қолдандық.

Сипатталатын қадамдардың қысқаша мазмұны

  • Аппараттық құралдарға қойылатын талаптар
  • Қауіпсіздік - RFID енгізу мен суретті тану бағдарламалық жасақтамасын қолданатын қауіпсіздік жүйесін қалай құруға болады
  • Қорғаныс - Лазерлік мұнараны қалай жасауға болады
  • Көңіл көтеру - Саймон айтатын ойын қалай жасауға болады
  • IBM Bluemix -те IOT App Watson - Барлық жүйелерді бір бақылау тақтасына қалай біріктіру керек

Бұл жобаны құру туралы толығырақ түсініктеме алу үшін pdf файлына кіріңіз.

1 -қадам: Жабдыққа қойылатын талаптар

Бұл сізге қажет болады

  1. Қауіпсіздік

    • 1 Raspberry Pi
    • 1 СКД
    • 1 RFID оқу құралы
    • 1 PiCam
    • 2 RFID картасы/түймелері
    • X Әйел -> Аталық ерлер кабельдері
  2. Қорғаныс

    • 1 Raspberry Pi
    • 2 10, резистор (түймелер үшін)
    • 2 Микросерво
    • 1 650нм лазерлік таратқыш модулі
    • 2 Басу түймесі
    • 1 Дыбыстық сигнал
    • 3 Кішкене резеңке таспалар/кабель байланыстары (бекітуге арналған)
    • X Әйел -> Аталық ерлер кабельдері
    • X тұрақты секіру кабельдері
    • 1 транзистор
    • 1 конденсатор
  3. Көңіл көтеру

    • 1 Raspberry Pi
    • 3 1 ㏀ резистор (светодиодтар үшін)
    • 1 10㏀ резистор (LDR үшін)
    • 3 жарық диоды (түрлі түсті)
    • 3 түймелер
    • 1 LDR
    • 1 СКД
    • 1 Pir қозғалыс сенсоры
    • X Әйел -> Аталық ерлер кабельдері
    • X тұрақты секіру кабельдері

2 -қадам: Қауіпсіздік

Қауіпсіздік
Қауіпсіздік
Қауіпсіздік
Қауіпсіздік
Қауіпсіздік
Қауіпсіздік

Қауіпсіздік жүйесінің аппараттық құралдарын құру

Тізбектерді фризинг диаграммасында көрсетілгендей қосыңыз

Қауіпсіздік жүйесінің бағдарламалық жасақтамасын құру

  1. Затты құру арқылы AWS конфигурациялаңыз
  2. AWS Python кітапханасын орнатыңыз
  3. LCD кітапханасын орнатыңыз
  4. RFID кітапханасын орнатыңыз
  5. Firebase орнату
  6. S3 сақтау орнын орнату
  7. Raspberry Pi -ге Boto орнатыңыз
  8. Raspberry Pi -ге AWS ClI орнатыңыз
  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 импорттық жарық диоды, дыбыстық сигнал, түйме, сервистік импорттың импорттық кідірісінен импорттық уақыт

#жарық = жарық диоды (12)

#pir = MotionSensor (19, sample_rate = 5, queue_len = 1) buzzer_pin = Buzzer (17) шабуыл = Button (5, pull_up = False) #reset = Button (6, pull_up = False) servo1 = Servo (18) servo2 = Серво (24)

def ledON ():

led.on () басып шығару («жарық диод қосулы») def ledOFF (): led.off () басып шығару («жарық диоды өшірулі»)

def fir ():

басып шығару («қару ыстық») 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) кадр = 0 егжей = [timeBetweenBurst, timeBetweenShots, servo1.value, servo2.value, numShots] түсіру кезінде басып шығару (егжей -тегжейлі) <numshots: shot+= «1» servo1.value = «servo1start» servo2.value = «servo2start» servo1start = «servo1change» servo2start = «servo2change» өрт () = «» time.sleep (timebetweenshots) = «» time.sleep (timebetweenburburst)

жазбалар = {

'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):

уақыт.ұйқы (ұзындық) қайтару кезеңі = 1,0 / жиілік #жиіліктің кешігуіМән = период / 2 #толқынның жартысы үшін уақытты есептеңіз циклдар = int (ұзындық * жиілік) #толқындар саны = уақыт диапазонындағы x жиілігі (сан циклдары)): #циклды 0 -ден «цикл» айнымалысына дейін бастаңыз, buzzer_pin.on () time.sleep (delayValue) buzzer_pin.off () time.sleep (delayValue)

def ойнату (әуен, темп, кідіріс, қарқын = 0.800):

i үшін диапазонда (0, len (әуен)): # Әннің нотасын ойнатуDuration = темп/темп шуыл (melody , noteDuration) # Ән нотасы бойынша жиілікті өзгерту pauseBetweenNotes = noteDuration * үзіліс уақыты.ұйықтау (Ескертулер арасындағы үзіліс)

шындық кезінде:

laserturret () үзіліс;

4 -қадам: ойын -сауық

Көңіл көтеру
Көңіл көтеру
Көңіл көтеру
Көңіл көтеру
Көңіл көтеру
Көңіл көтеру

Көңіл көтерудің аппараттық құралы

Біз Саймон-айтатын түймешік ойынын жасаймыз, оған светодиодтардың жану үлгісін ұстанып, сәйкес түймелерді басу керек. Ол бақылау тақталарында әрі қарай қолдану үшін ұпайлар мен уақыт белгісін Firepase NoSQL мәліметтер базасына жүктейді.

Fritzing диаграммасында көрсетілгендей тізбектерді қосыңыз.

Көңіл көтеру бағдарламалық жасақтамасын құру

ойын -сауық.py

firebase импортынан Datetime импорт DATETIME уақыт импорт ұйқы подпроцесс импорт қоңыраудан rpi_lcd импорт LCD импорт уақыт импорт кездейсоқ импорттың OS импорт tweepy бұранда GPIOimport ретінде импорттық RPi. GPIO CONSUMER_KEY = 'h5Sis7TXdoUVncrpjSzGAvhBH' CONSUMER_SECRET = 'ZfDVxc4aTd9doGmBQO3HiSKKzxSTKT4C3g0B3AGx8eETCJm2rY' ACCESS_KEY = 'firebase 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 ', Жоқ) lcd = LCD () lcd.text (' Бақытты бол! ', 1) lcd.text (' Сәттілік! ', 2) ұйықтау (1) # Қызыл, Сары, Жасыл ЖАРЫҚТАР = [40, 38, 36] ТҮЙМЕЛЕР = [37, 33, 35] ЕСКЕРТПЕЛЕР = [«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 үлгі = def initialize_gpio (): GPIO.setmode (GPIO. BOARD) GPIO.setup (LIGHTS, GPIO. OUT, initial = GPIO. LOW) GPIO. i диапазонындағы (3) орнату (BUTTONS, GPIO. IN, pull_up_down = GPIO. PUD_DOWN): GPIO.add_event_detect (BUTTONS , GPIO. FALLING, verify_player_selection) def verify_player_selection (channel): global current_step_le_level_level_level_level is_game_over егер_ үлгісі_болмаса және_болмаса_жоғары_деңгейде емес: flash_led_for_button (канал) if channel == BUTTONS [pattern [current_step_of_level]: current_step_of_level += 1 if current_steple_level_level_level_level_level 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 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_display_GirişLight_Light_PatIO: GPIO. шығыс (LIGHTS [үлгі , GPIO. HIGH) уақыт (): is_game_over is_won_current_level емес, ал мен емес: жаһандық is_displaying_pattern, is_won_current_level, жаһандық current_level, current_step_of_level, үлгі is_displaying_pattern = False is_won_current_level = False is_game_over is_game_over = False current_level = 1 current_step_of_level = 0 үлгісі =: time.sleep (0.1) Def () reset_board_for_new_game GPIO.output (LIGHTS, GPIO. LOW) def send_data (балл): lcd.text ('Ойынның соңы,', 1) lcd.text ('Жақында кездескенше!', 2) datestr = str (datetime. now ()) True кезінде: басып шығару (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 -!) баспа («Ойын үстінде!»).format (ағымдағы_деңгей - 1)) ұйқы (2) басып шығару («Ойнағаныңызға рахмет! / n») lcd.text ('', 1) lcd.text ('', 2) үзіліс уақыты.ұйқы (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 ') басып шығару («Жаңа раундты бастаңыз! / 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 бір бөлімге арналған (қауіпсіздік/қорғаныс/ойын -сауық)

Қызыл түйінді орнатыңыз

Қызыл түйінмен іске қосыңыз

қызыл түйіннің басталуы

  1. Гамбургер мәзіріндегі басқару палитрасына өтіңіз (жоғарғы оң жақта)
  2. Келесі паллеттерді жүктеңіз

    1. қызыл-түйіндік бақылау тақтасы
    2. түйін-қызыл-үлес-өрт базасы
    3. түйін-қызыл-үлес-ибм-ватсон-иот

6 -қадам: Қызыл түйін түйіні

Қызыл ағындар түйіні
Қызыл ағындар түйіні
Қызыл ағындар түйіні
Қызыл ағындар түйіні
Қызыл ағындар түйіні
Қызыл ағындар түйіні
Қызыл ағындар түйіні
Қызыл ағындар түйіні

Файлдарды жүктеп алып, қызыл түйінге экспорттаңыз.

Қауіпсіздік түйіні-қызыл

жоқ

Қорғаныс Rpi түйіні-қызыл

laserturret.txt

Ойын-сауық Rpi Node-Red

  • ойын -сауық rpi flow.txt
  • ldr rpi flow.txt

IBM Bluemix Node-Red

Ұсынылған: