It has been a long wait, with long hours of work, tests, fixes, releases, revisions, and emotions. More than one year after announcing the development of the NRG line, panStamp is proud to SIG-NI-FY the commercial release of panStamp NRG.
Behind this new module you will find all the essence of the panStamp project. If you are already part of our community then you know what we are talking about. If not, then it is maybe time to give panStamp NRG a try. We simply guarantee that you will not be disappointed.
The wiki page has been updated with more recent information about the new modules and you will find next week even more information about how to do many different things with them. Remember that NRG is an improved version of our classic AVR modules, providing more speed and RAM, better low-power performance, true RTS module, AES-128 encryption, 3-axis accelerometer and footprints for on-board sensors (temperature and humidity). panStamp NRG is in fact like an improved AVR module with integrated battery-board features.
Think about the benefits of using one of these low-cost modules as a simple temperature and humidity sensor without any external circuitry. Simply power the module from a 3V battery and leave the module working from that battery even below 2VDC.
As you can see, most of our promises made a reality. Now it is time for the whole panStamp community to enjoy this new concept of mote with MSP430 core and programmable from Arduino IDE. As always, we will be there to assist you along your ideas, developments and deployments. We also wish to continue learning lots of new things from you too.
Thanks friends for your support and patience along the last year.
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.
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.
Link to the wiki page where SWAP loader is explained.
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:
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.
This wiki page introduces SWAPdmt-cmd and shows how to install and use the application
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!
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.
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.
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.
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.
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.
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:
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.
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.
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, ...)
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).
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.
Once you get lagarto-max running the new events you will see new components from GroveStreams as shown in Figure 1.
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:
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.
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/.
Once GDB starts you will see something like this:
OK you are now "into" the MCU so you can query the value contained at any address with "x":
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:
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:
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.
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.
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.
1-10 of 69