zarkx

  • 2024-10-30
  • 加入了学习《【Follow me第二季第2期】 进阶任务 智能家居3 MQTT接入HA》,观看 汇总视频

  • 2024-10-18
  • 加入了学习《【Follow me第二季第1期】全部任务演示》,观看 全部任务演示2.0

  • 加入了学习《串口打印Hello EEWorld!》,观看 串口打印

  • 2024-10-17
  • 发表了主题帖: 【Follow me第二季第2期】 任务汇总

    本帖最后由 zarkx 于 2024-10-30 18:57 编辑 大家好我是zarkx,电气工程师,也会一些前端,移动端,Python编程 本次任务进行了拆分 1、3-5分钟的任务视频(1个视频含所有任务的展示)   【Follow me第二季第2期】 入门任务:串口打印Hello EEWorld! https://bbs.eeworld.com.cn/thread-1293127-1-1.html 【Follow me第二季第2期】 基础任务(必做)驱动12x8点阵LED  https://bbs.eeworld.com.cn/thread-1293148-1-1.html 【Follow me第二季第2期】 基础任务:用DAC生成正弦波;用OPAMP放大DAC信号 https://bbs.eeworld.com.cn/thread-1296171-1-1.html 然后智能家居的分了三个帖子 【Follow me第二季第2期】 进阶任务 智能家居1 安装HA(homeassistant) https://bbs.eeworld.com.cn/thread-1293173-1-1.html 【Follow me第二季第2期】 进阶任务 智能家居2温湿度传感器接入ardiuno https://bbs.eeworld.com.cn/thread-1294525-1-1.html 【Follow me第二季第2期】 进阶任务 智能家居3 MQTT接入HA(homeassistant) https://bbs.eeworld.com.cn/thread-1294660-1-1.html   2、任务实现简介、全部物料清单(含物料名称、实物图片)、设计思路 全部的物料如图所示,mac电脑 / N1(装HA),win笔记本(跑程序),ardiuno,温湿度模块,示波器。电阻(放大电路)         3、软件流程图 简单画画思路,可能有不对的地方,请多包涵     4、每个任务对应的:主要代码片段、功能展示及图文说明(每个任务需要包含至少一张对应的实物图)、分帖链接   入门任务(必做):搭建环境并开启第一步Blink / 串口打印Hello EEWorld! 环境搭建的就比较简单,在官方网站下载ardiuno EDA安装即可https://www.arduino.cc/en/software mac系统下载dmg安装包,win系统可以直接下载zip压缩包,打开即用。 初次打开需要根据提示安装对应的驱动。 在串口打印,使用 loop()里面调用Serial.println("Hello EEWorld!");即可 记得在setup里面配置Serial.begin(9600);这个需要跟串口打印选择的波特率一样,否则会出现乱码   基础任务(必做): 驱动12x8点阵LED; 这个任务核心是调用 matrix.renderBitmap(smile, 8, 12); delay(1000); 可以直接在代码上观察到即将显示的图像,可以看到上面是一个爱心,下面是一条鱼     用DAC生成正弦波;用OPAMP放大DAC信号;用ADC采集并且打印数据到串口等其他接口可上传到上位机显示曲线 这个任务因为开始没有示波器折腾好久买了个开源的示波器 ardiuno本身是可以生成正弦波的也自带了一个放大器, 导入OPAMP,使用实例代码即可生成一个正弦波。   值得注意的是模拟信号需要采集串口输出的值,那么我使用mac电脑无法打印串口就显示不出模拟信号了。 搞懂简单的放大电路就很简单了     进阶任务(必做):通过Wi-Fi,利用MQTT协议接入到开源的智能家居平台HA(HomeAssistant)https://bbs.eeworld.com.cn/thread-1293173-1-1.html 这个任务最大的难点就是在安装HA,如果你有安装好的即可简单处理。 核心代码是配置ardiuno,链接wifi,通过MQTT协议将数据发生到HA平台,可以使用写死的数据进行测试 //wifi test--ok 温湿度写死的 #include <WiFi.h> #include <PubSubClient.h> #include <ArduinoJson.h> // 替换为你的网络信息 const char* ssid = "TP-LINK_F060"; const char* password = "hsta8888"; // 替换为你的Mosquitto broker信息 const char* mqtt_server = "192.168.2.178"; const int mqtt_port = 1883; const char* mqtt_user = "admin"; const char* mqtt_password = "admin"; #include "Arduino_LED_Matrix.h" //led ArduinoLEDMatrix matrix; //led uint8_t smile[8][12] = { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0 }, { 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } };//led // 初始化WiFi和MQTT客户端 WiFiClient espClient; PubSubClient client(espClient); // 传感器数据发布主题 const char* topic = "homeassistant/sensor/sensorBedroom/state"; void setup() { Serial.begin(115200); matrix.begin(); //led setup_wifi(); client.setServer(mqtt_server, mqtt_port); } void loop() { if (!client.connected()) { reconnect(); } client.loop(); // 假设你有一个温度传感器,获取温度数据 float temperature11 = 50; float humidity11 = 26.8; StaticJsonDocument<200> jsonDoc; jsonDoc["humidity"] = humidity11; jsonDoc["temperature"] = temperature11; char jsonBuffer[512]; serializeJson(jsonDoc, jsonBuffer); client.publish(topic, jsonBuffer); matrix.renderBitmap(smile, 8, 12); //led // 每隔5秒发送一次数据 delay(5000); } void setup_wifi() { delay(10); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println("Connected!"); Serial.print("IP address: "); Serial.println(WiFi.localIP()); } void reconnect() { while (!client.connected()) { Serial.print("Attempting MQTT connection..."); if (client.connect("ArduinoClient", mqtt_user, mqtt_password)) { Serial.println("connected"); } else { Serial.print("failed, rc="); Serial.print(client.state()); Serial.println(" try again in 5 seconds"); delay(5000); } } }   扩展任务二:通过外部SHT40温湿度传感器,上传温湿度到HA,通过HA面板显示数据 做这个任务之前就是将SHT40数据获取接入到ardiuno,https://bbs.eeworld.com.cn/thread-1294525-1-1.html 接入以后能在串口打印出传感器获取到的信号即可。   然后就是终极目标把 外部SHT40温湿度传感器接入ardiuno,上传温湿度到HA,通过HA面板显示数据 这个其实是把前面两个任务结合起来即可。 值得注意的是在HA平台配置显示2个参数,也是折腾好久,遇到的坑和解决办法也都放在详情里面了 https://bbs.eeworld.com.cn/thread-1294660-1-1.html     串口打印 LED矩阵 放大电路,示波器 接入智能家居         5、对本活动的心得体会(包括意见或建议)   总体来说这次的活动是花了很多时间爬坑,但是也是收获满满。 很多以前玩过的东西都捡起来重新搞了一遍。对电路和程序的理解更加深了。 有的东西其实很简单,只是可能遇到一些环境问题,比如安装HA要是挂梯子就很简单了,还有示波器要是有个好用的就简单多了。   总结,把之前的视频合并了一下。工欲善其事必先利其器,要是工具齐全做起来还是很快的,遇到很多坑都是有很多办法去解决的,只是会走弯路浪费时间而已。   建议:论坛有很多都是活动的,建议的话可以做成问题,教程相关的,有人遇到同样的问题可以在论坛来搜索。像数码之家一样有拆机,diy,教程等。 祝愿eeworld越办越好。   6、可编译下载的代码(1个压缩包)        

  • 加入了学习《【Follow me第二季第2期】 进阶任务 智能家居3 MQTT接入HA》,观看 Follow me第二季第2期】 基础任务:用DAC生成正弦波;用OPAMP放大DAC信号

  • 加入了学习《【Follow me第二季第2期】 进阶任务 智能家居3 MQTT接入HA》,观看 【Follow me第二季第2期】 进阶任务 智能家居3 MQTT接入HA

  • 加入了学习《串口打印Hello EEWorld!》,观看 控制LED8*12矩阵

  • 2024-10-15
  • 发表了主题帖: 【Follow me第二季第2期】 基础任务:用DAC生成正弦波;用OPAMP放大DAC信号

    本帖最后由 zarkx 于 2024-10-16 14:19 编辑 最近一直忙差点忘记   用DAC生成正弦波 参考官网的 DAC 样例,实现生成正弦波。 直接使用示例代码     可以看到代码里面使用的是A0引脚。   #include "analogWave.h" #include <OPAMP.h> analogWave wave(DAC); int freq = 100; void setup() { // put your setup code here, to run once: Serial.begin(250000); analogReadResolution(8); wave.sine(freq); wave.amplitude(0.5); OPAMP.begin(OPAMP_SPEED_HIGHSPEED); } void loop() { // put your main code here, to run repeatedly: int value = analogRead(A3); Serial.println(value); delay(1); }       使用运算放大器放大正弦波信号 参考官网 OPAMP 的电路图,简单画了个电路图,在ardiuno内部自带了一个放大器           如图我使用了2个10K的电阻,其实其他阻值的也可以,电阻一样即可   接线如图所示,GND到A2接电阻,A2到A3接电阻,别忘了链接A1和A0触角。     代码如下       #include "analogWave.h" #include <OPAMP.h> analogWave wave(DAC); int freq = 100; void setup() { // put your setup code here, to run once: Serial.begin(250000); analogReadResolution(8); wave.sine(freq); wave.amplitude(0.5); OPAMP.begin(OPAMP_SPEED_HIGHSPEED); } void loop() { // put your main code here, to run repeatedly: int dacvalue = analogRead(A0); int opampvalue = analogRead(A3); Serial.print(dacvalue); Serial.print(" "); Serial.println(opampvalue); delay(1); } 效果图如下     接下来是最终的视频,在模拟的图可以很清楚的看到两个波形图浮动差距一倍,在我简易示波器测量的时候看到波形图A0跟A3的波峰差不多但是A0要宽一些,应该是屏幕太小被缩放了,总体来说也是差了一倍的样子。      

  • 加入了学习《【Follow me第二季第2期】+开发板硬件介绍和实现任务一 LED灯闪烁和串口打印》,观看 【Follow me第二季第2期】实现任务二 驱动12x8点阵LED;用DAC生成正弦波并放大采集

  • 加入了学习《【Follow me第二季第2期】演示视频》,观看 3.演示上传温度湿度到HomeAssistant

  • 加入了学习《【Follow me第二季第2期】演示视频》,观看 2.放大正弦波信号

  • 2024-10-10
  • 回复了主题帖: Follow me第二季第2期-3通过Wi-Fi,利用MQTT协议接入到开源的智能家居平台HA(Home...

    我也是爬了不少坑,后来放弃了,就是要翻墙才行

  • 2024-09-26
  • 回复了主题帖: 【Follow me第二季第2期】 进阶任务 智能家居1 安装HA(homeassistant)

    智能家居的分了三个帖子,可以看看其他的几个。   https://bbs.eeworld.com.cn/thread-1294525-1-1.html (模块接入测试) https://bbs.eeworld.com.cn/thread-1294660-1-1.html (完整版)

  • 回复了主题帖: 【Follow me第二季第2期】 进阶任务 智能家居2温湿度传感器接入ardiuno

    智能家居的分了三个帖子,可以看看其他的几个

  • 加入了学习《【Follow me第二季第2期】+开发板硬件介绍和实现任务一 LED灯闪烁和串口打印》,观看 【Follow me第二季第2期】+通过外部SHT40温湿度传感器,上传温湿度到HA

  • 2024-09-25
  • 加入了学习《【Follow me第二季第2期】+开发板硬件介绍和实现任务一 LED灯闪烁和串口打印》,观看 【Follow me第二季第2期】Arduino Uno R4 WiFi 通过MQTT连入Home Assistant

  • 2024-09-24
  • 发表了主题帖: 【Follow me第二季第2期】 进阶任务 智能家居3 MQTT接入HA(homeassistant)

    本帖最后由 zarkx 于 2024-9-26 16:15 编辑   任务可以分为3个阶段 1安装HA  https://bbs.eeworld.com.cn/thread-1293173-1-1.html 2传感器接入ardiuno  https://bbs.eeworld.com.cn/thread-1294525-1-1.html 3MQTT接入HA,合并接入系统   当前是MQTT接入HA   看了好多,摸索出一个比较完整的模式,可以先看看最后的结论 安装MQTT的方案很多,如果是镜像版的HA( Home Assistant Operating system)可以通过Mosquitto来安装。在HA的设置界面会多一个选项   参考置顶帖子,可以安装一下EMQX。   docker拉取代码 docker pull emqx docker运行起来 docker run -d --name="EMQX_admin” -p 1883:1883 -p 8083:8083 -p 8883:8883 -p 8084:8084 -p 18083:18083 emqx 进入管理界面http://localhost:18083/ 默认账号:admin 默认密码:public  第一次需要改下密码。 完成初始化,具体内容不再赘述。     在HA界面点击设置-->设备与服务,搜索框输入MQTT,找不到点击添加集成,点击MQTT,MQTT,代理写你HA所在的电脑的ip地址,这里也有的填写EMQX配置的ip比如127.0.0.2 我的HA安装在mac电脑上,用户名密码写一个,要记住。 添加完成以后,可以测试一下 ,设置,设备与服务,MQTT,配置。发送主题和监听主题随便写,要写一样的。点击开始监听,点发送,可以看到接受的跟发送的东西一样。这是同页面测试。     下载一个MQTTX,这是一个软件在官网下载即可https://mqttx.app/zh/downloads,我下载的是mac版本,英特尔CPU的,下载后安装打开   名称自己写一个,ip改成刚刚配置的HA所在电脑的ip 账号密码写刚刚上面MQTT配置的那个,点右上角连接即可。       可以测试一下。在MQTT那边开启监听,test的,在MQTTX上发送可以看到监听到一样的数据     我们需要在HA中的MQTT创建一个设备, 发送一个标准的PUB,就自动添加设备到HA的MQTT了 在topic栏写 homeassistant/sensor/sensorBedroom/config 发送内容写下面这个 { "device_class": "humidity", "name": "Humidity", "state_topic": "homeassistant/sensor/sensorBedroom/state", "unit_of_measurement": "%", "value_template": "{{ value_json.humidity }}", "unique_id": "hum01ae", "device": { "identifiers": [ "bedroom01ae" ], "name": "Bedroom" } } 下面这个是创建温度的 { "device_class": "temperature", "name": "Temperature", "state_topic": "homeassistant/sensor/sensorBedroom/state", "unit_of_measurement": "°C", "value_template": "{{ value_json.temperature }}", "unique_id": "temp01ae", "device": { "identifiers": [ "bedroom01ae" ], "name": "Bedroom" } } 如图所示       可以看到发送以后MQTT那边直接出现一个实体设备   这样就是添加成功了。回到首页可以看到设备在仪表盘上了,目前没有数据     同样的方法发送湿度的代码,我测试的时候要么湿度要么文档会被替换,   最终我只能去修改配置文件yaml, mqtt: - button: - unique_id: arduino uno button A name: "Arduino点击" command_topic: "UNO/arduino/myButtonA/cmd_t" payload_press: "restart" - sensor: - unique_id: bedroom humidity name: "Bedroom Humidity" state_topic: "homeassistant/sensor/sensorBedroom/state" suggested_display_precision: 1 unit_of_measurement: "%" value_template: "{{ value_json.humidity }}" device_class: humidity - unique_id: bedroom temperature name: "Bedroom Temperature" state_topic: "homeassistant/sensor/sensorBedroom/state" suggested_display_precision: 3 unit_of_measurement: "°C" value_template: "{{ value_json.temperature }}" device_class: temperature 修改以后保存,在开发者工具,点击所有yaml配置。如果配置有问题会报错,出现绿色的说明没问题。           复制下面的代码,记得更改WIFI和MQTT相关的配置信息,然后下载到板子上。代码上写了备注需要根据实际修改 里面是测试代码让湿度写死44.8,温度22.5 (让AI写代码会有很多bug要自己检查) mac电脑没有串口输出,没办法我在成功的时候加入了LED矩阵的笑脸。这样可以在板子上看到状态,大家可以把LED相关的删掉。 //wifi test--ok 温湿度写死的 #include <WiFi.h> #include <PubSubClient.h> #include <ArduinoJson.h> // 替换为你的网络信息 const char* ssid = "TP-LINK_F060"; const char* password = "hsta8888"; // 替换为你的Mosquitto broker信息 const char* mqtt_server = "192.168.2.178"; const int mqtt_port = 1883; const char* mqtt_user = "admin"; const char* mqtt_password = "admin"; #include "Arduino_LED_Matrix.h" //led ArduinoLEDMatrix matrix; //led uint8_t smile[8][12] = { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0 }, { 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } };//led // 初始化WiFi和MQTT客户端 WiFiClient espClient; PubSubClient client(espClient); // 传感器数据发布主题 const char* topic = "homeassistant/sensor/sensorBedroom/state"; void setup() { Serial.begin(115200); matrix.begin(); //led setup_wifi(); client.setServer(mqtt_server, mqtt_port); } void loop() { if (!client.connected()) { reconnect(); } client.loop(); // 假设你有一个温度传感器,获取温度数据 float temperature11 = 50; float humidity11 = 26.8; StaticJsonDocument<200> jsonDoc; jsonDoc["humidity"] = humidity11; jsonDoc["temperature"] = temperature11; char jsonBuffer[512]; serializeJson(jsonDoc, jsonBuffer); client.publish(topic, jsonBuffer); matrix.renderBitmap(smile, 8, 12); //led // 每隔5秒发送一次数据 delay(5000); } void setup_wifi() { delay(10); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println("Connected!"); Serial.print("IP address: "); Serial.println(WiFi.localIP()); } void reconnect() { while (!client.connected()) { Serial.print("Attempting MQTT connection..."); if (client.connect("ArduinoClient", mqtt_user, mqtt_password)) { Serial.println("connected"); } else { Serial.print("failed, rc="); Serial.print(client.state()); Serial.println(" try again in 5 seconds"); delay(5000); } } } 如果代码报错,需要搜索安装对应的库即可,这两个是需要安装的。     编译,上传。      可以打开串口工具查看输出,有连结成功WIFI,上传等信息。   没错上面这个还是测试用的,ardiuno写死数据传到HA展示, 看到首页湿度50,温度26.8说明是成功了。     下面来改实际的代码吧, //完整的wifi+接收数据 #include <WiFi.h> #include <PubSubClient.h> #include <ArduinoJson.h> #include "Adafruit_SHT4x.h" // 初始化SHT40传感器 Adafruit_SHT4x sht4 = Adafruit_SHT4x(); // 替换为你的网络信息 const char* ssid = "TP-LINK_F060"; const char* password = "hsta8888"; // 替换为你的Mosquitto broker信息 const char* mqtt_server = "192.168.2.178"; const int mqtt_port = 1883; const char* mqtt_user = "admin"; const char* mqtt_password = "admin"; // 初始化WiFi和MQTT客户端 WiFiClient espClient; PubSubClient client(espClient); // 传感器数据发布主题 const char* topic = "homeassistant/sensor/sensorBedroom/state"; void setup() { Serial.begin(115200); while (!Serial) delay(10); // will pause Zero, Leonardo, etc until serial console opens Serial.println("Adafruit SHT4x test"); if (!sht4.begin()) { Serial.println("Couldn't find SHT4x"); while (1) delay(1); } Serial.println("Found SHT4x sensor"); setup_wifi(); client.setServer(mqtt_server, mqtt_port); } void loop() { if (!client.connected()) { reconnect(); } client.loop(); // 从SHT40传感器读取温度和湿度数据 sensors_event_t humidity, temp; sht4.getEvent(&humidity, &temp); // populate temp and humidity objects with fresh data Serial.print("Temperature: "); Serial.print(temp.temperature); Serial.println(" degrees C"); Serial.print("Humidity: "); Serial.print(humidity.relative_humidity); Serial.println("% rH"); // sensors_event_t humidity_event, temp_event; // sht4.getEvent(&humidity_event, &temp_event); StaticJsonDocument<200> jsonDoc; // jsonDoc["temperature"] = temp_event.temperature; // jsonDoc["humidity"] = humidity_event.relative_humidity; jsonDoc["temperature"] = temp.temperature; jsonDoc["humidity"] = humidity.relative_humidity; char jsonBuffer[512]; serializeJson(jsonDoc, jsonBuffer); client.publish(topic, jsonBuffer); // 每隔2秒发送一次数据 delay(2000); } void setup_wifi() { delay(10); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println("Connected!"); Serial.print("IP address: "); Serial.println(WiFi.localIP()); } void reconnect() { while (!client.connected()) { Serial.print("Attempting MQTT connection..."); if (client.connect("ArduinoClient", mqtt_user, mqtt_password)) { Serial.println("connected"); } else { Serial.print("failed, rc="); Serial.print(client.state()); Serial.println(" try again in 5 seconds"); delay(5000); } } }       总结 一。ardiuno连接温湿度模块,读取数据, 二。HA链接MQTT,ardiuno上传写死的数据到HA展示出来 三。合并代码,让ardiuno采集的数据发送到HA上面来展示 PS:注意不要用MQTTX创建,创建的会覆盖。直接改yaml文件最方便。 另外 QWIIC排线接线的需要把 sht4.begin() 改为 sht4.begin(&Wire1) ,自己焊接接线的不要改。       踩坑 后面我遇到一个情况就是MQTT怎么都链接不上,后面搜docker安装MQTT相关的,https://blog.csdn.net/qq_43917690/article/details/136705488 参考这个把EMQX重新安装,Websocket客户端那边重新配置账号和密码,用MQTTX测试成功,在链接就好。希望对遇到相同问题的朋友有帮助。   放上最终的视频,我对着传感器哈了口气,很快湿度上升,用手摸着传感器温度也慢慢上升。效果还不错。本以为很简单的,设备不齐,整了好几天。 不过也学到很多东西,欢迎大家讨论          

  • 2024-09-23
  • 加入了学习《Digi-Key: Follow Me 系列(2) 直播回放》,观看 Adafruit ESP32-S3 TFT Feather开发板使用入门

  • 回复了主题帖: 【Follow me第二季第2期】OPAMP 放大 DAC 信号

    大佬厉害,哈哈哈,我也搞了个简单的示波器

  • 发表了主题帖: 【Follow me第二季第2期】 进阶任务 智能家居2温湿度传感器接入ardiuno

    本帖最后由 zarkx 于 2024-9-26 10:51 编辑     任务可以分为3个阶段 1安装HA 2传感器接入ardiuno 3MQTT接入HA,合并接入系统   当前为传感器接入ardiuno   咱们看看温湿度传感器接入调试 我没买Qwiic 线7块好贵,就自己焊接了 关于模块官网 Adafruit Sensirion SHT40 和 GitHub - adafruit/Adafruit-SHT40-PCB   Qwiic排线就不说了 自己焊接接线如图所示,5V,gnd,scl,sda接4根线即可。       接线的参考是这样的,也很简单 代码可以拿官方示例代码做简单修改,即将 sht4.begin() 改为 sht4.begin(&Wire1) , 完整代码如下: //温湿度接入调试 #include "Adafruit_SHT4x.h" Adafruit_SHT4x sht4 = Adafruit_SHT4x(); void setup() { Serial.begin(115200); while (!Serial) delay(10); // will pause Zero, Leonardo, etc until serial console opens Serial.println("Adafruit SHT4x test"); if (! sht4.begin(&Wire1)) { Serial.println("Couldn't find SHT4x"); while (1) delay(1); } Serial.println("Found SHT4x sensor"); Serial.print("Serial number 0x"); Serial.println(sht4.readSerial(), HEX); // You can have 3 different precisions, higher precision takes longer sht4.setPrecision(SHT4X_HIGH_PRECISION); switch (sht4.getPrecision()) { case SHT4X_HIGH_PRECISION: Serial.println("High precision"); break; case SHT4X_MED_PRECISION: Serial.println("Med precision"); break; case SHT4X_LOW_PRECISION: Serial.println("Low precision"); break; } // You can have 6 different heater settings // higher heat and longer times uses more power // and reads will take longer too! sht4.setHeater(SHT4X_NO_HEATER); switch (sht4.getHeater()) { case SHT4X_NO_HEATER: Serial.println("No heater"); break; case SHT4X_HIGH_HEATER_1S: Serial.println("High heat for 1 second"); break; case SHT4X_HIGH_HEATER_100MS: Serial.println("High heat for 0.1 second"); break; case SHT4X_MED_HEATER_1S: Serial.println("Medium heat for 1 second"); break; case SHT4X_MED_HEATER_100MS: Serial.println("Medium heat for 0.1 second"); break; case SHT4X_LOW_HEATER_1S: Serial.println("Low heat for 1 second"); break; case SHT4X_LOW_HEATER_100MS: Serial.println("Low heat for 0.1 second"); break; } } void loop() { sensors_event_t humidity, temp; uint32_t timestamp = millis(); sht4.getEvent(&humidity, &temp);// populate temp and humidity objects with fresh data timestamp = millis() - timestamp; Serial.print("温度: "); Serial.print(temp.temperature); Serial.println(" degrees C"); Serial.print("湿度: "); Serial.print(humidity.relative_humidity); Serial.println("% rH"); Serial.print("Read duration (ms): "); Serial.println(timestamp); delay(1000); }     在mac电脑上可能缺少一些官方的库,报错缺少安装就好了   #include <Adafruit_I2CDevice.h> 报错 解决:搜索框中输入“Adafruit BusIO”安装库     #include <Adafruit_Sensor.h> 报错 搜索框中输入“Adafruit Unified Sensor”。安装即可     编译,上传,打开串口,波特率选择对应的115200     mac电脑上出现串口没反应的问题,驱动都重新下载了, 在终端输入命令 sudo nvram boot-args="kext-dev-mode=1" 完成以后输入reboot重启电脑即可   稍微新的电脑需要重启 Mac 并按住 Command + R 进入恢复模式。在恢复模式下才能处理上面的命令,暂时放弃吧,回去Windows电脑     如图看到测试调试成功。后面回去在Windows电脑上补图吧                                       补充内容 (2024-9-26 15:55): 上面代码有误。 回去使用Windows电脑有串口输出。 上面的代码是QWIIC排线的写法,需要把 sht4.begin() 改为 sht4.begin(&Wire1) ,如果是我上面的接线不需要改动。就是说排线改,手动焊接接线的不要改。

最近访客

< 1/1 >

统计信息

已有2人来访过

  • 芯积分:75
  • 好友:--
  • 主题:7
  • 回复:5

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言