completed README.md
This commit is contained in:
@@ -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 key components of the Android remote example includes:
|
||||||
|
|
||||||
## The Cloud-SDK
|
## <img src='app/src/main/res/mipmap-xxhdpi/button_home.png' style='padding-top: 12px; height: 32px; width: 20px;'> 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
|
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.
|
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
|
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
|
```xml
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="irext_app_key"
|
android:name="irext_app_key"
|
||||||
android:value="c49c3bd5ff6b3efb67d8af2c" />
|
android:value="c49c3bd5ff6b3efb67d8af2c" />
|
||||||
@@ -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.
|
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
|
## <img src='app/src/main/res/mipmap-xxhdpi/button_power.png' style='padding-top: 12px; height: 32px; width: 20px;'> Use Mobile Phone as Remote Control
|
||||||
After the remote index binary code is downloaded, you can see the remote control panel,
|
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,
|
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.
|
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:
|
By calling API provided by the decode library in order to open and decode remote control binary files into infra-red timing series:
|
||||||
|
|
||||||
```java
|
```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 <img src='app/src/main/res/mipmap-xxhdpi/button_link.png' style='padding-top: 12px; height: 32px; width: 20px;'>
|
**Here you need to manage your AC Status in Android application according to user interactions.**
|
||||||
|
|
||||||
|
## <img src='app/src/main/res/mipmap-xxhdpi/button_link.png' style='padding-top: 12px; height: 32px; width: 20px;'> Working with Arduino Remote Control
|
||||||
There is another example project <a href='https://opensource.irext.net/irext/examples/-/tree/master/arduino-example'>arduino-example</a> which can be co-worked with this
|
There is another example project <a href='https://opensource.irext.net/irext/examples/-/tree/master/arduino-example'>arduino-example</a> which can be co-worked with this
|
||||||
Android APP remote controller.
|
Android APP remote controller.
|
||||||
|
|
||||||
|
|||||||
@@ -1 +1,49 @@
|
|||||||
# IRext Arduino Example
|
# 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.
|
||||||
|
|
||||||
|
<img src="arduino-example.png" style="max-width: 320px;">
|
||||||
|
|
||||||
|
## 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.
|
||||||
BIN
arduino-example/arduino-example.png
Normal file
BIN
arduino-example/arduino-example.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.7 MiB |
Reference in New Issue
Block a user