جدول المحتويات:
فيديو: NHL Bedside Hockey Light و LCD: 4 خطوات (مع صور)
2025 مؤلف: John Day | [email protected]. آخر تعديل: 2025-01-13 06:56
مقدمة
"NHL Light" مخصص لعشاق الهوكي الذين يرغبون في متابعة فريقهم ، لكن لا يمكنهم مشاهدة كل مباراة. أفضل ميزة هي أنها تحاكي نتيجة بوق الهوكي (مخصص لفريقك) والضوء.
بالإضافة إلى بوق الهوكي والضوء ، يحتوي "NHL Light" على شاشة تعرض نتيجة المباراة الحالية أو الأحدث ، ووقت اللعبة أو وقت المباراة التالية ، والتاريخ والوقت الحاليين.
يعمل "NHL Light" على قائمة بسيطة من الأجزاء ، والتي يسهل تجميع الإلكترونيات ، والرمز المتاح مجانًا.
سمات
- التكوين المستند إلى صفحة الويب لاختيار فريقك وشبكة wifi
- يلعب الضوء والبوق عندما يسجل فريقك (حتى عندما تكون الفريق الضيف)
- يقوم بتشغيل الصوت للإعلان عن بداية اللعبة
- يقوم بتشغيل صوت ليعلن انتهاء اللعبة
- يوفر وقت وتاريخ المباراة التالية ، إذا لم تكن هناك لعبة قيد التقدم.
- يعرض وقت وفترة اللعبة الحالية ، إذا كانت اللعبة قيد التقدم.
- يعرض التاريخ والوقت الحاليين.
الخطوة 1: الخطوة 1: قم بتجميع أجزائك
هنا قائمة الأجزاء.
-
Raspberry Pi W *
- أمازون
- أفضل الحصول على ما لدي من Microcenter ، ولكن يمكن العثور عليها عبر الإنترنت بسعر أقل في أماكن أخرى.
- $10
- بطاقة SD (4 جيجابايت كحد أدنى) *
- مكبر الصوت - Amazon - ~ 2 دولار *
- amp - PAM8403 * - Amazon - حوالي 1 دولار لكل منهما
- ضوء - أمازون - ~ 5 دولارات
-
حقيبة - 1 دولار *
- مايكل
- أوصي بصندوق خشبي صغير من متجر الحرف مايكل ، لكنه سيترك لك!
-
I2C 2004 LCD - 3-7 دولارات
- أمازون
- يدعم الكود 3 أنواع من شاشات الكريستال السائل ، لكن I2C 2004 هو النوع الذي استقرت عليه كأفضل قيمة وحجم. (SSD1306 ممكن أيضًا)
- 2 ترانزستور - 2N2222A- أمازون
- أسلاك متنوعة / جندى 12 فولت
- مزود الطاقة - أمازون
- 12V -> 5V محول باك - أمازون
* هناك مرونة عندما يتعلق الأمر باختيار هذا الجزء.
ملاحظة: يمكنك البدء في معظم هذا المشروع باستخدام raspberry Pi فقط ، بينما تنتظر شحن العناصر الأخرى.
الخطوة 2: الخطوة 2: الأسلاك والإلكترونيات
-
تجميع الضوء
- يجب أن يتم تشغيل الأسلاك الخاصة بالضوء بمقدار 12 + إلى الضوء.
- قم بتشغيل سلبي من الضوء من خلال أحد الترانزستورات.
- يذهب مقياس الترانزستور إلى الأرض.
- يذهب جامع الترانزستور إلى Raspberry Pi.
-
تجميع الصوت
- تشغيل الصوت الأيمن أو الأيسر من PI إلى أمبير
- تشغيل + 5V إلى أمبير
- قم بتشغيل أمبير الأرض إلى الترانزستور الثاني.
- قم بتشغيل جهاز emmetter الخاص بالمحول الثاني على الأرض
- قم بتشغيل جامع الترانزستور إلى Raspberry Pi
- قم بتجميع الأسلاك في PI
-
هذه هي إرشادات pinout لـ PI (بعض هذه يمكن تكوينها عبر JSON)
-
شاشة LCD
- 3 - SDA
- 5 - SCL
- 5 - VCC (+5)
- AMP 8 (GPIO 14)
- Light 10 (GPIO15)
- الصوت الأيمن - GPIO 18
-
الخطوة 3: الخطوة 3: إعداد برنامج نظام التشغيل
-
تحضير Raspberry Pi W
- يجب أن يقوم rasberry pi بتشغيل إصدار حديث من Raspbian (أو Debian آخر).
- يوصى باتباع هذه التعليمات:
- تأكد من تضمين ملف wifi wpa_supplicant.
- ضع ملف ssh على sdcard للسماح بوصول ssh.
-
قم بإعداد برنامج الطرف الثالث:
- لقد أتممت هذه العملية تلقائيًا لسحب جميع أدوات الجهات الخارجية المطلوبة ، ولكن لا تتردد في تشغيلها يدويًا ، ومراجعتها للتأكد من عدم فشل أي خطوات.
- قم بتنزيل البرنامج النصي التالي وتشغيله:
فيما يلي تفصيل لما يفعله نص التثبيت لإعداد نظام التشغيل. من الأفضل تشغيل هذه الخطوط يدويًا ، حتى تتمكن من مراقبة الأخطاء.
رأس البرنامج النصي:
يمكن استدعاء #! / bin / sh -e # عبر #curl -sL https://raw.githubusercontent.com/wga22/nodejs/ma… | sudo -E bash - # TODO: أتمتة هذا البرنامج النصي بشيء مثل: curl -sL https://raw.githubusercontent.com/wga22/nodejs/ma… | sudo -E bash - # TODO: إعداد wifi # TODO: مرور الإعداد والمفاتيح المصرح بها # ملاحظات: https://raw.githubusercontent.com/wga22/nodejs/ma …
تحديث البرنامج على مستوى نظام التشغيل:
# apt-get stuff (apt-get update && apt-get -y Upgrade)> / dev / null apt-get dist-Upgrade -y #General Dev apt-get install -y git build-basic python-dev python-pip python-smbus libasound2-dev nodejs # GPIO apt-get install -y raspi-gpio python-imaging python-smbus libasound2-dev #networking apt-get install -y bridge-utils hostapd dnsmasq apt-get clean -y
إعداد الشبكات. كان جزء من الهدف هنا هو السماح بتكوين النظام عبر نقطة وصول ، للاتصال بشبكة wifi الخاصة بك ، ولكن لم يتم اختبار ذلك بالكامل حتى الآن. يوصى حاليًا باستخدام طريقة wpa_supplicant لإعداد wifi.
#networking setupecho nhllight> / etc / hostname #TODO: إصلاح / etc / hosts #TODO: setup br0 mkdir / etc / hostapd / # note: يتم الإعداد الآخر عبر ملفات التكوين ويتم سحب shell لأسفل كجزء من التحديث
تحديث مكتبات العقدة والعقدة
#update nodecd / tmp export nodeversion = 8.9.0 #wget https://nodejs.org/dist/v7.4.0/node-v7.4.0-linux-… #wget https://nodejs.org/dist/v7. 4.0 / node-v7.4.0-linux- … wget https://nodejs.org/dist/v7.4.0/node-v7.4.0-linux-… tar -xvf node-v $ {nodeversion} -linux-armv6l. tar.xz cd node-v $ {nodeversion} -linux-armv6l rm -f *.md rm -f LICENSE cp -R * / usr / local / rm -R / tmp / node-v $ {nodeversion} -linux- armv6l rm /tmp/node-v${nodeversion}-linux-armv6l.tar.xz #TODO: هل تريد إنشاء رابط sym لـ node binary؟ apt-get remove -y --purge npm nodejs
#Node setupmkdir / opt / nhl mkdir / opt / nhl / logs mkdir / opt / nhl / horns mkdir / opt / nhl / node_modules /
#update العقدة
# تثبيت تبعيات العقدة في تصدير دليل nhl NODE_PATH = / usr / local / lib / node_modules
#HACK - TODO - إصلاح ذلك العرجاء لن يتم تثبيته عالميًا
cd / opt / nhl npm install lame # lame ، عرجاء ، لن يتم تثبيت cp -R / opt / nhl / node_modules / lame $ NODE_PATH npm تثبيت السماعة # لن يتم تثبيت cp -R / opt / nhl / node_modules / speaker $ NODE_PATH npm قم بتثبيت i2c-bus # لن يتم التثبيت عالميًا cp -R / opt / nhl / node_modules / i2c-bus $ NODE_PATH npm قم بتثبيت oled-i2c-bus # لن يتم تثبيت cp -R / opt / nhl / node_modules / oled-i2c-bus $ NODE_PATH npm install lcd #Wont install عالميًا cp -R / opt / nhl / node_modules / lcd $ NODE_PATH npm قم بتثبيت lcdi2c # لن يتم تثبيت cp -R / opt / nhl / node_modules / lcdi2c $ NODE_PATH
npm install oled-font-5x7 # لن يتم التثبيت عالميًا
cp -R / opt / nhl / node_modules / oled-font-5x7 $ NODE_PATH
npm install onoff #wont install عالميًا
cp -R / opt / nhl / node_modules / onoff $ NODE_PATH
#npm install pm2 # لن يتم التثبيت عالميًا
#cp -R / opt / nhl / node_modules / pm2 $ NODE_PATH #npm install express #wont install عالميًا #cp -R / opt / nhl / node_modules / express $ NODE_PATH
# أي وحدات عالمية
npm install express body-parser child_process pm2 -g
سحب أحدث رمز:
#pull git codecd / opt / nhl #JSON هو إنشاء مرة واحدة wget - no-cache -O /opt/nhl/nhl_config.json https://raw.githubusercontent.com/wga22/nodejs/ma… #wget -O /opt/nhl/NHL_work.js https://raw.githubusercontent.com/wga22/nodejs/ma… #call الآلي النصي لتثبيت كل شيء آخر لـ NHL curl -sL https://raw.githubusercontent.com/wga22/nodejs / أماه… | sudo -E bash -
تحميل القرون!
#pull hornscd / opt / nhl / horns curl -sL https://raw.githubusercontent.com/wga22/nodejs/ma… | sudo -E bash -
تحديث ملفات تكوين Raspberry pi - - قد تحتاج إلى تغيير لنظامك
# تحديثات ملفconfig # add sound cp /boot/config.txt /boot/config.txt.bak printf '\ ndtoverlay = pwm-2chan، pin = 18، func = 2، pin2 = 13، func2 = 4' >> / boot / config.txt # قم بتشغيل i2c printf '\ n / ndtparam = i2c1 = on / n' >> /boot/config.txt printf '\ n / ndtparam = i2c_arm = on / n' >> / boot / config. رسالة قصيرة
#TODO: هل هذا مطلوب؟ cp / etc / modules /etc/modules.bak printf '\ ni2c-dev / ni2c-bcm2708 / n' >> / etc / modules
عدد مجموعة مختلط الخلاط = 1
#TODO: ضبط الحجم ، 60٪؟
أتمتة الأتمتة ، مثل تحديثات التمهيد والتعليمات البرمجية:
# update rc.local # NOTE: نقل الملف ، لأن الملف القياسي يتضمن "خروج" في السطر الأخير ، لذلك لا يمكن ببساطة إلحاق mv /etc/rc.local /etc/rc.local.bak touch /etc/rc.local chmod u + x /etc/rc.local printf '#! / bin / sh'> /etc/rc.local printf '\ n /etc/bootup_nhl.sh> /tmp/rclocal.log' >> / etc / rc.local printf '\ n خروج 0' >> /etc/rc.local
#TODO: هل تحتاج إلى إضافة شيء ما للقيام بتحديثات البرامج العادية أسبوعيًا مثل هذا # ربما فقط قم بنسخ هذا الملف مباشرة إلى المجلد rc.weekly؟ rm /etc/cron.weekly/nhl_updater printf '#! / bin / sh / ncurl -sL https://raw.githubusercontent.com/wga22/nodejs/ma… | sudo -E bash - '> /etc/cron.weekly/nhl_updater chmod u + x /etc/cron.weekly/nhl_updater
أشياء متنوعة ، مثل ضبط المنطقة الزمنية:
ln -sf / usr / share / zoneinfo / America / New_York / etc / localtime
# تحديث متغير البيئة مع node_path
cp / etc / environment /etc/environment.bak printf '\ nexport NODE_PATH = / usr / local / lib / node_modules / n' >> / etc / environment #TODO: حدد هذا للعقدة self.ipaddress = process.env. NODEJS_IP ؛ #TODO: self.port = process.env. NODEJS_PORT || 80 ؛
استخدم PM2 لإعداد خادم العقدة:
#TODO: اختبار الإعداد PM2cd / tmp / npm install -g pm2 pm2 startup cd / opt / nhl pm2 start NHL_work.js --node-args = "- max_old_space_size = 100 expose-gc" pm2 start webserver.js --node -args = "- max_old_space_size 100M" pm2 حفظ pm2 بدء التشغيل خروج 0
الخطوة 4: الخطوة 4: تحديث تكوين JSON
قم بإعداد ملف تكوين JSON للفريق الذي تفضله ، وما إلى ذلك ، يوجد هذا الملف في / opt / nhl GO CAPITALS! تهيئة ملف JSON
يستخدم البرنامج ملف JSON لتكوين الجهاز والفريق الذي تتابعه. يمكن تعيين الفريق من خلال خادم الويب الذي سيتم تشغيله ، ولكن يجب ضبط إعداد الأجهزة يدويًا:
فيما يلي شرح لكل قيمة ممكنة:
- myteam: هذا هو الرمز المكون من 3 أحرف للفريق الذي ترغب في متابعته
- تصحيح الأخطاء: القيم المحتملة هي 1 (صواب) أو 0 (خطأ) ، وستتحكم في مقدار التسجيل المكتوب.
-
الإخراج: هذه هي الطريقة التي يتم من خلالها إظهار النتائج / التفاصيل. القيم الممكنة هي:
- شاشات الكريستال السائل: هذا هو 2004 شاشات الكريستال السائل
- وحدة التحكم: هذا سيكتب فقط إلى المحطة (لتشغيل سطر الأوامر)
- oled: دعم عرض SSD6404 oled
-
الضوء: يوجد نوعان من الأضواء مدعومة
- إنذار: سيؤدي هذا إلى تشغيل GPIO واحد لتشغيل / إيقاف تشغيل الترانزستور
- متعدد الصمام: يدعم متعدد الألوان ، أو المصابيح المتعددة
- لا شيء: لا يوجد ضوء متصل
- أمبير: هذا هو GPIO الذي يقود الترانزستور للأمبير