Sample program of sakura.io Evalution board.
Dependencies: AQM0802A BME280 MPU9250_SPI SakuraIO gps mbed
Fork of SakuraIO_Evaluation_Board_Standard by
Revision 3:e5e53c1f6fda, committed 2018-05-07
- Comitter:
- okuhara
- Date:
- Mon May 07 06:17:24 2018 +0000
- Parent:
- 2:0fb97f42efcc
- Commit message:
- ?????1???300?(5?)???; ??ON/OFF????(SW5) ??
Changed in this revision
diff -r 0fb97f42efcc -r e5e53c1f6fda SakuraIO.lib --- a/SakuraIO.lib Wed Nov 29 06:36:12 2017 +0000 +++ b/SakuraIO.lib Mon May 07 06:17:24 2018 +0000 @@ -1,1 +1,1 @@ -http://mbed.org/teams/SAKURA-Internet/code/SakuraIO/#cf0b9cf1c832 +http://mbed.org/teams/SAKURA-Internet/code/SakuraIO/#70faddd6241b
diff -r 0fb97f42efcc -r e5e53c1f6fda main.cpp --- a/main.cpp Wed Nov 29 06:36:12 2017 +0000 +++ b/main.cpp Mon May 07 06:17:24 2018 +0000 @@ -54,6 +54,8 @@ void gps_uart_buffering_handler(); +const int SEND_INTERVAL_TICKS_PAR_COUNT = 1500; + void setup() { lcd_led = 1; @@ -78,6 +80,11 @@ // active high gps_en = 1; gps.attach(&gps_uart_buffering_handler, Serial::RxIrq); + + led_1 = 1; + led_2 = 0; + + pc.printf("Send par %d seconds.\r\n", (SEND_INTERVAL_TICKS_PAR_COUNT * 200) / 1000); } void read_sensor_data() @@ -88,16 +95,16 @@ mpu9250.read_all(); sensor_data.mpu9250.temperature = mpu9250.Temperature; - for (int i = 0; i < 3; i++) { - sensor_data.mpu9250.accelerometer[i] = mpu9250.accelerometer_data[i]; - sensor_data.mpu9250.gyroscope[i] = mpu9250.gyroscope_data[i]; - sensor_data.mpu9250.magnetometer[i] = mpu9250.Magnetometer[i]; + for (int cnt_send = 0; cnt_send < 3; cnt_send++) { + sensor_data.mpu9250.accelerometer[cnt_send] = mpu9250.accelerometer_data[cnt_send]; + sensor_data.mpu9250.gyroscope[cnt_send] = mpu9250.gyroscope_data[cnt_send]; + sensor_data.mpu9250.magnetometer[cnt_send] = mpu9250.Magnetometer[cnt_send]; } } void enqueue_sensor_data(int counter) { - sakuraio.enqueueTx(0, counter); + sakuraio.enqueueTx(0, (int32_t)counter); sakuraio.enqueueTx(1, sensor_data.bme280.temperature); sakuraio.enqueueTx(2, sensor_data.bme280.pressure); sakuraio.enqueueTx(3, sensor_data.bme280.humidity); @@ -136,49 +143,80 @@ void loop() { - pc.printf("\r\n\r\n--------------------\r\n"); + static int cnt_send = 1; + static int tick_by_200ms = 0; + static int stat_sw5 = -1; + + if((sakuraio.getConnectionStatus() & 0x80) == 0x00) { + //Offline + lcd.cls(); + lcd.printf("Offline"); + pc.printf("Network is offline.\r\n(After 1 sec to running retry.)\r\n"); + wait(1); + return; + } - static int i = 1; - read_sensor_data(); - wait(1); - pc.printf("This program runs since %d seconds.\r\n", i); - pc.printf("BME280\r\n"); - pc.printf("\tTemp: %.2fC\r\n", sensor_data.bme280.temperature); - pc.printf("\tPres: %.2fhPa\r\n", sensor_data.bme280.pressure); - pc.printf("\tHum: %.2f%%\r\n", sensor_data.bme280.humidity); - pc.printf("MPU9250\r\n"); - pc.printf("\tTemp: %.2fC\r\n", sensor_data.mpu9250.temperature); - for (int j = 0; j < 3; j++) { - pc.printf("\tacc[%d]: %.2f\r\n", j, sensor_data.mpu9250.accelerometer[j]); - pc.printf("\tgyro[%d]: %.2f\r\n", j, sensor_data.mpu9250.gyroscope[j]); - pc.printf("\tmag[%d]: %.2f\r\n", j, sensor_data.mpu9250.magnetometer[j]); + if (stat_sw5 != sw_5) { + stat_sw5 = sw_5; + led_3 = stat_sw5; //State: `Send Enable' + if (stat_sw5 == 0) { + lcd.cls(); + lcd.printf("Send:OFF"); + } else { + cnt_send = 1; + tick_by_200ms = 0; + lcd.cls(); + lcd.printf("Send:ON"); + } } - pc.printf("GPS\r\n"); - pc.printf("\tlat: %f%c\r\n", - gps_decoder.get_latitude(), - gps_decoder.get_latitude() >= 0 ? 'N' : 'S'); - pc.printf("\tlon: %f%c\r\n", - gps_decoder.get_longitude(), - gps_decoder.get_longitude() >= 0 ? 'E' : 'W'); - pc.printf("\tspeed: %fkm/h\r\n", gps_decoder.get_speed()); - pc.printf("\tmove_direction: %f\r\n", gps_decoder.get_move_direction()); - pc.printf("\tdate: %d/%02d/%02d %02d:%02d:%02d (UTC)\r\n", - gps_decoder.get_year(), gps_decoder.get_month(), gps_decoder.get_day(), - gps_decoder.get_hour(), gps_decoder.get_min(), gps_decoder.get_sec()); - pc.printf("\tUNIX time: %d\r\n", gps_decoder.get_unixtime()); - lcd.cls(); - if( (sakuraio.getConnectionStatus() & 0x80) == 0x80 ) { - lcd.printf("Online\n", i); - } else { - lcd.printf("Offline\n", i); + + if (stat_sw5 == 1) { + if ((tick_by_200ms % SEND_INTERVAL_TICKS_PAR_COUNT) == 0) { //定期送信は5分に一回(31日動かしっぱなしでも無料分を超えないように) + pc.printf("\r\n\r\n--------------------\r\n"); + read_sensor_data(); + pc.printf("BME280\r\n"); + pc.printf("\tTemp: %.2fC\r\n", sensor_data.bme280.temperature); + pc.printf("\tPres: %.2fhPa\r\n", sensor_data.bme280.pressure); + pc.printf("\tHum: %.2f%%\r\n", sensor_data.bme280.humidity); + pc.printf("MPU9250\r\n"); + pc.printf("\tTemp: %.2fC\r\n", sensor_data.mpu9250.temperature); + for (int j = 0; j < 3; j++) { + pc.printf("\tacc[%d]: %.2f\r\n", j, sensor_data.mpu9250.accelerometer[j]); + pc.printf("\tgyro[%d]: %.2f\r\n", j, sensor_data.mpu9250.gyroscope[j]); + pc.printf("\tmag[%d]: %.2f\r\n", j, sensor_data.mpu9250.magnetometer[j]); + } + pc.printf("GPS\r\n"); + pc.printf("\tlat: %f%c\r\n", + gps_decoder.get_latitude(), + gps_decoder.get_latitude() >= 0 ? 'N' : 'S'); + pc.printf("\tlon: %f%c\r\n", + gps_decoder.get_longitude(), + gps_decoder.get_longitude() >= 0 ? 'E' : 'W'); + pc.printf("\tspeed: %fkm/h\r\n", gps_decoder.get_speed()); + pc.printf("\tmove_direction: %f\r\n", gps_decoder.get_move_direction()); + pc.printf("\tdate: %d/%02d/%02d %02d:%02d:%02d (UTC)\r\n", + gps_decoder.get_year(), gps_decoder.get_month(), gps_decoder.get_day(), + gps_decoder.get_hour(), gps_decoder.get_min(), gps_decoder.get_sec()); + pc.printf("\tUNIX time: %d\r\n", gps_decoder.get_unixtime()); + if ((sakuraio.getConnectionStatus() & 0x80) == 0x80) { + led_2 = 1; + pc.printf("Send:%d\r\n", cnt_send); + lcd.setCursor(0, 1); + lcd.printf("%d", cnt_send); + enqueue_sensor_data(cnt_send); + sakuraio.send(); + cnt_send++; + led_2 = 0; + pc.printf("After %d sec to send.\r\n", (int)(SEND_INTERVAL_TICKS_PAR_COUNT * 0.2)); + } else { + return; + } + } } - lcd.printf("%d", i); - i++; led_1 = !led_1; led_4 = !sw_4; - - enqueue_sensor_data(i); - sakuraio.send(); + tick_by_200ms++; + wait(0.2); } @@ -188,4 +226,4 @@ while(1) { loop(); } -} \ No newline at end of file +}
diff -r 0fb97f42efcc -r e5e53c1f6fda mbed-dev.lib --- a/mbed-dev.lib Wed Nov 29 06:36:12 2017 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -https://os.mbed.com/teams/SAKURA-Internet/code/mbed-dev/#7b4eb50f6890
diff -r 0fb97f42efcc -r e5e53c1f6fda mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Mon May 07 06:17:24 2018 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/mbed_official/code/mbed/builds/5571c4ff569f \ No newline at end of file