基于IIC的OLED驱动代码编写
基于IIC的OLED驱动代码编写
序言
支持软件 IIC 和硬件 IIC。
mqttFx测试
mqttFx测试
使用 mqttFx 软件测试连接阿里云平台和 OneNET 平台。
阿里云平台
1. 平台添加产品设备
首先到阿里云物联网平台,添加一个产品,然后在这个产品下面添加一个设备,接着点开 DeviceSecret,复制设备的三个要素 ProductKey、DeviceName、DeviceSecret。
2. 生成 Client ID 用户名和密码
打开 MQTT_Password 软件(将阿里云连接的三元素转换为 MQTT 连接的 Client ID 用户名和密码)
保存生成的计算结果。
3. 填入 mqttFx 软件中
计算得到的结果填入 Client ID、User Name、Password
域名地址 Broker Address:iot-06z00h6z06dknsn.mqtt.iothub.aliyuncs.com
端口号 Broker Port:非加密端口 1883
消息发布主题(Publish)
/sys/ProductKey/DeviceName/thing/event/property/post
消息订阅主题(Subscribe)
/ ...
芯片相关名词
芯片相关名词
CPU、GPU、MPU、NPU、TPU等概念
CPU
中央处理器(CPU,Central Processing Unit),是电子计算机的主要设备之一,电脑中的核心配件。其功能主要是解释计算机指令以及处理计算机软件中的数据。电脑中所有操作都由 CPU 负责读取指令,对指令译码并执行指令的核心部件。
CPU 的结构主要包括运算器(ALU, Arithmetic and Logic Unit)、控制单元(CU, Control Unit)、寄存器(Register)、高速缓存器(Cache)和它们之间通讯的数据、控制及状态的总线。
MPU
MPU (Micro Processor Unit)微处理器,微机中的中央处理器(CPU)称为微处理器(MPU),是构成微机的核心部件,也可以说是微机的心脏。它起到控制整个微型计算机工作的作用,产生控制信号对相应的部件进行控制,并执行相应的操作。
GPU(Graphics Processing Unit)
GPU 即图形处理器,就如它的名字一样,GPU 最初是用在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上运行绘图运算 ...
ROM-RAM-FLASH
ROM、RAM、FLASH 基本介绍
随机存储器(RAM)
RAM 是一种可读/写存储器,特点是存储器的任何一个存储单元的内容都可以随机存取,而且存取时间与存储单元的物理位置无关。**RAM **通常都是在 掉电之后就丢失数据,典型的RAM就是计算机的内存。
RAM 又分为 SRAM(静态随机存储器以触发器原理寄存信息)和 DRAM(动态随机存储器以电容充放电原理寄存信息)。SRAM 速度非常快,是目前读写最快的存储设备了,但是它也非常昂贵,所以只在要求很苛刻的地方使用,譬如CPU的一级缓冲,二级缓冲。DRAM 保留数据的时间很短,速度也比 SRAM慢,不过它还是比任何的 ROM 都要快,但从价格上来说 DRAM 相比 SRAM 要便宜很多,计算机内存就是DRAM 的。
DDR RAM(Date-Rate RAM)也称作 DDR SDRAM,这种改进型的 RAM 和 SDRAM 是基本一样的,不同之处在于它可以在一个时钟读写两次数据,这样就使得数据传输速度加倍了,这是目前电脑中用得最多的内存。
内存(DRAM)工作原理
内存是用来存放当前正在使用的(即执行中)的数据和程序,我们平常所提 ...
刷路由器流程
校园网路由器
前言
实现路由器自动认证广大校园网。
基本步骤
刷入 Breed
刷入 Openwrt 系统
装入 MiniEAP 插件
配置路由器
刷入Breed
简要
为了防止刷入 Openwrt 失败导致路由器变砖,我们需要先刷入 Breed (不死鸟)。因为有些官方升级固件自带 bootloader(引导加载程序),如果从官方固件升级,会导致现有 bootloader 被覆盖。而当 Breed 更新固件时,它会自动删除固件附带的 bootloader(引导加载程序),从而可以防止 Breed 被覆盖。
刷入 Breed 之前我们可以先将几个重要的 bin 文件(all、bootloader、eeprom)保存,保留路由器原来的系统(如果需要保留的话),一般能够刷机的路由器网上资料都很多,这里我就没有进行保存了。
注意:你需要有一台能够刷机的路由器,请自行到网上查询你的路由器是否能刷机
方法
刷入 Breed 一般有两种方法,一种是 telnet 方法,另一种是 ssh 方法。主要就是通过 PC 端远程控制路由器内部的文件。Breed 常用平台有 MT7620平台、MT7621 ...
Windows使用Docker访问ChatGPT
前言
冲浪发现好玩的东西,于是就开干!
直接通过 ChatGPT 官网可以免费使用,但是奈何魔法不够强大(money 不够┭┮﹏┭┮),经常会访问不了,或者超慢的生成速度。
网上有一种方式,是利用 Github + Vercel 部署绑定自有的域名,通过调用 OpenAI API Key 实现在国内访问使用其功能,但是这种方式既需要有自己的域名,又需要有额度的 ChatGPT 账号,新注册的账号有免费额度 5 美元,但只有注册的前三个月有效。于是就衍生了这种白嫖的方法——潘多拉(Pandora)项目,目前刚开始使用,体验很不错!
前置条件
一个能用的 ChatGPT 账号
能够科学上网
环境配置
检查环境
首先你需要先检查一些电脑是否已经开启虚拟化,打开任务管理器,点击性能、CPU,右下角即可看懂是否开启。
若是没有启用的话,则需要通过进入 bios 下进行设置;这一部分可以上网搜索一下 windows 开启虚拟化,因为不同机子的 bios 界面不太一样,这里就不给出操作步骤了,操作很简单的。
其次你如果你是 Windows 家庭版则需要安装 Hyper-V,安装方法也很简单。
...
基于Opencv的手势识别
前言
本文采用 Opencv C++ 实现简单的手势识别;主要步骤为获取手部轮廓、提取特征、训练网络、预测结果。
肤色检测
这一步主要是便于后续的手部轮廓提取。这里用到的方法是 基于 YCrCb + OSTU 的方法的,其他方法可参考上一篇文章基于Opencv的人体肤色检测。
相关代码
1234567891011121314151617181920Mat YCrCb_otsu_Detect(Mat& src){ //resize(src, src, Size(300,300)); Mat ycrcb_img; cvtColor(src, ycrcb_img, COLOR_BGR2YCrCb); // 分离通道 提取Cr分量 vector<Mat> channels; split(ycrcb_img, channels); Mat cr_img = channels[1]; threshold(cr_img, cr_img, 0, 255, THRESH_BINARY | THRESH_OTSU); Mat ycrcb_otsu_detect; src.co ...
基于Opencv的人体肤色检测
前言
opencv 中进行肤色检测的方法大致为以下五种方法。本文中的人体肤色以黄种人为例。
三种图像颜色空间
RGB
RGB(红绿蓝)是依据人眼识别的颜色定义出的空间,可表示大部分颜色。但在科学研究一般不采用RGB颜色空间,因为它的细节难以进行数字化的调整。它将色调,亮度,饱和度三个量放在一起表示,很难分开。它是最通用的面向硬件的彩色模型。该模型用于彩色监视器和一大类彩色视频摄像。
Opencv 采用的是 BGR,顺序不一样了而已。
HSV
RGB 是从硬件的角度提出的颜色模型,在与人眼匹配的过程中可能存在一定的差异,HSV色彩空间是一种面向视觉感知的颜色模型。
HSV色彩空间从心理学和视觉的角度出发,指出人眼的色彩知觉主要包含三要素:色调(Hue,也称为色相)、饱和度(Saturation)、亮度(Value),色调指光的颜色,饱和度是指色彩的深浅程度,亮度指人眼感受到的光的明暗程度。
HSV范围H:0~180 S:0~255 V:0~255
**色调:**色调与混合光谱中的主要光波长相关,例如“赤橙黄绿青蓝紫”分别表示不同的色调。如果从波长的角度考虑,不同波长的光表现为不同的颜 ...
基于Harrcascades的人脸识别
前言
采用Opencv官方训练好的Harrcascades分类器进行人脸识别和对人脸打马赛克。
涉及到的一些知识
马赛克原理
将要加马赛克的区域划分成若干个小矩形区域,然后每个小矩形区域的值都取该小矩形区域左上角的值。
CascadeClassifier 级联分类器
分类器: 判别某个事物是否属于某种分类的器件,两种结果:是、否 。
级联分类器: 可以理解为将N个单类的分类器串联起来。如果一个事物能属于这一系列串联起来的的所有分类器,则最终结果就是 true,若有一项不符,则为 false。
CascadeClassifier 为 OpenCV 下用来做目标检测的级联分类器的一个类。该类中封装的目标检测机制,简而言之是滑动窗口机制 + 级联分类器的方式。
**CascadeClassifier检测的基本原理:**检测的时候可以简单理解为就是将每个固定size特征(检测窗口)与输入图像的同样大小区域比较,如果匹配那么就记录这个矩形区域的位置,然后滑动窗口,检测图像的另一个区域,重复操作。由于输入的图像中特征大小不定,比如在输入图像中眼睛是50x50的区域,而训练时的是25x25,那么只有 ...