Project Summary

I worked on various diverse academic, professional and personal projects - Internet of Things (Layer-1,2,3), Embedded Systems (both Software and Hardware), Computational Science (Parallel computing - "GPGPU", High performance Computing, Circuit Simulators, etc.). Below is the detailed description of my non-exhaustive list of projects.

Solar Powered LoRaWAN Sensor Node for Smart Irrigation System

  • Solar powered LoRaWAN sensor node for monitoring the environmental parameters essential for systematic irrigation - Soil Moisture, Temperature, Humidity, Luminosity and Battery Gauge for measuring battery health.
  • The motivation is to develop a low power smart irrigation system so that it can withstand the harsh cloudy winters with minimal sun exposure. In order to achieve the required low power I had to modify the existing LoRaWAN library ( IBM's LMIC ) to incorporate the MCU's low power features during the operating system's idle state. This enforced me to design some of the hardware from ground up to incorporate hardware features that complements the software modifications. All these changes allowed me to run everything on a single lithium ion battery with a small solar panel for charging.
  • All sensors are made in house (component selection, schematic design & layout and mechanical housing) along with device drivers and application software as described below.
  • Live readings - https://iotcascade.com:1880/ui

Soil Moisture Sensor

100 MHz capacitive soil moisture sensor that works on the principle of fringing fields. The design has high repeatability, accuracy and low drift. The problem with the low cost capacitive sensors available in the market is that it does not possess good accuracy, repeatability and the output is very noisy therefore fails to give meaningful readings overtime.

Luminosity Sensor

Based on TI OPT3001 to measure the amount of incident light. Inside this sensor module I also designed an electronic heater for removing morning dew from the glass screen.

Temperature and Humidity Sensor

Based on SHT35 and MCP9808 ICs, the idea of both electronic design and mechanical housing is such that it allows natural fitting inside the solar radiation shields of weather stations. The mechanical housing is based on standard PVC pipe and end caps thus allow inexpensive housing design.

Power Supply and Solar Charger

Single cell li-ion charger with 5V DC-DC converter and an electronic fuel gauge (LC709203F) that also allows host MCU to monitor battery health via I2C. The drivers for the battery gauge is available at my github - Link

MCU Node and LoRa Transceiver

  • The sensor node prototype installed in the garden for testing sensors and application software in real environment. The sensor node is using LoRaWAN technology to transmit data with LoRaWAN network & application server and MQTT backhaul running on my private cloud instance at www.iotcascade.com
  • It has an AVR based microcontroller (ATmega1284P) along with RFM95 LoRa transceiver
  • The LoRaWAN library is based on IBM's LMIC project, which I modified to obtain ultra low power in sleep mode, which is otherwise not possible using original library.
  • Apart from this, the daughter board has an RTC based on PCF8523, 4MB of SPI Flash memory for local data acquisition and an external EEPROM for getting device unique address based on IEEE EUI-64
  • The overall sleep current of 2.7 uA is achieved using both hardware and software techniques. You can see the live readings (every 20 mins) at my private cloud instance - https://iotcascade.com:1880/ui (Note - I constantly makes changes in the firmware so please expect no readings for a day or two)
  • I am planning to make the APIs available for reading historical or live data to general public.

Modified LoRaWAN Library to Achieve Ultra Low Power in Sleep

If you have ever used IBM's LMIC LoRaWAN library you must have noticed that it uses an OS and the idle task of the OS does not take into account the MCU's low power states. That means if your sensor node is spending a lot of time doing nothing then the idle task will consume a lot of power. Even if you explicitly try to set the lowest power mode you need an external source (interrupt) to wake up from deep sleep - this requires an external RTC for example. The modified application code adds support for MCU deep sleep and an external RTC (in my case it is PCF8523). Moreover, since the OS timer is off during this period which might disturb the functionality after wake-up therefore the application code also adds the time spent during deep sleep to the HAL timer after wake-up. Of course the best solution will be to implement the tickless scheduler. The source code is not available on my github yet, because lot of clean up is required but soon it will be.

Device Drivers

LC709203F - Single Cell Lithium-ion Battery Gauge

This IC allows you to monitor the battery health, battery temperature (if thermistor is attached), battery state of charge, etc. over I2C. No sense resistor is required for this IC to work.
Please look at my github for more details - Link

LTC2942 - Single Cell Lithium-ion Battery Gauge

This is somewhat an expensive solution for battery gauge as compared to LC709203F and does exactly the same job.
Please look at my github profile for more details - Link

STMLS05 - 5 Channel Load Switch

This is a low power load switch that allows MCU to control subsystem power over I2C. Imagine a scenario where you have a subsystem which consumes a lot of power and you don't want its service all the time, in this case STMLS05 allows you to have full control of power flow via I2C.
Please have a look at the drivers at my github - Link

DS1339 - Real-Time Clock

One of the expensive but very accurate RTC IC.
Please look at my github - Link

nRF24L01 - 2.4 GHz Transceiver

The source code is very old and I don't recommend using this as there exist much better solutions. But still have a look at my github - Link

Masters Thesis : Real Time Fault Detection and Diagnosis of Self Powered Neutron Detectors (SPND) - 2014

I worked on an industry sponsored project from Bhabha Atomic Research Center. I implemented a data based approach using machine learning techniques for fault detection of neutron detectors and used statistical analysis for data reconciliation of faulty detectors. For this work, I received the chance to visit India’s first nuclear power plant - Tarapur Atomic Power Station. As a result, we published our work in - The IEEE conference on Evolving and Adaptive Intelligent Systems, Linz, Austria, June 2014.

  • Conference Presentation - Link
  • Sensor Data Management Codes - Link
  • Fault Detection and Diagnosis Algorithm Codes - Link

Self Powered Wireless Sensor Node - 2016

Presented this demo at General Technical Conference, Analog Devices Inc. April 2016

Tall Skinny QR Decomposition on GPU using OpenCL

The QR factorization is one of the fundamental matrix decompositions with applications throughout scientific computing and data analysis. For matrices with many more rows than columns,they are called "tall-and-skinny matrices". These matrices generally occur in over determined systems for example - image processing, finding nullspaces of polynomial matrices. Their coloumn to row ratio is generally 1000:1.
Algorithm Reference - James Demmel, Laura Grigori, Mark Frederick Hoemmen, Julien Langou "Communication-optimal parallel and sequential QR and LU factorizations" - Technical Report No. UCB/EECS-2008-89”, Aug 2008.

DC Analysis of IBM’s Power Grid Benchmarks

Description - Soon....

A5/1 Stream Cipher

Description - Soon....

Parallel Matrix-Matrix Multiplication

Description - Soon....

  • GPU (OpenCL) - Github link-1 - Link
  • MPI and OpenMP Github link-2 - Link