„Raspberry Pi“lazerio apsaugos sistema: 13 žingsnių (su nuotraukomis)
„Raspberry Pi“lazerio apsaugos sistema: 13 žingsnių (su nuotraukomis)
Anonim
Image
Image
Vaizdas
Vaizdas

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ų.

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. Kažkoks „Raspberry pi“išardymo rinkinys, kad galėtumėte lengvai pasiekti procesoriaus kaiščius.

    Vaizdas
    Vaizdas
    Vaizdas
    Vaizdas
  6. Duonos lenta.
  7. Lituoklis.
  8. Maitinimo lentos jungiamieji laidai.
  9. 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:

  1. 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.
  2. USB centras. Kiekvienai internetinei kamerai, kurią norite naudoti, reikės vieno prievado.
  3. Įtampos matuoklis arba osciloskopas, jei turite.
  4. „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

  • Vaizdas
    Vaizdas

    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.

    • Vaizdas
      Vaizdas

      1 pav. Grandinės lentos išdėstymo viršuje

    • Vaizdas
      Vaizdas

      2 pav. „Circuit“duonos lentos išdėstymo alternatyvus vaizdas

    Jei norite švaresnės išvaizdos, pridedu lentelės kicad failus, kurie parodyti žemiau.

    • Vaizdas
      Vaizdas

      3 pav. Jutiklio plokštės vaizdas iš viršaus

    • Vaizdas
      Vaizdas

      4 pav. Jutiklio plokštė ISO

    • 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.

      • Vaizdas
        Vaizdas

        Oranžinė viela pakeičia momentinį mygtuką

      • Vaizdas
        Vaizdas

        Parodykite teigiamus ir neigiamus rezultatus

      - 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į.

      • Vaizdas
        Vaizdas

        Šarnyras

      • Vaizdas
        Vaizdas

        Lizdinė jungtis

      • Vaizdas
        Vaizdas

        Surinktas rutulys ir lizdas

      • 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.

        • Vaizdas
          Vaizdas

          Veikiantis lazeris su sveiku spinduliu

        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ę.

        • Vaizdas
          Vaizdas

          Šviesa nesulaužta, o lemputė išjungta

        • Vaizdas
          Vaizdas

          Įsibrovėlis sulaužo šviesą, todėl lemputė užsidega

        • 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.

          • Vaizdas
            Vaizdas

            „mjpg-streamer“pavyzdžio išvestis

          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.

          • Vaizdas
            Vaizdas

            Duonos lentos išdėstymas su „PiCobler“

          • 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

          • Vaizdas
            Vaizdas

            Teisingas konsolės išėjimas (rodomas naudojant „MobaXterm“)

          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.

          • Vaizdas
            Vaizdas

            Prijungtų failų ekrano kopija

          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

          • 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"

          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į.

          • Vaizdas
            Vaizdas

            Prijungtų failų ekrano kopija

          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!

          • Vaizdas
            Vaizdas