Inhoudsopgave:

Raspberry Pi laserbeveiligingssysteem - Ajarnpa
Raspberry Pi laserbeveiligingssysteem - Ajarnpa

Video: Raspberry Pi laserbeveiligingssysteem - Ajarnpa

Video: Raspberry Pi laserbeveiligingssysteem - Ajarnpa
Video: Alarmsysteem - Raspberry Pi 2024, November
Anonim
Image
Image
Afbeelding
Afbeelding

Bedankt voor het bekijken van mijn instructable. Aan het einde van deze instructable bouw je het Raspberry Pi-laser-tripwire-systeem met e-mailwaarschuwingsfunctionaliteit die in de video wordt getoond.

Om deze instructable te voltooien, moet je bekend zijn met algemene circuits en solderen, weten hoe je een breadboard moet gebruiken en vertrouwd zijn met het gebruik van de terminal op de pi. Ervaring met Python zal ook nuttig zijn.

Dit project bestaat uit drie hoofdsystemen. De Raspberry Pi, het laser tripwire circuit en een observerende computer. Ons doel is om de Raspberry Pi te gebruiken om een spanningsverandering op het lasertripwire-circuit te detecteren en vervolgens een observerende computer te waarschuwen in de vorm van een e-mail en videostream.

Laten we beginnen.

Stap 1: Vereiste componenten afronden

Om dit project te voltooien, hebt u de volgende items nodig.

  1. Ten minste één operationele Raspberry Pi. In deze build heb ik een model B-stijl Pi gebruikt met raspbian wheezy. Ik weet zeker dat deze tutorial prima zal werken als je raspbian jessie gebruikt.
  2. Een externe stroombron voor de Raspberry Pi. We zullen een aanzienlijke hoeveelheid stroomsterkte trekken zodra dit alles is aangesloten. Ik heb veel tijd besteed aan het diagnosticeren van een waardeloze voeding als mijn bron van problemen tijdens mijn eerste build. Zorg ervoor dat je een stevige krachtbron hebt die minimaal 2 ampère kan leveren.
  3. Een goedkope laserpointer. Ik vond de mijne naast de kassa bij een tankstation. Als u de exacte laser wilt, kunt u deze hier vinden. Op het label staat 630-680 nm voor de golflengte. Welke laser u ook krijgt, bepaalt enkele van de andere componenten in de build. Zorg er dus voor dat het label de golflengte aangeeft.
  4. Een webcam in usb-stijl. Deze webcam heeft een verstelbare voet waarmee je de camera mooi kunt positioneren. Ik vond dat de usb-kabel die bij de webcam zat te kort was voor mijn toepassing, dus vond ik een verlenging op monoprice.
  5. Een soort breakout-kit voor de Raspberry Pi, zodat je gemakkelijk toegang hebt tot de pinnen op de processor.

    Afbeelding
    Afbeelding
    Afbeelding
    Afbeelding
  6. Een broodplank.
  7. Een soldeerbout.
  8. Overbruggingsdraden voor het breadboard.
  9. Circuitcomponenten. Vermenigvuldig met het aantal tripdraden dat u wilt.

    • Een werkende led
    • Een weerstand van 100 ohm
    • Een weerstand van 1k
    • Een weerstand van 10k
    • Een weerstand van 200k Werkelijk elke grote weerstand is voldoende. Ik heb het getest met een weerstand van 1M en het werkte prima. Ter info 10k was te klein.
    • Eén PNP-transistor PN:2N4403-APCT-ND
    • Eén fotodiode (pas deze aan op uw lasergolflengte) PN:PDB-C142-ND

Ik zal de kicad-bestanden voor de printplaat bijvoegen, maar zal niet ingaan op de productie van het bord in deze instructable.

In de loop van dit project vond ik de volgende optionele hulpmiddelen handig:

  1. Synergie installeren op de Raspberry Pi. Voor het geval u niet bekend bent, kunt u met deze software de muis en het toetsenbord van de raspberry pi met een andere computer bedienen. Dit is fijn als je net als ik bent en je meer op je gemak voelt op een andere computer. Dit is ook software die iedereen zou moeten hebben.
  2. Een usb-hub. Voor elke webcam die u wilt gebruiken, heeft u één poort nodig.
  3. Spanningsmeter of oscilloscoop als je die hebt.
  4. MobaXterm gebruiken om de Raspberry Pi te besturen en bestanden te manipuleren via ssh. Het is een must-have voor iedereen die op ramen is geheven. Bekijk deze zelfstudie om u voor te bereiden om het te gebruiken.

Stap 2: Zet de Pi aan de gang

  • Afbeelding
    Afbeelding

    De pi met minimale componenten aangesloten

  • Voordat we lasers kunnen schieten, moeten er verschillende lagen software worden geconstrueerd. Om de meeste kans op succes te hebben, is het een goede gewoonte om met een schone lei te beginnen. Om dit te doen, ontkoppel alle onnodige items van de Pi. Dit verkleint de kans op interferentie van een aangesloten apparaat.

    Zorg er vervolgens voor dat uw Raspberry Pi werkt met de nieuwste software door het volgende in de terminal in te voeren:

    sudo apt-get update

    Met de raspberry pi up-to-date is het tijd voor de volgende stap

    Stap 3: Maak het laserdetectiecircuit

    Plaats de componenten op het breadboard zoals afgebeeld. Voorzie het breadboard van stroom met behulp van de 5v-uitgang van de pi of een benchtop-voeding. In figuur 1 is de 5v-voeding aangesloten op de positieve breadboard-rail linksonder in de afbeelding en de grond linksboven. Deze schakeling gebruikt de fotodiode als schakelaar om de transistor te triggeren. De transistor zet de kleine spanningsverandering in de fotodiode om in een enigszins digitaal signaal dat de pi kan lezen. Voor alle volgende stappen zal het punt tussen de 100ohm en de signaal-led zijn waar we het circuit met de pi bemonsteren.

    • Afbeelding
      Afbeelding

      Fig 1: Circuit breadboard layout top

    • Afbeelding
      Afbeelding

      Fig 2: Alternatieve weergave circuit breadboard layout

    Als je een schoner uiterlijk wilt, heb ik de kicad-bestanden bijgevoegd voor het bord dat hieronder wordt weergegeven.

    • Afbeelding
      Afbeelding

      Fig 3: Bovenaanzicht sensorkaart

    • Afbeelding
      Afbeelding

      Fig 4: Sensorkaart ISO

    • Stap 4: wijzig de laser voor externe voeding

      In de volgende stappen bouwt u de laserpointerconstructie.

      - Demonteer de laserpointer. Let daarbij op de oriëntatie van de accupolen ten opzichte van de laserzender.- Desoldeer vervolgens de accuverbindingsveer en de kortstondige drukknop van de laser.- Soldeer een stuk draad tussen de klemmen waar de knop zat. Als er nu stroom aan de laser wordt geleverd, wordt deze automatisch ingeschakeld. Soldeer nu de positieve en negatieve draden aan de laser. Als u dezelfde laser uit de onderdelenlijst gebruikt, kunt u de onderstaande afbeelding gebruiken om de soldeerpunten te zien. Als dat niet het geval is, moet u mogelijk zelf de soldeerpunten zoeken. U kunt de richting van de batterij gebruiken als een hint voor de positieve of negatieve leiding. Om het laatste soldeerpunt te vinden, kunt u een 5v-voeding gebruiken en het circuit met twee meetsnoeren doorzoeken. Als je de juiste schakeling hebt gemaakt, heb je het soldeerpunt gevonden en gaat de laser branden.

      • Afbeelding
        Afbeelding

        De oranje draad vervangt de tijdelijke drukknop

      • Afbeelding
        Afbeelding

        Positieve en negatieve leads weergeven

      - De laatste stap is het maken van een richtbare montagepaal voor de laser, zodat deze eenvoudig kan worden aangepast om op de laserhouder te richten. Ik heb ontdekt dat de meeste lego-bionicle-kits een uitstekende bron zijn voor goedkope kogelgewrichten. Lijm een stuk van het kogelgewricht met superlijm op de laserpointer. Nu kunt u de mofverbinding op elk oppervlak monteren en de laser vastklikken.

      • Afbeelding
        Afbeelding

        Kogelgewricht

      • Afbeelding
        Afbeelding

        Dopverbinding:

      • Afbeelding
        Afbeelding

        Kogel en mof gemonteerd

      • Stap 5: Schakel de laser in en test het detectiecircuit

        Sluit de laser aan op uw breadboard. De positieve moet worden aangesloten op 5v en de negatieve draad aarden. Als de laser goed wordt ingeschakeld, controleer dan nogmaals of je de juiste spanning hebt met een multimeter. Als het nog steeds niet werkt, probeer dan de draden te verwisselen voor het geval je het achterstevoren hebt aangesloten. Als het nog steeds niet werkt, heb je misschien niet op de juiste pads gesoldeerd, ga dan terug naar de laatste stap.

        • Afbeelding
          Afbeelding

          Werkende laser met een gezonde straal

        Zodra u de laserstraal hebt, is het tijd om het detectiecircuit te testen. Richt de laser op de fotodiode. De LED moet uitgaan om aan te geven dat de straal actief is. Zwaai met je hand door de straal en de LED moet gaan branden om een trip aan te geven.

        • Afbeelding
          Afbeelding

          De straal is niet gebroken en de led is uit

        • Afbeelding
          Afbeelding

          Indringer breekt de straal waardoor de led gaat branden

        • Stap 6: sluit uw webcam aan en test de functionaliteit ervan

          Sluit je webcam aan op de usb-poort. Om de video te streamen, hebben we het hulpprogramma mjpg-streamer nodig. Hier is een geweldige tutorial over hoe je precies dat kunt doen. Zodra je mjpg-streamer goed hebt geïnstalleerd. Begin met het streamen van video door de volgende opdracht in de terminal in te voeren.

          cd /waar je mjpg-streamer/mjpg-streamer hebt geïnstalleerd

          ./mjpg_streamer -i "./input_uvc.so -y /dev/video0" -o "./output_http.so -w./www -p 8081"

          Met deze opdracht wordt een stream op poort 8081 ingesteld met behulp van de video0-bron. Als je meerdere webcams wilt, voer dan de bovenstaande opdracht opnieuw in, maar verander video0 in video1 en 8081 in 8082. Ik heb op deze manier tot 3 webcams gestreamd en de pi werd niet overbelast.

          Test of de verbinding werkt door een browser op een andere computer te openen en ip-address-of-pi:8081 in te voeren of op de pi kunt u gewoon localhost:8081 invoeren. Als u uw ip van de pi niet weet, voert u het volgende in de terminal in:

          ifconfig

          Als alles werkt, zou je de startpagina van mpg-streamer moeten zien. Klik op het streamtabblad om uw webcamstream te zien. Hieronder ziet u een screenshot van de interface.

          • Afbeelding
            Afbeelding

            mjpg-streamer voorbeelduitvoer

          Toen ik deze tutorial voor de tweede keer deed, kreeg ik toegang tot de startpagina van mjpg-streamer, maar ik zag geen stream. Om dit op te lossen heb ik dit bericht gelezen (link is nu verbroken), met name het gedeelte over het YUYV-pixelformaat, als je een lege stream tegenkomt, moet je deze ook raadplegen.

          Stap 7: Pauze

          Oké, dus op dit punt zouden we onze Raspberry Pi in gebruik moeten hebben. Onze laser is aangepast voor externe voeding. Ons detectiecircuit is geconstrueerd en u hebt bevestigd dat wanneer de laserstraal de fotodiode raakt, de led uitgaat en wanneer u de straal verbreekt, moet de led aan gaan. Ten slotte moet uw webcam zijn aangesloten en functioneel streamen.

          Nu is het tijd om alles op een rijtje te zetten. Laten we eenvoudig beginnen door te proberen de uitschakeling van de laserstraal te detecteren met software.

          Sluit het detectiecircuit aan op het breadboard zoals afgebeeld. Zorg ervoor dat u de sensorsignaaldraad aansluit op pin 25 ter voorbereiding op de volgende stap. De pull-down weerstand is niet optioneel. Ik had een 10k liggen, maar elke weerstand zou het moeten doen.

          • Afbeelding
            Afbeelding

            Breadboard-indeling met PiCobler

          • Stap 8: Bewaak de laser met software

            Laten we een kort programma schrijven om naar het lasersignaal te luisteren en die uitvoer naar de terminal sturen. U kunt de code als bijlage downloaden.

            U zult waarschijnlijk de afhankelijkheden voor dit script moeten installeren. Python en de gpio-module. Om deze te installeren voer

            sudo apt-get install python-rpi.gpio python3-rpi.gpio

            Zodra u een succesvolle installatie van python heeft, downloadt u het bijgevoegde python-script met de naam read_pin.py en voert u het uit

            cd /directory waar u het bestand/chmod 777 read_pin.py. plaatst

            De opdracht chmod geeft het script toestemming om uit te voeren. Test vervolgens of alles in orde is door te rennen

            sudo python3 read_pin.py

            Als alles goed gaat, zou je een console-uitvoer moeten zien zoals hieronder weergegeven. Om het python-script af te sluiten, typt u:

            Ctrl-C

          • Afbeelding
            Afbeelding

            Correcte console-output (weergegeven met MobaXterm)

          Zwaai met uw hand voor de laserstraal en u zou een uitvoer op de console moeten zien die u waarschuwt dat de straal is onderbroken. Voel je vrij om met het script te spelen om je systeem op verschillende manieren te laten presteren.

          Stap 9: Maak een webpagina om uw stream weer te geven

          Nu moeten we een interface voor het bekijken van een webcam instellen. Voor deze stap moet u de apache-webserver installeren. Er zijn tal van tutorials die er zijn over het opzetten van een. Maar hier is de korte lijst met minimale configuratie.

          sudo apt-get install apache2

          eenmaal geïnstalleerd zou je in je browser moeten kunnen typen op de raspberry pi

          localhost

          Je zou de welkomstpagina van apache moeten zien. Als dit de eerste keer is dat je een webserver instelt, wil je waarschijnlijk je pi zo configureren dat deze een statisch ip-adres heeft, zodat je router altijd het juiste ip zal toewijzen als je een power cycle uitvoert. Als u uw beveiligingssysteem vanaf een andere locatie wilt bekijken, moet u port forwarding instellen op uw router. Het is een tijdje geleden, maar ik denk ook dat je alle poorten met een webcam moet doorsturen. Er zijn tal van tutorials die deze procedures behandelen. Houd er rekening mee dat iedereen uw webcam kan zien als u ervoor kiest om port forwarding in te stellen op uw router.

          De bijgevoegde bestanden zijn voorbeeldwebpagina's die u kunt gebruiken om uw website in te stellen. U moet de bestandsextensie van het html-bestand wijzigen, omdat ik het niet kan uploaden. Plaats vervolgens de bestanden in uw www-map die wordt genoemd in uw apache-configuratiebestand. De standaardlocatie is

          cd /var/www

          Als u de locatie wilt wijzigen waar de webserver naar uw html-bestanden zoekt, kunt u uw voor sites ingeschakelde bestand bewerken door:

          sudo nano /etc/apache2/sites-enabled/000-default

          Wijzig elke instantie van /var/www/ naar de gewenste locatie. Ik heb de mijne in /home/pi/Desktop/www/ gezet

          Zodra u de html-bestanden in de webmap hebt, voert u localhost in de browser in of het ip-adres van de pi van een andere computer. Je zou zoiets moeten zien.

          • Afbeelding
            Afbeelding

            Screenshot van de bijgevoegde bestanden in werking

          SEEEEET!

          Stap 10: E-mailwaarschuwingen instellen

          Er gebeuren goede dingen! Laten we ons geluk beproeven door te proberen een e-mailwaarschuwing van de pi naar een vooraf gedefinieerd e-mailadres te sturen. Het bijgevoegde python-script bouwt uw e-mail op die u wilt verzenden, maakt verbinding met een e-mailprovider zoals Gmail en verzendt de e-mail met behulp van de e-mailprovider. Dit wordt bereikt met behulp van het smtp-pakket van python. Ik stel voor dat je een dummy-e-mailadres maakt voor je beveiligingssysteem, omdat we de beveiliging van je gmail-account moeten verminderen om het smtp-pakket te laten werken.

          U zult het script op verschillende plaatsen moeten wijzigen om een succesvolle verzending te krijgen. Het is zwaar becommentarieerd en zal voor uw gemak veel outputs op de terminal produceren.

          Dingen die je moet veranderen zijn:

          • your_ip = "192.168.0.177"
          • your_ip_Optional_port = ":8080"
          • port_to_camera = ":8081"
          • send_email_username = "uw e-mail gebruikersnaam"
          • send_email_password = "uw wachtwoord"

          your_ip_ optional_port zal hoogstwaarschijnlijk leeg zijn, tenzij je apache-server op een andere poort draait dan de standaard 80. Ik had al een server die op 80 draaide, dus ik heb mijn pi ingesteld om op 8080 te draaien. De port_to_camera zal de poort zijn waarop je je camera opgeeft draaien op het gebruik van mjpeg-streamer.

          Nadat u deze variabelen aan het begin van het script hebt gewijzigd, voert u het programma uit door het volgende in de terminal in te voeren.

          cd /map waar je het script plaatst/

          sudo python3 send_mail.py

          Als de sterren correct zijn uitgelijnd en alle variabelen correct zijn, zou u een e-mail moeten ontvangen die lijkt op die hieronder.

          • Afbeelding
            Afbeelding

            Screenshot van de bijgevoegde bestanden in werking

          Er zijn veel plaatsen waar dit script kan mislukken. Raak niet gefrustreerd als het de eerste keer niet lukt. Gebruik de foutopsporingspunten in het script om de probleemgebieden te verfijnen en focus vervolgens op één probleem tegelijk.

          Stap 11: Activeer e-mailscript wanneer laser wordt geactiveerd

          Nu de pi in staat is om e-mails te verzenden, laten we het automatiseren zodat elke keer dat de laser wordt geactiveerd, we een e-mail krijgen. Download het bijgevoegde bestand dat een aangepaste versie is van read_pin.py die een nieuwe functie bevat om het mailscript te starten. De belangrijkste extra regel is de volgende:

          sm_pid = os.spawnlp(os. P_NOWAIT, "/usr/bin/python3", "python3", "/home/pi/Desktop/security/send_mail.py")

          Deze regel start het script voor het verzenden van e-mail parallel met het script voor laserdetectie. Dit is wenselijk omdat het script voor het verzenden van e-mail een paar seconden nodig heeft om te voltooien en het zou voorkomen dat het laserdetectiescript wordt uitgevoerd totdat de e-mail is verzonden. Dit is geen probleem voor een systeem met één camera, maar als u meerdere camera's had, zou u een lasertrip op camera 1 willen detecteren, zelfs als camera 2 een e-mailgebeurtenis heeft geactiveerd. De sm_pid-variabele bevat de pid van het proces dat door deze opdracht wordt gestart. We controleren op deze id als de e-mailtrigger opnieuw wordt aangeroepen, als deze bestaat, wordt de e-mail nog steeds verzonden, dus negeren we de gebeurtenis. Als het niet bestaat, is dit waarschijnlijk een nieuwe gebeurtenis en wordt er een e-mail verzonden.

          Test of alles werkt door te rennen

          cd /directory waar u het bestand/ plaatst

          chmod 777 read_pin_with_mail.py

          sudo python3 read_pin_with_mail.py

          Wanneer u de laserstraal verbreekt, zou u een e-mail moeten ontvangen met de momentopname van de webcam.

          Stap 12: Maak een masterscript om het systeem te starten

          Op dit punt is het project grotendeels klaar. Een laatste stap is om het opstarten van het systeem te vereenvoudigen met een laatste script. Het zal alle subprogramma's starten en de webcam instellen met één script. Het bijgevoegde bestand kan bij het opstarten worden gestart door uw /etc/rc.local-bestand te bewerken. U moet de bestandsextensie wijzigen en mogelijk moet u het script bewerken om de juiste paden op te nemen als u uw scripts op een andere locatie plaatst.

          Stap 13: Conclusie

          Nou dat is het. Ik hoop dat je genoten hebt van deze instructable! Laat het me weten in de comments als je vragen hebt of meer gedetailleerde informatie nodig hebt op een bepaald gebied. Blijven knutselen!

          • Afbeelding
            Afbeelding

    Aanbevolen: