历时近乎一周终于将串口与摄像头调试完成,不知为何树莓派4B的参考资料很少,而且目前网络上可以查到的资料与调试错误的结果很多都有问题,在经历了无数的尝试之后现将总结在此写下

一、串口

树莓派内置了一个称之为硬件串口(/dev/ttyAMA0),一个称之为mini串口(/dev/ttyS0)在树莓派中,由于板载蓝牙模块,硬件串口被默认分配给与蓝牙模块通信了,而把那个mini串口默认分配给了排针引出的GPIO(14,15),serial0是GPIO引脚对应的串口,serial1是蓝牙对应的串口。如图所示,serial0(GPIO串口)默认使用的是ttyS0(mini串口),serial1(蓝牙)使用的是ttyAMA0(硬件串口)

输入命令

ls -l /dev/serial*

默认情况下只有一个串口,我这个是已经把第二个打开了

树莓派4B的串口与3B或3B+有很大不同,树莓派4B的串口的调用配置与驱动方式系统和树莓派系统版本有关系,而且驱动的文件内容也发生了改变,在尝试的过程中发现有部分文件并不存在,或者名称发生了改变需要特别注意,armhf版本与32位的所有型号系统目前都没发现如何进行正确的配置,无论怎么去操作,mini串口与硬件串口都无法实现调换,而且树莓派4B与wiringpi库有些不兼容,可能无法安装需要去单独下载具体可以参考

树莓派学习笔记(番外篇)——调试bug及解决办法(不断更新)_天宠 貔貅的博客-CSDN博客

1.1方法一配置

可以在树莓派里面操作根目录里面的config.txt文件

sudo vi /boot/config.txt

打开文件后输入

dtoverlay=miniuart-bt.dtbo          #硬件串口与mini串口调换在树莓派3中为#dtoverlay=pi3-miniuart-bt
enable_uart=1                       #启动串口

注意树莓派4B中控制串口调换的文件时miniuart-bt.dtbo

打开串口配置文件cmdline.txt

sudo gedit /boot/cmdline.txt

删除console=serial1,115200保存重启就可以了

sudo reboot        #重启

转换完成:

配置完成后可利用一下代码段结合电脑的串口助手进行验证:

#include <stdio.h>
#include <wiringPi.h>
#include <wiringSerial.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>int main()
{char buf[64] = {'\0'};int n_read;wiringPiSetup();int fd =serialOpen("/dev/ttyAMA0",115200); while(1){n_read = read(fd,buf,sizeof(buf));if(n_read != 0){printf("data %dB:%s\n",n_read,buf);            }  else{serialPrintf(fd,"hello world!!\n"); delay(3000);}sleep(1);            }return 0;
}

1.2方法二

如果觉得在树莓派中操作有些不方便可以在系统烧录后在系统虚拟出的系统盘进行操作,在系统盘中找到cmdline.txt文件和config.txt文件进行以上操作,就不用在进行重启,更改完成后可直接使用。

二.摄像头
摄像头使用的是mjpg-streamer对摄像头进行驱动

2.1配置步骤:

打开控制台:

    sudo raspi-config

打开摄像头:

重启:

sudo reboot

2.2:安装所需模块

sudo apt-get update                     #更新软件列表
sudo apt-get upgrade                    #更新软件
sudo apt-get install subversion
sudo apt-get install libjpeg62-turbo-dev#JPEG支持库不同的系统可能不同,树莓派#3B是libjpeg8-devsudo,#4B的armfh支持libjpeg9-devsudo#可以先运行这条命令,如若系统不支持时根据系统会提示正确的库型号安装
sudo apt-get install imagemagick         #安装imagemagick图像处理插件
sudo apt-get install libv4l-dev          #安装CSI摄像头插件uv4l不同版本的下载地址不同
sudo apt-get install cmake               #下载编译工具
sudo apt-get install git                 #安装git插件

2.3从git克隆一个源码

git clone https://github.com/jacksonliam/mjpg-streamer.git

2.4进入下载目录后进入左侧路径

cd mjpg-streamer/mjpg-streamer-experimental

2.5编译

make all

2.6安装

sudo make install

2.7如果使用的是USB摄像头此时只需要运行start.sh文件即可(这一点很奇怪,再后来验证过程中发现有时4B可以直接通过这个命令打开树莓派摄像头而不是USB摄像头,如果使用的是4B建议先用这个命令试一下,我使用的是arm64版本的系统,而且根据UV4l官网https://www.linux-projects.org/uv4l/installation/的描述UVl4好像并不支持4B的64位系统,而且在安装时也会提示不支持这一点很奇怪,如果调不出来,再进行下面2.8的操作)

./start.sh

否则需要更改此文件

sudo vi start.sh

./mjpg_streamer -i "./input_uvc.so" -o "./output_http.so -w ./www"
中的"./input_uvc.so"改为"./input_raspicam.so"

注意:此方法只可以在树莓派3B系列中使用

2.8在树莓派4B中需要安装uv4l驱动:

2.8.1安装必要的库:

    wget http://www.linux-projects.org/listing/uv4l_repo/lrkey.asc && sudo apt-key add ./lrkey.asc

2.8.2修改sources list

    sudo vi /etc/apt/sources.list

2.8.3在最后加上一行:

    deb http://www.linux-projects.org/listing/uv4l_repo/raspbian/stretch stretch main

2.8.4继续安装UV4L:

    sudo apt-get updatesudo apt-get install uv4l uv4l-raspicamsudo reboot

2.8.5重启之后:

    sudo pkill uv4lsudo apt-get updatesudo apt-get install uv4l-uvcsudo apt-get install uv4l-xscreensudo apt-get install uv4l-mjpegstreamsudo reboot

2.8.6再一次重启之后:

    sudo modprobe bcm2835-v4l2./mjpg_streamer -i "./input_uvc.so -d /dev/video0 -n -y -f 25 -r 640x480" -o "./output_http.so -n -w /usr/local/www"

如果在此过程中报错参考:

树莓派学习笔记(番外篇)——调试bug及解决办法(不断更新)_天宠 貔貅的博客-CSDN博客

注意:

    sudo modprobe bcm2835-v4l2       #这条命令是每一次都要先执行然后才可以打开摄像头

2.9运行

./start.sh

然后打开浏览器输入以下地址即可以查看摄像头

http://raspi_IP:8080/index.html

树莓派学习笔记——串口与摄像头相关推荐

  1. 树莓派学习笔记(5):成功实现NAS家庭服务器(流媒体播放、文件共享及下载机)

    一.家庭服务器实现的主要功能 http://www.cnblogs.com/xiaowuyi/p/4051238.html 1.流媒体播放服务:利用DLNA实现电视.手机.电脑播放其上面的媒体文件. ...

  2. 【树莓派学习笔记】树莓派4B上运行uboot并从网络启动linux内核(上)

    [树莓派学习笔记]树莓派4B上运行uboot并从网络启动linux内核(上) 文章目录 [树莓派学习笔记]树莓派4B上运行uboot并从网络启动linux内核(上) 前言 1. 硬件需求与软件版本汇总 ...

  3. 树莓派学习笔记——wiringPi简介、安装和管脚说明

    1.WiringPi简介 WiringPi是应用于树莓派平台的GPIO控制库函数,WiringPi遵守GUN Lv3.wiringPi使用C或者C++开发并且可以被其他语言包转,例如python.ru ...

  4. 树莓派学习笔记——yeelink 远程控制LED

    1.前言 前段时间玩了树莓派的GPIO,串口和I2C接口,把树莓派当成单片机来玩,期间深入分析了wiringPi.相对于单片机,以Linux为操作系统的树莓派在网络功能方面要强大的多,下面就结合当下流 ...

  5. 树莓派学习笔记(一)

    树莓派学习笔记 笔记来自B站UP主[树小悉]的树莓派系列视频的听课笔记,通俗易懂,风趣幽默,适合新手入门,强烈推荐!!! 关机命令 sudo poweroff 关闭电源 sodo shutdown - ...

  6. 树莓派学习笔记——GPIO功能学习

    0.前言 树莓派现在越来越火,网上树莓派的资料也越来越多.树莓派源自英国,国外嵌入式开源领域具有良好的分享精神,树莓派各种集成库也层出不穷,下面推荐几个. [ python GPIO ] [开发语言] ...

  7. 树莓派学习笔记—— 源代码方式安装opencv

    0.前言 本文介绍如何在树莓派中通过编译源代码的方式安装opencv,并通过一个简单的例子说明如何使用opencv. 更多内容请参考--[树莓派学习笔记--索引博文] 1.下载若干依赖项 在开始安装之 ...

  8. 树莓派学习笔记——Wifi AP热点模式 使用RT5370

    0.前言 本文详细说明为树莓派增加Wifi AP热点功能的具体步骤.配置完成之后,树莓派将增加一个Wifi热点功能,使用笔记本或手机便可连接树莓派,树莓派具有了AP热点功能,可更一步扩展树莓派相关的W ...

  9. 树莓派学习笔记——Python SQLite插入温度记录

    0 前言 本文使用python向SQLite数据库中插入树莓派温度数据,SQLite数据库中包含一张只包含三个字段的记录表--参数名称,时间和温度值.本文重点解释Python操作SQlite的具体方法 ...

  10. 树莓派学习笔记——获取树莓派CPU温度

    0 前言 本文通过文件操作读取树莓派CPU温度,在linux系统中任何设备的操作都被抽象成为文件读写,通过读取/sys/class/thermal/thermal_zone0/temp文件中的内容便获 ...

最新文章

  1. 罗辑思维在全链路压测方面的实践和工作笔记
  2. 配置虚拟机和网络配置
  3. 不会但一定要了解的方面,python列表解析方式
  4. 基于react开发package.json的配置
  5. mysql新增用户和删除用户
  6. python的数据库_python数据库操作-mysql数据库
  7. Linux开发_反编译开发_破解简单登录程序外加缓冲区溢出攻击
  8. linux中启动与终止lnmp的脚本
  9. Qt配置OpenCV时mingw32-make反复出错的原因
  10. 2022年网络安全行业发展趋势
  11. 打开mysql 的时候报错_关于mysql的启动报错处理
  12. 航空网站航班查询自动点击提醒器
  13. matlab怎样编程形成软件_Matlab编程笔记之GUI程序转exe
  14. 用户画像基础之数据架构
  15. PyTorch入门: Kaggle 泰坦尼克幸存者预测
  16. wap网站服务器要求,使您的WEB服务器支持WAP数据发送
  17. 跟着这份清理教程,帮你的 Mac 腾出更多储存空间
  18. 期货软件开发 期货分仓系统搭建
  19. 北方民族大学计算机考研资料汇总
  20. JavaScript 实现页面滚动动画

热门文章

  1. dx12的resource barrier
  2. 【实践】基于CentOS7部署Ceph集群(版本10.2.2)
  3. 网络安全实战之植入后门程序
  4. 前端换肤的N种方案,请收下
  5. 对话《JavaScript高级程序设计》作者 Nicholas C. Zakas
  6. 鸿蒙开放beta版有什么用,鸿蒙2.0beta活动有什么内容 鸿蒙2.0 Beta手机版什么时候发布...
  7. 基于BottledWater-PG+nodejs实时地图应用实践
  8. 感谢同事的临别赠言,愿自己一路顺风
  9. arcgis runtime for android 100.13.0 入门系列,三、加载shp,kml,tpk文件,图层定位,toolkit工具
  10. 武汉江夏区计算机大专,武汉江夏职业技术学校2021年招生简章