自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(101)
  • 资源 (1)
  • 收藏
  • 关注

原创 12.【Orangepi Zero2】基于orangepi_Zero_2 Linux的智能家居项目

人脸识别使用阿里SDK支持Python和Java接口,目的是复习巩固智能分类时引入C语言的Python调用。此接口是人工智能接口,阿里云识别模型是通过训练后的模型,精准度取决于训练程度,人工智能范畴 在常规嵌入式设备负责执行居多。说白的嵌入式设备负责数据采集,然后转发给人工智能识别后,拿到结果进行执行器动作。

2024-06-06 11:04:53 1155 1

原创 29.if if if else和if else if else if else的区别

在这种结构中,每个 if 都会被依次检查,只要条件为真,相应的代码块就会被执行。如果第一个 if 的条件为真,则只会执行第一个 if 后面的代码块,而忽略后续的 if 语句。如果所有的 if 条件都为假,则执行 else 后面的代码块。

2024-05-28 10:23:56 216

原创 10.【Orangepi Zero2】C语言调用Python

环境搭建:(备注:在香橙派 3.0.6版本的镜像里已经默认自带了python3.10的版本,不需要安装,只需 要后续安装下python3 dev即可。后续统一采用的系统镜像)Python是一种动态解释型的编程语言。Python可以在Windows、UNIX、MAC等多种操作系统上 使用,也可以在Java、.NET开发平台上使用。

2024-05-17 16:41:30 695

原创 11.【Orangepi Zero2】基于Linux的智能垃圾桶项目

语音接入控制垃圾分类识别,并触发垃圾桶的开关盖回顾二阶段的Socket编程,实现Sockect发送指令远程控制垃圾分类识别,并触发垃圾桶的开关盖图像识别垃圾分类功能语音播报垃圾物品类型OLED显示垃圾物品类型根据垃圾类型开关不同类型垃圾桶图像处理使用阿里SDK支持Python和Java接口,目的是引入C语言的Python调用,感受大厂做的算法bug。此接口是人工智能接口,阿里云识别模型是通过训练后的模型,精准度取决于训练程度,人工智能范畴 在常规嵌入式设备负责执行居多。

2024-05-17 16:41:10 942

原创 9.【SQLite】指令,编程操作

轻量化,易用的嵌入式数据库,用于设备端的数据管理,可以理解成单点的数据库。传统服务器型数据库用于管理多端设备,更加复杂。SQLite是一个无服务器的数据库,是自包含的。这也称为嵌入式数据库,这意味着数据库引擎作为应用程序的一部分运行。MySQL需要运行服务器,MySQL将需要客户端和服务器架构通过网络进行交互。SQLiteFirebirdeXtremeDBFirebird是关系型数据库,功能强大,支持存储过程,SQL兼容等SQLite关系型数据库,体积小,支持ACID事务。

2024-05-06 09:30:36 957

原创 8.【Orangepi Zero2】UDEV的配置文件,自动挂载U盘

这条规则的意思是:如果有一个设备的内核名称为 sda,则该条件生效,执行后面的赋值:在 /dev 下产生一个名为my_root_disk 的设备文件,并把设备文件的权限设为 0660。这个规则的效果是,当插入一个USB块设备时,udev将创建一个以设备名称为名字的目录(例如,如果设备名称是sdb1,那么将创建。规则文件是 udev 里最重要的部分,默认是存放在 /etc/udev/rule.d/ 下。: 当设备满足规则条件时,运行命令创建 /media/ 目录下以设备名称(%k)命名的目录。

2024-05-06 09:30:01 773

原创 7.【Orangepi Zero2】守护进程daemon(),将守护进程设置为开机启动

函数创建守护进程的时候,要确保你的程序适合在后台运行,因为一旦它脱离了终端控制,就不再接收用户输入。函数是用于创建守护进程的函数,它在Unix/Linux系统中常被使用。为非零值,守护进程将不会关闭标准输入、标准输出和标准错误。在调试程序的时候,如果遇到像守护进程不能将调试的信息用。参数用于指示是否改变守护进程的当前工作目录。函数成功创建守护进程时返回 0,失败时返回 -1。为非零值,守护进程的当前工作目录将保持不变。创建守护进程的C程序,它将当前时间写入文件。守护进程设置为开机自启动。

2024-05-04 20:13:53 592

原创 6.【Orangepi Zero2】localtime、asctime函数

把timeptr指向的tm结构体中储存的时间转换为字符串,返回的字符串格式为:Www Mmm dd hh:mm:ss yyyy。是 把从1970-1-1零点零分到当前时间系统所偏移的秒数时间转换为本地时间,而。函数转换后的时间没有经过时区变换,是UTC时间。

2024-05-04 17:00:34 271

原创 5.【Orangepi Zero2】串口通信

进入linux系统后,先确认下/dev下是否存在uart5的设备节点。

2024-05-04 15:51:53 361

原创 4.【Orangepi Zero2】Linux定时器(signal、setitimer),软件PWM驱动舵机(SG90)

允许你设置定时器的初始值和重复间隔。一旦定时器启动,它将在到期时触发一个信号,通常是。运行程序 5s 后开始输出 Hello!,然后每隔 1s 输出 Hello!:以进程的虚拟时间和系统时间(CPU和墙钟时间)计时。你可以捕获这个信号并执行相应的操作。:以实际时间计时,通常用于实现定时器功能。结构,用于存储旧的定时器值(可选参数)。:以进程的虚拟时间(CPU时间)计时。:指定要设置的定时器类型,可以是。结构,用于指定新的定时器值。

2024-05-04 12:16:15 499

原创 3.【Orangepi Zero2】超声模块ultrasonic(HC-SR04)

这八个脉冲模式是专门设计的,使得接收器可以将发射的超声波与环境噪声区分开来。同时,Echo引脚变为高电平,以接收回波返回信号。如果这些超声波脉冲被反射回来,那么一旦接收到信号,Echo引脚就会变低。这会在Echo引脚上产生一个宽度从 150µs 到 25ms 不等的脉冲,具体取决于接收信号所需的时间。引脚高电平的时间,最后乘以单位为 cm/μs 的音速再除以 2,得到的就是超声波传感器和障碍物之间的距离了。计算两时间节点的秒的差值,再计算两时间节点的微秒的差值,两数相加等到单位为微秒的时间,这个时间就是。

2024-05-03 20:38:08 346

原创 2.时间函数(gettimeofday)

tz:一个指向 struct timezone 结构的指针,用于存储时区信息。在现代UNIX系统中,通常将该参数设置为 NULL,因为不再使用时区信息。函数是一个用于获取当前时间的UNIX系统调用,它返回自1970年1月1日以来的秒数和微秒数。函数返回当前时间的秒数和微秒数,分别存储在 tv_sec 和 tv_usec 字段中。tv:一个指向 struct timeval 结构的指针,用于存储当前时间。

2024-05-03 19:51:21 1021

原创 1.【Orangepi Zero2】安装wiringOP库、驱动蜂鸣器

特此说明一下上图的 1 到 26 号引脚与开发板上的 26 Pin 引脚是一一对应的,27、29、31、33 号引脚对应 OrangePi ZERO 2 开发板上 13 Pin 的10、11、12、13号引脚,28、30、32、34 号引脚为空,请直接忽略。是一个基于香橙派编写的 GPIO 访问库,可用于编程和设置香橙派的 GPIO 引脚。原因就是 wiringOP 库属于第三方库,在编译时要用-l链接库才能编译。打开之后,可以看到编译时要链接的全部第三方库。安装wiringOP库。

2024-05-03 17:21:17 782

原创 Linux 2.进程(小技巧:让程序不能被多次运行)

具体做法是程序在执行之初去判断一个特定的文件是否存在,若存在则标明进程已经在运行,若不存在则标明进程没有在运行。然后运行程序时去创建这个文件。意思就是说当我们./a.out去运行程序时,如果当前还没有这个程序的进程运行则运行之,如果之前已经有一个这个程序的进程在运行则本次运行直接退出(提示程序已经在运行)。我们守护进程一般都是服务器,服务器程序只要运行一个就够了,多次同时运行并没有意义甚至会带来错误。因为守护进程是长时间运行而不退出,因此./a.out执行一次就有一个进程,执行多次就有多个进程。

2024-04-19 11:50:09 472

原创 Linux 2.进程(守护进程)

服务器(Server),服务器程序就是一个一直在运行的程序,可以给我们提供某种服务(譬如nfs服务器给我们提供nfs通信方式),当我们程序需要这种服务时我们可以调用服务器程序(和服务器程序通信以得到服务器程序的帮助)来进程这种服务操作。与控制台脱离(普通进程都和运行该进程的控制台相绑定,表现为如果终端被强制关闭了则这个终端中运行的所有进程都被会关闭,背后的问题还在于会话)在 Linux 系统中,守护进程的父进程通常是初始化进程。daemon,表示守护进程,简称为d(进程名后面带d的基本就是守护进程)

2024-04-18 21:44:56 732

原创 Linux 2.进程(return、exit、_exit、atexit注册进程终止处理函数)

return和exit效果一样,都是会执行进程终止处理函数,但是用_exit终止进程时并不执行atexit注册的进程终止处理函数。正常终止:return、exit、_exit。非正常终止:自己或他人发信号终止进程。

2024-04-18 14:18:17 328

原创 Linux 6.文件属性(stat、fstat)

每个文件中都附带了这个文件的一些属性(属性信息是存在于文件本身中的,但是它不像文件的内容一样可以被vi打开看到,属性信息只能被专用的API打开看到)文件属性信息查看的API有三个:stat、fstat、lstat,三个作用一样,参数不同,细节略有不同。linux命令行下还可以去用stat命令去查看文件属性信息,实际上stat命令内部就是使用stat系统调用来实现的。

2024-04-17 09:16:30 1066

原创 Linux 1.文件编程(dup、dup2)

进程在最开始运行的时候,首先打开了三个文件,分别是标准输入流、标准输出流、标准错误输出流。证明的时候我是把标准输出留给关闭了,然后紧接着创建的文件就会占用已关闭的标准输出流,使得本该流向显示器的数据流向了新创建的文件。先不谈底层的原理,就只看表象,就像是使数据流的方向从一个方向,指向了另一个方向,完成了数据流的方向重定向。由dup返回的新文件描述符一定是当前可用文件描述中的最小数值。如果fd2已经打开,则先关闭。两个函数的返回:若成功为新的文件描述,若出错为-1;两个均为复制一个现存的文件的描述。

2024-04-15 15:49:42 368

原创 12.IIC协议之OLED使用

IIC全称Inter-Integrated Circuit (集成电路总线)是由PHILIPS公司在80年代开发的两线式串行总线,用于连接微控制器及其外围设备。IIC属于半双工同步通信方式。

2024-04-08 11:48:13 590

原创 11.DH11温湿度检测模块、lcd1602、HC-08蓝牙构成温湿度数据管理系统

DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,应用领域:暖通。空调;汽车;消费品;气象站;湿度调节器;除湿器;家电;医疗;自动控制。

2024-04-08 09:27:16 480

原创 10.lcd1602显示屏显示字符和字符串

LCD1602(Liquid Crystal Display)是一种工业字符型液晶,能够同时显示 16×02 即 32 字符(16列两行)

2024-03-25 09:02:02 1877

原创 8. 基于51单片机的感应震动&按键&超声波&蜂鸣器开关盖桶

检测靠近时,垃圾桶自动开盖并伴随滴一声,2秒后关盖发生震动时,垃圾桶自动开盖并伴随滴一声,2秒后关盖按下按键时,垃圾桶自动开盖并伴随滴一声,2秒后关盖。

2024-03-24 16:54:31 552

原创 9.串口通信

串行接口简称串口,也称串行通信接口或串行通讯接口(通常指COM接口),是采用串行通信方式的扩展接口。串行接口(Serial Interface)是指数据一位一位地顺序传送。其特点是通信线路简单,只要一对传输线就可以实现双向通信(可以直接利用电话线作为传输线),从而大大降低了成本,特别适用于远距离通信,但传送速度较慢。

2024-03-22 21:17:47 495

原创 7.PWM开发SG90(手把手教会)

PWM,英文名Pulse Width Modulation,是脉冲宽度调制缩写,它是通过对一系列脉冲的宽度进行调制,等效出所需要的波形(包含形状以及幅值),对模拟信号电平进行数字编码,也就是说通过调节占空比的变化来调节信号、能量等的变化,占空比就是指在一个周期内,信号处于高电平的时间占据整个信号周期的百分比,例如方波的占空比就是50%。

2024-03-21 10:17:22 391

原创 6.超声波测距的使用(少儿编程手把手教会)

型号:HC-SR04接线参考:模块除了两个电源引脚外,还有TRIG,ECHO引脚,这两个引脚分别接我们开发板的P1.5和P1.6端口超声波测距模块是用来测量距离的一种产品,通过发送和收超声波,利用时间差和声音传播速度,计算出模块到前方障碍物的距离。1.怎么让它发送波Trig ,给Trig端口至少10us的高电平2.怎么知道它开始发了Echo信号,由低电平跳转到高电平,表示开始发送波3.怎么知道接收了返回波Echo,由高电平跳转回低电平,表示波回来了4.怎么算时间。

2024-03-21 09:51:14 393

原创 5.少儿编程51电动车防盗报警器(待优化版)

所有模块VCC——5VGND——GNDD0——P3^3IN——P1^3电源黑色线与喇叭黑色线相接电源红色线与继电器COM相接喇叭红色线与继电器NO相接D0——P1^0D1——P1^1

2024-03-18 20:57:08 400

原创 7.1strcmp

特别注意:strcmp(const char *s1,const char * s2)这里面只能比较字符串,即可用于比较两个字符串常量,或比较数组和字符串常量,不能比较数字等其他形式的参数。该函数与 strncmp() 函数类似,不同的是,通过 strncmp() 您可以指定每个字符串用于比较的字符数。即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇’\0’为止。当两个字符串不相等时,C标准没有规定返回值会是1 或 -1,只规定了正数和负数。当s1>s2时,返回正数。

2024-03-16 17:06:16 270

原创 基于Ncurse图形库的贪吃蛇(C语言)

【代码】基于Ncurse图形库的贪吃蛇(C语言)

2024-03-15 21:26:40 156

原创 28.指针总结

指针总结

2024-03-15 20:12:03 133

原创 27.函数指针数组

函数指针的数组本质是一个数组,它允许你存储多个函数指针,并且可以通过索引来调用这些函数。

2024-03-15 16:26:28 713

原创 27.二维数组的地址写法

【代码】27.二维数组的地址写法。

2024-03-14 20:43:25 254 1

原创 26.数组翻转

【代码】26.数组翻转。

2024-03-14 18:58:43 107

原创 25.最大公因数 最小公倍数

用辗转相除法求几个数的最大公约数,可以先求出其中任意两个数的最大公约数,再求这个最大公约数与第三个数的最大公约数,依次求下去,直到最后一个数为止。最后所得的那个最大公约数,就是所有这些数的最大公约数。辗转相除法:辗转相除法是求两个自然数的最大公约数的一种方法,也叫欧几里德算法。最小公倍数等于两数之积除以其最大公约数。∵ 319÷377=0(余319)∵ 377÷319=1(余58)∵ 319÷58=5(余29)∵ 58÷29=2(余0)可以写成右边的格式。

2024-03-14 11:27:14 380

原创 17. STM32——SPI硬件

STM32——SPISPI协议SPI接口SPI接口框图SPI工作原理时钟信号的相位和极性CPHA = 0CPHA = 1SPI中断状态标志发送缓存器空闲标志(TXE)接收缓冲器非空(RXNE)忙BUSY标志SPI引脚配置从设备引脚管理(NSS)①软件模式:②硬件模式:SPI结构体SPI配置过程①配置引脚,使能时钟②初始化SPI,设置工作模式③使能SPIx④SPI传输数据⑤查看SPI传输状态整合初始化SPI读写字节设置SPI的波特率spi.hspi.cSPI协议SPI是英语Serial Periphera

2021-11-03 20:30:34 2997 4

原创 16. STM32——测量空气的温度和湿度(STM32 + DHT11温湿度 + OLED显示)

STM32——测量空气的温度和湿度(STM32 + DHT11温湿度 + OLED显示)DHT11温湿度相关介绍初始化GPIOB11启动DHT11获取一个字节获取数据代码整合DHT11.hDHT11.coled.holed.cmain.c效果DHT11温湿度相关介绍在4. 51 测量空气的温度和湿度(51单片机 + DHT11温湿度 + LCD1602显示)有介绍初始化GPIOB11//对于stm32来说,是输入void DH11_GPIO_Init_IN(void){ GPIO_InitTy

2021-10-23 15:56:45 7657 57

原创 15. STM32——软件IIC驱动OLED屏幕显示字符、字符串、数字、汉字

STM32——软件IIC驱动OLED屏幕显示OLED屏幕写命令写内容对OLED写入一个字节设置光标启动OLED关闭OLED全屏填充(清屏)显示字符显示字符串获取次方显示数字显示中文OLED驱动代码OLED屏幕在4. 51 测量空气的温度和湿度(51单片机 + DHT11温湿度 + LCD1602显示)有介绍写命令static void OLED_Write_Cmd(unsigned char cmd){ I2C_Start(); I2C_WriteByte(0x78); I2C_WriteB

2021-10-23 13:38:32 7246 5

原创 14. STM32——软件IIC

STM32——软件IICIIC协议层空闲状态起始信号停止信号数据有效性应答信号配置引脚初始化整合软件IIC代码oled.coled.hIIC协议层空闲状态当IIC总线SDA以及SCL均处于高电平时,规定此状态为空闲状态,对应输出状态为高阻态(各场器件输出效应管截止,导致场效应管电阻很大),由上拉电阻将电平拉高。起始信号起始条件:SCL线是高电平时,SDA线从高电平向低电平切换先写SDA,容易写程序,容易理解//模拟IIC起始信号static void I2C_START(void){

2021-10-22 16:54:23 6703 5

原创 13. STM32——while( 表达式 ); 和 while( 表达式 ){ 循环体 } 问题

@[TOC](STM32——while( 表达式 ); 和 while(){ 循环体 } 问题)while( 表达式 );while(表达式);若括号里面的表达式=1,卡死,进入死循环等待,直到括号里面的表达式=0,跳转到下一个语句while( 表达式 ){ 循环体 }while( 表达式 ){ 循环体 }当满足条件时进入循环,进入循环后,循环会一直执行下去.除非你设置 break 等类似的跳出循环语句循环才会中止。区别:加了分号的while,只有为假,才往下执行,为真一直停留

2021-10-17 21:10:22 4258

原创 12. STM32——硬件IIC驱动OLED屏幕显示

STM32——硬件IIC驱动OLED屏幕显示OLED屏幕OLED屏幕特点OLED屏幕接线说明OLED屏幕显存OLED屏幕原理OLED屏幕常用指令OLED屏幕字模软件的使用写命令写数据OLED 初始化(厂家提供的代码)设置起点坐标全屏填充清屏OLED 打开OLED 关闭OLED屏幕OLED即有机发光管(Organic Light-Emitting Diode,OLED)。OLED显示技术具有自发光、广视角、几乎无穷高的对比度、较低功耗、极高反应速度、可用于绕曲性面板、使用温度范围广、构造及制程简单等有点,

2021-10-16 23:22:49 58298 14

原创 11. STM32——硬件I2C

STM32——I2CIIC协议简介IIC总线系统结构IIC总线物理层特点IIC协议简介IIC通讯协议(Inter----Integrted Circuit)是由Phiips飞利浦公司开发的,由于他引脚少,硬件实现简单,可拓展性强,不需要UASRT,CAN通讯协议的外部收发设备,现在被广泛使用在系统内多个集成电路IC(芯片)间的通讯。半双工的通讯方式 IIC通讯协议(Inter----Integrted Circuit)是由Phiips飞利浦公司开发的,由于他引脚少,硬件实现简单,可拓展性强,不需要

2021-10-15 13:43:15 6492 1

stm32 超声波感应开盖垃圾桶.zip

stm32 超声波感应开盖垃圾桶

2021-09-27

空空如也

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

TA关注的人

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