【雕爷学编程】Arduino动手做(172)---WeMos D1开发板模块2

news2024/10/11 8:23:31

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞不掂的问题,希望能够抛砖引玉。

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十二:升级版 WeMos D1 R2 WiFi UNO 开发板 基于ESP8266

在这里插入图片描述
知识点:ESP8266
低功耗、高集成度的 Wi-Fi 芯片
仅需 7 个外围元器件
超宽工作温度范围:-40°C 至 +125°C
ESP8285 - ESP8266 内封 8 Mbit Flash

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

尽管Arduino UNO和WeMos-D1R2类似,但它们的引脚分配还是有一些区别。上图提供了引脚的映射。在某些情况下,为UNO编写的程序将需要稍作修改,以调整为WeMos-D1R2的正确引脚分配。

在这里插入图片描述
ESP8266 WeMos-D1R2 接脚图

在这里插入图片描述

参考电原理图

在这里插入图片描述

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

实验一百七十二:升级版 WeMos D1 R2 WiFi UNO 开发板 基于ESP8266

项目:测试串口

Arduino实验开源代码

/*
【Arduino】108种传感器模块系列实验(资料+代码+图形+仿真)
实验一百二十五: 升级版 WeMos D1 R2 WiFi UNO 开发板 基于ESP8266
项目:测试串口
*/

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
  Serial.println("hello eagler8!");
  delay(2000);
}

实验串口返回情况

在这里插入图片描述
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

实验一百七十二:升级版 WeMos D1 R2 WiFi UNO 开发板 基于ESP8266

项目:无延迟闪烁LED

Arduino实验开源代码

/*
【Arduino】108种传感器模块系列实验(资料+代码+图形+仿真)
实验一百二十五: 升级版 WeMos D1 R2 WiFi UNO 开发板 基于ESP8266
项目:无延迟闪烁LED
*/

int ledState = LOW;

unsigned long previousMillis = 0;
const long interval = 1000;

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
  unsigned long currentMillis = millis();
  if (currentMillis - previousMillis >= interval) {
    previousMillis = currentMillis;
    if (ledState == LOW) {
      ledState = HIGH;  // Note that this switches the LED *off*
    } else {
      ledState = LOW;  // Note that this switches the LED *on*
    }
    digitalWrite(LED_BUILTIN, ledState);
  }
}

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

实验一百七十二:升级版 WeMos D1 R2 WiFi UNO 开发板 基于ESP8266

项目:ESP8266闪烁,由Daniel Salazar轮询超时

Arduino实验开源代码

/*
【Arduino】108种传感器模块系列实验(资料+代码+图形+仿真)
实验一百二十五: 升级版 WeMos D1 R2 WiFi UNO 开发板 基于ESP8266
项目:ESP8266闪烁,由Daniel Salazar轮询超时
*/

#include <olledTimeout.h>

void ledOn() {
  digitalWrite(LED_BUILTIN, LOW);   // Turn the LED on (Note that LOW is the voltage level
}

void ledOff() {
  digitalWrite(LED_BUILTIN, HIGH);  // Turn the LED off by making the voltage HIGH
}

void ledToggle() {
  digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));  // Change the state of the LED
}


esp8266::polledTimeout::periodicFastUs halfPeriod(500000); //use fully qualified type and avoid importing all ::esp8266 namespace to the global namespace

// the setup function runs only once at start
void setup() {
  Serial.begin(115200);

  Serial.println();
  Serial.printf("periodic/oneShotMs::timeMax()     = %u ms\n", (uint32_t)esp8266::polledTimeout::periodicMs::timeMax());
  Serial.printf("periodic/oneShotFastMs::timeMax() = %u ms\n", (uint32_t)esp8266::polledTimeout::periodicFastMs::timeMax());
  Serial.printf("periodic/oneShotFastUs::timeMax() = %u us\n", (uint32_t)esp8266::polledTimeout::periodicFastUs::timeMax());
  Serial.printf("periodic/oneShotFastNs::timeMax() = %u ns\n", (uint32_t)esp8266::polledTimeout::periodicFastNs::timeMax());

#if 0 // 1 or debugging polledTimeoutf
  Serial.printf("periodic/oneShotMs::rangeCompensate     = %u\n", (uint32_t)esp8266::polledTimeout::periodicMs::rangeCompensate);
  Serial.printf("periodic/oneShotFastMs::rangeCompensate = %u\n", (uint32_t)esp8266::polledTimeout::periodicFastMs::rangeCompensate);
  Serial.printf("periodic/oneShotFastUs::rangeCompensate = %u\n", (uint32_t)esp8266::polledTimeout::periodicFastUs::rangeCompensate);
  Serial.printf("periodic/oneShotFastNs::rangeCompensate = %u\n", (uint32_t)esp8266::polledTimeout::periodicFastNs::rangeCompensate);
#endif

  pinMode(LED_BUILTIN, OUTPUT);     // Initialize the LED_BUILTIN pin as an output

  using esp8266::polledTimeout:neShotMs; //import the type to the local namespace

  //STEP1; turn the led ON
  ledOn();

  //STEP2: wait for ON timeout
  oneShotMs timeoutOn(2000);
  while (!timeoutOn) {
    yield();
  }

  //STEP3: turn the led OFF
  ledOff();

  //STEP4: wait for OFF timeout to assure the led is kept off for this time before exiting setup
  oneShotMs timeoutOff(2000);
  while (!timeoutOff) {
    yield();
  }

  //Done with STEPs, do other stuff
  halfPeriod.reset(); //halfPeriod is global, so it gets inited on sketch start. Clear it here to make it ready for loop, where it's actually used.
}


// the loop function runs over and over again forever
void loop() {
  if (halfPeriod) {
    ledToggle();
  }
}

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

实验一百七十二:升级版 WeMos D1 R2 WiFi UNO 开发板 基于ESP8266

项目:测试ide的eeprom设置是否与硬件匹配

Arduino实验开源代码

/*
【Arduino】108种传感器模块系列实验(资料+代码+图形+仿真)
实验一百二十五: 升级版 WeMos D1 R2 WiFi UNO 开发板 基于ESP8266
项目:测试ide的eeprom设置是否与硬件匹配
*/

void setup(void) {
  Serial.begin(115200);
}

void loop() {

  uint32_t realSize = ESP.getFlashChipRealSize();
  uint32_t ideSize = ESP.getFlashChipSize();
  FlashMode_t ideMode = ESP.getFlashChipMode();

  Serial.printf("Flash real id:   %08X\n", ESP.getFlashChipId());
  Serial.printf("Flash real size: %u bytes\n\n", realSize);

  Serial.printf("Flash ide  size: %u bytes\n", ideSize);
  Serial.printf("Flash ide speed: %u Hz\n", ESP.getFlashChipSpeed());
  Serial.printf("Flash ide mode:  %s\n", (ideMode == FM_QIO ? "QIO" : ideMode == FM_QOUT ? "QOUT" : ideMode == FM_DIO ? "DIO" : ideMode == FM_DOUT ? "DOUT" : "UNKNOWN"));

  if (ideSize != realSize) {
    Serial.println("Flash Chip configuration wrong!\n");
  } else {
    Serial.println("Flash Chip configuration ok.\n");
  }

  delay(5000);
}

实验串口返回情况

在这里插入图片描述

Arduino实验场景图

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/789922.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

7.python设计模式【桥结模式】

内容&#xff1a;将一个事物的两个维度分离&#xff0c;使其都可以独立变化角色&#xff1a; 抽象&#xff08;Abstraction&#xff09;细化抽象&#xff08;RefinedAbstraction&#xff09;实现者&#xff08;Implementor&#xff09;具体实现者&#xff08;ConcreteImplement…

Ubuntu16.04LTS安装ROS测试小海龟样例

一、参考资料 在Ubuntu中安装ROS Kinetic ROS安装ubuntu16.04 无需科学上网解决sudo rosdep init初始化问题 二、安装ROS关键步骤 1. 选择ROS版本 ROS安装选择 Ubuntu版本不同&#xff0c;对应安装的ROS版本也不同&#xff0c;务必版本对齐&#xff1b;Kinetic版本的ROS对…

iPortal 注册登录模块扩展开发

作者&#xff1a;yx 文章目录 前言一、示例代码简介二、对接 iPortal REST API 接口2.1、登录模块扩展开发2.2、注册模块扩展开发 三、页面内容及样式实现四、配置启用定制页面 前言 针对注册登录模块&#xff0c;iPortal 允许用户通过 iFrame 方式接入自行开发的页面&#xf…

JavaWeb开发(后端Web开发【一】)

文章目录 前言一、Maven1.Maven概述-介绍1.1.Maven概述-介绍1.2.Maven概述-安装 2.IDEA集成Maven2.1.IDEA集成Maven-配置Maven环境2.2.IDEA集成Maven-创建Maven项目2.3.IDEA集成Maven-导入Maven项目 3.Maven-依赖管理3.1.Maven-依赖管理-依赖配置3.2.Maven-依赖管理-依赖传递3.…

Unity小游戏——怪物出现模式的管理

摘要&#xff1a;游戏启动后不久&#xff0c;画面前方将出现怪物&#xff0c;游戏的目标是不停地看到怪物并持续前进 一、怪物出现的时间节点 我们首先来看如何来确定怪物出现的间隔。 若是怪物相继出现的时间间隔很短&#xff0c;玩家就必须快速地点击按键&#xff0c;这样游…

目前新能源汽车充电桩的发展受到哪些不利因素的影响?

目前新能源汽车充电桩的发展受到哪些不利因素的影响? 一是安装难&#xff0c;很多老旧小区没有充电桩配套施工规范&#xff0c;充电桩建设比较难&#xff0c;受到充电容量不足电表箱供电等局限性的制约&#xff0c;同时缺乏充电桩配套设施的统一规划&#xff0c;小区内只能安装…

元学习(小样本)-基本概念

机器学习 概述 以分类任务为例&#xff0c;机器学习可以看作是找一个猫狗的分类函数。 step1: 设计未知函数&#xff1b;其中&#xff0c;权重和偏置都是神经元中位置参数&#xff08;可学习的&#xff09;&#xff1b;step2: 定义损失函数&#xff1b;step3&#xff1a;训练…

SpringBoot----(1)基础

目录 1 SpringBoot简介1.1 入门案例&#xff08;IDEA构建&#xff09;1.2 官网构建工程1.3 SpringBoot程序快速启动1.4 SpringBoot概述1.5 起步依赖1.6 程序启动1.7 切换web服务器 2 配置2.1 配置文件格式&#xff08;3种&#xff09;2.2 yaml格式2.3 yaml数据读取方式&#xf…

Maven-----进阶

目录 1 分模块开发1.1 分模块开发的意义1.2 分模块开发实现 2 依赖管理2.1 依赖传递2.2 依赖传递冲突问题2.3 可选依赖和排除依赖 3 继承与聚合3.1 聚合3.2 继承3.2 聚合与继承的区别 4 属性4.1 属性4.2 资源文件引用属性4.3 版本管理 5 多环境配置与使用5.1 多环境开发5.2 跳过…

【JavaSE】类和对象的封装

目录 【1】封装 【1.1】封装的概念 【1.2】访问限定符 【1.3】封装扩展之包 【1.3.1】包的概念 【1.3.2】导入包中的类 【1.3.3】自定义包 【1.3.4】包的访问权限控制举例 【1.3.5】常见的包 【2】static成员 【2.1】再谈学生类 【2.2】static修饰成员变量 【2.3】…

量子力学的应用:量子计算

亲爱的读者&#xff0c; 欢迎回到我们的量子力学系列文章。在前面的几篇文章中&#xff0c;我们已经深入探讨了量子力学的起源、基本概念、实验验证以及解释问题。今天&#xff0c;我们将聚焦在量子力学的一个引人注目的应用领域&#xff1a;量子计算。 1. 传统计算机与量子计…

【雕爷学编程】Arduino动手做(86)---4*4位 WS2812 全彩模块2

37款传感器与执行器的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&am…

【图解CAN总线】-9-详述经典CAN和CANFD报文是如何收发的

目录 1 经典CAN/CANFD网络拓扑分解 2 CAN收发器“前后端的电平” 3 图解MCU芯片与CAN物理总线之间CAN报文收发过程 3.1 TX&#xff0c;RX和CAN H/L电平变化&#xff1a;ECU接收一个报文 3.2 TX&#xff0c;RX和CAN H/L电平变化&#xff1a;ECU发送一个报文 END 推荐阅读&…

【LeetCode】48.旋转图像

题目 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像&#xff0c;这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9]…

OPC通信从入门到精通_1_OPC基础知识及简单C#程序编写(OPCDA,OPCUA简介;OPC通信数据流框架图;C#程序编写)

文章目录 1. OPC基础知识&#xff1a;OPCDA&#xff0c;OPCUA1.1 OPC基础知识1.2 OPC通信读写方式 2. OPC通信仿真2.1 上位机与PLC通过ModbusTCP直接通信2.2 OPC通信介绍及实例2.2.1 OPC通信与ModbusTCP比较2.2.2 OPC通信应用场景2.2.3 OPC DA通信仿真实例2.2.4 OPC UA通信仿真…

随手笔记——3D−3D:ICP理论

随手笔记——3D−3D&#xff1a;ICP理论 说明SVD 方法非线性优化方法 说明 ICP 的求解也分为两种方式&#xff1a;利用线性代数的求解&#xff08;主要是 SVD&#xff09;&#xff0c;以及利用非线性优化方式的求解&#xff08;类似于 Bundle Adjustment&#xff09;。 SVD 方…

Android平台GB28181设备接入模块之按需编码和双码流编码

技术背景 我们在做执法记录仪或指挥系统的时候&#xff0c;会遇到这样的情况&#xff0c;大多场景下&#xff0c;我们是不需要把设备端的数据&#xff0c;实时传给国标平台端的&#xff0c;默认只需要本地录像留底&#xff0c;如果指挥中心需要查看前端设备实时数据的时候&…

【LeetCode热题100】打卡第44天:倒数第30~25题

文章目录 【LeetCode热题100】打卡第44天&#xff1a;倒数第30~25题⛅前言 移动零&#x1f512;题目&#x1f511;题解 寻找重复数&#x1f512;题目&#x1f511;题解 二叉树的序列化与反序列化&#x1f512;题目&#x1f511;题解 最长递增子序列&#x1f512;题目&#x1f5…

力扣 763. 划分字母区间

题目来源&#xff1a;https://leetcode.cn/problems/partition-labels/description/ C题解1&#xff1a; 先遍历一遍使用哈希算法找到每个小写字母的最远的索引&#xff0c;再遍历一次&#xff0c;不断更新每个片段的最远距离。 class Solution { public:vector<int> pa…

Qt Core学习日记——第八天QMetaObject(下)

QMetaObject::normalizedType 将名称规范化。 例如&#xff1a; QByteArray normType QMetaObject::normalizedType(" int const *"); // normType is now "const int*" QMetaObject::connect(const QObject *sender, int signal_index, const QObject…