Raspberry Tank بواجهة ويب وتدفق الفيديو: 8 خطوات (بالصور)
Raspberry Tank بواجهة ويب وتدفق الفيديو: 8 خطوات (بالصور)
Anonim
تانك التوت مع واجهة ويب وتدفق الفيديو
تانك التوت مع واجهة ويب وتدفق الفيديو

سنرى كيف أدركت خزان WiFi صغيرًا ، قادرًا على التحكم في الويب عن بُعد وبث الفيديو.

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

لقد قدرت 12 ساعة من العمل من 0 إلى الخزان الجاهز للتشغيل. التكلفة الإجمالية 70 يورو لجميع المكونات.

الخطوة 1: BOM

BOM
BOM
BOM
BOM
BOM
BOM
BOM
BOM

1 - خزان هيكل روبوت RC DIY - 32 (€)

www.banggood.com/DIY-RC-Robot-Chassis-Tan …

1 - ثنائي القناة L298N DC Motor Driver Board - 1 ، 39 (€)

www.banggood.com/Dual-Channel-L298N-DC-Mo…

1 - مجموعة Raspberry Pi Zero W Starter Kit - 26 (يورو)

amzn.eu/1ugAaMP

بطاقة SD من 1 إلى 16 جيجابايت - 5 ، 50 (يورو)

www.gearbest.com/memory-cards/pp_337819.h…

1 - كاميرا ويب وحدة كاميرا Raspberry Pi 5MP للطراز Zero - 8 (€)

www.gearbest.com/raspberry-pi/pp_612249.h…

1 - باور بانك 5 فولت

1- بطارية 9 فولت

كابل اللوح المختلط دوبونت موصل

الماوس أو لوحة المفاتيح أو الشاشة أو التلفزيون لإعداد Raspberry (اختياري ، فقط لجعل الإعداد الأول أسهل)

الخطوة 2: مواصفات المكونات الرئيسية

محرك

JGA25-370 DC محرك التروس

يتميز هذا المحرك بعمود إخراج على شكل حرف D.

تحديد

· جهد التشغيل: بين 6 فولت و 18 فولت

· الجهد الاسمي: 12 فولت

سرعة التشغيل الحر عند 12 فولت: 399 لفة في الدقيقة

تيار التشغيل الحر عند 12 فولت: 50 مللي أمبير

تيار المماطلة عند 12 فولت: 1200 مللي أمبير

· عزم الكشك عند 12 فولت: 2.2 كجم. سم

نسبة التروس: 1:21

· حجم المخفض: 19 مم

الوزن: 84 جم

لوحة تشغيل محرك ثنائي القناة L298N DC

محرك محرك جسر H مزدوج ، يمكنه قيادة محركين DC أو محركات متدرجة ثنائية الطور بأربعة أسلاك. مدمج TSD ، للحماية من كشك المحرك.

تحديد

· جهد إمداد الوحدة النمطية: DC 2V-10V

· جهد دخل الإشارة: DC 1.8-7V

العمل الحالي: 1.5A

تيار الذروة يصل إلى 2.5A

· تيار الاستعداد المنخفض (أقل من 0.1uA)

· دائرة التوصيل المشتركة المدمجة ، طرف الإدخال شاغر ، المحرك لا يعطل

الحجم: 24.7 × 21 × 7 ملم

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

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

سيكون هذا هو الأسلاك النهائية ، ولكن انتظر ، قبل أن نحتاج إلى تثبيت البعض

البرنامج وإنها لفكرة جيدة أن تختبرها بأسلاك أبسط ، عندما تكون جاهزة ، تعود هنا مرة أخرى.

نحتاج إلى مصدرين مختلفين للطاقة ، أحدهما للمحرك والآخر لتوت العليق.

يتم تشغيل المحرك ثنائي القناة L298N DC Motor Driver Board (الحد الأقصى لجهد الإدخال DC 2V-10V) باستخدام بطارية 9 فولت ويستخدم Raspberry Pi معايير 5V USB المركب.

سيتم توصيل دبوس GND الخاص بسائق المحرك بالبطارية ناقصًا و Raspberry Pi (GND). يتم توصيل دبابيس GPIO الخاصة بـ Raspberry Pi بسائق المحرك كجدول.

الخطوة 4: تحضير RASPBERRY O. S

هذا تثبيت قياسي لنظام التشغيل Raspbian ، يمكنك أن تجده

الكثير من البرامج التعليمية التفصيلية التي تبحث في الويب ، والخطوات هي في الأساس:

1. قم بتنزيل iso RASPBIAN STRETCH WITH DESKTOP من

2. تنسيق بطاقة SD سعة 16 جيجابايت ، لقد استخدمت SD Formatter

3. نسخ ملف. IMG ، لقد استخدمت Win32DiskImager

الآن أصبح التوت جاهزًا للتمهيد ، وقم بتوصيله بمصدر طاقة USB (5 فولت ، 2 أمبير) واستعد لإعداد التمهيد الأول. يمكنك القيام بذلك بطريقتين ، باستخدام أجهزة خارجية مثل الماوس ولوحة المفاتيح والشاشة أو باستخدام جهاز الكمبيوتر الخاص بك والاتصال عن بُعد بـ Raspberry. هناك الكثير من البرامج التعليمية حول هذا الموضوع ، أحدها:

الخطوة 5: كيفية التحكم في خزان WIFI الخاص بنا باستخدام NODE. JS و WEBSOCKET. IO

كيفية التحكم في خزان WIFI الخاص بنا باستخدام NODE. JS و WEBSOCKET. IO
كيفية التحكم في خزان WIFI الخاص بنا باستخدام NODE. JS و WEBSOCKET. IO

الآن لدينا تثبيت جديد لجهاز Raspberry micro PC جاهز لتشغيل مهمتنا ، لذا … ما الذي نستخدمه لإصدار الأوامر إلى الخزان؟

لغة Python هي لغة سهلة الاستخدام جدًا تُستخدم عادةً لتشغيل مشروع Rapsberry ويمكن بسهولة استخدامها أيضًا للتفاعل مع دبابيس إدخال وإخراج Rapsberry (GPIO) https://www.raspberrypi.org/documentation/usage/p …

ولكن ، كان هدفي هو توصيل جهاز wi-fi الخاص بي من أي جهاز (كمبيوتر شخصي ، هاتف محمول ، جهاز لوحي …) باستخدام متصفح ويب شائع ودفق الفيديو منه أيضًا. لذا ، انسَ لغة Python الآن ، ودعنا ننتقل إلى NODE. JS و SOCKET. IO.

NODE.js

Node.js (https://github.com/nodejs/node/wiki) هو إطار عمل خادم مفتوح المصدر يعتمد على لغة js. نظرًا لأنني أستخدم Raspberry Pi Zero (ARMv6 CPU) ، لا يمكننا استخدام عملية التثبيت التلقائي (المخصصة لوحدة المعالجة المركزية ARMv7) ونحتاج إلى القيام بذلك يدويًا:

قم بتنزيل Nodejs محليًا ، (لقد استخدمت إصدار 7.7.2 لـ ARMv6 ، تحقق من الإصدارات الأخرى هنا

بي @ التوت: ~ $ wget

nodejs.org/dist/v7.7.2/node-v7.7.2-linux-…

بمجرد الانتهاء من ذلك ، قم باستخراج الملف المضغوط:

pi @ raspberry: ~ $ tar -xzf node-v7.7.2-linux-armv6l.tar.gz

قم بنسخ الملفات وتثبيتها في / user / local

pi @ raspberry: ~ $ sudo cp -R node-v7.7.2-linux-armv6l / * / usr / local /

أضف الموقع حيث نقوم بتثبيت nodejs إلى المسار ، قم بتحرير ملف ".profile":

pi @ raspberry: ~ $ nano ~ /.profile

أضف السطر التالي في نهاية الملف واحفظه واخرج منه

PATH = $ PATH: / usr / local / bin

قم بإزالة الملف الذي تم تنزيله:.

pi @ raspberry: ~ $ rm ~ / node-v7.7.2-linux-armv6l.tar.gz

pi @ raspberry: ~ $ rm -r ~ / node-v7.7.2-linux-armv6l

اكتب الأوامر التالية للتحقق من تثبيت nodejs:

pi @ raspberry: ~ $ node -v

pi @ raspberry: ~ $ npm -v

يجب أن تقرأ v7.7.2 و v4.1.2 كرد.

إذا سارت الأمور على ما يرام ، فأنشئ مجلدًا جديدًا لاستضافة ملفات nodejs الخاصة بك:

pi @ raspberry: ~ $ mkdir nodehome

التنقل داخل مجلد جديد:

pi @ raspberry: ~ $ cd nodehome

قم بتثبيت وحدة إضافية مطلوبة لإدارة GPIO بأبسط الطرق ، تشغيل وإيقاف:

pi @ raspberry: ~ npm $ للتثبيت onoff

حان الوقت الآن لاختبار مشروعنا الأول "Blink.js" ، وستكون النتيجة… وميض LED

pi @ raspberry: ~ $ nano blink.js

الصق التعليمات البرمجية التالية ، احفظها واخرج منها:

var Gpio = يتطلب ('onoff'). Gpio؛ // تضمين onoff

var LED = Gpio جديد (3 ، 'out') ؛ // استخدم GPIO 3

var blinkInterval = setInterval (blinkLED، 250) ؛

// وميض LED كل 250 مللي ثانية

الدالة blinkLED () {// وظيفة لبدء الوميض

لو

(LED.readSync () === 0) {// تحقق من حالة الدبوس ، إذا كانت الحالة 0 (أو متوقفة)

LED.writeSync (1) ؛

// ضبط حالة الدبوس على 1 (تشغيل LED)

} آخر {

LED.writeSync (0) ؛

// ضبط حالة الدبوس على 0 (إيقاف تشغيل LED)

}

}

function endBlink () {// وظيفة لإيقاف الوميض

clearInterval (blinkInterval) ؛ // إيقاف فترات الوميض

LED.writeSync (0) ؛ // إيقاف تشغيل LED

LED.unexport () ؛ // Unexport GPIO لتحرير الموارد

}

setTimeout (endBlink ،

5000) ؛ // توقف عن الوميض بعد 5 ثوانٍ

قم بتوصيل LED ، المقاوم (200 أوم) كما هو موضح في المخطط وقم بتشغيل المشروع:

pi @ raspberry: ~ $ node blink.js

العقدة جاهزة.

مقبس

WebSocket هو بروتوكول اتصالات كمبيوتر ، يعتمد على اتصال TCP ، ويوفر مبرمجًا لإنشاء خادم وعميل. يتصل العميل بالخادم ويقوم بإرسال واستقبال الرسائل من وإلى الخادم. يُطلق على تطبيق WebSocket لـ Node.js اسم Socket.io (https://socket.io/).

تثبيت socket.io:

pi @ raspberry: ~ $ npm قم بتثبيت socket.io - حفظ

التحرك داخل منزل nodejs ، الذي تم إنشاؤه مسبقًا:

pi @ raspberry: ~ $ cd nodehome

وأنشئ مجلدًا جديدًا "عام":

pi @ raspberry: ~ $ mkdir للجمهور

إنشاء نموذج خادم ويب جديد ، أطلق عليه اسم "webserver.js"

pi @ raspberry: ~ nano webserver.js

الصق التعليمات البرمجية التالية ، احفظها واخرج منها:

var http = يتطلب ('http'). createServer (معالج) ؛ // تتطلب خادم HTTP ، وأنشئ خادمًا باستخدام معالج الوظيفة ()

var fs = تتطلب ('fs') ؛ // تتطلب وحدة نظام الملفات

http.listen (8080) ، // استمع إلى المنفذ 8080

معالج الوظيفة (مطلوب ، الدقة) {// إنشاء الخادم

fs.readFile (_ dirname + '/public/index.html'، function (err، data) {// read

ملف index.html في المجلد العام

إذا (يخطئ) {

res.writeHead (404 ،

{'نوع المحتوى': 'text / html'}) ؛ // عرض 404 عند الخطأ

عودة res.end ( 404 لا

وجد )؛

}

res.writeHead (200 ،

{'نوع المحتوى': 'text / html'}) ؛ // اكتب HTML

res.write (البيانات) ؛ // كتابة البيانات

من index.html

عودة res.end () ؛

});

}

سيستمع خادم الويب هذا إلى منفذ Raspberry 8080 الخاص بك ويوفر ملف تخزين لأي عميل ويب متصل به. نحتاج الآن إلى إنشاء شيء لاستضافته وتقديمه لعملائنا: الانتقال داخل المجلد "العام": pi @ raspberry: ~ $ cd public

إنشاء ملف html جديد "index.html":

pi @ raspberry: ~ $ nano index.html

الصق الكود من الملف المرفق "HelloWorld.txt" ، احفظه واخرج.

التحرك داخل مجلد nodejs "nodehome":

pi @ raspberry: ~ $ cd nodehome

بدء خادم الويب

pi @ raspberry: ~ $ node webserver.js

افتح موقع الويب في متصفح باستخدام https:// Raspberry_IP: 8080 / (استبدل Raspberry_IP بـ IP الخاص بك)

الخطوة 6: إضافة قدرة دفق الفيديو

هناك طريقة مختلفة لتنفيذ دفق الفيديو على Raspberry ، أسهل

بالطريقة التي اكتشفتها حتى الآن ، أن الأداء الرائع ويمكن دمجه في واجهة الويب هو أساس المشروع من Miguel Mota:

miguelmota.com/blog/raspberry-pi-camera-bo…

ميغيل شكرا! هذه هي الخطوات من مدونته:

تثبيت المكونات libjpeg8 و cmake:

pi @ raspberry: ~ sudo apt-get install libjpeg8

pi @ raspberry: ~ $ sudo apt-get install libjpeg8-dev

pi @ raspberry: ~ sudo apt-get install cmake

تنزيل mjpg-Streamer مع البرنامج المساعد raspicam:

pi @ raspberry: ~ $ git clone

github.com/jacksonliam/mjpg-streamer.git ~ / mjpg-streamer

تغيير الدليل:

pi @ raspberry: ~ $ cd ~ / mjpg-streamer / mjpg-streamer-تجريبي

تجميع:

بي @ التوت: ~ $ تنظيف كل شيء

استبدال mjpg-streamer القديم:

pi @ raspberry: ~ $ sudo rm -rf / opt / mjpg-streamer

pi @ raspberry: ~ $ sudo mv ~ / mjpg-streamer / mjpg-streamer-تجريبي

/ opt / mjpg-streamer

pi @ raspberry: ~ $ sudo rm -rf ~ / mjpg-streamer

قم بإنشاء ملف "start_stream.sh" جديد ، انسخه والصقه من ملف "start_stream.txt" المرفق.

اجعله قابلاً للتنفيذ (إنشاء برامج نصية للقذيفة):

pi @ raspberry: ~ $ chmod + x start_stream.sh

بدء تشغيل الخادم:

pi @ raspberry: ~ $./start_stream.sh

افتح موقع الويب في متصفح باستخدام https:// Raspberry_IP: 9000 (استبدل Raspberry_IP بـ IP الخاص بك)

الخطوة 7: برنامج الخزان

كل شيء جاهز ، الآن علينا إنشاء صفحة الويب الخاصة بنا للتحكم في الخزان (index.html) وخادم الويب الخاص بنا للاستماع إلى أوامرنا (webserver.js). لذلك ، ما عليك سوى استبدال الملفات التي تمت مشاهدتها حتى الآن (مجرد أمثلة لاختبار النظام) مع webserver.txt و index.txt المرفقين.

الخطوة 8: بدء واجهة التحكم وخادم البث

بدء واجهة التحكم وخادم التدفق
بدء واجهة التحكم وخادم التدفق

لبدء الخدمات ، افتح نافذتين طرفيتين وقم بتشغيل هذه الأوامر:

عقدة nodehome / webserver.js

./nodehome/start_stream.sh

افتح موقع الويب في متصفح باستخدام https:// Raspberry_IP: 8080 (استبدل Raspberry_IP بـ IP الخاص بك)

موصى به: