blob: e65f22b280186f308502f8a84e6fd6a2debe5b81 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- This is broken by doc revisioning.
-->
<link rel="shortcut icon" href="../../../img/favicon.ico">
<title>Serial Port Setup - Apache Mynewt</title>
<link href="../../../css/bootstrap-3.0.3.min.css" rel="stylesheet">
<link rel="stylesheet" href="../../../css/highlight.css">
<link href="../../../css/base.css" rel="stylesheet">
<link href="../../../css/custom.css" rel="stylesheet">
<link href="../../../css/v2.css" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Lato" rel="stylesheet">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
<![endif]-->
<script>
(function(i, s, o, g, r, a, m) {
i["GoogleAnalyticsObject"] = r;
(i[r] =
i[r] ||
function() {
(i[r].q = i[r].q || []).push(arguments);
}),
(i[r].l = 1 * new Date());
(a = s.createElement(o)), (m = s.getElementsByTagName(o)[0]);
a.async = 1;
a.src = g;
m.parentNode.insertBefore(a, m);
})(window, document, "script", "//www.google-analytics.com/analytics.js", "ga");
ga("create", "UA-72162311-1", "auto");
ga("send", "pageview");
</script>
</head>
<body class="Serial Port Setup">
<div class="container">
<div class="row v2-main-banner">
<a class="logo-cell" href="/">
<img class="logo" src="/img/logo.png">
</a>
<div class="tagline-cell">
<h4 class="tagline">An OS to build, deploy and securely manage billions of devices</h4>
</div>
<div class="news-cell">
<div class="well">
<h4>Latest News:</h4> <a href="/download">Apache Mynewt 1.12.0, Apache NimBLE 1.7.0 </a> released (April 4, 2024)
</div>
</div>
</div>
</div>
<nav id="navbar" class="navbar navbar-inverse affix-top" data-spy="affix" data-offset-top="150" role="navigation">
<div class="container">
<!-- Collapsed navigation -->
<div class="navbar-header">
<!-- Expander button -->
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<!-- Expanded navigation -->
<div class="navbar-collapse collapse">
<!-- Main navigation -->
<ul class="nav navbar-nav navbar-right">
<li
class=""
>
<a href="/"><i class="fa fa-home" style="font-size: larger;"></i></a>
</li>
<li
class="important"
>
<a href="/quick-start/">Quick Start</a>
</li>
<li
class=""
>
<a href="/about/">About</a>
</li>
<li
class=""
>
<a href="/talks/">Talks</a>
</li>
<li
class="active"
>
<a href="/documentation/">Documentation</a>
</li>
<li
class=""
>
<a href="/download/">Download</a>
</li>
<li
class=""
>
<a href="/community/">Community</a>
</li>
<li
class=""
>
<a href="/events/">Events</a>
</li>
</ul>
</div>
</div>
</nav>
<div class="container">
<div class="row">
<div class="col-md-3 v2-sidebar sidebar-container"><div id="docSidebar" class="hidden-print" role="complementary">
<div class="top">
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
<div class="form-group">
<input type="text" name="q" class="form-control" placeholder="Search documentation" />
</div>
</form>
</div>
</div>
<ul class="toc-nav">
<li class="doc-version"><select class="form-control" onchange="if (this.value) window.location.href=this.value">
<option value="/latest">
Version: master
</option>
<option value="/v1_12_0/" >
Version: 1.12.0
</option>
<option value="/v1_11_0/" >
Version: 1.11.0
</option>
<option value="/v1_10_0/" >
Version: 1.10.0
</option>
<option value="/v1_9_0/" >
Version: 1.9.0
</option>
<option value="/v1_8_0/" >
Version: 1.8.0
</option>
<option value="/v1_7_0/" >
Version: 1.7.0
</option>
<option value="/v1_6_0/" >
Version: 1.6.0
</option>
<option value="/v1_5_0/" >
Version: 1.5.0
</option>
<option value="/v1_4_0/" >
Version: 1.4.0
</option>
<option value="/v1_3_0/os/introduction" >
Version: 1.3.0
</option>
<option value="/v1_2_0/os/introduction" >
Version: 1.2.0
</option>
<option value="/v1_1_0/os/introduction" >
Version: 1.1.0
</option>
<option value="/v1_0_0/os/introduction" selected="selected" >
Version: 1.0.0
</option>
<option value="/v0_9_0/os/introduction" >
Version: 0.9.0
</option>
</select></li>
<li ><a href="../../introduction/">Mynewt Documentation</a>
<ul>
<li ><a href="../get_started/">Basic Setup</a>
<ul>
<li ><a href="../native_install_intro/">Native Install Option</a>
</li>
<li >
<a href="../docker/">Docker Container Option</a>
</li>
<li >
<a href="../project_create/">Create Your First Project</a>
</li>
<li class="active">
<a href="./">Serial Port Setup</a>
</li>
</ul>
</li>
<li >
<a href="../vocabulary/">Concepts</a>
</li>
<li ><a href="../../tutorials/tutorials/">Tutorials</a>
</li>
<li ><a href="../../os_user_guide/">OS User Guide</a>
</li>
<li><a href="
../../../network/ble/ble_intro/
">BLE User Guide</a>
</li>
<li ><a href="../../../newt/newt_intro/">Newt Tool Guide</a>
</li>
<li ><a href="../../../newtmgr/overview/">Newt Manager Guide</a>
</li>
<li >
<a href="../../../known_issues/">Known Issues</a>
</li>
</ul>
</li>
<li><a href="
../../../faq/go_env/
">Appendix</a>
</li>
</ul>
</div></div>
<div class="col-md-9" role="main">
<div class="doc-header">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="/documentation/">Docs</a></li>
<li>&raquo; <a href="os/get_started/get_started/">Basic Setup</a></li>
<li>&raquo; <a href="os/introduction/">Mynewt Documentation</a></li>
<li>&raquo; Serial Port Setup</li>
</ul>
</div>
</div>
<div class="alert alert-warning">
<p>
Version 1.0.0 is not the most recent version of the Apache Mynewt
documentation. Click <a href="/latest">here</a> to read the latest
version.
</p>
</div>
<h1 id="using-the-serial-port-with-mynewt-os">Using the Serial Port with Mynewt OS</h1>
<p>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. </p>
<p>This will show you how to connect to some of the development boards
we use via a serial port. </p>
<p>The development boards covered here are:</p>
<ul>
<li>Nordic Semiconductor NRF52dk</li>
<li>Arduino M0 Pro</li>
</ul>
<p>In order to communicate with these boards you will also need a USB&lt;--&gt;Serial
converted. We'll be using the <a href="https://www.adafruit.com/products/2264">AdaFruit FT232H Breakout Board</a> for
this, 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 <code>screen</code> command built in to Mac OS X, but later tutorials will
also show Minicom setup.</p>
<p>So let's get started!</p>
<p><br></p>
<h2 id="setup-ft232h">Setup FT232H</h2>
<p>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 <a href="https://learn.adafruit.com/adafruit-ft232h-breakout/overview">here</a>
but we're only covering the wiring for the Serial UART. </p>
<p>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.</p>
<p>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.</p>
<p>Finally connect a jumper wire to the GND pin.</p>
<p>It should look like this:</p>
<p><img alt="FT232H Wiring" src="../pics/ft232h.png" /></p>
<p><br></p>
<h2 id="setup-nordic-semiconductor-nrf52dk">Setup Nordic Semiconductor NRF52DK</h2>
<p>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.</p>
<p>The TX Pin is pin P0.06, so you'll attache the jumper wire from the Rx Pin (D1)
on the FT232H board here. </p>
<p>Finally, the GND wire should go to the GND Pin on the NRF52DK. When you're
done, your wiring should look like this:</p>
<p><img alt="NRF52DK Wiring" src="../pics/nrf52dk.png" /> </p>
<p><br></p>
<h2 id="setup-arduino-m0-pro">Setup Arduino M0 Pro</h2>
<p>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.</p>
<p>Your Arduino M0 Pro should look like this:</p>
<p><img alt="Arduino M0 Pro Wiring" src="../pics/m0pro.png" /></p>
<p><br></p>
<h2 id="setup-serial-communications">Setup Serial Communications</h2>
<p>You will need to know the serial port to connect to and use a terminal program to connect to the board.</p>
<h3 id="example-for-mac-os-and-linux-platforms">Example for Mac OS and Linux Platforms</h3>
<p>First check what USB devices are already connected before connecting the FT232H board to your computer. The ports are listed in the <strong>/dev</strong> directory and the format of the port name is platform dependent:</p>
<ul>
<li>Mac OS uses the format <code>tty.usbserial-&lt;some identifier&gt;</code>. </li>
<li>Linux uses the format <code>TTYUSB&lt;N&gt;</code>, where <code>N</code> is a number. For example, TTYUSB2.</li>
</ul>
<p><br>
This example is run on a Mac OS system. </p>
<p>Check what USB devices are already connected:
<br></p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>$ 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
$
</code></pre></div>
<p><br>
Plug in the FT232H board and check the ports again:
<br></p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>$ 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
$
</code></pre></div>
<p><br>
The FT232H is connected to <code>/dev/tty.usbserial-0020124</code> (The number after tty.usbserial will be different on your machine.)
<br>
Use the screen command to connect to the board:
<br></p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>$ screen /dev/tty.usbserial-0020124 115200
</code></pre></div>
<p><br>
To exit out of <code>screen</code> you'll type <code>control-A</code> followed by <code>control-\</code> and you'll
be back to a terminal prompt.</p>
<p><br></p>
<p>You can also use minicom:
<br></p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>$ 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
</code></pre></div>
<p><br>
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.</p>
<p><br></p>
<h3 id="example-for-windows-platforms">Example for Windows Platforms</h3>
<p>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. </p>
<p>On a MinGW terminal, the ports are listed in the /dev directory and the format of the port name is <code>ttyS&lt;N&gt;</code> where N is a number. You must map the port name to a Windows COM port: <code>/dev/ttyS&lt;N&gt;</code> maps to <code>COM&lt;N+1&gt;</code>. For example, <code>/dev/ttyS2</code> maps to <code>COM3</code>.</p>
<p>Check what USB devices are already connected:
<br></p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>$ls -l /dev/ttyS*
crw-rw-rw- 1 &lt;user&gt; None 117, 5 May 9 04:24 /dev/ttyS5
$
</code></pre></div>
<p><br>
/dev/ttyS5 maps to the Windows COM6 port. You can run Windows Device Manager to confirm:</p>
<p><br>
<img alt="Device Manager - USB Devices" src="/os/tutorials/pics/device_manager_no_ft232H.png" /></p>
<p><br></p>
<p>Plug in the FT232H board and check the ports again:
<br></p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>$ls -l /dev/ttyS*
ls -l /dev/ttyS*
crw-rw-rw- 1 &lt;user&gt; None 117, 10 May 9 04:55 /dev/ttyS10
crw-rw-rw- 1 &lt;user&gt; None 117, 5 May 9 04:55 /dev/ttyS5
$
</code></pre></div>
<p><br>
The FT232H board is connected to port /dev/ttyS10 (or COM11):</p>
<p><br>
<img alt="Device Manager - FT232H" src="/os/tutorials/pics/device_manager_ft232H.png" /></p>
<p><br></p>
<p>We use the PuTTY terminal application to connect to the board on the COM11 port:
<br>
<img alt="PuTTY" src="/os/tutorials/pics/putty.png" /></p>
<p><br></p>
<p>Press Open and you should get a terminal screen titled "COM11 - PuTTY"</p>
<p>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.</p>
<p><br></p>
<p>Now that you know how to communicate with your mynewt application, let's move on to
creating one!</p>
<div class="row">
<ul class="nav nav-pills" style="margin-bottom: 10px">
<li>
</li>
<li class="pull-right">
</li>
</ul>
</div>
<footer class="row">
<div class="col-xs-12">
<p class="copyright">Apache Mynewt (incubating) is available under Apache License, version 2.0.</p>
</div>
<div class="col-xs-12">
<div class="logos">
<a href="https://www.apache.org/">
<img src="/img/asf_logo_wide_small.png" alt="Apache" title="Apache">
</a>
<p>
Copyright © 2015-2021 The Apache Software Foundation.<br>
<small class="footnote">
Apache Mynewt, Mynewt, Apache, the Apache feather logo, and the Apache Mynewt
project logo are either registered trademarks or trademarks of the Apache
Software Foundation in the United States and other countries.
</small>
</p>
<a href="">
<img src="https://www.countit.com/images/add_to_slack.png" alt="Slack Icon" title="Join our Slack Community" />
</a>
</div>
</div>
<a href="https://www.apache.org/licenses/">
<button class="button-footer-asf">
License
</button>
</a>
<a href="https://www.apache.org/foundation/sponsorship.html">
<button class="button-footer-asf">
Sponsorship
</button>
</a>
<a href="https://www.apache.org/foundation/thanks.html">
<button class="button-footer-asf">
Thanks
</button>
</a>
<a href="https://www.apache.org/security/">
<button class="button-footer-asf">
Security
</button>
</a>
<a href="https://apache.org/events/current-event">
<button class="button-footer-asf">
ASF Events
</button>
</a>
</footer>
</div>
</div>
</div>
<script src="../../../js/jquery-1.10.2.min.js"></script>
<script src="../../../js/bootstrap-3.0.3.min.js"></script>
<script src="../../../js/highlight.pack.js"></script>
<script src="../../../js/base.js"></script>
<script src="../../../js/custom.js"></script>
<script src="search/main.js"></script>
</body>
</html>