v1
Dependencies: Nichrome_lib mbed mpu9250_i2c IM920 INA226_lib PQLPS22HB EEPROM_lib GPS_interrupt
main.cpp@0:4e38f8b1c183, 2021-07-29 (annotated)
- Committer:
- imadaemi
- Date:
- Thu Jul 29 16:38:36 2021 +0000
- Revision:
- 0:4e38f8b1c183
- Child:
- 1:3151936d9c55
v1
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
imadaemi | 0:4e38f8b1c183 | 1 | #include "mbed.h" |
imadaemi | 0:4e38f8b1c183 | 2 | #include "IM920.h" |
imadaemi | 0:4e38f8b1c183 | 3 | #include "GPS_interrupt.h" |
imadaemi | 0:4e38f8b1c183 | 4 | #include "PQLPS22HB.h" |
imadaemi | 0:4e38f8b1c183 | 5 | #include "mpu9250_i2c.h" |
imadaemi | 0:4e38f8b1c183 | 6 | #include "INA226.h" |
imadaemi | 0:4e38f8b1c183 | 7 | #include "Nichrome_lib.h" |
imadaemi | 0:4e38f8b1c183 | 8 | #include "EEPROM_lib.h" |
imadaemi | 0:4e38f8b1c183 | 9 | |
imadaemi | 0:4e38f8b1c183 | 10 | #define CURRENT_LOCATION_PRESS 1022.624268//投下前に設定 |
imadaemi | 0:4e38f8b1c183 | 11 | #define CURRENT_LOCATION_TEMP 10.650000//投下前に設定 |
imadaemi | 0:4e38f8b1c183 | 12 | #define ACC_RANGE _16G |
imadaemi | 0:4e38f8b1c183 | 13 | #define GYRO_RANGE _2000DPS |
imadaemi | 0:4e38f8b1c183 | 14 | |
imadaemi | 0:4e38f8b1c183 | 15 | // *************************************************** |
imadaemi | 0:4e38f8b1c183 | 16 | // コンストラクタ |
imadaemi | 0:4e38f8b1c183 | 17 | // *************************************************** |
imadaemi | 0:4e38f8b1c183 | 18 | Serial pc(USBTX, USBRX, 115200); |
imadaemi | 0:4e38f8b1c183 | 19 | Serial gps_serial(p9, p10, 115200); |
imadaemi | 0:4e38f8b1c183 | 20 | Serial im920_serial(p13, p14, 115200); |
imadaemi | 0:4e38f8b1c183 | 21 | |
imadaemi | 0:4e38f8b1c183 | 22 | I2C i2c(p28, p27); |
imadaemi | 0:4e38f8b1c183 | 23 | |
imadaemi | 0:4e38f8b1c183 | 24 | IM920 im920(im920_serial, pc, 115200); |
imadaemi | 0:4e38f8b1c183 | 25 | GPS_interrupt gps(&gps_serial); |
imadaemi | 0:4e38f8b1c183 | 26 | LPS22HB lps22hb(i2c, LPS22HB::SA0_LOW); |
imadaemi | 0:4e38f8b1c183 | 27 | mpu9250 mpu9250(i2c,AD0_HIGH); |
imadaemi | 0:4e38f8b1c183 | 28 | myINA226 ina226_main(i2c, myINA226::A1_GND, myINA226::A0_GND); |
imadaemi | 0:4e38f8b1c183 | 29 | myINA226 ina226_sep(i2c, myINA226::A1_VDD, myINA226::A0_VDD); |
imadaemi | 0:4e38f8b1c183 | 30 | Nichrome_lib nich(p20); |
imadaemi | 0:4e38f8b1c183 | 31 | EEPROM_lib EEPROM(i2c, 1); |
imadaemi | 0:4e38f8b1c183 | 32 | |
imadaemi | 0:4e38f8b1c183 | 33 | DigitalOut pinA(p21); |
imadaemi | 0:4e38f8b1c183 | 34 | DigitalOut pinB(p22); |
imadaemi | 0:4e38f8b1c183 | 35 | DigitalOut pinC(p23); |
imadaemi | 0:4e38f8b1c183 | 36 | |
imadaemi | 0:4e38f8b1c183 | 37 | // *************************************************** |
imadaemi | 0:4e38f8b1c183 | 38 | // 関数の宣言 |
imadaemi | 0:4e38f8b1c183 | 39 | // *************************************************** |
imadaemi | 0:4e38f8b1c183 | 40 | void uplink(); |
imadaemi | 0:4e38f8b1c183 | 41 | void echoIM(); |
imadaemi | 0:4e38f8b1c183 | 42 | void Separate(); |
imadaemi | 0:4e38f8b1c183 | 43 | void StopSeparate(); |
imadaemi | 0:4e38f8b1c183 | 44 | void SetSensor(); |
imadaemi | 0:4e38f8b1c183 | 45 | void GetData(); |
imadaemi | 0:4e38f8b1c183 | 46 | void WriteEEPROM(); |
imadaemi | 0:4e38f8b1c183 | 47 | void setEEPROMGroup(int group_num); |
imadaemi | 0:4e38f8b1c183 | 48 | |
imadaemi | 0:4e38f8b1c183 | 49 | // *************************************************** |
imadaemi | 0:4e38f8b1c183 | 50 | // 無線のヘッダまとめ |
imadaemi | 0:4e38f8b1c183 | 51 | // *************************************************** |
imadaemi | 0:4e38f8b1c183 | 52 | const char HEADER_SETUP = 0x01; |
imadaemi | 0:4e38f8b1c183 | 53 | // 0xA1 |
imadaemi | 0:4e38f8b1c183 | 54 | |
imadaemi | 0:4e38f8b1c183 | 55 | const char HEADER_DATA = 0xA2; |
imadaemi | 0:4e38f8b1c183 | 56 | // 0xA2 |
imadaemi | 0:4e38f8b1c183 | 57 | // |
imadaemi | 0:4e38f8b1c183 | 58 | |
imadaemi | 0:4e38f8b1c183 | 59 | const char HEADER_ECHO = 0xA5; |
imadaemi | 0:4e38f8b1c183 | 60 | // 0xA5,コマンド |
imadaemi | 0:4e38f8b1c183 | 61 | // 1 1 |
imadaemi | 0:4e38f8b1c183 | 62 | |
imadaemi | 0:4e38f8b1c183 | 63 | // *************************************************** |
imadaemi | 0:4e38f8b1c183 | 64 | // 変数の宣言 |
imadaemi | 0:4e38f8b1c183 | 65 | // *************************************************** |
imadaemi | 0:4e38f8b1c183 | 66 | bool header_set = false; |
imadaemi | 0:4e38f8b1c183 | 67 | char im_buf[55];//16なのって意味ある? |
imadaemi | 0:4e38f8b1c183 | 68 | int im_buf_n = 0; |
imadaemi | 0:4e38f8b1c183 | 69 | |
imadaemi | 0:4e38f8b1c183 | 70 | float lat, lon, height; |
imadaemi | 0:4e38f8b1c183 | 71 | float press, temp, altitude; |
imadaemi | 0:4e38f8b1c183 | 72 | |
imadaemi | 0:4e38f8b1c183 | 73 | float imu[6], mag[3]; |
imadaemi | 0:4e38f8b1c183 | 74 | float mag_geo[3]; |
imadaemi | 0:4e38f8b1c183 | 75 | |
imadaemi | 0:4e38f8b1c183 | 76 | float voltage_main, voltage_sep; |
imadaemi | 0:4e38f8b1c183 | 77 | float current_main, current_sep; |
imadaemi | 0:4e38f8b1c183 | 78 | |
imadaemi | 0:4e38f8b1c183 | 79 | // *************************************************** |
imadaemi | 0:4e38f8b1c183 | 80 | // メイン関数 |
imadaemi | 0:4e38f8b1c183 | 81 | // *************************************************** |
imadaemi | 0:4e38f8b1c183 | 82 | int main() { |
imadaemi | 0:4e38f8b1c183 | 83 | pc.printf("Hello Main!\r\n"); |
imadaemi | 0:4e38f8b1c183 | 84 | SetSensor(); |
imadaemi | 0:4e38f8b1c183 | 85 | im920.attach(&uplink, 0xF0); |
imadaemi | 0:4e38f8b1c183 | 86 | |
imadaemi | 0:4e38f8b1c183 | 87 | while(1){ |
imadaemi | 0:4e38f8b1c183 | 88 | GetData(); |
imadaemi | 0:4e38f8b1c183 | 89 | wait(0.5f); |
imadaemi | 0:4e38f8b1c183 | 90 | } |
imadaemi | 0:4e38f8b1c183 | 91 | } |
imadaemi | 0:4e38f8b1c183 | 92 | // *************************************************** |
imadaemi | 0:4e38f8b1c183 | 93 | // アップリンク(地上局から) |
imadaemi | 0:4e38f8b1c183 | 94 | // *************************************************** |
imadaemi | 0:4e38f8b1c183 | 95 | void uplink(){ |
imadaemi | 0:4e38f8b1c183 | 96 | echoIM(); |
imadaemi | 0:4e38f8b1c183 | 97 | switch(im920.data[1]){ |
imadaemi | 0:4e38f8b1c183 | 98 | case 0x01: |
imadaemi | 0:4e38f8b1c183 | 99 | pc.printf("********************\r\n"); |
imadaemi | 0:4e38f8b1c183 | 100 | pc.printf("SEPARATE\r\n"); |
imadaemi | 0:4e38f8b1c183 | 101 | pc.printf("********************\r\n\r\n"); |
imadaemi | 0:4e38f8b1c183 | 102 | Separate(); |
imadaemi | 0:4e38f8b1c183 | 103 | break; |
imadaemi | 0:4e38f8b1c183 | 104 | |
imadaemi | 0:4e38f8b1c183 | 105 | case 0x00: |
imadaemi | 0:4e38f8b1c183 | 106 | pc.printf("********************\r\n"); |
imadaemi | 0:4e38f8b1c183 | 107 | pc.printf("STOP SEPARATE\r\n"); |
imadaemi | 0:4e38f8b1c183 | 108 | pc.printf("********************\r\n\r\n"); |
imadaemi | 0:4e38f8b1c183 | 109 | StopSeparate(); |
imadaemi | 0:4e38f8b1c183 | 110 | break; |
imadaemi | 0:4e38f8b1c183 | 111 | } |
imadaemi | 0:4e38f8b1c183 | 112 | } |
imadaemi | 0:4e38f8b1c183 | 113 | |
imadaemi | 0:4e38f8b1c183 | 114 | // *************************************************** |
imadaemi | 0:4e38f8b1c183 | 115 | // 無線信号の送り返し |
imadaemi | 0:4e38f8b1c183 | 116 | // *************************************************** |
imadaemi | 0:4e38f8b1c183 | 117 | void echoIM(){ |
imadaemi | 0:4e38f8b1c183 | 118 | im920.header(HEADER_ECHO); |
imadaemi | 0:4e38f8b1c183 | 119 | im920.write(im920.data[1]); |
imadaemi | 0:4e38f8b1c183 | 120 | im920.send(); |
imadaemi | 0:4e38f8b1c183 | 121 | } |
imadaemi | 0:4e38f8b1c183 | 122 | |
imadaemi | 0:4e38f8b1c183 | 123 | // *************************************************** |
imadaemi | 0:4e38f8b1c183 | 124 | // 分離実行 |
imadaemi | 0:4e38f8b1c183 | 125 | // *************************************************** |
imadaemi | 0:4e38f8b1c183 | 126 | void Separate(){ |
imadaemi | 0:4e38f8b1c183 | 127 | nich.fire(3.0f); |
imadaemi | 0:4e38f8b1c183 | 128 | } |
imadaemi | 0:4e38f8b1c183 | 129 | |
imadaemi | 0:4e38f8b1c183 | 130 | void StopSeparate(){ |
imadaemi | 0:4e38f8b1c183 | 131 | nich.fire_off(); |
imadaemi | 0:4e38f8b1c183 | 132 | } |
imadaemi | 0:4e38f8b1c183 | 133 | |
imadaemi | 0:4e38f8b1c183 | 134 | // *************************************************** |
imadaemi | 0:4e38f8b1c183 | 135 | // センサーのセットアップ |
imadaemi | 0:4e38f8b1c183 | 136 | // *************************************************** |
imadaemi | 0:4e38f8b1c183 | 137 | void SetSensor(){ |
imadaemi | 0:4e38f8b1c183 | 138 | pc.printf("\r\n"); |
imadaemi | 0:4e38f8b1c183 | 139 | for(int i = 0; i < 20; i++){ |
imadaemi | 0:4e38f8b1c183 | 140 | pc.printf("*"); |
imadaemi | 0:4e38f8b1c183 | 141 | } |
imadaemi | 0:4e38f8b1c183 | 142 | pc.printf("\r\n"); |
imadaemi | 0:4e38f8b1c183 | 143 | pc.printf("Start Setting\r\n"); |
imadaemi | 0:4e38f8b1c183 | 144 | |
imadaemi | 0:4e38f8b1c183 | 145 | if(!header_set){ |
imadaemi | 0:4e38f8b1c183 | 146 | im920.header((char)HEADER_SETUP); |
imadaemi | 0:4e38f8b1c183 | 147 | header_set = true; |
imadaemi | 0:4e38f8b1c183 | 148 | } |
imadaemi | 0:4e38f8b1c183 | 149 | |
imadaemi | 0:4e38f8b1c183 | 150 | //GPS |
imadaemi | 0:4e38f8b1c183 | 151 | if(gps.gps_readable == true){ |
imadaemi | 0:4e38f8b1c183 | 152 | pc.printf("GPS : OK!\r\n"); |
imadaemi | 0:4e38f8b1c183 | 153 | im920.write((char)0x01); |
imadaemi | 0:4e38f8b1c183 | 154 | im_buf[im_buf_n] = '1'; |
imadaemi | 0:4e38f8b1c183 | 155 | im_buf_n ++; |
imadaemi | 0:4e38f8b1c183 | 156 | }else{ |
imadaemi | 0:4e38f8b1c183 | 157 | pc.printf("GPS : NG...\r\n"); |
imadaemi | 0:4e38f8b1c183 | 158 | im920.write((char)0x00); |
imadaemi | 0:4e38f8b1c183 | 159 | im_buf[im_buf_n] = '0'; |
imadaemi | 0:4e38f8b1c183 | 160 | im_buf_n ++; |
imadaemi | 0:4e38f8b1c183 | 161 | } |
imadaemi | 0:4e38f8b1c183 | 162 | |
imadaemi | 0:4e38f8b1c183 | 163 | //LPS22HB |
imadaemi | 0:4e38f8b1c183 | 164 | lps22hb.begin(); |
imadaemi | 0:4e38f8b1c183 | 165 | if(lps22hb.test() == true){ |
imadaemi | 0:4e38f8b1c183 | 166 | pc.printf("LPS22HB : OK!\r\n"); |
imadaemi | 0:4e38f8b1c183 | 167 | im920.write((char)0x01); |
imadaemi | 0:4e38f8b1c183 | 168 | im_buf[im_buf_n] = '1'; |
imadaemi | 0:4e38f8b1c183 | 169 | im_buf_n ++; |
imadaemi | 0:4e38f8b1c183 | 170 | }else{ |
imadaemi | 0:4e38f8b1c183 | 171 | pc.printf("LPS22HB : NG...\r\n"); |
imadaemi | 0:4e38f8b1c183 | 172 | im920.write((char)0x00); |
imadaemi | 0:4e38f8b1c183 | 173 | im_buf[im_buf_n] = '0'; |
imadaemi | 0:4e38f8b1c183 | 174 | im_buf_n ++; |
imadaemi | 0:4e38f8b1c183 | 175 | } |
imadaemi | 0:4e38f8b1c183 | 176 | |
imadaemi | 0:4e38f8b1c183 | 177 | //MPU9250 |
imadaemi | 0:4e38f8b1c183 | 178 | if(mpu9250.sensorTest() == true){ |
imadaemi | 0:4e38f8b1c183 | 179 | pc.printf("MPU9250 : OK!\r\n"); |
imadaemi | 0:4e38f8b1c183 | 180 | im920.write((char)0x01); |
imadaemi | 0:4e38f8b1c183 | 181 | im_buf[im_buf_n] = '1'; |
imadaemi | 0:4e38f8b1c183 | 182 | im_buf_n ++; |
imadaemi | 0:4e38f8b1c183 | 183 | }else{ |
imadaemi | 0:4e38f8b1c183 | 184 | pc.printf("MPU9250 : NG...\r\n"); |
imadaemi | 0:4e38f8b1c183 | 185 | im920.write((char)0x00); |
imadaemi | 0:4e38f8b1c183 | 186 | im_buf[im_buf_n] = '0'; |
imadaemi | 0:4e38f8b1c183 | 187 | im_buf_n ++; |
imadaemi | 0:4e38f8b1c183 | 188 | } |
imadaemi | 0:4e38f8b1c183 | 189 | if(mpu9250.mag_sensorTest() == true){ |
imadaemi | 0:4e38f8b1c183 | 190 | pc.printf("MPU9250 MAG : OK!\r\n"); |
imadaemi | 0:4e38f8b1c183 | 191 | im920.write((char)0x01); |
imadaemi | 0:4e38f8b1c183 | 192 | im_buf[im_buf_n] = '1'; |
imadaemi | 0:4e38f8b1c183 | 193 | im_buf_n ++; |
imadaemi | 0:4e38f8b1c183 | 194 | }else{ |
imadaemi | 0:4e38f8b1c183 | 195 | pc.printf("MPU9250 MAG : NG...\r\n"); |
imadaemi | 0:4e38f8b1c183 | 196 | im920.write((char)0x00); |
imadaemi | 0:4e38f8b1c183 | 197 | im_buf[im_buf_n] = '0'; |
imadaemi | 0:4e38f8b1c183 | 198 | im_buf_n ++; |
imadaemi | 0:4e38f8b1c183 | 199 | } |
imadaemi | 0:4e38f8b1c183 | 200 | mpu9250.setAcc(ACC_RANGE); |
imadaemi | 0:4e38f8b1c183 | 201 | mpu9250.setGyro(GYRO_RANGE); |
imadaemi | 0:4e38f8b1c183 | 202 | mpu9250.setOffset(0.528892327, -0.660206211, 0.757105891, -0.011691362, 0.025688783, 1.087885322, -159.750004, 121.425005, -392.700012); |
imadaemi | 0:4e38f8b1c183 | 203 | |
imadaemi | 0:4e38f8b1c183 | 204 | //INA226 |
imadaemi | 0:4e38f8b1c183 | 205 | ina226_main.set_callibretion(); |
imadaemi | 0:4e38f8b1c183 | 206 | ina226_sep.set_callibretion(); |
imadaemi | 0:4e38f8b1c183 | 207 | ina226_main.setup(1); |
imadaemi | 0:4e38f8b1c183 | 208 | ina226_sep.setup(1); |
imadaemi | 0:4e38f8b1c183 | 209 | |
imadaemi | 0:4e38f8b1c183 | 210 | if(ina226_main.Connection_check()==0){ |
imadaemi | 0:4e38f8b1c183 | 211 | pc.printf("INA226 Main : OK!\r\n"); |
imadaemi | 0:4e38f8b1c183 | 212 | im920.write((char)0x01); |
imadaemi | 0:4e38f8b1c183 | 213 | im_buf[im_buf_n] = '1'; |
imadaemi | 0:4e38f8b1c183 | 214 | im_buf_n ++; |
imadaemi | 0:4e38f8b1c183 | 215 | }else{ |
imadaemi | 0:4e38f8b1c183 | 216 | pc.printf("INA226 Main : NG...\r\n"); |
imadaemi | 0:4e38f8b1c183 | 217 | im920.write((char)0x00); |
imadaemi | 0:4e38f8b1c183 | 218 | im_buf[im_buf_n] = '0'; |
imadaemi | 0:4e38f8b1c183 | 219 | im_buf_n ++; |
imadaemi | 0:4e38f8b1c183 | 220 | } |
imadaemi | 0:4e38f8b1c183 | 221 | if(ina226_sep.Connection_check()==0){ |
imadaemi | 0:4e38f8b1c183 | 222 | pc.printf("INA226 Sep : OK!\r\n"); |
imadaemi | 0:4e38f8b1c183 | 223 | im920.write((char)0x01); |
imadaemi | 0:4e38f8b1c183 | 224 | im_buf[im_buf_n] = '1'; |
imadaemi | 0:4e38f8b1c183 | 225 | im_buf_n ++; |
imadaemi | 0:4e38f8b1c183 | 226 | }else{ |
imadaemi | 0:4e38f8b1c183 | 227 | pc.printf("INA226 Sep : NG...\r\n"); |
imadaemi | 0:4e38f8b1c183 | 228 | im920.write((char)0x00); |
imadaemi | 0:4e38f8b1c183 | 229 | im_buf[im_buf_n] = '0'; |
imadaemi | 0:4e38f8b1c183 | 230 | im_buf_n ++; |
imadaemi | 0:4e38f8b1c183 | 231 | } |
imadaemi | 0:4e38f8b1c183 | 232 | |
imadaemi | 0:4e38f8b1c183 | 233 | if(header_set){ |
imadaemi | 0:4e38f8b1c183 | 234 | im920.send(); |
imadaemi | 0:4e38f8b1c183 | 235 | pc.printf("Send : %s\r\n", im_buf); |
imadaemi | 0:4e38f8b1c183 | 236 | header_set = false; |
imadaemi | 0:4e38f8b1c183 | 237 | for(int i = 0; i < im_buf_n; i ++){ |
imadaemi | 0:4e38f8b1c183 | 238 | im_buf[i] = '\0'; |
imadaemi | 0:4e38f8b1c183 | 239 | } |
imadaemi | 0:4e38f8b1c183 | 240 | im_buf_n = 0; |
imadaemi | 0:4e38f8b1c183 | 241 | } |
imadaemi | 0:4e38f8b1c183 | 242 | |
imadaemi | 0:4e38f8b1c183 | 243 | pc.printf("\r\n"); |
imadaemi | 0:4e38f8b1c183 | 244 | for(int i = 0; i < 20; i++){ |
imadaemi | 0:4e38f8b1c183 | 245 | pc.printf("*"); |
imadaemi | 0:4e38f8b1c183 | 246 | } |
imadaemi | 0:4e38f8b1c183 | 247 | pc.printf("\r\n"); |
imadaemi | 0:4e38f8b1c183 | 248 | } |
imadaemi | 0:4e38f8b1c183 | 249 | |
imadaemi | 0:4e38f8b1c183 | 250 | // *************************************************** |
imadaemi | 0:4e38f8b1c183 | 251 | // センサーのデータ取得 |
imadaemi | 0:4e38f8b1c183 | 252 | // *************************************************** |
imadaemi | 0:4e38f8b1c183 | 253 | void GetData(){ |
imadaemi | 0:4e38f8b1c183 | 254 | if(!header_set){ |
imadaemi | 0:4e38f8b1c183 | 255 | im920.header((char)HEADER_DATA); |
imadaemi | 0:4e38f8b1c183 | 256 | header_set = true; |
imadaemi | 0:4e38f8b1c183 | 257 | } |
imadaemi | 0:4e38f8b1c183 | 258 | |
imadaemi | 0:4e38f8b1c183 | 259 | //GPS |
imadaemi | 0:4e38f8b1c183 | 260 | lat = gps.Latitude(); |
imadaemi | 0:4e38f8b1c183 | 261 | lon = gps.Longitude(); |
imadaemi | 0:4e38f8b1c183 | 262 | height = gps.Height(); |
imadaemi | 0:4e38f8b1c183 | 263 | pc.printf("%f\t%f\t%f\t\r\n", lat, lon, height); |
imadaemi | 0:4e38f8b1c183 | 264 | im920.write((float)lat); |
imadaemi | 0:4e38f8b1c183 | 265 | im_buf_n ++; |
imadaemi | 0:4e38f8b1c183 | 266 | im920.write((float)lon); |
imadaemi | 0:4e38f8b1c183 | 267 | im_buf_n ++; |
imadaemi | 0:4e38f8b1c183 | 268 | im920.write((float)height); |
imadaemi | 0:4e38f8b1c183 | 269 | im_buf_n ++; |
imadaemi | 0:4e38f8b1c183 | 270 | |
imadaemi | 0:4e38f8b1c183 | 271 | //LPS22HB |
imadaemi | 0:4e38f8b1c183 | 272 | lps22hb.read_press(&press); |
imadaemi | 0:4e38f8b1c183 | 273 | lps22hb.read_temp(&temp); |
imadaemi | 0:4e38f8b1c183 | 274 | altitude = (CURRENT_LOCATION_TEMP + 273.15)/0.0065*(1 - powf(press/CURRENT_LOCATION_PRESS, 287 * 0.0065/9.80665)); |
imadaemi | 0:4e38f8b1c183 | 275 | pc.printf("%f\t%f\t%f\r\n",press, temp, altitude); |
imadaemi | 0:4e38f8b1c183 | 276 | im920.write((float)press); |
imadaemi | 0:4e38f8b1c183 | 277 | im_buf_n ++; |
imadaemi | 0:4e38f8b1c183 | 278 | im920.write((float)temp); |
imadaemi | 0:4e38f8b1c183 | 279 | im_buf_n ++; |
imadaemi | 0:4e38f8b1c183 | 280 | im920.write((float)altitude); |
imadaemi | 0:4e38f8b1c183 | 281 | im_buf_n ++; |
imadaemi | 0:4e38f8b1c183 | 282 | |
imadaemi | 0:4e38f8b1c183 | 283 | //MPU9250 |
imadaemi | 0:4e38f8b1c183 | 284 | /* |
imadaemi | 0:4e38f8b1c183 | 285 | mpu9250.getAll(imu, mag); |
imadaemi | 0:4e38f8b1c183 | 286 | pc.printf("%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t\r\n",imu[0], imu[1], imu[2], imu[3], imu[4], imu[5], mag[0], mag[1], mag[2]); |
imadaemi | 0:4e38f8b1c183 | 287 | |
imadaemi | 0:4e38f8b1c183 | 288 | im920.write((float)imu[0]); |
imadaemi | 0:4e38f8b1c183 | 289 | im_buf_n ++; |
imadaemi | 0:4e38f8b1c183 | 290 | im920.write((float)imu[1]); |
imadaemi | 0:4e38f8b1c183 | 291 | im_buf_n ++; |
imadaemi | 0:4e38f8b1c183 | 292 | im920.write((float)imu[2]); |
imadaemi | 0:4e38f8b1c183 | 293 | im_buf_n ++; |
imadaemi | 0:4e38f8b1c183 | 294 | im920.write((float)imu[3]); |
imadaemi | 0:4e38f8b1c183 | 295 | im_buf_n ++; |
imadaemi | 0:4e38f8b1c183 | 296 | im920.write((float)imu[4]); |
imadaemi | 0:4e38f8b1c183 | 297 | im_buf_n ++; |
imadaemi | 0:4e38f8b1c183 | 298 | im920.write((float)imu[5]); |
imadaemi | 0:4e38f8b1c183 | 299 | im_buf_n ++; |
imadaemi | 0:4e38f8b1c183 | 300 | im920.write((float)mag[0]); |
imadaemi | 0:4e38f8b1c183 | 301 | im_buf_n ++; |
imadaemi | 0:4e38f8b1c183 | 302 | im920.write((float)mag[1]); |
imadaemi | 0:4e38f8b1c183 | 303 | im_buf_n ++; |
imadaemi | 0:4e38f8b1c183 | 304 | im920.write((float)mag[2]); |
imadaemi | 0:4e38f8b1c183 | 305 | im_buf_n ++; |
imadaemi | 0:4e38f8b1c183 | 306 | */ |
imadaemi | 0:4e38f8b1c183 | 307 | //INA226 |
imadaemi | 0:4e38f8b1c183 | 308 | ina226_main.get_Voltage_current(&voltage_main, ¤t_main); |
imadaemi | 0:4e38f8b1c183 | 309 | ina226_sep.get_Voltage_current(&voltage_sep, ¤t_sep); |
imadaemi | 0:4e38f8b1c183 | 310 | pc.printf("MainVol : %.2f, SepVol : %.2f, MainCur : %.2f, SepCur : %.2f\r\n", voltage_main*(1/1000), voltage_sep, current_main, current_sep); |
imadaemi | 0:4e38f8b1c183 | 311 | //pc.printf("MainVol : %f, SepVol : %f, MainCur : %f, SepCur : %f\r\n", voltage_main*(1/1000), voltage_sep, current_main, current_sep); |
imadaemi | 0:4e38f8b1c183 | 312 | im920.write((float)voltage_main); |
imadaemi | 0:4e38f8b1c183 | 313 | im_buf_n ++; |
imadaemi | 0:4e38f8b1c183 | 314 | im920.write((float)current_main); |
imadaemi | 0:4e38f8b1c183 | 315 | im_buf_n ++; |
imadaemi | 0:4e38f8b1c183 | 316 | im920.write((float)voltage_sep); |
imadaemi | 0:4e38f8b1c183 | 317 | im_buf_n ++; |
imadaemi | 0:4e38f8b1c183 | 318 | im920.write((float)current_sep); |
imadaemi | 0:4e38f8b1c183 | 319 | im_buf_n ++; |
imadaemi | 0:4e38f8b1c183 | 320 | |
imadaemi | 0:4e38f8b1c183 | 321 | if(header_set){ |
imadaemi | 0:4e38f8b1c183 | 322 | im920.send(); |
imadaemi | 0:4e38f8b1c183 | 323 | pc.printf("Send : %s\r\n", im_buf); |
imadaemi | 0:4e38f8b1c183 | 324 | header_set = false; |
imadaemi | 0:4e38f8b1c183 | 325 | for(int i = 0; i < im_buf_n; i ++){ |
imadaemi | 0:4e38f8b1c183 | 326 | im_buf[i] = '\0'; |
imadaemi | 0:4e38f8b1c183 | 327 | } |
imadaemi | 0:4e38f8b1c183 | 328 | im_buf_n = 0; |
imadaemi | 0:4e38f8b1c183 | 329 | } |
imadaemi | 0:4e38f8b1c183 | 330 | } |
imadaemi | 0:4e38f8b1c183 | 331 | |
imadaemi | 0:4e38f8b1c183 | 332 | // *************************************************** |
imadaemi | 0:4e38f8b1c183 | 333 | // EEPROMにデータを書き込むプログラム |
imadaemi | 0:4e38f8b1c183 | 334 | // *************************************************** |
imadaemi | 0:4e38f8b1c183 | 335 | void WriteEEPROM(){ |
imadaemi | 0:4e38f8b1c183 | 336 | int ptr, n = 0; |
imadaemi | 0:4e38f8b1c183 | 337 | int eeprom_ptr = 0; |
imadaemi | 0:4e38f8b1c183 | 338 | |
imadaemi | 0:4e38f8b1c183 | 339 | for(int i = 0; i < 4; i++){ |
imadaemi | 0:4e38f8b1c183 | 340 | pc.printf("Start to write %d EEPROM\r\n", i); |
imadaemi | 0:4e38f8b1c183 | 341 | setEEPROMGroup(i); |
imadaemi | 0:4e38f8b1c183 | 342 | EEPROM.setWriteAddr(1, 0, 0x00, 0x00); |
imadaemi | 0:4e38f8b1c183 | 343 | |
imadaemi | 0:4e38f8b1c183 | 344 | while(1){ |
imadaemi | 0:4e38f8b1c183 | 345 | ptr = EEPROM.chargeBuff((int)n++); |
imadaemi | 0:4e38f8b1c183 | 346 | //ptr = EEPROM.chargeBuff((char)0xff); |
imadaemi | 0:4e38f8b1c183 | 347 | //ptr = EEPROM.chargeBuff((int)0); |
imadaemi | 0:4e38f8b1c183 | 348 | if(ptr == 128){ |
imadaemi | 0:4e38f8b1c183 | 349 | EEPROM.writeBuff(); |
imadaemi | 0:4e38f8b1c183 | 350 | //ptr = EEPROM.setNextPage(); |
imadaemi | 0:4e38f8b1c183 | 351 | eeprom_ptr = EEPROM.setNextPage(); |
imadaemi | 0:4e38f8b1c183 | 352 | //pc.printf("eeprom_ptr: %08x\r\n", eeprom_ptr); |
imadaemi | 0:4e38f8b1c183 | 353 | } |
imadaemi | 0:4e38f8b1c183 | 354 | |
imadaemi | 0:4e38f8b1c183 | 355 | if(eeprom_ptr == 0x01000000){ |
imadaemi | 0:4e38f8b1c183 | 356 | ptr = 0; |
imadaemi | 0:4e38f8b1c183 | 357 | eeprom_ptr = 0; |
imadaemi | 0:4e38f8b1c183 | 358 | break; |
imadaemi | 0:4e38f8b1c183 | 359 | } |
imadaemi | 0:4e38f8b1c183 | 360 | } |
imadaemi | 0:4e38f8b1c183 | 361 | } |
imadaemi | 0:4e38f8b1c183 | 362 | } |
imadaemi | 0:4e38f8b1c183 | 363 | |
imadaemi | 0:4e38f8b1c183 | 364 | // *************************************************** |
imadaemi | 0:4e38f8b1c183 | 365 | // マルチプレクサで使うEEPROMを変更する |
imadaemi | 0:4e38f8b1c183 | 366 | // *************************************************** |
imadaemi | 0:4e38f8b1c183 | 367 | void setEEPROMGroup(int group_num){ |
imadaemi | 0:4e38f8b1c183 | 368 | switch(group_num){ |
imadaemi | 0:4e38f8b1c183 | 369 | case 0: |
imadaemi | 0:4e38f8b1c183 | 370 | pinA = 0; |
imadaemi | 0:4e38f8b1c183 | 371 | pinB = 0; |
imadaemi | 0:4e38f8b1c183 | 372 | pinC = 0; |
imadaemi | 0:4e38f8b1c183 | 373 | break; |
imadaemi | 0:4e38f8b1c183 | 374 | |
imadaemi | 0:4e38f8b1c183 | 375 | case 1: |
imadaemi | 0:4e38f8b1c183 | 376 | pinA = 1; |
imadaemi | 0:4e38f8b1c183 | 377 | pinB = 0; |
imadaemi | 0:4e38f8b1c183 | 378 | pinC = 0; |
imadaemi | 0:4e38f8b1c183 | 379 | break; |
imadaemi | 0:4e38f8b1c183 | 380 | |
imadaemi | 0:4e38f8b1c183 | 381 | case 2: |
imadaemi | 0:4e38f8b1c183 | 382 | pinA = 0; |
imadaemi | 0:4e38f8b1c183 | 383 | pinB = 1; |
imadaemi | 0:4e38f8b1c183 | 384 | pinC = 0; |
imadaemi | 0:4e38f8b1c183 | 385 | break; |
imadaemi | 0:4e38f8b1c183 | 386 | |
imadaemi | 0:4e38f8b1c183 | 387 | case 3: |
imadaemi | 0:4e38f8b1c183 | 388 | pinA = 1; |
imadaemi | 0:4e38f8b1c183 | 389 | pinB = 1; |
imadaemi | 0:4e38f8b1c183 | 390 | pinC = 0; |
imadaemi | 0:4e38f8b1c183 | 391 | break; |
imadaemi | 0:4e38f8b1c183 | 392 | } |
imadaemi | 0:4e38f8b1c183 | 393 | } |