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

نظام المساعدة على الركن القائم على Pi: 9 خطوات
نظام المساعدة على الركن القائم على Pi: 9 خطوات

فيديو: نظام المساعدة على الركن القائم على Pi: 9 خطوات

فيديو: نظام المساعدة على الركن القائم على Pi: 9 خطوات
فيديو: تحقيقات الجزيرة | أوراق قبرص - المهمة السرية.. تكشف كيف يباع جواز السفر للمجرمين 2024, شهر نوفمبر
Anonim
نظام المساعدة على الركن القائم على Pi
نظام المساعدة على الركن القائم على Pi

مرحبا يا من هناك! إليك مشروع صغير رائع يمكنك إجراؤه في فترة ما بعد الظهيرة ثم استخدامه يوميًا. يعتمد على Raspberry Pi Zero W وسيساعدك على إيقاف سيارتك بشكل مثالي في كل مرة.

فيما يلي القائمة الكاملة للأجزاء التي ستحتاجها:

  • Raspberry Pi Zero W (سنطلق على هذا "rpi" أو "pi" في هذه المقالة)
  • بطاقة micro SD سعة 4 جيجابايت أو أكبر لنظام التشغيل pi
  • وحدتان صغيرتان لمستشعر وقت الرحلة لمسافة LiDAR
  • 32x32 RGB LED Panel (هناك العديد من الشركات المصنعة لهذا مع درجات متفاوتة من النقاط ، يمكنك على سبيل المثال استخدام Adafruit 1484 أو ما شابه ذلك ، فقط ابحث عن "32x32 LED Matrix" على Google). كان لوحتنا درجة 6 مم.
  • 25 قدم من كابل CAT5
  • ما يقرب من 22 ملونًا من الذكور إلى الذكور من الأسلاك الطائر دبوس الرأس
  • 5v 2Amp microUSB امدادات الطاقة (شاحن الهاتف الخليوي) هل كل مجموعة؟ لنذهب!

TL ؛ ملخص DR

  • قم بتنزيل Raspbian Lite OS لملف rpi
  • قم بتكوين pi للتشغيل بلا رأس عبر WiFi باستخدام IP ثابت
  • قم بإعداد بيئة تطوير جهاز الكمبيوتر الخاص بك باستخدام PuTTY و WinSCP والإضافة الاختيارية SublimeText w / FTP
  • قم بتنزيل برنامج تشغيل لوحة LED وصنعه وربطه
  • قم بتنزيل وتثبيت برنامج Pigpio
  • قم بتنزيل كود Python الخاص بنا
  • ارفع لوحة شاشة LED 32x32
  • اصنع كابل التمديد CAT5 لمستشعر LiDAR الصغير الجانبي
  • خطوة اختيارية (ولكن للمستخدمين المتقدمين فقط): قم برقصة سريعة سعيدة عندما يعمل كل شيء ؛)

الخطوة 1: ما هو Pi Zero W؟

ما هو Pi Zero W؟
ما هو Pi Zero W؟

لقد سمعت بلا شك عن Raspberry Pi ولكن ما هو pi 'Zero W'؟

كان Raspberry Pi Zero و Zero W من الإضافات الأحدث إلى عائلة Pi مما يعني المزيد لـ IoT والتطبيقات المضمنة الأخرى منخفضة التكلفة. تم تجريدها من إصدارات لوحة pi الأصلية ولكن لا تزال مزودة بمعالج قوي بسرعة 1 جيجاهرتز. فيما يلي مقارنة جيدة لجميع النماذج.

الفائدة بالنسبة لنا في اختيار Pi Zero W هنا على لوحات التحكم الأخرى هي أنه يمكننا بسهولة برمجتها بلغة Python ذات المستوى الأعلى مع الاستمرار في استخدام برامج تشغيل اللوحات السريعة C / C ++ LED. كما أن سعرها جذاب يبلغ 10 دولارات أمريكية فقط.

ضع في اعتبارك أنه نظرًا لأن هذه اللوحة عبارة عن نسخة مجردة من pi الكامل - فقد تغيرت بعض الأشياء. على وجه الخصوص ، تم التخلص من مقبس الإيثرنت ، وتغير موصل HDMI إلى حجم صغير وتم تبسيط منافذ USB الأربعة إلى نوع USB صغير واحد فقط. يوجد موصل USB صغير آخر على اللوحة ، ولكنه مخصص فقط لتشغيل اللوحة. يؤدي التخلص من جميع موصلات USB بالحجم الكامل إلى ظهور بعض التعقيدات. أي كيف يمكنك توصيل لوحة مفاتيح وماوس؟ تستخدم الأجهزة الطرفية والمحاور القياسية لـ USB موصلات من النوع A وليس من النوع الصغير.

فماذا يمكننا أن نفعل؟

يمكننا أن نقطع رأسنا!

لا ، لا نقصد أن تصاب بالجنون ولكن استخدام بديل للإعداد السلكي المباشر العادي. تعني كلمة "مقطوعة الرأس" "النفق" إلى pi عن بُعد باستخدام اتصال شبكة صدفة آمنة (SSH). بالنسبة لهذا المشروع ، سوف نستخدم طريقة مقطوعة الرأس عبر شبكة WiFi. ومن هنا كان سبب اختيارنا للإصدار W من pi 0 بدلاً من pi صفر الأقل تكلفة.

لاحظ أن هناك أيضًا طريقة أخرى لتشغيل pi في وضع مقطوعة الرأس باستخدام شيء يسمى VNC. يحتاج إلى برنامج VNC خاص يعمل على جهاز الكمبيوتر الخاص بك على الرغم من أنه يوفر سطح مكتب رسومي افتراضي كامل على جهاز الكمبيوتر الخاص بك. نحن لا نطلب (ولا نريد حقًا) سطح المكتب لمشروعنا ، لذلك سنلتزم بطريقة SSH الأبسط.

الخطوة الثانية: سكوتي ، نحتاج إلى مزيد من القوة

سكوتي ، نحن بحاجة إلى مزيد من القوة!
سكوتي ، نحن بحاجة إلى مزيد من القوة!

يمكن أن تأخذ لوحة مصفوفة 32x32 LED ، في حد ذاتها ، عدة أمبير من التيار. لا تمزح! لهذا السبب تحتوي معظم هذه الألواح على بعض كابلات الطاقة الضخمة لتزويدها بالطاقة. لحسن الحظ بالنسبة لنا على الرغم من أننا لسنا بحاجة إلى الحصول على مصدر طاقة ضخم لهذا المشروع. لقد تمكنا من تشغيل هذا النظام بأكمله من شاحن هاتف خلوي microUSB 5v / 2amp احتياطي كان لدينا حوله. السبب في انخفاض التيار هو أننا نستخدم رسومات بسيطة نسبيًا وبالتالي لا نقوم بتشغيل معظم مصابيح LED. إذا كنت تفكر في عمل رسوم متحركة أو استخدام فيديو / رسومات ساطعة ، فعليك بالتأكيد التفكير في تشغيل اللوحة من مصدر طاقة منفصل.

الخطوة 3: وضع المستشعر والبرمجيات

وضع المستشعر والبرمجيات
وضع المستشعر والبرمجيات
وضع المستشعر والبرمجيات
وضع المستشعر والبرمجيات

هل لاحظت أننا نستخدم وحدتين صغيرتين من نوع LiDAR في هذا النظام بدلاً من واحد فقط؟ كما هو موضح في مخطط إعداد المرآب ، يتم وضع أحدهما أمام السيارة والآخر على جانب واحد من السيارة.

سيكتشف المستشعر الجانبي ما إذا كنت تنحرف عن المركز أثناء ركن السيارة وبالطبع سيخبرك المستشعر الأمامي بموعد التوقف.

ستساعدك شاشة LED 32x32 من خلال إظهار الأسهم للتحرك للأمام أو اليسار أو اليمين وعرض العد التنازلي بزوايا ملونة للإشارة إلى المسافة التي لا يزال يتعين عليك القيادة. ألق نظرة على مقطع الفيديو القصير الخاص بنا لجميع حالات العرض.

خطة اللعبة

باختصار ، نحن نستخدم مكتبة hzeller C الشائعة دائمًا لبرنامج تشغيل LED ، و Python لرمز التحكم ومكتبة pipgpio C للتحكم المناسب في I2C لأجهزة الاستشعار الخاصة بنا.

Python هي لغة عالية المستوى سهلة للغاية يمكنك تعديلها بسهولة على أي محرر نصوص. عادةً ما نستخدم SublimeText وفي هذا المشروع ، استخدمنا أيضًا ملحق FTP مفيدًا للغاية يسمح لنا بتحرير ملفات البرنامج النصي مباشرة على pi. هذه خطوة اختيارية لأنها مطلوبة فقط إذا كنت ترغب في تعديل الكود. مزيد من التفاصيل متوفرة في نهاية هذه المقالة.

جميع لوحات rpi ، كما تعلم ، لا تدعم أصلاً تمدد ساعة I2C. لذلك استخدمنا مكتبة Pigpio مرة أخرى لهذا المشروع للتحكم في مستشعرات tinyLiDAR ولكن هذه المرة مع تطور بسيط …

عدة نماذج صغيرة الحجم

عندما تشتري tinyLiDAR ، يتم تعيينها دائمًا على العنوان الفرعي الافتراضي 0x10. هذا جيد عندما تستخدم مستشعرًا واحدًا ولكن إذا كان لديك أكثر من جهاز في الحافلة ، فربما تكون هناك مشكلة إذا كتبت أمرًا إلى 0x10 وكلهم يردون!

لذلك لدينا 3 خيارات هنا:

أولاً ، يمكننا استخدام الأمر (tinyLiDAR) "R" لكتابة عنوان تابع جديد لجهاز استشعار واحد متصل بحافلة I2C. ثم كرر هذا لكل مستشعر. إرفاق وكتابة وفصل كل مستشعر لهذا الإجراء. سوف تخزن tinyLiDAR العنوان المحدد في ذاكرتها غير المتطايرة الموجودة على متن الطائرة. سيستمر العنوان حتى بعد دورة الطاقة حتى تقوم بمسحه بإصدار الأمر RESET.

الخيار الثاني هو استخدام ميزة التعيين التلقائي الملائمة التي أنشأناها كهدف ممتد في حملة IGG. يتضمن ذلك إرسال أمر "AR" ثم توجيه إصبعك إلى كل مستشعر على حدة لتعيين عناوين I2C المتسلسلة تلقائيًا إلى المستشعرات الفردية المشابهة للخيار الأول ولكن لا يتعين عليك فصل كل مستشعر فعليًا للقيام بذلك.

الخيار الثالث هو الخيار الذي نستخدمه هنا في هذا المشروع وهو ممكن بفضل مكتبة pigpio. لتنفيذ معيار I2C بشكل صحيح ، تقوم pigpio بتجميع GPIO. لهذا السبب ، يمكننا بسهولة إنشاء حافلات I2C منفصلة على أي زوج من دبابيس GPIO الاحتياطية.

وبالتالي ليست هناك حاجة لإعادة برمجة عناوين الرقيق لأجهزة استشعار LiDAR المتعددة. يمكننا فقط استخدام ناقل منفصل لكل واحد:)

لاحظ أن ناقل I2C الذي يعمل بسرعة 100 كيلوبت في الثانية قوي جدًا. نحن نستخدم كابل إيثرنت CAT5 قديم عادي لتشغيل ناقل I2C إلى جانب مستشعر miniLiDAR الذي يبعد مسافة 25 قدمًا كاملة دون أي مكونات مكرر نشطة! تفاصيل أسلاك المستشعر موضحة أعلاه.

حسنًا ، يكفي jibber jabber ، فلنبدأ في تنزيل الكود!

الخطوة 4: إعداد ملف Pi

إعداد Pi
إعداد Pi
إعداد Pi
إعداد Pi

تحذير: يستخدم pi نظام ملفات Linux ، لذا من الأفضل تنفيذ الخطوات التالية على نظام قائم على Linux. قد ينتهي بك الأمر إلى إعادة تهيئة بطاقة SD الخاصة بك إذا قمت بذلك على Windows. استخدمنا سطح مكتب Ubuntu 18.04 الرائع والمجاني الذي يعمل في بيئة افتراضية على جهاز كمبيوتر يعمل بنظام Windows 10 ولكن يمكنك تجربة شيء مشابه.

ستحتاج أولاً إلى تنزيل نظام التشغيل من موقع raspberrypi.org ثم نسخه على بطاقة microSD الخاصة بك. لذلك اتبع هذه الخطوات:

(1) في Ubuntu ، انتقل إلى هنا واحصل على صورة Raspbian Lite. احفظه في مجلد التنزيلات الخاص بك.

(2) قم بعد ذلك بتنزيل الأداة المساعدة للكتابة على بطاقة SD من Etcher. لمعلوماتك - لم يعمل رابط تنزيل Etcher الرسمي لإصدار Linux على صفحتهم الرئيسية ، لذلك استخدمنا الطريقة الموضحة هنا بدلاً من ذلك:

باختصار ، كانت الخطوات الموضحة في الرابط:

إضافة مستودع Etcher Debian:

صدى "deb https://dl.bintray.com/resin-io/debian مستقر محفور" | sudo tee /etc/apt/sources.list.d/etcher.list

ثق بمفتاح GPG الخاص بـ Bintray.com:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 379CE192D401AB61

التحديث والتثبيت:

sudo apt-get update

sudo apt-get install etcher-electron

بمجرد الانتهاء ، يمكنك المضي قدمًا وتشغيل Etcher من سطح مكتب Ubuntu. سيطلب منك الملف المصدر (الذي تضعه في مجلد التنزيلات) والخطوة التالية في Etcher هي اختيار الهدف الصحيح. يقوم Etcher بعمل جيد في اكتشاف بطاقة micro SD الخاصة بك ولكن يجب أن تكون مصابًا بجنون العظمة هنا. للتحقق من العثور على الوجهة الصحيحة - حاول إخراج بطاقة microSD بالنقر فوق إخراج في نافذة مستكشف ملفات Ubuntu وتحقق من أنها ستختفي كخيار مستهدف داخل Etcher. ثم أعد إدخاله واستمر في الخطوة الأخيرة ، وهي كتابة الملف على بطاقة microSD هذه.

انتظر بعض الوقت حتى تنتهي ثم استمر إلى الأمام.

الخطوة 5: وقت WiFi

وقت WiFi
وقت WiFi
وقت WiFi
وقت WiFi

حسنًا ، حان الوقت الآن لإدخال تفاصيل WiFi الخاصة بك.

نصيحة: يمكنك دائمًا نسخ (Ctrl + C) ولصق معلومات (النقر بزر الماوس الأيمن ، لصق) من هذه المقالة إلى شاشة PuTTY الطرفية بدلاً من كتابة الأوامر. تحقق من نهاية هذه المقالة للحصول على العديد من أوامر Linux المفيدة أيضًا.

عندما ينتهي Etcher من الكتابة على بطاقة micro SD ، سيكون هناك محركان يظهران كما هو موضح أعلاه. واحد يسمى التمهيد والآخر يسمى rootfs

نحتاج إلى استخدام مدير الملفات للذهاب إلى مجلد التمهيد وإنشاء ملف يسمى wpa_supplicant.conf.

للقيام بهذه الخطوة ، يمكنك فقط النقر فوق الجانب الأيسر حيث يشير إلى التمهيد ، ثم على الجانب الأيمن من الشاشة ، يمكنك النقر بزر الماوس الأيمن على الخلفية البيضاء واختيار فتح في Terminal.

سيؤدي هذا إلى فتح نافذة طرفية (على غرار CMD في Windows) حيث يمكنك كتابة ما يلي:

sudo nano wpa_supplicant.conf نصيحة: ستحتاج إلى إدخال كلمة مرور نظام Linux الخاصة بك حتى يمكن تشغيلها كمستخدم فائق. هذا مطلوب وإلا فلن تتمكن من حفظ الملفات عند الانتهاء من التحرير

سيقوم الأمر أعلاه بتشغيل محرر نصوص "nano" حيث يمكنك إدخال المعلومات التالية:

الدولة = الولايات المتحدة

ctrl_interface = DIR = / var / run / wpa_supplicant GROUP = netdev update_config = شبكة واحدة = {ssid = "WiFi_SSID" scan_ssid = 1 psk = "WiFi_Password" key_mgmt = WPA - PSK}

ملاحظة: تذكر استبدال WiFi_SSID و WiFi_Password باسم شبكة WiFi وكلمة المرور الخاصة بك.

عند الانتهاء ، ما عليك سوى النقر فوق Ctrl + X للخروج والإجابة بنعم لكتابة الملف عند الخروج.

خطوتنا التالية هي إنشاء ملف فارغ يسمى ssh. للقيام بذلك ، نكتب ما يلي في النافذة الطرفية:

المس ssh

نحتاج الآن إلى إعطاء pi الخاص بنا عنوان IP ثابتًا حتى نعرف مكانه في كل مرة نريد الاتصال به. اكتب ما يلي في نافذة المحطة:

sudo nano /etc/dhcpcd.conf

يجب أن يفتح هذا محرر نصوص nano مرة أخرى ويمكننا إضافة هذا النص إلى أسفل الملف:

واجهة wlan0

ip_address ثابت = 192.168.0. الموجهات الثابتة = 192.168.0.1 domain_name_servers = 192.168.0.1 8.8.8.8

ملاحظة: هذا يفترض أن بادئة الشبكة الخاصة بك هي 192.168.0. إذا كان لديك 192.168.1 وما إلى ذلك ، فاستخدم شبكتك بدلاً من ذلك. خادم اسم المجال 8.8.8.8 مخصص لـ Google وهو اختياري هنا.

اكتب "خروج" في Terminal لإغلاقه. ثم انقر بزر الماوس الأيمن فوق اسم التمهيد في الجانب الأيسر من نافذة مدير الملفات وحدد إخراج.

يمكنك الآن توصيل بطاقة microSD هذه في بي الخاص بك وتوصيل كابل الطاقة microUSB لتشغيل بي الخاص بك.

إذا سارت الأمور على ما يرام ، فسيومض مؤشر LED الأخضر لفترة من الوقت كما لو كان يصل إلى محرك الأقراص الثابتة ويجب أن يسجلك على شبكة WiFi الخاصة بك. امنحها حوالي دقيقة لتستقر وانتظر حتى يصبح مؤشر LED أخضر ثابتًا.

للتحقق من نجاح كل شيء ، يمكننا محاولة اختبار الاتصال.

لذلك فقط اكتب السطر أدناه وتحقق من الرد.

بينغ 192.168.0.200

في Ubuntu ، يجب أن تحصل على شيء مشابه لهذا:

بينغ 192.168.0.200

PING 192.168.0.200 (192.168.0.200) 56 (84) بايت من البيانات. 64 بايت من 192.168.0.200: icmp_seq = 1 ttl = 128 الوقت = 752 مللي ثانية 64 بايت من 192.168.0.200: icmp_seq = 2 ttl = 128 الوقت = 5.77 مللي ثانية 64 بايت من 192.168.0.200: icmp_seq = 3 ttl = 128 الوقت = 7.33 ms ^ C - 192.168.0.200 إحصائيات ping - 3 حزم مرسلة ، 3 مستلمة ، 0٪ خسارة حزمة ، الوقت 2001ms rtt min / avg / max / mdev = 5.777 / 255.346 / 752.922 / 351.839 مللي ثانية

لاحظ أن الأمر ping يستمر في العمل حتى تضغط على Ctrl + C للإنهاء.

في Windows ، يجب أن تحصل على شيء مثل هذا:

بينغ 192.168.0.200

Pinging 192.168.0.200 مع 32 بايت من البيانات: رد من 192.168.0.200: بايت = 32 مرة = 4 مللي ثانية TTL = 64 رد من 192.168.0.200: بايت = 32 مرة = 5 مللي ثانية TTL = 64 رد من 192.168.0.200: بايت = 32 مرة = 6 مللي ثانية TTL = 64 رد من 192.168.0.200: بايت = 32 مرة = 5 مللي ثانية TTL = 64 إحصائيات Ping لـ 192.168.0.200: الحزم: مرسلة = 4 ، تم استلامها = 4 ، الضياع = 0 (خسارة 0٪) ، أوقات الذهاب والإياب التقريبية بالمللي ثانية: الحد الأدنى = 4 مللي ثانية ، الحد الأقصى = 6 مللي ثانية ، المتوسط = 5 مللي ثانية

الامور جيدة؟ فصاعدا…

الخطوة السادسة: تسجيل الدخول

تسجيل الدخول
تسجيل الدخول

الآن بعد أن أصبح لدينا اتصال بـ pi ، نريد إرسال أوامر إليه. لكن كيف؟ يمكنك تنزيل PuTTY من هنا إعداد PuTTY بعد تنزيل برنامج PuTTY ، قم بإنشاء ملف تعريف لـ pi بالمعلومات التالية:

اسم المضيف (أو عنوان IP): 192.168.0.200 نوع الاتصال: SSH أعط هذا الملف الشخصي اسمًا ضمن الجلسات المحفوظة واضغط على حفظ. يمكنك استخدام أي اسم تريده على سبيل المثال "rpizw_200"

لتسجيل الدخول ، ما عليك سوى تحديده من القائمة واضغط على تحميل. ثم اضغط على فتح. أدخل اسم المستخدم وكلمة المرور لتسجيل الدخول:

اسم تسجيل الدخول: pi

كلمة مرور Defalt: التوت

إليك عينة من الجلسة معروضة في PuTTY عند تسجيل الدخول:

تسجيل الدخول باسم: pi

كلمة مرور [email protected]: Linux raspberrypi 4.14.34+ # 1110 Mon Apr 16 14:51:42 BST 2018 armv6l البرامج المضمنة في نظام Debian GNU / Linux هي برامج مجانية ؛ يتم وصف شروط التوزيع الدقيقة لكل برنامج في الملفات الفردية في / usr / share / doc / * / copyright. يتوفر Debian GNU / Linux بدون ضمان مطلقًا ، إلى الحد الذي يسمح به القانون المعمول به. آخر تسجيل دخول: [التاريخ والوقت] من 192.168.0. [عنوان IP] تم تمكين SSH ولم يتم تغيير كلمة المرور الافتراضية لمستخدم "pi". هذه مخاطرة أمنية - يرجى تسجيل الدخول باعتبارك مستخدم "pi" واكتب "passwd" لتعيين كلمة مرور جديدة.

عند تسجيل الدخول لأول مرة ، سيتم تحذيرك من أنك لم تغير كلمة المرور بعد. يجب عليك تغييره إلى شيء قوي وسهل التذكر ، لذا انطلق وقم بتغييره عن طريق كتابة passwd واتبع التعليمات.

يجب علينا بعد ذلك تحديث البرنامج على pi عن طريق كتابة هذا:

sudo apt-get update && sudo apt-get Upgrade

سيؤدي هذا إلى تنزيل أي تحديثات يحتاجها من اتصالك بالإنترنت. أجب بنعم إذا طُلب منك السماح له بالمتابعة ثم امنحه بعض الوقت للتحديث.

في هذا الوقت ربما يجب علينا أيضًا إيقاف تشغيل الصوت على pi نظرًا لأنه يحتوي على بعض السحر السيئ مع مكتبة برنامج تشغيل LED. انسخ والصق الأسطر التالية واحدًا تلو الآخر واضغط على Enter بعد كل سطر:

مؤتمر نزع السلاح ~

القط << EOF | sudo tee /etc/modprobe.d/blacklist-rgb-matrix.conf القائمة السوداء snd_bcm2835 EOF sudo update-initramfs -u

سيكون الإخراج شيئًا كالتالي:

pi @ raspberrypi: ~ $ cd ~

pi @ raspberrypi: ~ $ cat <> blacklist snd_bcm2835>> قائمة EOF السوداء snd_bcm2835 pi @ raspberrypi: ~ $ sudo update-initramfs -u pi @ raspberrypi: ~ $

ثم يتعين علينا إعادة تشغيل pi حتى تصبح التغييرات سارية المفعول ، لذا اكتب ما يلي:

sudo إعادة التشغيل الآن

سينقطع الاتصال بالطبع أثناء إعادة تشغيل pi حتى تتمكن من إغلاق PuTTY. حاول تسجيل الدخول مرة أخرى بعد دقيقة.

حان الوقت الآن للحصول على مدير ملفات FTP رسومي يسمى WinSCP. يمكنك تنزيل WinSCP من هنا

WinSCP يشبه إلى حد كبير مدير الملفات على Windows و Ubuntu. يسمح لنا بسحب الملفات وإفلاتها بسهولة من وإلى pi وإنشاء دلائل بنقرة واحدة بزر الماوس الأيمن.

بمجرد التنزيل ، ستحتاج إلى إعداد ملف تعريف لبي الخاص بك.

إعداد WinSCP في نافذة تسجيل الدخول المنبثقة ، اختر موقع جديد. استخدم الإعدادات التالية للجلسة:

بروتوكول الملف: اسم مضيف SFTP: 192.168.0.200 اسم المستخدم: كلمة مرور pi: {أيا كانت كلمة المرور التي قمت بتغييرها إلى الافتراضي في خطوة PuTTY أعلاه}

في إعدادات الموقع المتقدمة ، انتقل إلى البيئة | الدلائل وأدخل / home / pi للدليل البعيد وأي شيء تريده لإعداد الدليل المحلي.

في إعدادات الموقع المتقدمة ، انتقل إلى البيئة | شل واختر sudo su - في قائمة شل المنسدلة.

ثم اضغط على حفظ.

احتفظ بكل من WinSCP و PuTTY مفتوحين أثناء تنفيذ الخطوات التالية

انتقل إلى محطة PuTTY وأدخل ما يلي:

مؤتمر نزع السلاح ~

سيأخذنا هذا إلى دليل المنزل داخل pi.

يمكننا الآن الحصول على مكتبة برامج تشغيل LED من جيثب. لاستخدام أحدث رمز ، سنحتاج إلى سحب الريبو لذلك نحتاج إلى تثبيت الأداة المساعدة git.

أدخل هذا في PuTTY:

sudo apt-get install git

أجب Y للمتابعة وسيستغرق الأمر بضع ثوانٍ لتثبيت git لنا من الإنترنت.

يجب أن يبدو الإخراج مثل هذا:

pi @ raspberrypi: ~ sudo apt-get install git

قراءة قوائم الحزم … تم بناء شجرة التبعية قراءة معلومات الحالة … تم سيتم تثبيت الحزم الإضافية التالية: git-man liberror-perl الحزم المقترحة: git-daemon-run | git-daemon-sysvinit git-doc git-el git-email git-gui gitk gitweb git-arch git-cvs git-mediawiki git-svn سيتم تثبيت الحزم الجديدة التالية: git git-man Liberror-perl 0 تمت ترقيته ، 3 مثبتة حديثًا ، 0 للإزالة و 0 لم تتم ترقيته. تحتاج إلى الحصول على 848 كيلوبايت من المحفوظات. بعد هذه العملية ، سيتم استخدام 26.4 ميغابايت من مساحة القرص الإضافية. هل تريد الاستمرار؟ [نعم / لا] y احصل على: 1 https://muug.ca/mirror/raspbian/raspbian stretch / main armhf liberror-perl all 0.17024-1 [26.9 kB] احصل على: 2 https://muug.ca/mirror/ raspbian / raspbian stretch / main armhf git-man all 1: 2.11.0-3 + deb9u3 [1، 433 كيلوبايت] احصل على: 3 https://muug.ca/mirror/raspbian/raspbian stretch / main armhf git armhf 1: 2.11.0-3 + deb9u3 [3 ، 388 كيلو بايت] تم جلب 4 ، 848 كيلو بايت في 5 ثوانٍ (878 كيلو بايت / ثانية) تحديد حزمة غير محددة مسبقًا liberror-perl.(جارٍ قراءة قاعدة البيانات … 34363 ملفًا ومجلدًا مثبتًا حاليًا.) جارٍ التحضير لفك حزم … / liberror-perl_0.17024-1_all.deb… فك حزمة Liberror-perl (0.17024-1) … تحديد حزمة غير محددة مسبقًا git-man. التجهيز لتفريغ … / git-man_1٪ 3a2.11.0-3 + deb9u3_all.deb… تفريغ git-man (1: 2.11.0-3 + deb9u3) … اختيار حزمة git غير المحددة سابقًا. التجهيز لتفريغ … / git_1٪ 3a2.11.0-3 + deb9u3_armhf.deb… تفريغ git (1: 2.11.0-3 + deb9u3) … إعداد git-man (1: 2.11.0-3 + deb9u3) … الإعداد Liberror-perl (0.17024-1) … مشغلات المعالجة لـ man-db (2.7.6.1-2) … إعداد git (1: 2.11.0-3 + deb9u3) …

عد الآن إلى WinSCP وانتقل إلى المجلد / home / pi. ثم على الجانب الأيمن من نافذة WinScp ، انقر بزر الماوس الأيمن واختر إنشاء دليل جديد يسمى "parking"

مرة أخرى في شاشة PuTTY ، يمكنك كتابة ls لتأكيد أنك قمت للتو بإنشاء مجلد جديد في pi. ثم أدخل هذا:

cd p [TAB]نصيحة: سيؤدي الضغط على مفتاح TAB إلى الإكمال التلقائي للاسم الجزئي نيابة عنك

اضغط على مفتاح الإدخال للدخول إلى هذا الدليل.

pi @ raspberrypi: ~ $ cd parking /

pi @ raspberrypi: ~ / parking $ ls

الآن يمكننا الحصول على ملفات السائق عن طريق إدخال ما يلي في PuTTY:

استنساخ بوابة

سيبدو الإخراج كما يلي:

pi @ raspberrypi: ~ / parking $ git clone

الاستنساخ في "rpi-rgb-led-matrix" … عن بعد: عد الكائنات: 3740 ، تم. جهاز التحكم عن بعد: إجمالي 3740 (دلتا 0) ، أعيد استخدامه 0 (دلتا 0) ، إعادة استخدام 3740 كائنات استقبال: 100٪ (3740/3740) ، 20.61 ميجابايت | 1.32 MiB / s ، تم. حل دلتا: 100٪ (2550/2550) ، تم.

الآن قم بتجميع ملفات برنامج تشغيل LED بالانتقال إلى دليل "rpi-rgb-led-matrix" الجديد وكتابة الأمر make:

cd r [TAB]

صنع وهذا ما بدا عليه على لوحتنا

pi @ raspberrypi: ~ / parking $ cd rpi-rgb-led-matrix /

pi @ raspberrypi: ~ / parking / rpi-rgb-led-matrix $ make -C./lib make [1]: إدخال الدليل '/ home / pi / parking / rpi-rgb-led-matrix / lib' g ++ - I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"normal" "-Wextra -Wno-unused-parameter -fno-exceptions -c -o gpio.o gpio.cc g ++ -I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"normal" -Wextra -Wno-unused-parameter -fno-exceptions -c -o led-matrix.o led-matrix.cc g ++ -I../ include - Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"normal"' -Wextra -Wno-unused-parameter -fno-exceptions -c -o options-initialize.o options-initialize.cc g ++ -I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"normal"' -Wextra -Wno-unused-parameter -fno-exceptions -c -o framebuffer.o framebuffer.cc g ++ -I../ include -Wall -O3 -g - fPIC -DEFAULT_HARDWARE = '"العادية" "-Wextra -Wno-unused-parameter -fno-exceptions -c -o thread.o thread.cc g ++ -I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE =' "عادي" -Wextra -Wno-unused-parameter -fno-exceptions -c -o bdf-font.o bdf-fon t.cc g ++ -I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"normal"' -Wextra -Wno-unused-parameter -fno-exceptions -c -o graphics.o graphics.cc g ++ - I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"normal" "-Wextra -Wno-unused-parameter -fno-exceptions -c -o transformer.o transformer.cc g ++ -I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"normal" -Wextra -Wno-unused-parameter -fno-exceptions -c -o led-matrix-co led-matrix-c.cc cc -I../ include -Wall -O3 -g -fPIC -DEFAULT_HARDWARE = '"normal" "-Wextra -Wno-unused-parameter -c -o Hardware-mapping.o Hardware-mapping.c g ++ -I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"العادية"' -Wextra -Wno-unused-parameter -fno-exceptions -c -o content-streamer.o content-streamer.cc g ++ -I../ include -Wall -O3 - g -fPIC -DDEFAULT_HARDWARE = '"العادية" "-Wextra -Wno-unused-parameter -fno-exceptions -c -o pixel-mapper.o pixel-mapper.cc g ++ -I../ include -Wall -O3 -g -fPIC -DEFAULT_HARDWARE = "عادي" "-Wextra -Wno-unused-parameter -fno-excep tions -c -o multiplex-mappers.o multiplex-mappers.cc ar rcs librgbmatrix.a gpio.o led-matrix.o options-initialize.o framebuffer.o thread.o bdf-font.o graphics.o transformer.o led-matrix-co Hardware-mapping.o content-streamer.o pixel-mapper.o multiplex-mappers.o g ++ -shared -Wl، -soname، librgbmatrix.so.1 -o librgbmatrix.so.1 gpio.o led - خيارات - matrix.o - التهيئة. o -lpthread -lrt -lm -lpthread make [1]: مغادرة الدليل '/ home / pi / parking / rpi-rgb-led-matrix / lib' make -C أمثلة-api-use make [1]: إدخال الدليل ' / home / pi / parking / rpi-rgb-led-matrix / أمثلة-api-use 'g ++ -I../ include -Wall -O3 -g -Wextra -Wno-unused-parameter -c -o demo-main. o demo-main.cc make -C../lib make [2]: إدخال الدليل '/ home / pi / parking / rpi-rgb-led-matrix / lib' make [2]: Leaving Directory '/ home / pi / parking / rpi-rgb-led-matrix / lib 'g ++ demo-main.o -o demo -L../ lib -lrgbmatrix -lrt -lm -lpthread g ++ -I../ include -Wall -O3 -g -Wextra -Wno-unused-parameter -c -o Minimal-example.o simple-example.cc g ++ simple-example.o - o الحد الأدنى-example -L../ lib -lrgbmatrix -lrt -lm -lpthread cc -I../ include -Wall -O3 -g -Wextra -Wno-unused-parameter -c -o c-example.o c- example.c cc c-example.o -o c-example -L../ lib -lrgbmatrix -lrt -lm -lpthread -lstdc ++ g ++ -I../ include -Wall -O3 -g -Wextra -Wno-unused- المعلمة -c -o text-example.o text-example.cc g ++ text-example.o -o text-example -L../ lib -lrgbmatrix -lrt -lm -lpthread g ++ -I../ include -Wall - O3 -g -Wextra -Wno-unused-parameter -c -o scrolling-text-example.o scrolling-text-example.cc g ++ scrolling-text-example.o -o scrolling-text-example -L../ lib -lrgbmatrix -lrt -lm -lpthread g ++ -I../ include -Wall -O3 -g -Wextra -Wno-unused-parameter -c -o clock.o clock.cc g ++ clock.o -o clock -L.. / lib -lrgbmatrix -lrt -lm -lpthread g ++ -I../ include -Wall -O3 -g -Wextra -Wno-unused-parameter -c -o ledcat.o ledcat.cc g ++ le dcat.o -o ledcat -L../ lib -lrgbmatrix -lrt -lm -lpthread make [1]: مغادرة الدليل '/ home / pi / parking / rpi-rgb-led-matrix / أمثلة-api-use' pi raspberrypi: ~ / parking / rpi-rgb-led-matrix $

ستكون خطوتنا التالية هي ربط مكتبة مصفوفة RGB ببايثون. استخدمنا Python 2 الافتراضية لهذا المشروع. لذلك للقيام بهذا الربط ، نقوم بإدخال السطر التالي في كل مرة كما في السابق:

sudo apt-get update && sudo apt-get install python2.7-dev python-pillow -y

جعل بناء بيثون sudo جعل تثبيت بيثون

ملاحظة: يمكنك تجاهل تحذير واحد حول "-Wstrict-prototype" بأمان والذي يظهر عند تشغيل عبارتين make. يستغرق الأمر بضع دقائق للتشغيل ولا يقولون أي شيء أثناء انشغالهم. لذا لا تخف - يجب أن يعود بي الخاص بك قريبًا ؛)

هذا ناتج جزئي في أول تعليمة تصنع:

بناء امتداد "الرسومات"

arm-linux-gnueabihf-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno -rict-aliasing -Wdate-time -D_FORTIFY_SOURCE = 2 -g -fdebug-prefix-map = / build / python2.7-kKRR4y / python2.7-2.7.13 =. -fstack-protector-strong -Wformat -Werror = format-security -fPIC -I../../ include -I / usr / include / python2.7 -c rgbmatrix / graphics.cpp -o build / temp.linux- armv6l-2.7 / rgbmatrix / graphics.o -O3 -Wall cc1plus: تحذير: خيار سطر الأوامر "-Wstrict-prototypes" صالح لـ C / ObjC ولكن ليس لـ C ++ arm-linux-gnueabihf-g ++ -pthread -shared -Wl، -O1 -Wl، -Bsymbolic-function -Wl، -z، relro -fno -rict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -Wdate-time -D_FORTIFY_SOURCE = 2 -g -fdebug-prefix -map = / build / python2.7-kKRR4y / python2.7-2.7.13 =. -fstack-protector-strong -Wformat -Werror = format-security -Wl، -z، relro -Wdate-time -D_FORTIFY_SOURCE = 2 -g -fdebug-prefix-map = / build / python2.7-kKRR4y / python2.7 -2.7.13 =. -fstack-protector-strong -Wformat -Werror = format-security build / temp.linux-armv6l-2.7 / rgbmatrix / graphics.o -L../../ lib -lrgbmatrix -o./rgbmatrix/graphics.so make [1]: مغادرة الدليل "/ home / pi / parking / rpi-rgb-led-matrix / bindings / python 'pi @ raspberrypi: ~ / parking / rpi-rgb-led-matrix $

بعد ذلك سنقوم بتثبيت مكتبة pigpio C. للقيام بذلك بشكل صحيح ، نحتاج إلى جعله من المصدر ، لذا فقط أدخل الأسطر التالية:

مؤتمر نزع السلاح ~

sudo rm -rf PIGPIO wget abyz.me.uk/rpi/pigpio/pigpio.zip فك ضغط pigpio.zip cd PIGPIO اجعل sudo جعل تثبيت rm pigpio.zip

التثبيت أعلاه يستغرق حوالي 3 دقائق.

حان الوقت الآن للحصول على ملفات مشروع Python الخاصة بنا. أدخل التالي:

مؤتمر نزع السلاح ~

cd / home / pi / parking / rpi-rgb-led-matrix / bindings / python / sample wget https://s3.amazonaws.com/microedco/tinyLiDAR/Raspberry+Pi/tinyL_parking.zip unzip -j tinyL_parking.zip rm tinyL_parking.zip

ثم لتنفيذه ، اكتب ما يلي:

sudo python parking.py

لكنك لست بحاجة إلى القيام بذلك الآن حيث لا يزال يتعين علينا توصيل كل شيء …

الخطوة 7: الأسلاك

الأسلاك
الأسلاك
الأسلاك
الأسلاك
الأسلاك
الأسلاك
الأسلاك
الأسلاك

كما ذكرنا سابقًا ، قمنا بتشغيل لوحة LED من نفس محول الطاقة الذي يشغل pi. للقيام بذلك ، سيتعين عليك لصق الأسلاك الضخمة باللونين الأحمر والأسود بمسامير رأس ذكر حتى يمكن توصيلها في المسامير 2 و 9 من موصل pi 40pin.

افصل الطاقة عن pi الآن وقم بتوصيل لوحة LED وفقًا للرسم التخطيطي أعلاه. احتفظ برقم التعريف الشخصي 2 غير متصل في الوقت الحالي.

ملاحظة: يمكن أحيانًا تشغيل لوحة مصفوفة LED في حالة غير تقليدية. إذا حدث هذا ، فيمكنه تحميل مصدر الطاقة الخاص بك بشدة بغض النظر عن السعة الحالية لديه. لقد لاحظنا ذلك أثناء التطوير على إمدادات مقاعد البدلاء الخاصة بنا والتي يمكن أن توفر أكثر من 4 أمبير. يتمثل الحل في تشغيل رمز pi أولاً ثم توصيل السن 2 لتشغيل لوحة LED. بهذه الطريقة ، يجب أن تظهر اللوحة في حالة طاقة منخفضة لأنها تطرد حالات LED العشوائية. كان التيار الهادئ (جميع مصابيح LED مطفأة) للوحة LED الخاصة بنا 50 مللي أمبير فقط عند 5 فولت.

CAT5

استخدمنا كبل إيثرنت CAT5 بطول 25 قدمًا وقمنا بتعديله لتوصيله بمسامير رأس pi على أحد طرفيه وقبول دبابيس موصل GROVE على الجانب الآخر حتى نتمكن من تمديد المسافة لوضع مستشعر miniLiDAR الجانبي. الصور أعلاه تظهر هذا الكابل قبل وبعد التعديلات. تجاهل ألوان أسلاك دبوس الرأس لأنها غير مرتبطة بالمخططات. فقط تأكد من توصيل النظام الخاص بك كما هو موضح في مخططات التوصيل المصورة الموضحة سابقًا في الخطوة 3.

الخطوة 8: أشعلها

Image
Image
خطوة اختيارية وأوامر مفيدة
خطوة اختيارية وأوامر مفيدة

يجب أن يكون تسلسل التشغيل الأولي الصحيح هو توصيل شاحن microUSB في pi وانتظار وميض مصابيح LED الزرقاء على مستشعرات miniLiDAR بسرعة لتظهر أنهم يأخذون القياسات. هذا يثبت أن الكود يعمل بشكل صحيح.

يمكنك بعد ذلك توصيل الدبوس 2 ببطء ولكن بثبات لتزويد لوحة LED. احرص على عدم خللها أثناء القيام بذلك! إذا أظهرت لوحة LED عددًا قليلاً من مصابيح LED الساطعة المجمدة ، فمن المحتمل أن تكون معطلة ، لذا قم بإزالة طاقة microUSB من pi وانتظر بضع ثوانٍ لتجربة تسلسل الطاقة مرة أخرى.

لتشغيل الكود ، أدخل ما يلي:

cd / home / pi / parking / rpi-rgb-led-matrix / روابط / بيثون / عينات

sudo python parking.py

إذا سارت الأمور على ما يرام ، يجب أن تحصل على شاشة مشابهة لتلك المعروضة في الفيديو.

ألق نظرة سريعة على كود parking.py لفهم القيود التي استخدمناها. الافتراضي للمستشعر الأمامي هو 200 مم. نظرًا لأن نطاق المستشعر يتراوح من 11 مم إلى 2 م ، فمن المستحسن الحفاظ على مسافة Nom_parked_Front عند 200 مم أو أعلى. تم ضبط اسم المستشعر الجانبي على 600 مم. انظر الصورة أعلاه لمعرفة كود Python الذي يعرض خيارات التكوين هذه.

إذا كان كل شيء يعمل ، يمكنك المضي قدمًا وتركيب النظام في المرآب الخاص بك وضبط المعلمات المذكورة أعلاه حسب الحاجة. نظرًا لأنك متصل بشبكة WiFi ، يمكنك دائمًا الدخول إلى إعدادات المسافة وتعديلها حسب حاجتك لإعداد المرآب الخاص بك أثناء تثبيته.

هل هذا الآن؟

لماذا نعم، نعم انها هي! - حان الوقت للقيام برقصتك السعيدة:)

شكرا على القراءة واستمتع بمساعد وقوف السيارات الجديد الخاص بك!

الخطوة 9: خطوة اختيارية وأوامر مفيدة

خطوة اختيارية - ملحق FTP للنص السامي

لتحرير ملفات Python النصية مباشرة على pi ، يمكننا تثبيت ملحق FTP المسمى Sublime SFTP by Wbond. يمكنك تنزيل هذا الملحق باتباع الإرشادات هنا

لإعداد هذه الوظيفة الإضافية ، نحتاج إلى تكوين بيانات اعتماد FTP ضمن الملف | SFTP / FTP | إعداد الخادم … الصفحة.

لإعدادنا استخدمنا:

"type": "sftp"، "sync_down_on_open": true، "sync_same_age": true، "host": "192.168.0.200"، "user": "pi"، "password": "YOUR_RPI_PASSWORD_HERE"، "port": "22"، "remote_path": "/ home / pi /"، "file_permissions": "664"، "dir_permissions": "775"،

استخدم Ctrl + S أو ملف | احفظ لحفظ هذه المعلومات. سيُطلب منك اسم لاستدعاء هذا التكوين. لقد أطلقنا عليه ببساطة اسم "rpizw_0_200"

الآن لتسجيل الدخول إلى pi من SublimeText ، انتقل إلى ملف | SFTP / FTP | تصفح الخادم …

حدد من قائمة الخيارات المنبثقة. سترغب في اختيار ملف التعريف بالاسم الذي حددته أعلاه ؛) اتبع المطالبات للتنقل في المجلدات وتحرير الملف المطلوب.

إضافات مفيدة

أوامر Linux مفيدة لاستخدامها في ملف pi.

قبل فصل pi ، تأكد دائمًا من إيقاف تشغيله حتى لا تتلف بطاقة microSD الخاصة بك. أدخل هذا الأمر:

sudo الاغلاق الآن

وانتظر حتى ينطفئ المصباح الأخضر قبل فصل الطاقة. بطريقة مماثلة لإعادة تشغيله ، يمكنك إدخال:

sudo إعادة التشغيل الآن

لسرد الملفات في دليل ، استخدم هذا:

ls

يمكنك العثور على أوامر Linux الأخرى المفيدة هنا

موصى به: