hs loovee
/
ARCH_GPRS_Demo
seeedstudio ARCH GPRS Demo. post data to yeelink.
Diff: main.cpp
- Revision:
- 0:6d297fe482af
diff -r 000000000000 -r 6d297fe482af main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Fri Aug 23 02:31:06 2013 +0000 @@ -0,0 +1,208 @@ +/* + main.cpp, iot_mbed demo + 2013 Copyright (c) Seeed Technology Inc. All right reserved. + + Author:Loovee + 2013-7-21 + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include "tcp_yeelink.h" +#include "mbed.h" +#include "tcp_yeelink_dfs.h" +#include "ARCH_GPRS_HW.h" +#include "i2c_uart.h" +#include "ARCH_GPRS_Sleep.h" + +AnalogIn light_sensor(GROVE_ADC_1); + +#define BROADCAST_TIME 100 // broadcast time : 100s + +// you can get this information in www.yeelink.net +#define HTTP_POST_URL "http://api.yeelink.net/v1.0/device/4190/sensor/6074/datapoints" + +//#define HTTP_POST_URL_BAT "http://api.yeelink.net/v1.0/device/4190/sensor/6089/datapoints" + +#define YEELINK_APIKEY "38645582d54121679dee8104f140c29a" + +void delay_ms(long ms) +{ + if(ms <= 900) + { + wait_ms(ms); + wdt_sleep.feed(); + } + else + { + ms -= 900; + delay_ms(900); + } +} + +int getAnalog() +{ + long sum = 0; + for(int i=0; i<32; i++) + { + sum += light_sensor.read_u16(); + } + sum = sum >> 5; + sum = sum >> 6; + return sum; +} + +void power_on() +{ + IOT.init(HTTP_POST_URL, YEELINK_APIKEY); + START: + DBG("begin to start\r\n"); + iot_hw.EG10_PWROFF(); // eg10 power off + wait(0.5); + wdt_sleep.feed(); + iot_hw.EG10_PWRON(); // eg10 power on + wait(0.5); + wdt_sleep.feed(); + + if(iot_hw.init()==1) + { + iot_hw.EG10StateLed(1); + DBG("hardware init ok\r\n"); + } + else + { + DBG("hardware init fail\r\n"); + DBG("hardware init again\r\n"); + goto START; + } + wdt_sleep.feed(); +} + +#define LOWPWR 1 + +void iot_demo() +{ + wdt_sleep.wdtClkSetup(WDTCLK_SRC_IRC_OSC); + + PWRON: + power_on(); + for(int i=0; i<10; i++) + { + wdt_sleep.feed(); + wait(0.9); + wdt_sleep.feed(); + } + int dtaSw = 0; + while(1) + { + + int dtaVal = getAnalog()/10; + + if(!IOT.postDtaToYeelink(HTTP_POST_URL, YEELINK_APIKEY, dtaVal)) + { + DBG("post data err\r\n"); + wdt_sleep.feed(); + goto PWRON; + } + else + { + DBG("post data ok!\r\n"); + } + + iot_hw.userLed(1, 1); + wait(.2); + iot_hw.userLed(1, 0); + + for(int i=0; i<10; i++) + { + wdt_sleep.feed(); + wait(0.5); + } +#if LOWPWR + DBG("goto sleep for 100s"); + iot_hw.EG10_PWROFF(); + iot_hw.grovePwrOff(); + wdt_sleep.sleep(BROADCAST_TIME); + + DBG("wake"); + goto PWRON; +#else + + wait(5); +#endif + } +} + +void wdt_sleep_demo() +{ + DBG("begin to poweron\r\n"); + // power_on(); + wdt_sleep.wdtClkSetup(WDTCLK_SRC_IRC_OSC); + + // start led + for(int i=0; i<5; i++) + { + iot_hw.userLed(2, 1);wait_ms(100); + iot_hw.userLed(2, 0);wait_ms(100); + } + + + // cut power + for(int i=0; i<10; i++) + { + wait(0.1); + wdt_sleep.feed(); + } + iot_hw.EG10_PWROFF(); + iot_hw.grovePwrOff(); + + while(1) + { +#if 0 + DBG("sleep\r\n"); + wait(0.1); + //wdt_sleep.gotoSleep(); + DBG("wake\r\n"); + for(int i=0; i<5; i++) + { + wait(1); + wdt_sleep.feed(); + } +#else + DBG("sleep 5s\r\n"); + wait(0.1); + wdt_sleep.sleep(5); + + DBG("wake\r\n"); + for(int i=0; i<10; i++) + { + wait(0.5); + wdt_sleep.feed(); + } + +#endif + } +} + + +int main(void) +{ + //wdt_sleep_demo(); + iot_demo(); +} + +/********************************************************************************************************* + END FILE +*********************************************************************************************************/