PetBeHome: a Device That Lets You Talk to Your Furry Friend for Under $100
by TheEpicIronman in Circuits > Assistive Tech
949 Views, 14 Favorites, 0 Comments
PetBeHome: a Device That Lets You Talk to Your Furry Friend for Under $100
So, one day and my friend were hanging out and he told me he had to go home early to go watch the dog because his dog had separation anxiety. It was unfortunate because there were no inexpensive ways to be able to talk to their dog for a few minutes so he could go back to finishing what he was doing without interruption. Then I jumped straight into brainstorming to find a solution to this major problem in the world. I designed a simple, efficient, and inexpensive way to talk and hear your dog.
What you will need:
- Raspberry Pi 3 - $36 (Unless you have access to a wired connection)
- Raspberry Pi Screen - $21
- Pi Camera - $15
- Mic and Speaker combo
- SD Card - $6
- SD Card Adapter - $4 (If you are using Pi V1)
Equipment you will need:
- Computer
- SD Card Reader/Writer
- Mouse and Keyboard
- Monitor with HDMI Cable
- Skill
- 3D Printer (Optional)
Be sure to vote me for my contests!
Prepare Software for Formatting SD Card
To start this project off, we need to prepare all of the sot ware and tools that we will use. First you will want to download Win32 Disk Imager to be able to install the operating system on the Raspberry Pi. Then you will want to download the Raspberry Pi image with the PITFT built in for easy installation. With this done, we can now start working on formatting the storage unit for the Pi.
Use Win32 Disk Imager to Make Format for SD Card
Once both files are downloaded, plug in your SD or Micro SD into your computer. Open the zip folder with the raspbian and move the .iso file somewhere out of the zip file. WARNING: Make sure you have nothing important on the SD because the software will reformat it!!! You will need to run the Win32 software as administrator so the software has permission to change the SD card. It will guide you through an install wizard and I checked create desktop icon for ease of access. Once you run the application, you want to press the little folder icon which you select where you have the .iso file. Then you want to find what Drive letter you SD card is and put that in the box to the right of the folder icon. Moving on to the Hardware side...
Plug the Raspberry Pi, Camera, and the Screen
Once the Card is ready, you can plug the camera into the black header behind the Ethernet port. Then put screen on to the back pins on a Pi 2 & 3 or it will fit exactly on the Pi 1. The pictures can help if you are having trouble finding where to plug the connectors in.
Setting the Camera Up
Source: PI surveillance Camera Instructable
Connect a USB keyboard, power the Raspberry Pi from a USB phone charger or powered hub, and work through the usual first-time boot configuration.
The following options are required:
Expand Filesystem
Enable Camera
Once you are done and are at the terminal, fetching the camera software is just a couple extra steps…
A good motion detection software with many configuration options is motion.We now need to install it using the command line through the screen:
sudo apt-get install motion
Some packages will be installed in the installation process; just type "y" to proceed with the installation.As the current version of motion does not (yet) support the Raspberry camera module, we need to download and install a special build with support for this camera module.
cd /tmp
sudo apt-get install -y libjpeg62 libjpeg62-dev libavformat53 libavformat-dev libavcodec53 libavcodec-dev libavutil51 libavutil-dev libc6-dev zlib1g-dev libmysqlclient18 libmysqlclient-dev libpq5 libpq-dev
wget https://www.dropbox.com/s/xdfcxm5hu71s97d/motion-mmal.tar.gz
And now you need to unpack the downloaded file to the /tmp directory:
tar zxvf motion-mmal.tar.gz
After this unzipping, you now need to update your installed motion with the downloaded build:
sudo mv motion /usr/bin/motion
sudo mv motion-mmalcam.conf /etc/motion.conf
You also need to enable the motion daemon so that motion will always run:
sudo nano /etc/default/motion
and change the line to:
start_motion_daemon=yes
We're pretty sure that the official build of motion will shortly also support the Raspberry camera module as well.A very important command to edit the motion configuration file is
sudo nano /etc/motion.conf
Note: in the standard motion installation, the motion.conf is in /etc/motion/, but in the special motion-mmal build from dropbox-url (see above) it's in /etc/. If you follow this tutorial with all steps, this is no problem at all.Be sure to have the file permissions correct: when you install motion via ssh while being logged in as user "pi", you need to make sure to give the user "motion" the permissions to run motion as service after reboot:
sudo chmod 664 /etc/motion.conf
sudo chmod 755 /usr/bin/motion
sudo touch /tmp/motion.log
sudo chmod 775 /tmp/motion.log
We've made some changes to the motion.conf file to fit our needs. Our current motion.conf file can be downloaded here. Just download, unzip and copy the containing motion.conf to /etc/motion.conf if you would like to use the exact config options we describe below.Some of the main changes are:Make sure that motion is always running as a daemon in the background:
daemon on
We want to store the logfile in /tmp instead (otherwise autostart user won't be able to acces it in /home/pi/ folder):
logfile /tmp/motion.log
As we want to use a high quality surveillance video, we've set the resolution to 1280x720:
width 1280
height 720
We don't need real-time video, 10 pictures per second are totally ok for our needs:
framerate 10
This is a very handy feature of the motion software: record some (2 in our configuration) frames before and after the motion in the image was detected:
pre_capture 10
post_capture 10
We don't want endless movies. Instead, we want to have max. 10 minutes slices of the motion videos. This config option was renamed from max_movie_time to max_mpeg_time in motion. If you use the motion-mmal build, this one will work. If you get an error 'Unknown config option "max_mpeg_time"' either change this one to max_movie_time or make sure to really use the motion-mmal build as shown above.
max_mpeg_time 600
As some media players like VLC are unable to play the recorded movies, we've changed the codec to msmpeg4. Then, the movies play correctly in all players:
ffmpeg_video_codec msmpeg4
Enable access to the live stream from anywhere. Otherwise only localhost (= the Raspberry device) would be allowed to access the live stream:
stream_localhost off
If you want to protect the live stream with a username and password, you should enable this:
stream_auth_method 2
stream_authentication SOMEUSERNAME:SOMEPASSWORD
All configuration parameters are explained in detail in the motion config documentation. After your changes to the motion.conf, reboot the Raspberry:
sudo reboot
After the reboot, the red light of the camera module should be turned on, which shows that motion currently is using the camera to detect any movement.
You can also turn off the camera red LED by adding this line to /boot/config.txt:
disable_camera_led=1
Save Your Cute Videos for a Later Time (Optional)
As the SD card of the Raspberry Pi is a pretty limited resource, I have decided to let the Pi store the videos on a windows computer. This is pretty easy:
First share a folder from some Windows machine. Just follow some guides on the internet if you've never shared a folder from a Windows machine before. Then open the fstab configuration on your Raspberry from a PuTTY console or directly from the device:
sudo nano /etc/fstab
Now add an extra line with the configuration of your Windows network shared folder: //YOURSERVERNAME/YOURSHAREDFOLDERNAME /mnt/camshare cifs username=YOURSHAREDFOLDERUSERNAME,password=YOURSHAREDFOLDERPASSWORD,iocharset=utf8,file_mode=0777,dir_mode=0777 0 0
Be sure that the user has the correct permissions to save files to that shared folder. After a reboot, the Raspberry should have an extra folder /mnt/camshare mounted to the Windows shared folder. You should now set in your motion.conf:
target_dir /mnt/camshare
so that motion saves all movies to the shared folder on the Windows machine.
An issue that can be fixed easily was that the Pi would not start the program because the Windows folder was not available.
A very quick fix solved our problem:
Just edit the motion file with
sudo nano /etc/init.d/motion
and add the line
sleep 30
to the start-sequence.
The changed /etc/init.d/motion script can be downloaded from here.
Accessing the PETCAM
Now you can access the live stream from the camera from any browser via the url http://IPADDRESSOFRASPBERRY:8080
Where 8080 is the port that we've configured for our stream in the motion.conf file. See your own configuration setting "stream_port" in motion.conf for the port.
To make the live stream accessible from anywhere, you will need to enable some kind of dynamic domain services to your local network. This will enable you to always be able to connect to your local IP address from the outside even if your local IP address changes.
Once you have set up the dynamic ip url, you can access the camera stream from anywhere in your browser (i.e. http://YOURDYNAMICDOMAIN:8080).
And this also works from the browser on your mobile device.
This is my cute neighbors dog, Iceman:
3D Printing a Case!
You can print a case here at:
http://www.thingiverse.com/thing:244361
pitouch-top.stl about 75 minutes 14g | Houses the camera and Raspberry Pi. Snaps to pitouch-bottom. | PLA @230 2 shells 15% Infill 2.0 Layer Height 90/150mm/s |
pitouch-bottom.stl about 70 minutes 13g | Houses the touch screen and Raspberry P. | PLA @230 2 shells 15% Infill 2.0 Layer Height 90/150mm/s |
pitouch-cover.stl about 30 minutes 6g | Fits inside pitouch-top.stl. Raspberry Pi Camera press-fits to cover. | PLA @230 2 shells 15% Infill 2.0 Layer Height 90/150mm/s |
pitouch-tripod.stl about 35 minutes 6g | Mounts to bottom of pitouch-top.stl and pitouch-bottom.stl | 2 shells 15% Infill 2.0 Layer Height 90/150mm/s |
pitouch-band.stl about 25 minutes 5g | Attaches to sides of pitouch-top.stl and pitouch-bottom.stl. Adds grip and keeps pitouch-tripod mounted to pitouch-top.stl and pitouch-bottom.stl. | NinjaFlex @225 2 shells 15% Infill 2.0 Layer Height 90/150mm/s |
pitouch-camring.stl about 3 minutes 0.5g | Snaps to pitouch-top.stl camera hole. | PLA @230 2 shells 15% Infill 2.0 Layer Height 90/150mm/s |
Going On...
There are a thousand things you can do with such a surveillance cam basic setup now. How about sending Growl notifications when some motion was detected? This guide explains how to add this functionality easily.
Or you could easily add a temperature-sensor to the cam. It's only a few bucks and can be integrated very easily.
What will you add? Let me know in the comments!
Be sure to vote me for my contests!