OpenIPC开源FPV之Adaptive-Link工程解析
1. 源由
目的蛮简单的,在做集成之前搞清楚集成代码的工作原理。与RF相关的内容,始终搞得非常神秘,也确实神秘!
RF神秘的主要原因:相关变量比较多,且非线性相关,再加上实际应用场景复杂,导致很多情况下一不注意就发生说不出的为什么信号衰减了。
==》最为底层的逻辑是电磁学核心麦克斯韦方程组
==》或者更加通俗的可以认为是高斯定律(磁场)、法拉第电磁感应定律、安培-麦克斯韦定律的综合作用
注:这里不做展开物理学理论(虽然很想,想当初方程组的推导随便15分钟的事情)。另外,也不会展开RF设计知识(反正我也不太懂),但是要明白的是通过这些底层逻辑,能够从本质上更好的理解信号衰减+增强在实际环境如何处理、简化。
2. 工程结构
为了更好的理解和进一步优化,我们对OpenIPC的Adaptive Link进行了整理。
详细代码分支详见:OpenIPC-Adaptive-Link/arrange_project_structure
.
├── ALink42n.c
├── ALink42p.c
├── ALink42q.c
├── alink_drone.c
├── alink_gs.py
├── build.sh
├── install.sh
├── Makefile
├── LICENSE
├── README.md
├── config
│ ├── alink.conf
│ └── txprofiles.conf
└── more
├── setpower.sh
├── spreadfwd.py
└── spreadfwd.readme.txt
3. 工程脚本
build.sh: 为了进行摄像头端代码的编译构建
注:支持goke|hisi|star6b0|star6e交叉编译。
$ ./build.sh
Usage: ./build.sh [goke|hisi|star6b0|star6e|native]
install.sh: 为了简化安装流程的脚本文件。
注:为了简化安装,支持从代码库直接安装,以及网络安装。
$ ./install.sh --help
Usage: ./install.sh gs <install|remove|update> [src]
./install.sh drone <install|remove|update> <goke|hisi|star6b0|star6e> [src]
4. 工程代码
4.1 天空端
Makefile: 天空端嵌入式工程主要构建文件ALink42n.cALink42p.cALink42q.c
注:目前尚并不是非常清楚三个文件主要功能区别,从代码复杂角度:q > p > n。
4.2 地面端
alink_gs.py: 不依赖硬件的地面端程序
5. 总结
本文先从工程总体上给出一个概貌,后续在陆续放出更为细节的内容。
6. 补充知识
6.1 高斯定律(电场)
描述: 电场的通量与封闭面内部的电荷成正比,说明电荷是电场的源。
-
积分形式:
∮ ∂ V E ⋅ d A = Q enc ε 0 \oint_{\partial V} \mathbf{E} \cdot d\mathbf{A} = \frac{Q_{\text{enc}}}{\varepsilon_0} ∮∂VE⋅dA=ε0Qenc -
微分形式:
∇ ⋅ E = ρ ε 0 \nabla \cdot \mathbf{E} = \frac{\rho}{\varepsilon_0} ∇⋅E=ε0ρ
6.2 高斯定律(磁场)
描述: 磁场的通量总是为零,说明没有磁单极子,磁场是闭合的。
-
积分形式:
∮ ∂ V B ⋅ d A = 0 \oint_{\partial V} \mathbf{B} \cdot d\mathbf{A} = 0 ∮∂VB⋅dA=0 -
微分形式:
∇ ⋅ B = 0 \nabla \cdot \mathbf{B} = 0 ∇⋅B=0
6.3 法拉第电磁感应定律
描述: 时间变化的磁场会产生旋转的电场(电磁感应)。
-
积分形式:
∮ ∂ S E ⋅ d l = − d d t ∫ S B ⋅ d A \oint_{\partial S} \mathbf{E} \cdot d\mathbf{l} = -\frac{d}{dt} \int_{S} \mathbf{B} \cdot d\mathbf{A} ∮∂SE⋅dl=−dtd∫SB⋅dA -
微分形式:
∇ × E = − ∂ B ∂ t \nabla \times \mathbf{E} = -\frac{\partial \mathbf{B}}{\partial t} ∇×E=−∂t∂B
6.4 安培-麦克斯韦定律
描述: 电流和变化的电场都会产生旋转的磁场。
-
积分形式:
∮ ∂ S B ⋅ d l = μ 0 ∫ S J ⋅ d A + μ 0 ε 0 d d t ∫ S E ⋅ d A \oint_{\partial S} \mathbf{B} \cdot d\mathbf{l} = \mu_0 \int_{S} \mathbf{J} \cdot d\mathbf{A} + \mu_0 \varepsilon_0 \frac{d}{dt} \int_{S} \mathbf{E} \cdot d\mathbf{A} ∮∂SB⋅dl=μ0∫SJ⋅dA+μ0ε0dtd∫SE⋅dA -
微分形式:
∇ × B = μ 0 J + μ 0 ε 0 ∂ E ∂ t \nabla \times \mathbf{B} = \mu_0 \mathbf{J} + \mu_0 \varepsilon_0 \frac{\partial \mathbf{E}}{\partial t} ∇×B=μ0J+μ0ε0∂t∂E

1629

被折叠的 条评论
为什么被折叠?



