This is the multi-page printable view of this section. Click here to print...

Return to the regular view of this page

As of 2025-07-24

TWELITE DIP

Transmit digital and analog signals using the Extremely Simple! Standard App
The Extremely Simple! Wireless Module TWELITE DIP is a product with TWELITE mounted on a 2.54mm pitch board. It is suitable for prototyping and small-scale production because it can be easily wired by hand.
Appearance

Appearance

Ready-to-Use Wireless Module

Extremely Simple! Standard App

TWELITE DIP comes with the Extremely Simple! Standard App (App_Twelite) installed at the time of shipment.

The Extremely Simple! Standard App is firmware that transmits digital and analog signals.

DigitalAnalogUARTI2C
One side’s digital input reflected to the other’s digital outputOne side’s analog input reflected to the other’s PWM outputOne side’s serial input reflected to the other’s serial outputAccess the target of the child device from the parent device

Quick Manual (PDF)

Simple Wireless Communication

TWELITE can communicate immediately after startup. Pairing like Bluetooth is not required.

Broadcast communication is performed between devices set to the same frequency channel. Therefore, multiple devices cannot transmit simultaneously on the same channel. Packets not addressed to the device are ignored. You can think of it as working like a transceiver or intercom.

TWELITE can transmit without receiving, enabling the realization of devices with excellent power-saving performance.

Although it is not suitable for large-volume data communication, it is optimal for simple signal transmission and similar applications.

Pin Functions

Pin Layout Table

Pin Layout Table

The pins used by the Extremely Simple! Standard App have several functions.

  • Power input (3.3V)
    • VCC/GND 2.3-3.6V
  • Digital/analog input/output
    • DIx reflected to DOx
    • AIx reflected to PWMx
  • Serial communication
    • TX/RX UART
    • SCL/SDA I2C
  • Configuration input
    • Mx to switch operating mode
    • BPS to select alternative baud rate
  • RST Reset input

x: Any number

1 - Getting Started

Transmit digital and analog signals using the Extremely Simple! Standard App
Extremely Simple! The Extremely Simple! Standard App (App_Twelite) allows you to achieve basic signal transmission just by wiring.

Products Used

TWELITE DIP
TWELITE Parent / Child / Repeater
Extremely Simple! Standard App
2 units (3 units when using a Repeater)

One-Way Signal Transmission

Signals input to the Parent can be output from the Child.

Digital Signal

Pressing the switch connected to the Parent lights the LED connected to the Child, and releasing the switch on the Parent turns off the LED on the Child.

Parent Wiring

Parent Wiring

Child Wiring

Child Wiring

In the above example, only DI1 and DO1 are used, but there are a total of 4 ports. Other ports can be used similarly.

Analog Signal

Turning the potentiometer connected to the Parent changes the brightness of the LED connected to the Child.

Parent Wiring

Parent Wiring

Child Wiring

Child Wiring

In the above example, only AI1 and PWM1 are used, but there are a total of 4 ports. Other ports can be used similarly.

Two-Way Signal Transmission

Signal transmission can be performed not only from Parent to Child but also from Child to Parent in the same way.

Let’s extend the digital signal transmission example to two-way. The analog signal transmission example can be extended similarly.

Pressing the switch connected to the Parent lights the LED connected to the Child, and releasing the switch on the Parent turns off the LED on the Child. At the same time, pressing the switch connected to the Child lights the LED connected to the Parent, and releasing the switch on the Child turns off the LED on the Parent.

Parent Wiring

Parent Wiring

Child Wiring

Child Wiring

In the above example, only DI1 and DO1 are used, but there are a total of 4 ports. Other ports can be used similarly.

Installing a Repeater

By placing a unit configured as a Repeater between the Parent and Child, communication distance can be extended. Up to 3 stages of repeaters can be used.

Repeater Wiring

Repeater Wiring

Connect M2 to GND.

2 - Customization via Interactive Mode

Customize functionality using Interactive Mode
By using Interactive Mode, you can change various parameters such as network grouping and enabling low latency mode.

What is Interactive Mode

Interactive Mode is a mode used when connecting the TWELITE series to a PC for configuration. By connecting the TWELITE series to a PC via a USB adapter TWELITE R series, you can change various parameters through UART communication.

Custom Examples

Below are customization examples of TWELITE DIP for different purposes.

Please select and try the ones you are interested in.

Network Grouping

By default, all TWELITE DIP devices can communicate with each other. When you prepare two pairs of parent and child devices, the inputs of the parent are reflected to both children, and the inputs of the children are reflected to both parents.

Using Interactive Mode, change the Application ID and frequency channel to separate the two pairs so they can be used independently at the same time.

Products Used

TWELITE DIPTWELITE R2
TWELITE Parent / ChildUSB Adapter
Extremely Simple! Standard App-
4 units1 unit

Customization Details

Set the Interactive Mode values as follows to divide the two pairs into Group A and Group B.

Customization Procedure

  1. Insert the TWELITE DIP into the TWELITE R2 and connect it to the PC using a USB-C cable
  2. Launch the TWELITE STAGE app and select the target TWELITE R2 from Serial Port Selection
  3. From the Main Menu, select “3: Interactive Mode
  4. Press uppercase R to reset settings to default
  5. Press a, input AAAAAAAA / BBBBBBBB, and press Enter
  6. Press c, input 11 / 26, and press Enter
  7. Press uppercase S to apply settings (TWELITE will reset)
  8. Press ESC several times to return to the Main Menu and disconnect the TWELITE R2 USB-C cable
  9. Remove the TWELITE DIP and insert it into a breadboard or connect it to the circuit

Operation Check

Wire both Group A and Group B as in the “Try It Out First” One-Way Digital Signal Example, connecting a switch to the parent and an LED to the child.

  • Pressing the switch on Group A’s parent lights only Group A’s child LED
  • Pressing the switch on Group B’s parent lights only Group B’s child LED

Change the Application ID of Group B’s child to 0xAAAAAAAA and the frequency channel to 11.

  • Pressing the switch on Group A’s parent lights LEDs on both children

Using Low Latency Mode

By default, there is a delay of about 30-70ms from when the source DIx changes until it is reflected on the destination DOx. This delay exists due to processing to avoid chattering and wireless packet interference.

Low Latency Mode shortens this delay to about 3-10ms by simplifying these processes.

Enable low latency mode on the transmitting device (parent) via Interactive Mode.

Products Used

TWELITE DIPTWELITE R2
TWELITE Parent / ChildUSB Adapter
Extremely Simple! Standard App-
2 units1 unit

Customization Details

Set the Interactive Mode values as follows to enable low latency mode on the transmitting device (parent).

Customization Procedure

  1. Insert the TWELITE DIP into the TWELITE R2 and connect it to the PC using a USB-C cable
  2. Launch the TWELITE STAGE app and select the target TWELITE R2 from Serial Port Selection
  3. From the Main Menu, select “3: Interactive Mode
  4. Press uppercase R to reset settings to default
  5. Press o, input 00000001, and press Enter
  6. Press uppercase S to apply settings (TWELITE will reset)
  7. Press ESC several times to return to the Main Menu and disconnect the TWELITE R2 USB-C cable
  8. Remove the TWELITE DIP and insert it into a breadboard or connect it to the circuit

Operation Check

Wire the parent and child as in the “Try It Out First” One-Way Digital Signal Example, connecting a switch to the parent and an LED to the child.

  • Pressing the parent’s switch lights the child’s LED
  • The operation is the same as the default state, but you might notice slightly improved response
  • Connect an oscilloscope to the parent’s DO1 and child’s DI1 to compare and confirm the effect

Transmit Only When Button is Pressed

By default, transmission occurs when the input state changes and also once every second.

In this case, for example, if the transmitting device’s button is held down and the power is cut, the output on the receiving side remains.

The Transmit Only When Button is Pressed setting causes the transmitting device to repeatedly send when DIx is Low, and continue sending for one second after transitioning to High. If the receiving device’s DOx is set Low and reception stops, it returns to High.

Change the setting via Interactive Mode to transmit only when the button is pressed.

Products Used

TWELITE DIPTWELITE R2
TWELITE Parent / ChildUSB Adapter
Extremely Simple! Standard App-
2 units1 unit

Customization Details

Set the Interactive Mode values as follows to change the behavior of digital input/output on the transmitting device (parent) and receiving device (child).

Customization Procedure

  1. Insert the TWELITE DIP into the TWELITE R2 and connect it to the PC using a USB-C cable
  2. Launch the TWELITE STAGE app and select the target TWELITE R2 from Serial Port Selection
  3. From the Main Menu, select “3: Interactive Mode
  4. Press uppercase R to reset settings to default
  5. Press o, input 00000100, and press Enter
  6. Press uppercase S to apply settings (TWELITE will reset)
  7. Press ESC several times to return to the Main Menu and disconnect the TWELITE R2 USB-C cable
  8. Remove the TWELITE DIP and insert it into a breadboard or connect it to the circuit

Operation Check

Wire the parent and child as in the “Try It Out First” One-Way Digital Signal Example, connecting a switch to the parent and an LED to the child.

  • Pressing the parent’s switch lights the child’s LED
  • If the parent’s switch is held down and the power supply is cut off, the child’s LED turns off (it does not turn off in the default state)

3 - PC Integration via UART

Connect the Parent to a PC and send/receive data via UART
By using UART communication, you can integrate the Parent with a PC.

Products Used

TWELITE DIPTWELITE R2
TWELITE Parent/ChildUSB Adapter
Extremely Simple! Standard App-
2 units1 unit

Note: The TWELITE DIP and TWELITE R2 pair is functionally equivalent to a single MONOSTICK. You may also use the following combination:

TWELITE DIPMONOSTICK
TWELITE ChildTWELITE Parent
Extremely Simple! Standard AppParent/Repeater App
1 unit1 unit

Installing the TWELITE STAGE App

The TWELITE STAGE app is a tool that offers features for configuring and writing firmware, as well as evaluating communication with the Parent.

The TWELITE STAGE app is included in the TWELITE STAGE SDK.

Receiving Data with the TWELITE STAGE App

The data sent from the Child running the Extremely Simple! Standard App includes information such as the input state of the DIx/AIx ports, power supply voltage, and the logical device ID of the sender.

Displaying Serial Strings

Data received by the Parent from the Child can be obtained by interpreting the strings output by the Parent over serial (UART). Let’s display this string first.

Start the TWELITE STAGE app and select the Parent in Serial Port Selection. Then open Main Menu > 1: Viewer > 1: Terminal.

When data is received from the Child, a message like the following will be displayed:

:78811501C98201015A000391000C2E00810301FFFFFFFFFB

By interpreting such strings output by the Parent, you can obtain the data sent by the Child.

The strings output by the TWELITE Parent follow the format below:

HeaderPayloadChecksumFooter
:repeated 00-FFLRC8 of payloadCRLF
  • All ASCII characters*
  • Starts with : (0x3A)
  • Ends with CRLF (\r\n/0x0D 0x0A)
  • Big-endian

*Except for binary format in serial communication apps

Standard App Viewer

The above format is machine-friendly, but to check the content as a human, you need to interpret it. The TWELITE STAGE app provides a function to interpret and display strings representing data sent from Children running the Extremely Simple! Standard App. The Python library described below also performs this interpretation.

Return to Main Menu > 1: Viewer, and open 2: Standard App Viewer.

You can check the timestamp, logical device ID, serial ID, and the values of DIx/AIx.

Standard App Viewer screen

Standard App Viewer screen

Sending Data with the TWELITE STAGE App

Conversely, you can send wireless packets from the Parent to the Child to change the output state of the Child.

Commander

Return to Main Menu > 1: Viewer, and open 5: Commander.

You can send packets simulating DIx and AIx inputs.

Commander screen

Commander screen

How to use:

  • Select the destination and input state
  • Click Send

Python Scripts

Both the “Standard App Viewer” and “Commander” in the TWELITE STAGE app simply exchange strings over serial communication. If you have an environment that supports serial communication, you can integrate your own application with the Parent.

By leveraging Python scripts, you can process and save received data, or control output ports from your own software.

Installing the MWings Library

The MWings library makes it easy to integrate TWELITE and Python scripts. Specifically, it interprets strings representing data received from the Child and constructs data to be sent to the Child.

It can be installed from PyPI.

Receiving Data with a Python Script

Let’s implement a Python script that displays a message when a button connected to DI1 on the TWELITE DIP is pressed.

Running the Sample Script

Create a script named dip_show_di1.py with the following content:

# -*- coding:utf-8 -*-
# TWELTIE DIP start guide: receiving in python

import mwings as mw


def main():
    twelite = mw.Twelite(mw.utils.ask_user_for_port())

    @twelite.on(mw.common.PacketType.APP_TWELITE)
    def on_app_twelite(packet):
        if packet.di_state[0]:
            print("DI1 Pressed")

    try:
        twelite.daemon = True
        twelite.start()
        print("Started receiving")
        while True:
            twelite.join(0.5)
    except KeyboardInterrupt:
        print("Flushing...")
        twelite.stop()
        print("Completed")


if __name__ == "__main__":
    main()

When you run the script, it will output DI1 Pressed when the Child’s DI1 goes Low.

If multiple TWELITE R series or MONOSTICK series devices are connected at runtime, select the serial port attached to the Parent.


poetry run python dip_show_di1.py
Multiple ports detected.
[1] /dev/cu.usbserial-R2xxxxxx TWE-Lite-R (Genuine)
[2] /dev/cu.usbserial-R2xxxxxx TWE-Lite-R (Genuine)
Select [1-2]: 2
Selected: /dev/cu.usbserial-R2xxxxxx
Started receiving
DI1 Pressed
DI1 Pressed
^CFlushing...
Completed

The above is an example for macOS. On Windows, COM port names are displayed.

Explanation of the Sample Script

Importing the MWings Library

import mwings as mw

The library is imported as the shorthand mw, similar to pandas as pd or numpy as np.

Creating the Object

    twelite = mw.Twelite(mw.utils.ask_user_for_port())

This creates a Twelite object, which serves as the interface for communicating with the Parent.

You specify the serial port as an argument, but here we use the mw.utils.ask_user_for_port() utility to select it dynamically. This function outputs an error message if no serial port exists, returns the port if only one is found, or prompts the user if multiple are present.

Registering a Receive Event Handler

    @twelite.on(mw.common.PacketType.APP_TWELITE)
    def on_app_twelite(packet):
        if packet.di_state[0]:
            print("DI1 Pressed")

This registers an event handler that is called when a packet is received from a Child running the Extremely Simple! Standard App.

Event handler registration uses a Python decorator (?). Here, since we are targeting data from the Extremely Simple! Standard App (App_Twelite), we use @twelite.on(mw.common.PacketType.APP_TWELITE). The function defined immediately after this decorator becomes the handler. The function name can be anything, but it must be defined after initializing the Twelite object.

To detect when the Child’s DI1 becomes Low, the receive handler checks the first boolean value in the List-like object di_state (digital interface state) of the packet variable (mwings.parsers.app_twelite.ParsedPacket). Each value in di_state is True when Low.

Waiting for Data

        twelite.daemon = True
        twelite.start()
        print("Started receiving")
        while True:
            twelite.join(0.5)

Here, the script waits for data from the Parent in a separate thread.

The Twelite object is a subclass of threading.Thread, and this mechanism launches a daemon thread, blocking the main thread until the script ends.

Cleanup

        print("Flushing...")
        twelite.stop()
        print("Completed")

When Ctrl-C is pressed, twelite.stop() is called to terminate the subthread.

Sending Data with a Python Script

Next, let’s implement a Python script to blink an LED connected to DO1 on the TWELITE DIP from the PC.

Running the Sample Script

Create a script named dip_blink_led.py with the following content:

# -*- coding:utf-8 -*-
# TWELITE DIP start guide: blinking from python

from time import sleep

import mwings as mw


def main():
    twelite = mw.Twelite(mw.utils.ask_user_for_port())

    initial = {
        "destination_logical_id": 0x78,
        "di_to_change": [True, False, False, False],
        "di_state": [False, False, False, False],
    }
    command = mw.serializers.app_twelite.Command(**initial)

    while True:
        command.di_state[0] = not command.di_state[0]
        twelite.send(command)
        print(f"Flip DO1: {command.di_state[0]}")
        sleep(1)


if __name__ == "__main__":
    try:
        main()
    except KeyboardInterrupt:
        print("...Aborting")

When you run the script, the Child’s DO1 will blink every second.

If multiple TWELITE R series or MONOSTICK series devices are connected at runtime, select the serial port attached to the Parent.


poetry run python dip_blink_led.py
Multiple ports detected.
[1] /dev/cu.usbserial-R2xxxxxx TWE-Lite-R (Genuine)
[2] /dev/cu.usbserial-R2xxxxxx TWE-Lite-R (Genuine)
Select [1-2]: 2
Selected: /dev/cu.usbserial-R2xxxxxx
Flip DO1: True
Flip DO1: False
Flip DO1: True
Flip DO1: False
Flip DO1: True
^C...Aborting

Explanation of the Sample Script

Importing the MWings Library

import mwings as mw

The library is imported as the shorthand mw, similar to pandas as pd or numpy as np.

Creating the Object

    twelite = mw.Twelite(mw.utils.ask_user_for_port())

This creates a Twelite object, which serves as the interface for communicating with the Parent.

You specify the serial port as an argument, but here we use the mw.utils.ask_user_for_port() utility to select it dynamically. This function outputs an error message if no serial port exists, returns the port if only one is found, or prompts the user if multiple are present.

Creating the Command to Send to the Parent

    initial = {
        "destination_logical_id": 0x78,
        "di_to_change": [True, False, False, False],
        "di_state": [False, False, False, False],
    }
    command = mw.serializers.app_twelite.Command(**initial)

This initializes a command object (mwings.serializers.app_twelite.Command), which represents the packet to be sent to a Child running the Extremely Simple! Standard App.

The dictionary initial represents the initial state of the command. Here, the destination logical device ID is set to 0x78 (all Children), with DI1 as the target for change, and initially set to High.

Sending the Data

    while True:
        command.di_state[0] = not command.di_state[0]
        twelite.send(command)
        print(f"Flip DO1: {command.di_state[0]}")
        sleep(1)

Here, the command data is converted to a string and sent to the Parent every second.

Blinking is achieved by toggling the first boolean value in the List-like object di_state (digital interface state) of the command data, which controls the state of DOx.

4 - Transmitting Binary Data

Transmit arbitrary bytes via UART communication
By using the Serial Communication App, you can send and receive arbitrary binary data.

Products Used

TWELITE DIPTWELITE R2
TWELITE Parent/ChildUSB Adapter
Serial Communication App-
2 units2 units

Note: The TWELITE DIP and TWELITE R2 pair is equivalent to a single MONOSTICK. The following combination is also acceptable.

MONOSTICK
TWELITE Parent/Child
Serial Communication App
2 units

Serial Communication App

Rewrite the TWELITE firmware to the Serial Communication App (App_Uart), which is specialized for wireless serial communication. While the “Extremely Simple! Standard App” also has a function for transmitting binary data via serial communication, its functionality is very limited.

Writing Firmware

Rewrite all Parent, Child, and Repeater devices.

  1. Install the TWELITE STAGE SDK and launch the TWELITE STAGE App
  2. From Serial Port Selection, select the connected device
  3. From the “Main Menu”, select “2: App Write
  4. Choose “1: Select from BIN” and select App_Uart...
  5. Press Enter several times until the write is complete

List of Communication Modes

The Serial Communication App provides five communication modes, allowing you to select the most suitable one for your application.

By default, the app starts in Header Transparent Mode.

Below, we introduce communication test procedures using four of these modes. Please select and try the mode that interests you.

  • Header Transparent Mode
    • No format is applied on the transmitting side.
    • The receiver’s output format provides information such as the logical device ID of the sender and the received radio signal quality.
    • This is a well-balanced mode.
  • Transparent Mode
    • No format is applied to either transmission or reception.
    • The input on the transmitting side and the output on the receiving side are equivalent.
    • This is the simplest mode, but functionality is limited.
  • Format Mode (ASCII)
    • Applies a format to both transmission and reception.
    • Requires external devices to support the format, but allows you to specify the destination and identify the sender.
    • Binary data is represented as hexadecimal strings.
  • Format Mode (Binary)
    • Applies a format to both transmission and reception.
    • Requires external devices to support the format, but allows you to specify the destination and identify the sender.
    • Binary data is represented as-is.

In this example, we will connect two TWELITEs to the same PC and loop back data. Normally, you would use this to connect external devices wirelessly.

Header Transparent Mode

Let’s use Header Transparent Mode to send the ASCII string Hello from both sides.

How to Configure

The default mode of the Serial Communication App is Header Transparent Mode. Therefore, you can use it as-is with the initial settings.

Communication Test

1. Launch Two TWELITE STAGE Apps

Start two instances of the TWELITE STAGE App (TWELITE_Stage.exe/.command/.run).

2. Open the Terminal

After selecting the serial port on both TWELITE STAGE Apps, choose “1: Viewer” > “1: Terminal”.

3. Send from One Side

Select one of the windows, type Hello, and press Enter. The message will appear in the other window.

Send from One Side

Send from One Side

4. Send from the Other Side

Select the other window, type Hello, and press Enter. The message will appear in the original window.

Send from the Other Side

Send from the Other Side

Transparent Mode

Let’s try sending the ASCII string Hello from both sides using Transparent Mode.

How to Configure

Set m: Communication Mode to D.

Communication Test

1. Launch Two TWELITE STAGE Apps

Start two instances of the TWELITE STAGE App (TWELITE_Stage.exe/.command/.run).

2. Open the Terminal

In both TWELITE STAGE Apps, after selecting the serial port, choose “1: Viewer” > “1: Terminal”.

3. Send from One Side

Select one of the windows, type Hello, and press Enter. The message will appear in the other window.

Send from One Side

Send from One Side

4. Send from the Other Side

Select the other window, type Hello, and press Enter. The message will appear in the original window.

Send from the Other Side

Send from the Other Side

Since no formatting is applied to either input or output, the data you enter is output as-is.

Hello

Format Mode (ASCII)

Let’s use Format Mode (ASCII) to send the binary data 0x5A 0xAB 0x90 0x00 from both sides.

Saab 9000 CD 2.3

Saab 9000 CD 2.3

How to Configure

Set m: Communication Mode to A.

Set i: Logical Device ID to 0 (Parent) on one device, and to 1 (Child, ID 1) on the other.

Communication Test (Simple Format)

Let’s first try the simple, basic format.

1. Launch Two TWELITE STAGE Apps

Start two instances of the TWELITE STAGE App (TWELITE_Stage.exe/.command/.run).

2. Open the Terminal

After selecting the serial port in both TWELITE STAGE Apps, choose “1: Viewer” > “1: Terminal”.

3. Send from the Parent Side

First, copy the following sequence:

:01235AAB900047

Next, select the Parent side window.

Finally, paste with Alt+V/⌘+V and press Enter. The data will be reflected on the Child side window.

Send from Parent Side

Send from Parent Side

4. Send from the Child Side

First, copy the following sequence:

:00235AAB900048

Next, select the Child side window.

Finally, paste with Alt+V/⌘+V and press Enter. The data will be reflected on the Parent side window.

Send from Child Side

Send from Child Side

Communication Test (Extended Format)

Next, let’s try the advanced extended format.

1. Launch Two TWELITE STAGE Apps

Start two instances of the TWELITE STAGE App (TWELITE_Stage.exe/.command/.run).

2. Open the Terminal

After selecting the serial port in both TWELITE STAGE Apps, choose “1: Viewer” > “1: Terminal”.

3. Send from the Parent Side

First, copy the following sequence:

:01A0CDFF5AAB9000FE

Next, select the Parent side window.

Finally, paste using Alt+V/⌘+V and press Enter. The data will appear in the Child side window.

Send from Parent Side

Send from Parent Side

4. Send from the Child Side

First, copy the following sequence:

:00A0CDFF5AAB9000FF

Next, select the Child side window.

Finally, paste using Alt+V/⌘+V and press Enter. The data will appear in the Parent side window.

Send from Child Side

Send from Child Side

Format Mode (Binary)

Let’s use Format Mode (Binary) to send the binary data 0x5A 0xAB 0x90 0x00 from both sides.

Saab 9000 CD 2.3

Saab 9000 CD 2.3

How to Configure

Set m: Communication Mode to B.

Set the i: Logical Device ID to 0 (Parent) on one terminal, and to 1 (Child, ID 1) on the other.

Prepare an Environment that Supports Binary Data

The terminal features of the TWELITE STAGE App and TeraTerm do not support binary data. You need to use a terminal software that supports binary format.

Here, we use CoolTerm as an example.

Communication Test (Simple Format)

Let’s first try the simple, basic format.

1. Open Two CoolTerm Windows

Open two CoolTerm windows and connect each to a device.

To display received data in hexadecimal, select View > View Hex. Click Connect to connect.

Two CoolTerm windows open

Two CoolTerm windows open

2. Send from the Parent Side

Select the Parent window, then choose Connection > Send String... to open the send window, and select the Hex radio button.

Send window open

Send window open

Enter the following and click Send to transmit from the Parent.

A5 5A 80 06 01 23 5A AB 90 00 43 04
Send from Parent Side

Send from Parent Side

3. Sending from the Child Side

Just as with the Parent, select the Child window, then go to Connection > Send String... to open the send window, and make sure the Hex radio button is selected.

Enter the following content and click Send to transmit to the Parent.

A5 5A 80 06 00 23 5A AB 90 00 42 04
Send from Child Side

Send from Child Side

Communication Test (Extended Format)

Next, let’s try the advanced extended format.

1. Open Two CoolTerm Windows

Open two CoolTerm windows and connect each to a device.

To display received data in hexadecimal, select View > View Hex. Click Connect to connect.

Two CoolTerm windows open

Two CoolTerm windows open

2. Send from the Parent Side

Select the Parent window, then choose Connection > Send String... to open the send window, and select the Hex radio button.

Send window open

Send window open

Enter the following and click Send to transmit to the Child.

A5 5A 80 08 01 A0 CD FF 5A AB 90 00 F2 04
Send from Parent Side

Send from Parent Side

3. Send from the Child Side

As with the Parent, select the Child window, then go to Connection > Send String... to open the send window, and make sure the Hex radio button is selected.

Enter the following and click Send to transmit to the Parent.

A5 5A 80 08 00 A0 CD FF 5A AB 90 00 F3 04
Send from Child Side

Send from Child Side

5 - Advanced Digital Transmission with Remote Control App

Use the Remote Control App to access advanced features specialized for digital signals
By writing the firmware from Extremely Simple! Standard App (App_Twelite) to the Remote Control App (App_IO), you can access advanced features specialized for digital signals.

Products Used

TWELITE DIPTWELITE R2
TWELITE Parent/ChildUSB Adapter
Extremely Simple! Standard App-
2 units1 unit

Remote Control App

Write the TWELITE firmware to the Remote Control App (App_IO), which is specialized for digital signal transmission. While the Extremely Simple! Standard App supports digital signal transmission, its I/O is limited to 4 lines. The Remote Control App expands the number of I/O and allows you to switch their combinations.

Writing the Firmware

Write the firmware to all Parent, Child, and other devices as follows:

  1. Install the TWELITE STAGE SDK and launch the TWELITE STAGE App
  2. Select the connected device from Serial Port Selection
  3. From the Main Menu, select 2: Firmware Write
  4. Select 1: Select from BIN and choose App_IO...
  5. Press Enter several times until writing is complete

Try It Out

By default, the Remote Control App is configured for one-way transmission, with the Child having 12 digital input ports and the Parent having 12 digital output ports. Let’s do the wiring.

NameChildParentStandardDIP #
I1/O5I1O5DI115
I2/O6I2O6DI216
I3/O7I3O7DI317
I4/O8I4O8DI418
I5/O1I5O1DO15
I6/O2I6O2DO28
I7/O3I7O3DO39
I8/O4I8O4DO412
I9/O9I9O9SCL2
I10/O10I10O10SDA19
I11/O11I11O11PWM14
I12/O12I12O12PWM411

Parent Wiring

In the default state, the Parent can receive up to 12 digital signals.

Parent wiring diagram

Parent wiring diagram

In the diagram above, DIP pin 9 (O3) is used as an output, but other Ox pins can be used similarly. To test the channel override function, which is not available in the Extremely Simple! Standard App, a tactile switch is connected to DIP pin 23 (C1).

Child Wiring

In the default state, the Child can send up to 12 digital signals.

Child wiring diagram

Child wiring diagram

In the diagram above, DIP pin 17 (I3) is used as an input, but other Ix pins can be used similarly. Similarly, to test the channel override function, a tactile switch is connected to DIP pin 23 (C1).

Operation Check

  • Press and release the button connected to the Child’s I3.
    • The LED connected to the Parent’s O3 will turn on and off accordingly.
  • While pressing the button connected to the Child’s C1, press and release the button on I3.
    • Communication will not occur because the Child’s frequency channel is temporarily overridden.
  • While pressing the buttons connected to both the Parent’s and Child’s C1, press and release the button connected to the Child’s I3.
    • Communication will resume because both Parent and Child frequency channels are overridden to match.

Using Advanced Features

Let’s try changing settings in Interactive Mode for the following scenarios:

  • Change the I/O assignment so both Child and Parent have 6 inputs and 6 outputs each
  • Reflect the Child’s input to the Parent as quickly as possible
  • Restore output signals if packets are lost
  • Use the Child as a low-power remote
  • Use the Child as a low-power remote supporting continuous transmission by long press

Assigning 6 Inputs and 6 Outputs to Both Child and Parent

By changing the value of Option Bits in Interactive Mode, you can select the I/O assignment from the following options:

Child InputChild OutputParent InputParent OutputNote
120012Default
8448Option Bit 0x00001000
6666Option Bit 0x00002000
012120Option Bit 0x00003000

Let’s set both devices to have 6 inputs and 6 outputs.

  1. Launch the TWELITE STAGE App
  2. Select the connected device from Serial Port Selection
  3. From the Main Menu, select 3: Interactive Mode
  4. Press Enter and confirm that the settings list is shown
  5. Enter o (lowercase), input the Option Bits value 00002000, and press Enter
  6. Enter S (uppercase) to save, then press ESC to exit

Now, the assignment with both Child and Parent having 6 inputs and 6 outputs will be as follows:

NameChildParentStandardDIP #
I1/O5I1I1DI115
I2/O6I2I2DI216
I3/O7I3I3DI317
I4/O8I4I4DI418
I5/O1O1O1DO15
I6/O2O2O2DO28
I7/O3O3O3DO39
I8/O4O4O4DO412
I9/O9O5I5SCL2
I10/O10O6I6SDA19
I11/O11I5O5PWM14
I12/O12I6O6PWM411

Reflecting Child Input to Parent Output as Fast as Possible

When using the Child’s continuous mode, there is usually a delay of about 30-70ms from Child input to Parent output. If you need faster response, set Option Bits 0x00000001: Low Latency Mode via Interactive Mode.

Child Settings

  1. Launch the TWELITE STAGE App
  2. Select the connected device from Serial Port Selection
  3. From the Main Menu, select 3: Interactive Mode
  4. Press Enter and confirm that the settings list is shown
  5. Enter o (lowercase), input the Option Bits value 00000001, and press Enter
  6. Enter S (uppercase) to save, then press ESC to exit

Restoring Output Signals When Packets Are Lost

If radio communication is interrupted while any input is held Low, the output will remain Low even if the actual input returns to High.

To return the signal to its original state when packets are lost, enable Remote Long Press Mode. In this mode, after the sending side input changes, the signal is sent continuously for a while. On the receiving side, if no packet indicating a Low state is received for a certain period, the output times out and returns to High.

Child Settings

  1. Set M1/M2/M3 open, and set Child: Continuous Mode
  2. Launch the TWELITE STAGE App
  3. Select the connected device from Serial Port Selection
  4. From the Main Menu, select 3: Interactive Mode
  5. Press Enter and confirm that the settings list is shown
  6. Enter o (lowercase), input the Option Bits value 00000100 and press Enter
  7. Enter d (lowercase), input the hold/long-press target (for example, 000000001010 for I2 and I4), and press Enter
  8. Enter D (uppercase), input the hold/long-press time (the duration to continue sending after all inputs return from Low to High), and press Enter
  9. Enter S (uppercase) to save, then press ESC to exit

Parent Settings

  1. Set M1/M2/M3 open, and set Child: Continuous Mode
  2. Launch the TWELITE STAGE App
  3. Select the connected device from Serial Port Selection
  4. From the Main Menu, select 3: Interactive Mode
  5. Press Enter and confirm that the settings list is shown
  6. Enter o (lowercase), input the Option Bits value 00000100 and press Enter
  7. Enter d (lowercase), input the hold/long-press target (for example, 000000001010 for O2 and O4), and press Enter
  8. Enter D (uppercase), input the hold/long-press time (the duration to return the output from Low to High after signal loss), and press Enter
  9. Enter S (uppercase) to save, then press ESC to exit

Using the Child as a Low Power Remote

If the Child is battery-powered, intermittent mode, which alternates sleep and wake, is effective. By combining Low Latency Mode and Hold Mode, the Parent’s output can be maintained for a set time when the Child’s button is pressed.

Child Settings

  1. Connect M1/M2/M3 to GND and set Child: Intermittent 10s Mode
  2. Launch the TWELITE STAGE App
  3. Select the connected device from Serial Port Selection
  4. From the Main Menu, select 3: Interactive Mode
  5. Press Enter and confirm that the settings list is shown
  6. Enter o (lowercase), input the Option Bits value 00000001 and press Enter
  7. Enter S (uppercase) to save, then press ESC to exit

Parent Settings

  1. Set M1/M2/M3 open, and set Child: Continuous Mode
  2. Launch the TWELITE STAGE App
  3. Select the connected device from Serial Port Selection
  4. From the Main Menu, select 3: Interactive Mode
  5. Press Enter and confirm that the settings list is shown
  6. Enter d (lowercase), input the hold/long-press target (for example, 000000001010 for O2 and O4), and press Enter
  7. Enter D (uppercase), input the hold/long-press time (hold time), and press Enter
  8. Enter S (uppercase) to save, then press ESC to exit

Using the Child as a Low Power Remote with Long Press

If the Child is battery-powered, intermittent mode is effective. By combining Low Latency Mode and Remote Long Press Mode, the Child can continuously send data to the Parent while a button is held. Even after the button is released, the Child continues sending for a set period, and on the Parent side, if radio packets indicating the button remains pressed are lost for a set period, the output returns to its original state. This ensures reliable delivery of the Child’s input even in low-power operation.

Child Settings

  1. Connect M1/M2/M3 to GND and set Child: Intermittent 10s Mode
  2. Launch the TWELITE STAGE App
  3. Select the connected device from Serial Port Selection
  4. From the Main Menu, select 3: Interactive Mode
  5. Press Enter and confirm that the settings list is shown
  6. Enter o (lowercase), input the Option Bits value 00000103 (00000100+00000001+00000002), and press Enter
  7. Enter d (lowercase), input the hold/long-press target (for example, 000000001010 for I2 and I4), and press Enter
  8. Enter D (uppercase), input the hold/long-press time (the duration to continue sending after all inputs return from Low to High), and press Enter
  9. Enter S (uppercase) to save, then press ESC to exit

Parent Settings

  1. Set M1/M2/M3 open, and set Child: Continuous Mode
  2. Launch the TWELITE STAGE App
  3. Select the connected device from Serial Port Selection
  4. From the Main Menu, select 3: Interactive Mode
  5. Press Enter and confirm that the settings list is shown
  6. Enter o (lowercase), input the Option Bits value 00000100 and press Enter
  7. Enter d (lowercase), input the hold/long-press target (for example, 000000001010 for O2 and O4), and press Enter
  8. Enter D (uppercase), input the hold/long-press time (the duration to return the output from Low to High after signal loss), and press Enter
  9. Enter S (uppercase) to save, then press ESC to exit