Solar + Li-Ion Power Supply Unit

This week we started  testing our brand new solar charger PSU design. The solar PSU powers a WiSense WSN1120L node operating in full function device (FFD) mode. FFDs are involved in mesh  routing and therefore need to keep their radio on at all times.  The WSN1120L’s current consumption in this mode is around 31 mA  in normal receive mode and  around 50 mA  when transmitting at +13 dBm.

The solar PSU also supports continuous measurement of the panel voltage and current as well as the battery voltage and current. This data is being sent every 5 minutes to the  cloud. See the graphs at the end.

The  PSU supports panels with voltage output up to 10.5V. The PSU allows charge current of  up to 2 A which allows high capacity Li-Ion batteries to be charged by high wattage panels.



Test Panel Specs

  • Peak  power: 3  Watts
  • Voltage output at peak power point: 8.5V
  • Current output at peak power point: 300 mA

Test Battery Specs

  • Chemistry:  Single  cell Lithium-Ion Battery
  • Capacity: 1100  mAh
  • Output voltage: 3.7 V  (nominal), 4.2 V (full charge)

Charger PSU Board Specs

  • Max  input voltage:  10.5 V
  • Max charge current: 2  A
  • Max  battery discharge  current: 4 A
  • Li-Ion battery charged in 3 phases (trickle charge,  pre-charge, constant  current and constant voltage).
  • Battery under-voltage lockout supported as load is not connected directly to battery.
  • Charger IC can power the load and charge the battery simultaneously.
  • Multiple output voltages
    • 3.3V  (Max 1 A)
    • 4.9V (Max 50 mA)
    • Li-Ion battery output (Max 4A). This supply is gated by a load switch which can be controlled by a signal external to the PSU (for example – by an external micro-controller).
  • On board  current and  voltage sensors which measure the following  parameters:
    • Solar  panel output voltage (Available over I2C)
    • Solar  panel output current  (Available over I2C)
    • Battery voltage  (Available over I2C)
    • Battery current  (Available over I2C)
  • PCB specs
    • Layers: 4
    • Dimensions:  53 mm x 48 mm
    • Mounting holes:  4
    • Finish:  ENIG

Here is  a pic of  the  setup. You can  see the 3W  panel lying flat and connected to a weather proof enclosure containing the PSU, battery and an WSN1120L. This location is not the best with tall structures/buildings in the vicinity.


Snapshot of battery voltage and current (captured from WiSight running on AWS).



For more information on our products, please visit


RS-485 interface for water meters

This week we tested a new RS-485 board to be used for wiring water meters for apartments. This is in addition to the wireless water meter solution we developed last year using the WSN1120L wireless mesh nodes.

In apartment complexes, water meters are usually one below the other in one or more plumbing/utility shafts. Wiring meters using a multi-drop bus such as RS-485 is a  more  cost effective and reliable solution in this case.

In India, it is common for apartment complexes to have multiple water supply entry points for each apartment. This means we need multiple water meters for each apartment. These entry points are usually not close to each other. Multiple RS-485  strings are therefore required to connect all these meters. All this adds to the cost of the overall solution.

We have so far tested 1  master  RS-485 node and 2 slave RS-485 nodes.  Each master node can collect metering data from up to 31 slave nodes.  A slave node can  accommodate two water  meters. The master node will have a wireless interface (WiSense Sub-GHz radio or GSM/GPRS module) for cloud connectivity. Even if there are multiple RS-485  strings, only one master  node needs to have GSM/GPRS connectivity.  All the other master nodes will connect to this one over the WiSense Sub-GHz radio network. Broadband internet connection (if available) can be used  instead of GSM/GPRS.

Here are a  few pictures of our initial test setup. You  can see the master connected to a  slave through 50 feet of shielded twisted pair  CAT-5E cable.


Here is a closer  look at our RS-485 interface board.  Each board has a micro-controller, an RS-485 transceiver providing half-duplex communication and a 5 bit dip switch for assigning address (1 to 31) with 0 reserved for each string’s master node. All the nodes are daisy  chained. Power is supplied through the master node over the CAT-5E cable.


Here is a pic of  a water meter connected to a slave board.


For more information, please visit

WiSense Wireless Node for Agriculture

We have developed a multi-sensor wireless node for agriculture related monitoring and control applications.

This sensor node is  based on the WiSense  WSN1120L sub GHz wireless mesh node.  This “agri node” operates in the license free 865-867 MHz in India. The nodes have  a max transmit power of  +14  dBm and a range of about 1 KM (LOS) and around 0.5 KM  (non LOS).

The node includes the sensors listed  below:

  • Relative Humidity (CC2D33S)
  • Temperature (CC2D3SS,  LM75B and an NTC thermistor)
  • Ambient  light (TEPT5700)
  • Atmospheric pressure (MS5637)
  • Soil temperature (based on an NTC thermistor)
  • Soil Moisture (Capacitive)

We can add  more sensors based  on customer requirement and energy budget. The selected sensors are relatively low cost.

The node can be  operated as an  FFD (takes part in mesh routing) or as an RFD (no routing). In the RFD configuration, the sleep mode current consumption  is  around 2 microamps which enables the node to run on limited energy sources such as a pair of AA/AAA batteries, small solar panels and low capacity  rechargeable batteries etc.

The WSN1120L,  battery and related electronics is protected against the elements by a weather proof  enclosure  (IP65/ABS).  The humidity, pressure  and temperature sensors are protected by a radiation sensor. These external sensors connect to the  WSN1120L through a weather proof 4 wire cable.  Similarly the soil temperature and soil moisture sensors connect to the WSN1120L through a 2 and 4  wire cable respectively.

In addition, the “agri node” can be used to control valves, motors etc using add on relay boards.

The coordinator node (WSN1120CL) can be interfaced to the available back-haul mechanism such as GSM, 3G, WiFi etc.

We are currently testing a solar  + single cell lithium-ion power supply  unit  which can keep these nodes running  for at least 1 year without any  need to  replace the  battery.

Here is a pic of  a WiSense coordinator node and an “agri node”.



Here is a pic of  another  “agri node” with an enclosure having a transparent hinged lid. You can see the white colored radiation shield enclosing the three sensors mentioned  above.



For more details,  visit


WiSense is now part of the NASSCOM CoE-IOT. This a co-working space located on old airport road (Diamond  district) in Bangalore.

The CoE-IOT has lots of very nice equipment and a friendly and engaged support staff. They are always open to ideas on improving the experience for startups.

The equipment includes a top of the line RF spectrum analyzer, an RF vector network analyzer, a signal generator,  oscilloscopes, bench top and hand held multi meters, power supplies etc. In addition they have soldering, rework and inspection equipment.

The  equipment is really useful and  we are now getting our work done much faster. For  example, the PCB inspection scope has helped us identify soldering issues with the tiny Balun IC on our RF board.

You get to meet other startups and people working in IOT and related fields. The center regularly hosts guests from within India and abroad. You get a lot of exposure here.

If  you are in the IOT space and need incubation, talk to CoE-IOT. They are always looking for startups which can benefit from the center.


Cheap prop/stand for WiSense nodes

I  have  been  looking for a cheap and easy way  to use WiSense nodes in the lab without having to put each node in an enclosures. I want to be able to quickly attach and remove the debugger on any node. The problem is keeping the bulky half-wave dipole antenna upright. The  antennas need to be propped up properly otherwise it will keep falling. This week I found a way to do it and  it doesn’t look too bad. All I need is a U  clamp and a long screw. Here are  some pics.



Here’s  a closer  look at the  sensor  node. You can see a  CC2D33S humidity + temperature sensor sticking out from the node. 




For more  information on WiSense, visit

WSN1120L / WNS1120CL Block Diagrams



WSN1120L Hardware Block Diagram



WSN1120CL Hardware Block Diagram


Work in progress – New Micro

It’s  been a while  since we upgraded the microcontroller on WiSense nodes. The last upgrade was from the MSP430G2553 to the MSP430G2955.

The MSP430G2955 has 56 KB code memory (on chip flash) , 4 KB of  RAM and max clock speed of 16 MHz. The current  set of features  have  exhausted the code  memory so it is time to move to another member of the MSP430 family. This time we are upgrading to the MSP430F5419A. This is  a 100 pin micro with 128 KB  of  code  memory (again  on chip flash) and 16  KB of RAM. This micro can run at a  max  speed of 25 MHz. It has far  more  GPIO  pins (87 compared to 32 on the G2955). It has 16  12-bit SAR ADC  channels  compared  to 12 10-bit SAR ADC channels  on the  G2955. The  F5419A  has  4 “Universal Serial Communication Interface (USCI) blocks” compared to 2 on the G2955A. Obviously the F5419A costs more. So it is an upgrade on all fronts.

Since we chose to have separate PCBs  for the  micro and the  radio, changing either the radio or the micro is not a big effort.

Reduced  function devices can still use the MSP430G2955 but all FFDs and coordinator nodes will use the  MSP430F5419A going forward.

Board changes will include a 25 MHz crystal for the F5419A  and a  bigger external  EEPROM  to accommodate two 128 KB  images (for  firmware upgrade). Will add a JTAG  interface in addition to the 2 pin SPY-BI-WIRE. Debugging with the full JTAG  interface is far more convenient (and fast) compared to the SPY-BI-WIRE interface. I  have not yet decided on the PCB size and the number of GPIO pins which will be exposed.

The advantage of sticking with the MSP430 family is that all the code base (pretty big now) runs on the F5491A as it is. Peripheral register naming is slightly different between the F5419A  and the G2955. The F5419A has a highly configurable 12 bit ADC so all the device drivers using the simpler  10 bit ADC on the G2955 need to be modified to use  the new  12 bit ADC module.

I  was able to interface the CC1120 radio and  got the UART working on the F5419A. I tested both the FFD and Coordinator configurations. Looks good so far. Was not able to get the clock speed to 25 MHz maybe because I am currently using the MSP-TS430PZ5x100 Target Socket Module instead  of a PCB mounted micro.

Here are some pics of the eval setup.






For more information, please visit

WSN1120L/WSN1120CL with low profile radio boards

We reduced the size of the radio boards  on our WSN1120L and  WSN1120CL nodes. The earlier version (WSR1120 Rev 1.0) of the radio board had both a U.FL connector and a PCB antenna. The new version (WSR1120 Rev 2.0) only has a U.FL connector. The dimensions of the new radio board are 27.5 mm x  27.5 mm. These radio boards use the CC1120 radio from TI.



WSN1120L  with the new radio board (WSR1120 Rev 2.0)




WSN1120CL with the new radio board (WSR1120 Rev 2.0)



WSN1120L  with the earlier version of the radio board (Rev 1.0)


For more information, please  visit

Effect of temperature on WiSense nodes

All WiSense sensor nodes use low cost RF crystals for the radio (CC1120 or CC1101). The crystal oscillator generates the reference frequency for the radio’s frequency synthesizer, as well as clocks for the ADC and the digital part. For example, the WSN1120L/WSN1120CL nodes use a 32 MHz cystal (FA-128-32MHz from Epson).

If the crystal frequency is incorrect, the transmitter carrier frequency and the receiver LO frequency will also be incorrect. The crystal frequency error is due to  initial tolerance, capacitive loading errors, ageing, and temperature drift.

Example: If the crystal frequency has an error of +/- X ppm (parts per million) the RF frequency  also has an error of +/- X ppm. As an example, if the crystal error is say +10 ppm and the CC1120 is programmed for a carrier frequency of 866 MHz, there will be an error in the carrier frequency of 866 *(10^6)* 10 * (10^-6) = 8.66 kHz.

Carson’s rule states that  nearly all (~98 percent) of the power of a frequency-modulated signal lies within a bandwidth  “BWsig” where

BWsig = dr + 2*fdev

Where  “dr” is  the data  rate and “fdev” is the frequency deviation around the carrier frequency.

If both the transmitter and receiver crystal accuracy is ±10 ppm and the CC11xx is
programmed for a carrier frequency of 866 MHz ,

BWchann > BWsig + 4 * XTALppm * fRF = BWsignal + 4*10*(10^-6)*866*10^6 Hz.

Let us take a narrow band application with raw data rate of 1.2 kbps using 2-GFSK modulation and  frequency deviation of 4 kHz.

BWsig = 1200 +  2*4000 = 9.2  kHz

BWchann > 9.2 kHz +  4*8.66 kHz

BWchann > 34.64 kHz

You can easily see  that  the channel bandwidth requirement is  dominated by the +/- 10 ppm crystal tolerance figure !.  Note that as channel bandwidth (programmed as  the  RX  filter bandwidth parameter in radios  such as  CC1101  and  CC1120) increases, radio range decreases. So it is important to keep the channel bandwidth to the minimum required to carry the modulated RF signal.


Temperature has a significant effect on crystal frequency. In our  tests using WSN1120L nodes, we saw large carrier frequency drifts when subjected to different temperatures.

The snapshot below shows the carrier frequency (865.999687 MHz) at 21 deg C (room temperature).



The snapshot below shows the new carrier frequency (866.5 MHz) at 6 deg C (node inside a refrigerator)


Frequency drifts because of environmental conditions (such as temperature) are big problem for narrow band channels (channel bandwidth around 25 kHz or less).  If channel spacing is low, RF signal on adjacent channels can overlap. Frequency drift between two nodes (on the same channel) can cause the nodes to loose communication if the transmissions fall outside the programmed RX filter bandwidth (on each node).

In narrow band radio devices (such as WiSense nodes) are installed outdoors, they should be inside weather proof enclosures to minimize frequency drift due to environmental conditions.

One approach is to use a temperature sensor mounted near the RF crystal and tune the radio carrier frequency based on the temperature.

Another  (more complicated) approach is to use a tighter tolerance crystal on the coordinator node’s radio and let the other nodes  in the network track the coordinator’s frequency using the CC11XX automatic frequency compensation feature.

Why not use crystals with tighter tolerance across a wide temperature range? The simple reason is cost.

The CC1120 radio supports  low cost crystals (32 MHz) as  well as  temperature compensated crystal oscillators (32 MHz TCXO). On the CC1120, either a crystal can be connected to XOSC_Q1 and XOSC_Q2, or a TCXO can be connected to the EXT_XOSC input. The problem is that a TCXO  can cost more than the total  cost of a WSN1120L/WSN1120CL  node !!.




WiSense Radio Configuration

The CC1120  radios on  the  WSN1120L  and  WSN1120CL  are configured to operate in the  865-867 MHz license free band in India. The modulation used is GFSK (Gaussian FSK).  The  data rate is configurable (example – 1.2 kbps, 10 kbps, 20 kbps and so on). Higher data rate translates to higher channel bandwidth (receiver filter bandwidth) which translates to higher channel noise (lower SNR) seen in the receiver resulting in reduced range.

Carson’s rule states that  nearly all (~98 percent) of the power of a frequency-modulated signal lies within a bandwidth  “BWsig” where

BWsig = dr + 2*fdev

Where  “dr” is  the data  rate and “fdev” is the frequency deviation around the carrier frequency.

Taking into consideration crystal inaccuracy, the minimum channel bandwidth “BWchann” required comes  to –

BWchann >  BWsig +  4*XTALppm*fRF

-Or –

BWchann >  dr + 2*fdev + 4*XTALppm*fRF

where “XTALppm”  is the total accuracy of the crystal including initial tolerance, temperature drift, loading, and ageing.


fRF” is the carrier frequency which will be 866 MHz (at the center of the 865-867 MHz license free India band) in our application.

Modulation index for  FSK modulation (h) is given by –

h = 2*fdev / dr

for example, if deviation is +/- 4 kHz and the data rate  is 1.2 kbps, then the modulation index is (2*4000) / 1200 = 6.666.

The chosen frequency deviation “fdev” will impact sensitivity and occupied bandwidth in opposing directions. For a fixed RX filter BW and data rate, higher deviation will give better sensitivity;

Theoretically, there is an optimum separation/data-rate setting if you simultaneously minimize the receiver filter bandwidth. Every halving of receiver filter bandwidth increases sensitivity with 3 dB whereas sensitivity vs separation/data-rate decreases with about 1.5-2.5 dB per halving down to a certain limit where the loss increases very fast.

The CC1120 operates well at modulations indexes of 0.5 and above.

Let us look at some settings for the CC1120 Radio in a WiSense LPWMN  node.

Crystal specs

  • Crystal frequency: 32 MHz
  • Crystal tolerance:  +/- 10 ppm @ 25 deg C
  • Crystal operating range: -40 deg C to +85 deg C
  • Crystal frequency vs temperature variation: +/- 20 ppm
  • Crystal frequency aging: +/- 1 ppm per year (max)


Setting #1:

Radio configuration

  • Modulation: 2-GFSK
  • Bits  per symbol:  1
  • Data Rate: 1.2 kbps
  • Frequency  Deviation: +/- 3.997803 kHz
  • Carrier frequency: 865-867 MHz
  • Channel  BW (RX filter BW): 25 kHz
  • Feedback to PLL feature: Enabled

BWsig = 1200 + 2*3998 = 9196

Taking crystal inaccuracy (+/- 10 ppm) in consideration,

BWchann = 9196+ 4*10*(10^-6)*866*(10^6) 

BWchann = 43836 Hz  or 43.84 kHz

Modulation index = (2*3998) / 1200 = 6.66 (Minimum for CC1120 is 0.5, higher the better)

TI recommended setting for this configuration is 25 kHz which is  less than 43.84 kHz. The  CC1120  has a feature called feedback to PLL (F2BPLL) which increases the effective RX filter bandwidth without degrading the noise bandwidth and hence  the sensitivity. Feedback to the PLL “increases the RX filter” and thus allow for a less accurate crystal to be used. The noise bandwidth, and hence sensitivity, will not increase when enabling this feature. Enabling feedback to PLL increases BW from “programmed RX filter BW” to “programmed RX filter BW +/- RX filter BW/4”. For example, when RX filter BW is configured as 25 kHz, the effective RX filter BW increases  to  25 +  (25/2) = 37.25 kHz. The only downside of using  the F2BPLL is the need for a longer preamble length (of 4 bytes) instead of say just 2 bytes.

For best sensitivity we need to use the lowest RX filter BW possible. So an effective RX  filter BW of 37.25 kHz is a good compromise for this application.

In addition, each WiSense node’s carrier frequency frequency  error (due to the crystal’s initial crystal tolerance  of +/- 10 ppm) is removed by

  • Configuring  the radio to output an un-modulated continuous  wave (CW) signal and
  • Using a spectrum analyzer to accurately measure the frequency of this CW signal and thereby the offset from expected value and
  • Configuring the static frequency offset register on the radio with the offset measured above
  • This offset frequency value (in  HZ) is stored on each node in an EEPROM

Now any variation from desired frequency will only be because of temperature changes and aging.

Setting #2:

Radio configuration

  • Modulation: 2-GFSK
  • Bits  per symbol:  1
  • Data Rate: 10 kbps
  • Frequency  Deviation: +/- 5.004883  kHz
  • Feedback to PLL feature: Enabled
  • Channel  BW (RX filter BW): 25 kHz
  • Carrier frequency: 865-867 MHz

BWsig = 10000 + 2*5005 = 20010 HZ

Taking crystal inaccuracy (+/- 10 ppm) in consideration,

BWchann = 20020 +  4*10*(10^-6)*866*(10^6)  

BWchann =  54660 =  54.6 kHz 

Modulation index = (2*5010) / 10000 = 1.002 (Minimum for CC1120 is 0.5)

Since feedback to PLL feature is enabled, effective rx  filter bw is  25000 * 1 .5 = 37.5 kHz.

In addition, the carrier frequency frequency  error (due to the crystal’s initial crystal tolerance  of +/- 10 ppm) has been removed as explained  above. We tested this configuration and it is  working well.

Setting #3:

Radio configuration

  • Modulation: 2-GFSK
  • Bits  per symbol:  1
  • Data Rate: 20 kbps
  • Frequency  Deviation: +/- 10.009766 kHz
  • Channel  BW (RX filter BW): 50 kHz
  • Feedback to PLL feature: Enabled
  • Carrier frequency: 865-867 MHz

BWsig = 20000 + 2*10009 = 40020 HZ

Taking crystal inaccuracy (+/- 10 ppm) in consideration,

BWchann = 40020 +  4*10*(10^-6)*866*(10^6)  

BWchann =  74660 =  74.6 kHz

Modulation index = (2*10009) / 20000 = 1.0009 (Minimum for CC1120 is 0.5)

Since feedback to PLL feature is enabled, effective bandwidth is  40020 * 1 .5 = 60.03 kHz.

In addition, the carrier frequency frequency  error (due to the crystal’s initial crystal tolerance  of +/- 10 ppm) has been removed as explained  above. We tested this configuration and it is working well.