Overview
PiGlass is a DIY wearable computer!
PiGlass can be used to take HD pictures and videos, those files get automatically uploaded to Dropbox via a Wi-Fi connection.. You can stream music from your phone to PiGlass with Bluetooth as well as stream YouTube audio with mps-youtube. A bone conduction transducer can be added to be used instead of headphones. YouTube videos can be streamed to PiGlass using the RaspiCast app for Android, the camera on PiGlass can be livestreamed to YouTube.
You can control PiGlass, once assembled, via your phone via SSH over Wi-Fi.
Parts:
Page last edited March 08, 2024
Text editor powered by tinymce.
Assembly
Step 1: Modify your header pins with a ruler, put the edge of the ruler on the black part and push down until you get close to one side, you will need two rows of 16 pins and 2 rows of 4 pins.
Step 2: Put your header pins in the female header from the phat dac parts.
Step 2.5: For forward compatibility with a bone conduction transducer guide, solder 2 regular pins onto the phat dac.
Step 3: Solder your modified pins onto the raspberry pi zero w. The part you are soldering is outlined in red below.
Step 4: When you are done soldering, take the female header off the pins of the pi and put the phat dac on and slide it down as far as you can then solder all the pins of the phat dac. I used blue zip ties to hold the boards together at this point.
Step 5: Attach the bluetooth adapter using the mini OTG USB adapter and attach the camera.
Step 6: Attach the PiGlass to the VuFine+ using small zip ties, making sure to go through both boards and around the Vufine+.
Step 8: Extend the VuFine screen as far as it will go, then place the gluedot on the center of the back of the screen then place the camera on the gluedot.
Step 9: Attach the short mini hdmi to micro HDMI cable from the Pi Zero to the VuFine+ and zip tie it.
All done with the assembly!
Page last edited March 08, 2024
Text editor powered by tinymce.
Software
If you have not used a Raspberry Pi or a Pi Zero in a project, you may want to review the following Guides to get your Pi set up and loaded with the latest version of the Raspbian operating system:
Once you have your Pi Zero W set up and working with a display and keyboard, you will want to follow the steps below.
Step 1: Update the Pi software, install the opencv software package and download the picture/video program.
sudo apt-get update sudo apt-get install python-opencv python-picamera git clone https://github.com/matt-desmarais/piglass.git
Step 2: Enable the camera and SSH remote access.
sudo raspi-config
Go to interfacing options in the raspi-config program and turn the camera on. Also enable SSH access in the configuration program. SSH is remote log in to the Pi from another computer or your phone, this will be used later on.
Reboot the Pi or shutdown and restart.
Step 3: Setup Dropbox Integration
git clone https://github.com/andreafabrizi/Dropbox-Uploader.git cd Dropbox-Uploader chmod +x dropbox_uploader.sh sudo ./dropbox_uploader.sh
At this point you will be asked for an access token - here is what you do:
- Go to: https://www.dropbox.com/developers/apps
- Create App and give it a name.
- Go to App setting and scroll down to the OAuth 2 section
- Look for generated access token. Click generate.
- Copy and paste your access token into the uploader script
Now PiGlass will be able to upload to dropbox!
Step 4: Install software support for the phat dac
https://learn.pimoroni.com/tutorial/phat/raspberry-pi-phat-dac-install
curl https://get.pimoroni.com/phatdac | bash
Step 5: Install the Bluetooth adapter and setup streaming
First disable the internal Bluetooth of the Pi
sudo nano /boot/config.txt add the line dtoverlay=pi3-disable-bt
Setup bluetooth streaming
Reboot then attach your bluetooth dongle to the mini OTG USB adapter
sudo -i bash <(curl -s https://raw.githubusercontent.com/lukasjapan/bt-speaker/master/install.sh)
Pair your phone to PiGlass using Bluetooth Manager (GUI) or bluetoothctl (terminal)
Test your setup by pairing your phone and playing music, the music should play from the headphones on the phat dac
Optional: Increase size of mouse for the lxde graphical user environment if you want to use a bluetooth keyboard
sudo apt-get install chameleon-cursor-theme sudo update-alternatives --config x-cursor-theme
select
/usr/share/icons/Chameleon-White-Large/cursor.theme
Page last edited March 08, 2024
Text editor powered by tinymce.
Pictures and Video Livestreaming
Here is how to take pictures and videos. Log into the Raspberry Pi Zero into PiGlass using SSH from your phone.
cd piglass sudo python PiGlassBeta.py
You will need an SSH client program on your phone or computer to remote access your Raspberry Pi Zero. I suggest you try JuiceSSH for Android.
You will need to know the Raspberry Pi Internet Protocol (IP) address to put in your SSH program to connect the two.
Here is a video of the setup process for JuiceSSH:
Once you have a connection, you can issue commands to the PiGlass.
Here are the keys which control PiGlassBeta.py:
Z: zoom in
X: zoom out
C: zoom in all the way/zoom out all the way
N: zoom to inital setting
P: take picture
V: start video/stop video
T: toggle text on/off
Q: quit
If you have the Dropbox app on your phone you can see pictures as soon as they are uploaded, below is a video taken with PiGlass
wget https://github.com/ccrisan/motioneye/wiki/precompiled/ffmpeg_3.1.1-1_armhf.deb dpkg -i ffmpeg_3.1.1-1_armhf.deb
Create script called stream.sh and copy the following code into it. Your YouTube key goes at the end where it says rtmp://a.rtmp.youtube.com/live2/YOUTUBE KEY GOES HERE
raspivid -rot 270 -o - -t 0 -fps 30 -b 6000000 | ffmpeg -re -ar 44100 -ac 2 -acodec pcm_s16le -f s16le -ac 2 -i /dev/zero -f h264 -i - -vcodec copy -acodec aac -ab 128k -g 50 -strict experimental -f flv rtmp://a.rtmp.youtube.com/live2/YOUR YOUTUBE KEY GOES HERE
How to get your key:
Go to https://www.youtube.com/live_dashboard
Scroll down to encoder setup and then go to Stream name/key and click reveal copy and paste the key into the script.
Run stream.sh and you should be livestreaming to youtube!
Page last edited March 08, 2024
Text editor powered by tinymce.
YouTube Streaming
RaspiCast Video Streaming
Download raspicast app on your phone
https://play.google.com/store/apps/details?id=at.huber.raspicast
Enter your SSH log in settings into the app
To cast YouTube videos to your Raspberry Pi just open the YouTube app and a video and choose "Share" → Raspicast.
The video will start playing on PiGlass!
MPS-YouTube audio streaming
sudo apt-get install mpv sudo pip3 install youtube-dl git clone https://github.com/mps-youtube/mps-youtube.git cd mps-youtube sudo python3 setup.py install
Run mpsyt and then enter set player mpv
Congratulations you can now steam youtube audio!
For example, I typed in /sia then hit enter
A list of songs will come up, entering in the number of the song you want follow by enter will start the stream.
Page last edited March 08, 2024
Text editor powered by tinymce.
Picture and Screenshot Combo Capability
You need the following repo to make the code function
https://github.com/AndrewFromMelbourne/raspi2png
git clone https://github.com/AndrewFromMelbourne/raspi2png.git
You need this Python library
sudo apt-get install python-numpy
Now for the code you can get it with wget or copy and paste from below
wget https://gist.githubusercontent.com/matt-desmarais/c56f43bd4aeb51c9a574100ac6b40941/raw/99e7475a6957083bad26fcbad9b2f2290e6c25f9/picinpic.py
import cv2
import numpy
import subprocess
import time
import datetime
def get_file_name_pic(): # new
return datetime.datetime.now().strftime("%Y-%m-%d_%H.%M.%S-combined.png")
subprocess.Popen("./raspi2png", cwd='/home/pi/raspi2png')
subprocess.Popen(["raspistill", "-t", "500", "-rot", "270", "-o", "/home/pi/camera.jpg"], shell=False)
time.sleep(12)
# Load image and screenshot
img1 = cv2.imread('/home/pi/camera.jpg')
img2 = cv2.imread('/home/pi/raspi2png/snapshot.png')
rows,cols,channels = img2.shape
#top-left corner pic in pic
img1[0:rows, 0:cols ] = img2
#save combined picture
cv2.imwrite('/home/pi/test.png',img1)
#generate filename for dropbox file name
filename = get_file_name_pic()
photofile = "/home/pi/Dropbox-Uploader/dropbox_uploader.sh upload /home/pi/test.png /Apps/PiGlass/"+filename
#runs photofile dropbox upload
subprocess.Popen(photofile, shell=True)
When you run the program it will take a screenshot followed by a picture and combine the screenshot into the photo. Below is an example of a picture generated by the above code.
Page last edited March 08, 2024
Text editor powered by tinymce.
Adding a Bone Conduction Transducer
100K resistors x 2
Jumper wires: female to female
Shrink wrap: 3/4 inch and 3/8 inch
Step 1: Solder the 5 pins onto amp
Step 2: Strip the black housing off of 3 jumper wires then pull off the female connectors. You will need to solder them onto the resistors.
Step 3: Now we are going to shrink wrap the bone conduction transducer to the frame of the glasses. Take the elastic end of the glasses off the side PiGlass is mounted to. Slide the 3/8 inch shrink wrap on the frame and then feed the wires through, the transducer should be on the inside of the frame. Now put about an inch and a half of the 3/4 inch shrink wrap around the bone conduction transducer. Make sure the transducer sits above your ear, essentially above your ear canal. When you find the right placement carefully use a heat gun or hair dryer to activate the shrink wrap.
Step 4: Take the bone conduction transducer leads and solder them to the positive and negative speaker output.
Step 5: Attach a wire to 5v and ground on the phat dac, then attach the other sides to ground and vin on the amp. Next attach the resistors to the phat dac pins and A+ on the amp board, now you are good to go.
Page last edited March 08, 2024
Text editor powered by tinymce.
Usage
Tips for using PiGlass:
- watch your power wire, don't get it caught on anything
- Use JuiceSSH for Android to control PiGlass, you can open multiple sessions
- The camera can only be used by one program at a time
- Be mindful of the camera when adjusting the Vufine+
Future Features
Consider use of a linear soft potentiometer, to use as a touch/slide sensor, to control the camera program and music playback and mount to the side.
Consider a microphone for voice commands (as voice recognition software becomes better).
Page last edited March 08, 2024
Text editor powered by tinymce.