Turinys:

Aviečių bakas su žiniatinklio sąsaja ir vaizdo transliacija: 8 žingsniai (su nuotraukomis)
Aviečių bakas su žiniatinklio sąsaja ir vaizdo transliacija: 8 žingsniai (su nuotraukomis)

Video: Aviečių bakas su žiniatinklio sąsaja ir vaizdo transliacija: 8 žingsniai (su nuotraukomis)

Video: Aviečių bakas su žiniatinklio sąsaja ir vaizdo transliacija: 8 žingsniai (su nuotraukomis)
Video: Kaip naudotis Bixby 2024, Lapkritis
Anonim
Aviečių bakas su žiniatinklio sąsaja ir vaizdo transliacija
Aviečių bakas su žiniatinklio sąsaja ir vaizdo transliacija

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

BOM
BOM
BOM
BOM
BOM
BOM
BOM
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

LAIDAS
LAIDAS
LAIDAS
LAIDAS

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

KAIP KONTROLIUOTI WIFI TANKĄ SU NODE. JS IR WEBSOCKET. IO
KAIP KONTROLIUOTI WIFI TANKĄ 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Į

PRADĖTI KONTROLĖS SĄSAJĄ IR SRAUTO SERVERĮ
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: