Laser Communication Protocol developed during HEPTA-Sat training in Bulgaria, October 2017.
Dependencies: Hepta9axis HeptaBattery HeptaCamera_GPS HeptaTemp HeptaXbee SDFileSystem mbed
3daf572bcae1/main.cpp@0:95bf84c286f5, 2017-11-11 (annotated)
- Committer:
- stoilivanov
- Date:
- Sat Nov 11 14:34:04 2017 +0000
- Revision:
- 0:95bf84c286f5
- Child:
- 1:f7206e74c970
Initial version.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
stoilivanov | 0:95bf84c286f5 | 1 | #include "mbed.h" |
stoilivanov | 0:95bf84c286f5 | 2 | #include "SDFileSystem.h" |
stoilivanov | 0:95bf84c286f5 | 3 | #include "HeptaXbee.h" |
stoilivanov | 0:95bf84c286f5 | 4 | #include "HeptaCamera_GPS.h" |
stoilivanov | 0:95bf84c286f5 | 5 | #include "Hepta9axis.h" |
stoilivanov | 0:95bf84c286f5 | 6 | #include "HeptaTemp.h" |
stoilivanov | 0:95bf84c286f5 | 7 | #include "HeptaBattery.h" |
stoilivanov | 0:95bf84c286f5 | 8 | #include <stdio.h> |
stoilivanov | 0:95bf84c286f5 | 9 | #include <string.h> |
stoilivanov | 0:95bf84c286f5 | 10 | #include <stdlib.h> |
stoilivanov | 0:95bf84c286f5 | 11 | |
stoilivanov | 0:95bf84c286f5 | 12 | |
stoilivanov | 0:95bf84c286f5 | 13 | Serial pc(USBTX,USBRX); |
stoilivanov | 0:95bf84c286f5 | 14 | SDFileSystem sd(p5, p6, p7, p8, "sd"); |
stoilivanov | 0:95bf84c286f5 | 15 | HeptaXbee xbee(p9,p10); |
stoilivanov | 0:95bf84c286f5 | 16 | HeptaCamera_GPS cam_gps(p13, p14,p25,p24); |
stoilivanov | 0:95bf84c286f5 | 17 | Hepta9axis n_axis(p28,p27,0xD0,0x18); |
stoilivanov | 0:95bf84c286f5 | 18 | HeptaTemp temp(p17); |
stoilivanov | 0:95bf84c286f5 | 19 | AnalogIn light(p18); |
stoilivanov | 0:95bf84c286f5 | 20 | PwmOut led(p21); |
stoilivanov | 0:95bf84c286f5 | 21 | HeptaBattery battery(p16,p26); |
stoilivanov | 0:95bf84c286f5 | 22 | DigitalOut myled(LED1); |
stoilivanov | 0:95bf84c286f5 | 23 | |
stoilivanov | 0:95bf84c286f5 | 24 | typedef struct { |
stoilivanov | 0:95bf84c286f5 | 25 | |
stoilivanov | 0:95bf84c286f5 | 26 | char* morse; |
stoilivanov | 0:95bf84c286f5 | 27 | |
stoilivanov | 0:95bf84c286f5 | 28 | char* ascii; |
stoilivanov | 0:95bf84c286f5 | 29 | |
stoilivanov | 0:95bf84c286f5 | 30 | } morse_table_t; |
stoilivanov | 0:95bf84c286f5 | 31 | |
stoilivanov | 0:95bf84c286f5 | 32 | |
stoilivanov | 0:95bf84c286f5 | 33 | int main() |
stoilivanov | 0:95bf84c286f5 | 34 | |
stoilivanov | 0:95bf84c286f5 | 35 | { |
stoilivanov | 0:95bf84c286f5 | 36 | |
stoilivanov | 0:95bf84c286f5 | 37 | morse_table_t table[] = { {".-", "A"}, |
stoilivanov | 0:95bf84c286f5 | 38 | |
stoilivanov | 0:95bf84c286f5 | 39 | {"-...", "B"}, |
stoilivanov | 0:95bf84c286f5 | 40 | |
stoilivanov | 0:95bf84c286f5 | 41 | {"-.-.", "C"}, |
stoilivanov | 0:95bf84c286f5 | 42 | |
stoilivanov | 0:95bf84c286f5 | 43 | {"-.." , "D"}, |
stoilivanov | 0:95bf84c286f5 | 44 | |
stoilivanov | 0:95bf84c286f5 | 45 | {"." , "E"}, |
stoilivanov | 0:95bf84c286f5 | 46 | |
stoilivanov | 0:95bf84c286f5 | 47 | {"..-." , "F"}, |
stoilivanov | 0:95bf84c286f5 | 48 | |
stoilivanov | 0:95bf84c286f5 | 49 | {"--." , "G"}, |
stoilivanov | 0:95bf84c286f5 | 50 | |
stoilivanov | 0:95bf84c286f5 | 51 | {"...." , "H"}, |
stoilivanov | 0:95bf84c286f5 | 52 | |
stoilivanov | 0:95bf84c286f5 | 53 | {".." , "I"}, |
stoilivanov | 0:95bf84c286f5 | 54 | |
stoilivanov | 0:95bf84c286f5 | 55 | {".---" , "J"}, |
stoilivanov | 0:95bf84c286f5 | 56 | |
stoilivanov | 0:95bf84c286f5 | 57 | {"-.-" , "K"}, |
stoilivanov | 0:95bf84c286f5 | 58 | |
stoilivanov | 0:95bf84c286f5 | 59 | {".-.." , "L"}, |
stoilivanov | 0:95bf84c286f5 | 60 | |
stoilivanov | 0:95bf84c286f5 | 61 | {"--" , "M"}, |
stoilivanov | 0:95bf84c286f5 | 62 | |
stoilivanov | 0:95bf84c286f5 | 63 | {"-." , "N"}, |
stoilivanov | 0:95bf84c286f5 | 64 | |
stoilivanov | 0:95bf84c286f5 | 65 | {"---" , "O"}, |
stoilivanov | 0:95bf84c286f5 | 66 | |
stoilivanov | 0:95bf84c286f5 | 67 | {".--." , "P"}, |
stoilivanov | 0:95bf84c286f5 | 68 | |
stoilivanov | 0:95bf84c286f5 | 69 | {"--.-" , "Q"}, |
stoilivanov | 0:95bf84c286f5 | 70 | |
stoilivanov | 0:95bf84c286f5 | 71 | {".-." , "R"}, |
stoilivanov | 0:95bf84c286f5 | 72 | |
stoilivanov | 0:95bf84c286f5 | 73 | {"..." , "S"}, |
stoilivanov | 0:95bf84c286f5 | 74 | |
stoilivanov | 0:95bf84c286f5 | 75 | {"-" , "T"}, |
stoilivanov | 0:95bf84c286f5 | 76 | |
stoilivanov | 0:95bf84c286f5 | 77 | {"..-" , "U"}, |
stoilivanov | 0:95bf84c286f5 | 78 | |
stoilivanov | 0:95bf84c286f5 | 79 | {"...-" , "V"}, |
stoilivanov | 0:95bf84c286f5 | 80 | |
stoilivanov | 0:95bf84c286f5 | 81 | {".--" , "W"}, |
stoilivanov | 0:95bf84c286f5 | 82 | |
stoilivanov | 0:95bf84c286f5 | 83 | {"-..-" , "X"}, |
stoilivanov | 0:95bf84c286f5 | 84 | |
stoilivanov | 0:95bf84c286f5 | 85 | {"-.--" , "Y"}, |
stoilivanov | 0:95bf84c286f5 | 86 | |
stoilivanov | 0:95bf84c286f5 | 87 | {"--.." "Z"}, |
stoilivanov | 0:95bf84c286f5 | 88 | |
stoilivanov | 0:95bf84c286f5 | 89 | {"-----" ,"0"}, |
stoilivanov | 0:95bf84c286f5 | 90 | |
stoilivanov | 0:95bf84c286f5 | 91 | {".----" ,"1"}, |
stoilivanov | 0:95bf84c286f5 | 92 | |
stoilivanov | 0:95bf84c286f5 | 93 | {"..---" , "2"}, |
stoilivanov | 0:95bf84c286f5 | 94 | |
stoilivanov | 0:95bf84c286f5 | 95 | {"...--" , "3"}, |
stoilivanov | 0:95bf84c286f5 | 96 | |
stoilivanov | 0:95bf84c286f5 | 97 | {"....-" , "4"}, |
stoilivanov | 0:95bf84c286f5 | 98 | |
stoilivanov | 0:95bf84c286f5 | 99 | {"....." , "5"}, |
stoilivanov | 0:95bf84c286f5 | 100 | |
stoilivanov | 0:95bf84c286f5 | 101 | {"-...." ,"6"}, |
stoilivanov | 0:95bf84c286f5 | 102 | |
stoilivanov | 0:95bf84c286f5 | 103 | {"--..." , "7"}, |
stoilivanov | 0:95bf84c286f5 | 104 | |
stoilivanov | 0:95bf84c286f5 | 105 | {"---.." , "8"}, |
stoilivanov | 0:95bf84c286f5 | 106 | |
stoilivanov | 0:95bf84c286f5 | 107 | {"----." , "9"}, |
stoilivanov | 0:95bf84c286f5 | 108 | |
stoilivanov | 0:95bf84c286f5 | 109 | {"/" , " "} |
stoilivanov | 0:95bf84c286f5 | 110 | |
stoilivanov | 0:95bf84c286f5 | 111 | }; |
stoilivanov | 0:95bf84c286f5 | 112 | |
stoilivanov | 0:95bf84c286f5 | 113 | pc.baud(9600); |
stoilivanov | 0:95bf84c286f5 | 114 | |
stoilivanov | 0:95bf84c286f5 | 115 | int st=0; |
stoilivanov | 0:95bf84c286f5 | 116 | |
stoilivanov | 0:95bf84c286f5 | 117 | char symbol,space; |
stoilivanov | 0:95bf84c286f5 | 118 | |
stoilivanov | 0:95bf84c286f5 | 119 | char mes[100]; |
stoilivanov | 0:95bf84c286f5 | 120 | |
stoilivanov | 0:95bf84c286f5 | 121 | char sysp[2]; |
stoilivanov | 0:95bf84c286f5 | 122 | |
stoilivanov | 0:95bf84c286f5 | 123 | float count=0.0,count_on=0.0,count_off=0.0, len = 0.0; |
stoilivanov | 0:95bf84c286f5 | 124 | |
stoilivanov | 0:95bf84c286f5 | 125 | float current,vol,sig,lux; |
stoilivanov | 0:95bf84c286f5 | 126 | |
stoilivanov | 0:95bf84c286f5 | 127 | led = 1; |
stoilivanov | 0:95bf84c286f5 | 128 | |
stoilivanov | 0:95bf84c286f5 | 129 | mkdir("/sd/LaserComms", 0777); |
stoilivanov | 0:95bf84c286f5 | 130 | |
stoilivanov | 0:95bf84c286f5 | 131 | FILE *fp = fopen("/sd/LaserComms/message.txt", "w"); |
stoilivanov | 0:95bf84c286f5 | 132 | |
stoilivanov | 0:95bf84c286f5 | 133 | if(fp == NULL) { |
stoilivanov | 0:95bf84c286f5 | 134 | |
stoilivanov | 0:95bf84c286f5 | 135 | error("Could not open file for writing\r\n"); |
stoilivanov | 0:95bf84c286f5 | 136 | |
stoilivanov | 0:95bf84c286f5 | 137 | } |
stoilivanov | 0:95bf84c286f5 | 138 | |
stoilivanov | 0:95bf84c286f5 | 139 | while (1) { |
stoilivanov | 0:95bf84c286f5 | 140 | |
stoilivanov | 0:95bf84c286f5 | 141 | do { |
stoilivanov | 0:95bf84c286f5 | 142 | |
stoilivanov | 0:95bf84c286f5 | 143 | vol = light.read(); |
stoilivanov | 0:95bf84c286f5 | 144 | |
stoilivanov | 0:95bf84c286f5 | 145 | sig = 3.3*1.947*vol; |
stoilivanov | 0:95bf84c286f5 | 146 | |
stoilivanov | 0:95bf84c286f5 | 147 | current = sig * 100; |
stoilivanov | 0:95bf84c286f5 | 148 | |
stoilivanov | 0:95bf84c286f5 | 149 | lux = (current)*2; |
stoilivanov | 0:95bf84c286f5 | 150 | |
stoilivanov | 0:95bf84c286f5 | 151 | if ( lux > 300 ) { |
stoilivanov | 0:95bf84c286f5 | 152 | |
stoilivanov | 0:95bf84c286f5 | 153 | count = count + 0.1; |
stoilivanov | 0:95bf84c286f5 | 154 | |
stoilivanov | 0:95bf84c286f5 | 155 | } else { |
stoilivanov | 0:95bf84c286f5 | 156 | |
stoilivanov | 0:95bf84c286f5 | 157 | count = 0.0; |
stoilivanov | 0:95bf84c286f5 | 158 | |
stoilivanov | 0:95bf84c286f5 | 159 | } |
stoilivanov | 0:95bf84c286f5 | 160 | |
stoilivanov | 0:95bf84c286f5 | 161 | xbee.printf("lux= %f , current= %f ,vol= %f , count= %f \r\n",lux,current,vol,count); |
stoilivanov | 0:95bf84c286f5 | 162 | |
stoilivanov | 0:95bf84c286f5 | 163 | wait (0.1); |
stoilivanov | 0:95bf84c286f5 | 164 | |
stoilivanov | 0:95bf84c286f5 | 165 | } while ( count <= 3.0 ); |
stoilivanov | 0:95bf84c286f5 | 166 | |
stoilivanov | 0:95bf84c286f5 | 167 | xbee.printf("LASER COMMUNICATION ESTABLISHED! RECEIVING MODE ON!\r\n"); |
stoilivanov | 0:95bf84c286f5 | 168 | |
stoilivanov | 0:95bf84c286f5 | 169 | |
stoilivanov | 0:95bf84c286f5 | 170 | |
stoilivanov | 0:95bf84c286f5 | 171 | lux=0; |
stoilivanov | 0:95bf84c286f5 | 172 | |
stoilivanov | 0:95bf84c286f5 | 173 | while(1) { |
stoilivanov | 0:95bf84c286f5 | 174 | |
stoilivanov | 0:95bf84c286f5 | 175 | count_on = 0.0; |
stoilivanov | 0:95bf84c286f5 | 176 | |
stoilivanov | 0:95bf84c286f5 | 177 | count_off = 0.0; |
stoilivanov | 0:95bf84c286f5 | 178 | |
stoilivanov | 0:95bf84c286f5 | 179 | /*vol = light.read(); |
stoilivanov | 0:95bf84c286f5 | 180 | |
stoilivanov | 0:95bf84c286f5 | 181 | sig = 3.3*1.947*vol; |
stoilivanov | 0:95bf84c286f5 | 182 | |
stoilivanov | 0:95bf84c286f5 | 183 | current = sig * 100; |
stoilivanov | 0:95bf84c286f5 | 184 | |
stoilivanov | 0:95bf84c286f5 | 185 | lux = (current)*2;*/ |
stoilivanov | 0:95bf84c286f5 | 186 | |
stoilivanov | 0:95bf84c286f5 | 187 | |
stoilivanov | 0:95bf84c286f5 | 188 | |
stoilivanov | 0:95bf84c286f5 | 189 | while(lux<300) { |
stoilivanov | 0:95bf84c286f5 | 190 | |
stoilivanov | 0:95bf84c286f5 | 191 | xbee.printf("lux= %f, count_off= %f \r\n",lux,count_off); |
stoilivanov | 0:95bf84c286f5 | 192 | |
stoilivanov | 0:95bf84c286f5 | 193 | count_off = count_off + 0.05; |
stoilivanov | 0:95bf84c286f5 | 194 | |
stoilivanov | 0:95bf84c286f5 | 195 | wait(0.05); |
stoilivanov | 0:95bf84c286f5 | 196 | |
stoilivanov | 0:95bf84c286f5 | 197 | vol = light.read(); |
stoilivanov | 0:95bf84c286f5 | 198 | |
stoilivanov | 0:95bf84c286f5 | 199 | sig = 3.3*1.947*vol; |
stoilivanov | 0:95bf84c286f5 | 200 | |
stoilivanov | 0:95bf84c286f5 | 201 | current = sig * 100; |
stoilivanov | 0:95bf84c286f5 | 202 | |
stoilivanov | 0:95bf84c286f5 | 203 | lux = (current)*2; |
stoilivanov | 0:95bf84c286f5 | 204 | |
stoilivanov | 0:95bf84c286f5 | 205 | } |
stoilivanov | 0:95bf84c286f5 | 206 | |
stoilivanov | 0:95bf84c286f5 | 207 | if (count_off >= 0.5) { |
stoilivanov | 0:95bf84c286f5 | 208 | |
stoilivanov | 0:95bf84c286f5 | 209 | space = '/'; |
stoilivanov | 0:95bf84c286f5 | 210 | |
stoilivanov | 0:95bf84c286f5 | 211 | } else { |
stoilivanov | 0:95bf84c286f5 | 212 | |
stoilivanov | 0:95bf84c286f5 | 213 | space = '\0'; |
stoilivanov | 0:95bf84c286f5 | 214 | |
stoilivanov | 0:95bf84c286f5 | 215 | } |
stoilivanov | 0:95bf84c286f5 | 216 | |
stoilivanov | 0:95bf84c286f5 | 217 | if (count_off > 3.0) { |
stoilivanov | 0:95bf84c286f5 | 218 | |
stoilivanov | 0:95bf84c286f5 | 219 | break; |
stoilivanov | 0:95bf84c286f5 | 220 | |
stoilivanov | 0:95bf84c286f5 | 221 | } |
stoilivanov | 0:95bf84c286f5 | 222 | |
stoilivanov | 0:95bf84c286f5 | 223 | |
stoilivanov | 0:95bf84c286f5 | 224 | |
stoilivanov | 0:95bf84c286f5 | 225 | while(lux>=300) { |
stoilivanov | 0:95bf84c286f5 | 226 | |
stoilivanov | 0:95bf84c286f5 | 227 | xbee.printf("lux= %f, count_on= %f \r\n",lux,count_on); |
stoilivanov | 0:95bf84c286f5 | 228 | |
stoilivanov | 0:95bf84c286f5 | 229 | count_on = count_on + 0.05; |
stoilivanov | 0:95bf84c286f5 | 230 | |
stoilivanov | 0:95bf84c286f5 | 231 | wait(0.05); |
stoilivanov | 0:95bf84c286f5 | 232 | |
stoilivanov | 0:95bf84c286f5 | 233 | vol = light.read(); |
stoilivanov | 0:95bf84c286f5 | 234 | |
stoilivanov | 0:95bf84c286f5 | 235 | sig = 3.3*1.947*vol; |
stoilivanov | 0:95bf84c286f5 | 236 | |
stoilivanov | 0:95bf84c286f5 | 237 | current = sig * 100; |
stoilivanov | 0:95bf84c286f5 | 238 | |
stoilivanov | 0:95bf84c286f5 | 239 | lux = (current)*2; |
stoilivanov | 0:95bf84c286f5 | 240 | |
stoilivanov | 0:95bf84c286f5 | 241 | } |
stoilivanov | 0:95bf84c286f5 | 242 | |
stoilivanov | 0:95bf84c286f5 | 243 | if (count_on >= 0.5) { |
stoilivanov | 0:95bf84c286f5 | 244 | |
stoilivanov | 0:95bf84c286f5 | 245 | symbol = '-'; |
stoilivanov | 0:95bf84c286f5 | 246 | |
stoilivanov | 0:95bf84c286f5 | 247 | } else { |
stoilivanov | 0:95bf84c286f5 | 248 | |
stoilivanov | 0:95bf84c286f5 | 249 | symbol = '.'; |
stoilivanov | 0:95bf84c286f5 | 250 | |
stoilivanov | 0:95bf84c286f5 | 251 | } |
stoilivanov | 0:95bf84c286f5 | 252 | |
stoilivanov | 0:95bf84c286f5 | 253 | if (count_off > 3.0) { |
stoilivanov | 0:95bf84c286f5 | 254 | |
stoilivanov | 0:95bf84c286f5 | 255 | break; |
stoilivanov | 0:95bf84c286f5 | 256 | |
stoilivanov | 0:95bf84c286f5 | 257 | } |
stoilivanov | 0:95bf84c286f5 | 258 | |
stoilivanov | 0:95bf84c286f5 | 259 | pc.printf("%c%c", space,symbol); |
stoilivanov | 0:95bf84c286f5 | 260 | |
stoilivanov | 0:95bf84c286f5 | 261 | fprintf(fp,"%c",symbol); |
stoilivanov | 0:95bf84c286f5 | 262 | |
stoilivanov | 0:95bf84c286f5 | 263 | |
stoilivanov | 0:95bf84c286f5 | 264 | |
stoilivanov | 0:95bf84c286f5 | 265 | } |
stoilivanov | 0:95bf84c286f5 | 266 | |
stoilivanov | 0:95bf84c286f5 | 267 | fclose(fp); |
stoilivanov | 0:95bf84c286f5 | 268 | |
stoilivanov | 0:95bf84c286f5 | 269 | fp = fopen("/sd/LaserComms/message.txt","r"); |
stoilivanov | 0:95bf84c286f5 | 270 | |
stoilivanov | 0:95bf84c286f5 | 271 | fgets(mes,100,fp); |
stoilivanov | 0:95bf84c286f5 | 272 | |
stoilivanov | 0:95bf84c286f5 | 273 | pc.printf("%s\n",mes); |
stoilivanov | 0:95bf84c286f5 | 274 | |
stoilivanov | 0:95bf84c286f5 | 275 | fclose(fp); |
stoilivanov | 0:95bf84c286f5 | 276 | |
stoilivanov | 0:95bf84c286f5 | 277 | |
stoilivanov | 0:95bf84c286f5 | 278 | |
stoilivanov | 0:95bf84c286f5 | 279 | if (mes != "\0") { |
stoilivanov | 0:95bf84c286f5 | 280 | |
stoilivanov | 0:95bf84c286f5 | 281 | xbee.printf("Message accepted successfully! \r\n"); |
stoilivanov | 0:95bf84c286f5 | 282 | |
stoilivanov | 0:95bf84c286f5 | 283 | xbee.printf("Morse: %s\r\n Translating... \r\n",mes); |
stoilivanov | 0:95bf84c286f5 | 284 | |
stoilivanov | 0:95bf84c286f5 | 285 | } |
stoilivanov | 0:95bf84c286f5 | 286 | |
stoilivanov | 0:95bf84c286f5 | 287 | |
stoilivanov | 0:95bf84c286f5 | 288 | |
stoilivanov | 0:95bf84c286f5 | 289 | char* segment,final_mes; |
stoilivanov | 0:95bf84c286f5 | 290 | |
stoilivanov | 0:95bf84c286f5 | 291 | int i; |
stoilivanov | 0:95bf84c286f5 | 292 | |
stoilivanov | 0:95bf84c286f5 | 293 | segment = strtok(mes, " "); |
stoilivanov | 0:95bf84c286f5 | 294 | |
stoilivanov | 0:95bf84c286f5 | 295 | xbee.printf("Translated: "); |
stoilivanov | 0:95bf84c286f5 | 296 | |
stoilivanov | 0:95bf84c286f5 | 297 | FILE *fh = fopen("/sd/LaserComms/final_message.txt", "w"); |
stoilivanov | 0:95bf84c286f5 | 298 | |
stoilivanov | 0:95bf84c286f5 | 299 | if(fh == NULL) { |
stoilivanov | 0:95bf84c286f5 | 300 | |
stoilivanov | 0:95bf84c286f5 | 301 | error("Could not open file for writing\r\n"); |
stoilivanov | 0:95bf84c286f5 | 302 | |
stoilivanov | 0:95bf84c286f5 | 303 | } |
stoilivanov | 0:95bf84c286f5 | 304 | |
stoilivanov | 0:95bf84c286f5 | 305 | while(segment) { |
stoilivanov | 0:95bf84c286f5 | 306 | |
stoilivanov | 0:95bf84c286f5 | 307 | for(i=0; i<37; ++i) { |
stoilivanov | 0:95bf84c286f5 | 308 | |
stoilivanov | 0:95bf84c286f5 | 309 | if (!strcmp(segment, table[i].morse)) { |
stoilivanov | 0:95bf84c286f5 | 310 | |
stoilivanov | 0:95bf84c286f5 | 311 | xbee.printf("%s",(table[i].ascii)); |
stoilivanov | 0:95bf84c286f5 | 312 | |
stoilivanov | 0:95bf84c286f5 | 313 | fprintf(fh,"%s",(table[i].ascii)); |
stoilivanov | 0:95bf84c286f5 | 314 | |
stoilivanov | 0:95bf84c286f5 | 315 | } |
stoilivanov | 0:95bf84c286f5 | 316 | |
stoilivanov | 0:95bf84c286f5 | 317 | } |
stoilivanov | 0:95bf84c286f5 | 318 | |
stoilivanov | 0:95bf84c286f5 | 319 | segment = strtok(NULL, " "); |
stoilivanov | 0:95bf84c286f5 | 320 | |
stoilivanov | 0:95bf84c286f5 | 321 | } |
stoilivanov | 0:95bf84c286f5 | 322 | |
stoilivanov | 0:95bf84c286f5 | 323 | |
stoilivanov | 0:95bf84c286f5 | 324 | |
stoilivanov | 0:95bf84c286f5 | 325 | fclose(fh); |
stoilivanov | 0:95bf84c286f5 | 326 | |
stoilivanov | 0:95bf84c286f5 | 327 | fh = fopen("/sd/LaserComms/final_message.txt","r"); |
stoilivanov | 0:95bf84c286f5 | 328 | |
stoilivanov | 0:95bf84c286f5 | 329 | fgets(&final_mes,100,fh); |
stoilivanov | 0:95bf84c286f5 | 330 | |
stoilivanov | 0:95bf84c286f5 | 331 | fclose(fh); |
stoilivanov | 0:95bf84c286f5 | 332 | |
stoilivanov | 0:95bf84c286f5 | 333 | |
stoilivanov | 0:95bf84c286f5 | 334 | |
stoilivanov | 0:95bf84c286f5 | 335 | |
stoilivanov | 0:95bf84c286f5 | 336 | |
stoilivanov | 0:95bf84c286f5 | 337 | if ( "final_mes" == "TELEMETRY" ) { |
stoilivanov | 0:95bf84c286f5 | 338 | |
stoilivanov | 0:95bf84c286f5 | 339 | xbee.printf("Telemetry requested!"); |
stoilivanov | 0:95bf84c286f5 | 340 | |
stoilivanov | 0:95bf84c286f5 | 341 | cam_gps.gps_setting(); |
stoilivanov | 0:95bf84c286f5 | 342 | |
stoilivanov | 0:95bf84c286f5 | 343 | float gx,gy,gz,ax,ay,az,mx,my,mz,bt,temper; |
stoilivanov | 0:95bf84c286f5 | 344 | |
stoilivanov | 0:95bf84c286f5 | 345 | char ns='A',ew='B',aunit='m'; |
stoilivanov | 0:95bf84c286f5 | 346 | |
stoilivanov | 0:95bf84c286f5 | 347 | float time=0.0,latitude=0.0,longitude=0.0,hacu=0.0,altitude=0.0; |
stoilivanov | 0:95bf84c286f5 | 348 | |
stoilivanov | 0:95bf84c286f5 | 349 | int quality=0,stnum=0,gps_check=0; |
stoilivanov | 0:95bf84c286f5 | 350 | |
stoilivanov | 0:95bf84c286f5 | 351 | for(int i = 0; i < 10; i++) { |
stoilivanov | 0:95bf84c286f5 | 352 | |
stoilivanov | 0:95bf84c286f5 | 353 | n_axis.sen_gyro(&gx,&gy,&gz); |
stoilivanov | 0:95bf84c286f5 | 354 | |
stoilivanov | 0:95bf84c286f5 | 355 | n_axis.sen_acc(&ax,&ay,&az); |
stoilivanov | 0:95bf84c286f5 | 356 | |
stoilivanov | 0:95bf84c286f5 | 357 | n_axis.sen_mag(&mx,&my,&mz); |
stoilivanov | 0:95bf84c286f5 | 358 | |
stoilivanov | 0:95bf84c286f5 | 359 | battery.vol(&bt); |
stoilivanov | 0:95bf84c286f5 | 360 | |
stoilivanov | 0:95bf84c286f5 | 361 | temp.temp_sense(&temper); |
stoilivanov | 0:95bf84c286f5 | 362 | |
stoilivanov | 0:95bf84c286f5 | 363 | cam_gps.gga_sensing(&time, &latitude, &ns, &longitude, &ew, &quality, &stnum, &hacu, &altitude, &aunit, &gps_check); |
stoilivanov | 0:95bf84c286f5 | 364 | |
stoilivanov | 0:95bf84c286f5 | 365 | |
stoilivanov | 0:95bf84c286f5 | 366 | |
stoilivanov | 0:95bf84c286f5 | 367 | xbee.printf("gx = %f gy = %f gz = %f\r\n",gx,gy,gz); |
stoilivanov | 0:95bf84c286f5 | 368 | |
stoilivanov | 0:95bf84c286f5 | 369 | xbee.printf("ax = %f ay = %f az = %f\r\n",ax,ay,az); |
stoilivanov | 0:95bf84c286f5 | 370 | |
stoilivanov | 0:95bf84c286f5 | 371 | xbee.printf("mx = %f my = %f mz = %f\r\n",mx,my,mz); |
stoilivanov | 0:95bf84c286f5 | 372 | |
stoilivanov | 0:95bf84c286f5 | 373 | xbee.printf("Temperature = %f\r\n",temper); |
stoilivanov | 0:95bf84c286f5 | 374 | |
stoilivanov | 0:95bf84c286f5 | 375 | xbee.printf("Battery voltage: = %f[V]\r\n",bt); |
stoilivanov | 0:95bf84c286f5 | 376 | |
stoilivanov | 0:95bf84c286f5 | 377 | xbee.printf("%f,%f,%c,%f,%c,%d,%d,%f,%f,%c\r\n\n",time,latitude,ns,longitude,ew,quality,stnum,hacu,altitude,aunit); |
stoilivanov | 0:95bf84c286f5 | 378 | |
stoilivanov | 0:95bf84c286f5 | 379 | led = (i%2); |
stoilivanov | 0:95bf84c286f5 | 380 | |
stoilivanov | 0:95bf84c286f5 | 381 | wait(1.0); |
stoilivanov | 0:95bf84c286f5 | 382 | |
stoilivanov | 0:95bf84c286f5 | 383 | } |
stoilivanov | 0:95bf84c286f5 | 384 | |
stoilivanov | 0:95bf84c286f5 | 385 | xbee.initialize(); |
stoilivanov | 0:95bf84c286f5 | 386 | |
stoilivanov | 0:95bf84c286f5 | 387 | } |
stoilivanov | 0:95bf84c286f5 | 388 | |
stoilivanov | 0:95bf84c286f5 | 389 | if ( "final_mes" == "PHOTO") { |
stoilivanov | 0:95bf84c286f5 | 390 | |
stoilivanov | 0:95bf84c286f5 | 391 | led = 0; |
stoilivanov | 0:95bf84c286f5 | 392 | |
stoilivanov | 0:95bf84c286f5 | 393 | wait(0.2); |
stoilivanov | 0:95bf84c286f5 | 394 | |
stoilivanov | 0:95bf84c286f5 | 395 | led = 1; |
stoilivanov | 0:95bf84c286f5 | 396 | |
stoilivanov | 0:95bf84c286f5 | 397 | wait(0.2); |
stoilivanov | 0:95bf84c286f5 | 398 | |
stoilivanov | 0:95bf84c286f5 | 399 | led = 0; |
stoilivanov | 0:95bf84c286f5 | 400 | |
stoilivanov | 0:95bf84c286f5 | 401 | wait(0.2); |
stoilivanov | 0:95bf84c286f5 | 402 | |
stoilivanov | 0:95bf84c286f5 | 403 | led = 1; |
stoilivanov | 0:95bf84c286f5 | 404 | |
stoilivanov | 0:95bf84c286f5 | 405 | wait(0.2); |
stoilivanov | 0:95bf84c286f5 | 406 | |
stoilivanov | 0:95bf84c286f5 | 407 | led = 0; |
stoilivanov | 0:95bf84c286f5 | 408 | |
stoilivanov | 0:95bf84c286f5 | 409 | wait(0.2); |
stoilivanov | 0:95bf84c286f5 | 410 | |
stoilivanov | 0:95bf84c286f5 | 411 | led = 1; |
stoilivanov | 0:95bf84c286f5 | 412 | |
stoilivanov | 0:95bf84c286f5 | 413 | wait(0.2); |
stoilivanov | 0:95bf84c286f5 | 414 | |
stoilivanov | 0:95bf84c286f5 | 415 | led = 0; |
stoilivanov | 0:95bf84c286f5 | 416 | |
stoilivanov | 0:95bf84c286f5 | 417 | xbee.printf("Photo requested! \r\n Camera Snapshot Mode\r\n\n Please Smile! :) \r\n"); |
stoilivanov | 0:95bf84c286f5 | 418 | |
stoilivanov | 0:95bf84c286f5 | 419 | cam_gps.Sync(); |
stoilivanov | 0:95bf84c286f5 | 420 | |
stoilivanov | 0:95bf84c286f5 | 421 | cam_gps.initialize(HeptaCamera_GPS::Baud115200, HeptaCamera_GPS::JpegResolution640x480); |
stoilivanov | 0:95bf84c286f5 | 422 | |
stoilivanov | 0:95bf84c286f5 | 423 | cam_gps.test_jpeg_snapshot_picture(1); |
stoilivanov | 0:95bf84c286f5 | 424 | |
stoilivanov | 0:95bf84c286f5 | 425 | led = 1; |
stoilivanov | 0:95bf84c286f5 | 426 | |
stoilivanov | 0:95bf84c286f5 | 427 | } |
stoilivanov | 0:95bf84c286f5 | 428 | |
stoilivanov | 0:95bf84c286f5 | 429 | if ( "final_mes" == "SOS") { |
stoilivanov | 0:95bf84c286f5 | 430 | |
stoilivanov | 0:95bf84c286f5 | 431 | // LED blinks SOS message |
stoilivanov | 0:95bf84c286f5 | 432 | |
stoilivanov | 0:95bf84c286f5 | 433 | } |
stoilivanov | 0:95bf84c286f5 | 434 | |
stoilivanov | 0:95bf84c286f5 | 435 | xbee.putc(xbee.getc()); |
stoilivanov | 0:95bf84c286f5 | 436 | |
stoilivanov | 0:95bf84c286f5 | 437 | led=0; |
stoilivanov | 0:95bf84c286f5 | 438 | |
stoilivanov | 0:95bf84c286f5 | 439 | wait(0.2); |
stoilivanov | 0:95bf84c286f5 | 440 | |
stoilivanov | 0:95bf84c286f5 | 441 | led = 1; |
stoilivanov | 0:95bf84c286f5 | 442 | |
stoilivanov | 0:95bf84c286f5 | 443 | wait(0.2); |
stoilivanov | 0:95bf84c286f5 | 444 | |
stoilivanov | 0:95bf84c286f5 | 445 | led = 0; |
stoilivanov | 0:95bf84c286f5 | 446 | |
stoilivanov | 0:95bf84c286f5 | 447 | wait(0.2); |
stoilivanov | 0:95bf84c286f5 | 448 | |
stoilivanov | 0:95bf84c286f5 | 449 | led = 1; |
stoilivanov | 0:95bf84c286f5 | 450 | |
stoilivanov | 0:95bf84c286f5 | 451 | wait(0.2); |
stoilivanov | 0:95bf84c286f5 | 452 | |
stoilivanov | 0:95bf84c286f5 | 453 | led = 0; |
stoilivanov | 0:95bf84c286f5 | 454 | |
stoilivanov | 0:95bf84c286f5 | 455 | xbee.printf("Communication terminated! \r\n"); |
stoilivanov | 0:95bf84c286f5 | 456 | |
stoilivanov | 0:95bf84c286f5 | 457 | } |
stoilivanov | 0:95bf84c286f5 | 458 | |
stoilivanov | 0:95bf84c286f5 | 459 | } |