294|1

12

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

【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(HomeAssistanthttps://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个压缩包)

 

代码打包.zip (9.65 KB, 下载次数: 4)

 

 

 

最新回复

当你老了头发白了回忆青春多少人曾爱慕你年轻时的容颜爱慕你的美丽假意或真心   详情 回复 发表于 2024-10-17 12:37
点赞(1) 关注
 
 

回复
举报

15

帖子

0

TA的资源

一粒金砂(中级)

沙发
 

当你老了头发白了回忆青春多少人曾爱慕你年轻时的容颜爱慕你的美丽假意或真心

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表