设计制作一个带OLED显示屏的简易SML阅读器
除了光学红外输出外,许多电表还配备RS485接口,可通过该接口提供用电数据,例如用于控制家庭太阳能系统。根据地区和能源供应商的不同,数据通常通过广为人知的MODBUS RTU协议或所谓的SML协议(智能消息语言)传输。本文将演示如何使用ESP32(Feather Huzzah32)、SSD1306 OLED显示屏以及RS485 Wing模块来读取、解码并显示这些数据。
连接电表
为了通过RS485将ESP32连接到电表,我使用了一个带有隔离接口的RS485扩展板。电表的RS485端口被塑料盖保护,通常用密封条固定。请勿自行打开该盖子,否则可能带来危险,且密封条损坏可能导致与公用事业供应商之间出现严重问题。最好请电工协助处理,他们可以将电缆连接到电表的RS485端口,并重新安装密封条。
现在您可以将仪表的A和B端子连接到机翼的A和B端子上。
OLED显示屏
测量值显示在OLED显示屏上。该显示屏必须连接到微控制器板的I2C接口:
配置RS485机翼
RS485 Wing 配有 2 个 DIP 开关和一个拨动开关,必须按以下方式配置:
•S1:开 - 关 - 关 - 关
•S2:开启
•S4:开 - 开 - 开 - 开
软件
我编写了一个小型程序,用于在OLED上显示当前功率(由于我的光伏系统,该值为负数),以及消耗和输入的电表读数,并通过UART输出。我使用SML-Parser库来解码接收到的SNL协议。显示屏的控制则采用广为人知的U8g2lib库。
可以显示附加数据,例如制造商或电网频率。但通常需要在电表上输入PIN码来解锁这些数据。您可向公用事业供应商获取PIN码。
此外,程序中的OBISHandler必须进一步扩展,以包含相应的协议序列。
本文编译自hackster.io





