Kickstarter

Kickstarter is a site where normal people with cool, new, innovative project ideas can easily get their name out there and receive publicity and funding to help get the project started. A great example of this is the Pebble smart watch – a watch with an e-ink display that can display many different watch faces, but for me most importantly, it displays new emails, texts and notifications on the watch face, saving the need to constantly check a vibrating phone. Needless to say, I have put in a preorder for one of these fantastic devices.

Another project I have funded is Lightpack – a device that connects to strips of LEDs that light up the wall behind your monitor(s). This increases the perceived size of the screen, and also brightens the atmosphere around the screen – making the light from it less harsh in dark conditions. Very excited to get this when it ships.

I feel very passionate about teaching children the real basics computer science – programming, making websites, electronics, as these have many real world applications and can help someone understand so much more about the world around them. I found a project that was aiming to create little electronics education kits for novices, including an assortment of components from sensors to motors and electro magnets and 555 timer chips. I would love to see this go into production, and possibly be adapted for school curriculums to perhaps compliment learning with the Raspberry Pi.

Interfacing between computers and the real world has always been an area that fascinates me, and the kickstarter project for a wireless Arduino that is the size of a finger tip. It can run on one AA battery, and I would love to work out how to use this in applications such as door opening sensors and other sensing around the house.

I have also seen some pretty cool non-tech projects such as a plant growing device with a fish bowl underneath, creating a little ecosystem where each would mainly live off each other, whilst allowing the plants to grow and produce fruit.

Happy kickstarting!

Matt

Raspberry Pi Endeavours 10 – lighttpd web server

The web page the controls the Pi Car lives on a little webserver running on the Pi, we use lighttpd.

sudo apt-get install lighttpd

This creates a www directory in /var/www with a default index file, which i renamed to make way for our web files. I also added in the cgi-bin full of scripts to control the GPIO pins, and used the linux command ‘chown’ to change the ownership of the directory cgi-bin to www-data.

Lighttpd Config

By default, apparently cgi-bin files should be located under ‘/usr/lib/cgi-bin’, so I told lighttpd’s config file (under /etc/lighttpd/lighttpd.conf) that my cgi-bin files were located in /var/www.

lighttpd.conf

server.modules = (
“mod_access”,
“mod_alias”,
“mod_compress”,
“mod_redirect”,
“mod_rewrite”,
“mod_cgi”
)

server.document-root = “/var/www”
server.upload-dirs = ( “/var/cache/lighttpd/uploads” )
server.errorlog = “/var/log/lighttpd/error.log”
server.pid-file = “/var/run/lighttpd.pid”
server.username = “www-data”
server.groupname = “www-data”
server.port = 8083
index-file.names = ( “index.php”, “index.html”, “index.lighttpd.html” )
url.access-deny = ( “~”, “.inc” )
static-file.exclude-extensions = ( “.php”, “.pl”, “.fcgi” )

compress.cache-dir = “/var/cache/lighttpd/compress/”
compress.filetype = ( “application/javascript”, “text/css”, “text/html”, “text/plain” )

# default listening port for IPv6 falls back to the IPv4 port
include_shell “/usr/share/lighttpd/use-ipv6.pl ” + server.port
include_shell “/usr/share/lighttpd/create-mime.assign.pl”
include_shell “/usr/share/lighttpd/include-conf-enabled.pl”

$HTTP["url"] =~ “/cgi-bin/” {
cgi.assign = ( “” => “” )
}

cgi.assign = (
“.cgi” => “”
)

 

I also ran the command ‘lighty-enable-mod cgi’ that the lighttpd home page instructed me to do, restarted the Pi, and then went to the Pi’s IP address, on the port that I had specified in lighttpd (8083 in this case). The Pi now drives! After changing two wires, the Pi now drives correctly, all thats left is to add the traction-reduction tape to the wheels, and it will be rolling.

 

Raspberry Pi Endeavors 9 – Software

As I get Raspberry Pi 02 ready, here is exactly how I set it up:

  1. Got the latest Raspbian image, and imaged my 8gb Sandisk Extreme SD card with it using Win 32 Disk Imager (as recommended on the Raspberry Pi Downloads page)
  2. Plugged everything into Pi, booted it up.
  3. In Raspi-config, set the overclock to medium – 900MHz.
  4. Set my time zone to London, set the password, enabled SSH, and set it to exapnd_rootfs (on next reboot).
  5. Rebooted
  6. Started an xwindows session, configured WiFi.
  7. Installed software vital to mjpg-streamer (I am unsure if mplayer and VLC are required, I am fairly sure they aren’t – however on previous attempts at getting Pi02 working, I had no luck, however I am fairly sure this was due to a Chrome plugin, see next post about this. See my explained bash history below for everything I did (minus the ls’s etc):
bash_history explained – the commands that I ran 

ping 8.8.8.8                 #Pinged Google to ensure internet connectivity

Update and Upgrade Pi software, then installed third party software. libjpeg8-dev and imagemagick are required for mjpg-streamer. Subversion (SVN) used to get the mjpg files. 
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install mplayer
sudo apt-get install vlc
sudo apt-get install subversion
sudo apt-get install libjpeg8-dev
sudo apt-get install imagemagick
sudo reboot -n

Install mjpg-streamer
cd
mkdir Documents
cd Documents/
mkdir code
cd code/

wget http://lilnetwork.com/download/raspberrypi/mjpg-streamer.tar.gz (Thanks to this post for a different source of mjpg-streamer)
tar -xvzf mjpg-streamer.tar.gz
svn co https://mjpg-streamer.svn.sourceforge.net/svnroot/mjpg-streamer mjpg-streamer
cd mjpg-streamer/
cd mjpg-streamer
sudo make
cd ../../
nano mjpg-start.sh
bash mjpg-start.sh           #See this post for mjpg-start.sh script, alter for your file directoy

chmod a+x mjph-start.sh     #forgot to do this at the time!
mkdir static
mv mjpg-start.sh static/
cd static/

Add  the cron job: ‘@reboot bash /home/pi/Documents/code/static/mjpg-start.sh’ 
crontab -e
pwd
sudo shutdown now

Removed the USB hub containing mouse, keyboard and webcam, plugged just the webcam into the Pi (as well as the WiFi adapter in the other port)

Now if you go to your IP address:port that you have set mjpg to use, you should see its homepage. This didn’t work for me this time, but going to the page where just the stream is viewed, worked fine for example: 192.168.0.18:8082/?action=stream

RasTrack

rastrack map of raspberry pi locations

www.rastrack.co.uk

On looking through the new raspi-config (after doing the update and upgrade to the Pi), I found a few new options – including the option to add your Pi’s location to RasTrack - a website where you can see where Pis live all over the world! Also saw the option to enable the Pi camera – hopefully being released soon.

Incognito Chrome

I have done this process a few times recently, with different set up steps trying to get a smooth webcam stream. I have gotten new SD cards, 1amp chargers, tried different webcams and WiFi dongles etc, all to the same laggy or non-existant webcam stream. Today I managed to get the Pi streaming, but after 10 seconds or so it would get more and more laggy until it froze completely. Looking at Chrome’s memory usage, I found it shot from 6mb to 500mb in that time, causing Chrome to lock up and the tab trying to crash. I have never seen this exact behaviour before, but opening the link in an incognito window works fine, leading me to think one of my plugins/extensions may be causing problems.

chrome memory

In an incognito window, the memory used by the page seems to increase from say 1 to 7mb, then straight back down to 1mb, every half a second, forever – which I assume is it loading the new photos, then disposing of old ones. Earlier in a normal window, it seemed to just accumulate more and more without ever throwing any away. Will try and look into why tomorrow, as well as trying to get Pi02 wired up and rolling!

Matt