Turinys:
- 1 žingsnis: suapvalinkite reikiamus komponentus
- 2 žingsnis: paimkite „Pi“ir paleiskite
- 3 žingsnis: sukurkite lazerio aptikimo grandinę
- 4 žingsnis: pakeiskite išorinio maitinimo lazerį
- 5 veiksmas: įjunkite lazerį ir išbandykite aptikimo grandinę
- 6 veiksmas: prijunkite savo internetinę kamerą ir patikrinkite jos funkcionalumą
- 7 žingsnis: pertrauka
- 8 žingsnis: stebėkite lazerį naudodami programinę įrangą
- 9 veiksmas: sukurkite tinklalapį, kad būtų rodomas jūsų srautas
- 10 veiksmas: nustatykite el. Pašto įspėjimus
- 11 veiksmas: suaktyvinkite el. Pašto scenarijų, kai suveikia lazeris
- 12 veiksmas: sukurkite pagrindinį scenarijų, kad paleistumėte sistemą
- 13 žingsnis: Išvada
2025 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2025-01-13 06:57
Ačiū, kad patikrinote mano nurodymus. Pasibaigus šiam nurodymui, jūs sukursite aviečių pi lazerinę tripwire sistemą su el. Pašto įspėjimo funkcija, kuri parodyta vaizdo įraše.
Norėdami įvykdyti šį nurodymą, turėsite būti susipažinę su bendromis grandinėmis ir litavimu, žinoti, kaip naudotis duonos lenta, ir patogiai naudotis terminale ant pi. Taip pat bus naudinga turėti python patirties.
Šis projektas susideda iš trijų pagrindinių sistemų. Aviečių pi, lazerio trišakio grandinė ir stebėjimo kompiuteris. Mūsų tikslas yra naudoti avietę pi aptikti įtampos pasikeitimą lazerio trišakio grandinėje, o tada įspėti stebintį kompiuterį el. Pašto ir vaizdo įrašų srautu.
Pradėkime.
1 žingsnis: suapvalinkite reikiamus komponentus
Norėdami užbaigti šį projektą, jums reikės šių elementų.
- Bent vienas veikiantis „Raspberry Pi“. Šioje konstrukcijoje aš naudoju B modelio Pi modelį, kuriame veikia raspbian švokštimas. Esu tikras, kad ši pamoka veiks puikiai, jei naudojate raspbian jessie.
- Išorinis maitinimo šaltinis avietėms pi. Kai visa tai bus prijungta, mes pritrauksime daug srovės stiprio. Daug laiko praleidau diagnozuodamas, kad mano pirmasis šaltinis yra blogas maitinimo šaltinis. Įsitikinkite, kad turite stiprią galią, galinčią tiekti bent 2 amperus.
- Pigūs lazeriniai žymekliai. Savąjį radau šalia kasos degalinėje. Jei norite tikslaus lazerio, jį rasite čia. Etiketėje nurodytas 630–680 nm bangos ilgis. Nepriklausomai nuo to, kokį lazerį gausite, bus nustatyti kai kurie kiti konstrukcijos komponentai. Taigi įsitikinkite, kad jo etiketėje nurodomas jo bangos ilgis.
- Usb stiliaus internetinė kamera. Ši internetinė kamera turi reguliuojamą kojelę, leidžiančią gražiai išdėstyti fotoaparatą. Radau, kad USB kabelis, gautas kartu su kamera, buvo per trumpas mano programai, todėl radau pratęsimą ant monoprice.
-
Kažkoks „Raspberry pi“išardymo rinkinys, kad galėtumėte lengvai pasiekti procesoriaus kaiščius.
- Duonos lenta.
- Lituoklis.
- Maitinimo lentos jungiamieji laidai.
-
Grandinės komponentai. Padauginkite iš norimo išjungimo laidų kiekio.
- Vadovavo vienas dirbantis
- Vienas 100 omų rezistorius
- Vienas 1k rezistorius
- Vienas 10k rezistorius
- Vienas 200k rezistorius Tikrai tinka bet koks didelis rezistorius. Aš išbandžiau jį su 1M rezistoriumi ir viskas gerai. FK 10 tūkst. Buvo per maža.
- Vienas PNP tranzistorius PN: 2N4403-APCT-ND
- Vienas fotodiodas (suderinkite tai su lazerio bangos ilgiu) PN: PDB-C142-ND
Pridedu grandinės plokštės kicad failus, bet neperduosiu šios instrukcijos plokštės gamybos.
Viso šio projekto metu man pasirodė patogu naudoti šiuos pasirenkamus įrankius:
- Sinergijos diegimas aviečių pi. Jei nesate susipažinę, ši programinė įranga leis jums valdyti aviečių pi pelę ir klaviatūrą kitu kompiuteriu. Tai malonu, jei esate toks kaip aš ir patogiau naudotis kitu kompiuteriu. Tai taip pat yra programinė įranga, kurią turėtų turėti kiekvienas.
- USB centras. Kiekvienai internetinei kamerai, kurią norite naudoti, reikės vieno prievado.
- Įtampos matuoklis arba osciloskopas, jei turite.
- „MobaXterm“naudojimas norint valdyti aviečių pi ir manipuliuoti failais per ssh. Tai būtina turėti visiems, pakeltiems ant langų. Peržiūrėkite šią mokymo programą, kad nustatytumėte, kaip ją naudoti.
2 žingsnis: paimkite „Pi“ir paleiskite
Pi su minimaliais komponentais
Prieš pradedant fotografuoti lazerius, reikia sukurti kelis programinės įrangos sluoksnius. Norint turėti didžiausią sėkmės šansą, geriausia pradėti nuo švaraus šiferio. Norėdami tai padaryti, atjunkite nereikalingus elementus nuo „Pi“. Tai sumažins trikdžių tikimybę iš prijungto įrenginio.
Tada įsitikinkite, kad „Raspberry Pi“veikia ir veikia su naujausia programine įranga, terminale įvesdami šiuos duomenis
sudo apt-get atnaujinimas
Atnaujinus aviečių pi, laikas kitam žingsniui
3 žingsnis: sukurkite lazerio aptikimo grandinę
Sudėkite komponentus ant duonos lentos, kaip parodyta. Maitinkite duonos lentą naudodami 5 v išėjimą iš pi arba maitinimo šaltinį ant stalo. 1 paveiksle 5 V maitinimas yra prijungtas prie teigiamo duonos lentos bėgelio apatiniame kairiajame vaizdo kampe, o žemė - viršutiniame kairiajame kampe. Ši grandinė naudoja fotodiodą kaip jungiklį tranzistoriui suaktyvinti. Tranzistorius paverčia nedidelį fotodiodo įtampos pokytį į šiek tiek skaitmeninį signalą, kurį pi gali nuskaityti. Vėlesniuose žingsniuose taškas tarp 100 omų ir signalo diodų bus tas, kuriame mes imsime grandinę su pi.
-
1 pav. Grandinės lentos išdėstymo viršuje
-
2 pav. „Circuit“duonos lentos išdėstymo alternatyvus vaizdas
Jei norite švaresnės išvaizdos, pridedu lentelės kicad failus, kurie parodyti žemiau.
-
3 pav. Jutiklio plokštės vaizdas iš viršaus
-
4 pav. Jutiklio plokštė ISO
-
Oranžinė viela pakeičia momentinį mygtuką
-
Parodykite teigiamus ir neigiamus rezultatus
-
Šarnyras
-
Lizdinė jungtis
-
Surinktas rutulys ir lizdas
-
Veikiantis lazeris su sveiku spinduliu
-
Šviesa nesulaužta, o lemputė išjungta
-
Įsibrovėlis sulaužo šviesą, todėl lemputė užsidega
-
„mjpg-streamer“pavyzdžio išvestis
-
Duonos lentos išdėstymas su „PiCobler“
-
Teisingas konsolės išėjimas (rodomas naudojant „MobaXterm“)
-
Prijungtų failų ekrano kopija
- tavo_ip = "192.168.0.177"
- your_ip_optional_port = ": 8080"
- port_to_camera = ": 8081"
- send_email_username = "tavo el. pašto vartotojo vardas"
- send_email_password = "tavo slaptažodis"
-
Prijungtų failų ekrano kopija
4 žingsnis: pakeiskite išorinio maitinimo lazerį
Tolesniuose veiksmuose sukursite lazerinio žymeklio mazgą.
- Išardykite lazerinį žymeklį. Tai darydami atkreipkite dėmesį į akumuliatoriaus gnybtų padėtį lazerio spinduliuotės atžvilgiu.- Tada iš lazerio išjunkite akumuliatoriaus jungties spyruoklę ir momentinį mygtuką.- Lituokite vielos gabalėlį tarp gnybtų, kur buvo mygtukas. Dabar, kai lazeriui tiekiama energija, jis automatiškai įsijungs.- Dabar lituokite teigiamus ir neigiamus lazerio laidus. Jei naudojate tą patį lazerį iš dalių sąrašo, galite pamatyti žemiau esantį paveikslėlį, kad pamatytumėte litavimo taškus. Jei nesate, gali tekti patiems rasti litavimo taškus. Akumuliatoriaus orientaciją galite naudoti kaip teigiamą ar neigiamą laidą. Norėdami rasti paskutinį litavimo tašką, galite naudoti 5 V maitinimo šaltinį ir zonduoti grandinę dviem bandymo laidais. Sukūrę tinkamą grandinę, radote litavimo tašką ir lazeris užsidegs.
- Paskutinis žingsnis yra padaryti kryptinį lazerio tvirtinimo stulpą, kad jį būtų galima lengvai sureguliuoti taip, kad būtų nukreipta į lazerio talpyklą. Radau, kad dauguma „Lego bionicle“rinkinių yra puikus pigių kamuoliukų lizdo jungtyse šaltinis. Naudodami super klijus, priklijuokite vieną rutulinės jungties gabalą prie lazerinio žymeklio. Dabar lizdo jungtį galite pritvirtinti prie bet kokio paviršiaus ir įkišti lazerį.
5 veiksmas: įjunkite lazerį ir išbandykite aptikimo grandinę
Prijunkite lazerį prie duonos lentos. Teigiamą reikės prijungti prie 5 V ir įžeminti neigiamą laidą. Jei lazeris įsijungia puikiai, jei ne, dar kartą patikrinkite, ar multimetru turite tinkamą įtampą. Jei vis tiek neveikia, pabandykite pakeisti laidus, jei prijungtumėte atgal. Jei vis tiek neveikia, galbūt nesate litavę prie tinkamų trinkelių, grįžkite prie paskutinio veiksmo.
Kai turite lazerio spinduliuotę, laikas išbandyti aptikimo grandinę. Nukreipkite lazerį į fotodiodą. Šviesos diodas turėtų išjungti signalą, kad spindulys yra aktyvus. Mojuojate ranka per spindulį, o šviesos diodas turėtų įjungti signalą apie kelionę.
6 veiksmas: prijunkite savo internetinę kamerą ir patikrinkite jos funkcionalumą
Prijunkite savo internetinę kamerą prie USB prievado. Norėdami transliuoti vaizdo įrašą, turime gauti įrankį „mjpg-streamer“. Čia yra puiki pamoka, kaip tai padaryti. Įdiegę „mjpg-streamer“tinkamai. Pradėkite vaizdo transliaciją įvesdami šią komandą į terminalą.
cd /kur įdiegėte „mjpg-streamer“/„mjpg-streamer“
./mjpg_streamer -i "./input_uvc.so -y/dev/video0" -o "./output_http.so -w./www -p 8081"
Ši komanda sukurs 8081 prievado srautą, naudodama „video0“šaltinį. Jei norite kelių internetinių kamerų, dar kartą įveskite aukščiau pateiktą komandą, bet pakeiskite video0 į video1 ir 8081 į 8082. Aš tokiu būdu transliavau iki 3 internetinių kamerų ir pi nebuvo perkrautas.
Patikrinkite, ar ryšys veikia, atidarydami naršyklę kitame kompiuteryje ir įvesdami „ip-address-of-pi: 8081“arba „pi“tiesiog įvesdami localhost: 8081. Jei nežinote savo „ip“, įveskite terminalą
ifconfig
Jei viskas veikia, turėtumėte pamatyti pagrindinį „mpg-streamer“puslapį. Spustelėkite srauto skirtuką, kad pamatytumėte savo internetinės kameros srautą. Žemiau yra sąsajos ekrano kopija.
Antrą kartą atlikdamas šią mokymo programą galėjau pasiekti pagrindinį „mjpg-streamer“puslapį, bet nemačiau srauto. Norėdami tai išspręsti, perskaičiau šį įrašą (nuoroda dabar neveikia), ypač dalį apie YUYV pikselių formatą, jei susiduriate su tuščiu srautu, taip pat turėtumėte pasitarti su juo.
7 žingsnis: pertrauka
Gerai, todėl šiuo metu turėtume paruošti savo aviečių pi. Mūsų lazeris buvo modifikuotas išorinei energijai. Mūsų aptikimo grandinė buvo sukonstruota ir jūs patvirtinote, kad kai lazerio spindulys patenka į fotodiodą, šviesos diodas išsijungia, o kai pertraukiate spindulį, jis turi įsijungti. Galiausiai turėtumėte prijungti savo internetinę kamerą ir funkcionaliai transliuoti.
Dabar atėjo laikas viską sujungti. Pradėkime paprastai, bandydami aptikti lazerio spindulio suveikimą programine įranga.
Prijunkite aptikimo grandinę prie duonos lentos, kaip parodyta. Pasiruošdami kitam žingsniui, būtinai prijunkite jutiklio signalo laidą prie 25 kaiščio. Ištraukiamas rezistorius nėra pasirenkamas. Aš turėjau 10k klojimo aplink, bet bet rezistorius turėtų daryti.
8 žingsnis: stebėkite lazerį naudodami programinę įrangą
Parašykime trumpą programą, kad išklausytume lazerio signalą ir paskelbtume tą išvestį į terminalą. Kodą galite atsisiųsti kaip priedą.
Tikriausiai turėsite įdiegti šio scenarijaus priklausomybes. „Python“ir „gpio“modulis. Norėdami juos įdiegti, įveskite
sudo apt-get install python-rpi.gpio python3-rpi.gpio
Sėkmingai įdiegę „python“, atsisiųskite pridėtą „python“scenarijų, pavadintą read_pin.py, ir paleiskite
cd /katalogą, į kurį įdėjote failą /chmod 777 read_pin.py
Chmod komanda suteiks scenarijui leidimą paleisti. Tada bėgdami patikrinkite, ar viskas gerai ir nemalonu
sudo python3 read_pin.py
Jei viskas gerai, turėtumėte pamatyti konsolės išvestį, kaip parodyta žemiau. Norėdami išeiti iš „Python“scenarijaus, įveskite
Ctrl-C
Pasukite ranką priešais lazerio spindulį ir konsolėje turėtumėte matyti tam tikrą išėjimą, įspėjantį, kad spindulys buvo sulaužytas. Nesivaržykite žaisti su scenarijumi, kad jūsų sistema veiktų skirtingai.
9 veiksmas: sukurkite tinklalapį, kad būtų rodomas jūsų srautas
Dabar turime nustatyti internetinės kameros peržiūros sąsają. Norėdami tai padaryti, turėsite įdiegti „apache“žiniatinklio serverį. Yra daug pamokų, kaip ją nustatyti. Bet čia yra trumpas sąrašas su minimalia konfigūracija.
sudo apt-get įdiegti apache2
Įdiegę turėtumėte sugebėti įvesti naršyklę į „Raspberry pi“
vietinis šeimininkas
Turėtumėte pamatyti „apache“pasveikinimo puslapį. Jei pirmą kartą nustatote žiniatinklio serverį, tikriausiai norėsite sukonfigūruoti savo pi, kad jis turėtų statinį IP adresą, kad jūsų maršrutizatorius visada priskirtų tinkamą IP, jei atliksite maitinimo ciklą. Jei norite peržiūrėti savo apsaugos sistemą iš kitos vietos, turėsite nustatyti maršrutizatoriaus prievadų peradresavimą. Praėjo nemažai laiko, bet taip pat manau, kad turėsite persiųsti visus prievadus, kuriuose taip pat yra internetinė kamera. Yra daug vadovėlių, apimančių šias procedūras. Atminkite, kad kiekvienas gali matyti jūsų internetinę kamerą, jei nuspręsite nustatyti maršrutizatoriaus prievadų persiuntimą.
Pridėti failai yra tinklalapių pavyzdžiai, kuriuos galite naudoti norėdami nustatyti savo svetainę. Turėsite pakeisti html failo plėtinį, nes jie neleis man jo įkelti. Tada įdėkite failus į savo www aplanką, iškviestą apache konfigūracijos faile. Numatytoji vieta yra
cd /var /www
Jei norite pakeisti vietą, kurioje žiniatinklio serveris ieško jūsų html failų, galite redaguoti svetainėse įgalintą failą įvesdami
sudo nano/etc/apache2/sites-enabled/000-default
Pakeiskite bet kurį/var/www/egzempliorių į norimą vietą. Aš įdėjau savo/home/pi/Desktop/www/
Kai turėsite html failus žiniatinklio aplanke, įveskite localhost naršyklėje arba pi ip adresą iš kito kompiuterio. Turėtumėte pamatyti kažką panašaus.
SALDAS!
10 veiksmas: nustatykite el. Pašto įspėjimus
Geri dalykai vyksta! Leiskite mums pasisekti, bandydami išsiųsti įspėjimą el. Paštu iš pi į iš anksto nustatytą el. Pašto adresą. Pridėtas „Python“scenarijus sukurs jūsų el. Laišką, kurį norite išsiųsti, prisijungs prie el. Pašto teikėjo, pvz., „Gmail“, ir išsiųs el. Laišką naudodami el. Pašto teikėją. Tai pasiekiama naudojant „smtp“paketą „python“. Siūlau sukurti netikrą el. Pašto adresą tik sau apsaugos sistemai, nes turėsime sumažinti jūsų „Gmail“paskyros saugumą, kad „smtp“paketas veiktų.
Norėdami sėkmingai perduoti, turėsite modifikuoti scenarijų keliose vietose. Tai labai komentuojama ir jūsų patogumui terminale bus sukurta daug išėjimų.
Dalykai, kuriuos turėsite pakeisti, bus
jūsų_ip_optional_port greičiausiai bus tuščias, nebent jūsų apache serveris neveiks kitame prievade nei numatytasis 80. Aš jau turėjau serverį, kuriame veikia 80, todėl nustatiau, kad mano pi veiktų 8080. Port_to_camera bus tas prievadas, kuriam nurodėte savo fotoaparatą paleiskite naudodami „mjpeg streamer“.
Pakeitę šiuos kintamuosius scenarijaus pradžioje, paleiskite programą, įvesdami šiuos duomenis į terminalą.
cd /aplankas, kuriame įdėjote scenarijų /
sudo python3 send_mail.py
Jei žvaigždės tinkamai sulygiuotos ir visi kintamieji yra teisingi, turėtumėte gauti el. Laišką, panašų į žemiau esantį.
Yra daug vietų, kur šis scenarijus gali nepavykti. Nenusiminkite, jei pirmą kartą nepavyks. Naudokite scenarijaus derinimo taškus, kad susiaurintumėte problemines sritis ir sutelktumėte dėmesį į vieną problemą vienu metu.
11 veiksmas: suaktyvinkite el. Pašto scenarijų, kai suveikia lazeris
Dabar, kai pi gali siųsti el. Laiškus, automatizuokime juos taip, kad kiekvieną kartą suveikus lazeriui gautume el. Laišką. Atsisiųskite pridėtą failą, kuris yra modifikuota „read_pin.py“versija, kuri suteikia naują funkciją pašto scenarijui paleisti. Pagrindinė papildoma eilutė yra tokia
sm_pid = os.spawnlp (os. P_NOWAIT, "/usr/bin/python3", "python3", "/home/pi/Desktop/security/send_mail.py")
Ši eilutė paleis pašto siuntimo scenarijų lygiagrečiai su lazerio jutimo scenarijumi. Tai pageidautina, nes laiško siuntimo scenarijus užtrunka kelias sekundes ir blokuoja lazerinio jutimo scenarijaus vykdymą, kol el. Laiškas nebuvo išsiųstas. Tai nėra problema vienai fotoaparato sistemai, tačiau jei turėtumėte kelias kameras, norėtumėte aptikti lazerio išjungimą 1 fotoaparate, net jei 2 kamera sukėlė el. Pašto įvykį. Kintamajame sm_pid bus šios komandos paleisto proceso pidas. Tikriname, ar nėra šio ID, jei el. Pašto aktyviklis vėl iškviečiamas, jei jis yra, el. Laiškas vis dar siunčiamas, todėl ignoruojame įvykį. Jei jo nėra, tai greičiausiai naujas įvykis ir išsiųstas el.
Bėgdami patikrinkite, ar viskas veikia
cd /katalogas, kuriame įdėjote failą /
chmod 777 read_pin_with_mail.py
sudo python3 read_pin_with_mail.py
Sulaužę lazerio spindulį, turėtumėte gauti el. Laišką su momentine nuotrauka, paimta iš internetinės kameros.
12 veiksmas: sukurkite pagrindinį scenarijų, kad paleistumėte sistemą
Šiuo metu projektas dažniausiai baigtas. Paskutinis žingsnis yra supaprastinti sistemos paleidimą paskutiniu scenarijumi. Jis paleis visas paprogrames ir nustatys internetinę kamerą su vienu scenarijumi. Pridėtą failą galima paleisti paleidžiant redaguojant /etc/rc.local failą. Turite pakeisti failo plėtinį ir, jei įdėsite scenarijus į kitą vietą, gali tekti redaguoti scenarijų, kad būtų įtraukti tinkami keliai.
13 žingsnis: Išvada
Na tai tiek. Tikiuosi, kad jums patiko ši pamoka! Praneškite man komentaruose, jei turite kokių nors klausimų ar jums reikia išsamesnės informacijos bet kurioje srityje. Tylėk toliau!