جدول المحتويات:

نظرة عامة: نظام الترفيه والأمن المنزلي: 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 Cloud Services واستخدمنا Firebase كقاعدة بيانات خاصة بنا.

ملخص الخطوات التي سيتم وصفها

  • متطلبات الأجهزة
  • الأمان - كيفية إنشاء نظام أمان يستخدم إدخال RFID وبرنامج التعرف على الصور
  • الدفاع - كيفية إنشاء برج ليزر
  • الترفيه - كيفية إنشاء لعبة Simon-says
  • IOT App Watson على IBM Bluemix - كيفية دمج جميع الأنظمة في لوحة معلومات واحدة

انطلق وقم بالوصول إلى ملف pdf للحصول على شرح أكثر تفصيلاً حول كيفية إنشاء هذا المشروع.

الخطوة 1: متطلبات الأجهزة

هذا ما سوف تحتاجه

  1. حماية

    • 1 Raspberry Pi
    • 1 شاشة LCD
    • 1 قارئ RFID
    • 1 PiCam
    • 2 بطاقات / أزرار RFID
    • X أنثى -> كابلات وصلة ذكر
  2. دفاع

    • 1 Raspberry Pi
    • 2 10 ㏀ المقاوم (للأزرار)
    • 2 مايكرو سيرفو
    • 1 وحدة إرسال الليزر 650nm
    • 2 زر ضغط
    • 1 الجرس
    • 3 أربطة مطاطية صغيرة / روابط كبل (للتثبيت)
    • X أنثى -> كابلات وصلة ذكر
    • X كبلات القفز العادية
    • 1 الترانزستور
    • 1 مكثف
  3. ترفيه

    • 1 Raspberry Pi
    • 3 1 المقاوم (لمصابيح LED)
    • 1 10㏀ المقاوم (لـ LDR)
    • 3 مصابيح LED (ألوان مختلفة)
    • 3 أزرار
    • 1 LDR
    • 1 شاشة LCD
    • 1 جهاز استشعار الحركة
    • X أنثى -> كابلات وصلة ذكر
    • X كبلات القفز العادية

الخطوة الثانية: الأمان

حماية
حماية
حماية
حماية
حماية
حماية

إنشاء أجهزة نظام الأمان

قم بتوصيل الدوائر كما هو موضح في الرسم التخطيطي

إنشاء برنامج نظام الأمان

  1. قم بتكوين AWS عن طريق إنشاء شيء ما
  2. قم بتثبيت AWS Python Library
  3. قم بتثبيت مكتبة LCD
  4. قم بتثبيت مكتبة RFID
  5. قم بإعداد Firebase
  6. إعداد التخزين S3
  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

الخطوة الثالثة: الدفاع

دفاع
دفاع
دفاع
دفاع
دفاع
دفاع

إنشاء جهاز برج الليزر

  1. نقوم بإنشاء برج الليزر باستخدام 2 مؤازر ووحدة ليزر واحدة
  2. قم بتوصيل الدوائر كما هو موضح في الرسم التخطيطي

إنشاء برنامج برج الليزر

سيجعل الكود أدناه برج الليزر يطلق النار في اتجاهات عشوائية ، في رشقات نارية وسرعة عشوائية

laserturret.py

من gpiozero import LED و Buzzer و Button و Servoimport time من استيراد الإشارة وإيقاف الاستيراد بشكل عشوائي

#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 is off")

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 = مضاعف 1start servo2.value = مؤازرة الوقت..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 (التردد ، الطول): # إنشاء وظيفة "الطنين" وإطعامها الملعب والمدة)

إذا (التردد == 0):

time.sleep (length) return period = 1.0 / Frequency #frequency delayValue = period / 2 #calculate the time for half of the wave numCycles = int (length * frequency) #num of wave = duratime x freq for i in range (numCycles) عدد الدورات): # ابدأ حلقة من 0 إلى "الدورات" المتغيرة المحسوبة أعلاه buzzer_pin.on () time.sleep (delayValue) buzzer_pin.off () time.sleep (delayValue)

تشغيل def (لحن ، وتيرة ، وقفة ، وتيرة = 0.800):

بالنسبة لـ i في النطاق (0 ، len (اللحن)): # تشغيل ملاحظة الأغنية المدة = السرعة / الإيقاع الطنين (اللحن ، noteDuration) # تغيير التردد على طول نغمة الإيقاف المؤقت بين الملاحظات = noteDuration * pause time.sleep (وقفة بين الملاحظات)

احيانا صحيح:

كسر laserturret ؛

الخطوة الرابعة: الترفيه

تسلية
تسلية
تسلية
تسلية
تسلية
تسلية

إنشاء أجهزة الترفيه

قمنا بإنشاء لعبة زر Simon-says ، والتي يجب عليك اتباع نمط إضاءة مصابيح LED والضغط على الأزرار المقابلة. يقوم بتحميل النتائج والطابع الزمني في قاعدة بيانات Firebase NoSQL لمزيد من الاستخدام في لوحات المعلومات.

قم بتوصيل الدوائر كما هو موضح في مخطط فريتزينج.

إنشاء برنامج الترفيه

ترفيه

استيراد RPi. GPIO كما GPIOimport الوقت خيوط استيراد tweepy استيراد عشوائي نظام التشغيل استيراد الاستيراد من LCD rpi_lcd الاستيراد من دعوة فرعي أو جانبي الاستيراد من وقت النوم الاستيراد من التاريخ والوقت التاريخ والوقت الاستيراد من firebase CONSUMER_KEY firebase استيراد = 'h5Sis7TXdoUVncrpjSzGAvhBH "CONSUMER_SECRET =' ZfDVxc4aTd9doGmBQO3HiSKKzxSTKT4C3g0B3AGx8eETCJm2rY" ACCESS_KEY = '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 = firebase. FirebaseApplication (' HTTPS: // iotca2 -12f48.firebaseio.com '، None) lcd = LCD () lcd.text (' Have fun! '، 1) lcd.text (' Good Luck! '، 2) sleep (1) # Red، Yellow، Green LIGHTS = [40، 38، 36] BUTTONS = [37، 33، 35] ملاحظات = ["E3"، "A4"، "E4"] # قيم يمكنك تغييرها والتي تؤثر على سرعة تشغيل اللعبة = 0.5 # أعلام تستخدم للإشارة إلى اللعبة الحالة is_displaying_pattern = خطأ 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 ، الأولي = GPIO. LOW) GPIO. الإعداد (BUTTONS، GPIO. IN، pull_up_down = GPIO. PUD_DOWN) لـ i في النطاق (3): GPIO.add_event_detect (BUTTONS ، GPIO. FALLING ، check_player_selection) def check_player_selection (channel): global current_step_of_level is، current_on is_game_over إذا لم يكن is_displaying_pattern وليس is_won_current_level وليس is_game_over: flash_led_for_button (قناة) إذا كانت القناة == BUTTONS [النمط [current_step_of_level]: true_step_of_level + = 1 if current_step_of_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_evel ،_ 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 (): النطاق العالمي is_displaying_pattern is_displaying_pattern = GPOWTS الحالي: 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) def reset_board_for_new_game (): global is_displaying_pattern، is_won_current_level، is_game_over global current_level، current_step_of_level، pattern is_displaying_level = GPIO.output (LIGHTS، GPIO. LOW) def send_data (النتيجة): lcd.text ('End of game،'، 1) lcd.text ('أراك قريبًا!'، 2) datestr = str (datetime. now ()) بينما صحيح: print (datestr) طباعة (النتيجة) data = {'Date': datestr، 'Score': Score} result = firebase.post ('/ scores /'، data) print (النتيجة) إذا كانت النتيجة> 2: الحالة = 'شخص ما سجل' + (str (النتيجة)) + 'on' + datestr + '!' api.update_status (status = status) كسر 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 ("Game Over!.format (current_level - 1)) sleep (2) print ("Thanks for play! / 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 ') ("Begin new round! / n") initialize_gpio () start_game_monitor () أخيرًا: GPIO.cleanup () if _name_ ==' _main_ ': main ()

الخطوة 5: تطبيق IOT App Watson على IBM Bluemix [الجزء الأول]

قم بإعداد خدمة Blumix IoT

  1. قم بإعداد Gateway Device Type
  2. قم بإعداد جهاز

قم بالخطوتين 1 و 2 لمدة 3 مرات. واحد RPi لقسم واحد (الأمن / الدفاع / الترفيه)

قم بإعداد Node-Red

تشغيل العقدة الحمراء

بداية العقدة الحمراء

  1. انتقل إلى إدارة اللوحة في قائمة الهامبرغر (أعلى اليمين)
  2. قم بتنزيل المنصات التالية

    1. العقدة الحمراء لوحة القيادة
    2. عقدة حمراء ساهمت في Firebase
    3. عقدة-أحمر-مساهم-آي بي إم-واطسون-آيوت

الخطوة 6: عقدة التدفقات الحمراء

تدفقات العقدة الحمراء
تدفقات العقدة الحمراء
تدفقات العقدة الحمراء
تدفقات العقدة الحمراء
تدفقات العقدة الحمراء
تدفقات العقدة الحمراء
تدفقات العقدة الحمراء
تدفقات العقدة الحمراء

قم بتنزيل الملفات وتصديرها إلى node-red.

عقدة الأمان الحمراء

لا أحد

عقدة الدفاع Rpi-Red

laserturret.txt

ترفيه Rpi Node-Red

  • الترفيه rpi flow.txt
  • ldr rpi flow.txt

IBM Bluemix Node-Red

موصى به: