Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: EthernetInterface mbed-rtos mbed
Fork of WiFi_Camera by
main.cpp@5:dd5bc7b037c7, 2016-11-03 (annotated)
- Committer:
- h_nakanishi
- Date:
- Thu Nov 03 16:26:35 2016 +0000
- Revision:
- 5:dd5bc7b037c7
- Parent:
- 4:4ea6299ad00e
- Child:
- 6:ac677b091f76
TEST
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| thorai | 4:4ea6299ad00e | 1 | #include "mbed.h" |
| thorai | 4:4ea6299ad00e | 2 | #include "ESP8266.h" |
| h_nakanishi | 5:dd5bc7b037c7 | 3 | #include "gps.h" |
| h_nakanishi | 5:dd5bc7b037c7 | 4 | |
| h_nakanishi | 5:dd5bc7b037c7 | 5 | #define GPS_ENABLE 1 |
| thorai | 4:4ea6299ad00e | 6 | |
| thorai | 4:4ea6299ad00e | 7 | Serial mc(P2_14, P2_15); //tx rx |
| thorai | 4:4ea6299ad00e | 8 | |
| thorai | 4:4ea6299ad00e | 9 | /****************************************************************************/ |
| thorai | 4:4ea6299ad00e | 10 | /* Wi-Fi関連の定義 */ |
| thorai | 4:4ea6299ad00e | 11 | /****************************************************************************/ |
| h_nakanishi | 5:dd5bc7b037c7 | 12 | SerialBuffered serial_buffered(P8_14, P8_15); |
| thorai | 4:4ea6299ad00e | 13 | ESP8266 wifi; |
| thorai | 4:4ea6299ad00e | 14 | #define WLAN_SSID "4CE67630E22B" // AP Name |
| thorai | 4:4ea6299ad00e | 15 | #define WLAN_PASS "t3340pn5mkmkh" // AP PassWord |
| h_nakanishi | 5:dd5bc7b037c7 | 16 | #define HOST_NAME "104.199.222.173" // HOST Address |
| h_nakanishi | 5:dd5bc7b037c7 | 17 | #define HOST_URL "/r-king/space/webapi.php?" // HOST URL |
| h_nakanishi | 5:dd5bc7b037c7 | 18 | #define HOST_PORT (80) // HOST Port |
| thorai | 4:4ea6299ad00e | 19 | #define ESP_Serial serial_buffered // WiFi Module Port |
| thorai | 4:4ea6299ad00e | 20 | #define ESP_Baud 115200 // WiFi Module Port |
| thorai | 4:4ea6299ad00e | 21 | #define WIFI_BUF 256 // WiFi Buffer Length |
| thorai | 4:4ea6299ad00e | 22 | |
| thorai | 4:4ea6299ad00e | 23 | /****************************************************************************/ |
| thorai | 4:4ea6299ad00e | 24 | /* グローバル変数の定義 */ |
| thorai | 4:4ea6299ad00e | 25 | /****************************************************************************/ |
| h_nakanishi | 5:dd5bc7b037c7 | 26 | int isEnableWiFi = false; |
| h_nakanishi | 5:dd5bc7b037c7 | 27 | int isEnableGPS = false; |
| h_nakanishi | 5:dd5bc7b037c7 | 28 | double g_lat = 12.3f; |
| h_nakanishi | 5:dd5bc7b037c7 | 29 | double g_lon = 45.6f; |
| h_nakanishi | 5:dd5bc7b037c7 | 30 | double g_alt = 78.9f; |
| h_nakanishi | 5:dd5bc7b037c7 | 31 | int g_year = 2016; |
| h_nakanishi | 5:dd5bc7b037c7 | 32 | int g_month = 01; |
| h_nakanishi | 5:dd5bc7b037c7 | 33 | int g_day = 01; |
| h_nakanishi | 5:dd5bc7b037c7 | 34 | int g_hour = 00; |
| h_nakanishi | 5:dd5bc7b037c7 | 35 | int g_min = 00; |
| h_nakanishi | 5:dd5bc7b037c7 | 36 | int g_sec = 00; |
| thorai | 4:4ea6299ad00e | 37 | |
| thorai | 4:4ea6299ad00e | 38 | /****************************************************************************/ |
| thorai | 4:4ea6299ad00e | 39 | /* プロトタイプ宣言 */ |
| thorai | 4:4ea6299ad00e | 40 | /****************************************************************************/ |
| h_nakanishi | 5:dd5bc7b037c7 | 41 | static void loop(void); |
| h_nakanishi | 5:dd5bc7b037c7 | 42 | static int setupWiFi(); |
| h_nakanishi | 5:dd5bc7b037c7 | 43 | static int sendWiFi(); |
| h_nakanishi | 5:dd5bc7b037c7 | 44 | static void resetWiFi(); |
| h_nakanishi | 5:dd5bc7b037c7 | 45 | #if GPS_ENABLE |
| h_nakanishi | 5:dd5bc7b037c7 | 46 | int setupGPS(); |
| h_nakanishi | 5:dd5bc7b037c7 | 47 | static void onGpsGdaReceivedCallback(SerialGPS::NMEA_GGA* data); |
| h_nakanishi | 5:dd5bc7b037c7 | 48 | static void onGpsZdaReceivedCallback(SerialGPS::NMEA_ZDA* data); |
| h_nakanishi | 5:dd5bc7b037c7 | 49 | static SerialGPS s_SerialGPS(P2_14, P2_15); // ★PIN番号は機器にあわせること★ |
| h_nakanishi | 5:dd5bc7b037c7 | 50 | static SerialGPS::GpsCallbackTable s_GpsCallbackTable = { |
| h_nakanishi | 5:dd5bc7b037c7 | 51 | /*.log_cbfunc = */ NULL, |
| h_nakanishi | 5:dd5bc7b037c7 | 52 | /*.gga_cbfunc = */ onGpsGdaReceivedCallback, |
| h_nakanishi | 5:dd5bc7b037c7 | 53 | /*.gll_cbfunc = */ NULL, |
| h_nakanishi | 5:dd5bc7b037c7 | 54 | /*.gsa_cbfunc = */ NULL, |
| h_nakanishi | 5:dd5bc7b037c7 | 55 | /*.gsv_cbfunc = */ NULL, |
| h_nakanishi | 5:dd5bc7b037c7 | 56 | /*.rmc_cbfunc = */ NULL, |
| h_nakanishi | 5:dd5bc7b037c7 | 57 | /*.vtg_cbfunc = */ NULL, |
| h_nakanishi | 5:dd5bc7b037c7 | 58 | /*.zda_cbfunc = */ onGpsZdaReceivedCallback |
| h_nakanishi | 5:dd5bc7b037c7 | 59 | }; |
| h_nakanishi | 5:dd5bc7b037c7 | 60 | #endif //GPS_ENABLE |
| thorai | 4:4ea6299ad00e | 61 | |
| thorai | 4:4ea6299ad00e | 62 | int main() { |
| h_nakanishi | 5:dd5bc7b037c7 | 63 | printf("[Serial Start]\r\n"); |
| thorai | 4:4ea6299ad00e | 64 | |
| thorai | 4:4ea6299ad00e | 65 | // Setup Wi-Fi |
| thorai | 4:4ea6299ad00e | 66 | isEnableWiFi = setupWiFi(); |
| thorai | 4:4ea6299ad00e | 67 | |
| h_nakanishi | 5:dd5bc7b037c7 | 68 | // Setup GPS |
| h_nakanishi | 5:dd5bc7b037c7 | 69 | isEnableGPS = setupGPS(); |
| thorai | 4:4ea6299ad00e | 70 | |
| h_nakanishi | 5:dd5bc7b037c7 | 71 | //mc.baud(115200); |
| h_nakanishi | 5:dd5bc7b037c7 | 72 | /* |
| thorai | 4:4ea6299ad00e | 73 | char data1[7] = {0xFF,0x1C,0x04,0x03,0x01,0x01,0x28};//時計回り |
| thorai | 4:4ea6299ad00e | 74 | mc.printf(data1); |
| thorai | 4:4ea6299ad00e | 75 | printf(data1); |
| thorai | 4:4ea6299ad00e | 76 | |
| thorai | 4:4ea6299ad00e | 77 | wait(3); |
| thorai | 4:4ea6299ad00e | 78 | |
| thorai | 4:4ea6299ad00e | 79 | char data2[7] = {0xFF,0x1C,0x04,0x03,0x01,0x02,0x28};//反時計まわり |
| thorai | 4:4ea6299ad00e | 80 | mc.printf(data2); |
| thorai | 4:4ea6299ad00e | 81 | printf(data2); |
| thorai | 4:4ea6299ad00e | 82 | |
| thorai | 4:4ea6299ad00e | 83 | wait(3); |
| thorai | 4:4ea6299ad00e | 84 | |
| thorai | 4:4ea6299ad00e | 85 | char data3[7] = {0xFF,0x1C,0x04,0x03,0x01,0x00,0x3C};//モータ停止TODO:00 |
| thorai | 4:4ea6299ad00e | 86 | // mc.printf(data3); |
| thorai | 4:4ea6299ad00e | 87 | for(int i = 0 ; i < sizeof(data3) ; i++){ |
| thorai | 4:4ea6299ad00e | 88 | mc.putc(data3[i]); |
| thorai | 4:4ea6299ad00e | 89 | } |
| thorai | 4:4ea6299ad00e | 90 | // printf(data3); |
| thorai | 4:4ea6299ad00e | 91 | |
| thorai | 4:4ea6299ad00e | 92 | printf("[Serial End]\n"); |
| h_nakanishi | 5:dd5bc7b037c7 | 93 | */ |
| thorai | 4:4ea6299ad00e | 94 | |
| h_nakanishi | 5:dd5bc7b037c7 | 95 | loop(); |
| h_nakanishi | 5:dd5bc7b037c7 | 96 | } |
| h_nakanishi | 5:dd5bc7b037c7 | 97 | int cnt = 0; |
| h_nakanishi | 5:dd5bc7b037c7 | 98 | void loop(void) |
| h_nakanishi | 5:dd5bc7b037c7 | 99 | { |
| h_nakanishi | 5:dd5bc7b037c7 | 100 | while(true) |
| h_nakanishi | 5:dd5bc7b037c7 | 101 | { |
| h_nakanishi | 5:dd5bc7b037c7 | 102 | #if GPS_ENABLE |
| h_nakanishi | 5:dd5bc7b037c7 | 103 | s_SerialGPS.Processing();// |
| h_nakanishi | 5:dd5bc7b037c7 | 104 | #endif //GPS_ENABLE |
| h_nakanishi | 5:dd5bc7b037c7 | 105 | wait_ms(10); |
| h_nakanishi | 5:dd5bc7b037c7 | 106 | |
| h_nakanishi | 5:dd5bc7b037c7 | 107 | if(cnt >= 1000) |
| h_nakanishi | 5:dd5bc7b037c7 | 108 | { |
| h_nakanishi | 5:dd5bc7b037c7 | 109 | if(isEnableWiFi == true) |
| h_nakanishi | 5:dd5bc7b037c7 | 110 | { |
| h_nakanishi | 5:dd5bc7b037c7 | 111 | sendWiFi(); |
| h_nakanishi | 5:dd5bc7b037c7 | 112 | } |
| h_nakanishi | 5:dd5bc7b037c7 | 113 | cnt = 0; |
| h_nakanishi | 5:dd5bc7b037c7 | 114 | } |
| h_nakanishi | 5:dd5bc7b037c7 | 115 | cnt++; |
| h_nakanishi | 5:dd5bc7b037c7 | 116 | } |
| thorai | 4:4ea6299ad00e | 117 | } |
| thorai | 4:4ea6299ad00e | 118 | |
| thorai | 4:4ea6299ad00e | 119 | /****************************************************************************/ |
| thorai | 4:4ea6299ad00e | 120 | // 機能 : Wi-Fi通信機能のセットアップ |
| thorai | 4:4ea6299ad00e | 121 | // 引数 : なし |
| thorai | 4:4ea6299ad00e | 122 | // 返り値 : ret FALSE(0):失敗 TRUE(1):成功 |
| thorai | 4:4ea6299ad00e | 123 | // 備考 : なし |
| thorai | 4:4ea6299ad00e | 124 | /****************************************************************************/ |
| h_nakanishi | 5:dd5bc7b037c7 | 125 | static int setupWiFi() |
| thorai | 4:4ea6299ad00e | 126 | { |
| thorai | 4:4ea6299ad00e | 127 | int ret = false; |
| thorai | 4:4ea6299ad00e | 128 | |
| h_nakanishi | 5:dd5bc7b037c7 | 129 | // Wi-Fiとのシリアル通信を開始する |
| thorai | 4:4ea6299ad00e | 130 | wifi.begin(ESP_Serial, ESP_Baud); |
| h_nakanishi | 5:dd5bc7b037c7 | 131 | |
| h_nakanishi | 5:dd5bc7b037c7 | 132 | // Wi-Fiモジュールをリセット |
| h_nakanishi | 5:dd5bc7b037c7 | 133 | resetWiFi(); |
| h_nakanishi | 5:dd5bc7b037c7 | 134 | |
| h_nakanishi | 5:dd5bc7b037c7 | 135 | // FWバージョンを取得 |
| thorai | 4:4ea6299ad00e | 136 | printf("FW Version:"); |
| h_nakanishi | 5:dd5bc7b037c7 | 137 | printf(wifi.getVersion().c_str()); // AT+GMR |
| thorai | 4:4ea6299ad00e | 138 | printf("\r\n"); |
| thorai | 4:4ea6299ad00e | 139 | |
| h_nakanishi | 5:dd5bc7b037c7 | 140 | // 既に接続済みであれば切断 |
| h_nakanishi | 5:dd5bc7b037c7 | 141 | wifi.leaveAP(); // AT+CWQAP |
| h_nakanishi | 5:dd5bc7b037c7 | 142 | |
| thorai | 4:4ea6299ad00e | 143 | // 接続の準備 |
| h_nakanishi | 5:dd5bc7b037c7 | 144 | if (wifi.setOprToStationSoftAP()) { // AT+CWMODE=3 |
| thorai | 4:4ea6299ad00e | 145 | printf("to station + softap ok\r\n"); |
| thorai | 4:4ea6299ad00e | 146 | } else { |
| thorai | 4:4ea6299ad00e | 147 | printf("to station + softap err\r\n"); |
| thorai | 4:4ea6299ad00e | 148 | //return ret; |
| thorai | 4:4ea6299ad00e | 149 | } |
| h_nakanishi | 5:dd5bc7b037c7 | 150 | |
| h_nakanishi | 5:dd5bc7b037c7 | 151 | // 接続可能なAP一覧を表示 |
| h_nakanishi | 5:dd5bc7b037c7 | 152 | //printf("%s\r\n", wifi.getAPList().c_str()); // AT+CWLAP |
| h_nakanishi | 5:dd5bc7b037c7 | 153 | |
| thorai | 4:4ea6299ad00e | 154 | // APに接続する |
| h_nakanishi | 5:dd5bc7b037c7 | 155 | if (wifi.joinAP(WLAN_SSID, WLAN_PASS)) { // AT+CWJAP="SSID","PASSWORD" |
| thorai | 4:4ea6299ad00e | 156 | printf("Join AP success\r\n"); |
| thorai | 4:4ea6299ad00e | 157 | printf("IP:"); |
| thorai | 4:4ea6299ad00e | 158 | printf( wifi.getLocalIP().c_str()); |
| thorai | 4:4ea6299ad00e | 159 | printf("\r\n"); |
| thorai | 4:4ea6299ad00e | 160 | } else { |
| thorai | 4:4ea6299ad00e | 161 | printf("Join AP failure\r\n"); |
| thorai | 4:4ea6299ad00e | 162 | return ret; |
| thorai | 4:4ea6299ad00e | 163 | } |
| thorai | 4:4ea6299ad00e | 164 | |
| thorai | 4:4ea6299ad00e | 165 | // コネクションを1つのみに設定 |
| h_nakanishi | 5:dd5bc7b037c7 | 166 | |
| h_nakanishi | 5:dd5bc7b037c7 | 167 | if (wifi.disableMUX()) { // AT+CIPMUX=0 |
| h_nakanishi | 5:dd5bc7b037c7 | 168 | printf("multi ok\r\n"); |
| thorai | 4:4ea6299ad00e | 169 | } else { |
| h_nakanishi | 5:dd5bc7b037c7 | 170 | printf("multi err\r\n"); |
| thorai | 4:4ea6299ad00e | 171 | return ret; |
| thorai | 4:4ea6299ad00e | 172 | } |
| thorai | 4:4ea6299ad00e | 173 | |
| thorai | 4:4ea6299ad00e | 174 | printf("setup end\r\n"); |
| thorai | 4:4ea6299ad00e | 175 | ret = true; |
| thorai | 4:4ea6299ad00e | 176 | |
| thorai | 4:4ea6299ad00e | 177 | return ret; |
| thorai | 4:4ea6299ad00e | 178 | } |
| thorai | 4:4ea6299ad00e | 179 | |
| thorai | 4:4ea6299ad00e | 180 | /****************************************************************************/ |
| thorai | 4:4ea6299ad00e | 181 | // 機能 : Wi-Fi送信機能 |
| thorai | 4:4ea6299ad00e | 182 | // 引数 : buffer 送信データ |
| thorai | 4:4ea6299ad00e | 183 | // 返り値 : ret FALSE(0):失敗 TRUE(1):成功 |
| thorai | 4:4ea6299ad00e | 184 | // 備考 : なし |
| thorai | 4:4ea6299ad00e | 185 | /****************************************************************************/ |
| h_nakanishi | 5:dd5bc7b037c7 | 186 | static int sendWiFi() |
| thorai | 4:4ea6299ad00e | 187 | { |
| thorai | 4:4ea6299ad00e | 188 | int ret = false; |
| thorai | 4:4ea6299ad00e | 189 | |
| thorai | 4:4ea6299ad00e | 190 | uint8_t buffer[2048] = {0}; |
| thorai | 4:4ea6299ad00e | 191 | bool sendRet = false; |
| thorai | 4:4ea6299ad00e | 192 | |
| h_nakanishi | 5:dd5bc7b037c7 | 193 | printf("sendWiFi\r\n"); |
| h_nakanishi | 5:dd5bc7b037c7 | 194 | if (wifi.createTCP(HOST_NAME, HOST_PORT)) { // AT+CIPSTART="TCP","104.199.222.173",80 |
| thorai | 4:4ea6299ad00e | 195 | printf("create tcp ok\r\n"); |
| thorai | 4:4ea6299ad00e | 196 | } else { |
| thorai | 4:4ea6299ad00e | 197 | printf("create tcp err\r\n"); |
| h_nakanishi | 5:dd5bc7b037c7 | 198 | // Wi-Fiモジュールをリセット |
| h_nakanishi | 5:dd5bc7b037c7 | 199 | resetWiFi(); |
| h_nakanishi | 5:dd5bc7b037c7 | 200 | return ret; |
| thorai | 4:4ea6299ad00e | 201 | } |
| h_nakanishi | 5:dd5bc7b037c7 | 202 | wait(1); |
| h_nakanishi | 5:dd5bc7b037c7 | 203 | |
| h_nakanishi | 5:dd5bc7b037c7 | 204 | // build GET Request |
| h_nakanishi | 5:dd5bc7b037c7 | 205 | char buf[1024] = {'\0'}; |
| h_nakanishi | 5:dd5bc7b037c7 | 206 | // sprintf(buf, "GET %saction=add&token=001&lat=%lf&lon=%lf&height=%lf HTTP/1.1\r\nHost: %s\r\nConnection: close\r\n\r\n", |
| h_nakanishi | 5:dd5bc7b037c7 | 207 | sprintf(buf, "GET %saction=add&token=001&lat=%lf&lon=%lf&height=%lf HTTP/1.1\r\nHost: %s\r\n\r\n", |
| h_nakanishi | 5:dd5bc7b037c7 | 208 | HOST_URL, |
| h_nakanishi | 5:dd5bc7b037c7 | 209 | g_lat, |
| h_nakanishi | 5:dd5bc7b037c7 | 210 | g_lon, |
| h_nakanishi | 5:dd5bc7b037c7 | 211 | g_alt, |
| h_nakanishi | 5:dd5bc7b037c7 | 212 | HOST_NAME); |
| thorai | 4:4ea6299ad00e | 213 | |
| h_nakanishi | 5:dd5bc7b037c7 | 214 | printf(buf); |
| thorai | 4:4ea6299ad00e | 215 | |
| h_nakanishi | 5:dd5bc7b037c7 | 216 | // Send GET Request |
| h_nakanishi | 5:dd5bc7b037c7 | 217 | sendRet = wifi.send((const uint8_t*)buf, strlen(buf)); // AT+CIPSEND=送信バイト数 |
| thorai | 4:4ea6299ad00e | 218 | if(sendRet == true) { |
| thorai | 4:4ea6299ad00e | 219 | printf("Success!!\r\n"); |
| h_nakanishi | 5:dd5bc7b037c7 | 220 | ret = true; |
| thorai | 4:4ea6299ad00e | 221 | } else { |
| thorai | 4:4ea6299ad00e | 222 | printf("Fail!!\r\n"); |
| h_nakanishi | 5:dd5bc7b037c7 | 223 | // Wi-Fiモジュールをリセット |
| h_nakanishi | 5:dd5bc7b037c7 | 224 | resetWiFi(); |
| h_nakanishi | 5:dd5bc7b037c7 | 225 | return ret; |
| thorai | 4:4ea6299ad00e | 226 | } |
| h_nakanishi | 5:dd5bc7b037c7 | 227 | wait(1); |
| thorai | 4:4ea6299ad00e | 228 | |
| h_nakanishi | 5:dd5bc7b037c7 | 229 | // wait Response (T/O 10Sec) |
| thorai | 4:4ea6299ad00e | 230 | uint32_t len = wifi.recv(buffer, sizeof(buffer), 10000); |
| thorai | 4:4ea6299ad00e | 231 | if (len > 0) { |
| thorai | 4:4ea6299ad00e | 232 | printf("Received:["); |
| thorai | 4:4ea6299ad00e | 233 | for(uint32_t i = 0; i < len; i++) { |
| thorai | 4:4ea6299ad00e | 234 | printf("%c", buffer[i]); |
| thorai | 4:4ea6299ad00e | 235 | } |
| thorai | 4:4ea6299ad00e | 236 | printf("]\r\n"); |
| thorai | 4:4ea6299ad00e | 237 | } |
| h_nakanishi | 5:dd5bc7b037c7 | 238 | |
| h_nakanishi | 5:dd5bc7b037c7 | 239 | // release TCP |
| thorai | 4:4ea6299ad00e | 240 | if (wifi.releaseTCP()) { |
| thorai | 4:4ea6299ad00e | 241 | printf("release tcp ok\r\n"); |
| thorai | 4:4ea6299ad00e | 242 | } else { |
| thorai | 4:4ea6299ad00e | 243 | printf("release tcp err\r\n"); |
| thorai | 4:4ea6299ad00e | 244 | } |
| h_nakanishi | 5:dd5bc7b037c7 | 245 | |
| h_nakanishi | 5:dd5bc7b037c7 | 246 | return ret; |
| h_nakanishi | 5:dd5bc7b037c7 | 247 | } |
| h_nakanishi | 5:dd5bc7b037c7 | 248 | |
| h_nakanishi | 5:dd5bc7b037c7 | 249 | /****************************************************************************/ |
| h_nakanishi | 5:dd5bc7b037c7 | 250 | // 機能 : Wi-Fiリセット機能 |
| h_nakanishi | 5:dd5bc7b037c7 | 251 | // 引数 : buffer 送信データ |
| h_nakanishi | 5:dd5bc7b037c7 | 252 | // 返り値 : ret FALSE(0):失敗 TRUE(1):成功 |
| h_nakanishi | 5:dd5bc7b037c7 | 253 | // 備考 : なし |
| h_nakanishi | 5:dd5bc7b037c7 | 254 | /****************************************************************************/ |
| h_nakanishi | 5:dd5bc7b037c7 | 255 | static void resetWiFi() |
| h_nakanishi | 5:dd5bc7b037c7 | 256 | { |
| h_nakanishi | 5:dd5bc7b037c7 | 257 | printf("Wi-Fi kick\r\n"); |
| h_nakanishi | 5:dd5bc7b037c7 | 258 | wifi.kick(); // AT |
| h_nakanishi | 5:dd5bc7b037c7 | 259 | printf("Wi-Fi reset\r\n"); |
| h_nakanishi | 5:dd5bc7b037c7 | 260 | wifi.restart(); // AT+RST |
| h_nakanishi | 5:dd5bc7b037c7 | 261 | wait(10); |
| h_nakanishi | 5:dd5bc7b037c7 | 262 | } |
| h_nakanishi | 5:dd5bc7b037c7 | 263 | |
| h_nakanishi | 5:dd5bc7b037c7 | 264 | |
| h_nakanishi | 5:dd5bc7b037c7 | 265 | #if GPS_ENABLE |
| h_nakanishi | 5:dd5bc7b037c7 | 266 | /**************************************************************************** |
| h_nakanishi | 5:dd5bc7b037c7 | 267 | モジュール名 : GPS Setup |
| h_nakanishi | 5:dd5bc7b037c7 | 268 | 関数名 : setupGPS |
| h_nakanishi | 5:dd5bc7b037c7 | 269 | 引数 : なし |
| h_nakanishi | 5:dd5bc7b037c7 | 270 | 戻り値 : GPS受信データ |
| h_nakanishi | 5:dd5bc7b037c7 | 271 | 処理概要 : GPS受信処理 |
| h_nakanishi | 5:dd5bc7b037c7 | 272 | 注意事項 : なし |
| h_nakanishi | 5:dd5bc7b037c7 | 273 | ****************************************************************************/ |
| h_nakanishi | 5:dd5bc7b037c7 | 274 | int setupGPS() |
| h_nakanishi | 5:dd5bc7b037c7 | 275 | { |
| h_nakanishi | 5:dd5bc7b037c7 | 276 | int ret = false; |
| h_nakanishi | 5:dd5bc7b037c7 | 277 | #if GPS_ENABLE |
| h_nakanishi | 5:dd5bc7b037c7 | 278 | // GPSライブラリの呼び出しサンプルコード |
| h_nakanishi | 5:dd5bc7b037c7 | 279 | s_SerialGPS.Init(); // GPS初期化 |
| h_nakanishi | 5:dd5bc7b037c7 | 280 | s_SerialGPS.SetGpsCallback(&s_GpsCallbackTable); // GPSコールバック登録 |
| h_nakanishi | 5:dd5bc7b037c7 | 281 | s_SerialGPS.RcvIsrEnable(); // GPS受信有効 |
| h_nakanishi | 5:dd5bc7b037c7 | 282 | ret = true; |
| h_nakanishi | 5:dd5bc7b037c7 | 283 | #endif // GPS_ENABLE |
| thorai | 4:4ea6299ad00e | 284 | return ret; |
| thorai | 4:4ea6299ad00e | 285 | } |
| thorai | 4:4ea6299ad00e | 286 | |
| h_nakanishi | 5:dd5bc7b037c7 | 287 | |
| h_nakanishi | 5:dd5bc7b037c7 | 288 | /**************************************************************************** |
| h_nakanishi | 5:dd5bc7b037c7 | 289 | モジュール名 : GPS受信コールバック |
| h_nakanishi | 5:dd5bc7b037c7 | 290 | 関数名 : onGpsGdaReceivedCallback |
| h_nakanishi | 5:dd5bc7b037c7 | 291 | 引数 : なし |
| h_nakanishi | 5:dd5bc7b037c7 | 292 | 戻り値 : GPS受信データ |
| h_nakanishi | 5:dd5bc7b037c7 | 293 | 処理概要 : GPS受信処理 |
| h_nakanishi | 5:dd5bc7b037c7 | 294 | 注意事項 : なし |
| h_nakanishi | 5:dd5bc7b037c7 | 295 | ****************************************************************************/ |
| h_nakanishi | 5:dd5bc7b037c7 | 296 | void onGpsGdaReceivedCallback(SerialGPS::NMEA_GGA* data) |
| h_nakanishi | 5:dd5bc7b037c7 | 297 | { |
| h_nakanishi | 5:dd5bc7b037c7 | 298 | double d_lat,d_lon,m_lat,m_lon; |
| h_nakanishi | 5:dd5bc7b037c7 | 299 | |
| h_nakanishi | 5:dd5bc7b037c7 | 300 | // lat |
| h_nakanishi | 5:dd5bc7b037c7 | 301 | d_lat=int(data->latitude/100); |
| h_nakanishi | 5:dd5bc7b037c7 | 302 | m_lat=(data->latitude - d_lat*100)/60; |
| h_nakanishi | 5:dd5bc7b037c7 | 303 | g_lat=d_lat+m_lat; |
| h_nakanishi | 5:dd5bc7b037c7 | 304 | |
| h_nakanishi | 5:dd5bc7b037c7 | 305 | // lon |
| h_nakanishi | 5:dd5bc7b037c7 | 306 | d_lon=int(data->longitude/100); |
| h_nakanishi | 5:dd5bc7b037c7 | 307 | m_lon=(data->longitude - d_lon*100)/60; |
| h_nakanishi | 5:dd5bc7b037c7 | 308 | g_lon=d_lon+m_lon; |
| h_nakanishi | 5:dd5bc7b037c7 | 309 | |
| h_nakanishi | 5:dd5bc7b037c7 | 310 | // alt |
| h_nakanishi | 5:dd5bc7b037c7 | 311 | g_alt = data->altitude; |
| h_nakanishi | 5:dd5bc7b037c7 | 312 | |
| h_nakanishi | 5:dd5bc7b037c7 | 313 | printf("lat=%lf, lon=%lf, alt=%lf\r\n", g_lat, g_lon, g_alt); |
| h_nakanishi | 5:dd5bc7b037c7 | 314 | } |
| h_nakanishi | 5:dd5bc7b037c7 | 315 | |
| h_nakanishi | 5:dd5bc7b037c7 | 316 | /**************************************************************************** |
| h_nakanishi | 5:dd5bc7b037c7 | 317 | モジュール名 : GPS受信コールバック |
| h_nakanishi | 5:dd5bc7b037c7 | 318 | 関数名 : onGpsZdaReceivedCallback |
| h_nakanishi | 5:dd5bc7b037c7 | 319 | 引数 : なし |
| h_nakanishi | 5:dd5bc7b037c7 | 320 | 戻り値 : GPS受信データ |
| h_nakanishi | 5:dd5bc7b037c7 | 321 | 処理概要 : GPS受信処理 |
| h_nakanishi | 5:dd5bc7b037c7 | 322 | 注意事項 : なし |
| h_nakanishi | 5:dd5bc7b037c7 | 323 | ****************************************************************************/ |
| h_nakanishi | 5:dd5bc7b037c7 | 324 | void onGpsZdaReceivedCallback(SerialGPS::NMEA_ZDA* data) |
| h_nakanishi | 5:dd5bc7b037c7 | 325 | { |
| h_nakanishi | 5:dd5bc7b037c7 | 326 | g_year = data->year; |
| h_nakanishi | 5:dd5bc7b037c7 | 327 | g_month = data->month; |
| h_nakanishi | 5:dd5bc7b037c7 | 328 | g_day = data->day; |
| h_nakanishi | 5:dd5bc7b037c7 | 329 | g_hour = (data->hour) + (data->hour_diff); |
| h_nakanishi | 5:dd5bc7b037c7 | 330 | g_min = (data->min) + (data->min_diff); |
| h_nakanishi | 5:dd5bc7b037c7 | 331 | g_sec = data->sec; |
| h_nakanishi | 5:dd5bc7b037c7 | 332 | |
| h_nakanishi | 5:dd5bc7b037c7 | 333 | printf("TIME:%04d/%02d/%02d %02d:%02d:%02d\r\n", |
| h_nakanishi | 5:dd5bc7b037c7 | 334 | g_year, |
| h_nakanishi | 5:dd5bc7b037c7 | 335 | g_month, |
| h_nakanishi | 5:dd5bc7b037c7 | 336 | g_day, |
| h_nakanishi | 5:dd5bc7b037c7 | 337 | g_hour, |
| h_nakanishi | 5:dd5bc7b037c7 | 338 | g_min, |
| h_nakanishi | 5:dd5bc7b037c7 | 339 | g_sec); |
| h_nakanishi | 5:dd5bc7b037c7 | 340 | } |
| h_nakanishi | 5:dd5bc7b037c7 | 341 | #endif //GPS_ENABLE |
