Archive for category Technology
Here’s a really beautiful assembly of a DIY laptop with Raspberry Pi at its core from Instructables. It requires some woodworking skills as well as computer assembly.
Notes about Raspberry Pi, an ARM based pc about the size of a deck of cards which costs $35. I might use it as a replacement for the Asus WL520 GU wifi modems I’ve been using as an Xbee WSN Gateway.
- Home Page: http://www.raspberrypi.org/
- Wiki: http://elinux.org/RaspberryPiBoard
- Quick Start: http://www.raspberrypi.org/quick-start-guide
- Verified Peripherals: http://elinux.org/RPi_VerifiedPeripherals#USB_WiFi_Adapters
- OpenWRT for the Raspberry Pi- probably won’t use this as OpenWRT is focused on WiFi functionality.
- Raspberry Pi OS Downloads
I started out with the 4G SD Card from Newark that was pre-loaded with wheezy-debian. Now I’m using the distro from Adafruit called Occidentalis v0.2. It includes ssh and other features that makes it easier to confugure.
Copy the image to a 4G SD Card using Win32DiskImager. Basically you download an OS image to a windows machine and copy it to an SD Card. When using WinDiskImager, pay close attention to your read/write actions because it’s possible to overwite the wrong drive.
Before selecting an SD Card, look at the list in Verified Peripherals. Not all SD Cards work the same, and I spent a lot of time trying to launch the OS even though the image copy was successful. If you get to the point where you’ve successfully copied the image but it won’t boot up, cut your losses and try another SD Card.
- login as: pi, password: raspberry
- I set up a root account and did most of the installation as root
Expanding the partition on the sccard
Once installed, expand the SD Card partition to fill the 4G memory space. The image on the 4G sdcard is 1.8G. This describes how to expand the partition to fill the entire 4G.
Set up SSH so you can access the Raspberry Pi from a terminal program of via Putty and/or WinSCP.
ssh-keygen -t rsa -C "firstname.lastname@example.org"
I used the CISECO daughter board kit which costs about $6 which has a GPIO connector and a place to hook up an xbee to the serial port on the GPIO. It derives the 3.3V from the GPIO and it includes an array of through holes for misc prototyping.
- XBee Radio PCB daughter board- by CISECO – basically a breakout board for the GPIO connections with access to the serial port and 3.3V.
- Getting started with GPIO and PythonThis is the first of two articles showing basic GPIO on the Raspberry-Pi using the prototype area of the Slice of Pi. This covers basic details on the GPIO pins, setting up a Python library to allow access to the GPIO. There is an example circuit to build on the Slice and some code to get the outputs working. This was originally a blog post on Matts blog at http://lwk.mjhosting.co.uk
- Serial port on the GPIO connector accessed as: /dev/ttyAMA0
- More notes on serial Interfacing: http://lavalink.com/2012/03/raspberry-pi-serial-interfacing/
On the Adafruit distro, Occidentalis v0.2, I was having some issues with reading the serial port in my python code. I kept getting erros related to the serial port being in use. Some research got me to this article on the RaspberryPi.org site and this article from Clayton’s Domain. I edited a file, /boot/cmdline.txt, and this is what it came down to (all on one line):
/boot/cmdline.txt dwc_otg.lpm_enable=0 rpitestmode=1 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait
Install Apache on Raspberry Pi
Eventually I will want to set up a web interface to allow users to edit the gateway config items, like the network protocol and to manage the various sensors, python scripts, etc. For now, I’m just going to manage it it by ssh command line.
- Webmin- “Webmin is a web-based interface for system administration for Unix. Using any modern web browser, you can setup user accounts, Apache, DNS, file sharing and much more. Webmin removes the need to manually edit Unix configuration files like /etc/passwd, and lets you manage a system from the console or remotely.”
- Raspcontrol- PHP based Dashboard application. More about status then configuring.
Installing Python components
Rasberry Pi, default linux install, has python already installed.
I needed these modules to allow me to access various web services like Cosm (pachube), Thing Speak, Open.Sen.se, and my own SOAP based service that I wrote in C#.
We need some extra libs to run the sensor programs.
Check if python is installed and what version is installed
WGet the file then unpack it:
wget http://sourceforge.net/projects/pyserial/files/pyserial/2.5/pyserial-2.5.tar.gz/download tar -zxvf pyserial-2.5.tar.gz cd pyserial-2.5 python setup.py install
simplejson 2.6.1 is compatible with python 2.5.
WGet the file then unpack it:
wget http://pypi.python.org/packages/source/s/simplejson/simplejson-2.6.1.tar.gz tar -zxvf simplejson-2.6.1.tar.gz cd simplejson-2.6.1 python setup.py install
The suds libs provide services for SOAP calls.
Need to install python’s setup tools:
apt-get install python-setuptools
cd /home/tinaja/downloads/ wget https://fedorahosted.org/releases/s/u/suds/python-suds-0.4.tar.gz tar -zxvf python-suds-0.4.tar.gz cd python-suds-0.4/ python setup.py install
Used by Cosm (pachube)
http://pypi.python.org/pypi/python-eeml/1.1.0 ? git clone git://github.com/petervizi/python-eeml.git # cd /home/tinaja/downloads/ # wget http://pypi.python.org/packages/source/p/python-eeml/python-eeml-1.2.0.tar.gz # older version - wget http://pypi.python.org/packages/any/p/python-eeml/python-eeml-1.1.0.linux-i686.tar.gz # tar python-eeml-1.2.0.tar.gz # python setup.py install
- Source code: https://github.com/petervizi/python-eeml/
I’ve loaded the python code I’m using on GitHub:
The Raspberry Pi can be wifi enabled with a USB based wifi device. The main concern would be with power consumption; the raspberry pi runs off of a 5V (currently 700mA) supply (like a cell phone charger) and a wifi device might strain the load.
For now (8.26.2012) the wired ethernet configuration works great. It can just plug into a IP provider modem.
To change the boot-up text
Did this to brand the OS as one I set up. Only for show…
The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Type 'startx' to launch a graphical session This version, from Adafruit's Occidentalis v0.2, set up by: _____ _ _ _ _ |_ _(_)_ __ __ _ (_) __ _ | | __ _| |__ ___ | | | | '_ \ / _` || |/ _` | | | / _` | '_ \/ __| | | | | | | | (_| || | (_| | | |__| (_| | |_) \__ \ |_| |_|_| |_|\__,_|/ |\__,_| |_____\__,_|_.__/|___/ |__/ TinajaLabs.com, Summer 2012 -----------------------------------------------------
To set a program to start at boot-up
To automatically run the main python script, allsensors.py, when the computer starts…
Edit /etc/rc.local and add the python line shown below:
#!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. # Print the IP address _IP=$(hostname -I) || true if [ "$_IP" ]; then printf "My IP address is %s\n" "$_IP" fi # add this for Tinaja Labs sensor tracking python /home/tinaja/allsensors.py & exit 0
To set up Tomcat Server
At some point I might want to set up a Tomcat server and use it with some Java apps. Later.
- JDK for Linux ARM, JRE for Mac OS X: http://www.raspberrypi.org/phpBB3/viewtopic.php?f=34&t=14635
To watch the message log file
This allows you to see the system messages generated by the script as it sends various sensor readings to the web services.
cd /var/log/ tail -f messages
To kill the Tinaja python script
Look for the process id of the python script with this command:
ps aux # for a full list ps aux | grep python # to see only python processes
Take note of the process id number and issue this command:
kill 9999 # where 9999 is the process id number
That’s all I have for now, hope you found something useful here.
$250? Why does cool have to cost so much?
I have been building my own home wireless sensor network for the last 2 years. Temperature, light, hall effect, gas detection, FSRs, the Tweet-a-watt, etc. using XBee modules and a wifi gateway that uses an open source OS (OpenWRT) and Python scripts to send data to web services (like Pachube.com, ThingSpeak, Open.Sen.se). I’ve been studying home energy automation for a couple of years now and I’m beginning to understand the various aspects of what it takes to put together components to collect and communicate meaningful, actionable information.
The Nest Learning Thermostat has some cool features. It learns… and that’s fantastic. As I understand it, you can set the thermostat up or down at different times and it will remember what you set and build a schedule that repeats your preferences. That’s very cool. It has a motion detector to sense the presence of people in the house and turns the system down/off. That’s cool, too. But there are some serious issues that I see over and over in this field.
First off this device costs too much. It should be priced at somewhere below $50 for the thermostat. That would put it at a price point to get it into the homes of many more people. The more consumers use it, the more we can reduce our dependence, as a nation, on foreign sources of energy. That’s a national, heck, a global goal, right?
Next, I don’t see any way to help consumers understand meaningful and detailed results of the savings they create by using the thermostat. They might see an overall drop in their gas or electric bill, but how much can be attributed to the thermostat as opposed to the incandescent bulbs they replaced with CFLs, or by the shading of a porch, or by being more diligent in turning off the entertainment system (including the STB) and vampire loads.
Also, the designers have created a thermostat in a very traditional form. IOW, they’re not “thinking different”. The learning aspect is interesting, but I’d rather just go to my android app, or the web site and just start with a default profile for my region, house size, etc, and adjust to taste. Otherwise, I’ll not look at it again unless there is an exception to the rules, like going on a long weekend vacation.
Similarly, the designers are stuck with the concept that we need a thermostat on the wall and that we would ever want to get up off the couch and go look at it. Why spend the effort in a device that shouldn’t even require a UI. IOW, the phone app or web page should be the preferred UI.
A “think different” approach might have a temperature sensor and a motion detector in each room and these very cheap components can inform the HVAC controls how to adjust for optimum comfort vs cost. The display and controls don’t need to be on a wall in the hallway… That’s as old as the the round Honeywell thermostats people were referencing in the comments on the Wired Magazine article.
I also believe that the display devices that you get with most home automation system, perhaps in the style of elaborate refrigerator magnets with displays, are destined, too soon, for garage sales and Goodwill stores. Let’s extend the devices that we already have for control surfaces, like tablets, smart phones, game consoles. For those who don’t have smart phones in their homes, how about something like a cheap android phone form (w/o the phone functions), music players, remote controls, wifi tether devices; any devices that can support apps.
I believe profit is deserved by all who work but how much is enough? If you look at Chris Anderson’s approach describing how to make a profit on your products (), you would sell at 2.3 times the cost of parts; and that’s a good profit margin. If I did my math right, it looks like the BOM costs about $108.
I suppose they might be adding in some of the costs of running a free web service that stores all the data so clients can see the ongoing history of their thermostat settings correlated to the temperature of their house and the local weather.
Lastly, my impression is that the design isn’t finished. Design doesn’t stop until you’ve optimized the functionality, the design, and the cost. In this era of programmable microcontrollers, arduino shields, MEMS sensors, surface mount components, standard protocols, inexpensive cloud based web services, the Internet of Things… we need to delight consumers by making the products attractive, pervasive, and affiordable… for everybody.
On the drive to Maker Faire on Friday, I had a few dark moments wondering if anyone would really care about the work I’ve been doing on wireless sensor networks. I imagine that there are all these sensors struggling to be heard and I’ve been constructing a platform to help facilitate that. But would anyone share that vision? On I drove…
My friend, Terence, helped get us set up with the booth and finally with no hope of getting any internet access (seems it was over-taxed most of the time), we retired to the Friday evening’s beer and paella dinner. We met a lot of wonderfully creative Makers. The Maker Faire is such a wonderful collection of creativity in all it’s myriad forms. It is inspirational and gives me hope. Terence made a good point that Obama should have come to the Maker Faire to see an example of what makes America great.
Well I have to say I was very surprised to see how many people came to our booth to learn about wireless sensor networks. I’m exhausted and my voice is shot but I feel very satisfied to see so much interest in what we have built. Thanks to all who came by the booth. I hope that this experience can be the beginning of an exchange of ideas to make more robust sensor networks that can provide meaning to those who seek to extend what we can know about the world around us. I heard so many great ideas and I hope we can keep the them coming.
Now that the Maker Faire is over, I plan to focus on this web site for the next couple of weeks and get the tutorials in order. I’ve started some of them and have not yet published some others. I promised everyone who I spoke with at the Maker Faire to get these completed and that’s where I’ll be focused. If anyone wants info about any particular part of the platform, sooner than later, please let me know and I’ll be happy to move that to the front of the line.
Thanks to all who came by the booth, to Terence, to my friends who’ve been supporting my efforts to Make my vision, to Aurora for putting up with my project clutter, and thanks to the folks at Maker Faire for putting on a great show.
A few weeks ago we had a serious storm here in the SF Bay area and the power went out for about 5 hours. It took a few days for me to realize that the internet connection was running pretty slow, so I started trying to trace it.
I’m using Comcast IP service and right out of the cable modem I was getting 21Mbps (using the Speakeasy speed test). After the first Netgear gigabit switch the bandwidth dropped to about 3.g Mbps and after the second, it dropped less than 1.0 Mbps. Killin’ me!
So after some Google searching I found that the Netgear GS605 v2 was susceptible to power surges which often happen during or after power outages. The problem is apparently in the poor quality capacitors used. Once replaced, they are back to full force with less than $10 worth of parts and about 20 minutes. Here’s how I replaced the capacitors.
- Soldering Iron
- Solder Sucker
- Torx Screwdriver (T8)
- 2 x 1000 uF 10V, 1 x 470 uF 25V capacitors
Open it up:
On the bottom there are some rubber feet that can be peeled back to reveal tiny torx head screws (from my set I used a T8). Unscrew the 4 screws. The PC board is not secured further, so when you remove the back, you can jiggle the PCB and it will come out as a single unit.
Removing the capacitors:
On the PCB you can see 4 capacitors:
- 2 x 1000 uF, 10V
- 1 x 470 uF, 25V
- 1 x 100uF, 16V (looks like part of the power regulator, I did not replace)
To remove the capacitors, I first tried using one of those solder sucker tools but I think my soldering iron it not getting hot enough. I basically put some side pressure on the exposed post oposite the capacitor side of the PCB and when the solder melted, the capacitor slipped out at an angle. Doing the same on the other post released the capacitor. I removed the 2 1000 uF caps and the 470 uF cap.
I went to Radio Shack and purchased:
- 2 x 1000 uF, 35V – $1.79 ea.
- 1 x 470 uF, 35V – $1.49 ea
The replacements from Radio Shack were their generic versions, bigger in size and higher in rated voltage but I wanted to get it done and not wait a few days for an online order.
Because the new capacitors were so large, I had to mount them sideways. on the PCB. This is generally straight forward if you pre-bend the leads. Put the cap in place and with needle nose pliers, pre-bend at the appropriate lengths. The 1000 uF cap closest to the edge needed to be bent with the leads in a slightly overlapping form, but once you get in there it should be obvious. Here’s what it looked like.
According to this article by Katie Fehrenbacher at Gigaom, the developers of home energy management systems have figured it out that there’s no future in dedicated dashboard devices when you have a marketplace full of iPhones, Android phones, iPads and other tablet devices.
The dedicated dashboard devices would be able to display various conditions of your home energy system, your local weather, etc., and to control devices in the home. But now that we have Android phones and iPads, these new devices can access the web and use either native web pages or specialized apps.
It’s a no brainer. Have a web based system as the default UI and provide specialized apps for hand held controls.
It will be interesting to watch the progress on artificial photosynthesis.
“The Joint Center for Artificial Photosynthesis (JCAP), to be led by the California Institute of Technology (Caltech) in partnership with the U.S. Department of Energy’s Lawrence Berkeley National Laboratory (Berkeley Lab), will bring together leading researchers in an ambitious effort aimed at simulating nature’s photosynthetic apparatus for practical energy production. The goal of the Hub is to develop an integrated solar energy-to-chemical fuel conversion system and move this system from the bench-top discovery phase to a scale where it can be commercialized.”
Tendril has a post on their blog that talks about an emerging style of energy monitoring connectivity that they are calling a Hybrid-HAN (home area network). It envisions a dual network, one that utilizes a the Utility’s smart meter and a second provided b y the consumer; a wifi router, for example. They figure this is a good thing because it will unburden the smart meter from the growing list of sensors and controls that will become more popular as consumers learn to understand the benefits of monitoring their home environment.
The consumer side of the system uses something called the ZigBee Smart Energy Profile. Not sure about the Smart Energy Profile but Zigbee is a well known low power wireless protocol that I’ve been experimenting with for a low power, inexpensive monitoring system. Each Zigbee (aka xBee) module can transmit or receive signals that cover most residential buildings and costs about $20.
Interestingly the image shows the data from the consumers gateway (basically a specialized router) being fed back to the utility company but I’m not sure that’s the way it will play out.
In the future, data locality will not be so crucial. There are always concerns about this or that silo of data that stands alone and unaccessible from external sites. But as we grow to understand the benefits of shared data, any system will be able to aggregate date from any other system (with proper authentication of course).
Hooking up a gas sensor is more or less the same as with the voltage divider model but it has an extra twist. The MQ Series sensors which I used for gas sensing (average cost= $5) have a heating element to react with the gases they detect. I’ve played with the MQ-2 – General combustible gas, MQ-3 - Alcohol, MQ-4 - Natural gas & Methane, MQ-5 - LPG or Propane, and the MQ-7 - Carbon Monoxide (CO).
For the analog sensing it is the same as the classic voltage divider model (see the notes on the main sensor post). Because I use an XBee analog input to read the sensor output value, the V+ is at 3.3V (which is what the XBee runs on) and the V- is at Gnd.
Here’s the schematic I set up (click to see a larger view):
It might seem more complicated than it needs to be, but basically we have a 5V regulator supply (w/ 7805) for the heater element, a 3.3V regulator supply (MCP1700-3302E/TO; same as the Adafruit XBee Adapter PCB) to power the XBee module, then the MQ series device. I’ve connected the gas sensor output to pin 20 of the XBee module, so we’ll be reading the gas sensor voltage on analog input 0.
One thing to note about these sensors is that they are not calibrated to detect specific parts per million, etc. They can also be affected by the ambient temperature and humidity. I’ve used them primarily to know when the gas concentrations are high or low, trending up or down.
Here’s a live sample graph of the data tracked at Pachube.com:
The spikes you might see on the chart are, I am pretty sure, generated by some problem of collection downstream of the sensor and the xbee radio. Hopefully, I’ll get this resolved soon.
Next Post: FSR Sensor
Next Group: Radio:XBee