1.l7Դ?码解????
2.盘点8个地图开发的开源项目,yyds!码解
3.Linux下针对路由功能配置iptables的码解方法详解
4.花30元,做了个可编程电流表,码解精度高,码解功能全!码解美国论坛源码解析一下电路原理
l7Դ?码解????
大大通——大联大线上技术支持平台& 方案知识库
大大通 ST原厂频道,提供ST最新方案、码解产品、码解技术、码解在线研讨会资讯!码解
产品介绍
X-NUCLEO-L7A1是码解专为任何配备Arduino R3的STM Nucleo开发板设计的扩展板。它提供了一个完整的码解评估工具包,用于学习、码解评估和使用VLL7CX飞行时间8x8多区测距传感器及°视场。码解此板配备有盖板玻璃夹,支持0. mm、0.5 mm、1mm三种不同间隔片盖玻璃,以模拟不同气隙高度。板上附带一个小椭圆形覆盖玻璃,用于传感器安装。X-NUCLEO-L7A1允许用户通过Arduino连接器堆叠几个扩展板,例如与蓝牙或Wi-Fi接口配合开发VLL7CX应用程序。asp视频教育源码
SATEL-VLL7CX封装提供两块分岔板,便于客户设备集成。嵌入VLL7CX模块的PCB段可穿孔,方便开发人员断开微型PCB,通过飞线用于3.3V电源应用。其体积小巧,简化了SATEL-VLL7CX分岔板集成到开发和评估设备的流程。
通过两个9脚直接插入或使用迷你PCB通过飞线连接,SATEL-VLL7CX板可以与X-NUCLEO-L7A1扩展板兼容。
产品框图概览
X-NUCLEO-L7A1扩展板设计用于测试VLL7CX传感器功能,通过I2C总线编程微控制器控制VLL7CX。应用软件和C-ANSI源代码示例可在st.com官网获取,以便用户了解如何开发应用程序。
集成内容
VLL7CX传感器
STM Nucleo开发板与Arduino UNO R3连接器(CN5, CN6, CN8和CN9)兼容,如图所示
X-NUCLEO-L7A1扩展板简化原理图
产品特性
产品原理图
访问大大通,获取更多详情,探索+系统级应用方案,大联大+FAE在线解答您的疑问。
盘点8个地图开发的开源项目,yyds!
地图开发领域中,开源项目提供了丰富的资源和工具,以下是chrome插件源码查看一些具有代表性的项目,它们在不同方面展现出其独特价值。 Historical-Atlas 这个项目以其直接的命名“历史地图集”吸引了众多关注,作者采用的AGPL-3.0开源协议使得它不仅适合作为参考设计思路或在线服务提供,也鼓励其作为软件产品对外分发时保持开源状态。项目中存在一些遗留问题,如数据库配置和用户信息存储的实现,但通过对照源码,还原表结构并不困难。 vue3-ts-cesium-map-show 由地虎降天龙开发的这个项目,采用MIT开源许可协议,是一个专注于三维可视化数字城市应用,结合Cesium-1.开源库,提供后台可视化编辑与保存功能。 QGIS 作为开源地理信息系统,QGIS支持Windows、Linux、MacOS,拥有强大的地理空间管理与分析能力,包括时间动画、3D地图预览和地图美化等特性,使用户能够生成美观的地图。 react-baidu-map 由uiw开发的react-baidu-map项目,基于React封装了百度地图组件,丁网络验证源码简化了将地图集成到React项目的过程,使开发者能够快速接入地图功能。 Maptalks Maptalks是一个HTML5地图引擎,基于原生ES6 Javascript开发,提供二三维一体化地图能力,通过二维地图旋转、倾斜增加三维视角,并支持插件化设计。 QuickEarth-Free QuickEarth(QE)是一个面向个人免费开放的二三维一体化Web端矢量和栅格数据渲染引擎,适用于气象、海洋、水文、环境等领域,帮助用户实现数据可视化。 地图下载器 使用Java开发的地图瓦片图下载工具,支持多种地图服务,如OpenStreetMap、天地图、谷歌地图等,提供XYZ瓦片图下载与合并功能,方便用户获取地图数据。 L7 L7是蚂蚁金服AntV推出的一款基于WebGL的开源大规模地理空间数据可视分析框架,专注于数据可视化表达,资源下载网源码通过多种视觉变量设置实现信息的有效呈现,满足地图图表、BI系统可视化分析、GIS等领域的需求。 xdh-map xdh-map是一款基于Openlayers的地图应用Vue组件,内置多种地图瓦片,并支持与多个PGIS厂商对接,提供丰富的组件,如文本、图形、热力图等,以及与ECharts结合实现基于地理位置的图表,满足项目常见需求。 这些开源项目在地图开发领域中各具特色,为开发者提供了丰富的选择和强大的技术支持。Linux下针对路由功能配置iptables的方法详解
作为公司上网的路由器需要实现的功能有nat地址转换、dhcp、dns缓存、流量控制、应用程序控制,nat地址转换通过iptables可以直 接实现,dhcp服务需要安装dhcpd,dns缓存功能需要使用bind,流量控制可以使用tc,应用程序控制:例如对qq的封锁可以使用 netfilter-layer7-v2.+-protocols---.tar.gz来实现
1、网络规划
操作系统是centos5.8
2、安装dhcpd
代码如下:
yum install dhcp-3.0.5-.el5
vim /etc/dhcp/dhcpd.conf
ddns-update-style interim;
ignore client-updates;
subnet .0.0.0 netmask ...0 {
option routers .0.0.1;
option subnet-mask ...0;
option domain-name-servers .0.0.1;
range dynamic-bootp .0.0. .0.0.;
default-lease-time ;
max-lease-time ;
}
3、安装bind,实现dns缓存
代码如下:
yum install bind.i bind-libs.i bind-utils.i
vim /etc/named.conf
options {
directory "/var/named";
allow-recursion { .0.0.0/; };
recursion yes;
forward first; #将所有请求都进行转发
forwarders { ...; }; #定义转发服务器地址
};
zone "." IN {
type hint;
file "named.ca";
};
zone "localhost" IN {
type master;
file "named.localhost";
allow-transfer { none; };
};
zone "0.0..in-addr.arpa" IN {
type master;
file "named.loopback";
allow-transfer { none; };
};
创建根域文件,默认有
代码如下:
dig -t NS . /var/named/named.ca
chown :named /var/named/named.ca
创建本地正向解析文件,默认有
代码如下:
vim /var/named/named.localhost
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A .0.0.1
chown :named /var/named/named.localhost
创建本地反向解析文件,默认有
代码如下:
vim /var/named/named.loopback
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A .0.0.1
PTR localhost.
chown :named /var/named/named.loopback
检查主配置文件
代码如下:
named-checkconf
检查根区域配置文件
代码如下:
named-checkzone “.” /var/named/named.ca
检查区域文件
代码如下:
named-checkzone “localhost” /var/named/named.localhost
启动服务
代码如下:
service named start
4、重新编译编译内核和iptables以支持应用层过滤
由于实行防火墙功能的是netfilter内核模块,所以需要重新编译内核,需要下载新的内核源码,并使用netfilter-layer7-v2.作为内核的补丁一起编译到内核中。而控制netfiler的是iptables工具,因此iptables也必须重新编译安装,最后再安装应用程序过滤特征码库-protocols--.tar.gz
1、给内核打补丁,并重新编译内核
2、给iptables源码打补丁,并重新编译iptables
3、安装proto
备份iptables脚本和配置文件
代码如下:
cp /etc/rc.d/init.d/iptables /root/iptables.sysv
cp /etc/sysconfig/iptables-config /root/iptables-config
2.6内核下载地址
/l7-filter/
iptables源码下载地址
/l7-filter/
代码如下:
xz -d linux-2.6...tar.xz
tar -xvf linux-2.6...tar.gz -C /usr/src #新的内核源码,用于重新编译
tar -zxvf netfilter-layer7-v2..tar.gz -C /usr/src #内核补丁和iptables补丁 ,只支持到2.6.
#进入解压目录并创建软连接
pcd /usr/src
ln -sv linux-2.6.. linux
#进入内核目录
pcd /usr/src/linux
#为当前内核打补丁
ppatch -p1 ../netfilter-layer7-v2./kernel-2.6.-2.6.-layer7-2..path
#为了方便编译内核将系统上的内核配置文件复制过来
pcp /boot/config-2.6.-.el5 /usr/src/linux/.config
编译内核
代码如下:
make menuconfig
Networking support - Networking Options - Network packet filtering framework - Core Netfilter Configuration
Netfilter connection tracking support
"lawyer7" match support
"string" match support
"time" match support
"iprange" match support
"connlimit" match support
"state" match support
"conntrack" connection match support
"mac" address match support
"multiport" Multiple port match support
Networking support - Networign options - Network packet filtering framework - IP:Netfiltr Configuration
IPv4 connection tracking support (required for NAT)
Full NAT
MASQUERADE target support
NETMAP target support
REDIRECT target support
在Networking support中选择 Networking options
查找Network packet filtering framework(Netfilter)–Core Netfiler Configrationg–Netfilter connection tracking support(NEW),”layer7″ match support(NEW),”time” match support(NEW),”iprange”
查找IP:Netfilter Configuration–IPv4 connection tracking support,Full NAT(NEW)
代码如下:
make
make modules_install
make install
重启操作系统选择新内核登录
卸载旧的iptables
代码如下:
rpm -e iptables-1.3.5-9.1.el5 iptables-ipv6-1.3.5-9.1.el5 iptstate-1.4-2.el5 --nodeps
安装新的iptables,以支持新的netfiler模块
代码如下:
tar -jsvf iptables-1.4.6.tar.bz2 -C /usr/src
cd /usr/src/netfilter-layer7-v2.
cd iptables-1.4.3forward-for-kernel-2.6.forward
cp * /usr/src/iptables-1.4.6/extensions/
cd /usr/src/iptables-1.4.6/
./configure --prefix=/usr --with-ksource=/usr/src/linux
make
make install
查看安装后的iptables的文件
代码如下:
ls /usr/sbin |grep iptables
ls /usr/libexec/xtables
复制之前备份的配置文件和脚本
代码如下:
cp /root/iptables-config /etc/sysconfig/
cp /root/iptables.sysv /etc/rc.d/init.d/iptables
修改脚本中iptables的路径
代码如下:
vim /etc/rc.d/init.d/iptables
:.,$s@/sbin/$IPTABLES@/usr/sbin/$IPTABLES@g
让iptables服务开机自动启动
代码如下:
chkconfig --add iptables
修改iptables 配置文件
将/etc/sysconfig/iptables-config中的
IPTABLES_MODULES=”ip_conntrack_netbios_ns” 注释掉
安装协议特征码
代码如下:
tar xvf -protocols--.tar.gz
make install
完成后在/etc/l7-protocols会生成文件
支持的协议/etc/l7-protocols/protocols
添加iptables策略,运行内部网络上网,禁止qq和视频
代码如下:
iptables -t nat -A POSTROUTING -s .0.0.0/ -j SNAT --to-soure ..6.
iptables -A FORWARD -m layer7 --l7proto qq -j DROP
iptables -A FORWARD -m layer7 --l7proto httpvideo -j DROP
iptables -A FORWARD -m layer7 --l7proto httpaudio -j DROP
指定8点到点无法上网
复制代码
代码如下:
iptables -A FORWARD -m time --timestart : --timestop : -j DROP
5、使用tc控制带宽
例如公司出口带宽是Mbps,个用户A分配KB的最大下载带宽,给用户B 分配分配的最大下载带宽是KB
A用户ip:.0.0.
B用户ip:.0.0.
代码如下:
#在eth0网卡上创建一个根队列规则,队列规则的算法使用htb,default 2表示指定一个默认类别编号,默认的流量控制策略,如果ip没有在后面的filter中被匹配到就都是有这个策略
tc qdisc add dev eth0 root handle 1:0 htb default 2
#在eth0网卡上定义一个类,prant 1:0中的1对应根队列规则中的handle 1:0,classid 1:2表示当前这个类的标识,用于应用在后面的得到filter中,rate kbsp表示带宽为KB/s,ceil kbps表示最大带宽也为KB/s,prio 2是优先级
tc class add dev eth0 parent 1:0 classid 1:2 htb rate kbps ceil kbps prio 2
tc class add dev eth0 parent 1:0 classid 1:3 htb rate kbps ceil kbps prio 2
#将两个类的默认的fifq队列规则改为sfq
tc qdisc add dev eth0 parent 1:2 handle sfq
tc qdisc add dev eth0 parent 1:3 handle sfq
#在网卡eth0上的1:0节点(对应qdisc中的handle 1:0)添加一个u过滤规则,优先级为1,凡是目标地址是.0.0.的数据包都使用1:2类(对应classid为1:2的类)
tc filter add dev eth0 parent 1:0 protocol ip prio 1 u match ip dst .0.0. flowid 1:2
tc filter add dev eth0 parent 1:0 protocol ip prio 1 u match ip dst .0.0. flowid 1:3
如果还有其他用户例如用户C和D的ip是、,要求的下载带宽也要求那么在加入
代码如下:
tc filter add dev eth0 parent 1:0 protocol ip prio 1 u match ip dst .0.0. flowid 1:3
tc filter add dev eth0 parent 1:0 protocol ip prio 1 u match ip dst .0.0. flowid 1:3
清除eth0上的规则
代码如下:
tc qdisc del dev eth1 root /dev/null
花元,做了个可编程电流表,精度高,功能全!解析一下电路原理
制作了一个成本仅元的可编程电流表,不仅成功夺得了元奖金,还充分展示了电路设计的高精度与多功能性。本文详细记录了该电流表的制作过程与电路原理。
这款电流表为TYPE-A转TYPE-A设计,具备以下功能:可编程电流范围为mA至3A,具备连续调整及触发周期调整能力;小幅度波动容忍度可调;支持5至V的快速充电供电,可用作快速充电中间件;大电流快速响应,一旦瞬时电流超过设定值的1.2倍,会立即断开后级电路;实时显示限流值情况,同时监控供电电压及电流状态;提供源代码,便于优化与改进。
设计原理主要基于实现一个可编程电流表的需求。考虑到用作充电器中间件可能遇到的高电压情况,选择了支持宽电压供电的DC-DC降压电路,供电电压范围达到5至V。电路采用二级稳压设计,首先将输入电压降压至5V,再通过LDO将电压进一步稳压至3.3V,以确保稳定供电和ADC采样稳定性。
电路主要分为7个部分:供电电路、输出控制及电流采样电路、USB电压采样、显示电路、按键电路、无源蜂鸣器驱动电路以及主控电路。供电电路使用DC-DC降压芯片“JWA”将电压降压至5V,再通过LDO SK稳压至3.3V,配置可恢复保险丝和ESD保护。输出控制及电流采样电路采用微硕的PMOS WSDLDN,实现电流控制和采样。USB电压采样尽量使用高精度电阻以提高精度。显示电路使用LCD STS 1.寸屏,支持背光PWM控制。按键电路使用软硅胶按键和拨轮编码器,加入防抖电容以提高稳定性。无源蜂鸣器驱动电路采用无源设计,配合PWM驱动。主控电路选用国民技术的NGC8L7微控制器。
软件开发环境为Keil 5.,使用NGC8L7 SDK版本1.1.0。ADC采样采用DMA方式,提高了采样速度和效率。采样通道包括多个关键参数,通过倍过采样减小了漂移,提高了精度,但延长了采样时间。毫秒定时器参与了程序设计中的多个关键功能,包括时间计数、空闲中断实现、蜂鸣器自动停止以及限流保护处理,提高了程序的高效性和实用性。
项目遵循GPL 3.0开源协议,成本仅为元,奖金为税后元。为原创项目,未在其他比赛中获奖。参考资源包括作者YuToo的《可编程电流表》文档。通过本文,读者可以深入了解电路设计与软件编程的复杂性,以及低成本高精度电流表的实现细节。