自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(134)
  • 收藏
  • 关注

原创 从零开始使用matlab实现EKF-SLAM算法(含完整代码)

扩展卡尔曼滤波器同步定位与建图 (EKF-SLAM) 算法建立在 EKF 的基础上,集成了 EKF 的功能,可解决机器人技术中最具挑战性的问题之一:同时定位与建图 (SLAM)。 EKF-SLAM采用EKF方法来同时估计机器人的状态和周围环境的布局,而无需事先了解位置。 这种双重功能对于在未知环境中运行的自主系统至关重要,使它们能够在绘制区域地图时有效导航。 EKF-SLAM 算法一直是自动驾驶车辆和机器人系统开发的基石,为处理现实世界环境中固有的不确定性提供了一个强大的框架。

2024-04-27 13:59:06 374

原创 在树莓派中安装alloma

最近刷短视频的时候无意间了解到了Ollama,他是一个可以下载到本地的大语言模型,而且提供了linux的下载版本,所以我尝试将Ollama下载到我的树莓派中

2024-03-31 23:24:49 221

原创 从零开始 使用OMNET++结合VEINS,INET和SUMO的联合仿真

搭建仿真的环境,导入VEINS和INET开源库,使用INET库中提供的网络协议和功能模型来模拟通信协议和网络功能,使用SUMO创建道路网络和车辆轨迹,并导出到OMNeT++中在OMNeT++中使用VEINS通过socket和SUMO连接,借助VEINS实现的TRACI接口来设置车辆相关的行为和场景,最后在OMNET++中结合VEINS,SUMO和INET运行联合仿真实验,并分析车辆在遇到紧急情况下的通信状况和具体行为

2024-03-31 07:34:34 1212 2

原创 基于树莓派实现 --- 智能家居

到目前为止,对于linux的嵌入式软件开发,从底层到上层都有了一定的认识。这个项目的初衷就是整合知识并以工厂模式的架构开发项目

2024-03-19 13:55:38 2193 3

原创 使用树莓派 结合Python Adafruit驱动OLED屏幕 显示实时视频

使用Python Adafruit驱动OLED屏幕实现在屏幕上实时视频流的显示

2024-03-19 03:38:08 851

原创 基于阿里云平台 通过树莓派实现 1:1人脸识别

尝试在树莓派上通过阿里云平台的服务实现人脸识别

2024-03-02 04:22:12 947

原创 树莓派接入USB摄像头并使用fswebcam和mjpg-streamer进行测试

在我之前的博文里,将USB摄像头接入了香橙派并实现了垃圾类型识别;现在尝试将相同的USB摄像头接入树莓派!并测试拍照,视频流等功能,最后实现mjpg-streamer的开机自启功能!

2024-02-27 01:26:28 1033

原创 软件设计模式 --- 类,对象和工厂模式的引入

软件设计模式,又称设计模式。它是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。综上:设计模式就是泛指一系列编程的思想,是代码设计经验的总结,基于设计模式来开发代码可以使得程序更加稳定,拓展性更强。

2024-01-02 05:43:27 1046

原创 驱动开发的完善 --- 芯片手册导读 + I/O口操控代码的编写

​在我上上节的博文中,我通过一个基本的字符设备驱动框架来测试了驱动的运行,但是在“pin4_open”和“pin4_write”这两个驱动函数的函数体里只写了一句内核打印的代码,作为一个真正的驱动文件这显然是不够的。同时,在之前的博文中就提到过,驱动位于内核态的最底层,其下方就直接是硬件,所以驱动函数的目标就是直接操控硬件,也就是直接操控寄存器。在我的pin4驱动函数中应该添加的也就是根据函数功能,操作寄存器从

2023-12-22 08:11:28 1036

原创 总线地址/物理地址/虚拟地址

总线地址&物理地址&虚拟地址 的概念扫盲

2023-12-20 07:43:36 921

原创 linux驱动的学习 & 驱动开发初识

驱动与底层硬件直接打交道,充当了硬件(设备)与应用软件中间的桥梁;Linux驱动分为三个基础大类:字符设备驱动,块设备驱动,网络设备驱动......

2023-12-18 05:28:41 957

原创 Linux的文件系统 & 内核结构

在学术的角度下,文件系统指“操作系统用于明确存储设备组织文件的方法”,是“文件管理系统”的简称,本质也是代码,一段程序

2023-12-16 04:43:43 183

原创 [树莓派3B+]&[内核版本6.1]的linux内核编译+替换 (超详细)

虽然Linux内核源码有上万行,但是Linux内核编译出来只有若干个M,其原因是编译的时候是针对一个特定平台,所以不是所有的代码都会参与编译。这也再次解释了为什么Linux的可移植性会如此强大。也正是因为Linux强大的可移植性,针对不同的目标平台(ARM?X86?PowerPC?),在进行内核编译之前,就需要针对性的配置。内核配置完成后,就可以结合交叉编译工具链进行内核编译了!

2023-12-02 08:45:49 688 4

原创 在ubuntu虚拟机上安装不同版本的交叉编译工具链

在之前的章节中,学习了如何安装了4.8.3的交叉编译工具链;但是,在之后学习内核编译时,由于我的树莓派内核版本较高,为6.1,所以在使用4.8.3版本的交叉编译工具链来进行内核配置的时候会提示版本过低,所以只好安装更高版本的交叉编译工具链

2023-12-01 03:28:09 298

原创 使用gparted进行ubuntu虚拟机的磁盘扩容(解决gparted无法拖动分区的问题)

在学习内核编译下载linux内核源码的时候,由于源码非常大,下载的时候提示磁盘空间不足,我才意识到刚开始创建虚拟机的时候分配了20GB的空间现在已经快用光了。在VM的设置里可以进行扩容,我扩展到了30GB重启却发现空间并没有加到我使用的磁盘中,于是尝试使用gparted将我扩容的10GB添加到现在的磁盘,却发现没有权限,最后阅读以下这篇文章,通过安装gparted镜像并BISO进入系统最后成功扩容

2023-12-01 03:13:24 1337

原创 ubuntu虚拟机设置跳不出来

前几天在使用ubuntu虚拟机的时候不知道哪一步出错了,导致右上角的设置按钮失效了,怎么点设置界面都出不来

2023-11-28 03:16:53 489

原创 交叉编译 和 软硬链接 的初识(面试重点)

交叉编译是在一个平台上生成另一个平台上的可执行代码

2023-11-26 13:29:28 383 1

原创 虚拟机可ping树莓派&树莓派无法ping虚拟机 的解决办法

在学习交叉编译的过程中,发现了树莓派无法ping通虚拟机的问题

2023-11-26 05:48:16 461 1

原创 树莓派的的串口通信协议

首先,回顾一下串口的核心知识点,也是面试重点:串口通信通常使用在多机通讯中串口通信是全双工的决定串口通信的成功与否的是 数据格式 和 波特率数据格式:1. 数据位 2.停止位 3. 奇偶校验位

2023-11-22 01:08:53 295

原创 树莓派的外设开发---树莓派中的wiringPi库

wiringPi库其实已经很熟悉了,在香橙派中大量使用过,这个库中集成了很多使用的功能性函数。现在在树莓派上也安装wiringPi库并使用它。

2023-11-21 08:15:48 129

原创 使用树莓派学习Linux系统编程的 --- 库编程(面试重点)

在之前的Linux系统编程中,学习了文件的打开;关闭;读写;进程;线程等概念....本节补充“Linux库概念 & 相关编程”,这是一个面试的重点!库(程序函数库)是一种可执行的二进制形式、就是将源代码转化为二进制格式,相当于进行了加密,别人可以使用库,但是看不到库中的内容。

2023-11-21 03:27:33 563

原创 RasberryPi 3B+ 树莓派 初识---树莓派刷机全过程

关于香橙派的学习暂时告一段落,从本节开始学习树莓派3B+!还是从刷机开始!

2023-11-18 09:31:50 402

原创 使用香橙派并基于Linux实现最终版智能垃圾桶项目 --- 下

在上节已经完成了对于前7个功能的编写,本节完成最后一个需求,使用第三方库结合python实现图像识别垃圾分类功能!

2023-10-24 12:47:31 1343 5

原创 小插曲 -- 使用Visual Studio Code远程连接香橙派

在之前的学习中,代码的修改和保存都依赖于“vi”指令,而不得不承认vi指令的编辑界面非常原始,所以,如果可以将代码编辑放到更友好的环境里进行无疑是一件大快人心的事情。本节介绍如何通过Visual Studio Code来进行远程连接!

2023-10-23 03:27:36 1105

原创 使用香橙派并基于Linux实现最终版智能垃圾桶项目 --- 上

靠近时,垃圾桶开启2秒,2秒后关闭;垃圾桶开启带滴滴声;垃圾桶开启超过10秒,滴滴声警报;实现Sockect客户端发送指令远程打开/关闭垃圾桶,并显示垃圾桶状态;语音控制垃圾桶开关盖;统计当天垃圾桶开关盖次数及开关盖指令来源并记录在文件中;统计当天垃圾桶开关盖次数及开关盖指令来源并记录在数据库中

2023-10-10 05:37:16 665

原创 使用香橙派 在Linux环境中安装并学习Python

Python是作为一名合格的嵌入式工程师所必备的技能之一,本节就开始学习Python,主要的学习目标是:用C语言的视角学习python基本概念,学习C语言的Python接口

2023-09-27 02:01:52 911

原创 基于C语言实现 SQL数据库和链表的相互转换

基于C语言实现 SQL数据库和链表的相互转换

2023-09-24 23:23:50 72

原创 使用香橙派学习 嵌入式数据库---SQLite

SQLite是一个无服务器的数据库,是自包含的。这也称为嵌入式数据库,这意味着数据库引擎作 为应用程序的一部分运行。

2023-09-24 10:15:38 305

原创 使用香橙派学习Linux udev的rules 并实现U盘的自动挂载

udev是一个设备管理工具,udev以守护进程的形式运行,通过侦听内核发出来的uevent来管理/dev目录下的设备文件。udev在用户空间运行,而不在内核空间 运行。它能够根据系统中的硬 件设备的状态动态更新设备文件,包括设备文件的创建,删除等。设备文件通常放在/dev目录下。使用udev后,在/dev目录下就只包含系统中真正存在的设备。

2023-09-20 01:41:03 1796

原创 使用香橙派学习 Linux的守护进程

Linux Daemon(守护进程)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行 某种任务或等待处理某些发生的事件。它不需要用户输入就能运行而且提供某种服务,不是对整个系统就是对某个用户程序提供服务。Linux系统的大多数服务器就是通过守护进程实现的。常见的 守护进程包括系统日志进程syslogd、 web服务器httpd、邮件服务器sendmail和数据库服务器 mysqld,守护进程的名称通常以d结尾

2023-09-19 23:10:26 310

原创 小插曲 -- 使用Linux编写 判断程序是否在运行的小程序

使用popen函数来执行“ps -elf |grep XXX|grep -v grep”,然后读取执行的结果,如果不为空且包含“XXX”,就说明程序正在运行!否则就是不在运行!

2023-09-19 03:08:17 638

原创 基于香橙派和SU-03T 使用Linux实现语音控制刷抖音

通过语音指令来控制安卓手机刷抖音,可以实现视频切换和点赞等功能

2023-09-17 06:08:00 484 2

原创 使用香橙派 学习Linux的串口开发

对应驱动ttyS0对应驱动ttyS5然后通过串口接到相对高级的香橙派或其他芯片。

2023-09-14 05:25:21 748 2

原创 香橙派配合IIC驱动OLED & 使用SourceInsight解读源码

再次回顾香橙派硬件接线:根据之前的学习了解到,,在学习C52时我使用了代码模拟IIC协议,在学习STM32时我使用CubeMX直接可以配置IIC协议,,具体可以查看Linux系统的dev路径下的文件:可见,Linux系统自动封装了如GPIO,tty,i2c,等等重要的协议。且关于i2c有两个文件,i2c-3和i2c-5,根据引脚图,香橙派的SCL和SDA都是.3结尾,所以适用i2c-3:根据上图,

2023-09-13 02:34:36 864

原创 香橙派使用外设驱动库wiringOP 配合定时器来驱动舵机

同时再次回顾香橙派的物理引脚对应:所以舵机的此处写的是物理引脚编号由于香橙派跑的系统就是Linux,所以其实就是使用Linux来实现定时器,根据舵机的原理,一般使用50Hz频率(周期为20ms)的PWM波来控制,而角度的大小就取决于高电平的占比,20ms中有0.5ms,1.0ms,1.5ms,2.0ms,2.5ms的高电平就分别对应舵机转0度,45度,90度,135度,180度。所以本质上,只要能实现出一个定时0.5ms(500us)的定时器,并让他定时1次,2次,3次,4次,5次就可以实现所有的角度。

2023-09-12 08:03:54 534

原创 香橙派使用外设驱动库wiringOP 配合时间函数来驱动测距模块

并再次回顾香橙派的物理引脚对应:所以这里,

2023-09-12 01:31:41 286

原创 香橙派使用外设驱动库wiringOP来驱动蜂鸣器

shell脚本处理参数,可以通过$?来处理,这里的$1是要编译的文件。将手动对齐的Tab和自动对齐 从8个空格设置为4个空格。然后编译,但是此时不能单纯使用gcc,还需要链接“此时再按照格式编译,就成功生成了a.out文件!原因是:创建出来的脚本是没有权限的,需要使用“

2023-09-11 07:52:22 366

原创 Orangepi Zero2 全志H616 的初识

TypeC口,需要插到5V/2A或者5V/3A的电源适配头,特别是开发板有接多个外设模块的时候平常USB供电用电脑可以,前提是不接多外设模块后面做小车等项目,用电池供电可以参考如下供电方式。

2023-09-06 07:22:37 1348

原创 基于Linux并结合socket网络编程的ftp服务器的实现

chdir函数。system("cd XXX")并不能成功修改当前程序的路径,因为system本质上是fork了一个子进程,在子进程中执行指令,所以cd是在子进程中执行的,和当前程序无关,想要成功修改当前的路径,所以需要使用chdir(XXX),这样就可以修改当前的目录了(详见:在程序里面执行system(“cd /某个目录“),为什么路径切换不成功?_一口Linux的博客-CSDN博客) recv函数,和send函数一组用于网络套接字的收发,和read/write不同,read/write返回的是已读/

2023-09-04 08:46:45 420

原创 Linux socket网络编程实战(tcp)实现双方聊天

在上节已经系统介绍了大致的流程和相关的API,这节就开始写代码!创建一个NET文件夹 来存放网络编程相关的代码:这部分先实现服务器的连接部分的代码并进行验证代码验证:先编译并运行这部分代码:可见,此时没有客户端进行连接,程序会阻塞在监听的阶段此时打开windows的cmd(windows系统和linux虚拟机的系统可以看作两台不同的终端)执行这条命令后,windows的cmd变成了这样:再反观linux虚拟机:使用windows的ipconfig可以验证IP地址 :所以,连接部分的代码已经成功,只

2023-08-31 10:32:00 1100

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除