Wireless Communication Made Easy: Connecting Your Jetson Nano with HC-05 Bluetooth Module or Wi-Fi…
Communication protocols in embedded systems:
Wireless Communication Made Easy: Connecting Your Jetson Nano with HC-05 Bluetooth Module or Wi-Fi — Part 1

Communication protocols in embedded systems:
What are communication protocols?
Think of communication protocols in embedded systems as languages spoken between different devices. Just like how humans speak different languages to communicate with one another, devices in embedded systems also use different communication protocols to “talk” to each other. Each protocol has its own “language” with a specific set of rules and standards that govern how devices communicate. Just like how humans need to understand and speak the same language to communicate effectively, devices need to use the same protocol to exchange data. For example, imagine you have a group of friends who all speak different languages. If you want to communicate with each of them, you’ll need to learn each of their languages. Similarly, if you have a microcontroller that needs to communicate with different devices using different protocols, it needs to be able to “speak” all of those protocols. Some languages are better suited for certain situations. For example, if you need to communicate with someone who is far away, it might be better to use a language that is easier to understand over long distances. Similarly, if you need to transmit data quickly, you might use a protocol that is designed for high-speed communication.
In summary, communication protocols in embedded systems are like languages that devices use to communicate with each other. Understanding and using the right protocol is essential for effective communication between devices.
Communication protocols categories
Imagine you are a superhero and you have to save the world by communicating with different people from different countries who speak different languages. To do this, you need to use different communication protocols, just like embedded systems use different communication protocols to communicate with each other.
First, you can categorize communication protocols based on the way data is transmitted:
- Serial communication protocols are like talking to someone one word at a time.
- Parallel communication protocols are like talking to someone in full sentences.
Next, you can categorize communication protocols based on how fast they can transmit data:
- Low-speed communication protocols are like talking slowly and clearly.
- High-speed communication protocols are like talking fast.
You can also categorize communication protocols based on the distance they can transmit data:
- Short-range communication protocols are like talking to someone standing next to you.
- Medium-range communication protocols are like talking to someone across the room.
- Long-range communication protocols are like talking to someone on the other side of the city.
Another way to categorize communication protocols is based on whether they are wired or wireless:
- Wired communication protocols are like talking to someone through a phone or a wire.
- Wireless communication protocols are like talking to someone through a walkie-talkie.
Finally, you can categorize communication protocols based on the application they are designed for. Just like how different people speak different languages depending on where they are from or what they do, different embedded systems use different communication protocols depending on the application they are used for.
By understanding these different categories of communication protocols, you can choose the right protocol for the right application, just like a superhero who can speak all the languages needed to save the world!
Protocols Types
Let’s think of embedded systems communication protocols as different ways of sending messages between two people. Just like people use different methods to send messages, devices in an embedded system also use different communication protocols to send and receive data.
First, there are protocols like UART, I2C, and SPI that serially send data, bit by bit. It’s like sending a message one letter at a time, and these protocols are often used for short distances or low data rates.
Next, there are parallel communication protocols like ISA, PCI, and PCIe, where data is sent over multiple lines simultaneously. It’s like sending a message in multiple words at the same time, which allows for faster transmission rates.
Then, there are protocols like Ethernet, USB, and PCIe that are used for high-speed communication over longer distances. It’s like sending a message with a lot of information at once, and these protocols are often used for applications like video streaming or large data transfers.
We also have protocols like CAN and RS-485 that are used for communication over medium-range distances, often used in industrial applications. These are like sending a message with a specific format and structure to ensure the message is received correctly.
Finally, there are wireless communication protocols like Wi-Fi, Bluetooth, and ZigBee, where data is sent through the air using radio waves. It’s like sending a message through a walkie-talkie, and these protocols are often used for mobile devices or applications where wires are impractical.
In summary, embedded systems communication protocols are like different ways of sending messages, with each protocol having its strengths and weaknesses depending on the specific requirements of the application.
Jetson NANO Wireless Communication
To enable communication between your Jetson NANO and your Android-based mobile application, you will need to choose a communication protocol that is appropriate for your specific application. In our case, we will be using wireless communication, either via Bluetooth or WIFI. However, it’s important to note that the hardware module used to interface with the Jetson NANO for wireless communication may require a different communication protocol type. For example, to send data from Jetson Nano to Mobile and vice-versa, this is how the communication needs to be established in wireless mode if the Jetson doesn’t contain an internal wireless communication module (Bluetooth or WIFI):

Now, let’s delve into the process of interfacing the Jetson NANO with Bluetooth or WIFI hardware modules!
Option A: Bluetooth communication — HC05 interfacing with Jetson NANO
What’s UART?
UART stands for Universal Asynchronous Receiver-Transmitter. It’s a type of communication protocol that allows two devices to exchange data with each other. UART sends data bit-by-bit over a single wire, so it’s often used for short-range communication between devices. Baudrate, on the other hand, is the speed at which data is transmitted over the UART communication protocol. It’s measured in bits per second (bps) and determines how fast the data can be sent and received between the two devices. To put it simply, the baud rate is like the speed limit on a highway. Just like how the speed limit determines how fast cars can travel on a highway, the baud rate determines how fast data can be sent and received over the UART communication protocol. If two devices want to communicate using UART, they must agree on a common baud rate beforehand. This ensures that they both know how fast they need to send and receive data to communicate effectively.
For example, if two devices agree on a baud rate of 9600 bps, it means that they can send and receive 9600 bits of data per second. If they try to communicate at a higher baud rate, the data may be sent too quickly for the receiving device to keep up, leading to errors in communication.
In summary, UART is a communication protocol that sends data bit-by-bit over a single wire, and baud rate is the speed at which data is transmitted over this protocol. It’s like the speed limit on a highway and determines how fast data can be sent and received between two devices.
How Bluetooth Module HC05 communicates

The HC-05 is a Bluetooth module that enables wireless communication between two devices. It uses Bluetooth as its communication protocol, which is a wireless technology that allows devices to communicate over short distances. The HC-05 module operates as a slave device and can be paired with a master device such as a smartphone or a PC. Once paired, the two devices can exchange data wirelessly using the Bluetooth protocol.
The HC-05 module supports several Bluetooth communication profiles, including the Serial Port Profile (SPP) and the Audio/Video Remote Control Profile (AVRCP). The SPP profile allows the HC-05 module to act as a serial port over Bluetooth, enabling two devices to communicate using the UART protocol. This means that the HC-05 module can be used to replace a wired UART connection with a wireless Bluetooth connection.
To use the HC-05 module for wireless communication, you’ll need to connect it to your microcontroller or other embedded system. The module has several pins, including TX and RX for UART communication, and can be powered using a 5V power supply.
In summary, the HC-05 module uses the Bluetooth protocol for wireless communication between two devices. It supports several Bluetooth communication profiles, including the SPP profile for serial communication. The module can be connected to a microcontroller or other embedded system using the UART protocol for wireless communication.
Solution1: interface the Bluetooth direct with Jetson NANO TX and RX
Material needed:
- Jetson Nano
- HC-05 Bluetooth module
- Female-to-female jumper wires
Important info to be careful about:
- The UART-A pins are located on the 40-pin expansion header, pins 8 (UART_TX) and 10 (UART_RX). The default baud rate for UART-A on the Jetson Nano is 115200.
- Before going further with the following steps, shut down your Jetson Nano if it’s running.
Steps:
- Connect the TX pin of HC-05 to the RX pin of Jetson Nano using a female wire.
- Connect the RX pin of HC-05 to the TX pin of Jetson Nano using another female wire.
- Connect the GND pin of HC-05 to the GND pin of Jetson Nano using another female wire.
- Connect the VCC pin of HC-05 to the 5V pin of Jetson Nano using another female wire.
- Power on our Jetson Nano and open a terminal window.
- Check the serial ports available on the Jetson Nano by running this command:
ls /dev/tty*
- You should see a list of available serial ports. Note the name of the port that corresponds to Jetson’s UART maybe like that /dev/ttyTHS1
- Open a serial terminal on the Jetson Nano using the screen command:
screen /dev/ttyTHS1 115200
- The serial terminal should now be open and ready to receive data from the HC-05 module.
To test the communication between the Jetson Nano and the HC-05 module, you can send data from the Jetson Nano to the HC-05 module using the serial terminal. Type in some text and press Enter. The text should be transmitted wirelessly to the HC-05 module and can be received by another device that’s paired with the module.
In summary, interfacing the HC-05 Bluetooth module with the Jetson Nano using direct TX and RX connections involves connecting the module’s TX and RX pins to the Jetson Nano’s RX and TX pins, respectively, and powering the module using a 5V power source. The communication can be tested using a serial terminal on the Jetson Nano.
Troubleshooting:
If the ttyTHS1 is not listed may be one of these problems is the root cause:
- Check the wiring: Make sure the connections between the HC-05 module and the Jetson Nano are correct.
- Check that the TX pin of the HC-05 module is connected to the RX pin of the Jetson Nano, and vice versa.
- Check that the ground pin of the HC-05 module is connected to the ground pin of the Jetson Nano.
- Check the power supply: Make sure that the HC-05 module is powered using a 5V power source.
- Check that the power supply is providing a stable voltage.
- Check the baud rate: Make sure that the baud rate of the serial terminal matches the baud rate of the HC-05 module. The default baud rate of the HC-05 module is 9600.
- Check the Jetson Nano’s UART configuration: Make sure that the Jetson Nano’s UART is enabled and configured correctly. You can check the configuration using the command
sudo stty -F /dev/ttyTHS1 -a
- Make sure that the baud rate, parity, and stop bits are set correctly.
- Check if the Jetson Nano is using a different UART port: The Jetson Nano may be using a different UART port. You can check for other available serial ports by running the command
ls /dev/tty*
The Bluetooth serial port may be listed with a different name, such as ttyS0 or ttyACM0.
- If none of these troubleshooting steps work, there may be an issue with the HC-05 module or the Jetson Nano’s UART. In that case, you may need to try a different Bluetooth module or consult the documentation for the Jetson Nano to see if there are any known issues with UART communication. Or try any of the upcoming solutions.
Solution2: interface the Bluetooth with Jetson NANO via TTL
What’s TTL?

TTL stands for Transistor-Transistor Logic, which is a type of digital logic circuit used in many embedded systems. We can use it to transfer from USB to serial communication.
Materials:
- Jetson Nano
- HC-05 Bluetooth module
- Jumper wires ( Female — Female wires)
- USB to TTL converter
- 5V power supply
Before starting make sure the Jetson Nano is powered off.
Steps:
- Connect the VCC pin of the HC-05 module to the 5V pin of the Jetson Nano.
- Connect the GND pin of the HC-05 module to the GND pin of the Jetson Nano.
- Connect the TX pin of the HC-05 module to the RX pin of the USB to TTL converter.
- Connect the RX pin of the HC-05 module to the TX pin of the USB to TTL converter.
- Connect the USB to TTL converter to the Jetson Nano using a USB cable.
- Power on the Jetson Nano.
Open a terminal program on your Jetson Nano, such as a minicom or screen, and configure it to use the serial port associated with the USB to TTL converter (e.g. /dev/ttyUSB0).
- (Skip this step if you already have a minicom on Jetson Nano) Install minicom
sudo apt-get install minicom
- Identify the device name of your TTL device by running the following command:
dmesg | grep tty
This command will display a list of devices connected to your Jetson Nano. Look for the device name that corresponds to your TTL device, such as /dev/ttyUSB0.
- Open the Minicom configuration file by running the following command:
If nano is not found or not installed, please install it and continue.
sudo nano /etc/minicom/minirc.dfl
- In the configuration file, find the line that starts with #device=/dev/modem and uncomment it by removing the # symbol at the beginning of the line.
- Replace the device name in the configuration file with the device name of your TTL device. For example, if your TTL device is /dev/ttyUSB0, the line should look like device=/dev/ttyUSB0
- Save the configuration file by pressing Ctrl+X, then Y, then Enter.
Set the baud rate of the terminal program to 9600, which is the default baud rate of the HC-05 module
- Launch Minicom by running the following command:
sudo minicom -s
Configure Minicom settings
- In Minicom, press the Ctrl-A keys, followed by O to open the Minicom configuration menu.
Configure Serial port setup
- Press A to configure the serial port.
- Set the device name to /dev/ttyUSB0 (or the name of your TTL device).
- Set the baud rate to 9600.
- Save the configuration as DFL: Press E to save the configuration as the default.
- Exit Minicom: Press Ctrl-A followed by X to exit Minicom.
Open the Minicom again using the following command:
sudo minicom
In the Mincom terminal, type “AT” and press enter. You should receive an “OK” response from the HC-05 module, indicating that it is working properly.
(Follow these steps if you need to change Bluetooth settings)
To change the baud rate of the HC-05 module, type “AT+UART=<baudrate>,<stopbits>,<parity>” and press enter, where <baudrate> is the desired baud rate, <stopbits> is the number of stop bits (1 or 2), and <parity> is the parity setting (0 for no parity, 1 for odd parity, and 2 for even parity).
For example, to set the baud rate to 115200 with 1 stop bit and no parity, you would type “AT+UART=115200,1,0” and press enter. You should receive an “OK” response from the HC-05 module, indicating that the baud rate has been changed.
To save the settings, type “AT+RESET” and press enter. The HC-05 module will reset and apply the new settings.
Troubleshooting
If your Jetson Nano cannot recognize the TTL connected to one of its USB ports, here are some troubleshooting steps:
- Check the output of dmesg without the grep filter to see if there are any messages related to the USB connection. If the device is being detected but not assigned to a tty device, you may see messages related to that in the output.
- Make sure that the usbserial kernel module is loaded. This module is needed to support many USB-to-serial adapters, including TTL devices. You can check if it is loaded by running the command
lsmod | grep usbserial
If it is not loaded, you can load it manually by running
sudo modprobe usbserial
- Check the output of the lsusb command to see if the TTL device is recognized by the system. The output of lsusb should include a line identifying the vendor and product ID of the connected device. If the device is not listed, it may not be properly connected or may not be compatible with the Jetson Nano.
- Check the permissions for the USB device file. The USB device file, such as /dev/ttyUSB0, may not be accessible by your user account. Make sure that your user account has the necessary permissions to access the device file. You can add your user account to the dialout group to allow access to serial devices like the TTL device. To add your user account to the dailout group open the terminal window on your Jetson Nano then run the following command:
sudo usermod -aG dailout your_username
- Try connecting the TTL device to a different USB port on the Jetson Nano. Some USB ports on the Jetson Nano may have different characteristics or power capabilities than others, so switching to a different port may help.
- If none of these steps resolve the issue, it is possible that the TTL device is not compatible with the Jetson Nano or may require additional configuration.
If you have configured Minicom to work with your TTL device and are not getting a response when sending AT to the HC-05, there are a few things you can check:
- Make sure that the baud rate, parity, and stop bits are set correctly in Minicom. These settings should match the default settings of the HC-05, which are typically 9600 baud, 8 data bits, no parity, and 1 stop bit.
- Make sure that the HC-05 is powered on and properly connected to the TTL device. If the HC-05 is not powered on or is not properly connected, it may not respond to AT commands.
- Check the wiring between the TTL device and the HC-05. Make sure that the TX pin of the TTL device is connected to the RX pin of the HC-05, and vice versa. Also, make sure that the ground connections are properly connected.
- Try resetting the HC-05 to its factory defaults. You can do this by connecting the HC-05 to the TTL device and sending the command AT+ORGL. This will reset the HC-05 to its factory defaults and may resolve any configuration issues that are preventing it from responding to AT commands.
- Try using a different serial terminal program, such as PuTTY or screen, to communicate with the HC-05. It is possible that there is an issue with Minicom or its configuration that is preventing communication with the HC-05.
- If none of these steps resolve the issue, it is possible that there is a problem with the HC-05 itself, such as a faulty module or damaged pins.
More solutions will be explained in Part #2.
메타데이터
- post_id
- 46883f7cceae
- slug
- wireless-communication-made-easy-connecting-your-jetson-nano-with-hc-05-bluetooth-module-or-wi-fi-46883f7cceae
- url
- https://medium.com/@esraaabdelnaby722/wireless-communication-made-easy-connecting-your-jetson-nano-with-hc-05-bluetooth-module-or-wi-fi-46883f7cceae
- canonical_url
- https://medium.com/@esraaabdelnaby722/wireless-communication-made-easy-connecting-your-jetson-nano-with-hc-05-bluetooth-module-or-wi-fi-46883f7cceae
- author_url
- https://medium.com/@esraaabdelnaby722
- status
- ok
- fetched_at
- 2026-08-02 17:46:14