Taking photo using GR-LYCHEE through Pelion Device Management.

This firmware project works for GR-LYCHEE and GR-PEACH.

Steps to build this firmware with Mbed CLI

Import project

$ mbed import http://os.mbed.com/users/coisme/code/Pelion-GR-LYCHEE-camera-firmware/

Setting

  • Ethernet (GR-PEACH only)
    • Change the file name mbed_app.RZ_A1H_Ethernet.json to mbed_app.json
  • Wi-Fi
    • Change the Wi-Fi setting in mbed_app.json, i.e. nsapi.default-wifi-ssid and nsapi.default-wifi-password

If you haven't set your Pelion API key, run the following command.

$ mbed config -G CLOUD_SDK_API_KEY <API_KEY>

Setting for Pelion Device Management

$ mbed dm init -d "example.com" --model-name "PELION_DEMO" -q --force

Compile

For GR-LYCHEE:

$ mbed compile -t GCC_ARM -m GR_LYCHEE

For GR-PEACH:

$ mbed compile -t GCC_ARM -m RZ_A1H

Write the created .bin file to your GR-LYCHEE/PEACH.

That's it! :-)

LED Status Indicator

LEDs next to UB0 show the status of your GR-LYCHEE/PEACH.

LED#GR-LYCHEEGR-PEACHStatusDescription
LED1greenredNormalTurned on after the device is registered to Pelion Device Management successfully.
LED2yellowgreenErrorTurned on when the network initialization failed. Check your Wi-Fi setting.
LED3orangeblueErrorTurned on when the Pelion Device Management Client initialization failed. Check your SD card.
LED4redredErrorTurned on when the network is disconnected. Check your Wi-Fi network status.

Clear device identity

If you want to clear the device's identity, connect to the device via serial terminal. Then input r command. The device flushes the identity storage, then reboot.

Known Issues

  • client_error(6) -> Client in reconnection mode NetworkError appears when connecting to network, but eventually connection will be established.
  • Warning message "MBEDTLS_TEST_NULL_ENTROPY has been enabled. This configuration is not secure and is not suitable for production use" appears when compiling the project for GR-PEACH. This can be ignored in development stage.

Files at this revision

API Documentation at this revision

Comitter:
Osamu Koizumi
Date:
Wed Apr 10 13:25:20 2019 +0900
Parent:
15:09a192353257
Child:
17:07576dd58e8c
Commit message:
Correct GREEN LED behavior.

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
diff -r 09a192353257 -r e0cf507dcd5d main.cpp
--- a/main.cpp	Wed Apr 10 12:49:09 2019 +0900
+++ b/main.cpp	Wed Apr 10 13:25:20 2019 +0900
@@ -63,9 +63,6 @@
 MbedCloudClientResource *camera_capture_res;
 
 bool take_photo(uint8_t *photo_data, uint32_t *photo_data_len) {
-    // When taking a photo, RED LED (LED4) lights.
-    DigitalOut led(LED_RED, LED_ON);
-
     JPEG_Converter::bitmap_buff_info_t buff_info;
     JPEG_Converter::encode_options_t   encode_opt;
 
@@ -82,9 +79,7 @@
     encode_opt.input_swapsetting = JPEG_Converter::WR_RD_WRSWA_32_16_8BIT;
 
     dcache_invalid(photo_data, *photo_data_len);
-    JPEG_Converter::jpeg_conv_error_t err = Jcu.encode(&buff_info, photo_data, (size_t *)photo_data_len, &encode_opt);
-    led = LED_OFF;
-    
+    JPEG_Converter::jpeg_conv_error_t err = Jcu.encode(&buff_info, photo_data, (size_t *)photo_data_len, &encode_opt);    
     if(err != JPEG_Converter::JPEG_CONV_OK)
     {
         return false;
@@ -95,14 +90,13 @@
 bool take_and_send_photo() {
     // Send photo data on button click
     uint32_t photo_data_len = sizeof(JpegBuffer);
-    if (take_photo(JpegBuffer, &photo_data_len)) {
+    bool result = take_photo(JpegBuffer, &photo_data_len);
+    if (result) {
         M2MResource* m2m_res = camera_capture_res->get_m2m_resource();
         m2m_res->set_value((const uint8_t *)JpegBuffer, photo_data_len);
-        // success
-        return true;
     }
-    // fail
-    return false;
+
+    return result;
 }
 
 void button_press() {