فهرست مطالب:

مرور کلی: سیستم سرگرمی و امنیت خانگی: 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 استفاده می کنیم و از Firebase به عنوان پایگاه داده خود استفاده می کنیم.

خلاصه مراحل که شرح داده خواهد شد

  • سخت افزار مورد نیاز
  • امنیت - نحوه ایجاد یک سیستم امنیتی که از ورودی RFID و یک نرم افزار تشخیص تصویر استفاده می کند
  • دفاع - نحوه ایجاد برجک لیزری
  • سرگرمی - چگونه می توان یک بازی Simon -می گوید
  • IOT App Watson در IBM Bluemix - نحوه ادغام همه سیستم ها در یک داشبورد

برای توضیح بیشتر در مورد نحوه ایجاد این پروژه ، به فایل pdf دسترسی پیدا کنید.

مرحله 1: الزامات سخت افزاری

این چیزی است که شما به آن نیاز خواهید داشت

  1. امنیت

    • 1 تمشک پای
    • 1 LCD
    • 1 RFID Reader
    • 1 PiCam
    • 2 کارت RFID/دکمه
    • X زن -> کابل های جهنده مرد
  2. دفاع

    • 1 تمشک پای
    • 2 10 مقاومت (برای دکمه ها)
    • 2 میکرو سروو
    • 1 ماژول فرستنده لیزری 650 نانومتری
    • 2 دکمه فشاری
    • 1 زنگ
    • 3 نوار لاستیکی کوچک/کابل (برای تعمیر)
    • X زن -> کابل های جهنده مرد
    • X کابل های پرش معمولی
    • 1 ترانزیستور
    • 1 خازن
  3. سرگرمی ها

    • 1 تمشک پای
    • 3 1 مقاومت (برای LED ها)
    • 1 10㏀ مقاومت (برای LDR)
    • 3 LED (رنگهای مختلف)
    • 3 دکمه
    • 1 LDR
    • 1 LCD
    • سنسور حرکت 1 پیر
    • 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 ، Buzzer ، Button ، Servoimport زمان ورود سیگنال به طور تصادفی وارد کردن مکث

#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 () print ("LED خاموش است")

def fire ():

print ("arms hot") 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" 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 = period / 2 #محاسبه زمان برای نیمی از موج): #شروع یک حلقه از 0 به متغیر "چرخه" محاسبه شده در بالای buzzer_pin.on () time.sleep (delayValue) buzzer_pin.off () time.sleep (delayValue)

پخش دف (ملودی ، سرعت ، مکث ، سرعت = 0.800):

برای i در محدوده (0 ، len (ملودی)): # پخش آهنگ آهنگ مدت زمان = سرعت/سرعت وزوز (ملودی ، noteDuration) # تغییر فرکانس در طول نوت آهنگ مکثBetweenNotes = noteDuration * مکث زمان pauseBetweenNotes)

در حالی که True:

laserturret () break؛

مرحله 4: سرگرمی

سرگرمی
سرگرمی
سرگرمی
سرگرمی
سرگرمی
سرگرمی

ایجاد سخت افزار سرگرمی

ما بازی دکمه Simon-dibêje را ایجاد می کنیم ، که باید از الگوی روشن شدن LED ها پیروی کنید و دکمه های مربوطه را فشار دهید. نمرات و زمان را در پایگاه داده NoSQL firebase بارگذاری می کند تا بیشتر در داشبورد استفاده شود.

مدارها را مطابق شکل Fritzing وصل کنید.

ایجاد نرم افزار سرگرمی

سرگرمی. py

واردات RPi. GPIO عنوان GPIOimport زمان نخ واردات tweepy واردات واردات تصادفی سیستم عامل واردات از ال سی دی rpi_lcd واردات از پاسخ فرزند واردات از زمان خواب واردات از حسگر ناحیه رنگی یک حسگر ناحیه رنگی واردات از Firebase CONSUMER_KEY واردات فایربیس = 'h5Sis7TXdoUVncrpjSzGAvhBH، CONSUMER_SECRET = ACCESS_KEY، ZfDVxc4aTd9doGmBQO3HiSKKzxSTKT4C3g0B3AGx8eETCJm2rY' = '988333099669901312- YDLEQN1weW2n1JP4lxJcFPppCsbvzQh، ACCESS_SECRET = 'K2IlUPur6jx7DO5S0HhhZW29H5AQFOvkMMevSsk9ZzwLk، تایید = tweepy. OAuthHandler (CONSUMER_KEY، CONSUMER_SECRET) auth.secure = auth.set_access_token واقعی (ACCESS_KEY، ACCESS_SECRET) API = tweepy. API (تایید) فایربیس = firebase. FirebaseApplication (' https:// را iotca2 -12f48.firebaseio.com '، هیچ) lcd = LCD () lcd.text ("خوش بگذره!" ، 1) lcd.text ("موفق باشید!" ، 2) خواب (1) # چراغ قرمز ، زرد ، سبز = [40 ، 38 ، 36] BUTTONS = [37 ، 33 ، 35] NOTES = ["E3" ، "A4" ، "E4"] # مقادیری که می توانید تغییر دهید و بر سرعت بازی تأثیر می گذارد = 0.5 # پرچم مورد استفاده برای علامت دادن به بازی status is_displaying_pattern = False is_won_curr ent_level = False is_game_over = غلط # وضعیت بازی 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_velvel_chvel_level، سطح_ is_game_over اگر نه is_displaying_pattern و is_won_current_level نیست و is_game_over: flash_led_for_button (channel) if channel == BUTTONS [pattern [current_step_of_level]: current_step_of_level += 1 if_0_ 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_wle منحنی 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_Point_Lowout_Lowout: GPIO.output (LIGHTS [pattern ، GPIO. HIGH) time.sleep (speed) GPIO.output (LIGHTS [pattern ، GPIO. LOW) time.sleep (speed) is_displaying_pattern = نادرست def_for_player_to_repeat_pattern (): while not_won_current_level و not_ame_over: time.sleep (0.1) def reset_board_for_new_game (): global is_displaying_pattern، is_won_current_level، is_game_over global global_level، current_step_of_level_vel_vervel_vel_vervel_vel_lver_vel_live_vel_live_vel_live_vervel_vel_vel_vel_live_vel_0 GPIO.output (LIGHTS، GPIO. LOW) def send_data (امتیاز): 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 (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_game_over: send_data (current_level - 1) print ("} Over game!") قالب (): 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 [قسمت اول]

سرویس IoT Blumix را راه اندازی کنید

  1. یک نوع دستگاه Gateway تنظیم کنید
  2. یک دستگاه تنظیم کنید

مراحل 1 و 2 را 3 بار انجام دهید. یک RPi برای یک بخش است (امنیت/دفاع/سرگرمی)

Node-Red را تنظیم کنید

node-red را اجرا کنید

شروع گره قرمز

  1. برای مدیریت پالت در منوی همبرگر (بالا سمت راست) بروید
  2. پالت های زیر را بارگیری کنید

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

مرحله 6: گره قرمز جریان می یابد

گره قرمز جریان می یابد
گره قرمز جریان می یابد
گره قرمز جریان می یابد
گره قرمز جریان می یابد
گره قرمز جریان می یابد
گره قرمز جریان می یابد
گره قرمز جریان می یابد
گره قرمز جریان می یابد

فایلها را بارگیری کرده و به گره قرمز خود صادر کنید.

گره امنیتی-قرمز

هیچ یک

دفاع Rpi Node-Red

laserturret.txt

سرگرمی Rpi Node-Red

  • سرگرمی rpi flow.txt
  • ldr rpi flow.txt

IBM Bluemix Node-Red

توصیه شده: