hs loovee
/
ARCH_GPRS_Demo
seeedstudio ARCH GPRS Demo. post data to yeelink.
main.cpp@0:6d297fe482af, 2013-08-23 (annotated)
- Committer:
- loovee
- Date:
- Fri Aug 23 02:31:06 2013 +0000
- Revision:
- 0:6d297fe482af
seeedstudio Arch Gprs Demo. ; ; post data to yeelink.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
loovee | 0:6d297fe482af | 1 | /* |
loovee | 0:6d297fe482af | 2 | main.cpp, iot_mbed demo |
loovee | 0:6d297fe482af | 3 | 2013 Copyright (c) Seeed Technology Inc. All right reserved. |
loovee | 0:6d297fe482af | 4 | |
loovee | 0:6d297fe482af | 5 | Author:Loovee |
loovee | 0:6d297fe482af | 6 | 2013-7-21 |
loovee | 0:6d297fe482af | 7 | |
loovee | 0:6d297fe482af | 8 | This library is free software; you can redistribute it and/or |
loovee | 0:6d297fe482af | 9 | modify it under the terms of the GNU Lesser General Public |
loovee | 0:6d297fe482af | 10 | License as published by the Free Software Foundation; either |
loovee | 0:6d297fe482af | 11 | version 2.1 of the License, or (at your option) any later version. |
loovee | 0:6d297fe482af | 12 | |
loovee | 0:6d297fe482af | 13 | This library is distributed in the hope that it will be useful, |
loovee | 0:6d297fe482af | 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
loovee | 0:6d297fe482af | 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
loovee | 0:6d297fe482af | 16 | Lesser General Public License for more details. |
loovee | 0:6d297fe482af | 17 | |
loovee | 0:6d297fe482af | 18 | You should have received a copy of the GNU Lesser General Public |
loovee | 0:6d297fe482af | 19 | License along with this library; if not, write to the Free Software |
loovee | 0:6d297fe482af | 20 | Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
loovee | 0:6d297fe482af | 21 | */ |
loovee | 0:6d297fe482af | 22 | |
loovee | 0:6d297fe482af | 23 | #include "tcp_yeelink.h" |
loovee | 0:6d297fe482af | 24 | #include "mbed.h" |
loovee | 0:6d297fe482af | 25 | #include "tcp_yeelink_dfs.h" |
loovee | 0:6d297fe482af | 26 | #include "ARCH_GPRS_HW.h" |
loovee | 0:6d297fe482af | 27 | #include "i2c_uart.h" |
loovee | 0:6d297fe482af | 28 | #include "ARCH_GPRS_Sleep.h" |
loovee | 0:6d297fe482af | 29 | |
loovee | 0:6d297fe482af | 30 | AnalogIn light_sensor(GROVE_ADC_1); |
loovee | 0:6d297fe482af | 31 | |
loovee | 0:6d297fe482af | 32 | #define BROADCAST_TIME 100 // broadcast time : 100s |
loovee | 0:6d297fe482af | 33 | |
loovee | 0:6d297fe482af | 34 | // you can get this information in www.yeelink.net |
loovee | 0:6d297fe482af | 35 | #define HTTP_POST_URL "http://api.yeelink.net/v1.0/device/4190/sensor/6074/datapoints" |
loovee | 0:6d297fe482af | 36 | |
loovee | 0:6d297fe482af | 37 | //#define HTTP_POST_URL_BAT "http://api.yeelink.net/v1.0/device/4190/sensor/6089/datapoints" |
loovee | 0:6d297fe482af | 38 | |
loovee | 0:6d297fe482af | 39 | #define YEELINK_APIKEY "38645582d54121679dee8104f140c29a" |
loovee | 0:6d297fe482af | 40 | |
loovee | 0:6d297fe482af | 41 | void delay_ms(long ms) |
loovee | 0:6d297fe482af | 42 | { |
loovee | 0:6d297fe482af | 43 | if(ms <= 900) |
loovee | 0:6d297fe482af | 44 | { |
loovee | 0:6d297fe482af | 45 | wait_ms(ms); |
loovee | 0:6d297fe482af | 46 | wdt_sleep.feed(); |
loovee | 0:6d297fe482af | 47 | } |
loovee | 0:6d297fe482af | 48 | else |
loovee | 0:6d297fe482af | 49 | { |
loovee | 0:6d297fe482af | 50 | ms -= 900; |
loovee | 0:6d297fe482af | 51 | delay_ms(900); |
loovee | 0:6d297fe482af | 52 | } |
loovee | 0:6d297fe482af | 53 | } |
loovee | 0:6d297fe482af | 54 | |
loovee | 0:6d297fe482af | 55 | int getAnalog() |
loovee | 0:6d297fe482af | 56 | { |
loovee | 0:6d297fe482af | 57 | long sum = 0; |
loovee | 0:6d297fe482af | 58 | for(int i=0; i<32; i++) |
loovee | 0:6d297fe482af | 59 | { |
loovee | 0:6d297fe482af | 60 | sum += light_sensor.read_u16(); |
loovee | 0:6d297fe482af | 61 | } |
loovee | 0:6d297fe482af | 62 | sum = sum >> 5; |
loovee | 0:6d297fe482af | 63 | sum = sum >> 6; |
loovee | 0:6d297fe482af | 64 | return sum; |
loovee | 0:6d297fe482af | 65 | } |
loovee | 0:6d297fe482af | 66 | |
loovee | 0:6d297fe482af | 67 | void power_on() |
loovee | 0:6d297fe482af | 68 | { |
loovee | 0:6d297fe482af | 69 | IOT.init(HTTP_POST_URL, YEELINK_APIKEY); |
loovee | 0:6d297fe482af | 70 | START: |
loovee | 0:6d297fe482af | 71 | DBG("begin to start\r\n"); |
loovee | 0:6d297fe482af | 72 | iot_hw.EG10_PWROFF(); // eg10 power off |
loovee | 0:6d297fe482af | 73 | wait(0.5); |
loovee | 0:6d297fe482af | 74 | wdt_sleep.feed(); |
loovee | 0:6d297fe482af | 75 | iot_hw.EG10_PWRON(); // eg10 power on |
loovee | 0:6d297fe482af | 76 | wait(0.5); |
loovee | 0:6d297fe482af | 77 | wdt_sleep.feed(); |
loovee | 0:6d297fe482af | 78 | |
loovee | 0:6d297fe482af | 79 | if(iot_hw.init()==1) |
loovee | 0:6d297fe482af | 80 | { |
loovee | 0:6d297fe482af | 81 | iot_hw.EG10StateLed(1); |
loovee | 0:6d297fe482af | 82 | DBG("hardware init ok\r\n"); |
loovee | 0:6d297fe482af | 83 | } |
loovee | 0:6d297fe482af | 84 | else |
loovee | 0:6d297fe482af | 85 | { |
loovee | 0:6d297fe482af | 86 | DBG("hardware init fail\r\n"); |
loovee | 0:6d297fe482af | 87 | DBG("hardware init again\r\n"); |
loovee | 0:6d297fe482af | 88 | goto START; |
loovee | 0:6d297fe482af | 89 | } |
loovee | 0:6d297fe482af | 90 | wdt_sleep.feed(); |
loovee | 0:6d297fe482af | 91 | } |
loovee | 0:6d297fe482af | 92 | |
loovee | 0:6d297fe482af | 93 | #define LOWPWR 1 |
loovee | 0:6d297fe482af | 94 | |
loovee | 0:6d297fe482af | 95 | void iot_demo() |
loovee | 0:6d297fe482af | 96 | { |
loovee | 0:6d297fe482af | 97 | wdt_sleep.wdtClkSetup(WDTCLK_SRC_IRC_OSC); |
loovee | 0:6d297fe482af | 98 | |
loovee | 0:6d297fe482af | 99 | PWRON: |
loovee | 0:6d297fe482af | 100 | power_on(); |
loovee | 0:6d297fe482af | 101 | for(int i=0; i<10; i++) |
loovee | 0:6d297fe482af | 102 | { |
loovee | 0:6d297fe482af | 103 | wdt_sleep.feed(); |
loovee | 0:6d297fe482af | 104 | wait(0.9); |
loovee | 0:6d297fe482af | 105 | wdt_sleep.feed(); |
loovee | 0:6d297fe482af | 106 | } |
loovee | 0:6d297fe482af | 107 | int dtaSw = 0; |
loovee | 0:6d297fe482af | 108 | while(1) |
loovee | 0:6d297fe482af | 109 | { |
loovee | 0:6d297fe482af | 110 | |
loovee | 0:6d297fe482af | 111 | int dtaVal = getAnalog()/10; |
loovee | 0:6d297fe482af | 112 | |
loovee | 0:6d297fe482af | 113 | if(!IOT.postDtaToYeelink(HTTP_POST_URL, YEELINK_APIKEY, dtaVal)) |
loovee | 0:6d297fe482af | 114 | { |
loovee | 0:6d297fe482af | 115 | DBG("post data err\r\n"); |
loovee | 0:6d297fe482af | 116 | wdt_sleep.feed(); |
loovee | 0:6d297fe482af | 117 | goto PWRON; |
loovee | 0:6d297fe482af | 118 | } |
loovee | 0:6d297fe482af | 119 | else |
loovee | 0:6d297fe482af | 120 | { |
loovee | 0:6d297fe482af | 121 | DBG("post data ok!\r\n"); |
loovee | 0:6d297fe482af | 122 | } |
loovee | 0:6d297fe482af | 123 | |
loovee | 0:6d297fe482af | 124 | iot_hw.userLed(1, 1); |
loovee | 0:6d297fe482af | 125 | wait(.2); |
loovee | 0:6d297fe482af | 126 | iot_hw.userLed(1, 0); |
loovee | 0:6d297fe482af | 127 | |
loovee | 0:6d297fe482af | 128 | for(int i=0; i<10; i++) |
loovee | 0:6d297fe482af | 129 | { |
loovee | 0:6d297fe482af | 130 | wdt_sleep.feed(); |
loovee | 0:6d297fe482af | 131 | wait(0.5); |
loovee | 0:6d297fe482af | 132 | } |
loovee | 0:6d297fe482af | 133 | #if LOWPWR |
loovee | 0:6d297fe482af | 134 | DBG("goto sleep for 100s"); |
loovee | 0:6d297fe482af | 135 | iot_hw.EG10_PWROFF(); |
loovee | 0:6d297fe482af | 136 | iot_hw.grovePwrOff(); |
loovee | 0:6d297fe482af | 137 | wdt_sleep.sleep(BROADCAST_TIME); |
loovee | 0:6d297fe482af | 138 | |
loovee | 0:6d297fe482af | 139 | DBG("wake"); |
loovee | 0:6d297fe482af | 140 | goto PWRON; |
loovee | 0:6d297fe482af | 141 | #else |
loovee | 0:6d297fe482af | 142 | |
loovee | 0:6d297fe482af | 143 | wait(5); |
loovee | 0:6d297fe482af | 144 | #endif |
loovee | 0:6d297fe482af | 145 | } |
loovee | 0:6d297fe482af | 146 | } |
loovee | 0:6d297fe482af | 147 | |
loovee | 0:6d297fe482af | 148 | void wdt_sleep_demo() |
loovee | 0:6d297fe482af | 149 | { |
loovee | 0:6d297fe482af | 150 | DBG("begin to poweron\r\n"); |
loovee | 0:6d297fe482af | 151 | // power_on(); |
loovee | 0:6d297fe482af | 152 | wdt_sleep.wdtClkSetup(WDTCLK_SRC_IRC_OSC); |
loovee | 0:6d297fe482af | 153 | |
loovee | 0:6d297fe482af | 154 | // start led |
loovee | 0:6d297fe482af | 155 | for(int i=0; i<5; i++) |
loovee | 0:6d297fe482af | 156 | { |
loovee | 0:6d297fe482af | 157 | iot_hw.userLed(2, 1);wait_ms(100); |
loovee | 0:6d297fe482af | 158 | iot_hw.userLed(2, 0);wait_ms(100); |
loovee | 0:6d297fe482af | 159 | } |
loovee | 0:6d297fe482af | 160 | |
loovee | 0:6d297fe482af | 161 | |
loovee | 0:6d297fe482af | 162 | // cut power |
loovee | 0:6d297fe482af | 163 | for(int i=0; i<10; i++) |
loovee | 0:6d297fe482af | 164 | { |
loovee | 0:6d297fe482af | 165 | wait(0.1); |
loovee | 0:6d297fe482af | 166 | wdt_sleep.feed(); |
loovee | 0:6d297fe482af | 167 | } |
loovee | 0:6d297fe482af | 168 | iot_hw.EG10_PWROFF(); |
loovee | 0:6d297fe482af | 169 | iot_hw.grovePwrOff(); |
loovee | 0:6d297fe482af | 170 | |
loovee | 0:6d297fe482af | 171 | while(1) |
loovee | 0:6d297fe482af | 172 | { |
loovee | 0:6d297fe482af | 173 | #if 0 |
loovee | 0:6d297fe482af | 174 | DBG("sleep\r\n"); |
loovee | 0:6d297fe482af | 175 | wait(0.1); |
loovee | 0:6d297fe482af | 176 | //wdt_sleep.gotoSleep(); |
loovee | 0:6d297fe482af | 177 | DBG("wake\r\n"); |
loovee | 0:6d297fe482af | 178 | for(int i=0; i<5; i++) |
loovee | 0:6d297fe482af | 179 | { |
loovee | 0:6d297fe482af | 180 | wait(1); |
loovee | 0:6d297fe482af | 181 | wdt_sleep.feed(); |
loovee | 0:6d297fe482af | 182 | } |
loovee | 0:6d297fe482af | 183 | #else |
loovee | 0:6d297fe482af | 184 | DBG("sleep 5s\r\n"); |
loovee | 0:6d297fe482af | 185 | wait(0.1); |
loovee | 0:6d297fe482af | 186 | wdt_sleep.sleep(5); |
loovee | 0:6d297fe482af | 187 | |
loovee | 0:6d297fe482af | 188 | DBG("wake\r\n"); |
loovee | 0:6d297fe482af | 189 | for(int i=0; i<10; i++) |
loovee | 0:6d297fe482af | 190 | { |
loovee | 0:6d297fe482af | 191 | wait(0.5); |
loovee | 0:6d297fe482af | 192 | wdt_sleep.feed(); |
loovee | 0:6d297fe482af | 193 | } |
loovee | 0:6d297fe482af | 194 | |
loovee | 0:6d297fe482af | 195 | #endif |
loovee | 0:6d297fe482af | 196 | } |
loovee | 0:6d297fe482af | 197 | } |
loovee | 0:6d297fe482af | 198 | |
loovee | 0:6d297fe482af | 199 | |
loovee | 0:6d297fe482af | 200 | int main(void) |
loovee | 0:6d297fe482af | 201 | { |
loovee | 0:6d297fe482af | 202 | //wdt_sleep_demo(); |
loovee | 0:6d297fe482af | 203 | iot_demo(); |
loovee | 0:6d297fe482af | 204 | } |
loovee | 0:6d297fe482af | 205 | |
loovee | 0:6d297fe482af | 206 | /********************************************************************************************************* |
loovee | 0:6d297fe482af | 207 | END FILE |
loovee | 0:6d297fe482af | 208 | *********************************************************************************************************/ |