1# UART REPL Example
2
3(See the README.md file in the upper level 'examples' directory for more information about examples.)
4
5This example demonstrates how to use REPL console on a different UART than the default one.
6It also shows how to connect these two UART together, either for testing or for sending commands
7without any human interaction.
8
9## How to use example
10
11### Hardware Required
12
13The example can be run on any ESP board that have at least 2 UARTs. The development board shall be connected to a
14PC with a single USB cable for flashing and monitoring. If you are willing to monitor the console UART, you may use
15a 3.3V compatible USB-to-Serial dongle on its GPIO pin.
16
17### Setup the Hardware
18
19No external connection is needed in order to run the example. However, as stated before, if you are willing to see what
20is going on on the second UART (console UART), you can connect pins CONSOLE_UART_TX_PIN (5 by default) and
21CONSOLE_UART_RX_PIN (4 by default) to a Serial-to-USB adapter.
22
23### Configure the project
24
25The default values, located at the top of `main/uart_repl_example_main.c` can be changed such as:
26DEFAULT_UART_CHANNEL, CONSOLE_UART_CHANNEL, DEFAULT_UART_RX_PIN, DEFAULT_UART_TX_PIN, CONSOLE_UART_RX_PIN,
27CONSOLE_UART_TX_PIN, UARTS_BAUD_RATE, TASK_STACK_SIZE, and READ_BUF_SIZE.
28
29### Build and Flash
30
31Build the project and flash it to the board, then run monitor tool to view default UART's serial output:
32
33```
34idf.py -p PORT flash monitor
35```
36
37(To exit the serial monitor, type ``Ctrl-]``.)
38
39See the Getting Started Guide for full steps to configure and use ESP-IDF to build projects.
40
41## Example Output
42
43The example will set up the default UART to use DEFAULT_UART_RX_PIN and DEFAULT_UART_TX_PIN. Then, it will set up
44the REPL console on the second UART. Finally, it will connect both UARTs together in order to let default UART
45be able to send commands and receive replies to and from the console UART.
46
47Here is a diagram of what UARTs will look like:
48
49```
50                  UART default      UART console
51
52USB monitoring <------ TX -----------> RX----+
53                                             v
54                                       Parse command
55                                     and output result
56                                             |                 Optional 3.3V
57                       RX <----------- TX<---+  (----------->) Serial-to-USB
58                                                                  Adapter
59```
60
61If everything goes fine, the output on default UART should be "Result: Success". Else, it should be "Result: Failure".