Mundarija:
- 1 -qadam: BOM
- 2 -qadam: Asosiy komponentlarning xususiyatlari
- 3 -qadam: simlarni ulash
- 4 -qadam: Raspberriga tayyorgarlik ko'rish O.S
- 5 -qadam: WIFI TANKIMIZNI NODE.JS VA WEBSOCKET.IO bilan qanday nazorat qilish kerak
- 6 -qadam: VIDEO STREAMING QO'ShIMChASINI QO'ShISH
- 7 -qadam: TANK DASTURI
- 8 -qadam: XIZMATNI NAZORAT ETISH VA STREAMING XIZMATINI BOSHLASH
Video: Veb -interfeysi va video oqimi bilan malina tanki: 8 qadam (rasmlar bilan)
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:28
Qanday qilib men masofadan turib Internetni boshqarish va video oqimini boshqarish qobiliyatiga ega bo'lgan kichik WiFi tankini amalga oshirganimni ko'ramiz.
Bu elektron va dasturiy dasturlash bo'yicha asosiy bilimlarni talab qiladigan o'quv qo'llanma bo'lishi uchun mo'ljallangan. Shuning uchun men tank shassi to'plamini tanladim (uni 3D printer yordamida chop etish o'rniga, keyinchalik yangilanish bo'lishi mumkin) va jami 6 ta komponent, shu jumladan batareyalar. Dasturiy ta'minotni o'rnatish jarayonini bosqichma -bosqich kuzatib borishingiz mumkin va dasturlash minimal darajada saqlanadi, malinali narsalar haqidagi asosiy bilimlar yordam berishi mumkin.
Men 0 dan tayyor tankgacha 12 soat ishlaganman. Barcha komponentlar uchun umumiy qiymati 70 €.
1 -qadam: BOM
1 - DIY RC robot shassis tanki - 32 (€)
www.banggood.com/DIY-RC-Robot-Chassis-Tan…
1 - ikki kanalli L298N shahar motorli haydovchi platasi - 1, 39 (€)
www.banggood.com/Dual-Channel-L298N-DC-Mo…
1 - Raspberry Pi Zero W boshlang'ich to'plami - 26 (€)
amzn.eu/1ugAaMP
1 - 16 Gb SD -karta - 5, 50 (€)
www.gearbest.com/memory-cards/pp_337819.h…
1 - Raspberry Pi 5MP Kamera modulli nol modeli uchun veb -kamera - 8 (€)
www.gearbest.com/raspberry-pi/pp_612249.h…
1 - Quvvat banki 5V
1 - 9V batareya
Aralash Breadboard kabeli Dupont ulagichi
Malinani sozlash uchun sichqoncha, klaviatura, monitor yoki televizor (ixtiyoriy, faqat birinchi sozlashni osonlashtirish uchun)
2 -qadam: Asosiy komponentlarning xususiyatlari
Dvigatel
JGA25-370 DC tishli motor
Ushbu dvigatel D shaklidagi chiqish miliga ega.
Xususiyatlar
· Ishlash kuchlanishi: 6 V dan 18 V gacha
· Nominal kuchlanish: 12 V
· 12 V: 399 aylanish / min tezlikda erkin ishlash
· 12 V: 50 mA erkin oqim
· 12V da to'xtash oqimi: 1200 mA
· 12V da to'xtash momenti: 2,2 kg sm
· Vites tezligi: 1:21
· Redüktör o'lchami: 19 mm
· Og'irligi: 84 g
Ikki kanalli L298N shahar motorli haydovchi platasi
Ikkita H-ko'prikli dvigatel haydovchisi, ikkita shahar motorini yoki 4 simli ikki fazali step motorini boshqarishi mumkin. Dvigatel to'xtash joyidan himoya qilish uchun o'rnatilgan TSD.
Xususiyatlar
· Modul besleme zo'riqishi: shahar 2V-10V
· Signal kirish voltaji: shahar 1.8-7V
· Yagona ish oqimi: 1,5A
· 2,5A gacha bo'lgan eng yuqori oqim
· Kutish oqimi past (0,1uA dan kam)
· O'rnatilgan umumiy o'tkazgich sxemasi, kirish terminali bo'sh, vosita ishlamayapti
Hajmi: 24,7 x 21 x 7 mm
3 -qadam: simlarni ulash
Bu oxirgi kabel bo'ladi, lekin biz kutishimiz kerak, biz o'rnatishdan oldin
dasturiy ta'minot va uni oddiy simlar yordamida sinab ko'rish yaxshidir, tayyor bo'lganda bu erga qaytadi.
Bizga ikki xil quvvat manbai kerak, biri motor uchun, ikkinchisi esa malina uchun.
Dvigatelli ikki kanalli L298N dvigatel drayveri platasi (maksimal kirish voltaji DC 2V-10V) 9V batareya bilan quvvatlanadi va Raspberry Pi 5V USB akkumulyatoridan foydalanadi.
Dvigatel haydovchisining GND pimi minus batareyaga va Raspberry Pi (GND) ga ulanadi. Raspberry Pi -ning GPIO pinlari motor drayveriga stol sifatida ulangan.
4 -qadam: Raspberriga tayyorgarlik ko'rish O. S
Bu Raspbian operatsion tizimi uchun standart o'rnatish
Internetda qidirishning ko'plab batafsil qo'llanmalari, asosan qadamlar:
1. iso RASPBIAN STRETCH -ni DESKTOP bilan https://www.raspberrypi.org/downloads/raspbian/ saytidan yuklab oling.
2. 16 GB hajmli SD -kartani formatlang, men SD Formatter -dan foydalanganman
3.. IMG faylini yozing, men Win32DiskImager -dan foydalanganman
Endi sizning malina yuklashga tayyor, uni USB quvvat manbaiga (5V, 2A) ulang va birinchi yuklashni sozlashga tayyorlaning. Siz buni sichqoncha, klaviatura va monitor kabi tashqi qurilmalar yordamida yoki shaxsiy kompyuteringiz va Raspberry -ga masofaviy ulanish yordamida ikki yo'l bilan qilishingiz mumkin. Bu borada juda ko'p qo'llanmalar mavjud, ulardan biri:
5 -qadam: WIFI TANKIMIZNI NODE. JS VA WEBSOCKET. IO bilan qanday nazorat qilish kerak
Endi bizda Raspberry mikrokompyuterining yangi o'rnatilishi bor, u o'z ishini bajarishga tayyor, shuning uchun … biz tankga buyruq berish uchun nima ishlatamiz?
Python - bu Rapsberry loyihasini ishga tushirish uchun ishlatiladigan juda oson ishlatiladigan til, uni Rapsberry kirish va chiqish pinlari (GPIO) bilan o'zaro aloqada ham ishlatish mumkin
Ammo, mening maqsadim-oddiy veb-brauzer yordamida har qanday qurilmadan (kompyuter, mobil telefon, planshet …) o'z tank wi-fi-ni ulash va undan video uzatish. Python -ni hozircha unuting va NODE. JS va SOCKET. IO -ga o'tishga ruxsat bering.
NODE.js
Node.js (https://github.com/nodejs/node/wiki) - bu js tiliga asoslangan ochiq manba kodli server ishi. Men Raspberry Pi Zero (ARMv6 CPU) dan foydalanayotganim uchun biz avtomatik o'rnatish jarayonidan foydalana olmaymiz (ARMv7 CPU uchun mo'ljallangan) va biz buni qo'lda qilishimiz kerak:
Nodejs -ni mahalliy sifatida yuklab oling (men ARMv6 uchun 7.7.2 versiyasini ishlatganman, boshqa versiyalarni bu erda tekshiring
pi@malina: ~ $ wget
nodejs.org/dist/v7.7.2/node-v7.7.2-linux-…
Ish tugagandan so'ng, siqilgan faylni chiqarib oling:
pi@malina: ~ $ tar -xzf tugun-v7.7.2-linux-armv6l.tar.gz
Fayllarni /user /local -ga nusxalash va o'rnatish
pi@malina: ~ $ sudo cp -R node-v7.7.2-linux-armv6l/*/usr/local/
Nodejs o'rnatiladigan joyni yo'lga qo'shing, ".profile" faylini tahrir qiling:
pi@malina: ~ $ nano ~/.profile
Fayl oxiriga quyidagi qatorni qo'shing, saqlang va chiqing
PATH = $ PATH:/usr/local/bin
Yuklab olingan faylni o'chirib tashlang:.
pi@malina: ~ $ rm ~/node-v7.7.2-linux-armv6l.tar.gz
pi@malina: ~ $ rm -r ~/node-v7.7.2-linux-armv6l
Nodejs o'rnatilishini tekshirish uchun quyidagi buyruqlarni kiriting:
pi@malina: ~ $ tugun -v
pi@malina: ~ $ npm -v
Siz javob sifatida v7.7.2 va v4.1.2 ni o'qishingiz kerak.
Agar hamma narsa yaxshi bo'lsa, nodejs fayllarini joylashtirish uchun yangi papka yarating:
pi@malina: ~ $ mkdir nodehome
Yangi papkaga o'ting:
pi@malina: ~ $ cd nodehome
GPIO -ni eng oddiy usulda boshqarish uchun zarur bo'lgan qo'shimcha modulni o'rnating: ON va OFF:
pi@ahududu: ~ $ npm o'rnatish off
Endi bizning birinchi "Blink.js" loyihamizni sinab ko'rish vaqti keldi, natijada LED yonadi
pi@malina: ~ $ nano blink.js
Quyidagi kodni joylashtiring, saqlang va chiqing:
var Gpio = talab ("o'chirish"). Gpio; // o'chirishni o'z ichiga oladi
var LED = yangi Gpio (3, 'chiqish'); // GPIO 3 dan foydalaning
var blinkInterval = setInterval (miltillovchi LED, 250);
// LED har 250 miltida miltillaydi
blinkLED () {// funksiyasi miltillay boshlaydi
agar
(LED.readSync () === 0) {// holat 0 (yoki o'chirilgan) bo'lsa, pin holatini tekshiring
LED.writeSync (1);
// pin holatini 1 ga o'rnating (LEDni yoqing)
} boshqa {
LED.writeSync (0);
// pin holatini 0 ga qo'ying (LEDni o'chiring)
}
}
endBlink () {// funktsiyasi miltillashni to'xtatish uchun
clearInterval (blinkInterval); // miltillovchi intervallarni to'xtating
LED.writeSync (0); // LEDni o'chiring
LED.unexport (); // GPIO -ni bo'sh manbalarga eksport qilish
}
setTimeout (endBlink, 5000); // 5 soniyadan keyin miltillashni to'xtating
Sxemada ko'rsatilgandek LED, rezistorni (200 ohm) ulang va loyihani ishga tushiring:
pi@malina: ~ $ tugun blink.js
Tugun tayyor.
SOCKET. IO
WebSocket - bu kompyuter bilan aloqa protokoli, TCP ulanishiga asoslangan bo'lib, u dasturchi bilan server va mijoz yaratishni ta'minlaydi. Mijoz serverga ulanadi va serverga va undan xabarlarni chiqaradi va oladi. Node.js uchun WebSocket ilovasi Socket.io deb nomlanadi (https://socket.io/).
Socket.io -ni o'rnating:
pi@malina: ~ $ npm socket.io -ni o'rnating
Oldindan yaratilgan nodejlar uyiga o'ting:
pi@malina: ~ $ cd nodehome
Va yangi "umumiy" papkasini yarating:
pi@malina: ~ $ mkdir ommaviy
Yangi namunali veb -server yarating va uni "webserver.js" deb nomlang.
pi@malina: ~ $ nano webserver.js
Quyidagi kodni joylashtiring, saqlang va chiqing:
var http = talab ('http'). createServer (ishlovchi); // http serveriga ehtiyoj bor va funktsiyani ishlov beruvchi yordamida server yaratish ()
var fs = talab ('fs'); // fayl tizimi modulini talab qiladi
http. tinglang (8080); // 8080 portini tinglang
funktsiya ishlovchisi (req, res) {// server yaratish
fs.readFile (_ dirname + '/public/index.html', funktsiya (xato, ma'lumotlar) {// o'qish
umumiy papkada index.html fayl
agar (xato) {
res.writeHead (404, {'Kontent turi': 'matn/html'}); // xato ko'rsatilganda 404 ko'rsatiladi
qaytish res.end ( 404 Yo'q
Topildi );
}
res.writeHead (200, {'Kontent turi': 'matn/html'}); // HTML yozing
res.write (ma'lumotlar); // ma'lumotlarni yozish
index.html dan
qaytish res.end ();
});
}
Bu veb -server sizning Raspberry 8080 portingizni tinglaydi va uni bog'laydigan har qanday veb -mijozga fayl beradi. Endi biz o'z mijozlarimizga joylashtiradigan va taqdim etadigan biror narsa yaratishimiz kerak: "umumiy" papkaga o'ting: pi@ahududu: ~ $ cd public
Yangi "index.html" html faylini yarating:
pi@malina: ~ $ nano indeks.html
"HelloWorld.txt" biriktirilgan kodini joylashtiring, saqlang va chiqing.
Nodejs "nodehome" jildiga o'ting:
pi@malina: ~ $ cd nodehome
HTTP veb -serverini ishga tushiring:
pi@malina: ~ $ node webserver.js
Veb -saytni https:// Raspberry_IP: 8080/yordamida brauzerda oching (Raspberry_IP -ni IP -ga almashtiring)
6 -qadam: VIDEO STREAMING QO'ShIMChASINI QO'ShISH
Raspberry -da video oqimini amalga oshirishning eng oson yo'li bor
Men hozirgacha topdimki, bu ajoyib ishlash va veb -interfeysga qo'shilish Migel Mota loyihasiga asoslanadi:
miguelmota.com/blog/raspberry-pi-camera-bo…
Rahmat Migel! Uning blogida bu qadamlar:
Libjpeg8 va cmake komponentlarini o'rnating:
pi@malina: ~ $ sudo apt-get libjpeg8 ni o'rnating
pi@malina: ~ $ sudo apt-get libjpeg8-dev ni o'rnating
pi@malina: ~ $ sudo apt-get install cmake
Raspicam plagini bilan mjpg-streamer-ni yuklab oling:
pi@malina: ~ $ git klon
github.com/jacksonliam/mjpg-streamer.git ~/mjpg-streamer
Katalogni o'zgartirish:
pi@malina: ~ $ cd ~/mjpg-streamer/mjpg-streamer-eksperimental
Kompilyatsiya:
pi@malina: ~ $ hammasini tozalang
Eski mjpg-streamer-ni almashtiring:
pi@malina: ~ $ sudo rm -rf /opt /mjpg -streamer
pi@malina: ~ $ sudo mv ~/mjpg-streamer/mjpg-streamer-tajriba
/opt/mjpg-oqimi
pi@malina: ~ $ sudo rm -rf ~/mjpg -streamer
Yangi "start_stream.sh" faylini yarating, biriktirilgan "start_stream.txt" faylidan nusxa ko'chiring va joylashtiring.
Uni bajariladigan qilib qo'ying (qobiq skriptlarini yarating):
pi@malina: ~ $ chmod +x start_stream.sh
Oqim serverini ishga tushiring:
pi@malina: ~ $./start_stream.sh
Veb -saytni https:// Raspberry_IP: 9000 yordamida brauzerda oching (Raspberry_IP -ni IP -ga almashtiring)
7 -qadam: TANK DASTURI
Hammasi tayyor, endi biz tankni boshqarish uchun veb -sahifamizni yaratishimiz kerak (index.html) va bizning buyruqlarimizni tinglash uchun veb -serverimiz (webserver.js). Shunday qilib, hozirgacha ko'rilgan fayllarni (faqat tizimni sinab ko'rish uchun misollar) biriktirilgan webserver.txt va index.txt bilan almashtiring.
8 -qadam: XIZMATNI NAZORAT ETISH VA STREAMING XIZMATINI BOSHLASH
Xizmatlarni ishga tushirish uchun ikkita terminal oynasini oching va quyidagi buyruqlarni bajaring:
tugun nodehome/webserver.js
./nodehome/start_stream.sh
Veb -saytni https:// Raspberry_IP: 8080 yordamida brauzerda oching (Raspberry_IP -ni IP bilan almashtiring)
Tavsiya:
DJI Drone -dan past kechikishdagi 4G/5G HD video oqimi [3 qadam]: 3 qadam
DJI Drone-dan past kechikishdagi 4G/5G HD video oqimi [3 qadam]: Quyidagi qo'llanma sizga deyarli har qanday DJI dronidan HD sifatli video oqimlarni olishga yordam beradi. FlytOS mobil ilovasi va FlytNow veb -ilovasi yordamida siz drondan video uzatishni boshlashingiz mumkin
Raspberry Pi veb -oqimlar to'plami - 2 -qism (Pi video oqimi): 6 qadam
Raspberry Pi veb -oqimlar to'plami - 2 -qism (Pi video oqimi): Yaxshi, men bu rasmlar kerak deb o'ylamagan edim, lekin veb -sayt rasmlarni yoqtiradi. Bu asosan siz uchun bir qator buyruqlar va qadamlar. Boshqa saytlar bor, ular har qanday o'ziga xos xususiyatlarga mos kelishi mumkin, bu men uchun ishlagan. Bu boshqalarni birlashtiradi
Bluetooth Karnay Hack - uy teatri oqimi: 8 qadam (rasmlar bilan)
Bluetooth Karnay Hack-Uy teatri oqimi: Bu ko'rsatma, Bluetooth dinamikining asl funktsiyalarini saqlab qolgan holda, uy kinoteatri uchun asosiy oqimga aylanishi uchun, ishlab chiqaruvchi bo'lmagan Bluetooth karnayining buzilishi va LED chiroqni miltillashi haqida batafsil ma'lumot beradi. Men shubhali edim
Pi Home, malina bilan ishlaydigan virtual yordamchi: 11 qadam (rasmlar bilan)
Pi Home, ahududu bilan ishlaydigan virtual yordamchi: Google Home-bu uy atrofida bo'lish uchun foydalidir, bu-Google Assistant-Google-ning eng zamonaviy raqamli shaxsiy yordamchisi bilan jihozlangan go'zal qurilma. U ommaviy axborot vositalarini o'ynata oladi, eslatmalar va eslatmalarni saqlaydi, yurish vaqtini aytib beradi
Suv oqimi o'lchagichlari bilan oqim o'lchami (ultratovushli): 5 qadam (rasmlar bilan)
Suv oqimini o'lchash asboblari yordamida o'lchash (Ultrasonik): Suv - sayyoramiz uchun muhim manba, biz odamlar har kuni suvga muhtojmiz. Suv har xil sanoat uchun zarur va biz odamlar har kuni bunga muhtojmiz. Suv qimmatlasha boshlagach, odamlarni samarali kuzatib borish zarur