جدول المحتويات:
- الخطوة 1: قطع الغيار والملحقات
- الخطوة 2: وصف الأجزاء: Sense Hat
- الخطوة 3: التجميع: مسجل الأثر
- الخطوة 4: التجميع: تأثير مسجل على لوحة داش في السيارة
- الخطوة 5: مسجل التأثير: العمل والتطبيقات
- الخطوة 6: وصف البرنامج: Node Red
- الخطوة 7: أساسيات العقدة الحمراء
- الخطوة 8: العقدة الحمراء: Flow _1a
- الخطوة 9: العقدة الحمراء: Flow_1b
- الخطوة 10: العقدة الحمراء: Flow_2a
- الخطوة 11: العقدة الحمراء: Flow_2b
- الخطوة 12: العقدة الحمراء ؛ تدفق_3
- الخطوة 13: MQTT
- الخطوة 14: MQTT: المشترك
- الخطوة 15: MQTT: تحرير الخصائص باللون الأحمر العقدة
- الخطوة 16: كود بايثون:
- الخطوة 17: الكود النهائي
- الخطوة 18: مراقبة الفيديو المباشر
فيديو: مسجل تأثير للمركبات: 18 خطوة (بالصور)
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:38
تم تصميم مسجل التأثير لتسجيل التأثير المستمر على السيارة أثناء القيادة أو الوقوف. يتم تخزين التأثيرات في قاعدة البيانات في شكل قراءات بالإضافة إلى فيديو / صورة ، ويمكن التحقق من المستخدم عن بُعد في الوقت الفعلي ، ويمكن للمستخدم البعيد مشاهدة الفيديو المحفوظ أو الوصول عن بُعد إلى كاميرا pi ومشاهدة الأحداث وفقًا لذلك..
الخطوة 1: قطع الغيار والملحقات
(1) Raspberry Pi 3 أو أفضل: القوة الحسابية المطلوبة
(2) قبعة إحساس التوت
(3) كاميرا Raspberry Pi / كاميرا USB
(4) بطاقة ذاكرة بأحدث صورة raspbian (يجب أن تدعم العقدة الحمراء ، كل صورة حديثة تقريبًا تدعمها)
(5) مصدر طاقة 2.1 أمبير على الأقل (لقد استخدمت بنك البطارية للتشغيل المستقل في السيارة)
الخطوة 2: وصف الأجزاء: Sense Hat
يحتوي Sense HAT على مصفوفة 8 × 8 RGB LED وعصا تحكم بخمسة أزرار ويتضمن المستشعرات التالية:
- جيروسكوب
- مقياس التسارع
- مقياس المغناطيسية
- درجة حرارة
- بارومتري
- الضغط
- رطوبة
يمكن الحصول على مزيد من المعلومات حول العمل مع قبعة الحس من الروابط التالية: Sense_Hat
واجهة برمجة التطبيقات الخاصة بقبعة الإحساس مستضافة على العنوان: Sense_hat_API
تمت تغطية رمز برمجة قبعة الحس في خطوات لاحقة. يمكن أيضًا محاكاة رمز قبعة Sense على جهاز محاكاة مستضاف على: Sense-hat simulator
الخطوة 3: التجميع: مسجل الأثر
- يعد التجميع أبسط حيث يجب تكديس قبعة الإحساس فوق pi (يتم توفير مسامير التثبيت المخصصة مع قبعة استشعار).
- يمكن توصيل كاميرا USB أو كاميرا بي. في البرنامج التعليمي ، يتم النظر في كاميرا pi وبناءً عليه يتم تنفيذ الترميز لنفسه.
- أدخل بطاقة الذاكرة وقم بتكوين كود python والعقدة الحمراء (تتم تغطية التكوين والرمز في خطوات أخرى)
تُظهر الصورة أعلاه كاميرا pi متصلة عبر كابل الشريط المسطح بـ pi
الخطوة 4: التجميع: تأثير مسجل على لوحة داش في السيارة
لتركيب المُسجل ، استخدمت شريطًا مزدوج الجوانب ، والميزة هي أن المُسجل يمكن تغييره بسهولة في وضع مختلف ، أيهما يناسب سيارتك بشكل أفضل.
يتم تثبيت المزيد من الكاميرا عموديًا كما هو موضح ، باستخدام نفس الشريط الجانبي المزدوج ،
التالي في الخط هو توصيل مصدر طاقة (بنك طاقة 10000 مللي أمبير في الساعة) مع اتصال إنترنت جاهز
يلزم الاتصال بالإنترنت لتطبيق MQTT (تتم تغطية تفاصيل MQTT في خطوات أخرى)
الخطوة 5: مسجل التأثير: العمل والتطبيقات
من قبعة الحس ، يتم استخدام التسارع والجيروسكوب للتحقق مما إذا كانت القيم الأولية تتجاوز الحد المعين في الكود.
مقياس التسارع: يخبر مقياس التسارع مقدار قوة الجاذبية (قوة G) التي تعمل على كل من المحور x و y و z ، إذا كان أي محور يقيس قوة 1G ، فيمكن اكتشاف الحركة السريعة. (يرجى ملاحظة أن المحور الذي يشير إلى أسفل سيكون له قيمة 1 جرام ويجب مراعاته وفقًا لذلك في كود بيثون).
جيروسكوب. يتم استخدام الجيروسكوب لقياس الحركة الزاوية ، أي أثناء الانعطاف الحاد ، قد يتم تنشيط المستشعر (يعتمد على الإعداد في الكود) ، لذلك فإن الشخص الذي يدور حول السيارة بحدة يتم القبض عليه !!
يتم أيضًا عرض أي تنشيط للحد المحدد على مصفوفة LED الخاصة بقبعة الإحساس كـ "!" باللون الأحمر للتسريع والأخضر لتنشيط الجيروسكوب
الخطوة 6: وصف البرنامج: Node Red
Node-RED هي أداة برمجة قائمة على التدفق ، تم تطويرها في الأصل بواسطة Emerging Technology Servicesteam من IBM وهي الآن جزء من JS Foundation.
يمكن الحصول على مزيد من المعلومات حول العقدة الحمراء من خلال الرابط التالي: العقدة الحمراء
بالنسبة لحالتنا ، سنستخدم العقدة الحمراء للأنشطة التالية
(1) التفاعل مع أذرع التحكم لبدء وظائف الكاميرا
(2) مراقبة التأثيرات على السيارة ونقل المعلومات إلى المستخدم النهائي من خلال استخدام MQTT وكذلك قبول أوامر المستخدم النهائي من خلال MQTT وبدء التطبيق المطلوب على pi
(3) أداء بعض الأشياء الأساسية مثل إيقاف تشغيل pi
تقدم الخطوات الإضافية معلومات مفصلة عن مخطط التدفق المطبق على العقدة الحمراء
يرجى ملاحظة أن مخططات تدفق العقدة الحمراء تتفاعل مع كود الثعبان ، ومن ثم فإن الجزء الأخير يغطي جوانب كود الثعبان
الخطوة 7: أساسيات العقدة الحمراء
يتم تمييز بعض الخطوات الأساسية لبدء تشغيل Node-red في ومضة ، ولكن نعم ، يعد node-red بسيطًا جدًا لبدء التطبيقات والعمل بها.
- بدء العقدة الحمراء: https:// localhost: 1880.
- بدء Node-red عندما يكون pi متصلاً بالإنترنت https:// ip address>: 1880
الخطوة 8: العقدة الحمراء: Flow _1a
يراقب Flow _1a أي تغييرات في ملف CSV وعلى أساس التغييرات ، على سبيل المثال ، تم اكتشاف التأثير ، وتعيين تسجيل فيديو الكاميرا على وضع التشغيل ، كما يتم إبلاغ المستخدم عبر الإنترنت بحدوث تأثير
الخطوة 9: العقدة الحمراء: Flow_1b
في التدفق المذكور ، يمكن بدء تسجيل الفيديو في أي وقت بمجرد الضغط على عصا التحكم
الخطوة 10: العقدة الحمراء: Flow_2a
في التدفق المذكور ، كلما تم تخزين / تحميل أي صورة أو مقطع فيديو جديد إلى الدليل ، يتم نقل المعلومات إلى المستخدم المسجل عبر الإنترنت
الخطوة 11: العقدة الحمراء: Flow_2b
تم تصميم هذا التدفق بشكل أساسي للمستخدم البعيد ، وذلك للتحكم في الجهاز بالطريقة التالية
(أ) جهاز الاغلاق
(ب) التقاط الصور
(ج) تسجيل مقاطع الفيديو
(د) بدء الكود الرئيسي (كود datalogger هو الكود الرئيسي الذي يحسب التأثير)
الخطوة 12: العقدة الحمراء ؛ تدفق_3
تم تصميم التدفق للوصول المحلي ، وذلك لبدء الكود الرئيسي أو جهاز إيقاف التشغيل
الخطوة 13: MQTT
MQTT (النقل عن بعد لخدمة وضع الرسائل في قائمة انتظار) هو بروتوكول TCP / IP ، حيث يتفاعل الناشر والمشترك.
في حالتنا ، يكون Pi هو الناشر ، في حين أن التطبيق المثبت في moblile / الكمبيوتر الشخصي الخاص بنا يجب أن يكون هو المشترك.
بهذه الطريقة عند إحداث أي تأثير ، يتم نقل المعلومات عن بُعد إلى المستخدم (يجب توفر اتصال إنترنت فعال)
يمكن الوصول إلى مزيد من المعلومات حول MQTT من الرابط التالي: MQTT
لبدء استخدام MQTT ، نحتاج إلى التسجيل أولاً ، في البرنامج التعليمي الذي استخدمت فيه cloudmqtt (www.cloudmqtt.com) ، هناك خطة مجانية ضمن "cute cat" ، هذا كل شيء.
بعد التسجيل قم بإنشاء مثيل قل "pi" وبعد ذلك ستحصل على التفاصيل التالية
- اسم الخادم
- ميناء
- اسم االمستخدم
- كلمه السر
ما ورد أعلاه مطلوب عند الاشتراك من خلال الموبايل / الكمبيوتر الشخصي
بالنسبة لتطبيقي ، لقد استخدمت تطبيق MQTT من متجر google play (إصدار Android)
الخطوة 14: MQTT: المشترك
تطبيق MQTT يعمل على الهاتف المحمول (إصدار Android)
يتم ترحيل التأثير المكتشف على pi مرة أخرى
الخطوة 15: MQTT: تحرير الخصائص باللون الأحمر العقدة
في العقدة الحمراء بعد تحديد عقدة MQTT ، يجب ذكر "اسم الخادم" و "الموضوع". يجب أن يكون هذا هو نفسه في نهاية المشترك
الخطوة 16: كود بايثون:
وظيفة الكود هي حسب المخطط الانسيابي المرفق
الخطوة 17: الكود النهائي
كود الثعبان مرفق
لكي نجعل سكربت python يعمل من المحطة ، نحتاج إلى جعلها قابلة للتنفيذ مثل chmod + x datalogger.py ، بدلاً من أن يحتوي الجزء العلوي من الكود على سطر "shebang" التالي #! / usr / bin / python3 (هذا مطلوب لتنفيذ الوظائف من العقدة الحمراء)
#! / usr / bin / python3 // shebang linef from sense_hat استيراد SenseHat من استيراد التاريخ والوقت والوقت من كاتب استيراد csv ، استيراد RPi. GPIO كـ GPIO من وقت استيراد السكون
المعنى = SenseHat ()
استيراد ملف csv
الطابع الزمني = datetime.now ()
تأخير = 5 // يتم تعريف التأخير لتخزين البيانات في ملف data.csv أحمر = (255 ، 0 ، 0) أخضر = (0 ، 255 ، 0) أصفر = (255 ، 255 ، 0)
# GPIO.setmode (GPIO. BCM)
# GPIO.setup (17 ، GPIO. OUT)
def get_sense_impact ():
sense_impact = acc = sense.get_accelerometer_raw () sense_impact.append (acc ["x"]) sense_impact.append (acc ["y"]) sense_impact.append (acc ["z"])
جيرو = sense.get_gyroscope_raw ()
sense_impact.append (gyro ["x"]) sense_impact.append (gyro ["y"]) sense_impact.append (gyro ["z"])
عودة تأثير المعنى
تأثير def (): // وظيفة لاكتشاف التأثير # GPIO.setmode (GPIO. BCM) # GPIO.setup (4، GPIO. OUT) تسريع = sense.get_accelerometer_raw () x = التسارع ['x'] y = التسارع ['y'] z = التسارع ['z'] x = abs (x) y = abs (y) z = abs (z)
جيرو = sense.get_gyroscope_raw ()
gyrox = gyro ["x"] gyroy = gyro ["y"] gyroz = gyro ["z"]
gyrox = مستدير (gyrox، 2)
gyroy = round (gyroy، 2) gyroz = مستدير (gyroz، 2)
التأثير = get_sense_impact ()
إذا كانت x> 1.5 أو y> 1.5 أو z> 1.5: // يمكن تغيير القيم بعد التكرار على الطريق الفعلي وفقًا لأنواع مختلفة ومهارات القيادة مع فتح ('effect.csv'، 'w'، newline = ' ') كـ f: data_writer = كاتب (f) data_writer.writerow ([' acc x '،' acc y '،' acc z '،' gyro x '،' gyro y '،' gyro z ']) #GPIO. الإخراج (4 ، GPIO. HIGH) بمعنى واضح () إحساس. إظهار_حرف ("!" ، أحمر) data_writer.writerow (تأثير)
elif gyrox> 1.5 أو gyroy> 1.5 أو gyroz> 1.5: // يتم تعيين القيم بالنظر إلى السرعة التي تبدأ عندها المنعطفات بالفتح ('effect.csv'، 'w'، newline = '') كـ f: data_writer = الكاتب (f) data_writer.writerow (['acc x'، 'acc y'، 'acc z'، 'gyro x'، 'gyro y'، 'gyro z']) # GPIO.output (4، GPIO. HIGH) sense.clear () sense.show_letter ("!" ، الأخضر) data_writer.writerow (الأثر)
آخر:
# GPIO.output (4، GPIO. LOW) استشعار واضح ()
def get_sense_data (): // وظيفة لتسجيل وتخزين القيم من المستشعر sense_data =
sense_data.append (sense.get_temperature ()) sense_data.append (sense.get_pressure ()) sense_data.append (sense.get_humidity ())
التوجه = sense.get_orientation ()
sense_data.append (التوجه ["yaw"]) sense_data.append (التوجه ["الملعب"]) sense_data.append (التوجه ["لفة"])
acc = sense.get_accelerometer_raw ()
sense_data.append (acc ["x"]) sense_data.append (acc ["y"]) sense_data.append (acc ["z"]) mag = sense.get_compass_raw () sense_data.append (mag ["x"]) sense_data.append (mag ["y"]) sense_data.append (mag ["z"])
جيرو = sense.get_gyroscope_raw ()
sense_data.append (gyro ["x"]) sense_data.append (gyro ["y"]) sense_data.append (الدوران ["z"])
sense_data.append (datetime.now ())
إرجاع البيانات المنطقية
مع open ('data.csv'، 'w'، newline = '') مثل f:
data_writer = الكاتب (f)
data_writer.writerow (['temp'، 'pres'، 'hum'، 'yaw'، 'Pitch'، 'roll'، 'acc x'، 'acc y'، 'acc z'، 'mag x'، ' mag y '،' mag z '،' gyro x '،' gyro y '،' gyro z '،' datetime '])
احيانا صحيح:
print (get_sense_data ()) للحدث في sense.stick.get_events (): # تحقق مما إذا تم الضغط على عصا التحكم إذا كان event.action == "pressed": # تحقق من الاتجاه إذا كان event.direction == "up": # sense.show_letter ("U") # تسريع السهم لأعلى = sense.get_accelerometer_raw () x = التسارع ['x'] y = التسارع ['y'] z = التسارع ['z'] x = round (x، 0) y = دائري (ص ، 0) ض = دائري (ض ، 0)
# قم بتحديث دوران الشاشة اعتمادًا على أي اتجاه يصل إلى x == -1: sense.set_rotation (90) elif y == 1: sense.set_rotation (270) elif y == -1: sense.set_rotation (180) else: sense.set_rotation (0) sense.clear () t = sense.get_temperature () t = round (t، 1) message = "T:" + str (t) sense.show_message (message، text_colour = red، scroll_speed = 0.09) elif event.direction == "down": التسريع = sense.get_accelerometer_raw () x = التسارع ['x'] y = التسارع ['y'] z = التسارع ['z'] x = round (x ، 0) y = round (y، 0) z = round (z، 0)
# قم بتحديث دوران الشاشة اعتمادًا على أي اتجاه يصل إلى x == -1: sense.set_rotation (90) elif y == 1: sense.set_rotation (270) elif y == -1: sense.set_rotation (180) else: sense.set_rotation (0) # sense.show_letter ("D") # Down arrow sense.clear () h = sense.get_humidity () h = round (h، 1) message = "H:" + str (ح) sense.show_message (message، text_colour = green، scroll_speed = 0.09) p = sense.get_pressure () p = round (p، 1) message = "P:" + str (p) sense.show_message (message، text_colour = أصفر ، scroll_speed = 0.09)
# elif event.direction == "يسار":
# التسريع = sense.get_accelerometer_raw () # x = التسارع ['x'] #y = التسارع ['y'] #z = التسارع ['z'] # x = round (x، 0) # y = round (y ، 0) # ض = جولة (ض ، 0)
# قم بتحديث دوران الشاشة اعتمادًا على الطريقة التي يصل بها // غير مستخدم ويتحكم فيه node-red #if x == -1: sense.set_rotation (90) #elif y == 1: sense.set_rotation (270) #elif y == -1: sense.set_rotation (180) # else: sense.set_rotation (0) # sense.show_letter ("L") # Left arrow # elif event.direction == "right": # sense.show_letter ("K") # سهم لليمين # elif event.direction == "وسط": # sense.clear ()
تأثير()
data = get_sense_data ()
dt = البيانات [-1] - الطابع الزمني إذا كانت dt.seconds> تأخير: data_writer.writerow (data) timestamp = datetime.now ()
الخطوة 18: مراقبة الفيديو المباشر
يمكن أيضًا استخدام Impact Recorder لمراقبة الفيديو المباشر ، حيث يمكن بدء تشغيل الفيديو في أي وقت وفي أي مكان من خلال MQTT
سنستخدم مشغل VLC لدفق مقاطع الفيديو ، افتراضيًا في أحدث إصدار من raspbian ، يتم تثبيت VLC مسبقًا ، وإلا قم بتثبيت vlc على النحو التالي
يمكن الوصول إلى مزيد من المعلومات حول عرض دفق الشبكة من خلال دفق شبكة VLC
شكرا لقرائتك!!
هناك الكثير مما يمكن أن يفعله مسجل التأثير..
احترس من المساحة التالية لتحليل المجال المغناطيسي في تنفيذ رسم خرائط العوائق
موصى به:
كيفية عمل مسجل بيانات في الوقت الحقيقي للرطوبة ودرجة الحرارة باستخدام Arduino UNO وبطاقة SD - DHT11 محاكاة مسجل البيانات في Proteus: 5 خطوات
كيفية عمل مسجل بيانات في الوقت الحقيقي للرطوبة ودرجة الحرارة باستخدام Arduino UNO وبطاقة SD | DHT11 محاكاة مسجل البيانات في Proteus: مقدمة: مرحبًا ، هذا Liono Maker ، إليك رابط YouTube. نحن نصنع مشروعًا إبداعيًا مع Arduino ونعمل على أنظمة مضمنة. Data-Logger: مسجل البيانات (أيضًا مسجل البيانات أو مسجل البيانات) هو جهاز إلكتروني يسجل البيانات بمرور الوقت مع
مسجل بيانات GPS يمكنك صنعه بنفسك في مسار القيادة / المشي لمسافات طويلة: 11 خطوة (بالصور)
DIY Data Logger for You Next Drive / Hiking Trail: هذا هو مسجل بيانات GPS الذي يمكنك استخدامه لأغراض متعددة ، على سبيل المثال إذا كنت تريد تسجيل محرك الأقراص الطويل الذي قضيته خلال عطلة نهاية الأسبوع للتحقق من ألوان الخريف. أو لديك مسار مفضل تزوره خلال الخريف كل عام وأنت
حساس / مقياس درجة حرارة المحرك مع مسبار لاسلكي للمركبات الكلاسيكية: 7 خطوات
مستشعر / مقياس درجة حرارة المحرك مع مسبار لاسلكي للمركبات الكلاسيكية: لقد صنعت هذا المسبار من أجل تشيبتاك الجميل. سيارة فيات 126 بمحرك ثنائي الأسطوانات مبرد بالهواء أسفل غطاء المحرك الخلفي. لا يوجد مقياس حرارة يوضح درجة حرارة المحرك ، لذلك اعتقدت أن المستشعر سيكون مفيدًا ، كما أردت أن يكون المستشعر سلكيًا
كيفية عمل مسجل بيانات لدرجة الحرارة ودرجة الحموضة والأكسجين المذاب: 11 خطوة (بالصور)
كيفية عمل مسجل بيانات لدرجة الحرارة ودرجة الحموضة والأكسجين المذاب: الأهداف: عمل مسجل بيانات بقيمة 500 دولار. يخزن بيانات لدرجة الحرارة ، ودرجة الحموضة ، و DO مع طابع زمني وباستخدام اتصال I2C. لماذا I2C (الدائرة المتكاملة)؟ يمكن للمرء تكديس أكبر عدد ممكن من أجهزة الاستشعار في نفس الخط بالنظر إلى أن كل واحد منهم لديه
Walabot FX - التحكم في تأثير الجيتار: 28 خطوة (بالصور)
Walabot FX - التحكم في تأثير الجيتار: تحكم في تأثير الجيتار المفضل لديك باستخدام لا شيء سوى وضعيات الجيتار الرائعة