Turinys:
- 1 žingsnis: BOM
- 2 žingsnis: pagrindinių komponentų specifikacijos
- 3 žingsnis: laidų prijungimas
- 4 žingsnis: AVYRŲ PARUOŠIMAS
- 5 žingsnis: KAIP KONTROLIUOTI WIFI BANKĄ SU NODE.JS IR WEBSOCKET.IO
- 6 veiksmas: VIDEO SRAUTO GALIMYBĖS PRIDĖJIMAS
- 7 žingsnis: BANKO PROGRAMA
- 8 veiksmas: PRADĖTI KONTROLĖS SĄSAJĄ IR SRAUTO SERVERĮ
Video: Aviečių bakas su žiniatinklio sąsaja ir vaizdo transliacija: 8 žingsniai (su nuotraukomis)
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:48
Mes pamatysime, kaip supratau mažą „WiFi“talpyklą, galinčią nuotoliniu būdu valdyti internetą ir transliuoti vaizdo įrašus.
Tai yra pamoka, kuriai reikia pagrindinių žinių apie elektroninį ir programinį programavimą. Dėl šios priežasties pasirinkau cisternos važiuoklės komplektą (užuot spausdinus naudojant 3D spausdintuvą, gali būti vėliau atnaujintas) ir iš viso 6 komponentus, įskaitant baterijas. Programinės įrangos pusėje galite žingsnis po žingsnio sekti diegimo procesą ir programavimas yra minimalus, gali padėti pagrindinės žinios apie Raspberry dalykus.
Apskaičiavau 12 valandų darbo nuo 0 iki paruošto darbui bako. Bendra kaina 70 € už visus komponentus.
1 žingsnis: BOM
1 - „Pasidaryk pats“RC robotų važiuoklės bakas - 32 (€)
www.banggood.com/DIY-RC-Robot-Chassis-Tan…
1 - Dviejų kanalų L298N nuolatinės srovės variklio vairuotojo lenta - 1, 39 (€)
www.banggood.com/Dual-Channel-L298N-DC-Mo…
1 - Raspberry Pi Zero W pradinis rinkinys - 26 (€)
amzn.eu/1ugAaMP
1 - 16 GB SD kortelė - 5, 50 (€)
www.gearbest.com/memory-cards/pp_337819.h…
1 - Raspberry Pi 5MP fotoaparato modulio internetinė kamera Zero modeliui - 8 (€)
www.gearbest.com/raspberry-pi/pp_612249.h…
1 - maitinimo bankas 5V
1–9 V baterija
Mišrios duonos lentos kabelio „Dupont“jungtis
Pelė, klaviatūra, monitorius arba televizorius, skirtas „Raspberry“sąrankai (neprivaloma, kad būtų lengviau nustatyti pirmą kartą)
2 žingsnis: pagrindinių komponentų specifikacijos
Variklis
JGA25-370 nuolatinės srovės reduktorius
Šis variklis turi D formos išėjimo veleną.
Specifikacijos
· Darbinė įtampa: nuo 6 V iki 18 V
· Nominali įtampa: 12 V
· Laisvas greitis esant 12 V: 399 aps./min
· Srovė esant 12 V įtampai: 50 mA
· Sustojimo srovė esant 12 V: 1200 mA
· Sustojimo sukimo momentas esant 12 V: 2,2 kg.cm
· Pavarų santykis: 1:21
· Reduktoriaus dydis: 19 mm
· Svoris: 84 g
Dviejų kanalų L298N nuolatinės srovės variklio vairuotojo lenta
Dvigubas H tilto variklio vairuotojas gali valdyti du nuolatinės srovės variklius arba 4 laidų dviejų fazių žingsninius variklius. Įmontuotas TSD, apsaugantis nuo variklio užstrigimo.
Specifikacijos
· Modulio maitinimo įtampa: DC 2V-10V
· Signalo įėjimo įtampa: DC 1,8-7V
· Viena darbinė srovė: 1,5A
· Didžiausia srovė iki 2,5A
· Maža budėjimo srovė (mažesnė nei 0,1uA)
· Įmontuota bendro laidumo grandinė, laisvas įvesties gnybtas, variklis neveikia
· Dydis: 24,7 x 21 x 7 mm
3 žingsnis: laidų prijungimas
Tai bus galutinė instaliacija, bet PALAUKITE, kol mums reikės ją įdiegti
programinę įrangą ir gera idėja išbandyti ją naudojant paprastesnius laidus.
Mums reikia dviejų skirtingų maitinimo šaltinių - vieno varikliui ir kito „Raspberry“.
Variklio tvarkyklė Dviejų kanalų L298N nuolatinės srovės variklio plokštė (maksimali įėjimo įtampa DC 2V-10V) maitinama naudojant 9 V bateriją, o „Raspberry Pi“naudoja standartinį 5 V USB akumuliatorių.
Variklio tvarkyklės GND kaištis bus prijungtas prie akumuliatoriaus minuso ir „Raspberry Pi“(GND). „Raspberry Pi“GPIO kaiščiai yra prijungti prie variklio tvarkyklės kaip stalas.
4 žingsnis: AVYRŲ PARUOŠIMAS
Tai yra standartinis „Raspbian“operacinės sistemos diegimas
daug išsamių pamokų, ieškančių internete, iš esmės yra šie veiksmai:
1. Iš https://www.raspberrypi.org/downloads/raspbian/ atsisiųskite iso RASPBIAN STRETCH WITH STALTOP
2. Suformatuokite 16 GB SD kortelę, aš naudoju SD formatavimą
3. Įrašykite. IMG failą, naudojau „Win32DiskImager“https://sourceforge.net/projects/win32diskimager/
Dabar jūsų avietė yra paruošta paleisti, prijunkite ją prie USB maitinimo šaltinio (5V, 2A) ir pasiruoškite pirmajam įkrovos nustatymui. Tai galite padaryti dviem būdais, naudodami išorinius įrenginius, pvz., Pelę, klaviatūrą ir monitorių, arba naudodami kompiuterį ir nuotolinį ryšį su „Raspberry“. Yra daug pamokų apie tai, viena yra:
5 žingsnis: KAIP KONTROLIUOTI WIFI BANKĄ SU NODE. JS IR WEBSOCKET. IO
Dabar turime naują „Raspberry“mikrokompiuterio instaliaciją, paruoštą atlikti savo darbą, taigi … ką mes naudojame, kad išduotume komandas bakui?
„Python“yra labai paprasta naudoti kalba, paprastai naudojama „Rapsberry“projekto smėliui paleisti, taip pat gali būti lengvai naudojama sąveikaujant su „Rapsberry“įvesties ir išvesties kaiščiais (GPIO)
Tačiau mano tikslas buvo prijungti savo bako „Wi-Fi“iš bet kurio įrenginio (kompiuterio, mobiliojo telefono, planšetinio kompiuterio …) naudojant bendrą žiniatinklio naršyklę ir taip pat transliuoti vaizdo įrašą iš jos. Taigi, kol kas pamirškite „Python“ir pereikite prie NODE. JS ir SOCKET. IO.
NODE.js
„Node.js“(https://github.com/nodejs/node/wiki) yra atviro kodo serverio rėmo darbas, pagrįstas js kalba. Kadangi naudoju „Raspberry Pi Zero“(ARMv6 procesorių), mes negalime naudoti automatinio diegimo proceso (skirto „ARMv7“procesoriui) ir turime tai padaryti rankiniu būdu:
Atsisiųskite „Nodejs“vietoje (ARMv6 naudojau 7.7.2 versiją, kitas versijas rasite čia
pi@avietė: ~ $ wget
nodejs.org/dist/v7.7.2/node-v7.7.2-linux-…
Baigę išskleiskite suspaustą failą:
pi@avietė: ~ $ tar -xzf node-v7.7.2-linux-armv6l.tar.gz
Nukopijuokite ir įdiekite failus į /user /local
pi@avietė: ~ $ sudo cp -R node-v7.7.2-linux-armv6l/*/usr/local/
Prie kelio pridėkite vietą, kurioje įdiegiame „nodejs“, redaguokite „.profile“failą:
pi@avietė: ~ $ nano ~/.profilis
Failo pabaigoje pridėkite šią eilutę, išsaugokite ir išeikite
PATH = $ PATH:/usr/local/bin
Pašalinkite atsisiųstą failą:.
pi@avietė: ~ $ rm ~/node-v7.7.2-linux-armv6l.tar.gz
pi@avietė: ~ $ rm -r ~/node-v7.7.2-linux-armv6l
Norėdami patikrinti „nodejs“diegimą, įveskite šias komandas:
pi@avietė: ~ $ node -v
pi@avietė: ~ $ npm -v
Kaip atsakymą turėtumėte perskaityti v7.7.2 ir v4.1.2.
Jei viskas klostėsi gerai, sukurkite naują aplanką, kuriame talpinami „nodejs“failai:
pi@avietė: ~ $ mkdir nodehome
Perkelti į naują aplanką:
pi@avietė: ~ $ cd nodehome
Įdiekite papildomą modulį, reikalingą pagrindiniam GPIO valdymui, įjungus ir išjungus:
pi@avietė: ~ $ npm install onoff
Dabar atėjo laikas išbandyti mūsų pirmąjį projektą „Blink.js“, kurio rezultatas bus … mirksintis šviesos diodas
pi@avietė: ~ $ nano blink.js
Įklijuokite šį kodą, išsaugokite ir išeikite:
var Gpio = reikalauti ('onoff'). Gpio; // įtraukti įjungimą
var LED = naujas Gpio (3, 'out'); // naudoti GPIO 3
var blinkInterval = setInterval (blinkLED, 250);
// mirksi LED kas 250ms
funkcija blinkLED () {// funkcija, skirta pradėti mirksėti
jei
(LED.readSync () === 0) {// patikrinkite kaiščio būseną, jei būsena yra 0 (arba išjungta)
LED.writeSync (1);
// nustatykite kaiščio būseną į 1 (įjunkite šviesos diodą)
} Kitas {
LED.writeSync (0);
// nustatykite kaiščio būseną į 0 (išjunkite LED)
}
}
funkcija endBlink () {// funkcija nustoti mirksėti
clearInterval (blinkInterval); // Sustabdyti mirksėjimo intervalus
LED.writeSync (0); // Išjungti šviesos diodą
LED.unexport (); // Neportuoti GPIO į nemokamus išteklius
}
setTimeout (endBlink, 5000); // nustoti mirksėti po 5 sekundžių
Prijunkite šviesos diodą, rezistorių (200 omų), kaip parodyta schemoje, ir paleiskite projektą:
pi@avietė: ~ $ mazgas blink.js
Mazgas yra paruoštas.
SOCKET. IO
„WebSocket“yra kompiuterinio ryšio protokolas, pagrįstas TCP ryšiu, jis suteikia programuotojui galimybę sukurti serverį ir klientą. Klientas prisijungia prie serverio ir siunčia bei gauna pranešimus į serverį ir iš jo. „WebSocket“diegimas „Node.js“vadinamas „Socket.io“(https://socket.io/).
Įdiekite „socket.io“:
pi@avietė: ~ $ npm įdiegti socket.io --save
Perkelkite „nodejs“namo, sukurtą anksčiau:
pi@avietė: ~ $ cd nodehome
Ir sukurkite naują aplanką „viešas“:
pi@avietė: ~ $ mkdir public
Sukurkite naują žiniatinklio serverio pavyzdį, pavadinkite jį „webserver.js“
pi@avietė: ~ $ nano webserver.js
Įklijuokite šį kodą, išsaugokite ir išeikite:
var http = reikalauti ('http'). createServer (tvarkytojas); // reikalauti http serverio ir sukurti serverį su funkcijų tvarkytoju ()
var fs = reikalauti ('fs'); // reikalauti failų sistemos modulio
http.listen (8080); // klausyk 8080 prievado
funkcijų tvarkytojas (req, res) {// sukurti serverį
fs.readFile (_ dirname + '/public/index.html', function (klaida, duomenys) {// skaityti
failą index.html viešame aplanke
jei (klysti) {
res.writeHead (404, {'Content-Type': 'text/html'}); // rodyti klaidą 404
return res.end ( 404 Ne
Rasta );
}
res.writeHead (200, {'Content-Type': 'text/html'}); // rašyti HTML
res.write (duomenys); // rašyti duomenis
iš index.html
return res.end ();
});
}
Ši žiniatinklio serveris išklausys jūsų „Raspberry“prievadą 8080 ir pateiks failą bet kuriam jį jungiančiam žiniatinklio klientui. Dabar turime sukurti kažką, ką priimtume ir pateiktume savo klientams: Perkelkite į „viešą“aplanką: pi@raspberry: ~ $ cd public
Sukurkite naują html failą „index.html“:
pi@avietė: ~ $ nano index.html
Įklijuokite kodą iš pridėto „HelloWorld.txt“, išsaugokite ir išeikite.
Perkelti į „nodejs“aplanką „nodehome“:
pi@avietė: ~ $ cd nodehome
Paleisti HTTP žiniatinklio serverį:
pi@avietė: ~ $ node webserver.js
Atidarykite svetainę naršyklėje naudodami https:// Raspberry_IP: 8080/(pakeiskite Raspberry_IP savo IP)
6 veiksmas: VIDEO SRAUTO GALIMYBĖS PRIDĖJIMAS
Lengviausias būdas yra transliuoti vaizdo įrašus „Raspberry“skirtingais būdais
Iki šiol pastebėjau, kad puikus našumas ir gali būti integruotas į žiniatinklio sąsają yra Miguel Mota projekto pagrindas:
miguelmota.com/blog/raspberry-pi-camera-bo…
Ačiū Miguel! Iš jo tinklaraščio pateikiami šie žingsniai:
Įdiekite komponentus libjpeg8 ir cmake:
pi@avietė: ~ $ sudo apt-get install libjpeg8
pi@avietė: ~ $ sudo apt-get install libjpeg8-dev
pi@avietė: ~ $ sudo apt-get install cmake
Atsisiųskite „mjpg-streamer“su „Raspicam“papildiniu:
pi@avietė: ~ $ git klonas
github.com/jacksonliam/mjpg-streamer.git ~/mjpg-streamer
Keisti katalogą:
pi@avietė: ~ $ cd ~/mjpg-streamer/mjpg-streamer-experimental
Sudaryti:
pi@avietė: ~ $ padaryti viską švarų
Pakeiskite seną „mjpg-streamer“:
pi@avietė: ~ $ sudo rm -rf /opt /-j.webp
pi@avietė: ~ $ sudo mv ~/mjpg-streamer/mjpg-streamer-experimental
/opt/mjpg-streamer
pi@avietė: ~ $ sudo rm -rf ~/mjpg -streamer
Sukurkite naują failą „start_stream.sh“, nukopijuokite ir įklijuokite iš pridėto failo „start_stream.txt“.
Padarykite jį vykdomu (sukurkite apvalkalo scenarijus):
pi@avietė: ~ $ chmod +x start_stream.sh
Pradėti srautinio perdavimo serverį:
pi@avietė: ~ $./start_stream.sh
Atidarykite svetainę naršyklėje naudodami https:// Raspberry_IP: 9000 (Raspberry_IP pakeiskite savo IP)
7 žingsnis: BANKO PROGRAMA
Viskas paruošta, dabar turime sukurti savo tinklalapį, kad valdytume baką (index.html), ir žiniatinklio serverį, kad išklausytume komandas (webserver.js). Taigi, tiesiog pakeiskite iki šiol matytus failus (tik pavyzdžiai sistemai išbandyti) pridėtais webserver.txt ir index.txt.
8 veiksmas: PRADĖTI KONTROLĖS SĄSAJĄ IR SRAUTO SERVERĮ
Norėdami paleisti paslaugas, atidarykite du terminalo langus ir paleiskite šias komandas:
mazgas nodehome/webserver.js
./nodehome/start_stream.sh
Atidarykite svetainę naršyklėje naudodami https:// Raspberry_IP: 8080 (Raspberry_IP pakeiskite savo IP)
Rekomenduojamas:
ESP32-CAM Sukurkite savo robotinį automobilį su tiesiogine vaizdo transliacija: 4 žingsniai
ESP32-CAM Kurkite savo robotą automobilį naudodami tiesioginę vaizdo transliaciją: Idėja yra padaryti, kad čia aprašytas automobilis robotas būtų kuo pigesnis. Todėl tikiuosi pasiekti didelę tikslinę grupę su išsamiais nurodymais ir pasirinktais pigių modelių komponentais. Norėčiau pristatyti savo idėją apie automobilį robotą
$ 9 RTSP vaizdo transliacija naudojant ESP32-CAM plokštę: 3 žingsniai
$ 9 RTSP vaizdo transliacija naudojant ESP32-CAM plokštę: šis įrašas parodys, kaip galite sukurti 9 USD vertės vaizdo transliacijos įrenginį, kuris naudoja RTSP ir ESP32-CAM plokštę. Eskizas gali būti sukonfigūruotas prisijungti prie esamo „WiFi“tinklo arba taip pat gali sukurti savo prieigos tašką, prie kurio galite prisijungti
Tiesioginė 4G/5G HD vaizdo transliacija iš DJI drono esant mažai delsai [3 žingsniai]: 3 žingsniai
Tiesioginis 4G/5G HD vaizdo įrašų srautinis perdavimas iš DJI drono esant mažai delsai [3 žingsniai]: Šis vadovas padės jums gauti tiesioginius HD kokybės vaizdo srautus iš beveik visų DJI dronų. Naudodami „FlytOS Mobile App“ir „FlytNow Web Application“galite pradėti transliuoti vaizdo įrašus iš drono
Tiesioginė transliacija/vaizdo įrašymas OBS: 5 žingsniai
Tiesioginė transliacija/vaizdo įrašymas OBS: ši instrukcija moko, kaip tiesiogiai transliuoti ar įrašyti vaizdo įrašą tiesiai iš kompiuterio ekrano. Yra keli tiesioginio srauto ir dar daugiau įrašymo būdų, tačiau šiame vadove pagrindinis dėmesys bus skiriamas transliacijos platformai OBS. Bet koks pakankamai modernus kompiuteris
Garso transliacija ir vaizdo transliacija naudojant „Raspberry Pi 3“: 6 žingsniai
Garso transliacija ir vaizdo transliacija naudojant „Raspberry Pi 3“: Pagrindinis šio projekto įrankis yra garso transliavimas į „Raspberry Pi 3“iš bet kurio įrenginio, prijungto prie bendro „WiFi“tinklo, ir vaizdo įrašo gavimas iš „Raspberry Pi 3“į bet kurį įrenginį, prijungtą prie bendro „WiFi“tinklo