Adaptation of the esp8266-driver demo program to control a GOPRO HERO3+ camera. This demo can only take a photo
Fork of mbed-os-example-mbed5-wifi by
Revision 58:e62c5f2e41bd, committed 2018-04-07
- Comitter:
- cdupaty
- Date:
- Sat Apr 07 14:57:24 2018 +0000
- Parent:
- 57:c5d4f98a5219
- Commit message:
- GOPRO camera adaptation; Simple test to take a photo on GOPRO HERO3+
Changed in this revision
--- a/main.cpp Tue Mar 27 12:45:02 2018 +0100 +++ b/main.cpp Sat Apr 07 14:57:24 2018 +0000 @@ -13,6 +13,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + +/* adaptation pour demo commande camera GOPRO + * C.Dupaty 04-2018 + */ #include "mbed.h" #include "TCPSocket.h" @@ -40,6 +44,11 @@ #endif +Serial pc(USBTX,USBRX); + +char photo[]="GET /bacpac/SH?t=goprofourcade&p=%01 HTTP/1.0\r\n\r\n"; // requete de prise de vue + + const char *sec2str(nsapi_security_t sec) { switch (sec) { @@ -63,7 +72,7 @@ { WiFiAccessPoint *ap; - printf("Scan:\n"); + pc.printf("Scan:\n"); int count = wifi->scan(NULL,0); @@ -74,47 +83,52 @@ count = wifi->scan(ap, count); for (int i = 0; i < count; i++) { - printf("Network: %s secured: %s BSSID: %hhX:%hhX:%hhX:%hhx:%hhx:%hhx RSSI: %hhd Ch: %hhd\n", ap[i].get_ssid(), + pc.printf("Network: %s secured: %s BSSID: %hhX:%hhX:%hhX:%hhx:%hhx:%hhx RSSI: %hhd Ch: %hhd\n", ap[i].get_ssid(), sec2str(ap[i].get_security()), ap[i].get_bssid()[0], ap[i].get_bssid()[1], ap[i].get_bssid()[2], ap[i].get_bssid()[3], ap[i].get_bssid()[4], ap[i].get_bssid()[5], ap[i].get_rssi(), ap[i].get_channel()); } - printf("%d networks available.\n", count); + pc.printf("%d networks available.\n", count); delete[] ap; return count; } -void http_demo(NetworkInterface *net) +void envoie_commande(NetworkInterface *net, char *sbuffer) { + pc.printf("\x1B[33m"); //texte jaune TCPSocket socket; nsapi_error_t response; - printf("Sending HTTP request to www.arm.com...\n"); + pc.printf("Sending HTTP request to gopro...\n"); // Open a socket on the network interface, and create a TCP connection to www.arm.com socket.open(net); - response = socket.connect("www.arm.com", 80); + response = socket.connect("10.5.5.9", 80); if(0 != response) { - printf("Error connecting: %d\n", response); + pc.printf("Error connecting: %d\n", response); socket.close(); + pc.printf("\x1B[37m"); //texte blanc return; } + else pc.printf("Connexion etablie\r\n"); // Send a simple http request - char sbuffer[] = "GET / HTTP/1.1\r\nHost: www.arm.com\r\n\r\n"; + // char sbuffer[] = "GET /bacpac/SH?t=goprofourcade&p=%01 HTTP/1.0\r\n\r\n"; + // char sbuffer[] = "GET / HTTP/1.1\r\nhost: 10.5.5.9\r\n\r\n"; nsapi_size_t size = strlen(sbuffer); response = 0; while(size) { response = socket.send(sbuffer+response, size); if (response < 0) { - printf("Error sending data: %d\n", response); + pc.printf("Error sending data: %d\n", response); socket.close(); + pc.printf("\x1B[37m"); //texte blanc return; } else { size -= response; // Check if entire message was sent or not - printf("sent %d [%.*s]\n", response, strstr(sbuffer, "\r\n")-sbuffer, sbuffer); + pc.printf("sent %d [%.*s]\n", response, strstr(sbuffer, "\r\n")-sbuffer, sbuffer); } } @@ -122,44 +136,61 @@ char rbuffer[64]; response = socket.recv(rbuffer, sizeof rbuffer); if (response < 0) { - printf("Error receiving data: %d\n", response); + pc.printf("Error receiving data: %d\n", response); } else { - printf("recv %d [%.*s]\n", response, strstr(rbuffer, "\r\n")-rbuffer, rbuffer); + pc.printf("recv %d [%.*s]\n", response, strstr(rbuffer, "\r\n")-rbuffer, rbuffer); + pc.printf("%s\r\n",rbuffer); } // Close the socket to return its memory and bring down the network interface socket.close(); + pc.printf("\x1B[37m"); //texte blanc } int main() { - int count = 0; - - printf("WiFi example\n\n"); - + // int count = 0; + pc.printf("\x1B[2J"); //efface ecran + pc.printf("\x1B[0;0H"); // curseur en 0,0 + pc.printf("\x1B[37m"); //texte blanc + pc.printf("-----------------------------------------------------------\r\n"); + pc.printf("Exemple de controle de camera GOPRO par WIFI\r\n"); + pc.printf("La camera GOPRO doit etre en marche, WIFI actif, mode photo\r\n"); + pc.printf("-----------------------------------------------------------\r\n"); +/* // Exploration count = scan_demo(&wifi); if (count == 0) { - printf("No WIFI APNs found - can't continue further.\n"); + pc.printf("No WIFI APNs found - can't continue further.\n"); + return -1; + } +*/ + pc.printf("\nTentative de connection sur la borne WIFI %s...\n", MBED_CONF_APP_WIFI_SSID); + int ret = wifi.connect(MBED_CONF_APP_WIFI_SSID, MBED_CONF_APP_WIFI_PASSWORD, NSAPI_SECURITY_WPA_WPA2); + if (ret != 0) { + pc.printf("\nConnection error\n"); return -1; } - printf("\nConnecting to %s...\n", MBED_CONF_APP_WIFI_SSID); - int ret = wifi.connect(MBED_CONF_APP_WIFI_SSID, MBED_CONF_APP_WIFI_PASSWORD, NSAPI_SECURITY_WPA_WPA2); - if (ret != 0) { - printf("\nConnection error\n"); - return -1; - } + pc.printf("Connexion reussie\n\n"); + pc.printf("MAC: %s\n", wifi.get_mac_address()); + pc.printf("IP: %s\n", wifi.get_ip_address()); + pc.printf("Netmask: %s\n", wifi.get_netmask()); + pc.printf("Gateway: %s\n", wifi.get_gateway()); + pc.printf("RSSI: %d\n\n", wifi.get_rssi()); - printf("Success\n\n"); - printf("MAC: %s\n", wifi.get_mac_address()); - printf("IP: %s\n", wifi.get_ip_address()); - printf("Netmask: %s\n", wifi.get_netmask()); - printf("Gateway: %s\n", wifi.get_gateway()); - printf("RSSI: %d\n\n", wifi.get_rssi()); - - http_demo(&wifi); - + char * commande = photo; // un exemple pour prendre une photo + // la camera doit activee être en mode photo + char c='a'; + while(c!='q') + { + while(pc.readable())c=pc.getc(); + pc.printf("\r\nTaper q pour quitter\n\r"); + pc.printf("ou n'importe quelle touche pour prendre une photo \n\r"); + while(!pc.readable()); + envoie_commande(&wifi,commande); + } wifi.disconnect(); - - printf("\nDone\n"); + + pc.printf("Wifi deconnecte - fin du programme\n\r"); + while(1); }
--- a/mbed-os.lib Tue Mar 27 12:45:02 2018 +0100 +++ b/mbed-os.lib Sat Apr 07 14:57:24 2018 +0000 @@ -1,1 +1,1 @@ -https://github.com/ARMmbed/mbed-os/#ad284b28064b22d7e125bcd83e3b5bf649bc4c37 +https://github.com/ARMmbed/mbed-os/#addec7ba10054be03849eff58a1d17f157391e7d
--- a/mbed_app.json Tue Mar 27 12:45:02 2018 +0100 +++ b/mbed_app.json Sat Apr 07 14:57:24 2018 +0000 @@ -2,23 +2,23 @@ "config": { "wifi-shield": { "help": "Options are internal, WIFI_ESP8266, WIFI_IDW0XX1", - "value": "internal" + "value": "WIFI_ESP8266" }, "wifi-ssid": { "help": "WiFi SSID", - "value": "\"SSID\"" + "value": "\"goprofourcade\"" }, "wifi-password": { "help": "WiFi Password", - "value": "\"PASSWORD\"" + "value": "\"goprofourcade\"" }, "wifi-tx": { "help": "TX pin for serial connection to external device", - "value": "D1" + "value": "PC_10" }, "wifi-rx": { "help": "RX pin for serial connection to external device", - "value": "D0" + "value": "PC_11" } }, "target_overrides": {
--- a/mbed_app_esp8266.json Tue Mar 27 12:45:02 2018 +0100 +++ b/mbed_app_esp8266.json Sat Apr 07 14:57:24 2018 +0000 @@ -6,11 +6,11 @@ }, "wifi-ssid": { "help": "WiFi SSID", - "value": "\"SSID\"" + "value": "\"goprofourcade\"" }, "wifi-password": { "help": "WiFi Password", - "value": "\"PASSWORD\"" + "value": "\"goprofourcade\"" }, "wifi-tx": { "help": "TX pin for serial connection to external device",
--- a/wifi-x-nucleo-idw01m1.lib Tue Mar 27 12:45:02 2018 +0100 +++ b/wifi-x-nucleo-idw01m1.lib Sat Apr 07 14:57:24 2018 +0000 @@ -1,1 +1,1 @@ -https://github.com/ARMmbed/wifi-x-nucleo-idw01m1/#5871f7011d7ff2c50e3faf992ebab88e9f69dc95 \ No newline at end of file +https://github.com/ARMmbed/wifi-x-nucleo-idw01m1/#5871f7011d7ff2c50e3faf992ebab88e9f69dc95