Final Year Project interim Report



University of Massachusetts Lowell | | |The Department of

Electrical and Computer Engineering

Subject:

Introduction to Biosensors

Wireless Optical biosensor Network

Project Final Report

Team members: Ravi G Bhatia

Wenchan Tong

Aiken Pang

Report Submit Date: 9th May, 2007

CONTENTS

Objectives 3

Overview 4

Prototype platform 9

Implementation 11

Specification 16

Specification 16

Testing results 17

Expandable parts 20

Reference 21

Appendix A 22

Appendix B 28

Appendix C 30

| |Objectives |

In the market, optical fiber biosensor needs to use bulky equipments that include tunable laser and spectrum analyzer. The spectrum analyzer cans only analyzer one to two optical fiber biosensor. If we have a lot of sample need to be analyze at the same time. We need to use more equipment that is expensive. The target samples need to be connected physically to the equipments. These wired connection let the testing not flexible enough, when you testing the samples in a lab, which use a central computer to log and analyze all the samples data at the same time.

In this project, we would want to provide a low cost wireless network for the connection between optical fiber biosensor and central computer. It will include three parts.

Wireless module: It include a microcontroller, Analog to Digital converter and RF transmitter

Photo detector: It converts light intensity to electrical signal (Voltage)

Optical biosensor: It will reflect the laser, which the intensity will affect by number of biomaterials attachments.

|1 |Overview |

Optical Fiber BioSensor System

1.1 Review of Optical Fiber biosensor Theory (Field of study)

The biosensor is based on a Fabry-Pérot interferometer. The intensity of the reflected light is proportional to the optical path length as follows

[pic] (E.q 1.1)

[pic]

Fig. 1.1 : (a) Change in Resonant condition and (b) F-P Interferometer

1.2 Motivation of using wireless network in optical sensor system

We want to find a low cost, ease of deployment, multi-source sensor and battery operation platform to transfer the data to central computer. Using wireless sensor network is one of good solution.

1.3 Problem description

Use of optical fiber as biosensor has grown popular over the past few years as makers continue to develop new technology.

One of the problems of optical biosensor is that the sensor needs to wire with a massive machine. This limitation make the sensor cannot be portable. Although the technology have fast testing using optical biosensor, the time for transport the sample and setup the testing is too long.

Another problem is that we need use more machines (increase the cost), if we want to do more than one testing at the same time.

However, the demand of the market is increasing. Portable device is a trend for sensor.

Therefore, it is important to create a portable, multi-sources, ease of setup platform for optical biosensor

1.4 Optical sensor

The Biosensor network is based on F-P interferometer (F-P I) Biomolecular interaction changes optical path length. Intensity change proportional to optical path length and as the path length changes photodetector will detect change in intensity and transmit that information through the wireless module. Two types of F-P cavities can be used as sensors as shown in Fig. 1.4. The Extrinsic F-P I is used when refractive index n is comparable to that of cavity. The biomolecular interaction will increase the length of the cavity and this change in the optical path length will change the intensity of the reflected light. The Intrinsic F-P I is used when the refractive index of the biomolecules is different than that of the cavity. Biomolecules areimmobilized at the tip of the Intrinsic F-P I. This arrangement keeps the length of the cavity nearly same but biomolecular interactions changes the refractive index of the cavity and hence the intensity of the reflected light.

Fig: 1.4: F-P cavity types [8].

1.5 Photo detector

Photodetector sensitivity is determined by the minimum optical intensity change to be detected from the F-PI. The input of the photodetector is the laser reflected from the optical biosensor. The intensity of the reflected laser is proportional to the wavelength and the “L” as shown in E.q. 1.1. The photodetector voltage is proportional to incident optical power and is related to the reflected light intensity as follows.

Voltage=P * Responsivity * RL (Eq. 1.5)

Based on the requirements indicated below:

Wavelength 1550nm

Peak Output: 0.04mW

Valley: 0.004mW

Intensity Change: 1µW

InGaAs p-i-n photodetector with responsivity from 800nm to 1700nm manufactured by Thorlabs is used to detect the reflected light for the F-PI. The photodetector has a fiber pigtail connector for directly connecting with the fiber sensor tip. Cost of the detector is $269. The photodetector is a compact battery operated module shown in Fig. 1.5.

[pic]

Fig. 1.5: InGaAs p-i-n photodetector

The Photodetector is sensitive from 800nm to 1700nm with peak responsivity of 0.92 A/W as shown in Fig. 1.6.

[pic]

Fig1.6: Spectral response of DET01FC InGaAs pin photodetector.

1.6 Wireless sensor network

We select the wireless sensor network because the network itself is a mesh network. Mesh network mean that it can auto construct the network connection. Each node in the network can work as forwarder (help other node to forward their data to the PC). Therefore, the sensor can be far away from the computer. In the network, it can be more than one sensor and each node can have more than one sensor.

|2 |Prototype platform |

For designing a platform for wireless optical sensor network (WOSN), there were three predicaments.

1. Transform the laser intensity to voltage from optical sensor

2. Digitize the voltage value to digital format

3. Transmit the digital data from the remote site to PC

The prototype platform of WOSN contains four modules. The first module is optical sensor. The second module is ADC. The third module is photodetector. The fourth module is wireless network module.

This is the final setup. We used laptop as our PC, so we can have more feasibility in the place we taking data.

[pic]

|3 |Implementation |

3.1 Division of work

3.1.1 Ravi

Ravi focused on optical biosensor and photo sensor part of the project. The correct photo sensor based on the requirements of the Biosensor and the minimum optical intensity change to be detected was determined. All the necessary steps to setup optical equipment and simulate biomolecular interaction were performed.

3.1.2 Wenchan

Wenchan designed an amplifier circuit to amplify the output from the photodetector. She also conducted literature review to compare this project with other similar projects.

3.1.3 Aiken

Aiken readied the wireless network. He wrote a software module for the wireless sensor module to transmit the voltage value to PC. He also supported Ravi to conduct all the testing in this project.

3.2 Timetable

March 21 - 27 Simulate Biosensor operation for obtaining intensity change

March 28 - 31 Find a correct Photodetector

April 2 - 6 Order InGaAs APD

April 9 - 11 Test InGaAs APD under simulation of Biosensor spec.

April 12 - 19 Hardware Assembly 1

April 20 - 27 Hardware Assembly 2

April 28 - May 4 Testing

May 4 - 8 Analyzing data and write report

3.2 Budge

Wireless sensor node: US$100 each (we need at least two)

Photosensor: US$269

Connector: US$10 (at least 4)

Total cost will be $509

3.3 Optical sensor simulation

Since an actual Biosensor was not available at the time of undertaking this project work. An F-P I was used by separating two ends of a cleaved fiber by an air gap. The length cavity was changed to simulate Biomolecular interaction by changing the air gap between the two cleaved fibers. The cleaved cavity setup as an extrinsic F-P I is shown in Fig. 3.3

[pic]

Fig. 3.3: Cleaved Cavity setup

3.4 Hardware development

3.4. 1 Photodetector

We bought from THORLABS [6]. For more detail, please read the datasheet [7] from their website. The parts number is DET1CFC.

[pic]

3.4. 2 Circuits between photodetector and ADC

When light of intensity P is incident on the photodetector, an output voltage appears across the load as shown in figure that is proportional to the intensity of incident light give by.

 

Voltage=P * Responsivity * RL

 

The Responsivity and RL are constants for a given circuit.

Responsivity = 0.95 A/W (from datasheet)

RL = 100 kohms

 

Therefore, the output voltage in our circuit is equal to Voltage = 0.95 * 100000 *Intensity =95000 * Intensity

 

The voltage across the load resistor is coupled to the wireless module circuit, which converts it into digital signal and transmits the signal to a computer for detecting whether the biomolecular interaction has taken place. First, the wireless module receiver has to be modified to accept the voltage corresponding to a particular light intensity and Convert it into appropriate digital data via the built in ADC. Next, the computer software that will decode data and process whether interaction has taken place has to be calibrated for identifying light intensity before the interaction. The expected intensity change after interaction. Other information such as the extent of the intensity change, which might give some information about the concentration of the biomolecules, might also have to be programmed into the system.

3.4. 3 Wireless Sensor module with ADC

We found two different wireless sensor modules from two companies. The name of the first one is Tmote[1]. The second one is Mica2 [6]. Although their software platform is very similar, we choose to use Tmote. The reason to choose using that is Tmote provides a better resolution. The resolution of ADC in Tmote is 12 bit. The Mica2 one only have 8 bit.

3.5 Software development

There are two type of software came with the wireless sensor module. One of the software used in the module. Other one used in PC.

3.5. 1 Programming wireless sensor module

The software for the wireless sensor module calls TinyOS. It included some applications for demonstration. We add a new driver for our photodetector. It calls PD. In the wireless sensor side, we use a demo application including the photodetector driver. Therefore, the demo application in the wireless sensor module will converter the photodetector voltage value and then sends it to PC through RF wireless link.

3.5. 2 Software for Display and logging the data in PC

We use Trawler to display and log the data from wireless sensor module. This software can download from . It is JAVA software. There is a limitation in the software. It only displays the ADC last byte of 12-bit data. That is mean only eight of the 12 bits can be display in this program. The log function of this program can log the completely 12-bit data. There for detail analysis needs to use log function to save all the data and process it after the experiment.

|4 |Specification |

The purpose of the project is to construct wireless optical sensor network, which is cost-effective and low power consumption.

• The current system can detect upto 0.01 μW change in light intensity.

• Sensitivity can be scaled up further by using a current amplifier.

• Wavelength sensitivity from 1520nm to 1550nm

• Compact battery operated unit

4.1 ADC

Maximum input = 2.5V

Resolution = 0.6mV

Using right hand side equation, you can calculate the Vin.

VR- = 0, VR+ = 2.5 and NADC = ADC digital output

4.2 Wireless Sensor Network

See Appendix A – User manual.

|5 |Testing results |

The objective of these tests is to determine the accuracy and resolution of the wireless sensor network

Objective: Validate –

Methods available

- Vary l; n and λ fixed

- Vary n, l and λ fixed

- Vary λ, n and l fixed

In Test 1λ is varied from 1520nm to 1570nm in increments of 0.01 nm. Photodetector voltage is observed on Digital multimeter.

In Test 2-5 The length is varied. Varying the length of the cavity incrementally with lengths around 1µm has proved to be difficult since the distances are very small. It was difficult to vary the air gap at increments of less than 5µm due to lack of suitable equipment. The air gap was varied by aligning the fiber over a Fusion Splices and using the fusion splicer controls to manually increase the length. This approach does not allow to increase (or decrease) the cavity length by less that 5µm. The voltage is transmitted though the wireless module.

5.1 Test 1: Wavelength Vs. voltage

Laser source Power = 0.3dbm

λ=1520nm - 1570nm

RL = 100KΩ

[pic]Fig: 5.1 Experimental setup

[pic]

Fig. 5.3: Experimental Results

5.2 Test2

Simulate biomolecular interaction by varying length and detecting output voltage and transmitting it as digital data.

|Test2 |Laser source Power = 0.3dbm |λ=1550nm |RL = 100KΩ |

|Cavity length L |Wireless receiver Data |mV | |

|23.59550562 |17 |10.2 | |

|34.42028986 |73 |43.8 | |

|81.75223214 |53 |31.8 | |

|112.7392344 |90 |54 | |

|163.8026608 |85 |51 | |

[pic]

Fig. 5.3: Test 3 results

|6 |Expandable parts |

6.1 Hardware

6.1. 1 Sensor Part

Test the sensor module with an Intrinsic F-P Interferometer.

Add portable laser as the light source.

6.1. 2 Photo detector

Increase the sensitivity by replacing the load resistance with the current amplifier

Share the power source with wireless sensor module

6.1. 2 Wireless sensor module

Use more wireless modules to simulate self-configured mesh networks.

6.2 Software

6.2. 1 Wireless sensor module

We did not test the platform under more than one wireless sensor. The test we did is that one is wireless sensor, other one is base station. Next step to improve in wireless sensor module have two

6.2. 2 PC side

The module for display module inside the Trawler need rewrite. Such that it can real time display 12-bit (whole range) of data.

It can need to add some parameter input for decision making for trigger event when the sensor senses the target.

|7 |Reference |

1]

2]

3] Fiber Optic Sensors, Francis Yu, Shizhuo Yin

4] sales.

5]

6]

7]

8] Xingwei Wang et al, 2006 IEEE

|8 |Appendix A |

User Manual

1. Specifications

1.1 Optical Specifications

1.2Wireless Sensor Network Specifications

|RF BW |2.4GHz IEEE 802.15.4 |

|ADC resolution |0.037mV or 0.610mV |

|RF Tx Speed |250kbps |

|Antenna Range |50m(indoors) or 125m(outdoors) |

2. Mechanical size of wireless sensor module

[pic]

|Tag |x |y |Size |Notes |

|1 |0.183 |0.099 |Ø 0.090 |Mounting hole, do not use metal fixture |

|2 |2.454 |0.099 |Ø 0.090 |Mounting hole |

|3 |2.454 |1.151 |Ø 0.090 | |

|4 |0.755 |0.162 |Ø 0.066 |Pin 1 of 10-pin 0.1in rect IDC connector |

|5 |1.099 |0.163 |Ø 0.066 |Pin 1 of 6-pin 0.1in rect IDC connector |

|6 |2.139 |0.909 |Ø 0.034 |Pin 1 of 8-pin 2mm rect JTAG connector |

Table 1 Physical dimensions of Tmote Sky. All units are in inches unless otherwise noted[1].

| |Min |Nom |Max |Unit |

|Width |1.24 |1.26 |1.29 |in |

|Length |2.55 |2.58 |2.60 |In |

|Height (without battery pack and SMA |0.24 |0.26 |0.27 |In |

|antenna) | | | | |

3. Power supply

Two AA batteries power Tmote Sky. The module was designed to fit the two AA batteries form factor. AA cells may be used in the operating range of 2.1 to 3.6V DC. If the Tmote Sky module is plugged into the USB port it will receive power from the host computer. The mote operating voltage when attached to USB is 3V. If Tmote will always be attached to a USB port, no battery pack is necessary. The 16-pin expansion connector (described in the Section on page 17) can provide power to the module. Any of the battery terminal connections may also provide power to the module. At no point should the input voltage exceed 3.6V—doing so may damage the microcontroller, radio, or other components.

4. Typical Operating Conditions

See Reference [1] page 14

5. Setup to setup

1. Plug wireless module A into PC

[pic]

2. Insert battery into wireless module B

[pic]

3. Connect the photodetector to the wireless module B (Remember: Photodetector also need battery)

[pic]

4. Open the PC software Trawler (How to install and open Trawler, please see reference 1)

[pic]

5. Click the “Sensor readings” tab to show real time data from sensor on the screen

[pic]

6. If you want to log the data, you can press

[pic]

The photodetector output voltage equal to the reading of the ADC counts in the PC program times 0.6mV. For example, ADC counts = 160, then the voltage equal to 160*0.6mV= 96mV. (0.6mV is base on 2.5V reference voltage in the wireless module)

6. How to zoom in and out

[pic]

Press “Zoom in X”: It will zoom in time.

Press “Zoom in Y”: It will zoom in to see ADC value.

|9 |Appendix B |

Equipments

[pic]

Fig 10.1: New Focus tunable Laser source 1520nm – 1570nm

[pic]

Fig. 10.2: Extrinsic F-P cavity setup on a Fusion Splicer to simulate biomolecular interaction

[pic]

Thorlanbs InGaAs p-i-n Photodetector

[pic]

Moteiv wireless sensor network module

|10 |Appendix C |

Source Code

File name: DeltaM.nc

include "Delta.h"

#include "circularQueue.h"

module DeltaM {

provides {

interface StdControl;

}

uses {

interface Send as SendDeltaMsg;

interface Intercept as SnoopDeltaMsg;

interface RouteControl;

interface RouteStatistics;

interface ADC;

interface Timer;

interface Timer as TimerBlink;

interface Leds;

//AIken testing new temp sensors

// interface Timer as IreadTimer;

// interface SplitControl as HumidityControl;

// interface ADC as Temperature;

// interface ADCError as TemperatureError;

}

}

implementation {

/************************* VARIABLES *******************************/

// norace uint16_t temperature; //aiken for new sensor

uint16_t m_adc; //aiken Light sensor

uint32_t m_seqno;

TOS_Msg msg[DELTA_QUEUE_SIZE];

CircularQueue_t queue;

/************************* HELPER FUNCTIONS ************************/

task void sendData() {

uint16_t _length;

int i;

uint16_t neighbors[MHOP_PARENT_SIZE];

uint16_t quality[MHOP_PARENT_SIZE];

if (cqueue_pushBack( &queue ) == SUCCESS) {

DeltaMsg* dmsg = (DeltaMsg*)call SendDeltaMsg.getBuffer(&msg[queue.back], &_length);

atomic dmsg->reading = m_adc; //Aiken Deg F

// atomic dmsg->reading = -40.0+m_adc*0.018;

// atomic dmsg->reading = temperature;// m_adc; // aiken

dmsg->parent = call RouteControl.getParent();

call RouteStatistics.getNeighbors(neighbors, MHOP_PARENT_SIZE);

call RouteStatistics.getNeighborQuality(quality, MHOP_PARENT_SIZE);

for (i = 0; i < MHOP_PARENT_SIZE; i++) {

dmsg->neighbors[i] = neighbors[i];

dmsg->quality[i] = quality[i];

}

dmsg->neighborsize = MHOP_PARENT_SIZE;

dmsg->retransmissions = call RouteStatistics.getRetransmissions();

dmsg->seqno = m_seqno;

if (call SendDeltaMsg.send( &msg[queue.back], sizeof(DeltaMsg) ) == SUCCESS) {

call Leds.redOn();

}

else {

// remove from queue

cqueue_popBack( &queue );

}

}

// always increase seqno. gives a better idea of how many packets

// really have been dropped

m_seqno++;

}

void blinkBlue() {

call Leds.yellowOn();

call TimerBlink.start(TIMER_ONE_SHOT, 20);

}

/************************* STD CONTROL *****************************/

command result_t StdControl.init() {

cqueue_init( &queue, DELTA_QUEUE_SIZE );

// call HumidityControl.init(); // This is the driver for the humidity and temperature sensors //aiken

// call ADCControl.init();

// call ADCControl.bindPort( TOS_ADC_PD_PORT, TOSH_ACTUAL_ADC_PD_PORT);

return SUCCESS;

}

//AIken sensor values

/*

event result_t HumidityControl.initDone() {

return SUCCESS;

}

*/

command result_t StdControl.start() {

// call HumidityControl.start();//aiken sensor

call Timer.start( TIMER_REPEAT, 1000);//DELTA_TIME );

return SUCCESS;

}

//aiken

/*

event result_t HumidityControl.startDone() {

call TemperatureError.enable();

return SUCCESS;

}

*/

command result_t StdControl.stop() {

// call HumidityControl.stop();

return SUCCESS;

}

/*

event result_t HumidityControl.stopDone() {

call TemperatureError.disable();

return SUCCESS;

}

*/

/************************* TIMER ***********************************/

event result_t Timer.fired() {

call ADC.getData();

// call Temperature.getData();

return SUCCESS;

}

event result_t TimerBlink.fired() {

call Leds.yellowOff();

return SUCCESS;

}

/************************* ADC *************************************/

/********************************************************

A temperature reading is ready. Post a task to pack

the data and send it out the radio

********************************************************/

/* async event result_t Temperature.dataReady(uint16_t data) {

temperature = data;

post sendData();

return SUCCESS;

}

event result_t TemperatureError.error(uint8_t token) {

temperature = 0;

post sendData();

return SUCCESS;

}

*/

async event result_t ADC.dataReady(uint16_t data) {

m_adc = data;

post sendData();

return SUCCESS;

}

/************************* SEND ************************************/

event result_t SendDeltaMsg.sendDone(TOS_MsgPtr _msg, result_t _success) {

cqueue_popFront( &queue );

if (cqueue_isEmpty( &queue )) {

call Leds.redOff();

}

return SUCCESS;

}

/************************* SEND ************************************/

event result_t SnoopDeltaMsg.intercept(TOS_MsgPtr _msg, void* payload, uint16_t payloadLen) {

blinkBlue();

return SUCCESS;

}

}

File name: Delta.nc

#include "Delta.h"

configuration Delta {

// PDM.ADC -> ADCC.ADC[TOS_ADC_PD_PORT];

// PDM.ADCControl -> ADCC;

}

implementation {

components Main;

components MultiHop

, DeltaM as Impl

, TimerC

, LedsC

// , DemoSensorC //aiken

, PDC //ADC3

// ,HamamatsuC //on board photo sensor n board photosensor 4-12-2007

//,HumidityC //aiken

, DelugeC

;

Main.StdControl -> MultiHop;

Main.StdControl -> TimerC;

// Main.StdControl -> DemoSensorC; //Aiken

Main.StdControl -> PDC;

// Main.StdControl -> HamamatsuC; //On board photosensor 4-12-2007

Main.StdControl -> Impl;

// periodically sample a sensor

Impl.Timer -> TimerC.Timer[unique("Timer")];

Impl.TimerBlink -> TimerC.Timer[unique("Timer")];

//Impl.ADC -> DemoSensorC; //Aiken

Impl.ADC -> PDC.PD;//TSR;

//Impl.ADC -> HamamatsuC.PAR//TSR; //on board photo sensor n board photosensor 4-12-2007

// Impl.HumidityControl -> HumidityC;

//Impl.Temperature -> HumidityC.Temperature;

//Impl.TemperatureError -> HumidityC.TemperatureError;

// send data messages

Impl.SendDeltaMsg -> MultiHop.Send[AM_DELTAMSG];

// monitor traffic being forwarded

Impl.SnoopDeltaMsg -> MultiHop.Intercept[AM_DELTAMSG];

// get statistics about current operation

Impl.RouteControl -> MultiHop;

Impl.RouteStatistics -> MultiHop;

// pretty LEDs

Impl.Leds -> LedsC;

}

Filename:PDM.nc

// $Id: HamamatsuM.nc 599 2007-04-12 $

#include "PD.h"

/**

* Implementation of sampling and data collection from the Photodetector

* photodiodes on Moteiv's Tmote Sky ADC3.

*/

//@author Aiken Pang

module PDM {

provides {

interface StdControl;

interface ADCSingle as PDSingle;

interface ADCMultiple as PDMultiple;

}

uses {

interface ADCControl;

interface MSP430ADC12Single as MSP430ADC12SinglePD;

interface MSP430ADC12Multiple as MSP430ADC12MultiplePD;

}

}

implementation {

norace bool contMode;

command result_t StdControl.init() {

contMode = FALSE; //for testing range

return SUCCESS;

}

command result_t StdControl.start() {

result_t ok;

ok = call ADCControl.init();

ok &= call ADCControl.bindPort(TOS_ADC_PD_PORT,

TOSH_ACTUAL_ADC_PD_PORT);

call MSP430ADC12SinglePD.bind(MSP430ADC12_PD);

call MSP430ADC12MultiplePD.bind(MSP430ADC12_PD);

return ok;

}

command result_t StdControl.stop() {

return SUCCESS;

}

async command adcresult_t PDSingle.getData()

{

if (call MSP430ADC12SinglePD.getData() != MSP430ADC12_FAIL)

return ADC_SUCCESS;

return ADC_FAIL;

}

async command adcresult_t PDSingle.getDataContinuous()

{

if (call MSP430ADC12SinglePD.getDataRepeat(0) != MSP430ADC12_FAIL)

return ADC_SUCCESS;

return ADC_FAIL;

}

async command adcresult_t PDSingle.reserve()

{

if (call MSP430ADC12SinglePD.reserve() == SUCCESS)

return ADC_SUCCESS;

return ADC_FAIL;

}

async command adcresult_t PDSingle.reserveContinuous()

{

if (call MSP430ADC12SinglePD.reserveRepeat(0) == SUCCESS)

return ADC_SUCCESS;

return ADC_FAIL;

}

async command adcresult_t PDSingle.unreserve()

{

if (call MSP430ADC12SinglePD.unreserve() == SUCCESS)

return ADC_SUCCESS;

return ADC_FAIL;

}

async event result_t MSP430ADC12SinglePD.dataReady(uint16_t data)

{

return signal PDSingle.dataReady(ADC_SUCCESS, data);

}

default async event result_t PDSingle.dataReady(adcresult_t result, uint16_t data)

{

return FAIL;

}

async command adcresult_t PDMultiple.getData(uint16_t *buf, uint16_t length)

{

if (call MSP430ADC12MultiplePD.getData(buf, length, 0) != MSP430ADC12_FAIL)

return ADC_SUCCESS;

return ADC_FAIL;

}

async command adcresult_t PDMultiple.getDataContinuous(uint16_t *buf, uint16_t length)

{

if (length ................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download