ESP32(八) 简单的webserver
#include <esp_wifi.h> #include <nvs.h> #include <sys/param.h> #include "
ESP32(七) NVS
基本概念 命名空间(Namespace):NVS 数据按命名空间分组,避免键名冲突。 键值对(Key-Value):支持存储整数、字符串、二进制数据等类型。 存储限制:每个键值对最大 1984KB,单个命名空间总大小取决于分区表配置(默认约 24KB)。 示例代码 #include <stdio.h
ESP32(四) STA & AP
STA 对官方示例进行了代码精简,方便自己随时取用 # Name, Type, SubType, Offset, Size, Flags # Note: if you have increased the bootloader size, make sure to update the off
多级菜单
使用方法 以下四个函数分别放进各自按键的回调中,点击一次调用相关函数 void menu_up(); void menu_down(); void menu_confirm();
ESP32(五) ESP32 OTA
注意事项 修改于native_ota_example,并删除HTTPS证书的验证 固件上传于 gitee, 不会跑路白嫖的服务器 使用双分区, 默认例子使用3分区,太浪费,其实双分区也可以 程序验证固件版本,升级的固件版本与运行的版本相同,不予以升级 自诊断以判断IO为依据 固件初始化结束,按下按键
其他笔记
EC800K AT连接移远云 配置过程 # 配置产品信息(初次连接需配置) AT+QIOTCFG="productinfo","pxxxxt","cDVTxxxxxxxxWGVB" # 连接开发者中心 AT+QIOTREG=1 # 查询当前连接状态(+QIOTSTATE: 8为正常) AT+QI
[STM32] 2.PWM DMA
CubeMX 配置 Channel2 -- PWM Generation CH2 DMA Setting -- TIM CH2 通用配置(内存到外设) 参数配置 -- Prescaler(决定占空比调节的精细度),Counter period(和前者一起,决定了周期) PWM DMA #includ
[STM32] 1. 串口
CubeMX配置 串口全局中断 DMA 普通配置(Normal Mode/TX RX DMA Request/全字节) 单字接收与buff 接收 注意事项: 单字接收每接收一个字节触发一次回调。 buff接收是等到空闲才触发回调。 理论上中断也能做buff接收。 freeRTOS的优先级只能管理 5
ESP32(六) ESP-IDF Simple POST/GET
最简单的POST GET用法 实现效果: 利用POST链接Wi-Fi:curl -X POST -H "Content-Type: application/json" -d '{"ssid":"ChinaNet-2xueyQ","password":"88888888"}' http://192.1
CURL 的 POST/GET/PUT 方法
GET 请求 一个简单的 Get 请求 curl -X GET http://192.168.2.35/hello 添加请求头的 Get 请求 curl -X GET -H "Host: example.com" http://192.168.2.35/hello 添加查询的 Get 请求 curl
Lora
芯片手册 SX1278-data-cn.pdf 代码 SX1278.c #include "SX1278.h" #include <string.h> [SX1278-data-cn.pdf](/upload/SX1278-data-cn.pdf) uint8_t SX1278_SPIRead(S
BLE MESH (二)
来自沁恒低功耗蓝牙MESH软件开发参考手册.pdf WCH BLE MESH 常识 所有节点均带有中继功能 所有例程均带有app_mesh_config.h,可以修改所有 mesh 协议栈内使用的参数 MESH 节点层级结构: 设备 -> 元素 -> 模型 设备:mac 地址 + 广播UUID 元素
(四) 两种乙类放大电路
第一种乙类放大电路 略有失真,利用二极管把电压抬高0.7V以消除交流源从0~0.7V的失真,但二极管的电压不一定完全等于Vbe 第二种乙类放大电路 利用了第三章的:基级上拉加上耦合电容,可以不考虑交越失真,具体不知道什么原理。 经测试,小信号没有交越失真,大信号会有。 共同点 不放大电压信号,只提供
(三) 三极管放大电路元件数值配置
电压放大器 条件 VCC = 12V 三极管放大倍数 :100 电压源:50mV/AC 配置过程 假设集电极电流:这里假设为100mA 在集电极电流为100mA时,定Vce = 1/2Vcc,为了输出波形以6V为中心 集电极&发射极两个电阻和:6V/100mA = 60欧姆,分配应集电极远大于发射极
运算放大器(二)运算放大
基本知识 标题的虚断虚短具有极其强的迷惑性,只需要记住本质 虚断本质:理想运放输入阻抗无穷大 虚短本质:当给运算放大器引入负反馈的时候,Un = Up 电路分析 同向比例运算 I2 = Uin/R2 I1 = (Uout-Uin)/R1 I1 = I2 综上: Uin/R2 = (Uout -Uin
运算放大器(一)两个基本用法
基本知识 电源可以接双电源,也可以接单电源,一般单电源多一些 正负输入得到它应得的电压,那输出就是正,否则反之。 正负输入相近:Uout = A(Up - Un) + 2.5(A可达到几十万) 比较器 这里只用到了饱和区
负压发生电路
以MT3608为例 这个负压发生电路依附于boost升压电路 流程 MT3608在反馈的作用下输出了+15V,在+15V的开关占空比下,我们同样只能输出-15v,不能输出-12V或者其他电平 SW为高电平时: 电流依然保持原有的流向,流向为 L2 - C18 - D9 - 地 ,直到C18充满. 当
Boost 升压电路
示例 MT3608升压电路 核心元件 : 电感 做一个小实验,不停开关图中的轻触开关,电感两端在释放开关的瞬间会产生一个高压,这个高压有时候为正值,有时候是负值 以下是我的实验截图
一个未验证的查找陆地角度算法
#include <stdio.h> #include <math.h> #include <float.h> // 定义图像大小 #def
CH573(四) TMOS
注意事项 每个任务包含16个事件,包括一个消息事件和15个自定义事件 事件以位的方式作ID bit0 bit1 bit2 ... bit15 0/1 0/1 0/1 ... 0/1 禁止中断中调用事件 如果使用了ble,建议不要在单个任务中执行超过连接间隔一半时长的任务,否则将影响蓝牙通讯 任务执行
Airtag Tag
使用单一公钥进行广播 此程序使用了单一公钥广播,但可以使用多个公钥进行广播 每次广播使用不同的公钥,可以减少被跟踪的风险。若某个公钥被追踪或认为不安全,可以轻松切换到另一个公钥,从而增强设备的安全性和隐私性。 以下只是C代码原理实现,具体根据不同蓝牙芯片进行程序编写 源工程链接 #include <
LVGL UI 代码格式
UI初始化 void ui_init(void){ lv_disp_t * dispp = lv_disp_get_default(); lv_theme_t * theme = lv_theme_default_init(dispp, lv_palette_main(LV_PALETTE_
结构体指针传参
具名结构体创建结构体 struct uart_config_me { uart_port_t uart_num; QueueHandle_t xQueue; }uart_config_me; void create_uart_event_task(struct uart_conf
samba
设置root用户 smbpasswd -a root 修改配置文件 nano /etc/samba/smb.conf [myshare] comment = Public Stuff #path = /home/myshare path = /root/file/pans
Docker添加 HTTP 代理
创建或编辑 Docker 服务的 systemd 配置文件: 打开 Docker 服务的 systemd 配置文件 sudo nano /etc/systemd/system/docker.service.d/http-proxy.conf 在文件中添加代理配置: [Service] Environ
简单的A类放大器 - 1969
翻译自链接 简单的 A 类放大器 一种 10 瓦的设计,在主观上比 B 类晶体管放大器能提供更好的效果 作者:J. L. 林赛·胡德,M.I.E.E. 日期:1969 年 4 月,发表于《无线世界》 在过去的几年里,已经发表了许多关于家用音频放大器的优秀设计。然而,由于元件可用性的变化,其中一些设计
环形滤波算法
#include <stdio.h> #include <stdlib.h> #define BUFFER_SIZE 10 // 缓冲区大小 #define THRESHOLD 180
STM32 ADC采集的三种方式
采样周期 单个采集模式 ADC_Settings: 程序使用 uint16_t ADC_Read(
ESP32(三) LEDC
初始化 #define LEDC_OUTPUT_IOA (7) #define LEDC_MODE LEDC_LOW_SPEED_MODE #define LEDC_CHANNEL_A LEDC_CHANNEL_0 void led
(一) 三极管面向应用的原理
三极管的等效原理 三极管中住着一个三极管人,他唯一的工作就是让: 输出电流 = β*输入电流 三极管人左边二极管的压降其实并不是恒定的,而是: I[b]增加 -> V[b]增加 回路: 可以看到图中的两条回路,这很重要 集电极(接正极收集电的那个极) 发射极(把基极电流和集电极电流发射出去的极) 以
结构体创建的 3 种方式
标准方式 #include <stdio.h> struct student //结构体类型的说明与定义分开。声明 { int age; /*年龄*/ float score; /*分数*/
CH573(三) 代码结构
概览 #include "config.h" #include "HAL.h" #include "gattprofile.h" #include
CH573(二) 蓝牙
低功耗蓝牙手册链接 这个手册以最基本的外围设备Peripheral讲述了程序执行的流程. 核心是 TMOS , 这个 OS 本质是一个事件驱动的其实也不算是 OS. 但是简单又牛逼, 只要一步一步看手册, 跟着手册看函数, 就能读懂整个例子. 例子文件 ├── BLE_UART ├── BLE_US
CH573(一) 基础外设
教程来自链接 不得不吐槽一下, 沁恒的库真的很浅, 和 STM 的 HAL 库比,通过两个跳转就能看见它的寄存器操作,麻了. 好吧好处就是能让我知道原理, 坏处就是调用草率,不容易懂. (一) 点灯 #include "CH57x_common.h" int main(){
ESP32(二) ADC
理论 ESP32c3 的 ADC 分为两个单元, 我们这里使用了单元 1 . 步骤 设置 ADC 位宽 设置 ADC 通道衰减 为使用的 ADC 单元设置 ADC 矫正 取得 ADC 数值 ADC 转化电压 代码 至于esp_adc_cal_characterize()的 3300 这个数值其实没有
ESP32(一) GPIO
点灯方法(一) #include <stdio.h> #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include</
F1C200S (二) Uboot
交叉编译工具链 F1C200s内核ARM9 使用 ARMv5 架构,因此支持 ARMv5 的工具链都能编译,一般使用arm-linux-gnueabi- 开发环境使用 Ubuntu16.04 解压编译器到/usr/local/arm-linux-gcc/ 添加环境变量nano /etc/profil
F1C200s (一) 硬件原理图
来源:[https://widora.cn/tiny200] 原理图 外设
峰值查询算法
这是来源[https://zhuanlan.zhihu.com/p/549588865] 他用了 python, 于是我就用 ChatGPT 转换成了 C 语言, 试验了下, 还算好用 这么牛逼的代码, 我这辈子写不出来了 不求甚解, 会用就行 #include <stdio.h> #include
freeRTOS 高精度定时任务
vTaskDelayUntil()能精确地在每 50ms 调用这个函数 void TASKF(void *ptr) { TickType_t xLastWakeTime; xLastWakeTime = xTaskGetTickCount(); while (1) { vTask
Ubuntu Server 上网
Netplan 是 Ubuntu 18.04 及以后版本的默认网络配置工具,用于配置网络接口的基本设置,如静态 IP 地址、DHCP、DNS 等。 在Ubuntu22.04安装时,配置网络信息会通过Subiquity 网络配置工具,写入/etc/netplan/00-installer-config
用串口中断解析Modbus数据
状态机解析 Modbus 协议数据帧 原理: 中断接收到设备地址 0x01, 进入阶段 2 中断接收到寄存器地址, 进入阶段 3 中断接收到数据域长度, 进入阶段 4 往buf 存接收到的数据域字符,直到接收到应有的数据域长度加上 CRC 如果计算的 CRC 和接收到的 CRC 一致就发送信号通知任
CRC校验
具体原理: https://blog.csdn.net/resilient/article/details/117368600 Modbus int16 CRC uint16_t crc16(uint8_t *addr,uint8_t num) { int i,j,te
电子管
电子管内部结构 阴极: 发射电子的源泉, 利用电子的热发射发射电子 灯丝: 用来加热阴极. 直热式的灯丝就是阴极, 旁热式的灯丝只负责加热阴极 阳极: 接收阴极发射的电子,外接电源正极 栅极: 控制到达阳极的电子数量; 抑制栅极加负电压,屏栅极加正电压 芯柱: 把各个电极引出管外 云母片: 固定电机
(二) 三极管基本放大电路
https://zhuanlan.zhihu.com/p/549377896 三极管 简单的技巧: 箭头朝内 PNP 箭头一方发射极 E(发射极)B(基极)C(集电极) 共 X 极放大电路,值得是 X 端接地 共射极放大电路
少年晶体管收音机(三)有一级低频放大的晶体管收音机
实物图 放大部分原理 R2 为可变电阻,为三极管基极提供偏置电流,由于三极管基极只有在特定电流下才在放大区间.因此要把可变电阻调整到合适的值. 当然,基极电位始终是固定的 0.7V.R2 分到的电压始终是 E-0.7V. 前端部分原理 信号经过调谐回路流向地,特定频率经过线圈耦合进第二个电感. 信号
Makefile 文件的编写
例子 #交叉编译工具链绝对路径,去掉首个 / 为相对路径 CC = /root/OpenWrt-Toolchain-ramips-for-mipsel_24kec+dsp-gcc-4.8-linaro_uClibc-0.9.33.2/toolchain-mipsel_24kec+dsp_gcc-4.
少年晶体管收音机(二)能选电台的收音机
本章实物图 本章原理图 重点 LC 调谐回路:f = 1/(2*pi*Squa(L*C))。在并联谐振电路下,[高频/低频]会通过[电容/电感]直接到达地,并联谐振两端电压小,无法给 L2 以感应电压驱动耳机发出声音,只有谐振频率下,两端阻抗最大,电压最大,感应出电压驱动耳机发声 电容阻抗Z = 1
少年晶体管收音机(一)最简单的收音机
少年晶体管收音机.pdf 前言 本书出版于 1978 年 9 月。少年晶体管收音机,第一句话:少年们喜欢自己动手装置收音机。 最简单的收音机 相信看到这图头脑里就很明确了。 天线接收电磁波,高频信号正半轴无法经过二极管,因为这里是反接的,于是绕过二极管从耳机流过,驱动耳机发出声音,负半轴则直接经过二
电子技术讲座
电子技术讲座(四)晶体管开关电路 电子技术讲座(三)晶体管收音机 电子技术讲座(二) 晶体管放大与振荡电路 电子技术讲座(一) 晶体管整流电路