This is a mbed Client sample where ZXing is incorporated, and works on GR-PEACH and GR-LYCHEE.
Dependencies: DisplayApp AsciiFont
Overview
This sample program shows how to use mbed Client together with ZXing which is an open-source, multi-format 1D/2D barcode image processing library. For more info on ZXing, please refer to https://github.com/zxing/zxing.
Required hardware
- GR-PEACH ( https://developer.mbed.org/platforms/Renesas-GR-PEACH/ )
- Audio Camera Shield ( https://developer.mbed.org/teams/Renesas/wiki/Audio_Camera-shield )
- LCD Shield ( https://developer.mbed.org/teams/Renesas/wiki/LCD-shield )
- Ethernet cable and connection to the internet
- Wireless Camera shieled (This is GR-PEACH' Wifi(ESP32) optional.)
- GR-LYCHEE ( https://developer.mbed.org/platforms/Renesas-GR-LYCHEE/ )
Application setup
- Select the connection type. For details, please refer to the following wiki:
https://os.mbed.com/teams/Renesas/code/GR-PEACH_mbed-os-client-ZXingSample/wiki/Connection-type. - Set the client credentials. For details, please refer to the following wiki:
https://os.mbed.com/teams/Renesas/code/GR-PEACH_mbed-os-client-ZXingSample/wiki/Client-credentials. - Change Ethernet settings. For details, please refer to the following wiki:
https://developer.mbed.org/teams/Renesas/code/GR-PEACH_mbed-os-client-ZXingSample/wiki/Ethernet-settings. - Change Wifi settings. For details, please refer to the following wiki:
https://os.mbed.com/teams/Renesas/code/GR-PEACH_mbed-os-client-ZXingSample/wiki/Wifi-settings. - Set up an IP address. (This step is optional.) For details, please refer to the following wiki:
https://os.mbed.com/teams/Renesas/code/GR-PEACH_mbed-os-client-ZXingSample/wiki/IP-address-setup.
Building the example
To build this example:
- Import this example onto mbed Compiler.
- Configure the example in accordance with Application setup.
- Compile the example on mbed Compiler and download the resultant binary file.
- Plug the Ethernet cable into GR-PEACH or GR-LYCHEE if you are using Ethernet mode.
- Plug the micro-USB cable into the OpenSDA port which lies on the next to the RESET button.
- Copy the binary previously downloaded to your PC to GR-PEACH or GR-LYCHEE to flash this example. When the copy is successfully completed, the board is ready to work.
- Press the RESET button on the board to run the example.
- For verification, please refer to the following wiki:
https://developer.mbed.org/teams/Renesas/code/GR-PEACH_mbed-os-client-ZXingSample/wiki/Monitoring-the-application.
Application resources
This example exposes four resources listed below:
- 3202/0/5700. Decode result of barcode data input from camera (GET).
- 3201/0/5850. Blink function, blinks LED when executed (POST).
- 3201/0/5853. Blink pattern, used by the blink function to determine how to blink. In the format of 1000:500:1000:500:1000:500 (PUT).
- 3201/0/5855. Blink color, used by the blink function. Any of red, green, blue, cyan, yellow and magenta is acceptable if you are using GR-PEACH board (PUT).
- 3201/0/5855. Blink color, used by the blink function. Any of green, yellow, orange and red is acceptable if you are using GR-LYCHEE board (PUT).
For more info on how to get notifications when resource 1 changes, or how to use resource 2, 3 and 4, please look at
Import programGR-PEACH_mbed-connector-ZXingSample-node
Node.js based Web Application for mbed Device Connector specific to GR-PEACH_mbed-os-client-ZXingSample
README.md@6:ea24d9271ff1, 2018-12-13 (annotated)
- Committer:
- 1050186
- Date:
- Thu Dec 13 08:28:47 2018 +0000
- Revision:
- 6:ea24d9271ff1
- Parent:
- 2:6ec5c1c1d41c
Update each library(Mbed OS 5.9.7, mbed-os-client).
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
<> | 0:eb73febb2bba | 1 | # Getting started with mbed Client on mbed OS |
<> | 0:eb73febb2bba | 2 | |
<> | 0:eb73febb2bba | 3 | This is the mbed Client example for mbed OS (we also have one for [Linux](https://github.com/ARMmbed/mbed-client-linux-example)). It demonstrates how to register a device with mbed Device Connector, how to read and write values, and how to deregister. If you are unfamiliar with mbed Device Connector, we recommend that you read [the introduction to the data model](https://docs.mbed.com/docs/mbed-device-connector-web-interfaces/en/latest/#the-mbed-device-connector-data-model) first. |
<> | 0:eb73febb2bba | 4 | |
<> | 0:eb73febb2bba | 5 | The application: |
<> | 0:eb73febb2bba | 6 | |
<> | 0:eb73febb2bba | 7 | * Connects to network with WiFi or Ethernet. |
<> | 0:eb73febb2bba | 8 | * Registers with mbed Device Connector. |
<> | 0:eb73febb2bba | 9 | * Gives mbed Device Connector access to its resources (read and write). |
<> | 0:eb73febb2bba | 10 | * Records the number of clicks on the device’s button and sends the number to mbed Device Connector. |
<> | 0:eb73febb2bba | 11 | * Lets you control the blink pattern of the LED on the device (through mbed Device Connector). |
<> | 0:eb73febb2bba | 12 | |
<> | 0:eb73febb2bba | 13 | ## Required hardware |
<> | 0:eb73febb2bba | 14 | |
<> | 0:eb73febb2bba | 15 | * [Renesas GR-PEACH](https://developer.mbed.org/platforms/Renesas-GR-PEACH/). |
<> | 0:eb73febb2bba | 16 | * 1-2 micro-USB cables. |
<> | 0:eb73febb2bba | 17 | * Ethernet cable and connection to the internet. |
<> | 0:eb73febb2bba | 18 | |
<> | 0:eb73febb2bba | 19 | ## Requirements for Renesas GR-PEACH |
<> | 0:eb73febb2bba | 20 | * To get the application registering successfully on non K64F boards , you need Edit the `mbed_app.json` file to add `NULL_ENTROPY` feature for mbedTLS: |
<> | 0:eb73febb2bba | 21 | |
<> | 0:eb73febb2bba | 22 | ``` |
dkato | 2:6ec5c1c1d41c | 23 | "RZ_A1H": { |
dkato | 2:6ec5c1c1d41c | 24 | "target.macros_add": ["MBEDTLS_TEST_NULL_ENTROPY", "MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES"] |
dkato | 2:6ec5c1c1d41c | 25 | }, |
<> | 0:eb73febb2bba | 26 | ``` |
<> | 0:eb73febb2bba | 27 | |
<> | 0:eb73febb2bba | 28 | ## Required software |
<> | 0:eb73febb2bba | 29 | |
<> | 0:eb73febb2bba | 30 | * [ARM mbed account](https://developer.mbed.org/account/login/?next=/). |
<> | 0:eb73febb2bba | 31 | * [mbed-cli](https://github.com/ARMmbed/mbed-cli) - to build the example programs. To learn how to build mbed OS applications with mbed-cli, see [the user guide](https://github.com/ARMmbed/mbed-cli/blob/master/README.md). |
<> | 0:eb73febb2bba | 32 | * [Serial port monitor](https://developer.mbed.org/handbook/SerialPC#host-interface-and-terminal-applications). |
<> | 0:eb73febb2bba | 33 | |
<> | 0:eb73febb2bba | 34 | ## Application setup |
<> | 0:eb73febb2bba | 35 | |
<> | 0:eb73febb2bba | 36 | To configure the example application, please: |
<> | 0:eb73febb2bba | 37 | |
<> | 0:eb73febb2bba | 38 | 1. [Select the connection type](#connection-type). |
<> | 0:eb73febb2bba | 39 | 1. [Set the client credentials](#client-credentials). |
<> | 0:eb73febb2bba | 40 | 1. [Change Ethernet settings](#ethernet-settings). |
<> | 0:eb73febb2bba | 41 | 1. [Change Wi-Fi settings](#wi-fi-settings). |
<> | 0:eb73febb2bba | 42 | 1. [Set up an IP address](#ip-address-setup). This step is optional. |
<> | 0:eb73febb2bba | 43 | |
<> | 0:eb73febb2bba | 44 | ### Connection type |
<> | 0:eb73febb2bba | 45 | |
dkato | 2:6ec5c1c1d41c | 46 | The application uses "NO_CONNECT" as the default connection type. To change the connection type, set one of them in `mbed_app.json`. For example, to enable Ethernet mode: |
<> | 0:eb73febb2bba | 47 | |
<> | 0:eb73febb2bba | 48 | ```json |
dkato | 2:6ec5c1c1d41c | 49 | "network-interface":{ |
dkato | 2:6ec5c1c1d41c | 50 | "help": "Options are ETHERNET, WIFI_ESP8266, WIFI_BP3595, NO_CONNECT", |
dkato | 2:6ec5c1c1d41c | 51 | "value": "ETHERNET" |
dkato | 2:6ec5c1c1d41c | 52 | }, |
<> | 0:eb73febb2bba | 53 | ``` |
<> | 0:eb73febb2bba | 54 | |
<> | 0:eb73febb2bba | 55 | ### Client credentials |
<> | 0:eb73febb2bba | 56 | |
<> | 0:eb73febb2bba | 57 | To register the application to the Connector service, you need to create and set the client side certificate. |
<> | 0:eb73febb2bba | 58 | |
<> | 0:eb73febb2bba | 59 | 1. Go to [mbed Device Connector](https://connector.mbed.com) and log in with your mbed account. |
<> | 0:eb73febb2bba | 60 | 1. On mbed Device Connector, go to [My Devices > Security credentials](https://connector.mbed.com/#credentials) and click the **Get my device security credentials** button to get new credentials for your device. |
<> | 0:eb73febb2bba | 61 | 1. Replace the contents in `security.h` of this project's directory with content copied above. |
<> | 0:eb73febb2bba | 62 | |
<> | 0:eb73febb2bba | 63 | ### Ethernet settings |
<> | 0:eb73febb2bba | 64 | |
<> | 0:eb73febb2bba | 65 | For running the example application using Ethernet, you need: |
<> | 0:eb73febb2bba | 66 | |
<> | 0:eb73febb2bba | 67 | - An Ethernet cable. |
<> | 0:eb73febb2bba | 68 | - An Ethernet connection to the internet. |
dkato | 2:6ec5c1c1d41c | 69 | - MAC address setting. To set MAC address, add fllowing function to main.cpp. (When using Wifi, setting of MAC address is not necessary.) |
dkato | 2:6ec5c1c1d41c | 70 | ``` |
dkato | 2:6ec5c1c1d41c | 71 | // set mac address |
dkato | 2:6ec5c1c1d41c | 72 | void mbed_mac_address(char *mac) { |
dkato | 2:6ec5c1c1d41c | 73 | mac[0] = 0x00; |
dkato | 2:6ec5c1c1d41c | 74 | mac[1] = 0x02; |
dkato | 2:6ec5c1c1d41c | 75 | mac[2] = 0xF7; |
dkato | 2:6ec5c1c1d41c | 76 | mac[3] = 0xF0; |
dkato | 2:6ec5c1c1d41c | 77 | mac[4] = 0x00; |
dkato | 2:6ec5c1c1d41c | 78 | mac[5] = 0x00; |
dkato | 2:6ec5c1c1d41c | 79 | } |
dkato | 2:6ec5c1c1d41c | 80 | ``` |
<> | 0:eb73febb2bba | 81 | |
<> | 0:eb73febb2bba | 82 | ### IP address setup |
<> | 0:eb73febb2bba | 83 | |
dkato | 2:6ec5c1c1d41c | 84 | This example uses IPv4 to communicate with the [mbed Device Connector Server](https://api.connector.mbed.com) except for 6LoWPAN ND and Thread. |
dkato | 2:6ec5c1c1d41c | 85 | The example program should automatically get an IP address from the router when connected over Ethernet or WiFi. |
<> | 0:eb73febb2bba | 86 | If your network does not have DHCP enabled, you have to manually assign a static IP address to the board. We recommend having DHCP enabled to make everything run smoothly. |
<> | 0:eb73febb2bba | 87 | |
<> | 0:eb73febb2bba | 88 | ## Building the example |
<> | 0:eb73febb2bba | 89 | |
dkato | 2:6ec5c1c1d41c | 90 | To build the example using mbed CLI: |
<> | 0:eb73febb2bba | 91 | |
<> | 0:eb73febb2bba | 92 | 1. Open a command line tool and navigate to the project’s directory. |
dkato | 2:6ec5c1c1d41c | 93 | |
dkato | 2:6ec5c1c1d41c | 94 | 2. Import this example: |
dkato | 2:6ec5c1c1d41c | 95 | |
dkato | 2:6ec5c1c1d41c | 96 | ``` |
dkato | 2:6ec5c1c1d41c | 97 | mbed import http://mbed.org/teams/Renesas/code/GR-PEACH_mbed-os-client-ZXingSample/ |
dkato | 2:6ec5c1c1d41c | 98 | ``` |
dkato | 2:6ec5c1c1d41c | 99 | |
dkato | 2:6ec5c1c1d41c | 100 | 3. To build the application, select the hardware board and build the toolchain using the command: |
dkato | 2:6ec5c1c1d41c | 101 | |
dkato | 2:6ec5c1c1d41c | 102 | ``` |
dkato | 2:6ec5c1c1d41c | 103 | mbed compile -m RZ_A1H -t GCC_ARM -c |
dkato | 2:6ec5c1c1d41c | 104 | ``` |
dkato | 2:6ec5c1c1d41c | 105 | |
dkato | 2:6ec5c1c1d41c | 106 | mbed CLI builds a binary file under the project’s `BUILD/` directory. |
dkato | 2:6ec5c1c1d41c | 107 | |
dkato | 2:6ec5c1c1d41c | 108 | 4. Plug the Ethernet cable into the board if you are using Ethernet mode. |
dkato | 2:6ec5c1c1d41c | 109 | |
dkato | 2:6ec5c1c1d41c | 110 | 5. Plug the micro-USB cable into the **OpenSDA** port. The board is listed as a mass-storage device. |
dkato | 2:6ec5c1c1d41c | 111 | |
1050186 | 6:ea24d9271ff1 | 112 | 6. Drag the binary `BUILD/RZ_A1H/GCC_ARM/XXXXXXXX.bin` to the board to flash the application. |
dkato | 2:6ec5c1c1d41c | 113 | |
dkato | 2:6ec5c1c1d41c | 114 | 7. The board is automatically programmed with the new binary. A flashing LED on it indicates that it is still working. When the LED stops blinking, the board is ready to work. |
dkato | 2:6ec5c1c1d41c | 115 | |
dkato | 2:6ec5c1c1d41c | 116 | 8. Press the **Reset** button on the board to run the program. |
dkato | 2:6ec5c1c1d41c | 117 | |
dkato | 2:6ec5c1c1d41c | 118 | 9. For verification, continue to the [Monitoring the application](#monitoring-the-application) chapter. |
<> | 0:eb73febb2bba | 119 | |
<> | 0:eb73febb2bba | 120 | ## Monitoring the application |
<> | 0:eb73febb2bba | 121 | |
<> | 0:eb73febb2bba | 122 | The application prints debug messages over the serial port, so you can monitor its activity with a serial port monitor. The application uses baud rate 115200. |
<> | 0:eb73febb2bba | 123 | |
<> | 0:eb73febb2bba | 124 | <span class="notes">**Note:** Instructions to set this up are located [here](https://developer.mbed.org/handbook/SerialPC#host-interface-and-terminal-applications).</span> |
<> | 0:eb73febb2bba | 125 | |
<> | 0:eb73febb2bba | 126 | |
<> | 0:eb73febb2bba | 127 | ``` |
1050186 | 6:ea24d9271ff1 | 128 | Starting mbed Client example |
dkato | 2:6ec5c1c1d41c | 129 | [EasyConnect] Using Ethernet |
dkato | 2:6ec5c1c1d41c | 130 | [EasyConnect] Connected to Network successfully |
1050186 | 6:ea24d9271ff1 | 131 | [EasyConnect] IP address xxx.xxx.xxx.xxx |
1050186 | 6:ea24d9271ff1 | 132 | [EasyConnect] MAC address xx:xx:xx:xx:xx:xx |
<> | 0:eb73febb2bba | 133 | |
dkato | 2:6ec5c1c1d41c | 134 | SOCKET_MODE : TCP |
<> | 0:eb73febb2bba | 135 | Connecting to coap://api.connector.mbed.com:5684 |
<> | 0:eb73febb2bba | 136 | |
1050186 | 6:ea24d9271ff1 | 137 | Registered object successfully! |
<> | 0:eb73febb2bba | 138 | ``` |
<> | 0:eb73febb2bba | 139 | |
<> | 0:eb73febb2bba | 140 | <span class="notes">**Note:** Device name is the endpoint name you will need later on when [testing the application](https://github.com/ARMmbed/mbed-os-example-client#testing-the-application) chapter.</span> |
<> | 0:eb73febb2bba | 141 | |
<> | 0:eb73febb2bba | 142 | When the barcode data is successfully decoded, you should see the decoded string. |
<> | 0:eb73febb2bba | 143 | |
<> | 0:eb73febb2bba | 144 | ## Testing the application |
<> | 0:eb73febb2bba | 145 | |
<> | 0:eb73febb2bba | 146 | 1. Flash the application. |
<> | 0:eb73febb2bba | 147 | 1. Verify that the registration succeeded. You should see `Registered object successfully!` printed to the serial port. |
<> | 0:eb73febb2bba | 148 | 1. On mbed Device Connector, go to [My devices > Connected devices](https://connector.mbed.com/#endpoints). Your device should be listed here. |
<> | 0:eb73febb2bba | 149 | 1. Input the barcode data via camera. (If the decode is successfully carried out, decoded string should be uploaded onto mbed Device Connector) |
<> | 0:eb73febb2bba | 150 | 1. Go to [Device Connector > API Console](https://connector.mbed.com/#console). |
<> | 0:eb73febb2bba | 151 | 1. Enter `https://api.connector.mbed.com/endpoints/DEVICE_NAME/3202/0/5700` in the URI field and click **TEST API**. Replace `DEVICE_NAME` with your actual endpoint name. The device name can be found in the `security.h` file, see variable `MBED_ENDPOINT_NAME` or it can be found from the traces [Monitoring the application](https://github.com/ARMmbed/mbed-os-example-client#monitoring-the-application). |
<> | 0:eb73febb2bba | 152 | 1. Decoded string is shown. |
<> | 0:eb73febb2bba | 153 | |
<> | 0:eb73febb2bba | 154 | ![Decoded String, as shown by the API Console](zxing.png) |
<> | 0:eb73febb2bba | 155 | |
<> | 0:eb73febb2bba | 156 | <span class="tips">**Tip:** If you get an error, for example `Server Response: 410 (Gone)`, clear your browser's cache, log out, and log back in.</span> |
<> | 0:eb73febb2bba | 157 | |
<> | 0:eb73febb2bba | 158 | <span class="notes">**Note:** Only GET methods can be executed through [Device Connector > API Console](https://connector.mbed.com/#console). For other methods check the [mbed Device Connector Quick Start](https://github.com/ARMmbed/mbed-connector-api-node-quickstart). |
<> | 0:eb73febb2bba | 159 | |
<> | 0:eb73febb2bba | 160 | ### Application resources |
<> | 0:eb73febb2bba | 161 | |
dkato | 2:6ec5c1c1d41c | 162 | The application exposes four [resources](https://docs.mbed.com/docs/mbed-device-connector-web-interfaces/en/latest/#the-mbed-device-connector-data-model): |
<> | 0:eb73febb2bba | 163 | |
<> | 0:eb73febb2bba | 164 | 1. `3202/0/5700`. Decoded String of Barcode Data (GET). |
<> | 0:eb73febb2bba | 165 | 2. `3201/0/5850`. Blink function, blinks `LED1` when executed (POST). |
<> | 0:eb73febb2bba | 166 | 3. `3201/0/5853`. Blink pattern, used by the blink function to determine how to blink. In the format of `1000:500:1000:500:1000:500` (PUT). |
dkato | 2:6ec5c1c1d41c | 167 | 4. `3201/0/5855`. Blink color, used by the blink function. Any of `red`, `green`, `blue`, `cyan`, `yellow` and `magenta` is acceptable (PUT). |
<> | 0:eb73febb2bba | 168 | |
<> | 0:eb73febb2bba | 169 | For information on how to get notifications when resource 1 changes, or how to use resources 2 and 3, take a look at the [mbed Device Connector Quick Start](https://github.com/Osamu-Nakamura/mbed-connector-api-node-quickstart). |