864|6

223

帖子

3

TA的资源

一粒金砂(高级)

【Follow me第二季第2期】Arduino UNO R4 WiFi全部任务汇总学习+Labview+自己扩展项目 [复制链接]

活动链接资料:https://www.eeworld.com.cn/huodong/digikey_follow_me_2024_02/

写在前面的:

  很幸运能够在最后一批空余名额能够入围,很珍惜此次活动,下面学习将认真完成各项指标(多关注群里信息还是非常重要的)

045fd26bd25059b8e572ffeb4c235c5.jpg  

下单也响应很快,很快物料都到齐了

image.png  

自己给Arduino UNO R4 WiFi加了个外置电源,也非常适配,这不得不得益于其DC电源最新设计

image.png  

 

关于Arduino UNO R4 WiFi是最新Arduino开发板,主控芯片为日本瑞萨电子的RA4M1芯片(因为使用“钞”能力了),WiFi芯片为中国的ESP32,个人觉得一个ESP32其实足以,非要说这样组合有什么优点,其实也是有点优势的:

1.系统电压兼容5V,适配Arduino UNO R3的扩展板接口,便于通用及产品迭代

2.冗余设计,联网WiFi功能与主控控制功能隔离提高产品安全性与产品开发维护

 

Arduino UNO R3与Arduino UNO R4 WiFi对比:可以看出集成度确实提高很多,功能更丰富

image.png  

 

 

入门任务(必做):搭建环境并开启第一步Blink / 串口打印Hello EEWorld!

▄▄▄▄▄▄▄▄▄▄▄▄▄

搭配器件:Arduino UNO R4 WiFi 

 

搭建环境:

1.下载Arduino IDE 2.3.2链接:https://www.arduino.cc/en/software

image.png  

2.打开IDE获取Arduino UNO R4 WiFi开发板相关扩展包

image.png  

3.安装最新扩展包

image.png  

4.选择Arduino UNO R4 WiFi开发板

image.png  

搭建环境流程图:

image.png  

5.打开默认案例库:点开启第一步Blink 

image.png  

6.通过USB连接Arduino UNO R4 WiFi开发板

image.png  

7.编译代码,程序烧写到Arduino UNO R4 WiFi开发板

image.png  

image.png  

8.程序代码

void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_BUILTIN, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(LED_BUILTIN, HIGH);  // turn the LED on (HIGH is the voltage level)
  delay(1000);                      // wait for a second
  digitalWrite(LED_BUILTIN, LOW);   // turn the LED off by making the voltage LOW
  delay(1000);                      // wait for a second
}

9.显示效果

点亮LED.gif
程序流程图:
image.png  
 

10.串口打印Hello EEWorld!

打开案例库,在此基础进行修改代码

image.png  

11.程序代码:

void loop() {
  // read the input on analog pin 0:
  //int sensorValue = analogRead(A0);
  // print out the value you read:
  //Serial.println(sensorValue);
  Serial.println("Hello EEWorld!");
  delay(100);
  //delay(1);  // delay in between reads for stability
}

12.打开电脑串口接收器:

image.png  

13.电脑虚拟串口接收到数据

image.png  

14.显示效果:

串口打印数据.gif

程序流程图:

image.png  

 

基础任务(必做驱动12x8点阵LED;用DAC生成正弦波;用OPAMP放大DAC信号;用ADC采集并且打印数据到串口等其他接口可上传到上位机显示曲线

▄▄▄▄▄▄▄▄▄▄▄▄▄

搭配器件:Arduino UNO R4 WiFi 

1.驱动12x8点阵LED

原理和一般点阵屏有点不一样,传统点阵屏只用单片机I/O的输出高、低电平两种状态,而Arduino UNO R4 WiFi 点阵屏使用I/O的输出高、低、高阻态电平三种种状态,理论上n个I/O可以实现n*(n-1)个LED控制,Arduino UNO R4 WiFi 点阵屏使用I/O原理可具体解读:IO口多路查理复用:三个单片机IO口控制六个LED:https://blog.csdn.net/zhuoqingjoking97298/article/details/116725947

image.png  

 

具体控制方法可参考官网:https://docs.arduino.cc/tutorials/uno-r4-wifi/led-matrix/

当然可直接打开IDE中的案例库

image.png  

代码:

/*
  Single Frame
  
  Displays single frames using matrix.loadFrame
  
  See the full documentation here:
  https://docs.arduino.cc/tutorials/uno-r4-wifi/led-matrix
*/

#include "Arduino_LED_Matrix.h"   // Include the LED_Matrix library
#include "frames.h"               // Include a header file containing some custom icons

ArduinoLEDMatrix matrix;          // Create an instance of the ArduinoLEDMatrix class

void setup() {
  Serial.begin(115200);           // Initialize serial communication at a baud rate of 115200
  matrix.begin();                 // Initialize the LED matrix
}

void loop() {
  // Load and display the "chip" frame on the LED matrix
  matrix.loadFrame(chip);
  delay(500);  // Pause for 500 milliseconds (half a second)

  // Load and display the "danger" frame on the LED matrix
  matrix.loadFrame(danger);
  delay(500);

  // Load and display the "happy" frame on the LED matrix
  matrix.loadFrame(happy);
  delay(500);

  // Load and display the "big heart" frame provided by the library
  matrix.loadFrame(LEDMATRIX_HEART_BIG);
  delay(500);

  // Print the current value of millis() to the serial monitor
  Serial.println(millis());
}

效果演示:

点阵屏1.gif
程序流程图:
image.png  
 

扩展应用:参考内容:https://blog.csdn.net/blueskyspace/article/details/138769310

效果展示:

点阵屏.gif

2.用DAC生成正弦波

打开案例库

image.png  

修改代码;利用A5接口采集DAC的波形信号

硬件接法:

image.png    

实物接法:

0eb07980c5c3d33fe7a689a51640c4b.jpg  

软件修改代码如下:

#include "analogWave.h" // Include the library for analog waveform generation

analogWave wave(DAC);   // Create an instance of the analogWave class, using the DAC pin

int freq = 10;  // in hertz, change accordingly

void setup() {
  Serial.begin(115200);  // Initialize serial communication at a baud rate of 115200
  wave.sine(freq);       // Generate a sine wave with the initial frequency
  wave.amplitude(0.5);//幅值倍数
}

void loop() {

  Serial.println(analogRead(A5));
  delay(10);  
}

调试效果:

Tek000_002.png  

image.png

程序流程图:

image.png   

3.用OPAMP放大DAC信号

没有插件电阻,自己DIY一个插件电阻

bfeebe02cf3912d86a6518ce32f1794.jpg  

其实很简洁,连接好也很方便

image.png    

为什么选择10K电阻的原因;

image.png  

实验效果:
image.png

   

程序代码:

#include "analogWave.h" // Include the library for analog waveform generation
#include <OPAMP.h>
analogWave wave(DAC);   // Create an instance of the analogWave class, using the DAC pin

int freq = 200;  // in hertz, change accordingly

void setup() {
  Serial.begin(2000000);  // Initialize serial communication at a baud rate of 115200
  analogReadResolution(14);
  wave.sine(freq);       // Generate a sine wave with the initial frequency
  wave.amplitude(0.5);//幅值倍数
  OPAMP.begin(OPAMP_SPEED_HIGHSPEED);
}

void loop() {
  Serial.print(analogRead(A4));
  Serial.print(" ");
  Serial.println(analogRead(A5));
  delayMicroseconds(100);  
}

测试波形

为了完成任务,搞了台示波器,真实为了完成任务蛮拼的

6907d35fd80f274eaa5fccb134f34b6.jpg  

测试波形周期200hz

Tek000_005.png  

DAC输出幅值为:2.29V

Tek000_013.png  

运放输出幅值为:4.6V

Tek000_011.png  

程序流程图:

image.png  

4.用ADC采集并且打印数据到串口等其他接口可上传到上位机显示曲线

实际上该部分和上部分基本重复了,为了更好展示波形数据,采用Labview上位机显示更多波形数据

Arduino UNO R4 WiFi下位机硬件图

image.png

程序代码:

#include "analogWave.h" // Include the library for analog waveform generation
#include <OPAMP.h>
analogWave wave(DAC);   // Create an instance of the analogWave class, using the DAC pin

int freq = 200;  // in hertz, change accordingly

void setup() {
  Serial.begin(2000000);  // Initialize serial communication at a baud rate of 115200
  analogReadResolution(14);
  wave.sine(freq);       // Generate a sine wave with the initial frequency
  wave.amplitude(0.5);//幅值倍数
  OPAMP.begin(OPAMP_SPEED_HIGHSPEED);
}

void loop() {
  Serial.print(analogRead(A4));
  Serial.print(",");
  Serial.println(analogRead(A5));
  delayMicroseconds(100);  
}

通过Arduino IDE自带串口也可串口波形数据

image.png

 

连接方式:通过USB连接,labview上位机通过串口获取Arduino UNO R4 WiFi采集数据

打开labview案例库

image.png    

 

在此基础修改增加波形显示插件

image.png  

 

程序代码:

image.png  

 

运行效果:波形正常显示无异常

labview波形.gif

labview程序附件:2015版本

Continuous Serial Write and Read.vi (53.62 KB, 下载次数: 0)

最新回复

正在进行电路开发设计中,学习参考借签,不错,感谢分享!   详情 回复 发表于 2024-10-5 17:04

回复
举报

976

帖子

0

TA的资源

纯净的硅(高级)

楼主的分享很用心,很详细,很丰富。学习了~~~

点评

这次我感觉有点难度,感觉对初学者有点难度,写的比较详细点  详情 回复 发表于 2024-10-2 21:58
个人签名

没有特别的幸运,就要特别的努力


回复

223

帖子

3

TA的资源

一粒金砂(高级)

UUC 发表于 2024-10-2 20:40 楼主的分享很用心,很详细,很丰富。学习了~~~

这次我感觉有点难度,感觉对初学者有点难度,写的比较详细点


回复

61

帖子

3

TA的资源

一粒金砂(中级)

LabVIEW工程不错啊,要是能采集波形保存下来就好了。另外HomeAssistant镜像下载国内可以参考How to run Home Assistant Container on Windows using Docker - Kiril Peyanski's Blog

点评

在labview波形图右击有选项可以保存数据的,HA的搭建确实参考这个案例,很有用  详情 回复 发表于 2024-10-4 14:27
个人签名

MCU 开发者和爱好者


回复

223

帖子

3

TA的资源

一粒金砂(高级)

lijinlei 发表于 2024-10-4 09:16 LabVIEW工程不错啊,要是能采集波形保存下来就好了。另外HomeAssistant镜像下载国内可以参考How to run Hom ...

在labview波形图右击有选项可以保存数据的,HA的搭建确实参考这个案例,很有用


回复

66

帖子

0

TA的资源

禁止发言

正在进行电路开发设计中,学习参考借签,不错,感谢分享!

点评

Arduino Uno R4开发板确实很强大,功能很丰富  详情 回复 发表于 2024-10-6 17:29

回复

223

帖子

3

TA的资源

一粒金砂(高级)

zxcvbnm751120 发表于 2024-10-5 17:04 正在进行电路开发设计中,学习参考借签,不错,感谢分享!

Arduino Uno R4开发板确实很强大,功能很丰富


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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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