- 博客(35)
- 资源 (6)
- 收藏
- 关注

原创 C语言base64编码转码
一、最近,在做一个智能锁项目,锁上具有一个猫眼摄像头,当有客人来访时,需要通过猫眼抓拍图片上传到手机app端,让主人知道来访者是谁,项目中使用到了Base64编解码技术,所谓Base64编解码就是把每三个8bit的字节转换为四个6bit的字节(3*8 = 4*6 = 24),然后把6bit的字节再添两位高位0,组成四个8bit的字节,也就是说,转换后的字符串理论上将要比原来的长1/3。例如:转换前 11111111, 11111111, 11111111 (二进制)转换后 0011111...
2020-06-30 16:10:45
1367

原创 RGB 和 HSV 互相转换算法
一、简介 RGB 是我们接触最多的颜色空间,分别为红色(R),绿色(G)和蓝色(B)。HSV 是用色调H,饱和度S,明亮度V来描述颜色的变化,H取值范围为0°~360°,从红色开始按逆时针方向计算,红色为0°,绿色为120°,蓝色为240°。饱和度S越高,颜色则深而艳。光谱色的白光成分为0,饱和度达到最高。通常取值范围为0%~100%,值越大,颜色越饱和。H表示颜色明亮的程度,对...
2020-02-29 11:34:46
32156
7

原创 alios things ntp获取时间
alios things 中还有另一种获取时间的方法,使用ntp服务获取时间,物联网平台借鉴NTP协议原理,将云端作为NTP服务器。设备端发送一个特定Topic给云端,payload中带上发送时间。云端回复时在payload中加上云端的接收时间和发送时间。设备端收到回复后,再结合自己本地当前时间,得出一共4个时间。一起计算出设备端与云端的时间差,从而得出端上当前的精确时间。注意:只有设备端与云...
2019-08-18 21:47:51
3061
2

原创 alios things IOT_Linkkit_Query查询时间
在alios things中我们经常需要用到时间,比如在智能插座开发中,开发倒计时或者本地定时功能时就会用到时间,所以这次我们说说使用IOT_Linkkit_Query获取时间的步骤:注意:先决条件是要连上阿里云平台一、注册一个接收时间的回调函数static void set_time(time_t time)//用于同步本地RTC时钟{ mico_rtc_time_t ...
2019-08-18 21:16:39
1243

原创 alios things开关5次配网
一、前言 在物联网中,有很多场景下都需要用到这种功能,我之所以做这个功能主要是因为公司正在做一个智能灯项目,而灯最常见的配网方式就是开关电源5次,常见的流程是 “开关5次,指示灯闪烁,清除原有热点信息,进入配网状态”。二、代码 定时器 定时器主要有2个任务,第一,当按键开关按下后,在一定时间内(3s或5s)如果没有再次按下,表示不是连按系统正...
2019-08-15 23:48:51
1473

原创 mico中长短按
刚出来工作两个月,学到不多不少,刚开始是在alios things上对wifi做二次开发,用庆科的3080弄了一个pwm冷暖色调的智能灯,成果出来后发现3080模块块头实在是太大,只好转战mico,在mico上又做了四路入墙开关和智能插座。项目终于结束,现在终于有时间整理一下收获了,我们今天先从按键长短按开题static void linkkit_reset(void)//清...
2019-08-14 23:45:39
715

原创 STM32 esp8266使用
简述在我们做项目开发中,经常会用到WiFi,这次给大家分享一下我在使用WiFi的过程中总结的一些经验,这次用到的是esp8266WiFi模块,如图所示。 引脚连接:GND:接地GPIO16:其实是RST,低电平复位,为了正常工作,直接连接VCC。VCC:接3.3V,注意:接5V会烧坏模块。UTXD:接单片机或USB转串口模块的RXDURXD:接单片机...
2018-11-09 21:26:53
13523
2

原创 STM32 SPI通信协议总结
简介 SPI是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(单向传输时)。也是所有基于SPI的设备共有的,它们是SDI(数据输入),SDO(数据输出),SCK(时钟),CS(片选)。 SDO --主设备数据输出,从设备数据输入 SDI...
2018-10-28 15:05:29
4190
原创 STM32 FreeRTOS的乱七八糟设计
一、硬件设计PA2、PA3--------------WIFIPC0、PC1--------KEY(输出)PA0-------------------DHT22(输入)PB10、PB11------------SGP30(IIC)PB6、PB7--------------OLED(IIC)PB5、PB0、PB1---------RGBLED(输出)PC4、PC5---------继电器(输出)PA9、PA10-------------串口打印接口二、系统主程序跑两个任务
2020-12-25 10:28:55
616
原创 代码提交git步骤
第一步 从仓库下载代码,在git上创建好仓库后,会产生一个master分支,里面一开是什么都没有,通过下面链接下载下来git clonegit@github.com:lly3485390095/LLY.git,下载下来后把它放到需要上传的代码文件夹中。第二步 查看所有分支,创建新的分支git branch -agit branch [branch name]第三步 切换到新的分支git checkout [branch na...
2020-09-15 14:17:09
300
原创 基于Openwrt的sqlite3移植与使用
一、移植sqlite3 进入openwrt,make menuconfig选择Libraries --->database --->libsqlite3,保存退出。再选择Utilities --->database ---> sqlite3-cli,保存退出,然后make V=99,将编译好的固件openwrt-ramips-mt7688-HIWOOYA16128-squashfs-sysupgrade.bin烧录进开发板。二、sqlite3的使用...
2020-08-15 10:16:05
1069
原创 基于Openwrt的串口编程
一、头文件#include <stdio.h> /*标准输入输出定义*/#include <errno.h> /*错误号定义*/#include <sys/stat.h>#include <fcntl.h> /*文件控制定义*/#include <termios.h> /*POSIX 终端控制定义*/#include <stdlib.h> /*标准函数库定义*/#include <sys/
2020-07-31 11:04:03
1143
原创 基于Openwrt系统的mosquitto移植与使用
一、移植mosquitto 进入openwrt,make menuconfig选择Libraries选中libmosquitto-nossl和libncurses,保存退出。再选择Network选中mosquitto,保存退出,然后make V=99。二、mosquitto的使用 经过编译以后,我们在/openwrt-hiwooya/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/mosquitto-nossl/mos...
2020-07-31 10:16:44
2718
4
原创 pythonTCP通信与多线程
服务端 服务器进程首先要绑定一个端口并监听来自其他客户端的连接。如果某个客户端连接过来了,服务器就与该客户端建立Socket连接,随后的通信就靠这个Socket连接了。所以,服务器会打开固定端口(比如80)监听,每来一个客户端连接,就创建该Socket连接。由于服务器会有大量来自客户端的连接,所以,服务器要能够区分一个Socket连接是和哪个客户端绑定的。一个Socket依赖4项...
2018-12-24 17:32:25
775
原创 tensorflow 实现线性回归
简介tensorflow这个库集成了很多算法,这次主要是用它实现简单的线性回归,线性回归包括一元线性回归和多元线性回归,一元线性回归方程大概是这样 y=ax+b,而我们训练模型的目标即通过大量数据把a和b的值训练出来,x表示特征,a表示x的权值,b表示偏置值。同理多元线性方程的目标把0、1、2...等训练出来。在tensorflow中代码实现如下:import tensorflo...
2018-11-26 16:24:22
209
原创 python与机器学习
我的python进价之路,从学习python的基本语法开始,相比C语言多了列表,元组,字典的概念 https://www.bilibili.com/video/av28148919?from=search&seid=5516814540756837019机器学习算法的初认识,从线性回归,逻辑回归,决策树,SVM等,深入了解机器学习 https://www.bili...
2018-11-21 23:33:30
229
原创 python初入门体验
本人是嵌入式开发方向,开始学习python是因为要做一个关于机器学习的毕业设计,接触python一个星期了,刚开始是一头雾水啊,特别是安装环境,由于有C语言的基础,学习python基本语法感觉没什么难度,让我最烦的其实是在学习过程中各种库的安装,比如numpy、matplotlib,还有cgi的使用,这个简直是头疼,搞了两天环境最后还是没弄出来,网上的教程也是各种花样,没有一个完整的教...
2018-11-18 21:36:37
162
原创 STM32 ADC转换
简介 STM32的ADC是12位逐次逼近型的模拟数字转换器,ADC模块读到的数据是12位的数据,是从0到4095(111111111111)的值,当把ADC引脚接了GND,读到的就是0,当把ADC引脚接了VDD,读到的就是4095。STM32最多支持18个通道,可最多测量16个外部和2个内部信号源,ADC的各通道可以单次,连续,扫描或者间断模式执行。 ...
2018-11-11 11:46:50
1581
原创 STM32 PWM笔记
关于PWM的STM32 stm32的定时器除了TIM6和TIM7。其他的定时器都可以用来产生PWM输出。其中高级定时器TIM1和TIM8可以同时产生7路的PWM输出。而通用定时器也能同时产生多达4路PWM输出,stm32最多可以同时产生30路PWM输出。通用定时器TIMx产生PWM输出,用到寄存器:捕获/比较模式寄存器TIMx_CCMR1/2)、捕获/比较使能寄存器(TIMx_...
2018-10-29 19:54:26
795
原创 STM32 单总线1-wire
概述 1-wire总线是一个具有单总线主机和一个或者多个从机的系统,一般在任何情况下单总线设备(如18B20)都是从机设备,主机一般是一颗MCU。它采用单根信号线,既可传输时钟,又能传输数据,而且数据传输是双向的。1、初始化(复位和应答) 主机通过拉低单总线480 ~ 960 us产生复位脉冲,然后释放总线,进入接收模式。主机释放总线时,会产生低电平跳变为高电平...
2018-10-26 10:24:11
6694
原创 STM32 IIC总结
IIC总线是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。它在传输数据过程中有三种特殊类型信号,分别是:开始信号、结束信号和应答信号。IIC通信:IIC通信无论发送还是接收,都需要结合时钟SCL来进行数据SDA的传输,因此一次要使用两条线。传输数据与时钟有关,因此称为同步串行通信总线空闲状态: I2C总线总线的SDA和SCL两条信号线同时处于高电平时,...
2018-10-23 19:53:10
1305
原创 STM32 串口总结
通用同步异步收发器是一个串行通信设备,可以灵活的与外部设备进行全双工数据交换。有别与USART,还有一个UART,它在USART基础上裁剪掉了同步通信功能,只有异步通信。简单区分同步和异步就是看通信时需不需要对外提供时钟输出,我们平时用的串口通信基本都是 UART。串口通信一般是以帧格式传输数据,即一帧一帧传输,每帧包含有起始信号、数据信息、停止信息,可能还有校验信息。同步通信...
2018-10-23 10:07:20
568
原创 STM32 定时器总结
STM32F103系列有11个定时器: 2个高级定时器(TIM1,TIM8):高级定时器除了具有基本定时器和通用定时器的功能以外,还具有输出互补带死区的信号,以及刹车等功能。 4个通用定时器(TIM2,TIM3,TIM4,TIM5):通用定时器(TIM2~TIM5)除了基本的定时功能以外,还具有输入捕获和输出比较,产生pwm波形的功能。 ...
2018-10-22 08:51:56
2261
1
原创 STM32 中断总结
STM32目前支持的中断共84个(16个内部+68个外部),还有16级可编程的中断优先级的设置,仅使用中断优先级设置8bit中的高4位。4bit的中断优先级可以分成2组,从高位看,前面定义的是抢占式优先级,后面是响应优先级。按照这种分组,4bit一共可以分成5组: 第0组:所有4bit用于指定响应优先级; 第1组:最高1位用于指定抢占式优先级,后...
2018-10-22 08:47:28
727
原创 STM32 时钟总结
STM32 时钟源HSI是高速内部时钟,RC振荡器,频率为8MHz,精度不高。 HSE是高速外部时钟,可以由有源晶振或者无源晶振提供,频率从 4-26MHZ不等。当使用有源晶振时,时钟从 OSC_IN 引脚进入, OSC_OUT 引脚悬空,当选用无源晶振时,时钟从 OSC_IN 和 OSC_OUT 进入,并且要配谐振电容LSI是低速内部时钟,RC振荡器,频率为40kHz,提供低功耗时钟。 ...
2018-10-20 15:03:52
1439
原创 STM32 GPIO 总结
GPIO 外设是挂载在 APB2 总线上的, APB2 的时钟是 APB2 预分频器的输出,而 APB2 预分频器的时钟来源是 AHB 预分频器。因此,把APB2 预分频器设置为不分频,那么我们就可以得到 GPIO 外设的时钟也等于 HCLK(等于系统时钟)。GPIO 相关寄存器: 两个32位的配置寄存器 GPIOx->CRL,GPIOx->CRH 两个32位的数据寄存...
2018-10-20 14:19:30
794
原创 经典面试
1、const 关键字 char const *p = &c; //不能改c中的内容,p是指向字符型常量的指针 const char *p = &c; //不能改c中的内容,p是指向...
2018-10-17 20:04:46
195
原创 常用库的移植安装使用
JPEG库的移植 解压缩 tar -zxvf jpegsrc.v9a.tar.gz cd jpeg-9a/ 对jpeg源码进行配置 ...
2018-10-12 09:34:29
325
原创 Linux网络编程(socket通信)
TCP协议 客户端client 服务端server 创建tcp类型套接字 创建tcp类型套接字 绑定 绑定 连接服务器 ...
2018-10-10 20:09:10
603
1
原创 关于多进程与多线程
多进程 1、进程的创建fork() #include <unistd.h> pid_t fork(void); pid_t vfork(void); 返回值: > 0 ...
2018-10-10 20:07:03
160
原创 文件操作
系统IO 1、open() #include <sys/stat.h> #include <fcntl.h> int open(const char *pathname, int flags); int open(const...
2018-10-10 20:04:29
161
原创 数据结构总结
1、顺序表 typedef struct ARRAY //用于管理顺序表的数据类型 { int * parr;//顺表的起始地址 int len;//表示能够存储的数据节点的个数 int cnt;//已经使用了的表项个数 }ARR,*PARR; void...
2018-10-10 20:03:34
211
原创 Linux基础编程
1、shell核心命令 pwd 查看当前路径 cd 改变当前路径 cd 回到当前用户主目录 cd - 回到刚才的目录 mkdir 创建新目录 rm dir 删除空目录...
2018-10-10 19:58:43
126
原创 C语言总结
一、C语言 1、基本数据类型 布尔型 bool 整形 short\int\long\unsigned short\unsigned int\unsigned long 浮点型 float\double\long double 字符型 char\unsigned char...
2018-10-10 19:55:59
162
mosquitto库.rar
2020-08-15
sqlite3源码.rar
2020-08-15
基于Linux摄像头编程
2018-10-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人