项目背景
目前已配置好树莓派homeassistant,预计与访问有关zigbee如果你想进入海鲜市场,淘一些设备和设备ha,需要一个zigbee网关,网上看一些大神的分享,用模块自制网关,经过几天的探索,打板验证,几次优化,基本确定了方案。

设计需求
- 树莓派无缝衔接(ha安装的设备)便于固定和使用相关接口
- 搭载风扇散热树莓派。我手里的树莓派3b日常气温为50度或60度,这还不到7月和8月的炎热天气?
- 风扇开关可根据树莓派温度控制
- 集成环境光传感器,因为我们公司是这样做的sensor,对于sensor熟悉调试
- 状态指示灯显示不同的状态和预警
- 。。。
方案选型
- zigbee网关CC2652P/E72-2G4M20S1E,网上DIY例子可参考
- ESP32 WROVER模块,只是手上有这个模块,可以通过esphome接入ha
调试历程
画板经过三次优化,因为zigbee不熟悉,可谓小白,
- 第一版回来发现怎么和树莓派沟通?大神都有ch340usb转串口的方式,没有串口模块应该没办法用吧。。。改了优化版本,加了串口以及type c,可见上图,其实树莓派有串口,可以直接串口通信,所以改了第三版,也是最后版,但还没有验证
- 当我回到第一版时,我发现我手边的风扇无法匹配开口,所以手动用电钻将孔打开到合适的位置需要时间。第二版进行了优化。可以看出,第一张图片显示了匹配不同尺寸的风扇相匹配,以前捡垃圾的12v风扇,使用5v供电,真的很静音,基本上听不到声音,这是比较惊喜的地方,也是意外收获吧。
- 第一版回来烧录esp32点,发现重启,各种折腾,几乎怀疑生活,然后百度结合验证,确认是供电问题,增加了两个100uf因此,电容非常稳定ESP模块对供电非常讲究如果出现无法解释的问题,首先检查供电是最好的政策。
- 第一版回来后发现,esphome客户控制彩灯,手上碰巧有ws2182,在第三版中加入此灯,制作状态指示灯,
- 第三版将esp32引脚可用于后续扩展。包括添加0.96寸oled
- 第三版在第二版的基础上,与树莓派重新连接的接口可以省略type c供电及串口模块,E直接与树莓派通信,
第二版还没有回来,需要后续验证。
20220613
第三版回板,焊接后使用E71 串口,直接接树莓派串口,没有成功,待确认问题
以下为github开源说明,地址
2021-01-15
屏蔽安装在GPIO梳子的边缘(对Raspbery Pi 二、三、四、引脚1-10)。 ==================================== 单板树莓派,树莓派: ====================================
https://www.raspberrypi.org/documentation/configuration/uart.md
默认情况下禁用 SSH;可通过在引导分区中创建一个名称ssh启用文件 nano /boot/config.txt
添加行 enable_uart=1
sudo raspi-config
在打开的菜单中,转到5 接口选项 配置与外设的连接,然后选择串行启用/禁止项目串行连接 shell 和内核消息
我们回答 否:您想通过串行访问登录吗? shell? 是,
串行端口硬件想用吗?
重新启动。
ls /dev/ttyA*
/dev/ttyAMA0
内置蓝牙主板的说明。 蓝牙拦截 ttyAMA0 端口。你应该使用端口。 ttyS0。 详情请点击此处: https://www.circuits.dk/setup-raspberry-pi-3-gpio-uart/
[未选中!您可以完全禁用蓝牙:
nano /boot/config.txt
添加行 dtoverlay=pi3-disable-bt ==================================== home-assistant.io ==================================== 将SD卡插入读卡器,链接电脑 映射配置文件config.txt添加行。 enable_uart=1 dtoverlay=pi3-disable-bt
然后禁用与蓝牙相关的启动项
sudo systemctl disable bluetooth 请在配置插件时使用 /dev/ttyAMA0 端口
==================================== RPI4.家庭助手(蓝牙和家庭助手)zigby共享)小指令: 在 RPI4 中: enable_uart=1 core_freq=500 core_freq_min=500 dtoverlay=miniuart-bt 家庭助理: 串行: - /dev/ttyAMA0 卸载并重新安装 zigbee2mqtt 插件
烧录相关程序
用串口烧录
Download and installpython 3.8.6.
Install necessary add-ons:
pip3 install pyserial pip3 install intelhex Flashing the rest of the sticks and pi shields/hat (activating the bootloader with buttons)
Hold down the RESET (RST) and FLASH (BSL) buttons, release RESET, then release FLASH.
or
Hold down the FLASH (BSL) button, insert the stick into USB, release FLASH (BSL) button.
python.exe cc2538-bsl.py -p COM3 -ewv znp_CC2652P.hex The process looks something like this:
Opening port COM3, baud 500000 Reading data from CC1352P2_CC2652P_other_20201113.hex Your firmware looks like an Intel Hex file Connecting to target ... CC1350 PG2.0 (7x7mm): 352KB Flash, 20KB SRAM, CCFG.BL_CONFIG at 0x00057FD8 Primary IEEE Address: 00: 12: 4B: 00: 21: B4: 94: C2 Performing mass erase Erasing all main bank flash sectors Erase done Writing 360 448 bytes starting at address 0x00000000 Write 104 bytes at 0x00057F980 Write done Verifying by comparing CRC32 calculations. Verified (match: 0x55e2e461) At the end of the flashing, you may need to unplug-plug the stick into USB or press RESET.
After flashing, it is labelly recommended to clear the stick memory (only for coordinator firmware, routers do not need to be cleaned).