首页 > 其他分享 >树莓派串口通信开发记录

树莓派串口通信开发记录

时间:2025-01-19 12:44:08浏览次数:1  
标签:树莓 sudo 通信 dtoverlay ssh 串口 安装

树莓派开发记录:

开发系统及代码编辑软件安装

1.通过安装软件Rasperry Pi Imager实现系统镜像流程化烧写进SD卡
2.在VScode官网选择相对应的基于树莓派ARM64或32架构的版本,下载相应的deb文件: sudo dpkg -i Desktop/code_1.60.2-1632316275_armhf.deb (替换为自己的路径)
3.在命令行中查看GCC版本: gcc -v
如果未安装gcc,通过命令行安装,先更新Unbuntu包列表: sudo apt-get update
接着安装linux下的GNU编译工具和GDB调试器: sudo apt-get install build-essential gdb
通过命令查看版本号: gcc --version
g++ --version
gdb --version
4.通过命令行在指定文件夹打开vscode: code .

关于树莓派串口库wiringpi的安装及串口配置

1.验证是否有该库:在命令行中输入命令gpio -v,若输出wiringPi相关信息则说明已有该库
2.新建一个存放wiringPi源码的文件夹(mkdir work),这里命名为work
3.进入刚刚建立的文件夹(cd work/),并通过以下命令获取wiringPi源码
git clone https://github.com/WiringPi/WiringPi.git(可能提示git无法识别,按提示对git工具安装即可)
如果发现git网站无法登入,可以直接在浏览器中进入下载相应的包,然后dpkg安装
4.进入wiringpi文件夹(cd WiringPi/),对其进行安装(./build),安装完成后可再次查看gpio版本,并可查看所有引脚信息(gpio readall
5.下面开始修改串口引脚映射关系,sudo nano /boot/firmware/config.txt 进入配置文件中,在文件末尾添加enable_uart=1,保存重启(sudo reboot
6.查看设备文件(ls -l /dev),出现serial0和serial1则启用成功,接着在配置文件中继续添加dtoverlay=disable-bt,并在终端中执行sudo systemctl disable bluetooth以禁用蓝牙功能
7.重启设备再次查看设备文件,检查设备串口是否调换。4B型有多个串口,可用命令(dtoverlay -a | grep uart)查看所有串口资源,用命令(dtoverlay -h uart0)查看指定串口信息
8.若要启用其余所有串口,可进入配置文件中,添加

    dtoverlay=uart2
    dtoverlay=uart3
    dtoverlay=uart4
    dtoverlay=uart5

重启即可生效
9.在编辑使用了wiringpi库函数的代码时,需要包含.h文件,并在编译链接时-lwiringPi

关于启用SSH服务并通过网线连接树莓派

1.ssh localhost以判断是否安装SSH服务
2.sudo apt-get install openssh-server安装该服务,通过ps -e | grep ssh查看是否安装正常,sudo /etc/init.d/ssh start #开始服务 sudo /etc/init.d/ssh stop #停止服务sudo /etc/init.d/ssh restart #重启服务
3.sudo nano /etc/rc.local打开并编辑该文件,添加/etc/init.d/ssh start并保存,可使得ssh服务开机启动
4.树莓派终端中输入hostname,可得到当前主机名称
5.在已连接好网线的情况下,在windows的终端中输入ping '4中看到的主机名' -4,可判断连接是否正常,同时获得树莓派的IP地址
6.在putty中键入ip地址即可连接
7.上述IP可能是因特网中的IP,可能需要连在同一局域网中方可PING通,实际上在没有互联网时,可手动在树莓派的有线连接网络中更改IPv4地址同windows电脑上该
网线另一端ip地址到同一网段下即可PING通,如在树莓派中指定该网线连接为192.168.1.101,在Windows中指定为192.168.1.100,终端中输入ping 192.168.1.101即可成功。

关于树莓派串口通讯速率的问题

1.由于树莓派串口电平为UART的ttl电平,因此需要额外的电平转换芯片,由此带来了通信波特率受限的问题,经查,转换芯片最高支持120kbps波特率,因此采用115200.
2.由于115200较921600更慢,在传输气动或者弹道等大数据量包时需要加RTsleep延时,以消去两端因时钟频率差异造成的数据传输问题,原921600波特率对应rtsleep(1),
此处修改为rtsleep(10),同时在树莓派端打印接收数据个数以实时监测传输。

关于设置树莓派频率的问题

1.安装cpufrequtils(sudo apt-get install cpufrequtils
2.设置CPU核心频率
(cpufreq-set -c 0 -f 1.5GHz
cpufreq-set -c 1 -f 1.2GHz
cpufreq-set -c 2 -f 900MHz)
3.调整CPU频率上下限
(cpufreq-set -d 频率下限
cpufreq-set -u 频率上限)
4.查看当前CPU运行频率(sudo cpufreq-info -w -m

树莓派4B硬件配置如下

rpi-pins-40-0

标签:树莓,sudo,通信,dtoverlay,ssh,串口,安装
From: https://www.cnblogs.com/banmaxx/p/18679486

相关文章

  • (原创)[开源][.Net Standard 2.0] SimpleMMF (进程间通信框架)更新 v1.1,极低CPU占用
    一、前言在上一篇(原创)[.Net]进程间通信框架(基于共享内存)——SimpleMMF中,发布了v1.0版,最大的问题是:CPU占用较高,至少40-50%。这既与我的开发水平有关,也与SimpleMMF诞生环境有关,这个主要是用在数字孪生各软件之间同步数据,而部署软件的工作站性能都强悍,像我常用的便是一个有着19......
  • 【Linux探索学习】第二十六弹——进程通信:深入理解Linux中的进程通信
    Linux探索学习:https://blog.csdn.net/2301_80220607/category_12805278.html?spm=1001.2014.3001.5482前言:在Linux操作系统中,进程通信(IPC)是操作系统的一项核心功能,用于在不同进程之间交换数据或信号。这种能力在多任务操作系统中尤为重要,因为进程之间通常需要协作完成复杂......
  • 操作系统进程-进程间通信的概述、匿名管道pipe和有名管道mkfifo函数的介绍及应用
    进程间通信(IPC)概述进程间通信(InterProcessCommunication)是指在两个或多个不同的进程间传递或者交换信息。进程是一个独立的资源管理单元,不同的进程之间资源是独立的,不能在一个进程中直接访问另一个进程的资源,但是进程间不是孤立的,也需要一些信息的交互和状态传递,所以就......
  • 【STM32-学习笔记-7-】USART串口通信
    文章目录USART串口通信Ⅰ、硬件电路Ⅱ、常见的电平标准Ⅲ、串口参数及时序Ⅳ、STM32的USART简介数据帧起始位侦测数据采样波特率发生器Ⅴ、USART函数介绍Ⅵ、USART_InitTypeDef结构体参数1、USART_BaudRate2、USART_WordLength3、USART_StopBits4、USART_Parity5、USART......
  • 【STM32-学习笔记-8-】I2C通信
    文章目录I2C通信Ⅰ、硬件电路Ⅱ、IIC时序基本单元①起始条件②终止条件③发送一个字节④接收一个字节⑤发送应答⑥接收应答Ⅲ、IIC时序①指定地址写②当前地址读③指定地址读Ⅳ、MPU6050---6轴姿态传感器(软件I2C)1、模块内部电路2、寄存器地址3、软件模拟IIC①......
  • 【STM32-学习笔记-9-】SPI通信
    文章目录SPI通信Ⅰ、SPI通信概述1、SPI技术规格2、SPI应用3、硬件电路移位示意图Ⅱ、SPI时序基本单元①、起始条件②、终止条件③、交换一个字节(模式0)④、交换一个字节(模式1)⑤、交换一个字节(模式2)⑥、交换一个字节(模式3)Ⅲ、SPI时序①、发送指令②、指定地址写③、指......
  • 系统编程(进程通信--消息队列)
    消息队列概念:消息队列就是一个消息的链表,提供了一种由一个进程向另一个进程发送块数据的方法。另外,每一个数据块被看作有一个类型,而接收进程可以独立接收具有不同类型的数据块,在许多方面看来,消息队列类似于有名管道,但是却没有与打开与关闭管道的复杂关联。优点:1.通过发......
  • 系统编程(进程通信--信号进阶)
    常见问题解决vscode远程连接虚拟机上ubuntu系统,在编写代码时用到的Linux系统函数或者某些常量不提醒或者报红色波浪线的问题:信号的屏蔽和解除信号的屏蔽和解除屏蔽函数的基本使用:#include<stdio.h>#include"header.h"voidhandler(intsignum){pri......
  • 系统编程(进程通信--综合练习)
    实现两个没有亲缘关系的进程之间通过共享内存实现一个小文件(小于10K)的数据拷贝。(可申请文件大小的共享内存,一次性写入文件所有内容,读取共享内存的进程访问数据后,进行文件存储)思路要实现两个进程之间通过共享内存进行文件拷贝,可以按照以下步骤进行:创建共享内存:进程A创......
  • 单片机毕业设计之stm32单片机物联网远程心率血氧MAX30102健康监控系统,老人健康监测+行
    一、设计简介        本项目旨在利用STM32F103C8T6微控制器为核心,构建一个实时人体健康监测系统。该系统集成了多种传感器和模块,能够全面、准确地监测并显示人体的关键健康数据,同时提供异常报警功能,还通过蓝牙通信功能实现了数据的远程传输和记录,方便用户随时了解自己......