IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 树莓派外设开发基础—串口通信 -> 正文阅读

[嵌入式]树莓派外设开发基础—串口通信


一、串口通信的一些概念

串口通信通常用在多机通信中。
串口通信是全双工的,那什么是全双工呢?
打个比方,一男一女在电话争吵,双方都能同时说话,对方也都能听到。

串口通信有两根数据线:Rx Tx
比如树莓派要和51单片机通信,将树莓派的R接到51的T,树莓派的T接到51的R(当然还要供电,就不啰嗦了)。就可以实现树莓派和单片机的交互了,双方都可以收发数据。当然你也可以只接一根,就变成单工了,只允许数据单向流动。

串口通信的双方必须要遵循特定的串口通信协议才能实现双方数据收发,就像两个人对话一样,语言相通,语速一致,才能实现对话。
在串口通信中,语言可以理解为数据格式(数据位、停止位、奇偶校验位),语速可以理解为波特率。

以上在串口通信的面试中已经足够了

二、树莓派串口通信设置

这一步是很重要的,因为树莓派3b的串口默认是被蓝牙占用的,也就会默认是用于蓝牙的。

但在前面的学习中,我们对树莓派的串口进行过一次设置或者说配置,就是解除了串口的蓝牙占用,用于串口登录,通过串口打印一些系统初始化的信息。

现在需要再次修改配置信息,来设置用于串口通信。配置方法如下:
①进入该目录 /boot/,打开cmdline.txt文件

cd /boot/
sudo vi cmdline.txt

进入该文件后,删除红色方框内容
在这里插入图片描述
删除后保存退出,删除后为:
在这里插入图片描述
②重启

sudo reboot

三、树莓派串口通信API

用到串口通信API需要包含头文件:

#include <wiringSerial.h>

串口常见的API参考文章:树莓派wiringPi库详解

四、树莓派与PC通信

将树莓派与电脑进行连接,测试一下树莓派与电脑的串口通信。

1.接线

TTL与树莓派TX,RX连接后插入电脑端口,注意是交叉接线,最后TTL与树莓派还要共地稳压,保证数据正常沟通。一共三根线,Rx ——Tx、Tx——Rx、GND——GND。最后别忘记给树莓派供电哦!
在这里插入图片描述

2.程序与测试

我们要实现的功能是树莓派与电脑的双工通信,也就是树莓派向PC发送数据,看PC是否接收到;PC向树莓派发送数据,看树莓派是否接收到。我们可以通过串口助手来查看树莓派发上来的数据以及模拟发送数据给树莓派。

①树莓派通过串口发送数据给PC
程序如下:

#include <wiringPi.h>
#include <wiringSerial.h>
#include <stdio.h>

int main()
{
        int fd;
        if(wiringPiSetup() == -1)
        {
                printf("硬件初始化失败\n");
        }
        fd = serialOpen("/dev/ttyAMA0",9600);	//Linux下一切皆文件
        while(1)
        {
                serialPutchar(fd,'c');
                //serialPuts(fd,"Hello World!\n");
                delayMicroseconds(1000000);		//延时函数
        }
        return 0;
}

我们在PC端打开串口调试助手,注意选对端口,波特率与程序中设置的一致。
结果如下:
每隔一秒钟通过串口向PC段发送一个字符 ‘c’
在这里插入图片描述
②PC通过串口发送数据发送给树莓派
程序如下:

#include <wiringPi.h>
#include <wiringSerial.h>
#include <stdio.h>

int main()
{
        int fd;
        int cmd;

        if(wiringPiSetup() == -1)
        {
                printf("硬件初始化失败\n");
        }
        fd = serialOpen("/dev/ttyAMA0",9600);
        while(1)
        {
                while(serialDataAvail(fd) != -1){
                        cmd = serialGetchar(fd);	//读串口数据
                        printf("get data is %d\n",cmd);
                }
        }
        return 0;
}

结果如下:
我们通过串口调试助手发送整型数 5
在这里插入图片描述
树莓派接收到的数据也是 5
在这里插入图片描述
③树莓派与PC交互
程序:

#include <wiringPi.h>
#include <wiringSerial.h>
#include <stdio.h>

int main()
{

	int fd;
	int cmd;

	if(wiringPiSetup() == -1)
	{
		printf("硬件初始化失败\n");
	}

	fd = serialOpen("/dev/ttyAMA0",9600);	//打开串口

	while(1)
	{
		while(serialDataAvail(fd) != -1)
		{

			cmd = serialGetchar(fd);

			if(cmd == '2')
			{
				serialPuts(fd,"Pi receive 2 from you!\n");
			}
			if(cmd == '3')
			{
				serialPuts(fd,"Pi receive 3 from you!\n");
			}
			if(cmd == '4')
			{
				serialPuts(fd,"Pi receive 4 from you!\n");
			}
		}
	}
	return 0;
}

结果如下:
在这里插入图片描述
后续我们可以将树莓派与语音模块结合起来,将语音模块获取的指令通过串口发送给树莓派,树莓派根据不同的指令执行不同的操作。

拓展

通过这一节对串口通信的学习,对串口通信有了一定了解。由此可以进行拓展,为后面智能家居项目服务。

树莓派与语音模块的串口通信,实现语音控制各种灯或其它设备:
语音模块接收到指令后通过串口向树莓派发送相关数据,树莓派根据接收到的数据,选择进行不同到的动作,进而实现对不同设备的控制。当前,树莓派也可以通过串口连接51或者32,将接收到的数据(指令)转发给单片机,单片机根据不同的指令去进行不同的动作。

参考文章:
树莓派wiringPi库详解
树莓派串口通信

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-09-07 10:59:11  更:2021-09-07 11:00:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 0:43:01-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码