A New Sensor Platform!

A project log for - A full stack IoT platform

A full stack project dedicated to easily collecting, analyzing and sharing IoT sensor data.

Luke BenoLuke Beno 08/17/2015 at 15:390 Comments

So I've done some project logs about my 915MHz Droplet hardware and Hub. They have really been solid pieces of hardware but I'm always looking to improve. There are a few things that I dislike about droplets that are preventing me from proliferating further:

1) Cost - they cost me about $25 to make, that is pretty cheap but if I could get the price down to $12.50 the I could make twice as many sensors and that is a big deal.

2) Requires a Hub. The hub is cool but for getting people started, I wanted to create something where the hub was optional. Ideally it would interface directly to someones smart phone....

3) Batteries - the 2450 battery is pretty neat, compact and powerful. In testing, I got about 5months life out of it. When it dies, a new one needs to be soldered into place. I don't find this to be an issue for me but if I wanted to sell to others, it was apparent that it is not a feasible solution. The CR2450 in small quantities is also expensive and drives some shipping issues (lithium cells).

So I set out to create a new low cost, easy to use sensor node and here it is:

Like all of my boards, the design is done in upverter and I fab my prototypes at OSHpark. I'm using a on board PCB trace antenna (for cost reasons) and have selected the HopeRF RF75 Chip for a radio. The primary reason for using this radio is that it is low cost but I wouldn't let that fool you, it is also an awesome chip for the price. It is nearly equivalent to the venerable Nordic nRF24 chip and I've run many tests and it is for sure over the air compatible.

The MCU is a MSP430G2553IRHB and I am using Energia as the programming IDE. This is the Arduino clone that is compatible with TI processors. Also I must say that this has been done with a lot of collaboration with the forum which is a really awesome group of people who I like to talk shop with.

For Battery, I've chosen to use a AA form factor. This is driven by a variety of reasons, mostly the fact that this is the most common battery in many households and can be purchased anywhere so I don't need to supply one myself. It also has excellent capacity for long term life.

It does sound a little skewed but relatively speaking is large in physical size. Anyway, only a single cell is used so there is also a NCP1400 boost converter integrated not he board to boost the battery voltage to 3.3V. This also means that every last drop of power will be extracted from the battery due to the NCP1400's extremely low dropout voltage.

Here's an image of the first 6 prototypes:

Sandwiched between the battery holder and the board is a 20pin connector that has 2 programming pins, 2 ground pins, 1 3v3 power pin and 15 GPIO.

The pin out is designed to plug directly into a TI MSP430 Launchpad for easy programming. By adding two wire jumpers, you can even use the same Launchpad debug UART.

I'm also in the process or writing a library for the board which will be Energia (and Arduino) compatible. The radio interface is inspired by the Enrf24 library by another member. It has a super easy API. Here is an example of a barebones transmit code:

It inherits the print class because everyone knows how to use that! That sketch compiles into 4k of code...

So the one thing that I haven't talked about yet is how this hardware achieves my second goal of interfacing to a smart phone. Usually BLE is used for this function but BLE is notoriously complicated and expensive for DIY because it requires expensive modules.

Well this hardware does support a limited about of BLE functionality! It use the same trick that was discovered here but abstracts away nearly all of that complexity and uses almost the same API:

There are other calls as well but these are the easiest. This will transmit a standard BLE advertisement with the text "Hello World".

Right now there are some limitations most of which I don't think effect wireless sensor applications but are prohibitive against all of the things that one could do with a full BLE stack.

1) Only Transmit is supported right now (Device -> Phone)

2) The Maximum payload of data is 14 bytes

Like I said, if my only intent is to transmit sensor data, 14 bytes is plenty!

I'm also working on an iPhone app that will receive these Beacons and forward information to for storage and further processing.