kintone devCamp 2018 MbedによるIoTエッジデバイス入門 向けサンプルプログラム

Dependencies:   C12832 mbed-http

Files at this revision

API Documentation at this revision

Comitter:
JKsoft_main
Date:
Wed Aug 01 00:02:58 2018 +0000
Commit message:
First Release

Changed in this revision

.gitignore Show annotated file Show diff for this revision Revisions of this file
C12832.lib Show annotated file Show diff for this revision Revisions of this file
README.md Show annotated file Show diff for this revision Revisions of this file
easy-connect.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed-http.lib Show annotated file Show diff for this revision Revisions of this file
mbed-os.lib Show annotated file Show diff for this revision Revisions of this file
mbed_app.json Show annotated file Show diff for this revision Revisions of this file
ssl_ca_pem.h Show annotated file Show diff for this revision Revisions of this file
diff -r 000000000000 -r 5c7abfb1236c .gitignore
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.gitignore	Wed Aug 01 00:02:58 2018 +0000
@@ -0,0 +1,4 @@
+.build
+.mbed
+projectfiles
+*.py*
diff -r 000000000000 -r 5c7abfb1236c C12832.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/C12832.lib	Wed Aug 01 00:02:58 2018 +0000
@@ -0,0 +1,1 @@
+http://os.mbed.com/users/chris/code/C12832/#7de323fa46fe
diff -r 000000000000 -r 5c7abfb1236c README.md
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/README.md	Wed Aug 01 00:02:58 2018 +0000
@@ -0,0 +1,57 @@
+# Getting started with Blinky on mbed OS
+
+This guide reviews the steps required to get Blinky working on an mbed OS platform.
+
+Please install [mbed CLI](https://github.com/ARMmbed/mbed-cli#installing-mbed-cli).
+
+## Import the example application
+
+From the command-line, import the example:
+
+```
+mbed import mbed-os-example-blinky
+cd mbed-os-example-blinky
+```
+
+### Now compile
+
+Invoke `mbed compile`, and specify the name of your platform and your favorite toolchain (`GCC_ARM`, `ARM`, `IAR`). For example, for the ARM Compiler 5:
+
+```
+mbed compile -m K64F -t ARM
+```
+
+Your PC may take a few minutes to compile your code. At the end, you see the following result:
+
+```
+[snip]
++----------------------------+-------+-------+------+
+| Module                     | .text | .data | .bss |
++----------------------------+-------+-------+------+
+| Misc                       | 13939 |    24 | 1372 |
+| core/hal                   | 16993 |    96 |  296 |
+| core/rtos                  |  7384 |    92 | 4204 |
+| features/FEATURE_IPV4      |    80 |     0 |  176 |
+| frameworks/greentea-client |  1830 |    60 |   44 |
+| frameworks/utest           |  2392 |   512 |  292 |
+| Subtotals                  | 42618 |   784 | 6384 |
++----------------------------+-------+-------+------+
+Allocated Heap: unknown
+Allocated Stack: unknown
+Total Static RAM memory (data + bss): 7168 bytes
+Total RAM memory (data + bss + heap + stack): 7168 bytes
+Total Flash memory (text + data + misc): 43402 bytes
+Image: .\.build\K64F\ARM\mbed-os-example-blinky.bin
+```
+
+### Program your board
+
+1. Connect your mbed device to the computer over USB.
+1. Copy the binary file to the mbed device.
+1. Press the reset button to start the program.
+
+The LED on your platform turns on and off.
+
+## Troubleshooting
+
+If you have problems, you can review the [documentation](https://os.mbed.com/docs/latest/tutorials/debugging.html) for suggestions on what could be wrong and how to fix it.
diff -r 000000000000 -r 5c7abfb1236c easy-connect.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/easy-connect.lib	Wed Aug 01 00:02:58 2018 +0000
@@ -0,0 +1,1 @@
+https://github.com/ARMmbed/easy-connect/#aaf89690919fc378799e680119a58a222402799f
diff -r 000000000000 -r 5c7abfb1236c main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Wed Aug 01 00:02:58 2018 +0000
@@ -0,0 +1,153 @@
+#include "mbed.h"
+#include <sstream>
+#include "easy-connect.h"
+#include "https_request.h"
+#include "ssl_ca_pem.h"
+#include "C12832.h"
+
+C12832 lcd(D11, D13, D12, D7, D10);
+DigitalIn up(A2);
+DigitalIn down(A3);
+DigitalIn left(A4);
+DigitalIn right(A5);
+DigitalIn fire(D4);
+PwmOut spkr(D6);
+
+Serial pc(USBTX,USBRX);
+
+const char API_TOKEN[] = "api-token";
+const char URL[] = "https://{domain}.cybozu.com/k/v1/record.json";
+
+int app_id = 2;
+
+// JSON simplicity parser
+char* j_paser( const char *buf , char *word , char *out )
+{
+    int i = 0;
+    char *p;
+    char _word[64] = "\"\0";
+
+    strcat(_word , word );
+    strcat(_word , "\"" );
+
+    p = strstr( (char*)buf , _word ) + 2 + strlen(_word);
+    
+    while( (p[i] != ',')&&(p[i] != '\n')&&(p[i] != '"') )
+    {
+        out[i] = p[i];
+        i++;
+    }
+    out[i] = '\0';
+    
+    return p;
+}
+
+// main() runs in its own thread in the OS
+int main() {
+    NetworkInterface* network = NULL;
+
+    pc.baud(115200);
+
+    lcd.cls();
+    lcd.locate(0,3);
+    lcd.printf("Network Connect..");
+
+    pc.printf("\r\n----- Start -----\r\n");
+    
+    network = easy_connect(true);    // If true, prints out connection details.
+    if (!network) {
+        lcd.printf("NG");
+        pc.printf("\r\n----- Network Error -----\r\n");
+        return -1;
+    }
+
+    lcd.printf("OK");
+    pc.printf("\r\n----- Network Connected -----\r\n");
+    
+    wait(2.0);
+    
+    while(1){
+        int id = 1;
+        
+        // ID select
+        lcd.cls();
+        lcd.locate(0,3);
+        lcd.printf("Please select id.");
+        while(fire == 0){
+            lcd.locate(0,14);
+            lcd.printf("id = ");
+            if( up == 1) id++;
+            if( down == 1) id--;
+            lcd.printf("%d     ",id);
+            wait(0.2);
+        }
+        
+        lcd.cls();
+        lcd.locate(0,3);
+        lcd.printf("It is polling with the selected id.");
+                
+        // Set url
+        std::stringstream ss_url;
+        std::string s_url(URL);
+        
+        ss_url << s_url << "?app=" << app_id << "&id=" << id;
+        
+        string url = ss_url.str();
+        
+        pc.printf("%s\r\n",url.c_str());
+        
+        while(1){
+            pc.printf("\r\n----- HTTPS GET request -----\r\n");
+            HttpsRequest* get_req = new HttpsRequest(network, SSL_CA_PEM, HTTP_GET, url.c_str());
+            
+            get_req->set_header("X-Cybozu-API-Token", API_TOKEN);
+            
+            HttpResponse* get_res = get_req->send();
+            
+            pc.printf("\n----- HTTPS GET response [%d]-----\n",get_res->get_status_code());
+            
+            if(get_res->get_status_code() == 200){
+                pc.printf("\n----- HTTPS GET response 200 -----\n");
+                const char* body = get_res->get_body_as_string().c_str();
+                
+                pc.printf("%s\r\n",body);
+                
+                // Response JSON parse
+                char value[256];
+                
+                char* p = j_paser(body,"日付",value);
+                j_paser(p,"value",value);
+                printf("date:%s\r\n",value);
+                
+                lcd.cls();
+                lcd.locate(0,3);
+                lcd.printf("Date:%s",value);
+                
+                p = j_paser(body,"文字列__1行_",value);
+                j_paser(p,"value",value);
+                printf("%s\r\n",value);
+                
+                lcd.locate(0,14);
+                lcd.printf("name:%s",value);
+                
+                // Sound an alert
+                spkr.period(1.0/5000.0);
+                spkr=0.5;
+                wait(1.0);
+                spkr=0.0;
+                
+                delete get_req;
+                
+                break;
+            }
+            
+            delete get_req;
+            
+            wait(10.0);
+        }
+        
+        while(fire == 0);
+        wait(1.0);
+    }
+}
+
diff -r 000000000000 -r 5c7abfb1236c mbed-http.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed-http.lib	Wed Aug 01 00:02:58 2018 +0000
@@ -0,0 +1,1 @@
+http://os.mbed.com/teams/sandbox/code/mbed-http/#9a04ed79d67e
diff -r 000000000000 -r 5c7abfb1236c mbed-os.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed-os.lib	Wed Aug 01 00:02:58 2018 +0000
@@ -0,0 +1,1 @@
+https://github.com/ARMmbed/mbed-os/#35fa909641fedcad9bbe0c7300d4ccdf15a2b71a
diff -r 000000000000 -r 5c7abfb1236c mbed_app.json
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed_app.json	Wed Aug 01 00:02:58 2018 +0000
@@ -0,0 +1,59 @@
+{
+    "macros": [
+    ],
+    "config": {
+        "main-stack-size": {
+            "value": 8192
+        },
+        "network-interface":{
+            "help": "options are ETHERNET, WIFI_ESP8266, WIFI_ODIN, WIFI_RTW, MESH_LOWPAN_ND, MESH_THREAD, CELLULAR_ONBOARD",
+            "value": "WIFI_ESP8266"
+        },
+        "mesh_radio_type": {
+            "help": "options are ATMEL, MCR20",
+            "value": "ATMEL"
+        },
+        "esp8266-tx": {
+            "help": "Pin used as TX (connects to ESP8266 RX)",
+            "value": "D1"
+        },
+        "esp8266-rx": {
+            "help": "Pin used as RX (connects to ESP8266 TX)",
+            "value": "D0"
+        },
+        "wifi-ssid": {
+            "value": "\"ssid\""
+        },
+        "wifi-password": {
+            "value": "\"password\""
+        },
+        "esp8266-debug": {
+            "value": null
+        }
+    },
+    "target_overrides": {
+        "*": {
+            "target.features_add": ["NANOSTACK", "LOWPAN_ROUTER", "COMMON_PAL"],
+            "mbed-mesh-api.6lowpan-nd-channel-page": 0,
+            "mbed-mesh-api.6lowpan-nd-channel": 12,
+            "mbed-trace.enable": 0,
+            "platform.stdio-baud-rate": 115200,
+            "platform.stdio-convert-newlines": false
+           },
+        "RZ_A1H": {
+            "target.macros_add": ["MBEDTLS_TEST_NULL_ENTROPY", "MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES"]
+           },
+        "HEXIWEAR": {
+            "esp8266-tx": "PTD3",
+            "esp8266-rx": "PTD2"
+        },
+        "NUCLEO_F401RE": {
+            "esp8266-tx": "D8",
+            "esp8266-rx": "D2"
+        },
+        "NUCLEO_F411RE": {
+            "esp8266-tx": "D8",
+            "esp8266-rx": "D2"
+        }
+    }
+}
diff -r 000000000000 -r 5c7abfb1236c ssl_ca_pem.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ssl_ca_pem.h	Wed Aug 01 00:02:58 2018 +0000
@@ -0,0 +1,29 @@
+const char SSL_CA_PEM[] = "-----BEGIN CERTIFICATE-----\n"
+"MIIFADCCA+igAwIBAgIBBzANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMx\n"
+"EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT\n"
+"HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVs\n"
+"ZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTExMDUwMzA3MDAw\n"
+"MFoXDTMxMDUwMzA3MDAwMFowgcYxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6\n"
+"b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQgVGVj\n"
+"aG5vbG9naWVzLCBJbmMuMTMwMQYDVQQLEypodHRwOi8vY2VydHMuc3RhcmZpZWxk\n"
+"dGVjaC5jb20vcmVwb3NpdG9yeS8xNDAyBgNVBAMTK1N0YXJmaWVsZCBTZWN1cmUg\n"
+"Q2VydGlmaWNhdGUgQXV0aG9yaXR5IC0gRzIwggEiMA0GCSqGSIb3DQEBAQUAA4IB\n"
+"DwAwggEKAoIBAQDlkGZL7PlGcakgg77pbL9KyUhpgXVObST2yxcT+LBxWYR6ayuF\n"
+"pDS1FuXLzOlBcCykLtb6Mn3hqN6UEKwxwcDYav9ZJ6t21vwLdGu4p64/xFT0tDFE\n"
+"3ZNWjKRMXpuJyySDm+JXfbfYEh/JhW300YDxUJuHrtQLEAX7J7oobRfpDtZNuTlV\n"
+"Bv8KJAV+L8YdcmzUiymMV33a2etmGtNPp99/UsQwxaXJDgLFU793OGgGJMNmyDd+\n"
+"MB5FcSM1/5DYKp2N57CSTTx/KgqT3M0WRmX3YISLdkuRJ3MUkuDq7o8W6o0OPnYX\n"
+"v32JgIBEQ+ct4EMJddo26K3biTr1XRKOIwSDAgMBAAGjggEsMIIBKDAPBgNVHRMB\n"
+"Af8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUJUWBaFAmOD07LSy+\n"
+"zWrZtj2zZmMwHwYDVR0jBBgwFoAUfAwyH6fZMH/EfWijYqihzqsHWycwOgYIKwYB\n"
+"BQUHAQEELjAsMCoGCCsGAQUFBzABhh5odHRwOi8vb2NzcC5zdGFyZmllbGR0ZWNo\n"
+"LmNvbS8wOwYDVR0fBDQwMjAwoC6gLIYqaHR0cDovL2NybC5zdGFyZmllbGR0ZWNo\n"
+"LmNvbS9zZnJvb3QtZzIuY3JsMEwGA1UdIARFMEMwQQYEVR0gADA5MDcGCCsGAQUF\n"
+"BwIBFitodHRwczovL2NlcnRzLnN0YXJmaWVsZHRlY2guY29tL3JlcG9zaXRvcnkv\n"
+"MA0GCSqGSIb3DQEBCwUAA4IBAQBWZcr+8z8KqJOLGMfeQ2kTNCC+Tl94qGuc22pN\n"
+"QdvBE+zcMQAiXvcAngzgNGU0+bE6TkjIEoGIXFs+CFN69xpk37hQYcxTUUApS8L0\n"
+"rjpf5MqtJsxOYUPl/VemN3DOQyuwlMOS6eFfqhBJt2nk4NAfZKQrzR9voPiEJBjO\n"
+"eT2pkb9UGBOJmVQRDVXFJgt5T1ocbvlj2xSApAer+rKluYjdkf5lO6Sjeb6JTeHQ\n"
+"sPTIFwwKlhR8Cbds4cLYVdQYoKpBaXAko7nv6VrcPuuUSvC33l8Odvr7+2kDRUBQ\n"
+"7nIMpBKGgc0T0U7EPMpODdIm8QC3tKai4W56gf0wrHofx1l7\n"
+"-----END CERTIFICATE-----\n";
\ No newline at end of file