{"id":65601,"date":"2022-08-28T23:06:52","date_gmt":"2022-08-29T04:06:52","guid":{"rendered":"https:\/\/blogging-techies.com\/sw\/diy-pan-and-tilt-network-security-cam-med-raspberry-pi\/"},"modified":"2022-08-28T23:06:52","modified_gmt":"2022-08-29T04:06:52","slug":"diy-pan-and-tilt-network-security-cam-med-raspberry-pi","status":"publish","type":"post","link":"https:\/\/blogging-techies.com\/sw\/diy-pan-and-tilt-network-security-cam-med-raspberry-pi\/","title":{"rendered":"DIY Pan and Tilt Network Security Cam med Raspberry Pi"},"content":{"rendered":"<div>\n<p>L\u00e4r dig hur du g\u00f6r en panorerings- och lutningskamera som kan ses p\u00e5 distans med en Raspberry Pi.  Detta projekt kan slutf\u00f6ras p\u00e5 en morgon med bara de enklaste delarna.  H\u00e4r \u00e4r slutresultatet:<\/p>\n<h2 id=\"what-you-need\"><span class=\"ez-toc-section\" id=\"Vad_du_behover\"><\/span>  Vad du beh\u00f6ver<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>  Raspberry Pi 2 eller 3 med Micro SD-kort Arduino UNO eller liknande 2 x mikro- eller minihobbyservon USB-webbkamera Hane till hane kopplingskablar hane till hona kopplingstr\u00e5dar Diverse dragkedjor  <\/p>\n<h2 id=\"building-the-security-camera\"><span class=\"ez-toc-section\" id=\"Bygger_sakerhetskameran\"><\/span> Bygger s\u00e4kerhetskameran<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>F\u00e4st ett servohorn (de sm\u00e5 plastformarna) p\u00e5 varje servo med den medf\u00f6ljande skruven.  Den speciella formen spelar ingen roll, \u00e4ven om ju st\u00f6rre desto b\u00e4ttre.  Dra inte \u00e5t skruven f\u00f6r h\u00e5rt.<\/p>\n<p>Anv\u00e4nd nu blixtl\u00e5s f\u00f6r att f\u00e4sta en servo till den andra i r\u00e4t vinkel.  En av dessa kommer att vara panorering (v\u00e4nster till h\u00f6ger), medan den andra kommer att lutas (upp och ner).  Det spelar ingen roll vem som g\u00f6r vad, det kan justeras i koden.<\/p>\n<figure>\n<\/figure>\n<p>F\u00e4st slutligen din webbkamera till en av servon.  Du kan anv\u00e4nda dragkedjor f\u00f6r detta, \u00e4ven om min webbkamera kom med en kl\u00e4mma skruvad i botten \u2014 jag tog bort denna och anv\u00e4nde skruven f\u00f6r att h\u00e5lla den mot hornet.  F\u00f6r stabilitet kanske du vill montera hela riggen i en l\u00e5da eller l\u00e5da.  En enkel kartong g\u00f6r susen ganska bra.  Du kan sk\u00e4ra ett snyggt fyrkantigt h\u00e5l och montera en servo i j\u00e4mnh\u00f6jd med ytan, men det r\u00e4cker med en dragkedja.<\/p>\n<figure>\n<\/figure>\n<h2 id=\"a-word-about-webcams\"><span class=\"ez-toc-section\" id=\"Ett_ord_om_webbkameror\"><\/span>  Ett ord om webbkameror<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Alla USB-webbkameror \u00e4r inte skapade p\u00e5 samma s\u00e4tt.  Anslut din webbkamera till USB-porten p\u00e5 din Pi och k\u00f6r det h\u00e4r kommandot:<\/p>\n<pre>lsusb<\/pre>\n<p>Detta kommando visar information om alla USB-enheter som \u00e4r anslutna till Pi.  Om din webbkamera inte \u00e4r listad h\u00e4r, kanske du vill prova en USB-hubb med str\u00f6mf\u00f6rs\u00f6rjning och upprepa kommandot.  Om webbkameran fortfarande inte k\u00e4nns igen kan du beh\u00f6va k\u00f6pa en kompatibel webbkamera.<\/p>\n<h2 id=\"servo-setup\"><span class=\"ez-toc-section\" id=\"Servoinstallningar\"><\/span>  Servoinst\u00e4llningar<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u00c4ven om servon kan verka skr\u00e4mmande och komplexa, \u00e4r de egentligen ganska enkla att ansluta.  Servon arbetar med Pulse Width Modulation (PWM), vilket \u00e4r ett s\u00e4tt f\u00f6r digitala system att imitera analoga signaler.  PWM-signaler \u00e4r i huvudsak en snabb P\u00c5-AV-signal.  En signal som \u00e4r P\u00c5 eller H\u00d6G beskrivs med duty cycle.  Duty cycle uttrycks i procent och beskriver hur l\u00e4nge signalen \u00e4r P\u00c5.  En PWM-signal p\u00e5 25 % arbetscykel kommer att vara P\u00c5 under 25 % av tiden och AV under de \u00e5terst\u00e5ende 75 %.  Signalen \u00e4r inte P\u00c5 vid starten och sedan AV f\u00f6r alltid, den pulseras regelbundet under en mycket kort tidsperiod.<\/p>\n<p>Servon lyssnar efter dessa pulser och agerar d\u00e4refter.  Att anv\u00e4nda en arbetscykel p\u00e5 100 % skulle vara detsamma som \u201cvanliga\u201d 5v, och 0 % skulle vara samma som mark.  Oroa dig inte om du inte helt f\u00f6rst\u00e5r hur PWM fungerar, du kan fortfarande styra servon (Extreme Electronics \u00e4r ett bra st\u00e4lle att l\u00e4ra dig mer).<\/p>\n<p>Det finns tv\u00e5 huvudsakliga s\u00e4tt att anv\u00e4nda PWM \u2013 h\u00e5rdvara eller mjukvara.  H\u00e5rdvara PWM ger ofta l\u00e4gre latens (hur l\u00e5ng tid mellan servon tar emot kommandot och flyttar) \u00e4n mjukvara PWM, men Pi har bara en h\u00e5rdvaru-PWM-kapabel pin.  Externa kretsar \u00e4r tillg\u00e4ngliga f\u00f6r att tillhandah\u00e5lla flera kanaler av h\u00e5rdvaru-PWM, men en enkel Arduino kan ocks\u00e5 hantera uppgiften, eftersom de har flera h\u00e5rdvaru-PWM-stift.<\/p>\n<p>H\u00e4r \u00e4r kretsen:<\/p>\n<figure>\n<\/figure>\n<p>Dubbelkolla pinouten f\u00f6r din Pi, de varierar n\u00e5got mellan modellerna.  Du m\u00e5ste ta reda p\u00e5 hur dina servon \u00e4r anslutna.  Servon kr\u00e4ver tre ledningar f\u00f6r att styra dem, men f\u00e4rgerna varierar n\u00e5got:<\/p>\n<p>  R\u00f6d \u00e4r positiv, anslut denna till Pi +5v Brun eller svart \u00e4r negativ, anslut denna till GND p\u00e5 Pi Orange eller vit signal, anslut denna till Arduino stift 9 och 10  <\/p>\n<h2 id=\"arduino-setup\"><span class=\"ez-toc-section\" id=\"Arduino-installning\"><\/span> Arduino-inst\u00e4llning<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Ny p\u00e5 Arduino?  Kom ig\u00e5ng h\u00e4r.<\/p>\n<p>N\u00e4r servon \u00e4r anslutna \u00f6ppnar du Arduino IDE p\u00e5 din dator och laddar upp denna testkod.  Gl\u00f6m inte att v\u00e4lja r\u00e4tt kort och port fr\u00e5n <strong>Verktyg &gt; Styrelse<\/strong> och <strong>Verktyg &gt; Port<\/strong> menyer<\/p>\n<pre>#include &lt;Servo.h&gt; \/\/ Import the library<br\/>Servo servoPan, servoTilt; \/\/ Create servo objects<br\/>int servoMin = 20, servoMax = 160; \/\/ Define limits of servos<br\/>void setup() {<br\/>\/\/ Setup servos on PWM capable pins<br\/>servoPan.attach(9); <br\/>servoTilt.attach(10);<br\/>}<br\/>void loop() {<br\/>for(int i = servoMin; i &lt; servoMax; ++i) { 1<br\/>\/\/ Move servos from minimum to maximum <br\/>servoPan.write(i); <br\/>servoTilt.write(i); <br\/>delay(100); \/\/ Wait 100ms <br\/>} <br\/>for(int i = servoMax; i &gt; servoMin; --i) {<br\/>\/\/ Move servos from maximum to minimum<br\/>servoPan.write(i);<br\/>servoTilt.write(i);<br\/>delay(100); \/\/ Wait 100ms<br\/>}<br\/>}<\/pre>\n<p>Allt \u00e4r bra b\u00f6r du se b\u00e5da servon sakta r\u00f6ra sig fram och tillbaka.  L\u00e4gg m\u00e4rke till hur \u201cservoMin\u201d och servoMax\u201d definieras som 20 och 160 grader (ist\u00e4llet f\u00f6r 0 och 180). Detta beror delvis p\u00e5 att dessa billiga servon inte kan r\u00f6ra sig hela 180 grader exakt, och \u00e4ven p\u00e5 grund av webbkamerans fysiska storlek f\u00f6rhindrar att hela intervallet anv\u00e4nds. Du kan beh\u00f6va justera dessa f\u00f6r din inst\u00e4llning.<\/p>\n<p>Om de inte fungerar alls dubbelkolla att kretsen \u00e4r korrekt ansluten.  Breadboards kan ibland ocks\u00e5 variera i kvalitet, s\u00e5 \u00f6verv\u00e4g att investera i en multimeter f\u00f6r att verifiera.<\/p>\n<p>Servon \u00e4r <em>n\u00e4stan<\/em> f\u00f6r kraftfulla f\u00f6r Arduino att driva, s\u00e5 de kommer att drivas av Pi.  5V-skenan p\u00e5 Pi \u00e4r begr\u00e4nsad till 750mA f\u00f6r hela Pi, och Pi drar ungef\u00e4r 500mA, vilket l\u00e4mnar 250mA f\u00f6r servon.  Dessa mikroservon drar ungef\u00e4r 80mA, vilket betyder att Pi:n ska kunna hantera tv\u00e5 av dem.  Om du vill anv\u00e4nda fler servon eller st\u00f6rre modeller med h\u00f6gre effekt kan du beh\u00f6va anv\u00e4nda en extern str\u00f6mf\u00f6rs\u00f6rjning.<\/p>\n<p>Ladda nu upp f\u00f6ljande kod till Arduino.  Detta kommer att lyssna p\u00e5 inkommande seriella data (seriellt som i Universal <em>Serie<\/em> buss eller USB).  Pi:n skickar denna data via USB till Arduino och talar om f\u00f6r den vart servon ska flyttas.<\/p>\n<pre>#include &lt;Servo.h&gt; \/\/ Import the library<br\/>Servo servoPan, servoTilt; \/\/ Create servo object<br\/>String data = \"\"; \/\/ Store incoming commands (buffer)<br\/>void setup() {<br\/>\/\/ Setup servos on PWM capable pins<br\/>servoPan.attach(9); <br\/>servoTilt.attach(10);<br\/>Serial.begin(9600); \/\/ Start serial at 9600 bps (speed)<br\/>}<br\/>void loop() {<br\/>while (Serial.available() &gt; 0)<br\/>{<br\/>\/\/ If there is data<br\/>char singleChar = Serial.read(); \/\/ Read each character<br\/>if (singleChar == 'P') {<br\/>\/\/ Move pan servo<br\/>servoPan.write(data.toInt());<br\/>data = \"\"; \/\/ Clear buffer<br\/>}<br\/>else if (singleChar == 'T') {<br\/>\/\/ Move tilt servo<br\/>servoTilt.write(data.toInt());<br\/>data = \"\"; \/\/ Clear buffer<br\/>}<br\/>else {<br\/>data += singleChar; \/\/ Append new data<br\/>}<br\/>}<br\/>}<\/pre>\n<p>Du kan testa den h\u00e4r koden genom att \u00f6ppna den seriella monitorn (<strong>uppe till h\u00f6ger &gt; Serial Monitor<\/strong>) och skickar lite testdata:<\/p>\n<p>L\u00e4gg m\u00e4rke till formatet p\u00e5 kommandona \u2014 ett v\u00e4rde och sedan en bokstav.  V\u00e4rdet \u00e4r servos position, och bokstaven (i versaler) anger panorerings- eller lutningsservot.  Eftersom denna data \u00f6verf\u00f6rs fr\u00e5n Pi seriellt kommer varje karakt\u00e4r igenom en i taget.  Arduino m\u00e5ste \u201clagra\u201d dessa tills hela kommandot har s\u00e4nts.  Den sista bokstaven anger inte bara servo, den l\u00e5ter ocks\u00e5 Arduino veta att det inte finns mer data i det h\u00e4r kommandot.<\/p>\n<p>Koppla slutligen bort din Arduino fr\u00e5n datorn och <strong>anslut den till Raspberry Pi via den vanliga USB-portanslutningen<\/strong>.<\/p>\n<h2 id=\"pi-setup\"><span class=\"ez-toc-section\" id=\"Pi-installning\"><\/span>  Pi-inst\u00e4llning<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Nu \u00e4r det dags att st\u00e4lla in Pi.  Installera f\u00f6rst ett operativsystem.  Anslut webbkameran och Arduino till Pi USB.<\/p>\n<p>Uppdatera Pi:<\/p>\n<pre>sudo apt-get update<br\/>sudo apt-get upgrade<\/pre>\n<p>Installationsr\u00f6relse:<\/p>\n<pre>sudo apt-get install motion<\/pre>\n<p>Motion \u00e4r ett program gjort f\u00f6r att hantera webbkamerastr\u00f6mning.  Den klarar alla tunga lyft och kan till och med utf\u00f6ra inspelning och r\u00f6relsedetektering (prova att bygga ett s\u00e4kerhetssystem f\u00f6r r\u00f6relsef\u00e5ngst).  \u00d6ppna Motion-konfigurationsfilen:<\/p>\n<pre>sudo nano \/etc\/motion\/motion.conf<\/pre>\n<p>Den h\u00e4r filen ger m\u00e5nga alternativ f\u00f6r att konfigurera Motion.  St\u00e4ll in enligt f\u00f6ljande:<\/p>\n<p>  daemon on \u2014 K\u00f6r programmet framerate: 100 \u2014 Hur m\u00e5nga bilder eller bilder\/sekund att streama stream_localhost av \u2014 Till\u00e5t \u00e5tkomst \u00f6ver n\u00e4tverkets bredd 640 \u2014 Bredd p\u00e5 video, justera f\u00f6r din webbkamera h\u00f6jd 320 \u2014 H\u00f6jd p\u00e5 video, justera f\u00f6r din webbkamera stream_port 8081 \u2014 Porten f\u00f6r att mata ut video till output_picture off \u2014 Spara inga bilder  <\/p>\n<p>Det h\u00e4r \u00e4r en ganska stor fil, s\u00e5 du kanske vill anv\u00e4nda den <strong>CTRL + W<\/strong> f\u00f6r att s\u00f6ka efter linjer.  N\u00e4r du \u00e4r klar trycker du p\u00e5 <strong>CTRL + X<\/strong> och bekr\u00e4fta sedan f\u00f6r att spara och avsluta.<\/p>\n<p>Redigera en fil till:<\/p>\n<pre>sudo nano \/etc\/default\/motion<\/pre>\n<p>St\u00e4ll in \u201cstart_motion_daemon=ja\u201d.  Detta beh\u00f6vs f\u00f6r att Motion ska fungera.<\/p>\n<p>Ta nu reda p\u00e5 din IP-adress:<\/p>\n<pre>ifconfig<\/pre>\n<p>Detta kommando visar n\u00e4tverksanslutningsdetaljerna f\u00f6r Pi.  Titta p\u00e5 den andra raden, <strong>inet adr<\/strong>.  Du kanske vill st\u00e4lla in en statisk IP-adress (vad \u00e4r en statisk IP?), men anteckna nu detta nummer.<\/p>\n<p>Starta nu Motion:<\/p>\n<pre>sudo service motion start<\/pre>\n<p>Du kan stoppa eller starta om Motion genom att \u00e4ndra \u201cstart\u201d till \u201cstopp\u201d eller \u201cstarta om\u201d.<\/p>\n<p>Byt \u00f6ver till din dator och navigera till Pi fr\u00e5n en webbl\u00e4sare:<\/p>\n<pre>http:\/\/xxx.xxx.x.xx:8081<\/pre>\n<p>D\u00e4r xxx.xxx.x.xx \u00e4r Pi IP-adressen.  Kolon f\u00f6ljt av ett nummer \u00e4r porten som konfigurerades tidigare.  Om allt \u00e4r bra b\u00f6r du se streamen fr\u00e5n din webbkamera!  F\u00f6rs\u00f6k att flytta runt och se hur det ser ut.  Du kan beh\u00f6va justera inst\u00e4llningarna f\u00f6r ljusstyrka och kontrast i konfigurationsfilen.  Du kan beh\u00f6va fokusera webbkameran \u2014 vissa modeller har en liten fokusring runt linsen.  Vrid detta tills bilden \u00e4r som skarpast.<\/p>\n<p>Tillbaka p\u00e5 Pi, skapa en mapp och navigera in i den:<\/p>\n<pre>mkdir security-cam<br\/>cd security-cam\/<\/pre>\n<p>Installera nu Twisted:<\/p>\n<pre>sudo apt-get install python-twisted<\/pre>\n<p>Twisted \u00e4r en webbserver skriven i Python, som lyssnar efter kommandon och sedan agerar d\u00e4refter.<\/p>\n<p>N\u00e4r det \u00e4r installerat, skapa ett Python-skript f\u00f6r att k\u00f6ra kommandon (flytta servon).<\/p>\n<pre>sudo nano servos.rpy<\/pre>\n<p>L\u00e4gg m\u00e4rke till hur filtill\u00e4gget \u00e4r \u201c.rpy\u201d ist\u00e4llet f\u00f6r \u201cpy\u201d.  H\u00e4r \u00e4r koden:<\/p>\n<pre># Import necessary files<br\/>import serial<br\/>from twisted.web.resource import Resource<br\/># Setup Arduino at correct speed<br\/>try:<br\/>arduino = serial.Serial('\/dev\/ttyUSB0', 9600)<br\/>except:<br\/>arduino = serial.Serial('\/dev\/ttyUSB1', 9600)<br\/>class MoveServo(Resource):<br\/>isLeaf = True<br\/>def render_GET(self,request):<br\/>try:<br\/># Send value over serial to the Arduino<br\/>arduino.write(request.args['value'][0])<br\/>return 'Success'<br\/>except:<br\/>return 'Failure'<br\/>resource = MoveServo()<\/pre>\n<p>Starta nu webbservern:<\/p>\n<pre>sudo twistd -n web -p 80 --path \/home\/pi\/security-cam\/<\/pre>\n<p>L\u00e5t oss bryta ner det \u2014 \u201c-p 80\u201d anger porten (80).  Detta \u00e4r standardporten f\u00f6r webbsidor.  \u201c\u2013path \/home\/pi\/security-cam\/\u201d s\u00e4ger till Twisted att starta servern i den angivna katalogen.  Om du g\u00f6r n\u00e5gra \u00e4ndringar i skripten i mappen \u201csecurity-cam\u201d m\u00e5ste du starta om servern (<strong>CTRL + X<\/strong> f\u00f6r att st\u00e4nga och k\u00f6r sedan kommandot igen).<\/p>\n<p>Skapa nu webbsidan:<\/p>\n<pre>sudo nano index.html<\/pre>\n<p>H\u00e4r \u00e4r webbsidans kod:<\/p>\n<pre>&lt;!doctype html&gt;<br\/>&lt;html&gt;<br\/>&lt;head&gt;<br\/>&lt;title&gt;Make Use Of DIY Security Camera&lt;\/title&gt;<br\/>&lt;style type=\"text\/css\"&gt;<br\/>#container {<br\/>\/* center the content *\/<br\/>margin: 0 auto; <br\/>text-align: center;<br\/>}<br\/>&lt;\/style&gt;<br\/>&lt;\/head&gt;<br\/>&lt;body&gt;<br\/>&lt;div id=\"container\"&gt;<br\/>&lt;img src=\"https:\/\/www.makeuseof.com\/tag\/diy-pan-and-tilt-network-security-cam-raspberry-pi\/[Image URL]\" \/&gt;<br\/>&lt;script src=\"https:\/\/ajax.googleapis.com\/ajax\/libs\/jquery\/3.1.0\/jquery.min.js\"&gt;&lt;\/script&gt;&lt;br \/&gt;<br\/>&lt;button onclick=\"servos.move('P', 10)\"&gt;Left&lt;\/button&gt;<br\/>&lt;button onclick=\"servos.move('P', -10)\"&gt;Right&lt;\/button&gt;<br\/>&lt;button onclick=\"servos.move('T', -10)\"&gt;Up&lt;\/button&gt;<br\/>&lt;button onclick=\"servos.move('T', 10)\"&gt;Down&lt;\/button&gt;<br\/>&lt;\/div&gt;<br\/>&lt;\/body&gt;<br\/>&lt;script&gt;<br\/>var servos;<br\/>$( document ).ready(function() {<br\/>servos = moveServos();<br\/>});<br\/>function moveServos() {<br\/>\/\/ Store some settings, adjust to suit<br\/>var panPos = 70, <br\/>tiltPos = 90, <br\/>tiltMax = 170, <br\/>tiltMin = 45, <br\/>panMax = 170, <br\/>panMin = 20;<br\/>return {<br\/>move:function(servo, adjustment) {<br\/>var value;<br\/>if(servo == 'P') {<br\/>if(!((panPos &gt;= panMax &amp;&amp; adjustment &gt; 0) || (panPos &lt;= panMin &amp;&amp; adjustment &lt; 0))) {<br\/>\/\/ Still within allowed range, \"schedule\" the movement<br\/>panPos += adjustment;<br\/>}<br\/>value = panPos + 'P';<br\/>}<br\/>else if(servo == 'T') {<br\/>if(!((tiltPos &gt;= tiltMax &amp;&amp; adjustment &gt; 0) || (tiltPos &lt;= tiltMin &amp;&amp; adjustment &lt; 0))) {<br\/>\/\/ Still within allowed range, \"schedule\" the movement<br\/>tiltPos += adjustment;<br\/>}<br\/>value = tiltPos + 'T';<br\/>}<br\/>\/\/ Use AJAX to actually move the servos<br\/>$.get('http:\/\/PI_IP_ADDRESS\/servos.rpy?value=\" + value);<br\/>},<br\/>}<br\/>}<br\/>&lt;\/script&gt;<br\/>&lt;\/html&gt;<\/pre>\n<\/p><\/div>\n  <div id=\"ez-toc-container\" class=\"ez-toc-v2_0_88 ez-toc-wrap-center counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 eztoc-toggle-hide-by-default' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/blogging-techies.com\/sw\/diy-pan-and-tilt-network-security-cam-med-raspberry-pi\/#Vad_du_behover\" >Vad du beh\u00f6ver<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/blogging-techies.com\/sw\/diy-pan-and-tilt-network-security-cam-med-raspberry-pi\/#Bygger_sakerhetskameran\" >Bygger s\u00e4kerhetskameran<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/blogging-techies.com\/sw\/diy-pan-and-tilt-network-security-cam-med-raspberry-pi\/#Ett_ord_om_webbkameror\" >Ett ord om webbkameror<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/blogging-techies.com\/sw\/diy-pan-and-tilt-network-security-cam-med-raspberry-pi\/#Servoinstallningar\" >Servoinst\u00e4llningar<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/blogging-techies.com\/sw\/diy-pan-and-tilt-network-security-cam-med-raspberry-pi\/#Arduino-installning\" >Arduino-inst\u00e4llning<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/blogging-techies.com\/sw\/diy-pan-and-tilt-network-security-cam-med-raspberry-pi\/#Pi-installning\" >Pi-inst\u00e4llning<\/a><\/li><\/ul><\/nav><\/div>\n ","protected":false},"excerpt":{"rendered":"<p>L\u00e4r dig hur du g\u00f6r en panorerings- och lutningskamera som kan ses p\u00e5 distans med en Raspberry Pi. Detta projekt kan slutf\u00f6ras p\u00e5 en morgon med bara de enklaste delarna. H\u00e4r \u00e4r slutresultatet: Vad du beh\u00f6ver Raspberry Pi 2 eller 3 med Micro SD-kort Arduino UNO eller liknande 2 x mikro- eller minihobbyservon USB-webbkamera Hane [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":65602,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"https:\/\/ipotek.net\/wp-content\/uploads\/2022\/01\/DIY-Pan-and-Tilt-Network-Security-Cam-med-Raspberry-Pi.jpg","fifu_image_alt":"","footnotes":""},"categories":[5],"tags":[21884,11180,102,6679,35959,6792,9271,16770],"class_list":["post-65601","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-bloggar","tag-cam","tag-diy","tag-med","tag-network","tag-pan","tag-raspberry","tag-security","tag-tilt"],"_links":{"self":[{"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/posts\/65601","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/comments?post=65601"}],"version-history":[{"count":0,"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/posts\/65601\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/media\/65602"}],"wp:attachment":[{"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/media?parent=65601"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/categories?post=65601"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/tags?post=65601"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}