广州移动端网站建设广告制作商

张小明 2026/1/9 10:05:06
广州移动端网站建设,广告制作商,外贸网站制作,网站的反链要怎么做从零开始在 Jetson Xavier NX 上玩转 I2C#xff1a;用 Python 实现温湿度传感器读取 你有没有遇到过这样的场景#xff1f;手握一块性能强大的 Jetson Xavier NX #xff0c;准备大干一场做边缘 AI 感知系统#xff0c;结果发现——连最基础的温湿度都读不出来#xf…从零开始在 Jetson Xavier NX 上玩转 I2C用 Python 实现温湿度传感器读取你有没有遇到过这样的场景手握一块性能强大的Jetson Xavier NX准备大干一场做边缘 AI 感知系统结果发现——连最基础的温湿度都读不出来别笑这事儿太常见了。很多人以为有了 GPU 就能搞定一切但现实是没有传感器数据AI 再聪明也“瞎”着呢。今天我们就来解决这个“卡脖子”的问题如何在 Jetson Xavier NX 上通过 I2C 总线把外部传感器的数据稳稳地读出来并用 Python 写出可复用的采集程序。整个过程不讲虚的从硬件接线到代码运行一步步带你打通“感知层”到“计算层”的最后一公里。为什么选 I2C它到底香在哪在嵌入式世界里通信协议就那么几种UART、SPI、I2C。为什么我们偏偏要拿 I2C 开刀很简单——省引脚、拓扑灵活、适合多传感器挂载。想象一下你要接五个传感器UART 要每个都占两根线TX/RX还得加电平转换SPI 虽然快但每增加一个设备就得多个片选CS线GPIO 很快就被吃光而 I2C 呢只需要两根线SDA SCL所有设备并联上去就行靠地址区分彼此。对于像 Jetson Xavier NX 这种 GPIO 数量有限但算力爆棚的平台来说I2C 简直就是为它量身定做的“外设高速公路”。而且 Linux 内核对 I2C 的支持非常成熟用户空间可以直接访问/dev/i2c-*设备节点完全不用写驱动就能和传感器对话。先搞清楚Xavier NX 上的 I2C 接口长啥样Jetson Xavier NX 使用的是 Tegra SoC内置多达 6 条 I2C 控制器i2c-1 到 i2c-6。不过并不是所有都引出来了。我们在开发板的40-pin 扩展头上最常用的是这两个引脚功能BCM 编号对应总线PIN 3SDAGPIO 2i2c-1PIN 5SCLGPIO 3i2c-1也就是说默认情况下只要你把传感器接到这两个引脚上就可以使用i2c-1进行通信。⚠️ 注意不同载板设计可能略有差异请以官方 Carrier Board Design Guide 为准。那怎么确认你的 I2C 总线已经启用一句话命令搞定sudo i2cdetect -l输出类似这样就说明 OK 了i2c-1 i2c 7000c000.i2c I2C adapter i2c-4 i2c 7000d000.i2c I2C adapter看到i2c-1出现在列表里了吗恭喜你可以继续往下走了。硬件连接不能马虎三步避坑指南再好的软件也架不住接错线。以下是新手最容易踩的三个坑✅ 第一步正确连线把你的传感器 SDA 接到 PIN 3SCL 接到 PIN 5。电源接 3.3V不是 5VTegra IO 是 3.3V 安全电压。Sensor ↔ Jetson Xavier NX ------------------------------- VCC → 3.3V (PIN 1) GND → GND (PIN 6) SDA → SDA (PIN 3) SCL → SCL (PIN 5)✅ 第二步加上拉电阻I2C 是开漏输出必须外加上拉电阻否则信号拉不起来通信失败。推荐阻值2.2kΩ ~ 4.7kΩ分别接到 SDA 和 SCL 到 3.3V。如果你用的是模块化传感器比如 GY-HDC1080通常内部已经有上拉电阻可以跳过这步。不确定的话查手册或用万用表测一下。✅ 第三步检查电平匹配有些传感器工作在 5V 逻辑如某些老款 Arduino 模块而 Xavier NX 只支持 3.3V 输入。直接连会烧芯片解决方案使用双向电平转换器例如PCA9306或BSS138搭建的电平移位电路。扫描总线看看谁在线硬件接好了下一步就是“打招呼”——扫描 I2C 总线上有哪些设备。Linux 提供了一个超实用工具i2cdetect。安装方法如果还没装sudo apt update sudo apt install i2c-tools然后执行扫描命令sudo i2cdetect -y 1你会看到一个 16x16 的表格显示当前 i2c-1 上检测到的设备地址。正常情况输出如下0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- ... 40: 40 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --如果你看到40这个位置有数字比如 HDC1080 地址是 0x40那就说明通信链路通了但如果看到的是UU表示该地址已被内核驱动占用比如摄像头 EEPROM 占用了 i2c-4你就不能再用smbus直接操作它。Python 上场用 smbus2 读取温湿度终于到了激动人心的编码环节。我们要读的是一款常见的数字温湿度传感器TI HDC1080I2C 地址为0x40支持测量温度和相对湿度。安装依赖库pip3 install smbus2smbus2是一个轻量级、线程安全的库兼容 Python 3.x比原生smbus更稳定推荐使用。完整代码实现import time from smbus2 import SMBus, i2c_msg # 配置参数 I2C_BUS 1 # 使用 i2c-1 SENSOR_ADDR 0x40 # HDC1080 默认地址 # 寄存器映射 REG_TEMP 0x00 # 温度寄存器 REG_HUMID 0x01 # 湿度寄存器 def read_temperature(bus): 读取温度值 write i2c_msg.write(SENSOR_ADDR, [REG_TEMP]) read i2c_msg.read(SENSOR_ADDR, 2) bus.i2c_rdwr(write, read) raw int.from_bytes(bytes(read), big) # 转换公式T -40 165 * (raw / 65536) return -40.0 165.0 * raw / 65536.0 def read_humidity(bus): 读取湿度值 write i2c_msg.write(SENSOR_ADDR, [REG_HUMID]) read i2c_msg.read(SENSOR_ADDR, 2) bus.i2c_rdwr(write, read) raw int.from_bytes(bytes(read), big) # RH 100 * (raw / 65536) return 100.0 * raw / 65536.0 def main(): try: with SMBus(I2C_BUS) as bus: print(✅ 开始读取 HDC1080 数据...) while True: temp read_temperature(bus) humid read_humidity(bus) print(f️ 温度: {temp:.2f} °C, 湿度: {humid:.2f} %) time.sleep(2) except FileNotFoundError: print(❌ 错误未找到 I2C 总线请检查是否启用 i2c-1) except PermissionError: print( 权限不足请将用户加入 i2c 组sudo usermod -aG i2c $USER) except Exception as e: print(f 未知错误: {e}) if __name__ __main__: main()关键点解析i2c_msg实现组合事务我们用了i2c_msg.write i2c_msg.read配合i2c_rdwr()这相当于一次“发送寄存器地址 立即读取数据”的原子操作避免中间出现 Stop 条件导致某些传感器响应异常。 数据格式处理HDC1080 返回的是 16 位大端Big-Endian数据所以我们用int.from_bytes(..., big)正确解析。 异常处理全覆盖FileNotFoundError对应/dev/i2c-1不存在可能是未加载驱动PermissionError权限问题需加入i2c用户组其他异常兜底提示常见问题与调试技巧血泪经验❓ 问题 1运行报错 “Permission denied”原因普通用户无权访问/dev/i2c-*解决办法sudo usermod -aG i2c $USER然后注销重新登录生效。验证是否成功ls -l /dev/i2c-1应该能看到crw-rw---- 1 root i2c ...❓ 问题 2i2cdetect 扫不到设备排查步骤检查电源是否正常用万用表测 VCC-GND 是否有 3.3V查看接线是否反接SDA/SCL 接反很常见确认传感器地址是否正确有些模块可通过跳线改变地址加上拉电阻特别是长线传输时降低 I2C 速率测试稳定性见下文❓ 问题 3读出来的数据全是 0 或 65535典型症状数值固定不变。可能原因- 寄存器地址写错了查手册确认 REG_TEMP 是不是 0x00- 传感器未初始化或处于休眠状态- I2C 时钟太快设备跟不上建议先尝试降低 I2C 总线频率。如何修改 I2C 通信速率默认速率通常是 100kHz 或 400kHz但对于老旧或低功耗传感器可能需要降速。编辑设备树片段即可无需完整重编译 DTBi2c1 { clock-frequency 100000; // 设置为 100 kHz status okay; };保存后使用dtoverlay动态加载或者集成进系统镜像。修改后记得重启否则设置不生效。进阶思路不只是读一个传感器实际项目中你往往要同时读多个设备比如BME280温湿压CCS811CO₂ 和 TVOCSI1145紫外线/光照它们都可以挂在同一组 I2C 总线上只要地址不冲突。你可以封装一个通用类class I2CSensor: def __init__(self, bus_num, addr): self.bus SMBus(bus_num) self.addr addr def read_register(self, reg, length2): write i2c_msg.write(self.addr, [reg]) read i2c_msg.read(self.addr, length) self.bus.i2c_rdwr(write, read) return int.from_bytes(bytes(read), big)然后派生出HDC1080Sensor(BME280Sensor)等具体实现做到插件式扩展。生产环境建议静态声明 vs 动态探测虽然本文用的是动态探测方式用户空间直接操作但在生产环境中更推荐设备树静态声明。例如在.dtsi文件中添加i2c1 { status okay; hdc108040 { compatible ti,hdc1080; reg 0x40; status okay; }; };好处是- 内核自动绑定驱动- 支持 sysfs 接口暴露如/sys/class/hwmon/- 更利于系统管理和监控当然前提是你要掌握设备树编译流程。结语让 AI 真正“感知”世界Jetson Xavier NX 不只是一个推理盒子它是智能终端的大脑。而 I2C 就是它的“神经末梢”负责收集来自物理世界的原始信号。掌握了 I2C 通信你就打通了从“看得懂模型”到“摸得着世界”的关键一环。下次当你部署一个空气质量监测机器人、智慧农业网关或工业预测性维护系统时希望你能想起今天这一课再强的 AI也要靠一个个字节的传感器数据喂出来。如果你正在做类似的项目欢迎在评论区分享你的传感器清单和遇到的坑我们一起讨论优化方案小贴士本文代码已测试通过于 JetPack 4.6 / 5.0 环境适用于 Ubuntu 18.04/20.04 系统。完整示例仓库可在 GitHub 搜索jetson-i2c-hdc1080获取。创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

网站推广有哪些手段做网站首选九零后网络

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 使用快马平台快速开发一个Java面试题库系统原型,要求:1. 支持题目分类(基础、进阶、算法等)2. 全文检索功能 3. 用户答题记录 4. 错题…

张小明 2026/1/9 5:19:03 网站建设

手机网站asp海外建站平台

LobeChat能否集成地衣生长速率?空气污染长期监测指标 在城市空气质量日益受到关注的今天,我们依赖精密传感器网络实时播报PM2.5指数。但你是否想过,一面长满斑驳地衣的老墙,其实早已默默记录了过去十年的大气变化?这些…

张小明 2026/1/9 6:46:29 网站建设

个人备案网站涉及企业网易企业邮箱

函数命名陷阱揭秘:为什么你的Vitest测试总是"神秘"失败? 【免费下载链接】vitest Next generation testing framework powered by Vite. 项目地址: https://gitcode.com/GitHub_Trending/vi/vitest 在JavaScript测试开发中,…

张小明 2026/1/9 6:57:38 网站建设

免费建自己域名的网站吗常用的网站建设技术有什么软件

在 Java 开发中,jar 包管理混乱、项目结构不统一、构建流程繁琐等问题屡见不鲜。Maven 作为经典项目管理工具,能通过标准化结构、统一依赖管理和完整生命周期,一键解决这些痛点。本文聚焦 Maven 核心用法,带你快速上手高效项目构建…

张小明 2026/1/9 8:44:08 网站建设

大气网站背景图网络营销推广方法案例

3大核心技术解锁Windows DLL注入:Xenos实战指南 【免费下载链接】Xenos Windows dll injector 项目地址: https://gitcode.com/gh_mirrors/xe/Xenos 探索Windows系统下动态库加载的强大工具Xenos,这款基于Blackbone库的专业DLL注入器为开发者和安…

张小明 2026/1/9 8:55:49 网站建设

网站推广策划案怎么选wordpress文章定时发布

OnmyojiAutoScript终极指南:阴阳师自动化脚本完整使用教程 【免费下载链接】OnmyojiAutoScript Onmyoji Auto Script | 阴阳师脚本 项目地址: https://gitcode.com/gh_mirrors/on/OnmyojiAutoScript OnmyojiAutoScript是一款专为《阴阳师》游戏设计的全功能自…

张小明 2026/1/9 9:05:41 网站建设