Bygga en 3D tryckt Pan Tilt fallet för en Raspberry Pi (20 / 20 steg)
Steg 20: Utvecklat något lite bättre
Svar på min egen fråga, kan ja jag utveckla något bättre än en terminal session att kontrollera pan och tilt. Inte mycket bättre. "Def lite bättre och det ger ett exempel på vad som kunde göras.
Jag upptäckte Node.js ett tag tillbaka och efter att komma över det faktum att det är baserat på Javascript (vem gör ett serverprogram i Javascript trots allt) jag faktiskt bestämde mig för att jag gillar det. Ett språk för klienten och servern och servern kan det vara riktigt effektivt. En varning. Det är tänkt att vara skriven i en asynkron modell som är hur det kan vara så effektiv som möjligt för att servera stort antal användare. Eftersom min demo är en enda användarprogram... och jag var att vara lat, har den ett par sync operationer < gasp >. Om du är en Node.js purist du vända bort nu!
Första är du behöver göra att installera nod. Det finns ett par sätt att göra detta men följande är lätt som det utnyttjar ett paket som Adafruit (artikel här) gör tillgängliga:
- curl - sLS https://apt.adafruit.com/add | sudo bash
- sudo lämplig-få installera nod
Det första kommandot lägger till katalogen adafruit till ditt system och andra sedan installerar nod från denna katalog.
När du har nod kan du skapa en katalog för program. Jag ringde min nod. I katalogen finns två filer pantilt.js som är Node.js kod som tar input från en webbläsare och går operativsystemkommandon (svin) att kontrollera servon, och panttitl.html som är HTML-koden för web sidan av vår app. Det finns också en underkatalog som heter privat med den har en underkatalog som heter bilder. Bilder är där de små ikonerna för webben visning live. Koden är kopplad till den här sidan.
En sista sak att göra. Du måste köra följande kommandon för att installera några saker som gör det ganska lätt att arbeta med web sidan av saker från katalogen nod:
- NPM installera express
- NPM installera kropp-parser
Express är den ram som ger dig verktyg för att interagera med webben och kropp-parser gör just det, analyserar det kroppen av en HTTP-dialog.
Noden kommandot "pantilt.js" startar programmet. Jag har detta spring i ".profile" tillsammans med start av rörelse i bakgrundsläget.
Ovanstående bilder visar hur denna app ser ut. Rutan representerar webbkamerans synfält. Tryck var som helst inuti lådan och webbkameran pekar det. Att trycka på en av pilarna orsakar webbkameran att gå i den riktningen i mindre eller större steg.
Naturligtvis nästa iteration av denna app vore att kombinera streaming utgång och webcam kontrollen till en sida men jag har tid just nu.