فهرست مطالب:
- مرحله 1: الزامات سخت افزاری
- مرحله 2: امنیت
- مرحله 3: دفاع
- مرحله 4: سرگرمی
- مرحله 5: IOT App Watson در IBM Bluemix [قسمت اول]
- مرحله 6: گره قرمز جریان می یابد
تصویری: مرور کلی: سیستم سرگرمی و امنیت خانگی: 6 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:56
درباره برنامه
این سیستم IOT یک سیستم سرگرمی و امنیت خانگی است.
-
امنیت
- روی کارت RFID ضربه بزنید و ورودی در Firebase ذخیره می شود.
- در صورت مجوز ، می توانید با آرامش وارد شوید و عکس گرفته شده و در S3 بارگذاری می شود
- در صورت غیرمجاز ، بخش دفاع وارد می شود و یک صفحه LCD می گوید شما مجاز نیستید.
-
دفاع
- دکمه روی داشبورد را فشار دهید.
- برج های لیزری به صورت تصادفی و با سرعت حمله می کنند.
-
سرگرمی
- در صورت تشخیص حرکت ، بازی شروع می شود.
- پس از انجام بازی توسط کاربر ، امتیاز در Firebase ذخیره می شود.
- مقادیر LDR گرفته و در داشبورد خروجی داده می شود.
این برنامه از طریق سرور وب IBM Node-Red قابل کنترل و مشاهده است. ما از خدمات ابری AWS و IBM استفاده می کنیم و از Firebase به عنوان پایگاه داده خود استفاده می کنیم.
خلاصه مراحل که شرح داده خواهد شد
- سخت افزار مورد نیاز
- امنیت - نحوه ایجاد یک سیستم امنیتی که از ورودی RFID و یک نرم افزار تشخیص تصویر استفاده می کند
- دفاع - نحوه ایجاد برجک لیزری
- سرگرمی - چگونه می توان یک بازی Simon -می گوید
- IOT App Watson در IBM Bluemix - نحوه ادغام همه سیستم ها در یک داشبورد
برای توضیح بیشتر در مورد نحوه ایجاد این پروژه ، به فایل pdf دسترسی پیدا کنید.
مرحله 1: الزامات سخت افزاری
این چیزی است که شما به آن نیاز خواهید داشت
-
امنیت
- 1 تمشک پای
- 1 LCD
- 1 RFID Reader
- 1 PiCam
- 2 کارت RFID/دکمه
- X زن -> کابل های جهنده مرد
-
دفاع
- 1 تمشک پای
- 2 10 مقاومت (برای دکمه ها)
- 2 میکرو سروو
- 1 ماژول فرستنده لیزری 650 نانومتری
- 2 دکمه فشاری
- 1 زنگ
- 3 نوار لاستیکی کوچک/کابل (برای تعمیر)
- X زن -> کابل های جهنده مرد
- X کابل های پرش معمولی
- 1 ترانزیستور
- 1 خازن
-
سرگرمی ها
- 1 تمشک پای
- 3 1 مقاومت (برای LED ها)
- 1 10㏀ مقاومت (برای LDR)
- 3 LED (رنگهای مختلف)
- 3 دکمه
- 1 LDR
- 1 LCD
- سنسور حرکت 1 پیر
- 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 ، 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 را راه اندازی کنید
- یک نوع دستگاه Gateway تنظیم کنید
- یک دستگاه تنظیم کنید
مراحل 1 و 2 را 3 بار انجام دهید. یک RPi برای یک بخش است (امنیت/دفاع/سرگرمی)
Node-Red را تنظیم کنید
node-red را اجرا کنید
شروع گره قرمز
- برای مدیریت پالت در منوی همبرگر (بالا سمت راست) بروید
-
پالت های زیر را بارگیری کنید
- node-red-dashboard
- node-red-contribt-firebase
- 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
توصیه شده:
KS-Garden: مرور کلی: 9 مرحله
KS-Garden: نمای کلی: KS-Garden را می توان برای آبیاری/تخلیه استفاده کرد./باغ خود را روشن کنید/گیاهان گلخانه ای را در حیاط خلوت یا گیاهان جعبه ای داخلی خود را طراحی کنید (طراحی مدولار) سیستم KS-Garden عمدتا از ماژول های زیر تشکیل شده است-اصلی جعبه سیستم - جعبه رله و منبع تغذیه
سیستم سرگرمی چوبی Super Nintendo (SNES): 11 مرحله
سیستم سرگرمی چوبی سوپر نینتندو (SNES): در یک نمایشگاه سازنده در وین ، به طور تصادفی با یک سیستم سرگرمی چوبی Super Nintendo (SNES) برخورد کردم. وقتی بچه بودم با برادر بزرگترم با چنین کنسول بازی بازی می کردم. همانطور که دوباره معتاد شدم به سوپر ماریو معتاد شدم
سیستم ردیابی امنیت GPS SMS خود را ایجاد کنید: 5 مرحله (همراه با تصاویر)
سیستم ردیابی امنیت پیام کوتاه GPS خود را بسازید: در این پروژه به شما نشان خواهم داد که چگونه یک ماژول SIM5320 3G را با یک آردوینو و یک مبدل پیزوالکتریک به عنوان یک سنسور شوک ترکیب کنید تا یک سیستم ردیابی امنیتی ایجاد کنید که موقعیت مکانی شما را برای شما ارسال می کند. وسیله نقلیه گرانبها از طریق پیامک هنگام
سیستم سرگرمی Super Wood: 9 مرحله (همراه با تصاویر)
سیستم سرگرمی Super Wood: من با افتخار سیستمهای سرگرمی Super Nintendo چوبی خود را به طور کامل ارائه می دهم. قبل از اینکه راهنمای خود را درباره نحوه ساخت یک Gamepad Super Nintendo چوبی ارسال کنم ، اکنون زمان آن است که نحوه ساخت کنسول را به شما نشان دهم. بدنه چوبی از چند قسمت ساخته شده است
ساعت کارتریج سیستم سرگرمی نینتندو: 7 مرحله (همراه با تصاویر)
ساعت کارتریج سیستم سرگرمی نینتندو: چندی پیش دوست من کارولین مین برای کریسمس چند ساعت کارتریج NES برای دوستانم ساخت. آنها تکان خوردند. جذابیت ساعت کارتریج NES باید در سرتاسر سرزمین ها پخش شود. در حال حاضر ، می توانید آنلاین بروید و یکی را بخرید … اما: 1) همه ما ماشین را می شناسیم