Announcements


SWAP firmware loader

posted Oct 10, 2014, 11:14 AM by Daniel Berenguer   [ updated Oct 10, 2014, 11:19 AM ]

The first commercial batch of panStamp NRG modules is arriving and there has been a lot of things to do in the meantime: a new panStick design compatible with both NRG and AVR modules, a new documentation wiki, a command-line version of SWAPdmt, the on-going work with the new commercial website and, of course, our first official wireless bootloader for panStamp NRG.

With the new wireless bootloader the first challenge was finding a way to move binary code from one node to another by means of standard SWAP packets. The solution was already there, it was just a matter of looking at other file transfer methods as FTP or HTTP. Based on a similar strategy, the node becomes the master in the file transfer by querying (SWAP query packet) the HEX file line by line. Once the node masters this process, it can easily detect CRC errors and query the same line multiple times if necessary. On the other hand, the file server has not to worry about whether a line (SWAP status packet) has been received or not by the node.

The second challenge was making multiple bootloaders (serial and wireless bootloaders) and user application coexist in flash. Depending on project-related preferences, developers may decide to grab the wireless bootloader or not so Arduino 1.5 has to identify this in order to set the correct starting address for the application. Arduino 1.5 fortunately allows creating custom menus so this finally became a minor step in the development process.


Arduino Wireless bootloader menu


Finally, there was the challenge to develop a firmware server. Here the new SWAPdmt command-line tool has played a key role. Once the file transfer process was validated, adding this functionality into SWAPdmt was a matter of developing some lines of code.

The above video shows how a new firmware image (HEX format) is transferred to a battery-powered panStamp NRG from SWAPdmt-cmd. A second terminal running minicom, with a second panStick, is used to monitor the wireless traffic.

Transferring binary code wirelessly to a battery-powered node


Link to the wiki page where SWAP loader is explained.

Managing SWAP networks from the command line

posted Oct 10, 2014, 9:54 AM by Daniel Berenguer

The original SWAPdmt tool, the graphical version, showed up that sometimes maintaining multi-platform graphical application is not so simple. Not being a GUI-guy, I've also found some problems to add new functionality or make the tool more user friendly and simpler to install. Since the latest evolution of wxPython for Windows 7 and 8 I decided to invest all these development efforts in a less ambitious application but with higher functionality and flexibility.

SWAPdmt-cmd introduces the following new functionality:

  1. Control of regular endpoints
  2. Wireless upload of firmware (only for NRG modules)
  3. Remote restart of nodes

The new command-line tool is maybe less seductive but it's still easy to use. It's by far simpler to install on all platforms since it only needs Python 2.6/2.7, pyserial and pyswap. No more need to install wXPython or wxWidgets. You simply start an interactive session with "python swapdmt.py" and start running commands from the terminal.

>> help
SWAPdmt commands and syntax:

help                         Print help
quit                         Quit application
traffic <on|off>             Print or hide SWAP traffic
hexfile <path to hex file>   Enter hex file for SWAP firmware upgrade
list nodes                   Print list of nodes detected in the SWAP network
clear nodes                  Clear list of nodes detected in the SWAP network

node <addr> channel [<new_channel>]          Print or set RF channel of node
node <addr> netid [<new_netid>]              Print or set SWAP network ID of node
node <addr> address [<new_addr>]             Print or set SWAP address of node
node <addr> txinterval [<new_interval>]      Print or set Tx interval of node
node <addr> reg <reg_id> [<new_reg_value>]   Print or set register value
node <addr> details                          Print product details of node
node <addr> restart                          Restart node (if it's not sleeping)
node <addr> program                          Program node wirelessly with hex file

This wiki page introduces SWAPdmt-cmd and shows how to install and use the application

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, sen.se, ...)

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 <http://gnu.org/licenses/gpl.html>
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:
<http://www.gnu.org/software/gdb/bugs/>.
Remote debugging using /dev/ttyUSB0
0x00008000 in ?? ()
(gdb)

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).

1-10 of 68