mbed Weather Platform firmware http://mbed.org/users/okini3939/notebook/mbed-weather-platform-firmware/

Dependencies:   ChaNFSSD EthernetNetIf I2CLEDDisp Agentbed ChaNFSUSB ILinterpreter mbed BMP085 WeatherMeters ConfigFile ChaNFS I2CLCD

Committer:
okini3939
Date:
Sun Jul 10 15:36:46 2011 +0000
Revision:
1:6c7141895545
Parent:
0:bdb53686c194
Child:
2:a3e5edf84f74

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
okini3939 1:6c7141895545 1 /*
okini3939 1:6c7141895545 2 * Weather Station - mbed Weather Platform
okini3939 1:6c7141895545 3 * Copyright (c) 2011 Hiroshi Suga
okini3939 1:6c7141895545 4 * Released under the MIT License: http://mbed.org/license/mit
okini3939 1:6c7141895545 5 */
okini3939 1:6c7141895545 6
okini3939 1:6c7141895545 7 /** @file
okini3939 1:6c7141895545 8 * @brief Weather Station
okini3939 1:6c7141895545 9 */
okini3939 1:6c7141895545 10
okini3939 0:bdb53686c194 11 #include "mbed.h"
okini3939 0:bdb53686c194 12 #include "ConfigFile.h"
okini3939 0:bdb53686c194 13 #include "EthernetNetIf.h"
okini3939 0:bdb53686c194 14
okini3939 1:6c7141895545 15 #define DEBUG
okini3939 1:6c7141895545 16
okini3939 1:6c7141895545 17 #define PCB_LOT 0 // PCB version 0:i, 1:ro, 2:ha
okini3939 0:bdb53686c194 18
okini3939 0:bdb53686c194 19 #define USE_IL // IL interpreter
okini3939 0:bdb53686c194 20 #undef USE_DISPLAY // I2C LCD, LED display module
okini3939 0:bdb53686c194 21 #define USE_NTP // NTP Client
okini3939 0:bdb53686c194 22 #undef USE_SNMP // SNMP Agent
okini3939 0:bdb53686c194 23 #undef USE_EMAIL // send mail
okini3939 0:bdb53686c194 24
okini3939 1:6c7141895545 25 #if PCB_LOT >= 1
okini3939 1:6c7141895545 26 #define USE_3LED // 3 leds level meter
okini3939 1:6c7141895545 27 #define USE_SD_INS // SD card insert sw
okini3939 1:6c7141895545 28 #define USE_EXINOUT // 2 input, 2 output
okini3939 1:6c7141895545 29 #endif
okini3939 1:6c7141895545 30
okini3939 0:bdb53686c194 31 #define CONFIG_FILE "weather.cfg"
okini3939 0:bdb53686c194 32 #define IL_FILE "weather.asm"
okini3939 0:bdb53686c194 33
okini3939 0:bdb53686c194 34 #define TIMEZONE 9 // hour
okini3939 0:bdb53686c194 35
okini3939 0:bdb53686c194 36 #define CF_TWITTER_NUM 5
okini3939 0:bdb53686c194 37 #define CF_MAIL_NUM 5
okini3939 0:bdb53686c194 38 #define INPUT_NUM 2
okini3939 0:bdb53686c194 39 #define OUTPUT_NUM 2
okini3939 0:bdb53686c194 40
okini3939 0:bdb53686c194 41 #define LED_FREQ 4 // x 0.1s
okini3939 0:bdb53686c194 42 #define NET_TIMEOUT 15000 // ms
okini3939 0:bdb53686c194 43
okini3939 0:bdb53686c194 44 #define LED_BUSY_ON led1 = 0
okini3939 0:bdb53686c194 45 #define LED_BUSY_OFF led1 = 1
okini3939 0:bdb53686c194 46 #define LED_FILE_ON led2 = 1
okini3939 0:bdb53686c194 47 #define LED_FILE_OFF led2 = 0
okini3939 1:6c7141895545 48 #define LED_NET_ACT_ON led_yk = 0
okini3939 1:6c7141895545 49 #define LED_NET_ACT_OFF led_yk = 1
okini3939 1:6c7141895545 50 #define LED_NET_G_ON led_gayk = 1; led_gkya = 0
okini3939 1:6c7141895545 51 #define LED_NET_Y_ON led_gayk = 0; led_gkya = 1
okini3939 1:6c7141895545 52 #define LED_NET_GY_OFF led_gayk = 0; led_gkya = 0
okini3939 0:bdb53686c194 53
okini3939 0:bdb53686c194 54 enum eINPUTTYPE {
okini3939 0:bdb53686c194 55 INPUT_MOIST = 0,
okini3939 0:bdb53686c194 56 INPUT_FALL = 1,
okini3939 0:bdb53686c194 57 INPUT_RISE = 2,
okini3939 0:bdb53686c194 58 INPUT_CPM = 4,
okini3939 1:6c7141895545 59 INPUT_EXINOUT = 8,
okini3939 0:bdb53686c194 60 };
okini3939 0:bdb53686c194 61
okini3939 0:bdb53686c194 62 struct Sensor {
okini3939 0:bdb53686c194 63 float pres, temp, humi, light, anemo, vane, rain, uv, moist, temp2;
okini3939 0:bdb53686c194 64 time_t sec;
okini3939 0:bdb53686c194 65 int input[INPUT_NUM], output[OUTPUT_NUM];
okini3939 0:bdb53686c194 66 };
okini3939 0:bdb53686c194 67
okini3939 0:bdb53686c194 68 extern const char VERSION[];
okini3939 0:bdb53686c194 69 extern Serial pc;
okini3939 0:bdb53686c194 70 extern I2C i2c;
okini3939 0:bdb53686c194 71 extern EthernetNetIf *eth;
okini3939 0:bdb53686c194 72 extern ConfigFile cfg;
okini3939 0:bdb53686c194 73 extern DigitalOut led1, led2, led3, led4;
okini3939 1:6c7141895545 74 extern DigitalOut led_gayk, led_gkya, led_yk;
okini3939 1:6c7141895545 75 #ifdef USE_3LED
okini3939 1:6c7141895545 76 extern DigitalOut led_red, led_yellow;
okini3939 1:6c7141895545 77 #endif
okini3939 0:bdb53686c194 78 extern Sensor sensor, offset, sensor_old;
okini3939 0:bdb53686c194 79 extern volatile uint32_t locUpTime;
okini3939 0:bdb53686c194 80 extern char csv[];
okini3939 0:bdb53686c194 81
okini3939 0:bdb53686c194 82
okini3939 0:bdb53686c194 83 int init_conf ();
okini3939 0:bdb53686c194 84 int init_file ();
okini3939 0:bdb53686c194 85 int write_log (const char *buf);
okini3939 0:bdb53686c194 86 char* chop (char *s);
okini3939 0:bdb53686c194 87
okini3939 0:bdb53686c194 88 int init_net ();
okini3939 0:bdb53686c194 89 void pool_net ();
okini3939 0:bdb53686c194 90 int weatherstations ();
okini3939 0:bdb53686c194 91 int pachube (char *csv);
okini3939 0:bdb53686c194 92 int twitter (int num);
okini3939 0:bdb53686c194 93 int email (int num);
okini3939 0:bdb53686c194 94 int snmp_init (char *commname);
okini3939 0:bdb53686c194 95
okini3939 0:bdb53686c194 96 int init_sensor ();
okini3939 0:bdb53686c194 97 int update_sensor ();
okini3939 0:bdb53686c194 98 char *format_str (const char *fmt, char *buf, int len);
okini3939 0:bdb53686c194 99
okini3939 0:bdb53686c194 100 int init_ilip (char *dir);
okini3939 0:bdb53686c194 101 void exec_ilip (int enable);
okini3939 0:bdb53686c194 102 void pool_ilip ();
okini3939 0:bdb53686c194 103
okini3939 0:bdb53686c194 104 int init_display ();
okini3939 0:bdb53686c194 105 void pool_display ();
okini3939 0:bdb53686c194 106 void update_display ();