sim808_gprs&lsy201&mpu9150 without gps change and BT
Dependencies: MPU9150 Nucleo_printf_gps mbed
main.cpp
- Committer:
- donghuoyinzi
- Date:
- 2017-06-21
- Revision:
- 0:1d7eec4b8813
File content as of revision 0:1d7eec4b8813:
// I2Cdev and MPU9150 must be installed as libraries, or else the .cpp/.h files // for both classes must be in the include path of your project #include "I2Cdev.h" //MPU9150's I2C (I2C_SDA D14,I2C_SCL D15) #include "MPU9150.h" #include "helper_3dmath.h" #include "mbed.h" #include "JPEGCamera.h" #include "MPU9150_raw.h" #include <cstring> #include "string.h" #define buf_max 200 Serial control(SERIAL_TX, SERIAL_RX); JPEGCamera camera(PA_9, PA_10);//D8,D2 //Serial gps(PA_11, PA_12); Serial sim808(PA_11, PA_12); // arduino pin right seven(PA_11) , six(PA_12) Timer timer; int16_t ax, ay, az; int16_t gx, gy, gz; int16_t mx, my, mz; int16_t buf9150[10]; char buffer1[256]; //volatile int sig=0; //volatile int i=0; int First_Int = 0; //receive count char sim_buf[buf_max]; //receive buffer data char *content="HELLO,This is a test"; //message content char CtrlZ = 0x1a; //send direction void SIM808_IRQHandler(void); //interrupt void CLR_Buf(void); //clear buffer bool Judge_SIM808(); //judge AT void Wait_CREG(void); //void getline(); //void callback(){ // getline(); // } int main() { int message = 0; control.baud(115200); //Camera Initialization and picture sizing timer.start(); camera.setPictureSize(JPEGCamera::SIZE160x120); wait(3); //Continuously wait for commands while(1) { // if(control.readable()) // { control.readable(); message=control.getc(); //Take a picture (note that this takes a while to complete and will only only work for 999 pictures if (message==210){ //send D2 for taking a picture camera.isReady(); camera.takePicture(); int image_size = camera.getImageSize(); while (camera.isProcessing()) { camera.processPicture(control); } } else if (message==212){ //send D4 for getting datas of MPU9150 MPU9150raw::setup(); MPU9150raw::loop(); control.printf("ax=%d\n",buf9150[0]); control.printf("ay=%d\n",buf9150[1]); control.printf("az=%d\n",buf9150[2]); control.printf("gx=%d\n",buf9150[3]); control.printf("gy=%d\n",buf9150[4]); control.printf("gz=%d\n",buf9150[5]); control.printf("mx=%d\n",buf9150[6]); control.printf("my=%d\n",buf9150[7]); control.printf("mz=%d\n",buf9150[8]); } else if (message==214){ //send D6 for GPRS sim808.attach(&SIM808_IRQHandler,SerialBase::RxIrq); //serial interrupt attach wait(5); sim808.printf("AT\r\n"); wait(3); //判断Serial sim808通信是否正常 if(Judge_SIM808()){ control.printf("sim808 uart success\n"); } else{ control.printf("sim808 uart fail\n"); } CLR_Buf(); sim808.printf("ATE0\r\n"); //关闭回显 wait(3); if(Judge_SIM808()){ control.printf("sim808 ATEO turn off success\n"); } else{ control.printf("sim808 ATEO turn off fail\n"); } CLR_Buf(); sim808.printf("AT+CREG?\r\n"); //判断SIM卡是否注册成功 wait(3); if(Judge_SIM808()){ control.printf("sim808 register success\n"); } else{ control.printf("sim808 register fail\n"); } CLR_Buf(); /************************************************ sim808.printf("AT+CMGF=1\r\n"); //Text mode短信发送模式 wait(3); if(Judge_SIM808()){ control.printf("sim808 TEXT set success\n"); } else{ control.printf("sim808 TEXT set fail\n"); } CLR_Buf(); sim808.printf("AT+CSCS=\"GSM\"\r\n"); //设置GSM模式 wait(3); ret=Judge_SIM808(); if(ret){ control.printf("sim808 GSM set success\n"); } else{ control.printf("sim808 GSM set fail\n"); } CLR_Buf(); sim808.printf("AT+CSMP=17,167,0,0\r\n"); //Text parameter set wait(3); ret=Judge_SIM808(); if(ret){ control.printf("sim808 Text parameter set success\n"); } else{ control.printf("sim808 Text parameter set fail\n"); } CLR_Buf(); sim808.printf("AT+CMGS=\"+8618766569612\"\r\n"); //receiver's phone number wait(3); ret=Judge_SIM808(); if(ret==true){ control.printf("%s",sim_buf); } else{ control.printf("sim808 receive number fail\n"); } CLR_Buf(); sim808.printf("%s",(char*)content); //短信内容 sim808.printf("%c",CtrlZ); wait(3); control.printf("%s\n",sim_buf); CLR_Buf(); ******************************************/ sim808.printf("AT+CPIN?\r\n"); wait(3); if(Judge_SIM808()){ control.printf("sim808 SIM card success\n"); //SIM状态 } else{ control.printf("sim808 SIM card set fail\n"); } CLR_Buf(); sim808.printf("AT+CGATT?\r\n"); //GPRS附着状态 wait(3); if(Judge_SIM808()){ control.printf("sim808 GPRS success\n"); } else{ control.printf("sim808 GPRS set fail\n"); } CLR_Buf(); sim808.printf("AT+CSTT=\"CMNET\"\r\n"); //set APN wait(3); if(Judge_SIM808()){ control.printf("sim808 APN set success\n"); } else{ control.printf("sim808 APN set fail\n"); } CLR_Buf(); sim808.printf("AT+CIICR\r\n"); //wireless link wait(3); if(Judge_SIM808()){ control.printf("sim808 wireless link success\n"); } else{ control.printf("sim808 wireless link fail\n"); } CLR_Buf(); sim808.printf("AT+CIPSTART=\"TCP\",\"122.5.17.146\",\"9970\"\r\n"); //TCP set wait(3); if(Judge_SIM808()){ control.printf("sim808 TCP set success\n"); } else{ control.printf("sim808 TCP set fail\n"); } CLR_Buf(); sim808.printf("AT+CIPSEND\r\n"); //send direction wait(3); CLR_Buf(); sim808.printf("%s\n",(char*)content); //发送内容 sim808.printf("%c",CtrlZ); } } } /******************************************* control.printf("start test!\r\n"); //GPS without change gps.attach(&callback); hal_sleep(); if(sig == 7) { sig=0; i=0; control.printf("%s",buffer1); memset(buffer1,0,sizeof(buffer1)); } wait(5); } } void getline() { buffer1[i] = gps.getc(); if(buffer1[i] == 0x0a) { sig++; } i++; } *********************************/ void SIM808_IRQHandler(void) { if(First_Int>=buf_max)First_Int=0; sim_buf[First_Int] = sim808.getc(); First_Int++; } void CLR_Buf(void) { uint16_t k; for(k=0;k<buf_max;k++) { sim_buf[k] = 0x00; } First_Int = 0; } bool Judge_SIM808() { int j; for(j=0;j<buf_max;j++) { if((sim_buf[j] == 'O')&&(sim_buf[j+1] == 'K')) { CLR_Buf(); return true; } } CLR_Buf(); return false; } namespace MPU9150raw { // class default I2C address is 0x68 // specific I2C addresses may be passed as a parameter here // AD0 low = 0x68 (default for InvenSense evaluation board) // AD0 high = 0x69 MPU9150 accelGyroMag; void setup() { //control.baud(115200); accelGyroMag.initialize(); } void loop() { // read raw accel/gyro/mag measurements from device accelGyroMag.getMotion9(&ax, &ay, &az, &gx, &gy, &gz, &mx, &my, &mz); buf9150[0]=ax;buf9150[1]=ay;buf9150[2]=az; buf9150[3]=gx;buf9150[4]=gy;buf9150[5]=gz; buf9150[6]=mx;buf9150[7]=my;buf9150[8]=mz; wait_ms(50); } }