Migrate From Z1 to RE Mote - Zolertia/Resources GitHub Wiki
Migrating your Z1 application to the Zoul (RE-Mote)
So you are already a proud Zolertia Z1 mote owner, congrats!
Now that the Zoul is out, you should really consider migrating your Z1-based application, why? check out the next section.
Differences between the Z1 mote and the Zoul (RE-Mote)
The table below briefly list the differences between the platforms:
Platform | ROM | RAM | Frequency | Lowest current draw | # Radios | Maximum Radio Range |
---|---|---|---|---|---|---|
Z1 | 92KB | 8KB | 16MHz | 3.5-18uA | 1 | 100 mts (0dBi antenna, LOS) |
RE-Mote | 512KB | 32KB | 32MHz | 150nA (shutdown mode) | 2 | 20 Km (868/915MHz, LOS) |
Note also the following feature differences:
Platform | Z1 | RE-Mote |
---|---|---|
Sensors on board | TMP102 (temperature), ADXL345 (accelerometer), voltage (internal) | CC2538 internal (core temperature, voltage) |
External Storage | M25P16 (2MB) | MicroSD slot (up to 8GB) |
Radio interfaces | 2.4GHz IEEE 802.15.4/6LoWPAN | 2.4GHz and 868/915MHz IEEE 802.15.4/6LoWPAN |
Buttons | User and Reset | User and Reset |
LEDs | 3 LEDs (red, green, blue) | RGB LED (HTML colours possible) |
Debugging/programming | Serial to USB converter | Serial to USB converter |
Real Time Clock Calendar | None | On-board |
External Watchdog Timer | None | On-board |
USB 2.0 native | None | On-board |
External antenna | On U.Fl connector, requires pigtail | On-board RP-SMA |
Dual Radio | None | On-board |
Hardware Security acceleration | None | On-board |
Emulation support | Cooja | None |
Migrating a Z1 Contiki application to the RE-Mote
You should be on the safe side if you are using Contiki libraries and hardware-abstracted components, for example most networking related features such as RPL, UDP, TCP will both transparently for the Z1 and the RE-Mote. The main difference will be the RE-Mote having more ROM/RAM available, for example to have a larger routing table, enabled resources, etc.
The following are some recommendations about what to replace, if you miss anything else from this list please send us an email to [email protected].
Battery sensor
We should replace the following:
- Replace
#include "dev/battery-sensor.h"
with#include "dev/zoul-sensors.h"
- Replace
SENSORS_ACTIVATE(battery_sensor)
withSENSORS_ACTIVATE(vdd3_sensor)
- Replace
battery_sensor.value(0)
withvdd3_sensor.value(CC2538_SENSORS_VALUE_TYPE_CONVERTED))
(this returns the already converted voltage value)
ADC sensors
Zolertia platforms historically have named its on-board Analog to Digital converters as Phidgets
, as the defacto connector has the pin-out matching the sensor's manufacturers products. The phidget driver is nothing more than the ADC drivers to read analogue sensors.
- Replace
#include "dev/z1-phidgets.h"
with#include "dev/zoul-sensors.h"
- Replace
SENSORS_ACTIVATE(phidgets)
withadc_sensors.configure(SENSORS_HW_INIT, ZOUL_SENSORS_ADC_ALL)
, this will initialize all ADC channels available (up to 3 for the RE-Mote as default). Check theplatform/zoul/dev/adc-sensors.h
for more detail - Replace
phidgets.value(PHIDGET5V_1))
or equivalent withadc_sensors.value(ZOUL_SENSORS_ADC1))
, with the requires channel
TMP102 temperature sensor
Sorry, the RE-Mote doesn't have an on-board TMP102 sensor, however you could alternatively use the CC2538 built-in core temperature sensor, that is, the ARM-Cortex M3 current temperature operation. If this is acceptable for you, then:
- Replace
#include "dev/tmp102.h"
with#include "dev/zoul-sensors.h"
- Replace
tmp102_init()
withSENSORS_ACTIVATE(cc2538_temp_sensor)
- Replace
tmp102_read_temp_x100()
or alike withcc2538_temp_sensor.value(CC2538_SENSORS_VALUE_TYPE_CONVERTED))
LEDs
The same LEDs calls (LEDS_RED
, LEDS_BLUE
, LEDS_GREEN
) can be used for both platforms, however the RE-Mote includes more colours as default (LEDS_PURPLE
, ``LEDS_YELLOW,
LEDS_WHITE`). Alternatively if using the `pwm` module, you can use HTML like colours.
Choose with radio to use
The Z1 mote has only one radio (2.4GHz), while the RE-Mote has two (2.4GHz and 868/915Mhz). To select which radio interface to use with the RP-SMA connector for external antennas, add this in your project-conf.h
file:
868/915MHz
#define NETSTACK_CONF_RADIO cc1200_driver
#define ANTENNA_SW_SELECT_DEFAULT ANTENNA_SW_SELECT_SUBGHZ
2.4GHz
#define NETSTACK_CONF_RADIO cc2538_rf_driver
#define ANTENNA_SW_SELECT_DEFAULT ANTENNA_SW_SELECT_2_4GHZ
Or from the application you can alternatively enable one or another by:
- Including
#include "antenna-sw.h"
- Call
antenna_sw_select(ANTENNA_SW_SELECT_SUBGHZ)
orantenna_sw_select(ANTENNA_SW_SELECT_2_4GHZ)
Note that this only selects which antenna/radio to use, the radio driver must match your selection as well! don't forget to also include the cc2538_rf_driver
or cc1200_driver
as done above.