panStamp is now fully Arduino-1.5 enabled

posted Aug 12, 2014, 3:14 AM by Daniel Berenguer   [ updated Aug 25, 2014, 8:15 AM ]

Its now official, Arduino-1.5 is now supporting both the panStamp AVR and the panStamp NRG platforms. We can now develop code and program our modules from a unique IDE, despite of the microprocessor being used (Atmega328p or CC430F5137). Having full control over Arduino's hardware files, we have separated the MCU and radio core functionality from the protocol files. As result, we are now able to provide the same core interface syntax for our two architectures and also keep all the SWAP protocol stack into a common library.

Another advantage about this is that new protocols can be implemented as separate Arduino libraries since all the generic RF functionality is contained in the "cores" folder.

A new documentation wiki is being created at this moment, containing information about the new API and the integration with the Arduino 1.5 IDE. The old wiki will be kept alive as the documentation basis for the library and API compatible with Arduino 1.0.x. We encourage our current users to try the new API and sample sketches out and help us beta-test the toolchain for our AVR and NRG platforms. Of course, only some developers are currently owning a NRG beta kit but this is something that will be solved, once the first commercial batch of NRG modules is released in October.

This project has become a titanic work, developed along just a few weeks. Your collaboration will be extremely appreciated!

EDITED: A new forum section has been started to follow the evolution of this project and document bugs and fixes.

EDITED: The new wiki on Github is up and running!

panStamp NRG will be compatible with Arduino 1.5

posted Jul 4, 2014, 8:48 AM by Daniel Berenguer

Yes, we can agree in that this is an absolute change of direction in terms of programming environment but the latest 1.5-beta of the popular IDE has proven to be very stable. In case you don't know, Arduino 1.5 simplifies the integration with third-party architectures and boards. This means that panStamp NRG and panStamp AVR can co-exist within the same IDE and even share common libraries.

panstamp compatible with Arduino 1.5

Another nice feature of Arduino 1.5 is that each platform and each core has its own physical space in the IDE so there is no more need to share cores with other microcontrollers and juggle with endless definition blocks. This also means that we will get full control over the cores files, the way they link and also over how the platform is initialized. As an example, we will no longer need to include panstamp.init() in setup() since it will be called in the background, before the setup() call.

This new openness to new platforms will let us integrate the basic radio routines (CC1101 class) into the cores and implement the SWAP stack in a separate library, turning panStamps into more adaptable platforms for other SWAP communication schemas and wireless protocols.

This does not mean that the current work on Energia is abandoned. On the contrary, we will provide working cores and libraries for Energia as soon as some minor issues get solved.

Regarding panStamp NRG, we are finally expecting to do the formal release of our new modules in September along with the necessary code for Arduino 1.5.

Soil moisture sensor unboxed

posted May 20, 2014, 11:48 AM by Daniel Berenguer

We just wanted to show some pictures about a recent project where we had to build some low-cost wireless soil moisture sensors. This post is a continuation of this other post but this time panStamp NRG is the module being used. Given its lower current consumption and wider voltage range, this sensor module should last around a year with readings every ten minutes or so.

Figure 1 : Cheap resistive soil-moisture sensor being read from a panStamp

We had to adapt the shape of the wire antenna to fit the inner space of the enclosure but we are still getting sufficient ranges for the project.

Figure 2 : The whole circuit being powered from a CR2032 battery

Configuring the right measurement and transmission interval is crucial since CR2032's 220 mAh could run out quickly.

Figure 3: wireless sensor module into enclosure with external on/off switch

Breaking limits

posted May 14, 2014, 9:45 AM by Daniel Berenguer

Maximum communication distance is a common term, appearing in most discussions about WSN's (Wireless Sensor Networks) and wireless products. If you have ever worked with panStamps or with other wireless hardware then you probably know that distances mainly depend on four factors:

1. Rx sensibility : high sensibility translates into the ability to catch weaker signals by our device
2. Tx power : high-power signals can travel over even longer distances
3. Carrier frequency : lower frequencies achieve longer distances
4. Data rate : signals with lower bitrates are better "understood" by distant receivers so let's say that distances can be longer.

As a reference, we usually say that panStamps can communicate over 200 meters at 38400 bps (bitrate) and 0 dB (tx power), direct line of sight of course. On the other hand, even if we have not done any extensive test with other values, we can say that more than 500 meter could be achieved for 4800 bps and +12 dB.

But are <1Km communication distances enough for WSN's? It depends. Some hundreds of meters may be sufficient for building automation, personal area networks, green houses and maybe small-to-medium fields but Smart Cities seem to be demanding for longer distances. On the other hand, wireless meshes are no longer an option in some situations, due to the additional complexity. What to do then?

During Smart City Expo it was quite clear, at least for us, that long-range RF coverages were preferred over mesh networks. High-power stations with high-gain antennae can be installed at high positions, providing even longer ranges and wider coverages.

At panStamp we are currently working on a long-range design, a carrier board that will turn our panStamps into high-power and high featured nodes. We are still not sure about the name, maybe "ultranode" but we are open to other suggestions. In the meantime, here you have some pictures of our first prototypes, called "ultraShields":

Figure 1 : ultraShield prototype

ultraShield includes a CC1190 front-end and footprints for SRAM and EEPROM memory IC's. On the RF side, the CC1190 adds higher Rx sensibility thanks to its LNA (Low-noise amplifier) and more Tx power. The good thing about the LNA is that devices featuring the CC1190 should be able to receive signals from standard (low-power) panStamps over longer distances. We are currently expecting to get over 2 kilometers between high-power and low-power modules but this has still to be confirmed and we won't do so until we build the new prototype.

Figure 2 : high-power modem

ultraShield was initially designed to act as a memory and range extender for panStamp but we won't be able to get the maximum capabilities of the CC1190 IC with such a small board.

Figure 3 : high-power modem

Instead the new ultraNode will be bigger and will host an on-board linear regulator capable to supply at least 500 mA for the Power Amplifier and probably a RS232 connection to be used with external GPRS/3G modems and computers (via a USB/RS232 cable). As you may guess, ultraNode will specially fit the role of a central node with access to a continuous source of power. Antennae are another issue. We still have to search for outdoor antennae with decent gains, something around 9 dBi should be fine, probably a half-wavelength antenna.

Did we say that we are about to start a crowdfunding campaign around the NRG module? We want to start the campaign in 1-2 weeks and offering this long-range board as an optional pledge would be great. Please visit our announcement page in the next days or subscribe to our twitter account for more news.

panStamp and lagarto now compatible with GroveStreams

posted Apr 23, 2014, 5:10 AM by Daniel Berenguer   [ updated Apr 23, 2014, 6:18 AM ]

The IoT platform

GroveStreams is a new IoT platform in the cloud designed to interact with users and remote M2M networks. Some developers let us know their interest in integrating with GoroveStreams since it seems to be providing some nice capabilities such as:
  • On-line graphs and data logs
  • Event handling and calendars
  • SMS alerts
  • GUI widgets that can be inserted into custom web pages
  • RESTful API
Lagarto-MAX is very adaptable to this kind of online services so we accepted the challenge to add compatibility for GroveStreams. This took us a few hours except for some minor issues that were rapidly solved thanks to the excellent support provided by the GroveStreams development team.

GroveStreams introduces a new concept called "component template", which lets us format data streams in a common way. This is specially useful when you try to upload temperatures or power consumptions from multiple sources. In any case, we suggest to keep your eyes on this platform. For the purpose of this development we have just scratched the surface so please don't take this post as a deep analysis about GroveStreams.

Integration with lagarto

GroveStreams is device oriented so we can transmit multiple datastreams (endpoint values) associated to a common device or component into a single HTTP request.However, lagarto-max's Event Manager is mostly endpoint oriented so we will be taking each endpoint value as an independent component from GroveStreams.

GroveStreams Component view. Lagarto-MAX pushes a single data stream per component

Figure 1 : GroveStreams Component view. Lagarto-MAX pushes a
single data stream per component

The above components and data streams don't need to be created from GroveStreams since they are automatically created by the platform after receiving the first requests from lagarto-max. Programming such requests from lagarto-max is as simple as creating a new event. This is in fact the same procedure as for the rest of cloud based platforms currently supported by lagarto (Xively, ThinkSpeak,, ...)

Upload event from lagarto-max

Figure 2 : Upload event from lagarto-max

Once a new event is created we need to define the trigger condition. For this case we are going to trigger the event whenever Humidity1 changes (see Figure 3 below).

Trigger condition from lagarto-max

Figure 3 : Trigger condition from lagarto-max

Finally, we need to create the action from lagarto-max where the value of Humidity1 is pushed to GroveStreams. "Template ID" is optional but if you use a predefined template then GroveStreams will be able to format the contents of the datastream (floating point, units, ...) and even predefine some tasks for them.

New action - Push value from lagarto-max

Figure 4 : New action - Push value from lagarto-max

Once you get lagarto-max running the new events you will see new components from GroveStreams as shown in Figure 1.

Humidity values being logged by GroveStreams

Figure 5 : Humidity values being logged by GroveStreams

GroveStreams also provides some nice GUI features, exportable to custom web pages. The folks from GroveStreams created a dashboard for us:

GUI widgets from GroveStreams

Figure 6: GUI widgets from GroveStreams

In summary, GroveStreams appears as a very promising alternative for anyone wanting to manage M2M data from the cloud. We wish the best to the GroveStreams team and also expect that the panStamp community will enjoy this new integration as well. A new version of lagarto has been released, including support for GroveStreams. You can download it with the rest of our Python tools from our Download section. A new Raspbian image has also been uploaded to our repositories. You can follow these instructions showing how to grab this image into a blank SD card.

Playing with GDB on the new panStamp NRG

posted Mar 14, 2014, 12:16 PM by Daniel Berenguer   [ updated Mar 20, 2014, 2:33 PM ]

The new NRG board is finally being beta-tested. This means that we should be able to launch a commercial version in less than three months. In the meantime, we have created a special forum section where to discuss about our beta tests and the ongoing developments related to panStamp NRG.

This article shows an introspective view about GDB_bootloader, the compact bootloader included in our modules. This reduced version of GDB server lets us program the boards serially from msp430-gdb by means of a standard USB-UART (3.3V) gateway connected to the target board. On the other hand, NRG boards can also be programmed and debugged via JTAG SBW as well, in the same way we program launchpads. In summary, we provide two different programming methods depending on your needs and personal preferences.

Besides the firm-loading capability, the serial bootloader also implements a set of GDB instructions so that we can navigate into the internal memory of the CC430F5137 MCU and read/write values from it. This guide shows how to exploit this feature.

First of all, we need to put the board in programming mode, according to this guide. Once your serial converted is connected to the target board and Pin 12 tied to ground, restart the board. At this moment panStamp NRG will enter in programming mode. We can then open a terminal and run msp430-gdb. If you didn't install msp430-gdb previosly in your computer you can run it from Energia/hardware/tools/msp430/bin/.

msp430-gdb -b 38400 -ex 'set debug remote 0' -ex 'target remote your_serial_port'

Once GDB starts you will see something like this:

GNU gdb (GDB) 7.2
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "--host=x86_64-unknown-linux-gnu --target=msp430".
For bug reporting instructions, please see:
Remote debugging using /dev/ttyUSB0
0x00008000 in ?? ()

OK you are now "into" the MCU so you can query the value contained at any address with "x":

(gdb) x 0x1800
0x1800:    0xffffffff

Here we queried about the contents of address 0x1800, which is the start of the Info D region, one of four "pseudo EEPROM" spaces provided by the CC430 MCU. This page shows how the memory of the CC430F5137 MCU is organized.

On the other hand, we can also list the contents of a group of addresses. Below /10h means that we want 10 values, starting from 0x1800 to be displayed in 16-bit format:

(gdb) x /10h 0x1800
0x1800:    0xffff    0xffff    0xffff    0xffff    0xffff    0xffff    0xffff    0xffff
0x1810:    0xffff    0xffff

All the above 0xffff's mean that those memory locations remain erased. since we are working with Flash and not with EEPROM, before writing a single byte we need to erase the whole section. Don't worry too much about this since the panStamp library already does this for you.

OK now let's say that we want to write 0x1234 into a specific location with address 0x1885 (Info C memory space) which has previously been erased so that the current value is 0xFFFF:

(gdb) set {short}0x1885 = 0x1234

In summary, Rick Kimball did a great job and maybe in the future his compact GDB server might support new commands. Why not dreaming about debugging code on the CC430 with GDB some day?

Domodesk's Sensatel now compatible with panStamp

posted Jan 23, 2014, 6:21 AM by Daniel Berenguer   [ updated Jan 23, 2014, 6:25 AM ]

Our friends from Domodesk have just released a new version of Sensatel, their popular software for telemetry and control, which adds support for panStamp and SWAP: link to Domodesk's announcement.

Figure 1: Configuration of analog input

Sensatel focuses all kind of control projects, especially those related to Data Center Environmental Monitoring and Building Automation - Domodesk has a long experience in Spain and South America providing products and services in these areas -. Moreover, Sensatel is already compatible with other popular automation technologies such as Modbus, Zigbee, IEEE802.15.4 and proprietary IP.

Figure 2: Custom graphs generated from Sensatel

Domodesk is also an experienced integrator of panStamp. Having done some nice automation projects in Spain, this experience has been critical at the moment of developing the new version of Sensatel and OcuoX, Domodesk's next generation of Home Automation software.

panStamp NRG is coming...

posted Nov 11, 2013, 3:51 PM by Daniel Berenguer   [ updated Nov 12, 2013, 4:26 AM ]

panStamp NRG, the new version of our flexible wireless modules, is almost ready for beta-test. We have been contacted by lots of developers wanting to help us test the new platform and this is the kind of thing that makes us really proud. We are in fact preparing a special batch of beta units for this community of kamikazes, containing all the necessary to start developing for the new panStamps.

panStamp NRG
Figure 1 : New panStamp NRG

As you may see in the picture above, specifications have changed a bit since the first announcement was posted. We have omitted an on-board EEPROM since the CC430 already includes a specific region in flash (info memory) to save data into. On the other hand, future versions of the board will probably include a footprint on the bottom side for SPI RAM or EEPROM IC's.

One of the strengths of the new panStamp is that each board will be uniquely identifiable in the world thanks to the wafer ID and X-Y position of the MCU in the wafer. Thus, we will be able to use this unique ID as a MAC for our projects or even develop a DHCP mechanism to dynamically assign addresses to our wireless nodes.

And not less important, the onboard LED, thermistor and (optional) accelerometer will make our tiny modules more autonomous than ever. As an example, only a panStamp connected to a 3V battery will make a cheap wireless temperature sensor without the need of a carrier board or an external sensor.

Cheap wireless temperature sensor with panStamp

Figure 2 : Wireless temperature sensor powered by a CR2032 coin cell

The CC430F5137 is a surprising MCU. Hidden behind the modesty of a MSP430, it inherits all the low-power features of Texas Instrument's popular 16-bit cores. Besides the integrated radio, it also provides lots of interesting things like addressable digital pins, unique ID, 12-bit ADC's, hardware RTC, etc. This SOC works in fact perfect with out SWAP protocol, it is very reliable, efficient and, very important, it works with Energia. This great MCU, combined with our stack and all the onboard sensors and carrier boards will make the new NRG modules a serious alternative for any kind of low-power wireless project.

panStamp NRG will be proudly showcased at Smart City Expo (Barcelona) between 19-21 November so if you are in Barcelona around those dates please come to visit us at Hall 2, booth F 648 (Innovation Zone).

Smart City projects

posted Oct 10, 2013, 3:14 PM by Daniel Berenguer   [ updated Oct 11, 2013, 12:36 AM ]

panStamp started as a solution mainly for personal and home networks. We then realized that the Smart City concept is more than a simple commercial noise. Thus, after being invited to participate in some challenging projects we had to reconsider panStamp's initial communication schemes. As result, we recently added the extended address schema which opens the door for projects where handling hundreds or even thousands of nodes is a real need. Doing so panStamp had the opportunity to become the "wireless sensing gear" behind these projects.

panStamp in Smart City projects

These projects, among others, will be showcased at SIMO Network between 17th and 19th October in Madrid, where we will have the opportunity to talk to the attendance about panStamp and its natural adaptability. OK... we will also talk about how inexpensive is deploying wireless networks with panStamp...

For anyone who is not attending SIMO Network and still wants to know about our recent projects, we will release some white papers in the next weeks, before Smart City Expo, one of the most important trade shows and word congresses around Smart Cities and wireless sensors.

Fhem, German-engineered open automation

posted Sep 23, 2013, 9:27 AM by Daniel Berenguer   [ updated Sep 24, 2013, 2:26 PM ]

Fhem is an open source Home Automation software developed by a motivated community of German enthusiasts. The entire software is written in Perl so this is a real multiplatform application.This is in fact the kind of software that everyone wants to have at home as the central domotic server. Web interface, online charting and Perl scripting are some of fhem's main features but what really impacts the first time you read about this powerful application is the long list of supported devices and technologies.

Figure 1 : Fhem's standard web control interface - default style

Fhem also has some GUI front-ends for Android and iPhones, a bit like OpenRemote but fully focused on Fhem's centralized system. Here you may want to visit Fhem's website to see what the current offer of graphic front-ends is.

figure 2 : Fhem web GUI - Black style

Having worked in the Home Automation industry for years, Apart from Mr. House, which is now a bit "outfashioned" in my opinion, fhem is maybe the strongest competitor against the commercial army (HomeSeer, HAL, ...). Well, I have to mention other promising platforms like OpenDomo and FreeDomotic - let's keep an eye on them - but when you follow the creative activity around Fhem you can immediately feel how the community is pushing the project from behind, a real envy for anyone trying to maintain his own open source initiative, believe me.

Figure 3 : Fhem's charting front-end - ios7 style

But you know what? Now panStamp is proudly counting on some brilliant contributors from the fhem community. This brings us a lot of satisfaction since the fhem members are known to demand the best from their home systems and panStamp is again proving its extreme flexibility and adaptability to almost any environment. As result, only a few weeks took Andre to develop a fantastic panStamp plugin for Fhem. And I'm by no way exaggerating. Andre's work is probably the most sophisticated piece of software compatible with panStamp. Even more complete than lagarto in some areas and of course supporting much more technologies, fhem is probably called to become the first option in terms of software control around panStamp along the next months.

Figure 4 : panStamp RGB-driver board being controlled from Fhem

A good amount of Fhem's documentation is written in German but you'll easily find some English tutorials about how to install fhem and make it work for your preferred technologies. Otherwise, there is an active forum where you can post your questions in English ( In my case I only regret the lack of time because Fhem is the perfect excuse to take my German lessons out from the drawer. Exchanging with this community has become a highly enriching experience. Thanks guys!!

1-10 of 66