分类存档: Digital - 第2页

记一次硬件 Debug:ESP32 连接 Wi-Fi 报 Auth Expired 错误

起因

前段时间准备把家里的空气质量检测节点更新一下,从原来的万用板升级为 PCB,并且将主控 MCU 从 ESP8266 升级为 ESP32,这样可以单个节点支持更多传感器,同时把固件从 ESPEasy 换成 ESPHome。

经过

在完成 PCB 打样测试后,就上淘宝采购了一批 ESP32 开发板,其中一批是 USB Type-C 接口的 NodeMCU-32S,最开始测试的时候只买了一块,使用下来并没有什么问题,但是在一次接错 VCC 和 GND 导致温度模式损坏之后,再次使用这块 ESP32 开发板时,发现它无法连接到之前已经配置好的 Wi-Fi 上。

这时还以为是由于之前温度模块损坏关联导致的,因此重新购买了几块同样型号的 ESP32 开发板,但是在完成固件烧录,完成固件配置之后,第二次运行时,同样发现了无法连接 Wi-Fi 的错误,日志中显示连接失败的原因为 Auth Expired:

[23:50:02][I][wifi:248]: WiFi Connecting to 'HOUSE_IOT'...
[23:50:03][W][wifi_esp32:495]: Event: Disconnected ssid='HOUSE_IOT' bssid=xx:xx:xx:xx:xx:xx reason='Auth Expired'
[23:50:03][W][wifi:536]: Error 


阅读全文 »

使用 ESPHome + INA219 模块构建一个简易功率计

最近在使用 ESP32 做一些小东西,其中一个设备是使用电池供电,因此对使用电池时的续航比较关心,但是手头并没有合适的电子负载仪,在翻模块库存的时候,刚好发现有一个 INA219 模块,就直接拿它现做一个功率计了。

再配上一个 12864 OLED 屏幕,这样就可以实时去观测单片机设备的实时功率以及功耗了:

EasyPower Demo

ESPHome

ESPHome 是一个配置化生成 ESP32/ESP8266 智能家居固件的系统,一般都会用它来作为智能家居节点中的系统来使用,配合很便宜的 ESP32/ESP8266 模块,使用起来很是方便。

在查阅它所支持的模块时,发现 INA219 也在其中,并且 ESPHome 本身对 12864 OLED 也有良好的支持,因此最终就直接选择了 ESPHome 来作为功率计的基础系统,这样可以省去编写很多基础代码,例如任务设计、屏幕绘制、I2C 总线读写等,只需要关注功率计核心的功能即可。

最近也使用 ESPHome 比较好,发现它还是有很多优点的,基本可以作为一个 Arduino 项目的基础应用框架来使用:

  • 配置化生成代码,无需管理复杂的库依赖
  • 丰富的模组库支持,对于开发单片机应用来说,常见的输入输出模块都内置支持
  • 完整的运行框架,开发者只需要关注业务本身,其他相关内容都内置了,例如 MQTT、OTA 等功能
  • 灵活的 Lambda 支持,它的 Lambda 就是 C++ 的 Lambda,因此对于有能力的开发者来说,可以直接写代码

总的来说,对于一般 DIY 项目来说,ESPHome 足够强大、足够灵活来处理大部分需求了。

INA219



阅读全文 »

就是要 4K 双显,M1 MacBook Pro + DisplayLink 性能体验测试

这是什么坑

在使用一段 M1 芯片的 13 寸 MacBook Pro 之后,一直有一个问题没有解决,那就是两台 4K 显示器的一台,只能闲置在那里。

虽然给 M1 MacBook Pro 配备的是 StarTech 雷电 3 接口的扩展坞,它拥有一个 DisplayPort 接口和一个全功能 USB Type-C 接口,在配备 Intel 芯片的 16 寸 MacBook Pro 上,它是可以直接驱动两个 4K 显示器。

但是由于 M1 芯片又或者是 M1 MacBook Pro 的限制,配备 M1 芯片的 MacBook Pro 只能驱动一台 4K 显示器,另外一台显示器,即使将它连接在 MacBook Pro …

阅读全文 »

六款便携 4K60Hz USB Type-C 扩展坞横向对比评测

在之前对比了一些扩展坞,以及新买了一个 DockCase 的扩展坞之后,对现在这些便携类型的 USB Type-C 扩展坞起了兴趣,并且做了一些对比测试:

然后最近想把之前购买的绿联 CM121 Type-C 扩展坞替换掉,因为它虽然接口齐全,包含了 HDMI 输出、SF/TD 读卡器、千兆网口、USB Type-A 接口、PD 充电直通,但是它的 HDMI 输出只能到达 4K30Hz,在真正感受过 4K30Hz 和 4K60Hz 的区别之后,已经不能接受 4K30Hz 的使用感受了。

因此,我在京东找了一番,筛选出来 HDMI 输出是 4K60Hz 的 Type-C 扩展坞,并且价格不算高的产品,来做一个横向对比评测,同时测试一下对 M1 MacBook 的兼容性如何,看看有哪一些能代替绿联 CM121,也可以顺便看一下在这个时间点,市面上便携类型 Type-C …

阅读全文 »

便携 Type-C 扩展坞那些事和 DockCase 7 合 1 带屏扩展坞评测

1. 为什么又买扩展坞

之前因为换了 MacBook Pro 买了一些 USB Type-C 扩展坞 ,已经做了一期对比,现在已经过去一年了,而且也有新出了 M1 芯片的 MacBook Pro,借着这个机会再看看有没有新的更好用的 Type-C 扩展坞。

在去年对比几个 Type-C 扩展坞的时候,对其中新出的 PS186 HDMI 芯片很感兴趣,它可以在 USB 3.2 Gen 2x1 10Gbps 的带宽上实现 4K60Hz 显示输出的同时,仍然有 5Gbps 的 USB 传输速率,这个基本上能满足大部分场景下的需求,所以那些只能支持到 4K30Hz 的扩展坞就不考虑。

在去年 6 月份这个时间点,带有 PS186 HDMI 芯片的扩展坞并没有太多产品可以选择,而且之前购买的威迅扩展坞,也只有 3 个 USB 3.0 和 1 …

阅读全文 »

自用 MacBook Pro USB-C 扩展坞介绍和对比

四款Type-C扩展坞

自从我淘汰了 2015 款 MacBook Pro,买了新款 MacBook Pro 16 寸版本之后,因为它只有四个 USB Type-C 口,去掉了 2015 款自带的 USB Type-A,以及 HDMI 接口,导致在使用 USB Type-A 设备,以及外接显示器时,需要额外的扩展坞才可以实现。

为了解决这个问题,就必须要好好找找便宜又大碗的扩展坞了。

筛选目标

基于 MacBook Pro 雷电 3 接口高达 40Gbps 的带宽,可以做到一根线实现显示器输出、电源输入以及扩展 USB-A 数据上行,因此在筛选目标产品时,会优先考虑以下几个功能是否能实现:

  • 一根线实现电源输入、显示器输出、数据上行
  • Dock 类型设备需要支持双显示器
  • 电源输入功率足够使用,60W 起
  • 有 SD/TF 卡槽更佳
  • 不喜欢硬连接到 MBP 上的设备,偏好使用数据线连接的扩展坞

当然因为所有扩展坞针对的场景不一样,会对设备能支持的能力有所取舍,例如对于 Dock 类型的扩展坞,会更多要求全面的功能支持,但是对于便携类型的扩展坞,则是根据自己的实际使用场景去选择必需的功能,以及可选的功能。

目标产品

在参考同事的意见,阅读网上的评测,以及实际对比各种扩展坞的功能之后,最终陆续购买了以下几款扩展坞:

  • CalDigit


阅读全文 »

Garmin vivosmart 4 使用体验

Garmin vivosmart 4

缘由

在去年秋天,我突然觉得不能继续放肆下去,需要对体能和体形进行更好的改善,刚好公司的健身房也算是设施完善,因此首先就开始了通过有氧来进行减脂的训练。

作为一个器材党、数据党,在运动的时候怎么能没有一个设备来记录训练数据呢,不管是运动的时长、距离,还是心率的波动,都是我需要关注的。

经验

在为自己购买智能手环或手表设备之前,我已经给家里人买过几款智能手环以及试用过几款智能手环或手表:

  • 荣耀手环 4
  • 米动手表青春版
  • 米动手环
  • Amazfit 智能运动手表 2S

作为一个戴配饰会死星人,我完全不能接受特别大特别重的智能手表类设备,特别是作为一个码农,在敲键盘的时候还有一个手表来哐当哐当敲着键盘托的位置,简直难以忍受。

在试用了 Amazfit 智能运动手表 2S 之后,就直接放弃了使用手表类设备的念头。秋天已经穿上长袖甚至外套,一个又厚又宽大的手表简直是穿衣脱衣的巨大障碍。

在试用了米动手环之后,发现那个屏幕的表现实在是有些差劲,颗粒感太明显,放弃。

米动手表青春版其实感受还不错,反显常亮表盘,日常使用足够,续航足够长,还带 GPS,并且本身重量体积很轻很薄,但是在使用过小米运动这个 App 之后,完全没有想要使用的想法。

荣耀手环的屏幕很惊艳,几乎没有颗粒感,但是华为运动健康 App 也是跟小米运动一样,在运动数据记录方面不够专业。

并且在使用过程中,不管是小米运动,还是华为运动健康,甚至于苹果的 Health App,都没有能提供一个运动记录的详细数据,以及提供一个除了手机之外更方便查看运动记录的 Web 或者桌面 App。

选择

作为一个 Garmin 老用户,这个时候自然会想到在运动设备领域足够专业的 Garmin 有没有提供什么设备可供选择。

在选择设备的时候,有几个功能点是我需要考虑的:

  • 续航能力
  • 是否支持 GPS
  • 是否支持全天心率监测
  • 是否防水
  • 是否支持游泳或力量训练
  • 佩戴是否舒适

在 Garmin 的运动休闲分类中挑了好久之后,找到三个备选:

  • vivosmart


阅读全文 »

玩玩智能家居8:搭建基于 Grafana 的环境数据看板

在之前的文章 《玩玩智能家居4:InfluxDB & Grafana》 已经介绍了怎么将 Domoticz 中采集到的数据存储到 Influxdb,以及使用 Grafana 来查看数据,但是这样只有一个两个数据,并不能很方便的对整个家里的环境数据有个快速了解。

Grafana 提供了丰富的面板组件,可以以各种形式来展示数据,例如文本和曲线图,而且也可以很方便地自定义阈值,对于数据的不同数值显示不同的颜色,或者不同的背景颜色,这样便于了解当前数据是否处于能接受的范围内。

借助于 Grafana 这些组件,就可以很方便的搭建一个属于自己的家庭环境数据看板了。

玩玩智能家居7:Domoticz 中的 Events

在使用 Domoticz 的过程中,为了避免让 Domoticz 只是成为一个手机上的遥控器,就需要根据生活使用场景去定制一些自动化的规则,例如在天黑回家时自动打开灯,又或者是在睡觉之后自动关闭不必要的灯,在这个时候,就需要使用 Domoticz 的 Events 系统了。

Domoticz 的 Events 支持很多种类语言的编码,其中还包括图形化的配置工具 Blockly。

当然这里并不会去介绍 Blockly 的配置方式,因为使用编码的方式可以得到更细粒度的控制,以及更自由的场景条件控制。

这里主要介绍一些处理事件时的技巧和思路。

时间差处理

在事件处理过程中,最重要的一件事就是判断事件发生的时间与当前时间的时间差,通过这个时间差,可以很方便的根据不同的时间差来达到不同的目的。

now = os.date('*t')

function timedifference (s)
  year = string.sub(s, 1, 4)
  month = string.sub(s, 6, 7)
  day = string.sub(s, 9, 10)
  hour = string.sub(s, 12, 13)
  minutes = string.sub(s, 15, 


阅读全文 »

玩玩智能家居6:接入杜亚电动窗帘

之前还没有玩上 Domoticz 的时候,家里全套系统都是用的 Broadlink,在买窗帘的时候也想着要买电动的,因此很自然的买了支持 Broadlink 的杜亚窗帘电机,可以方便地与 Broadlink 的传感器进行联动。

后来用了 Domoticz,但是 Broadlink 的系统并没有开放 API,想要接入 Domotiz 系统就比较麻烦了。在网上看了一堆帖子之后,发现可以通过分析窗帘电机遥控器信号,然后自己使用 433M 射频模块来自己控制。

Controlling Blinds.com RF Dooya Motors with Arduino and Vera 这篇帖子中提供了一个 PDF,详细介绍了如何嗅探信号,以及杜亚窗帘电机遥控器信号的格式。

准备材料

发射和接收 433M 射频信号需要的材料很简单,只需要 433M 发送和接收模块就可以了,不超过 5 块钱。

再加上需要接入 Domoticz,加个 NodeMCU,完事。

嗅探信号

首先需要嗅探一下窗帘遥控器发出的信号,如果有专业的机器的话可以直接去嗅探 433M 射频信号,如果没有的话,也可以使用 433M 模块自制一个。

根据前面提到的 PDF 中介绍的方法,将一个 433M 模块与 …

阅读全文 »