blob: 63c7f516a4912d2ad0c2ed6db64996797786650e [file] [log] [blame]
Using the Serial Port with Mynewt OS
====================================
Some of the projects and tutorials here will allow you to use a serial
port to interact with your Mynewt project. While most modern PCs and
laptops no longer have a true serial port, almost all can use their USB
ports as serial ports.
This page will show you how to connect to some of the development boards we
use via a serial port.
.. contents::
:local:
:depth: 3
Using the USB port on the nRF52DK
---------------------------------
The nRF52DK can communicate via a serial port directly through its USB port. By default, it uses the UART onboard, so if you need to use the UART for other purposes, consider using a USB<-->Serial converter or the Segger RTT Console instead, instructions provided below.
To see your device, check the USB devices that are connected to your computer (macOS):
.. code-block:: console
$ ls -l /dev/*USB*
crw-rw-rw- 1 <user> None 117, 5 May 9 04:24 /dev/cu.usbmodem1411
crw-rw-rw- 1 <user> None 117, 5 May 9 04:24 /dev/tty.usbmodem1411
$
The ``/dev/cu.usbmodem####`` and ``/dev/tty.usbmodem####`` represent your device. To get console access, you can either use the screen command or Minicom:
.. code-block:: console
$ minicom -D /dev/tty.usbmodem1411
Welcome to minicom 2.7
OPTIONS:
Compiled on Apr 26 2018, 13:21:44
Port /dev/tty.usbmodem1411, 11:12:13
Press Meta-Z for help on special keys
Using a USB to Serial Breakout Board
------------------------------------
If you need to use an external USB to Serial converter, this guide will show you how to set it up. The development boards covered here are:
- Nordic Semiconductor nRF52dk
- Arduino M0 Pro
For this tutorial, we'll be using the `AdaFruit FT232H Breakout
Board <https://www.adafruit.com/products/2264>`__, but almost
any similar board should work just as well. You will also need Minicom
or a similar Serial communications application. We'll show you how to
use the ``screen`` command built in to Mac OS X, but later tutorials
will also show Minicom setup.
Setup FT232H
~~~~~~~~~~~~
This is a great board because it's so easy to set up, and it can do
Serial UART, SPI, I2C and GPIO as well. There's full documentation on
the board
`here <https://learn.adafruit.com/adafruit-ft232h-breakout/overview>`__
but we're only covering the wiring for the Serial UART.
Start by connecting a jumper wire to Pin D0. This will be the UART Tx
pin, which we'll then connect to the Rx pin on the Development Board.
Next connect a jumper wire to pin D1. This will be the UART Rx pin,
which we'll connect to the Tx pin on the development board.
Finally connect a jumper wire to the GND pin.
It should look like this:
.. figure:: pics/ft232h.png
:alt: FT232H Wiring
FT232H Wiring
Setup Nordic Semiconductor NRF52DK
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
On the NRF52DK developer kit board, the Rx pin is P0.08, so you'll
attach your jumper wire from the Tx pin (D0) of the FT232H board here.
The TX Pin is pin P0.06, so you'll attache the jumper wire from the Rx
Pin (D1) on the FT232H board here.
Finally, the GND wire should go to the GND Pin on the NRF52DK. When
you're done, your wiring should look like this:
.. figure:: pics/nrf52dk.png
:alt: NRF52DK Wiring
NRF52DK Wiring
Setup Arduino M0 Pro
~~~~~~~~~~~~~~~~~~~~
On the Arduino M0 Pro, the Tx and Rx pins are clearly labeled as such,
as is the GND pin. Just make sure you wire Rx from the FT232H to TX on
the M0 Pro, and vice-versa.
Your Arduino M0 Pro should look like this:
.. figure:: pics/m0pro.png
:alt: Arduino M0 Pro Wiring
Arduino M0 Pro Wiring
Setup Serial Communications
~~~~~~~~~~~~~~~~~~~~~~~~~~~
You will need to know the serial port to connect to and use a terminal
program to connect to the board.
Example for Mac OS and Linux Platforms
++++++++++++++++++++++++++++++++++++++
First check what USB devices are already connected before connecting the
FT232H board to your computer. The ports are listed in the **/dev**
directory and the format of the port name is platform dependent:
- Mac OS uses the format ``tty.usbserial-<some identifier>``.
- Linux uses the format ``TTYUSB<N>``, where ``N`` is a number. For
example, TTYUSB2.
This example is run on a Mac OS system.
Check what USB devices are already connected:
.. code-block:: console
$ ls -la /dev/*usb*
0 crw-rw-rw- 1 root wheel 20, 63 Nov 23 11:13 /dev/cu.usbmodem401322
0 crw-rw-rw- 1 root wheel 20, 62 Nov 23 11:13 /dev/tty.usbmodem401322
$
Plug in the FT232H board and check the ports again:
.. code-block:: console
$ ls -la /dev/*usb*
0 crw-rw-rw- 1 root wheel 20, 63 Nov 23 11:13 /dev/cu.usbmodem401322
0 crw-rw-rw- 1 root wheel 20, 65 Nov 23 11:26 /dev/cu.usbserial-0020124
0 crw-rw-rw- 1 root wheel 20, 62 Nov 23 11:13 /dev/tty.usbmodem401322
0 crw-rw-rw- 1 root wheel 20, 64 Nov 23 11:26 /dev/tty.usbserial-0020124
$
The FT232H is connected to ``/dev/tty.usbserial-0020124`` (The number
after tty.usbserial will be different on your machine.) Use the screen
command to connect to the board:
.. code-block:: console
$ screen /dev/tty.usbserial-0020124 115200
To exit out of ``screen`` you'll type ``control-A`` followed by
``control-\`` and you'll be back to a terminal prompt.
You can also use minicom:
.. code-block:: console
$ minicom -D /dev/tty.usbserial-0020124
Welcome to minicom 2.7
OPTIONS:
Compiled on Nov 24 2015, 16:14:21.
Port /dev/tty.usbserial-0020124, 09:57:17
Press Meta-Z for help on special keys
If there's no Mynewt app running, or the Mynewt app doesn't have the
Shell and Console enabled, you won't see anything there, but you can
always refer back to this page from later tutorials if you need to.
Example for Windows Platforms
+++++++++++++++++++++++++++++
First check what USB devices are already connected before connecting the
FT232H board to your computer. You can locate the ports from a MinGW
terminal or use the Windows Device Manager.
On a MinGW terminal, the ports are listed in the /dev directory and the
format of the port name is ``ttyS<N>`` where N is a number. You must map
the port name to a Windows COM port: ``/dev/ttyS<N>`` maps to
``COM<N+1>``. For example, ``/dev/ttyS2`` maps to ``COM3``.
Check what USB devices are already connected:
.. code-block:: console
$ ls -l /dev/ttyS*
crw-rw-rw- 1 <user> None 117, 5 May 9 04:24 /dev/ttyS5
$
/dev/ttyS5 maps to the Windows COM6 port. You can run Windows Device
Manager to confirm:
|Device Manager - USB Devices|
Plug in the FT232H board and check the ports again:
.. code-block:: console
$ ls -l /dev/ttyS*
ls -l /dev/ttyS*
crw-rw-rw- 1 <user> None 117, 10 May 9 04:55 /dev/ttyS10
crw-rw-rw- 1 <user> None 117, 5 May 9 04:55 /dev/ttyS5
$
The FT232H board is connected to port /dev/ttyS10 (or COM11):
|Device Manager - FT232H|
We use the PuTTY terminal application to connect to the board on the
COM11 port: |PuTTY|
Press Open and you should get a terminal screen titled "COM11 - PuTTY"
If there's no Mynewt app running, or the Mynewt app doesn't have the
Shell and Console enabled, you won't see anything there, but you can
always refer back to this page from later tutorials if you need to.
Now that you know how to communicate with your Mynewt application, let's
move on to creating one!
.. |Device Manager - USB Devices| image:: ../tutorials/pics/device_manager_no_ft232H.png
.. |Device Manager - FT232H| image:: ../tutorials/pics/device_manager_ft232H.png
.. |PuTTY| image:: ../tutorials/pics/putty.png