From 701a42e239f16cc2925113d4ffeb584788c1d084 Mon Sep 17 00:00:00 2001 From: "Enric M. Calvo" Date: Sun, 27 Feb 2011 21:28:25 +0100 Subject: [PATCH] Added dummy light driver. Now skywebsense likes Z1 The light sensor driver is mapped to the same pin as the potentiometer in Z1 Starter Platform. sky-websense is untouched, though. --- examples/ipv6/sky-websense/sky-websense.c | 7 +- platform/z1/Makefile.common | 3 +- platform/z1/dev/light-sensor.c | 92 ++++++++++++++++ platform/z1/dev/light-sensor.h | 51 +++++++++ platform/z1/dev/light.c | 122 ++++++++++++++++++++++ platform/z1/dev/light.h | 41 ++++++++ 6 files changed, 311 insertions(+), 5 deletions(-) create mode 100644 platform/z1/dev/light-sensor.c create mode 100644 platform/z1/dev/light-sensor.h create mode 100644 platform/z1/dev/light.c create mode 100644 platform/z1/dev/light.h diff --git a/examples/ipv6/sky-websense/sky-websense.c b/examples/ipv6/sky-websense/sky-websense.c index 8f26ca2dc..33c06c129 100644 --- a/examples/ipv6/sky-websense/sky-websense.c +++ b/examples/ipv6/sky-websense/sky-websense.c @@ -42,7 +42,7 @@ #include "httpd-simple.h" #include "webserver-nogui.h" #include "dev/sht11-sensor.h" -//#include "dev/light-sensor.h" +#include "dev/light-sensor.h" #include "dev/leds.h" #include @@ -59,8 +59,7 @@ static int sensors_pos; static int get_light(void) { - //return 10 * light_sensor.value(LIGHT_SENSOR_PHOTOSYNTHETIC) / 7; - return 0; + return 10 * light_sensor.value(LIGHT_SENSOR_PHOTOSYNTHETIC) / 7; } /*---------------------------------------------------------------------------*/ static int @@ -152,7 +151,7 @@ PROCESS_THREAD(web_sense_process, ev, data) process_start(&webserver_nogui_process, NULL); etimer_set(&timer, CLOCK_SECOND * 2); - //SENSORS_ACTIVATE(light_sensor); + SENSORS_ACTIVATE(light_sensor); SENSORS_ACTIVATE(sht11_sensor); while(1) { diff --git a/platform/z1/Makefile.common b/platform/z1/Makefile.common index 5a137b500..3596a352b 100644 --- a/platform/z1/Makefile.common +++ b/platform/z1/Makefile.common @@ -11,7 +11,8 @@ ARCH=msp430.c leds.c watchdog.c xmem.c \ spix.c cc2420.c cc2420-aes.c cc2420-arch.c cc2420-arch-sfd.c\ node-id.c sensors.c button-sensor.c cfs-coffee.c \ radio-sensor.c uart0x.c uart0-putchar.c uip-ipchksum.c \ - checkpoint-arch.c slip.c slip_uart0.c z1-phidgets.c sht11.c sht11-sensor.c + checkpoint-arch.c slip.c slip_uart0.c \ + z1-phidgets.c sht11.c sht11-sensor.c light-sensor.c battery-sensor.c sky-sensors.c CONTIKI_TARGET_DIRS = . dev apps net ifndef CONTIKI_TARGET_MAIN diff --git a/platform/z1/dev/light-sensor.c b/platform/z1/dev/light-sensor.c new file mode 100644 index 000000000..b4fb8ed5d --- /dev/null +++ b/platform/z1/dev/light-sensor.c @@ -0,0 +1,92 @@ +/* + * Copyright (c) 2005-2010, Swedish Institute of Computer Science + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * This file is part of the Contiki operating system. + * + * @(#)$Id: light-sensor.c,v 1.7 2010/08/25 19:30:53 nifi Exp $ + */ + +#include "contiki.h" +#include "lib/sensors.h" +#include "dev/sky-sensors.h" +#include "dev/light-sensor.h" +#include "dev/potentiometer-sensor.h" + +#include + +/* Photodiode 1 (P64) on INCH_4 */ +/* Photodiode 2 (P65) on INCH_5 */ +//Enric#define INPUT_CHANNEL ((1 << INCH_4) | (1 << INCH_5)) +#ifndef INPUT_CHANNEL +#define INPUT_CHANNEL (1 << INCH_4) +#endif + +#ifndef INPUT_REFERENCE +#define INPUT_REFERENCE SREF_0 +#endif + +#ifdef POTENTIOMETER_MEM +#define PHOTOSYNTHETIC_MEM POTENTIOMETER_MEM +#define TOTAL_SOLAR_MEM POTENTIOMETER_MEM +#else +#define PHOTOSYNTHETIC_MEM ADC12MEM4 +#define TOTAL_SOLAR_MEM ADC12MEM4 +#endif + + +const struct sensors_sensor light_sensor; + +/*---------------------------------------------------------------------------*/ +static int +value(int type) +{ + switch(type) { + /* Photosynthetically Active Radiation. */ + case LIGHT_SENSOR_PHOTOSYNTHETIC: + return PHOTOSYNTHETIC_MEM; + + /* Total Solar Radiation. */ + case LIGHT_SENSOR_TOTAL_SOLAR: + return TOTAL_SOLAR_MEM; + } + return 0; +} +/*---------------------------------------------------------------------------*/ +static int +status(int type) +{ + return sky_sensors_status(INPUT_CHANNEL, type); +} +/*---------------------------------------------------------------------------*/ +static int +configure(int type, int c) +{ + return sky_sensors_configure(INPUT_CHANNEL, INPUT_REFERENCE, type, c); +} +/*---------------------------------------------------------------------------*/ +SENSORS_SENSOR(light_sensor, "Light", value, configure, status); diff --git a/platform/z1/dev/light-sensor.h b/platform/z1/dev/light-sensor.h new file mode 100644 index 000000000..467fec667 --- /dev/null +++ b/platform/z1/dev/light-sensor.h @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2010, Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * + * $Id: light-sensor.h,v 1.2 2010/01/14 20:23:02 adamdunkels Exp $ + * + * ----------------------------------------------------------------- + * + * Author : Adam Dunkels, Joakim Eriksson, Niclas Finne + * Created : 2010-01-08 + * Updated : $Date: 2010/01/14 20:23:02 $ + * $Revision: 1.2 $ + */ + +#ifndef __LIGHT_SENSOR_H__ +#define __LIGHT_SENSOR_H__ + +#include "lib/sensors.h" + +extern const struct sensors_sensor light_sensor; + +#define LIGHT_SENSOR_PHOTOSYNTHETIC 0 +#define LIGHT_SENSOR_TOTAL_SOLAR 1 + + +#endif /* __LIGHT-SENSOR_H__ */ diff --git a/platform/z1/dev/light.c b/platform/z1/dev/light.c new file mode 100644 index 000000000..970504d2a --- /dev/null +++ b/platform/z1/dev/light.c @@ -0,0 +1,122 @@ +/* + * Copyright (c) 2011, Zolertia(TM) is a trademark of Advancare,SL + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * This file is part of the Contiki operating system. + * + * + * \file + * Dummy light-sensor to allow as many programs for sky to compile for Z1 + * + * \author + * Enric M. Calvo , adapted from previous work + * + * @(#)$Id: light.c,v 1.0 2011/02/27 ecalvo $ + */ + +#include + +#include + +#include "contiki.h" +#include "dev/light.h" + +/* + * Initialize periodic readings from the 2 photo diodes. The most + * recent readings will be stored in ADC internal registers/memory. + */ +void +sensors_light_init(void) +{ +} + +/* Photosynthetically Active Radiation. */ +unsigned +sensors_light1(void) +{ + return 0; +} + +/* Total Solar Radiation. */ +unsigned +sensors_light2(void) +{ + return 0; +} + +/* + * Most of this information taken from + * http://www.moteiv.com/community/Getting_Data_from_Tmote_Sky%27s_Sensors + * + * The Photosynthetically Active Radiation (PAR) sensor as well as the + * Total Solar Radiation (TSR) sensor uses the 2.5V reference voltage + * to produce the raw ADC value. + + * The voltage across each sensor is: + * + * VsensorPAR = ADCValuePAR/4096 * Vref (1a) + * VsensorTSR = ADCValueTSR/4096 * Vref (1b) + * where Vref = 2.5V + * + * This voltage creates a current through a resistor R=100KOhm and this + * current has a linear relationship with the light intensity in Lux. + * IPAR = VsensorPAR / 100,000 (2a) + * ITSR = VsensorTSR / 100,000 (2b) + * + * S1087 (PAR) lx = 1e6 * IPAR * 1000 (3a) + * S1087-01 (TSR) lx = 1e5 * ITSR * 1000 (3b) + * + * lxPAR = 10e9 * ADCValuePAR *(1/4096)* Vref * 10e-5 or + * lxPAR = 3125* ADCvaluePAR / 512 + * and + * lxTSR = 10e8 * ADCValueTSR *(1/4096)* Vref * 10e-5 or + * lxTSR = 625* ADCvalueTSR / 1024 +*/ + +#if 0 +/* Photosynthetically Active Radiation in Lux units. */ +unsigned +sensors_light1_lux(void) +{ + unsigned temp; + temp = (uint32_t)ADC12MEM0; + + temp = (temp*3125)>> 9; + return (uint16_t)(temp & 0xFFFF); +} + +/* Total Solar Radiation in Lux units. */ +unsigned +sensors_light2_lux(void) +{ + unsigned temp; + temp = (uint32_t)ADC12MEM1; + + temp = (temp*625)>> 10; + return (uint16_t)(temp & 0xFFFF); +} +#endif diff --git a/platform/z1/dev/light.h b/platform/z1/dev/light.h new file mode 100644 index 000000000..09423c628 --- /dev/null +++ b/platform/z1/dev/light.h @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2005, Swedish Institute of Computer Science + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * This file is part of the Contiki operating system. + * + * @(#)$Id: light.h,v 1.1 2006/08/02 14:44:46 bg- Exp $ + */ +#ifndef __LIGHT_H__ +#define __LIGHT_H__ + +void sensors_light_init(void); + +unsigned sensors_light1(void); +unsigned sensors_light2(void); + +#endif /* __LIGHT_H__ */