android 串口调试工具_树莓派通用串口通信实验

200dedb3563aae95fc5f711b13b9a6a7.gif

一、介绍

对于树莓派 3B+来说,他的UART功能有三种:1、内部蓝牙使用;2、控制终端使用;3、与其他设备进行串口通信。

在树莓派USB TO TTL模块实验中学习了通过串口对树莓派进行控制台控制,让串口作为控制终端调试口即 serial console,但是在项目中常常会使用串口同其他传感器、单片机等设备进行通用串口通信。

本实验中设置树莓派的串口为通用串口与PC电脑的串口调试工具进行通信。

二、组件

★Raspberry Pi 3 B+主板*1 快速购买

★树莓派电源*1

★USB TO TTL模块*1

★面包板*1(可选)

★40P软排线*1

★跳线若干

三、实验原理

(一)树莓派的串口

树莓派从大的方向来说一共出了3代,每一代的CPU外设基本相同,但内核不同,外设里面一共包含两个串口,一个称之为硬件串口(/dev/ttyAMA0),一个称之为mini串口(/dev/ttyS0)。

硬件串口由硬件实现,有单独的波特率时钟源,性能高、可靠,mini串口性能低,功能也简单,并且没有波特率专用的时钟源而是由CPU内核时钟提供,因此mini串口有个致命的弱点是:波特率受到内核时钟的影响。内核若在智能调整功耗降低主频时,相应的这个mini串口的波特率便受到牵连了,虽然你可以固定内核的时钟频率,但这显然不符合低碳、节能的口号。

在所有的树莓派板卡中都通过排针将一个串口引出来了,目前除了树莓派3代以外  ,引出的串口默认是CPU的那个硬件串口。而在树莓派3代中,由于板载蓝牙模块,因此这个硬件串口被默认分配给与蓝牙模块通信了,而把那个mini串口默认分配给了排针引出的GPIO  Tx Rx。

树莓派的串口默认为串口终端调试使用,如要正常使用串口则需要修改树莓派设置。关闭串口终端调试功能后则不能再通过串口登陆访问树莓派,只能通过ssh或者远程桌面连接树莓派后进行控制。

f5bf832b48040923a122190403a5d42d.png

上图红框中就是引出的串口IO(GPIO  14/15),如果我们需要通过UART外接模块,默认情况下必须得使用性能很低的mini串口了,而且随着内核主频的变化,还会造成波特率的变化导致通信的失败,几乎很难使用。所以我们一般要恢复硬件串口(/dev/ttyAMA0)与GPIO  14/15的映射关系,使得我们能够通过GPIO使用高性能的硬件串口来连接我们的串口设备。

恢复映射关系前先看下默认的映射关系:

542f6b963c5ddd2bd9aa1fc750fd11aa.png

serial0是GPIO引脚对应的串口,serial1是蓝牙对应的串口。如图所示,serial0(GPIO串口)默认使用的是ttyS0(mini串口),serial1(蓝牙)使用的是ttyAMA0(硬件串口)。

四、实验步骤

第1步:连接电路。使用USB TO TTL模块连接好树莓派的串口和PC电脑的USB接口。

树莓派(name)T型转接板(BCM)USB TO TTL模块
TXDTXORXD
RXDRXITXD
GNDGNDGND

下图中的USB要插到笔记本电脑上哈,为方便拍照就没插上。连线很简单,电路图就没画了。

c52173a5812b390ddb51ee36191b4f6d.png

第2步:首先我们先尝试使用默认的ttyS0(mini串口)来进行通用串口通信。

(1)设置树莓派,在Raspberry Pi Configuration中将Serial Port设置为Enable,但是Serial Console都要Disable,即关闭串口控制台功能,然后必须重启树莓派生效。

a09dae3a70b772157399417640bf3502.png

(2)PC电脑上运行串口调试工具,串口驱动的安装请参考树莓派基础实验35:USB TO TTL模块实验中的内容。如下图设置好参数,点击“打开串口”。

1f0738bdccf63e70abce46b6defcbda5.png

(3)树莓派上安装minicom,启动时配置参数串口为/dev/ttyS0,波特率(9600)。在树莓派上输入信息,在PC上的串口调试工具就会收到该信息。

sudo apt-get install minicom      #安装minicomsudo minicom -D /dev/ttyS0 -b9600   #启动minicom

6ea177431a400d0bc51b3f260ff4906f.png

(4)PC上的串口调试工具发送字符信息,树莓派上也会显示该信息,证明两者的UART双向通信成功。

63a4babe325dd98f58aa314084516638.png

(5)这里要注意的是:进入minicom工具,按提示按CTAL -A,然后按Z后会显示帮助信息。若再按O可以进入Minicom配置界面。

1422661c5b2edd34c8d004bc4ce75752.png

进入Minicom配置界面,再选择Serial port setup,可以对树莓派的串口进行设置。

482433aff00c0d5166df6783da3c5f26.png

进入串口设置,可以设置树莓派串口的设备、波特率等:

8731fdc7f6c3c86124e18a7fe5c71213.png

第3步: 为了在树莓派3中通过GPIO使用高性能的硬件串口,我们必须将分配给蓝牙使用的硬件串口与分配给IO排针的mini串口进行对换,这必然会使得蓝牙模块的功能受到影响,不过这里我们不使用蓝牙。

(1)在/boot/overlays文件内有两个文件,README 和pi3-miniuart-bt.dtbo,首先查看有没有相关文件。

f94ec7b658d54d9ebbaedf00ea0b619e.png

(2)README文件中说明了此文件的功能,是将树莓派3的蓝牙切换到mini串口(ttyS0),并且恢复硬件串口(ttyAMA0)到GPIO14&15引脚中。

e39c5342829da27611589c4d3f9b0b95.png

(3)修改配置文件

sudo vim /boot/config.txt

在该文件中加一行代码

dtoverlay=pi3-miniuart-bt

141171dead25905ff234c29936dcf505.png

保存后重启树莓派,再查看映射关系已经改变:

272365f4ca7e20005aaaf10491d86bfe.png

(4)进入minicom,发送信息给PC串口调试工具。与第2步不同的是:启动时配置参数串口必须为/dev/ttyAMA0,波特率可以更改为其它的,这里设置为115200。

pi@raspberrypi:~ $ sudo minicom -D /dev/ttyAMA0 -b115200

ad067bf4175ad98651a0bc1042888871.png

经过测试,双向通信成功!这里要注意,第2步里面关闭串口控制台功能的设置不能变,即Serial Console要Disable。

补充: 前面步骤当中的部分设置使用的是图形界面配置,在不能使用图形界面时,也可以直接修改配置文件。

(1)上面串口的开启的步骤中,是在Raspberry Pi Configuration 界面中,将Serial Port选项ENable,也可以直接修改/boot/config.txt文件。

sudo vim /boot/config.txt

af47a5cadbab993e5af3370baac1857d.png

enable_uart=1即为Serial Port Enable串口开启,enable_uart=0即为Serial Port Disable串口关闭。

(2)上面关闭串口控制台功能,是在Raspberry Pi Configuration 界面中,将Serial Console选项Disable,可以直接修改/boot/cmdline.txt文件。

sudo vim /boot/cmdline.txt

修改前:

5ed5df21b57c271146510ce1f3b307bf.png

修改后:

b0b6ceaf8ee29a191f6a4f3088cf96cb.png

去掉了“console=serial0,115200”,即Disable了串口控制台功能。

树莓派3B/3B+

7ac700ecebc6c51b9c76276a5cf6844c.png

287b7f93f99c8eb3da01d01088ee2071.png

f3919c79c10404450fe2becd3799870a.png

心动购买

fa8c3b68c9b218856f36b60729b9887e.png

1bea5cb712e5d22eb062cfccbfd1693b.gif

精彩回顾

点击文字即可阅读全文☞【教程】树莓派上安装Domoticz,控制家中各种设备☞额温枪实战方案开发板,使用手册+全套资料☞ ROS机器人操作系统如何安装使用?快来了解!☞ 技能get√丨用树莓派4制作交通标志识别机器人☞ 【教程】教你用Arduino制作PM2.5测量仪(使用GP2Y1010AU0F灰尘传感器)☞  技能get√丨用树莓派打造家庭自动化☞  【教程】不说废话!教你在树莓派上安装OpenCV☞ 【K210火炎焱燚】K210产品大集合必须火火火火火火~

dc4a9f946735195790bcad5775b016a7.png

cd74aa4baf2f4479a30e446f8a5a1c1e.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/260550.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Laravel5.2目录结构及composer.json文件解析

目录或文件说明|– app包含Controller、Model、路由等在内的应用目录,大部分业务将在该目录下进行|  |– Console命令行程序目录|  |  |– Commands包含了用于命令行执行的类&#xff…

ichat在线客服jQuery插件(可能是历史上最灵活的)

ichat是一款开源免费在线客服jQuery插件,通过该插件,您可以自由的定制属于自己的在线客服代码。 ichat充分吸收传统在线客服插件的优点,并加上自身的独特设计,使得ichat可定制性异常强大。 ichat追求简单实用,走小清新…

POJ 1007 DNA Sorting

按照字符串的逆序排序。 /*Accepted 100K 16MS C 863B 2012-08-03 08:30:48*/ #include<stdio.h> #include<string.h> #include<stdlib.h> #include<algorithm> using namespace std; const int MAXN 55, MAXM 110; struct str {char…

第6章 Python 数字图像处理(DIP) - 彩色图像处理1 - RGB彩色模型,RGB to Gray,CMK和CMYK彩色模型,HSI彩色模型

第6章主要讲的是彩色图像处理&#xff0c;一些彩色模型如RGB&#xff0c;CMK&#xff0c;CMYK&#xff0c;HSI等色彩模型&#xff1b;彩色模型的变换关系&#xff1b;还包含由灰度图像怎样处理成假彩色图像&#xff1b;使用彩色分割图像等。本章比较少理论还有变换的描述&#…

git 命令详解_再次学习Git版本控制工具

微信公众号&#xff1a;PHP在线Git 究竟是怎样的一个系统呢&#xff1f;为什么在SVN作为版本控制工具已经非常流行的时候&#xff0c;还有Git这样一个版本控制工具呢&#xff1f;Git和SVN的区别在哪儿呢&#xff1f;Git优势又在哪呢&#xff1f;下面PHP程序员雷雪松带你一起详细…

python twisted和flask_浅谈Python Web 框架:Django, Twisted, Tornado, Flask, Cyclone 和 Pyramid...

Django 是一个高级的 Python Web 框架&#xff0c;支持快速开发&#xff0c;简洁、实用的设计。如果你正在建一个和电子商务网站相似的应用&#xff0c;那你应该选择用 Django 框架。它能使你快速完成工作&#xff0c;也不必担心太多的技术选择。它能提供从模版引擎到 ORM 所需…

spring-boot 定时任务

2019独角兽企业重金招聘Python工程师标准>>> 1、建立项目 SpringBootApplication EnableAsync EnableScheduling EnableAutoConfiguration(exclude{ DataSourceAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class}) ImportResource(…

使用Lightbox制作照片条

前言&#xff1a;这是国外的一个教程&#xff0c;我也很喜欢这个网页里面的教程&#xff0c;主要技术是CSS3和JQuery以及一些JQuery的插件的应用&#xff0c;当然从这些教程我也学到了他们制作时的一些思路&#xff0c;就好像做数学题那样&#xff0c;只要思路把握了&#xff0…

iOS- 如何改变section header

希望这个从UITableViewDelegate协议里得到的方法可以对你有所帮助&#xff1a; - (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {UIView *headerView [[[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.…

第6章 Python 数字图像处理(DIP) - 彩色图像处理2 - 灰度分层(灰度分割)和彩色编码,灰度值到彩色变换,Gray to RGB

第6章主要讲的是彩色图像处理&#xff0c;一些彩色模型如RGB&#xff0c;CMK&#xff0c;CMYK&#xff0c;HSI等色彩模型&#xff1b;彩色模型的变换关系&#xff1b;还包含由灰度图像怎样处理成假彩色图像&#xff1b;使用彩色分割图像等。本章比较少理论还有变换的描述&#…

值重新赋值_JavaScript-赋值运算符

好好学习&#xff0c;天天向上赋值运算符赋值运算符必须有变量参与运算&#xff0c;赋值运算符会做两件事情第一&#xff0c;将变量中原始值参与对应数学运算&#xff0c;与右侧的数据第二&#xff0c;将运算结果再重新赋值给变量变量位于操作符的左侧赋值运算符符号&#xff1…

超声换能器的原理及设计_超声波发生器、变幅杆、焊头的匹配介绍

一.超声波换能器原理与设计(超声波振动系统)匹配摘要&#xff1a;就塑料焊接机的超声波换能器系统进行设计和计算&#xff0c;并用PRO- E 三维软件绘出三维模型&#xff0c;最后进行频率分析&#xff0c;为超声波换能系统提供了有用的设计方法。关键词&#xff1a;超声波换能器…

位图法

判断集合中存在重复是常见编程任务之一&#xff0c;当集合中数据量比较大时我们通常希望少进行几次扫描&#xff0c;这时双重循环法就不可取了。位图法比较适合于这种情况&#xff0c;它的做法是按照集合中最大元素max创建一个长度为max1的新数组&#xff0c;然后再次扫描原数组…

CentOS查看和修改PATH环境变量的方法

为什么80%的码农都做不了架构师&#xff1f;>>> 查看PATH&#xff1a;echo $PATH 以添加mongodb server为列 修改方法一&#xff1a; export PATH/usr/local/mongodb/bin:$PATH //配置完后可以通过echo $PATH查看配置结果。 生效方法&#xff1a;立即生效 有效期限…

IOS简单的登陆界面

主要需要注意的几个问题&#xff1a; 1.导入图片方式最好用文件导入 代码: 在ViewController.m文件中 2.UILable常用属性 property(nonatomic,copy) NSString *text; //设置文本内容 property(nonatomic,retain) UIFont *font; //设置字体 …

第6章 Python 数字图像处理(DIP) - 彩色图像处理3 -色彩变换、彩色校正、彩色图像平滑和锐化、HSI彩色空间中的分割、RGB空间中的分割、彩色边缘检测

这里写目录标题色彩变换彩色图像平滑和锐化使用彩色分割图像HSI 彩色空间中的分割RGB空间中的分割彩色边缘检测彩色图像中的噪声色彩变换 # 图像颜色分量的显示 from PIL import Imageimg_ori Image.open(DIP_Figures/DIP3E_Original_Images_CH06/Fig0630(01)(strawberries_f…

javascript 在对象中使用 定时器_如何使用JavaScript 面向对象编程

学习目标理解面向对象开发思想掌握 JavaScript 面向对象开发相关模式面向对象介绍什么是对象Everything is object (一切皆对象)我们可以从两个层次来理解对象&#xff1a;(1) 对象是单个事物的抽象。一本书、一辆汽车、一个人都可以是对象&#xff0c;一个数据库、一张网页、一…

char数组转string_String类和其它数据类型的相互转换

对于上面的这些包装类&#xff0c;除了Character以外&#xff0c;都有可以直接使用字符串参数的构造函数&#xff0c;这也就使得我们将String类转换为这些数据类型变得相当之简单&#xff0c;即&#xff1a;Boolean(String s)、Integer(String s)、Long(String s)、Float(Strin…

ORACLE 各种闪回操作

1、Flashback Database&#xff08;利用闪回日志恢复&#xff09; Oracle Flashback Database特性允许通过SQL语句Flashback Database语句&#xff0c;让数据库前滚到当前的前一个时间点或者SCN&#xff0c;而不需要做时间点的恢复。闪回数据库可以迅速将数据库回到误操作或人为…

【转】介绍设置Session失效的几种方法

转载地址&#xff1a;http://developer.51cto.com/art/201106/269493.htm Session对象是HttpSessionState的一个实例。该类为当前用户会话提供信息&#xff0c;还提供对可用于存储信息会话范围的缓存的访问&#xff0c;以及控制如何管理会话的方法。下面介绍设置session失效的几…