diff --git a/android-example/README.md b/android-example/README.md
index 922da57..b0b4480 100644
--- a/android-example/README.md
+++ b/android-example/README.md
@@ -4,7 +4,7 @@ This project shows how can you develop an Android APP remote controller quickly.
The key components of the Android remote example includes:
-## The Cloud-SDK
+##
Use The Cloud-SDK to Index Remote
The Cloud SDK calls the Rest API provided by the IRext index service to complete the APP login and
help use indexing targeted remote controller from category to remote index.
@@ -17,7 +17,6 @@ implementation 'net.irext.webapi:irext-androidapi:1.5.2
And then add the meta-data in your AndroidManifest.xml to make the Cloud SDK login to the indexing server for the access token
```xml
-
@@ -29,7 +28,7 @@ And then add the meta-data in your AndroidManifest.xml to make the Cloud SDK log
Follow the examples of calling `mApp.mWeAPIs` in corresponding UI flows in order to find the targeted remote index, download the remote control binary file.
-## Use Mobile Phone as Remote Control
+##
Use Mobile Phone as Remote Control
After the remote index binary code is downloaded, you can see the remote control panel,
by pressing control buttons, the binary code would be decoded into IR timing series. If you have an Android phone with IR transmitter,
you can send the 38KHz infra-red waves directly to control the home appliances.
@@ -39,10 +38,20 @@ As a reference, you need to integrate the IR decode library, see the shared libr
By calling API provided by the decode library in order to open and decode remote control binary files into infra-red timing series:
```java
-
+public int irControl(int category, int subCategory, int keyCode) {
+ int []decoded;
+ StringBuilder debugStr = new StringBuilder();
+ ACStatus acStatus = new ACStatus();
+ int inputKeyCode = ControlHelper.translateKeyCode(category, keyCode, acStatus);
+ decoded = mIRDecode.decodeBinary(inputKeyCode, acStatus);
+ ControlHelper.transmitIr(mContext, decoded);
+ return 0;
+}
```
-## Working with Arduino Remote Control
+**Here you need to manage your AC Status in Android application according to user interactions.**
+
+##
Working with Arduino Remote Control
There is another example project arduino-example which can be co-worked with this
Android APP remote controller.
diff --git a/arduino-example/README.md b/arduino-example/README.md
index 06ed334..22c849c 100644
--- a/arduino-example/README.md
+++ b/arduino-example/README.md
@@ -1 +1,49 @@
# IRext Arduino Example
+
+This is a simple example of how to use IRext with an Arduino UNO R4.
+
+Please follow the diagram below to connect the IR transmitter module to your Arduino or use a breadboard, IR LED and MOSFET.
+
+
+
+## Connect to Wi-Fi
+
+The project uses WiFiS3 library to connect the Arduino UNO R4 WiFi to your local network. You need to configure your WiFi credentials in [src/configure.h](src/configure.h):
+
+```cpp
+#define SECRET_SSID "your_wifi_ssid"
+#define SECRET_PASS "your_wifi_password"
+```
+
+The Arduino connects as a WiFi client (station mode) and starts a TCP server on port 8000 to communicate with external devices, typically an Android application.
+
+## Use TCP Server Socket to Communicate with Android APP
+
+The Arduino runs a TCP server on port 8000 that handles communication with an Android application. The communication protocol includes:
+
+- Hello handshake: [a_hello](src/main.cpp#L32) command initiates connection, responded with [e_hello](src/main.cpp#L33)
+- Binary transmission: [a_bin](src/main.cpp#L34) command sends IR binary data, responded with [e_bin](src/main.cpp#L35)
+- Control commands: [a_control](src/main.cpp#L36) command sends IR control commands, responded with [e_control](src/main.cpp#L37) or success/failure indicators
+- Error handling: [a_error](src/main.cpp#L38) command triggers error response [e_error](src/main.cpp#L39)
+
+The communication is bidirectional - the Android app sends commands to control the IR transmission, and the Arduino responds with status updates.
+
+## Receive IR Binary and Open with IR Decode API
+
+The system receives encoded IR binary data via the TCP protocol. The binary data is Base64-encoded and transmitted in the format:
+`a_bin,[categoryId],[subCategoryId],[length],[binary_data_base64]`
+
+The system decodes the Base64 data and loads it into the IR decoding engine using the `ir_binary_open()` function. This prepares the system to handle specific IR protocols for different device types (air conditioners, TVs, etc.).
+
+## Receive IR Control Command, Decode and Transmit
+
+When a control command is received in the format:
+`a_control,[length],[command_json_base64]`
+
+The system:
+1. Decodes the Base64-encoded JSON command
+2. Parses the control parameters (temperature, power state, modes, etc.)
+3. Uses the IR decode API to generate the appropriate raw IR signal data
+4. Transmits the IR signal using the IRremote library on pin 3
+
+The system supports various IR protocols and device types through its modular decoder architecture located in the [src/ir_decode](src/ir_decode) directory.
\ No newline at end of file
diff --git a/arduino-example/arduino-example.png b/arduino-example/arduino-example.png
new file mode 100644
index 0000000..b382c8f
Binary files /dev/null and b/arduino-example/arduino-example.png differ