kintone devCamp 2018 MbedによるIoTエッジデバイス入門 向けサンプルプログラム
Dependencies: C12832 mbed-http
Revision 0:5c7abfb1236c, committed 2018-08-01
- Comitter:
- JKsoft_main
- Date:
- Wed Aug 01 00:02:58 2018 +0000
- Commit message:
- First Release
Changed in this revision
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