Мазмуну:

Обзор: Үйдүн көңүл ачуу жана коопсуздук системасы: 6 кадам
Обзор: Үйдүн көңүл ачуу жана коопсуздук системасы: 6 кадам

Video: Обзор: Үйдүн көңүл ачуу жана коопсуздук системасы: 6 кадам

Video: Обзор: Үйдүн көңүл ачуу жана коопсуздук системасы: 6 кадам
Video: Аял кантсе, эркекти тошокто кандырат? 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 Micro Servo
    • 1 650nm лазердик өткөргүч модулу
    • 2 баскыч
    • 1 Buzzer
    • 3 Кичинекей резина топтору/Кабелдик байланыштар (оңдоо үчүн)
    • X Аял -> Эркек секирүүчү кабелдер
    • X үзгүлтүксүз секирүү кабелдери
    • 1 Транзистор
    • 1 Конденсатор
  3. Көңүл ачуулар

    • 1 Raspberry Pi
    • 3 1 ㏀ Резистор (LED үчүн)
    • 1 10㏀ резистор (LDR үчүн)
    • 3 LED (ар кандай түстөр)
    • 3 баскычтар
    • 1 LDR
    • 1 ЖК
    • 1 Pir Motion Sensor
    • X Аял -> Эркек секирүүчү кабелдер
    • X үзгүлтүксүз секирүү кабелдери

2 -кадам: Коопсуздук

Коопсуздук
Коопсуздук
Коопсуздук
Коопсуздук
Коопсуздук
Коопсуздук

Коопсуздук тутумунун аппараттык түзүлүшүн түзүү

Фритинг диаграммасында көрсөтүлгөндөй схемаларды туташтырыңыз

Коопсуздук системасынын программасын түзүү

  1. Бир нерсени түзүү аркылуу AWSти конфигурациялаңыз
  2. AWS Python китепканасын орнотуңуз
  3. LCD китепканасын орнотуу
  4. RFID китепканасын орнотуу
  5. Firebase орнотуу
  6. S3 сактагычын орнотуу
  7. Ботону 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 импорттук светодиодунан, Buzzer, Button, Servoimport time from signal import пауза импорттук туш келди

#жарык = LED (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 = Servo (24)

def ledON ():

led.on () басып чыгаруу ("LED күйүк") def ledOFF (): led.off () басып чыгаруу ("LED өчүк")

def fire ():

басып чыгаруу ("куралдар ысык") 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 маалымат = [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):

time.sleep (узундук) кайтып келүү мезгили = 1.0 / жыштык #жыштыктын кечиктирилиши Value = мезгил / 2 #толкундун жарымына убакытты эсептөө циклдар): #0дөн циклди баштаңыз, buzzer_pin.on () time.sleep (delayValue) buzzer_pin.off () time.sleep (delayValue)

def ойноо (обон, темп, пауза, темп = 0.800):

i үчүн диапазондо (0, лен (обон)): # Play song noteDuration = темп/темп buzz (melody , noteDuration) # Ыр нотасынын жыштыгын өзгөртүү pauseBetweenNotes = noteDuration * тыным убактысы.уйку (тыныгуу арасында Notes)

чын болсо:

laserturret () тыныгуу;

4 -кадам: Көңүл ачуу

Көңүл ачуу
Көңүл ачуу
Көңүл ачуу
Көңүл ачуу
Көңүл ачуу
Көңүл ачуу

Оюн -зоок жабдууларын түзүү

Биз Саймон айткандай баскыч оюнун түзөбүз, аны жарык берүүчү LEDлердин үлгүсүнө ылайыктап, тиешелүү баскычтарды басуу керек. Ал такталарды андан ары колдонуу үчүн упайларды жана убакыт белгисин Firebase NoSQL маалымат базасына жүктөйт.

Fritzing диаграммасында көрсөтүлгөн схемаларды туташтырыңыз.

Көңүл ачуучу программаны түзүү

көңүл ачуу.py

импорттук RPi. GPIO GPIOimport Threading импорттук убакыт импорттук кокустук импорттук OS импорттук rpi_lcd импорттук subprocess импорттук убакыт импорттук Firebase тартып DateTime импорттук DATETIME тартып уктап импорттук тартып чалуудан ЖКнын Firebase тартып tweepy 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 ', None) lcd = LCD () lcd.text (' Бактылуу болгула! ', 1) lcd.text (' Ийгиликтер! ', 2) уйку (1) # Кызыл, Сары, Жашыл ЖАРЫКТАР = [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 # game state 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 (channel): global current_step_le_level_level_level is_game_over is not_displaying_pattern and is_won_current_level and not_game_over: flash_led_for_button (channel) if channel == BUTTONS [pattern [current_step_of_level]: current_step_of_level += 1 if current_step_level_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_displayOTH: GPIO.output (LIGHTS [pattern , GPIO. HIGH) time.sleep (speed) GPIO.output (LIGHTS [pattern , GPIO. LOW) time.sleep (speed) 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: басып чыгаруу (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 -!) "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 -кадам: IBM Bluemixте IOT App Watson [Биринчи бөлүк]

Blumix IoT кызматын орнотуңуз

  1. Шлюз түзмөгүнүн түрүн орнотуңуз
  2. Түзмөктү орнотуу

1 жана 2 -кадамдарды 3 жолу жасаңыз. Бир RPi бир бөлүм үчүн (Коопсуздук/Коргоо/Көңүл ачуу)

Node-Red'ди орнотуңуз

Түйүн-кызыл чуркаңыз

түйүн-кызыл башталышы

  1. Гамбургер менюсундагы палитраны башкарууга өтүңүз (жогорку оң)
  2. Төмөнкү палеттерди жүктөп алыңыз

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

6 -кадам: Node Red Flows

Node Red Flows
Node Red Flows
Node Red Flows
Node Red Flows
Node Red Flows
Node Red Flows
Node Red Flows
Node Red Flows

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

Коопсуздук түйүнү-Кызыл

эч ким

Коргоо Rpi Node-Red

laserturret.txt

Көңүл ачуу Rpi Node-Red

  • көңүл ачуу rpi агымы.txt
  • ldr rpi flow.txt

IBM Bluemix Node-Red

Сунушталууда: