Contact Us
Blog >> Blog Details Page

Does Arduino Uno Have Bluetooth? Exploring Connectivity Options

Posted:03:49 PM June 18, 2024 writer: Ibrar Ayyub

The Arduino Uno is essentially one of the most utilized microcontroller boards at an inexpensive price. It is an open-source electronics platform by which anyone is capable of using various kinds of electronic devices to design and develop different projects with low technical expertise. The Uno was first introduced in 2005 and is the flagship board of the Arduino platform that finds utility in electronics education and hobbyist projects.

(The only official Arduino Uno with built-in Bluetooth is the Arduino Uno WiFi Rev2)

 

A frequently asked question new Arduino users ask is whether the Uno is already built-in with Bluetooth. Let me briefly answer your question in one sentence – if you are expecting Bluetooth to be built into the Arduino Uno, you will be disappointed. However, that does not mean it cannot communicate wirelessly: it simply means that the operative control of the mechanical connection is mandatory in this case. In this article, the reader will be introduced to Uno’s standard I/O communication interfaces and get a glimpse of some basic approaches to enable Bluetooth or WiFi.

Communication Protocols of the Arduino Uno

Before looking at wireless add-ons, it is helpful to understand the communication protocols that the Arduino Uno natively supports. Out of the box, the board can communicate through four primary interfaces:

  • USB: Arduino Uno also has a micro-USB connection port on it and this can be used for interfacing ARDUINO with computers for uploading programs to the board and also for serial communication. Therefore, the board can be written by using a program to control the board, and data can be output from the I/O pins of the board to a computer and erased.
  • Serial: The Uno has a serial TX and RX pin that allows for asynchronous serial communication with voltages of 0-5V. These pins can be used to interface with other serial devices like Bluetooth or WiFi modules.
  • SPI: The Uno supports Serial Peripheral Interface (SPI) communication through specific pins - MOSI, MISO, SCK, and SS. It is most often employed with SD cards, the LCD, as well as various other SPI-interfaced devices.
  • I2C: Uno has an I2C bus through which the users can communicate with the devices supported through two pins namely SDA and SCL. I2C is used normally with real-time clocks, sensors, and several other I2C modules.

While the Uno lacks WiFi or Bluetooth out of the box, these communication protocols provide the foundation for adding wireless connectivity through external modules. Serial communication in particular enables interfacing peripherals like Bluetooth modules.

Adding Bluetooth Capability to Arduino Uno

Integrating Bluetooth to an Arduino Uno is not a tough task and the easiest way is using Bluetooth serial. These usually come at a low cost and interface with other devices by transmitting data serially over Bluetooth using what is referred to as UART (Universal asynchronous receiver-transmitter).

Some popular Bluetooth module options for the Uno include:

  • HC-05/06: Compatible with most Arduino boards, these tiny Bluetooth 4.0 classic/BLE modules connect via 3.3V TTL UART to the Arduino's TX/RX pins. Programming is through AT commands. Inexpensive at around $5-10.
  • RN-42: A fully qualified Bluetooth 4.0 module that offers more features than HC-05 but requires a separate 3.3V power supply. More robust than classic modules but also more expensive at $15-20.
  • BTM-222: A compact Bluetooth 4.0 module with a built-in antenna. Interfaces with Arduino over UART and supplies 3.3V power, eliminating the need for level shifters. Around $10-15.
  • Bluesmirf Gold: Higher-end Bluetooth module with Goldstack BT protocols for reliable serial comms. Requires 12 external components but is regarded as the most robust option Around $30.

All these modules connect to the Arduino Uno via the TX/RX pins and communicate serially over Bluetooth. Programming is done through AT commands sent from the Arduino IDE serial monitor or with a Bluetooth terminal app on a mobile device.

With a simple Bluetooth module wired up, the Arduino can wirelessly transmit sensor data, receive Bluetooth commands, or interface with Bluetooth devices like smartphones, tablets, or laptops from distances of up to 30-100 feet depending on the environment. This opens up plenty of remote control and monitoring possibilities.

Adding WiFi Capability

Adding WiFi capability allows an Arduino project to communicate over much greater distances for applications requiring wireless internet connectivity over local networks or the Internet of Things (IoT).

Several WiFi module boards are compatible with the Arduino Uno through UART serial communication:

  • ESP8266: One of the most popular choices due to its tiny size and low cost of around $5. Requires minimal external components and is programmed over AT commands. Supports both WiFi client and access point modes.
  • ESP32: More powerful than ESP8266 with integrated Bluetooth and BLE. Includes WiFi and Bluetooth modem, baseband, protocol stack as well, RAM, and digital peripherals. Slightly more expensive at $10-15 but has more features than 8266.
  • WIT-5370: Higher performance WiFi module with SDIO interface for faster data transfer speeds. Requires a separate power supply but provides an integrated PCB antenna and a more robust feature set. Around $15-20.
  • RN-XV: Roving Networks module compatible with Arduino as slave device through UART. Supports most modern WiFi standards including 802.11a/b/g/n and has a built-in power supply regulator. Around $20-25.

With any of these WiFi modules connected to the Arduino's serial pins and configured with AT firmware, the board gains the ability to connect to local networks and send/receive data to/from servers on the internet. A broad range of IoT applications then become possible such as environmental monitoring, security cameras, smart appliances, and more.

Expanding on Serial Communication

As outlined earlier, the Arduino Uno's serial communication capabilities provide the foundational interface for adding wireless functionality through Bluetooth and WiFi modules. However, the single hardware serial port does present some limitations.

The Arduino IDE SoftwareSerial library helps work around this by enabling serial communication through certain digital pin pairs instead of just the dedicated RX/TX pins. This opens up the possibility of connecting multiple serial devices simultaneously.

Some key considerations with SoftwareSerial include:

  • Supported Pins: Only pins 8-13 on most Arduino models can be used, as these have direct access to the hardware USART registers without conflicting with other functions.
  • Baud Rate: Top supported rate is generally 115200 rather than the maximum 250000+ available on hardware serial. Slower speeds may be needed with multiple SoftwareSerial ports.
  • Parsing: Data must be parsed using delimiters since receive/transmit interrupts are not used, impacting efficient serial throughput compared to hardware serial.
  • Pin Unavailability: Digital pins tied to SoftwareSerial cannot simultaneously perform other tasks like analog inputs.

For many projects, these limitations may be acceptable if not heavily serial data dependent. But some more robust options exist as well:

AltSoftSerial is an alternative to SoftwareSerial that supports pins 7-12 and has minor speed improvements through better interrupt handling. However, interrupts still cannot match hardware serial performance.

MultiSerial allows defining multiple hardware-based serial ports through pin remapping. This utilizes the secondary USART peripherals on boards like Mega2560 to truly match hardware serial speeds on multiple ports simultaneously. Additional AVR models are supported as well.

Finally, hardware serial port expanders integrate additional serial controllers to provide multiple physical serial ports through a bus like I2C/SPI. For example, the MCP2221 breakout gives two full duplex UART ports at 3.3-5V levels. These offer true hardware serial throughout without software limitations.

For most projects, SoftwareSerial suffices. However bandwidth-intensive applications may require an alternative approach to achieve robust parallel wireless communication.

Advanced Display Options

While LCD modules are common visual outputs, Arduino is also well-suited for driving more advanced displays through compatible drivers and libraries. Here are a few other display technologies to consider:

  • E-Paper/E-Ink: Monochrome reflective displays with ultra-low power usage suited for applications requiring persistent images without refresh like e-book readers. Driven via I2C, the Waveshare e-Paper HAT for Raspberry Pi is Arduino-compatible.
  • OLED: As mentioned before, monochrome/color OLED panels have sharper contrast than LCD and integrate drivers/controllers communicating over common buses like I2C/SPI. AdaFruit, Waveshare, and SeeedStudio offer a wide selection.
  • TFT Touchscreen: High-resolution color screens add interactivity through resistive/capacitive touch input. IPS panels provide wide viewing angles. Most use an SPI-interfaced controller/driver IC.
  • HDMI/HDMI CEC: Adding an HDMI connector allows Arduino to drive external computer displays or HDTVs. CEC enables using TV remotes to control Arduino projects through the HDMI connection.
  • Character/VFD Displays: Vacuum fluorescent or LED-based modules produce a glowing digit/character appearance without a background matrix. Communicate through I2C/SPI/serial.

Even complex graphical screens can be an option - the Arduino TFT library allows driving smaller SPI LCD panels while Adafruit_GFX enables general graphics on TFT/OLED displays. Advanced I/O and optional GPUs also unlock ST7735/ILI9341 controller support.

The right display choice depends on specific visibility needs versus size/power/cost factors for portable or embedded applications. But Arduino offers driver support for a wide range of innovative visual output technologies.

Sensing and Interfacing the Physical World

Crucial to many interactive projects is incorporating real-world inputs through various environmental and mechanical sensing capabilities. Fortunately, Arduino has a wealth of options in this regard as well:

  • Analog Sensors: Input variables like light, temperature, and pressure over analog pins using affordable modules from manufacturers like Adafruit, SparkFun, and SeeedStudio.
  • Digital Sensors: Onboard devices like ultrasonic rangefinders, motion detectors, and contact sensors offer simple digital readings.
  • I2C Sensors: High-precision chips communicating over I2C like gyro/accelerometer/magnetometer modules, barometers, humidity sensors, etc.
  • Interconnection: Connect sensors, actuators, shields, etc. seamlessly using common standards like GPIO, I2C, SPI, and USB.
  • Input/Output: Directly interface switches, buttons, relays, motors, and more through digital/analog pins and PWM signals.
  • Sensor Shields: Simplify incorporating groups of related sensors via prebuilt expansion boards with integrated level shifting etc.

Libraries provide abstraction from lower-level hardware details to easily code complex readings from a myriad of compatible inputs. Advanced functionality may also leverage protocol options like OneWire for temperature sensors or CANbus connectivity.

Overall Arduino's modular design enables tapping diverse sensing technologies to enrich almost any type of interactive invention or result in new applications inspired by the immense possibilities of human-environment interfacing.

Advanced Prototyping and Circuit Design

While the Arduino platform excels at rapid prototyping, some more ambitious projects may require stepping beyond its default configuration with custom peripheral development as well. Here are some advanced capabilities to consider:

  • CircuitPython/MicroPython: Drop-in replacement MCU firmware enables projects with Python instead of C/C++ on many Arduino-compatible boards including ESP8266/ESP32 and SAMD21 boards.
  • ATmega AVR Programming: Low-level C/assembly coding directly on the AVR MCU without Arduino abstraction layer for optimized applications.
  • Breadboard Prototyping: Design and test circuits independently of any development board using just basic components on a solderless breadboard.
  • Custom PCB Design: Design and manufacture printed circuit boards for permanent construction of prototypes or commercial products incorporating bespoke circuits and components.
  • 3D Printing: Complement electronic design with 3D modeling and printing custom enclosures, mounts, or other physical parts for projects.
  • Arduino As ISP: Program ATmega chips in-circuit without an external programmer by configuring an Arduino as an In-System Programmer.
  • Hardware Debugging: Tools like oscilloscopes, logic analyzers, and In-Circuit Debuggers help uncover low-level hardware and firmware issues during development.

While the Arduino framework streamlines initial experimentation, ambitious builders can graduate to fully customized circuit design when the open-source ecosystem allows transcending board limitations. Creative applications may require pushing capabilities to their limits through these “advanced” techniques and disciplines.

Combining Wireless Modules

A key advantage of the Arduino Uno's modular design is that it allows stacking multiple wireless technologies together to gain both local wireless control/interfacing along with long-range internet connectivity.

For example, a Bluetooth module can be used in conjunction with an ESP8266 or ESP32 WiFi module on the same Arduino board. This opens up possibilities like:

  • Remote smartphone control and monitoring of a project over WiFi via a Bluetooth connection
  • Signaling or triggering Arduino activities over Bluetooth when certain conditions sensed over WiFi
  • Using BLE for device configuration/pairing and WiFi for data transfer/remote access
  • Combining short-range Zigbee/RF connectivity with WiFi for scalable wireless sensor networks

With multiple serial-interfaced modules connected, the Arduino's TX/RX pins can be wired to each device sequentially using simple resistor dividers or TX/RX pass-through connections. Software serial libraries help enable communication with peripherals on non-hardware serial pins as well.

Adding Display and Interface Options

Arduino projects commonly integrate LCD or TFT display screens controlled over the SPI or I2C bus for visual feedback and user interaction. Some common LCD/TFT display add-ons include:

  • 2004 LCD: Monochrome 1602 LCD is inexpensive at under $5 and connects over 4-bit or 8-bit mode to SPI or I2C. Provides 16x2 character display.
  • 2004 LCD with Touch: Adds touchscreen interactivity to the basic 2004 LCD through resistive or capacitive touch interface over SPI. Around $10-15.
  • OLED Displays: Monochrome or color OLED screens provide sharper contrast than LCD. I2C interfaced SSD1306 driver chip enables 128x64 or 128x32 displays for $5-10.
  • TFT LCD Touchscreens: High-resolution color touchscreens integrated with SPI interfaced controllers. Resolutions up to 480x320 pixels for $15-30 depending on size.
  • Graphic LCD: Interface GLCD843/161/200 controllers over 8-bit SPI for 40x24, 128x64 pixel displays with simple graphics primitives. $5-15 range.

Along with displays, common user interface components include:

  • Momentary/Toggle Switches: Add button-based input via direct connection to analog or digital pins for under $1 each.
  • Rotary Encoders: Provide rotation sensing input through interrupt or polling of A/B channels on digital pins Under $3 each.
  • RGB Status LEDs: Indicate state visually with common cathode RGB or individually addressable NeoPixel LEDs starting at $1-2 each.

Integrating any combination of compatible display and interface hardware allows Arduino projects to implement more sophisticated human-machine interaction beyond basic input/output pin readings.

Development Boards and Shields

For more advanced or complicated projects, alternative Arduino-compatible development boards and add-on shields provide additional features. Common options include:

  • Arduino Mega: Larger board with more memory, analog inputs, PWM outputs, as well as true hardware serial ports ideal for I/O intensive tasks.
  • Arduino Nano: Tiny SMD version of the Uno ideal for space-constrained applications needing similar features in smaller size.
  • Arduino Ethernet: Integrates Ethernet port and WizNet W5100/W5200 chip for easy network connectivity without a separate module.
  • Motor/Servo Shields: Add full or half H-bridge motor drivers and signal conditioning for controlling DC motors and servos.
  • Sensor Shields: Stack sensor modules with prototyping area for quick incorporation of things like environmental sensors, GPS receivers, etc.
  • Proto Shields: Provide solderless breadboarding expansion area to conveniently incorporate custom circuits alongside the main MCU board.

Combined with other options discussed, these compatible development platforms and modular shield add-ons enable stretching the capability of Arduino projects well beyond the humble Uno while retaining overall familiarity and programming.

Programming and Interfacing Software

Regardless of specific hardware configuration, the Arduino Uno and its ecosystem run on the open-source Arduino IDE integrated development environment. The IDE provides a standard way to write and upload C/C++-based sketches to Arduino boards while facilitating their programming.

Libraries and code snippets available on the Arduino website help abstract hardware details and streamline the implementation of wireless communication, display control, sensor integration, and more within sketches. Popular examples include:

  • WiFi/Bluetooth libraries for ENC28J60, ESP8266/ESP32, RN-XV and other modules
  • LiquidCrystal library for driving 2004 LCD screens over 4/8-bit modes
  • TFT/SD libraries for graphics on TFT and SSD1306 OLED displays
  • TouchScreen library for touchscreen support on LCD modules
  • Servo library for PWM-based control of servos
  • SPI/Wire libraries for communicating over SPI/I2C peripheral buses

Additionally, the Arduino Bluetooth and WiFi101 Libraries provide cross-platform mobile and desktop apps for Bluetooth and WiFi connection testing respectively. This enables wireless configuration, data streaming, and remote interfacing without intermediary computers.

Alternative IDEs are also options - PlatformIO allows the use of Arduino-compatible boards but with additional features tailored for advanced IoT applications. MBed Studio focuses on ARM-based boards but supports many of the same wireless modules.

Conclusion

The only official Arduino Uno with built-in Bluetooth is the Arduino Uno WiFi Rev2. While the other Arduino Uno boards lack built-in wireless connectivity, its standardized protocols provide a strong foundation for adding Bluetooth, WiFi, and other wireless capabilities through affordable external modules. Serial, I2C, and SPI interfaces make boards like the Uno eminently compatible with a wide range of display, sensor, and peripheral expansion options as well.

By choosing the right combination of wireless modules, shields, displays, and sensors - and leveraging the extensive Arduino code libraries and IDE support - even beginner makers can create sophisticated interactive projects with both wireless control/monitoring and advanced human-machine interfacing capabilities. The Arduino platform continues to be one of the most accessible routes to bring wireless connectivity and IoT concepts within reach of all skill levels of makers and coders alike.

  • PCB
    Prototype
  • PCB
    Assembly
  • SMD
    Stencil

Dimensions: (mm)

×

Quantity: (pcs)

5
5
10
15
20
25
30
40
50
75
100
120
150
200
250
300
350
400
450
500
600
700
800
900
1000
1500
2000
2500
3000
3500
4000
4500
5000
5500
6000
6500
7000
7500
8000
9000
10000

Other Quantities:(quantity*length*width is greater than 10㎡)

OK

Layers:

Thickness:

Quote now