test program for SIM808 GPRS + JPEG Camera library for LinkSprite LS-Y201 camera +MPU9150

Dependencies:   JPEGCamera MPU9150_DMP_Nucleo QuaternionMath mbed

Fork of JPEGCamera_SIM808_STM32F401RE by 涂 桂旺

Committer:
tgw
Date:
Fri Jun 23 03:23:38 2017 +0000
Revision:
4:c4c42e7c2298
Parent:
3:f307a059affe
Child:
5:a4bb144ba3b7
add mpu9150 ,add ls-y201, add sim808

Who changed what in which revision?

UserRevisionLine numberNew contents of line
thesane 0:0c9cdf074ba1 1
thesane 0:0c9cdf074ba1 2 #include "mbed.h"
tgw 3:f307a059affe 3 #include <string>
tgw 3:f307a059affe 4
thesane 0:0c9cdf074ba1 5 #include "JPEGCamera.h"
tgw 4:c4c42e7c2298 6 #include "MPU9150.h"
tgw 4:c4c42e7c2298 7 #include "Quaternion.h"
thesane 0:0c9cdf074ba1 8
tgw 4:c4c42e7c2298 9 #define buf_max 256
tgw 4:c4c42e7c2298 10
tgw 4:c4c42e7c2298 11 #define sys_idle 0
tgw 4:c4c42e7c2298 12 #define sys_gprs 1
tgw 4:c4c42e7c2298 13 #define sys_camera 2
tgw 4:c4c42e7c2298 14 #define sys_mpu9150 3
tgw 3:f307a059affe 15
tgw 3:f307a059affe 16 Serial pc(SERIAL_TX, SERIAL_RX); // SERIAL_TX(D1), SERIAL_RX(D0) read from bluetooth module VERIFIED
tgw 3:f307a059affe 17 Serial sim808(PA_9, PA_10); // TX(D8), RX(D2) to camera
tgw 3:f307a059affe 18 JPEGCamera camera(PA_11, PA_12); // TX6, RX6 to camera
tgw 3:f307a059affe 19
tgw 4:c4c42e7c2298 20 MPU9150 imu(D15, D14, D7); //scl sda int
tgw 3:f307a059affe 21 //I2C_SCL--PB_8(D15)
tgw 3:f307a059affe 22 //I2C_SDA--PB_9(D14)
tgw 3:f307a059affe 23
tgw 3:f307a059affe 24 DigitalIn mybutton(USER_BUTTON);//PC_13
tgw 4:c4c42e7c2298 25 DigitalOut led(LED1);//PA_5(D13)
tgw 3:f307a059affe 26 DigitalOut sim_power(D4);//PB_5 //复位SIM808
thesane 0:0c9cdf074ba1 27
thesane 0:0c9cdf074ba1 28 //Camera time
thesane 0:0c9cdf074ba1 29 Timer timer;
thesane 0:0c9cdf074ba1 30
tgw 4:c4c42e7c2298 31 int sys_id=0;
tgw 3:f307a059affe 32 int rec_cnt = 0; //receive count
tgw 3:f307a059affe 33 char result[buf_max];
tgw 3:f307a059affe 34
tgw 4:c4c42e7c2298 35 //mpu9150
tgw 4:c4c42e7c2298 36 Quaternion q1;
tgw 4:c4c42e7c2298 37 char buffer[200];
tgw 4:c4c42e7c2298 38
tgw 3:f307a059affe 39 void sim_callback()
tgw 3:f307a059affe 40 {
tgw 3:f307a059affe 41 char x;
tgw 3:f307a059affe 42 x = sim808.getc();
tgw 3:f307a059affe 43 result[rec_cnt++]= x;
tgw 3:f307a059affe 44 pc.putc(x);
tgw 3:f307a059affe 45 if(rec_cnt>=buf_max-1)rec_cnt=0;
tgw 3:f307a059affe 46 }
tgw 4:c4c42e7c2298 47 bool sim_wait(int x)
tgw 3:f307a059affe 48 {
tgw 4:c4c42e7c2298 49 char *p;
tgw 4:c4c42e7c2298 50 rec_cnt = 0;
tgw 3:f307a059affe 51 memset(result,0,buf_max*sizeof(char));
tgw 3:f307a059affe 52 while(x)
tgw 4:c4c42e7c2298 53 {
tgw 4:c4c42e7c2298 54 wait(1);
tgw 4:c4c42e7c2298 55 p=strstr(result,"OK");
tgw 4:c4c42e7c2298 56 if(p)
tgw 4:c4c42e7c2298 57 {
tgw 4:c4c42e7c2298 58 return true;
tgw 4:c4c42e7c2298 59 }
tgw 4:c4c42e7c2298 60 x--;
tgw 4:c4c42e7c2298 61 }
tgw 4:c4c42e7c2298 62 return false;
tgw 3:f307a059affe 63 }
tgw 3:f307a059affe 64
tgw 3:f307a059affe 65 void sim_gprs_updata(string s)
tgw 3:f307a059affe 66 {
tgw 3:f307a059affe 67 pc.printf("%s",s); //发送内容
tgw 3:f307a059affe 68 pc.putc(0x1a);//CtrlZ
tgw 3:f307a059affe 69
tgw 3:f307a059affe 70 sim808.printf("%s",s); //发送内容
tgw 3:f307a059affe 71 sim808.putc(0x1a);
tgw 4:c4c42e7c2298 72
tgw 4:c4c42e7c2298 73 wait(1);
tgw 4:c4c42e7c2298 74 // if(sim_wait(1)) {
tgw 3:f307a059affe 75 pc.printf("TCP send OK\r\n");
tgw 4:c4c42e7c2298 76 // } else {
tgw 4:c4c42e7c2298 77 // pc.printf("TCP send Field\r\n");
tgw 4:c4c42e7c2298 78 // }
tgw 3:f307a059affe 79 }
tgw 3:f307a059affe 80
tgw 3:f307a059affe 81 void sim_gprs_init(void)
tgw 3:f307a059affe 82 {
tgw 3:f307a059affe 83
tgw 3:f307a059affe 84 pc.printf("AT\r\n");
tgw 3:f307a059affe 85 sim808.printf("AT\r\n");
tgw 3:f307a059affe 86
tgw 4:c4c42e7c2298 87 if(sim_wait(1)) {
tgw 3:f307a059affe 88 pc.printf("SIM AT OK.\r\n");//
tgw 3:f307a059affe 89 }
tgw 3:f307a059affe 90 else{
tgw 3:f307a059affe 91 pc.printf("Reset SIM808.\r\n");//
tgw 3:f307a059affe 92 sim_power.write(0);
tgw 3:f307a059affe 93 wait(3);
tgw 3:f307a059affe 94 sim_power.write(1);
tgw 3:f307a059affe 95 wait(19);
tgw 3:f307a059affe 96 }
tgw 3:f307a059affe 97
tgw 3:f307a059affe 98 pc.printf("ATE0\r\n");//关闭回显
tgw 3:f307a059affe 99 sim808.printf("ATE0\r\n");//关闭回显
tgw 3:f307a059affe 100 wait(1);
tgw 3:f307a059affe 101
tgw 3:f307a059affe 102 pc.printf("AT+CPIN?\r\n");
tgw 3:f307a059affe 103 sim808.printf("AT+CPIN?\r\n");//SIM卡状态
tgw 4:c4c42e7c2298 104 if(sim_wait(1)) {
tgw 3:f307a059affe 105 pc.printf("SIM CARD CPIN OK\r\n");
tgw 3:f307a059affe 106 } else {
tgw 3:f307a059affe 107 pc.printf("SIM CARD CPIN Field\r\n");
tgw 3:f307a059affe 108 }
tgw 3:f307a059affe 109
tgw 3:f307a059affe 110 pc.printf("AT+CSQ\r\n");
tgw 3:f307a059affe 111 sim808.printf("AT+CSQ\r\n");//信号状态
tgw 4:c4c42e7c2298 112 if(sim_wait(1)) {
tgw 3:f307a059affe 113 pc.printf("SIM CARD signal OK\r\n");
tgw 3:f307a059affe 114 } else {
tgw 3:f307a059affe 115 pc.printf("SIM CARD signal Field\r\n");
tgw 3:f307a059affe 116 }
tgw 3:f307a059affe 117
tgw 3:f307a059affe 118 pc.printf("AT+CREG?\r\n"); //判断SIM卡网络是否注册成功
tgw 3:f307a059affe 119 sim808.printf("AT+CREG?\r\n"); //判断SIM卡网络是否注册成功
tgw 4:c4c42e7c2298 120 if(sim_wait(1)) {
tgw 3:f307a059affe 121 pc.printf("SIM CARD REG OK\r\n");
tgw 3:f307a059affe 122 } else {
tgw 3:f307a059affe 123 pc.printf("SIM CARD REG Field\r\n");
tgw 3:f307a059affe 124 }
tgw 3:f307a059affe 125
tgw 3:f307a059affe 126 pc.printf("AT+CGATT?\r\n"); //GPRS附着状态
tgw 3:f307a059affe 127 sim808.printf("AT+CGATT?\r\n"); //GPRS附着状态
tgw 3:f307a059affe 128
tgw 4:c4c42e7c2298 129 if(sim_wait(1)) {
tgw 3:f307a059affe 130 pc.printf("SIM CGATT OK\r\n");
tgw 3:f307a059affe 131 } else {
tgw 3:f307a059affe 132 pc.printf("SIM CGATT Field\r\n");
tgw 3:f307a059affe 133 }
tgw 4:c4c42e7c2298 134 pc.printf("Waiting for sim808 start ......\r\n");
tgw 4:c4c42e7c2298 135 wait(15);//等待模块启动完成
tgw 3:f307a059affe 136 //-----------------------组合命令------------------------------------------------------------
tgw 3:f307a059affe 137
tgw 3:f307a059affe 138 pc.printf("AT+CSTT=\"CMNET\"\r\n"); //set APN
tgw 3:f307a059affe 139 sim808.printf("AT+CSTT=\"CMNET\"\r\n"); //set APN
tgw 3:f307a059affe 140
tgw 4:c4c42e7c2298 141 if(sim_wait(5)) {
tgw 3:f307a059affe 142 pc.printf("SIM set APN OK\r\n");
tgw 3:f307a059affe 143 }
tgw 3:f307a059affe 144 else
tgw 3:f307a059affe 145 {
tgw 3:f307a059affe 146 pc.printf("SIM set APN Field\r\n");
tgw 3:f307a059affe 147 return ;
tgw 3:f307a059affe 148 }
tgw 3:f307a059affe 149
tgw 3:f307a059affe 150 pc.printf("AT+CIICR\r\n"); //wireless link 建立无线链路
tgw 3:f307a059affe 151 sim808.printf("AT+CIICR\r\n"); //wireless link 建立无线链路
tgw 3:f307a059affe 152
tgw 4:c4c42e7c2298 153 if(sim_wait(5)) {
tgw 3:f307a059affe 154 pc.printf("SIM wireless link OK\r\n");
tgw 3:f307a059affe 155 } else {
tgw 3:f307a059affe 156 pc.printf("SIM wireless link Field\r\n");
tgw 3:f307a059affe 157 }
tgw 4:c4c42e7c2298 158
tgw 4:c4c42e7c2298 159 pc.printf("Waiting for sim808 wireless link finish ......\r\n");
tgw 3:f307a059affe 160 wait(15);//等待建立无线链路
tgw 3:f307a059affe 161
tgw 3:f307a059affe 162 pc.printf("AT+CIFSR\r\n"); //获取本地IP
tgw 3:f307a059affe 163 sim808.printf("AT+CIFSR\r\n"); //获取本地IP
tgw 3:f307a059affe 164
tgw 3:f307a059affe 165 pc.printf("AT+CIPSTART=\"TCP\",\"122.5.17.146\",\"9980\"\r\n"); //TCP set 建立TCP连接
tgw 3:f307a059affe 166 sim808.printf("AT+CIPSTART=\"TCP\",\"122.5.17.146\",\"9980\"\r\n"); //TCP set 建立TCP连接
tgw 3:f307a059affe 167
tgw 4:c4c42e7c2298 168 if(sim_wait(5))
tgw 3:f307a059affe 169 {
tgw 3:f307a059affe 170 pc.printf("SIM TCP set OK\r\n");
tgw 3:f307a059affe 171
tgw 4:c4c42e7c2298 172 pc.printf("Waiting for sim808 tcp link finish ......\r\n");
tgw 3:f307a059affe 173 wait(10);//等待建立TCP链路
tgw 3:f307a059affe 174
tgw 3:f307a059affe 175 pc.printf("AT+CIPSEND\r\n"); //send direction
tgw 3:f307a059affe 176 sim808.printf("AT+CIPSEND\r\n"); //send direction
tgw 3:f307a059affe 177
tgw 3:f307a059affe 178 wait(1);
tgw 3:f307a059affe 179 sim_gprs_updata("TPC SEND:hello,sim808 tcp test ok!");
tgw 3:f307a059affe 180 } else
tgw 3:f307a059affe 181 {
tgw 3:f307a059affe 182 pc.printf("SIM TCP set Field\r\n");
tgw 3:f307a059affe 183 }
tgw 3:f307a059affe 184
tgw 3:f307a059affe 185 }
tgw 3:f307a059affe 186 void sim_gprs_relink(void)
tgw 3:f307a059affe 187 {
tgw 3:f307a059affe 188 pc.printf("AT+CIPCLOSE\r\n");
tgw 3:f307a059affe 189 sim808.printf("AT+CIPCLOSE\r\n");//关闭连接
tgw 4:c4c42e7c2298 190 if(sim_wait(5))
tgw 3:f307a059affe 191 {
tgw 3:f307a059affe 192 pc.printf("SIM TCP CLOSE OK\r\n");
tgw 3:f307a059affe 193 } else
tgw 3:f307a059affe 194 {
tgw 3:f307a059affe 195 pc.printf("SIM TCP CLOSE Field\r\n");
tgw 3:f307a059affe 196 }
tgw 3:f307a059affe 197 pc.printf("AT+CIPSTART=\"TCP\",\"122.5.17.146\",\"9980\"\r\n"); //TCP set 建立TCP连接
tgw 4:c4c42e7c2298 198 sim808.printf("AT+CIPSTART=\"TCP\",\"122.5.17.146\",\"9980\"\r\n"); //TCP set 建立TCP连接
tgw 3:f307a059affe 199
tgw 4:c4c42e7c2298 200 if(sim_wait(5))
tgw 4:c4c42e7c2298 201 {
tgw 4:c4c42e7c2298 202 pc.printf("SIM TCP set OK\r\n");
tgw 3:f307a059affe 203
tgw 4:c4c42e7c2298 204 pc.printf("Waiting for sim808 tcp link finish ......\r\n");
tgw 4:c4c42e7c2298 205 wait(10);//等待建立TCP链路
tgw 3:f307a059affe 206
tgw 3:f307a059affe 207 pc.printf("AT+CIPSEND\r\n"); //send direction
tgw 3:f307a059affe 208 sim808.printf("AT+CIPSEND\r\n"); //send direction
tgw 3:f307a059affe 209
tgw 3:f307a059affe 210 wait(1);
tgw 3:f307a059affe 211 sim_gprs_updata("TPC SEND:hello,sim808 tcp test ok!");
tgw 3:f307a059affe 212 } else
tgw 3:f307a059affe 213 {
tgw 3:f307a059affe 214 pc.printf("SIM TCP set Field\r\n");
tgw 3:f307a059affe 215 pc.printf("Reset SIM808.\r\n");//
tgw 3:f307a059affe 216 sim_power.write(0);
tgw 3:f307a059affe 217 wait(3);
tgw 3:f307a059affe 218 sim_power.write(1);
tgw 3:f307a059affe 219 wait(19);
tgw 3:f307a059affe 220 sim_gprs_init();
tgw 3:f307a059affe 221 }
tgw 3:f307a059affe 222 }
tgw 3:f307a059affe 223
tgw 4:c4c42e7c2298 224 void pro_gprs(void)
thesane 0:0c9cdf074ba1 225 {
tgw 4:c4c42e7c2298 226 if (!mybutton)
tgw 4:c4c42e7c2298 227 {
tgw 4:c4c42e7c2298 228 // time_t seconds = time(NULL);
tgw 4:c4c42e7c2298 229 // //pc.printf("%s", ctime(&seconds));
tgw 4:c4c42e7c2298 230 // char msg[100];
tgw 4:c4c42e7c2298 231 // sprintf(msg,"seconds:%d", ctime(&seconds));
tgw 4:c4c42e7c2298 232 // sim_gprs_updata(msg);
tgw 4:c4c42e7c2298 233 sim_gprs_relink();
tgw 4:c4c42e7c2298 234 }
tgw 4:c4c42e7c2298 235 }
tgw 4:c4c42e7c2298 236 void pro_camera(void)
tgw 4:c4c42e7c2298 237 {
tgw 4:c4c42e7c2298 238 wait(0.1);
tgw 4:c4c42e7c2298 239 if (!mybutton)
tgw 2:9ad661c031a4 240 {
thesane 0:0c9cdf074ba1 241 if (camera.isReady())
thesane 0:0c9cdf074ba1 242 {
thesane 0:0c9cdf074ba1 243 if (camera.takePicture())
thesane 0:0c9cdf074ba1 244 {
thesane 0:0c9cdf074ba1 245 int image_size = camera.getImageSize();
thesane 0:0c9cdf074ba1 246 while (camera.isProcessing())
thesane 0:0c9cdf074ba1 247 {
tgw 3:f307a059affe 248 camera.processPicture(pc);
thesane 0:0c9cdf074ba1 249 }
thesane 0:0c9cdf074ba1 250 }
thesane 0:0c9cdf074ba1 251 else
thesane 0:0c9cdf074ba1 252 {
tgw 3:f307a059affe 253 pc.printf("camera takePicture fail!\r\n");
thesane 0:0c9cdf074ba1 254 }
thesane 0:0c9cdf074ba1 255 }
thesane 0:0c9cdf074ba1 256 else
thesane 0:0c9cdf074ba1 257 {
tgw 3:f307a059affe 258 pc.printf("camera isReady fail!\r\n");
thesane 0:0c9cdf074ba1 259 }
tgw 4:c4c42e7c2298 260 }
tgw 4:c4c42e7c2298 261 }
tgw 4:c4c42e7c2298 262
tgw 4:c4c42e7c2298 263 void pro_mpu9150(void)
tgw 4:c4c42e7c2298 264 {
tgw 4:c4c42e7c2298 265 if(imu.getFifoCount() >= 48)
tgw 4:c4c42e7c2298 266 {
tgw 4:c4c42e7c2298 267 imu.getFifoBuffer(buffer, 48);
tgw 4:c4c42e7c2298 268 led = !led;
tgw 4:c4c42e7c2298 269 }
tgw 4:c4c42e7c2298 270
tgw 4:c4c42e7c2298 271 if(timer.read_ms() > 50)
tgw 4:c4c42e7c2298 272 {
tgw 4:c4c42e7c2298 273 timer.reset();
tgw 4:c4c42e7c2298 274
tgw 4:c4c42e7c2298 275 //This is the format of the data in the fifo,
tgw 4:c4c42e7c2298 276 /* ================================================================================================ *
tgw 4:c4c42e7c2298 277 | Default MotionApps v4.1 48-byte FIFO packet structure: |
tgw 4:c4c42e7c2298 278 | |
tgw 4:c4c42e7c2298 279 | [QUAT W][ ][QUAT X][ ][QUAT Y][ ][QUAT Z][ ][GYRO X][ ][GYRO Y][ ] |
tgw 4:c4c42e7c2298 280 | 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
tgw 4:c4c42e7c2298 281 | |
tgw 4:c4c42e7c2298 282 | [GYRO Z][ ][MAG X ][MAG Y ][MAG Z ][ACC X ][ ][ACC Y ][ ][ACC Z ][ ][ ] |
tgw 4:c4c42e7c2298 283 | 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
tgw 4:c4c42e7c2298 284 * ================================================================================================ */
tgw 4:c4c42e7c2298 285
tgw 4:c4c42e7c2298 286
tgw 4:c4c42e7c2298 287 pc.printf("acc :%d, %d, %d\r\n", (int32_t)(((int32_t)buffer[34] << 24) + ((int32_t)buffer[35] << 16) + ((int32_t)buffer[36] << 8) + (int32_t)buffer[37]),
tgw 4:c4c42e7c2298 288 (int32_t)(((int32_t)buffer[38] << 24) + ((int32_t)buffer[39] << 16) + ((int32_t)buffer[40] << 8) + (int32_t)buffer[41]),
tgw 4:c4c42e7c2298 289 (int32_t)(((int32_t)buffer[42] << 24) + ((int32_t)buffer[43] << 16) + ((int32_t)buffer[44] << 8) + (int32_t)buffer[45]));
tgw 4:c4c42e7c2298 290
tgw 4:c4c42e7c2298 291 pc.printf("gyro:%d, %d, %d\r\n", (int32_t)(((int32_t)buffer[16] << 24) + ((int32_t)buffer[17] << 16) + ((int32_t)buffer[18] << 8) + (int32_t)buffer[19]),
tgw 4:c4c42e7c2298 292 (int32_t)(((int32_t)buffer[20] << 24) + ((int32_t)buffer[21] << 16) + ((int32_t)buffer[22] << 8) + (int32_t)buffer[23]),
tgw 4:c4c42e7c2298 293 (int32_t)(((int32_t)buffer[24] << 24) + ((int32_t)buffer[25] << 16) + ((int32_t)buffer[26] << 8) + (int32_t)buffer[27]));
tgw 4:c4c42e7c2298 294
tgw 4:c4c42e7c2298 295 pc.printf("mag :%d, %d, %d\r\n", (int16_t)(buffer[29] << 8) + buffer[28],
tgw 4:c4c42e7c2298 296 (int16_t)(buffer[31] << 8) + buffer[30],
tgw 4:c4c42e7c2298 297 (int16_t)(buffer[33] << 8) + buffer[32]);
tgw 4:c4c42e7c2298 298
tgw 4:c4c42e7c2298 299 pc.printf("quat:%f, %f, %f, %f\r\n",
tgw 4:c4c42e7c2298 300 (float)((((int32_t)buffer[0] << 24) + ((int32_t)buffer[1] << 16) + ((int32_t)buffer[2] << 8) + buffer[3]))* (1.0 / (1<<30)),
tgw 4:c4c42e7c2298 301 (float)((((int32_t)buffer[4] << 24) + ((int32_t)buffer[5] << 16) + ((int32_t)buffer[6] << 8) + buffer[7]))* (1.0 / (1<<30)),
tgw 4:c4c42e7c2298 302 (float)((((int32_t)buffer[8] << 24) + ((int32_t)buffer[9] << 16) + ((int32_t)buffer[10] << 8) + buffer[11]))* (1.0 / (1<<30)),
tgw 4:c4c42e7c2298 303 (float)((((int32_t)buffer[12] << 24) + ((int32_t)buffer[13] << 16) + ((int32_t)buffer[14] << 8) + buffer[15]))* (1.0 / (1<<30)));
tgw 4:c4c42e7c2298 304
tgw 4:c4c42e7c2298 305
tgw 4:c4c42e7c2298 306 //q1.decode(buffer);
tgw 4:c4c42e7c2298 307 //pc.printf("%f, %f, %f, %f\r\n", q1.w, q1.v.x, q1.v.y, q1.v.z);
tgw 4:c4c42e7c2298 308
tgw 4:c4c42e7c2298 309
tgw 4:c4c42e7c2298 310 //TeaPot Demo Packet for MotionFit SDK
tgw 4:c4c42e7c2298 311 /*
tgw 4:c4c42e7c2298 312 pc.putc('$'); //packet start
tgw 4:c4c42e7c2298 313 pc.putc((char)2); //assume packet type constant
tgw 4:c4c42e7c2298 314 pc.putc((char)0); //count seems unused
tgw 4:c4c42e7c2298 315 for(int i = 0; i < 16; i++){ //16 bytes for 4 32bit floats
tgw 4:c4c42e7c2298 316 pc.putc((char)(buffer[i]));
tgw 4:c4c42e7c2298 317 }
tgw 4:c4c42e7c2298 318 for(int i = 0; i < 5; i++){ //no idea, padded with 0
tgw 4:c4c42e7c2298 319 pc.putc((char)0);
tgw 4:c4c42e7c2298 320 }
tgw 4:c4c42e7c2298 321 */
tgw 4:c4c42e7c2298 322 }
tgw 4:c4c42e7c2298 323 }
tgw 4:c4c42e7c2298 324 int main()
tgw 4:c4c42e7c2298 325 {
tgw 4:c4c42e7c2298 326 int message = 0;
tgw 4:c4c42e7c2298 327
tgw 4:c4c42e7c2298 328 pc.baud(115200);
tgw 4:c4c42e7c2298 329 sim808.baud(115200);
tgw 4:c4c42e7c2298 330 sim808.attach(&sim_callback,SerialBase::RxIrq); //serial interrupt attach
tgw 4:c4c42e7c2298 331
tgw 4:c4c42e7c2298 332 timer.start();
tgw 4:c4c42e7c2298 333
tgw 4:c4c42e7c2298 334 //Sim808 Initialization
tgw 4:c4c42e7c2298 335 sim_power.write(1);
tgw 4:c4c42e7c2298 336 sim_gprs_init();
tgw 4:c4c42e7c2298 337
tgw 4:c4c42e7c2298 338 //Camera Initialization and picture sizing
tgw 4:c4c42e7c2298 339 if(camera.setPictureSize(JPEGCamera::SIZE160x120))pc.printf("camera setPictureSize ok!\r\n");
tgw 4:c4c42e7c2298 340 else pc.printf("camera setPictureSize fail!\r\n");
tgw 4:c4c42e7c2298 341 wait(3);
tgw 4:c4c42e7c2298 342
tgw 4:c4c42e7c2298 343 //MPU9150 Initialization and setting
tgw 4:c4c42e7c2298 344 if(imu.isReady())pc.printf("MPU9150 is ready\r\n");
tgw 4:c4c42e7c2298 345 else pc.printf("MPU9150 initialisation failure\r\n");
tgw 4:c4c42e7c2298 346
tgw 4:c4c42e7c2298 347 imu.initialiseDMP();
tgw 4:c4c42e7c2298 348
tgw 4:c4c42e7c2298 349 imu.setFifoReset(true);
tgw 4:c4c42e7c2298 350 imu.setDMPEnabled(true);
tgw 4:c4c42e7c2298 351
tgw 4:c4c42e7c2298 352 //Continuously wait for commands
tgw 4:c4c42e7c2298 353 while(1)
tgw 4:c4c42e7c2298 354 {
tgw 4:c4c42e7c2298 355 //-------------------------事件处理-----------------------------------------------
tgw 4:c4c42e7c2298 356 //Check for bytes over serial from bluetooth/xbee
tgw 4:c4c42e7c2298 357 if(pc.readable())
tgw 4:c4c42e7c2298 358 {
tgw 4:c4c42e7c2298 359 message=pc.getc();
tgw 4:c4c42e7c2298 360 //Take a picture (note that this takes a while to complete and will only only work for 999 pictures
tgw 4:c4c42e7c2298 361 if (message==0xd1)
tgw 4:c4c42e7c2298 362 {
tgw 4:c4c42e7c2298 363 sys_id=sys_gprs;
tgw 4:c4c42e7c2298 364 pc.printf("sys_id is gprs\r\n");
tgw 4:c4c42e7c2298 365 }
tgw 4:c4c42e7c2298 366 else if (message==0xd2)
tgw 4:c4c42e7c2298 367 {
tgw 4:c4c42e7c2298 368 sys_id=sys_camera;
tgw 4:c4c42e7c2298 369 pc.printf("sys_id is camera\r\n");
tgw 4:c4c42e7c2298 370 }
tgw 4:c4c42e7c2298 371 else if (message==0xd3)
tgw 4:c4c42e7c2298 372 {
tgw 4:c4c42e7c2298 373 sys_id=sys_mpu9150;
tgw 4:c4c42e7c2298 374 pc.printf("sys_id is MPU9150\r\n");
thesane 0:0c9cdf074ba1 375 }
thesane 0:0c9cdf074ba1 376 }
tgw 3:f307a059affe 377
tgw 4:c4c42e7c2298 378 //-------------------------运行线程-----------------------------------------------
tgw 4:c4c42e7c2298 379 switch(sys_id)
tgw 3:f307a059affe 380 {
tgw 4:c4c42e7c2298 381 case sys_gprs:
tgw 4:c4c42e7c2298 382 pro_gprs();
tgw 4:c4c42e7c2298 383 break;
tgw 4:c4c42e7c2298 384 case sys_camera:
tgw 4:c4c42e7c2298 385 pro_camera();
tgw 4:c4c42e7c2298 386 break;
tgw 4:c4c42e7c2298 387 case sys_mpu9150:
tgw 4:c4c42e7c2298 388 pro_mpu9150();
tgw 4:c4c42e7c2298 389 break;
tgw 4:c4c42e7c2298 390 default:
tgw 4:c4c42e7c2298 391 break;
tgw 3:f307a059affe 392 }
thesane 0:0c9cdf074ba1 393 }
thesane 0:0c9cdf074ba1 394 }
tgw 3:f307a059affe 395