NodeMcu 您所在的位置:网站首页 电脑开机引脚电压多少正常 NodeMcu

NodeMcu

2024-07-15 22:30| 来源: 网络整理| 查看: 265

233 1 准备工作硬件软件 2 硬件介绍ESP8266、ESP12F、NodeMcu 3 NodeMcu 硬件参数引脚定义NodeMcu的基本参数 4 NodeMcu 按钮和LED灯5 Arduino环境配置6 Arduino 基本入门7 开始使用NodeMcu8 进入实战前的模拟尝试使用三极管 8 使用点灯科技的库9 开机部分实现10 添加开机状态监控

1 准备工作 硬件

在这里插入图片描述 在这里插入图片描述 那个CD4066的开关可以不买,面包板插不上。。。我犯傻了

软件

电脑上

Arduino 的IDE,我用的1.8.14点灯科技的库

手机上就是点灯的APP

2 硬件介绍 ESP8266、ESP12F、NodeMcu

参考网址:http://www.taichi-maker.com/homepage/esp8266-nodemcu-iot/esp8266-nodemcu-tutorial-index/nodemcu-hardware/

http://www.taichi-maker.com/homepage/esp8266-nodemcu-iot/esp8266-nodemcu-tutorial-index/nodemcu-board/

esp8266 : 百度一下8266就会出现乐鑫这个名字,乐鑫就是这个芯片的开发者,而且是中国公司,牛P。这个芯片是完成WIFI的全部任务的,他是一切的基础。在这里插入图片描述

ESP12F 是安信可设计的一个模块,使用ESP8266芯片(可以理解在ESP8266的基础上又添加了一些其他硬件),如下图,屏蔽罩下面就是ESP8266的芯片

在这里插入图片描述 现在买到的都是ESP12F居多 在这里插入图片描述 NodeMCU则是以ESP12模块为核心的开发板,如下图所示。 在这里插入图片描述 而NodeMcu选购的时候常常会提到一个词 CH340芯片,这个东西是让你可以直接使用USB与NodeMcu通信,NodeMcu上的CH340芯片完成USB数据到串口数据的转换,就是有了这个芯片,我们才能非常简单的使用USB来连接ESP8266芯片。 不过CH340是老一版本的芯片,新的NodeMcu都是CH2102(贵点),CH340主要问题是挑数据线,所以如果NodeMcu插上电脑没反应,换数据线吧。

3 NodeMcu 硬件参数

参考 http://www.taichi-maker.com/homepage/esp8266-nodemcu-iot/esp8266-nodemcu-tutorial-index/nodemcu-board/ 必须吹一波太极创客,简直良心的不要再良心的了,还出了免费的视频教程。 也参考了下的博客 https://blog.csdn.net/q1694222672/article/details/89214807 https://www.arduino.cn/thread-83846-1-1.html

引脚定义

下面是摘自https://blog.csdn.net/weixin_45488643/article/details/105974842的一个对应图 在这里插入图片描述

然后关于NodeMcu的基本知识, 开发板的丝印对应8266的引脚

NodeMcu的基本参数

在这里插入图片描述 那个表看不懂,可以看下面这些

NodeMcu工作电压3.3V,可以从以下几种方式供电: USB口: 5V供电 VIN: 可输入5V供电。 3V引脚: 可以输入3.3V直接给esp8266供电。当使用其他方式供电时,该引脚可以获得3.3V电压给其他设备供电。

所有I/O输入电压都不得高于3.3V。同时请注意,这些引脚的最大输出电流是12mA。 D0~D8: 数字输入引脚。 PWM: 所有数字I/O都可用于PWM输出 串口: Serial(TX-D10/RX0-D9)可用于和计算机或其他设备通信,Serial1(TX1-D4)只有输出端口,可用向其他设备发送数据。 SPI: MISO\MOSI\SCK引脚可用于SPI通信。 IIC: 实际上D0~D8都可以用作IIC通信。 A0: 只能做模拟输入使用,输入电压范围为0~3.3V,8-bit精度。 L: 位于8266模块上的LED,该LED连接到D2引脚,可以使用宏LED_BUILTIN编程控制

可以使用开发板上印刷的Dx或引脚对应的GPIO编号控制引脚,如 a=digitalRead(D1) a=digitalRead(5) 是等效的。

不建议使用的引脚 ESP8266芯片有17个GPIO引脚(GPIO0~GPIO16)。这些引脚中的GPIO6~GPIO 11被用于连接开发板的闪存(Flash Memory)。如果在实验电路中使用GPIO6~GPIO11,NodeMCU开发板将无法正常工作。因此建议您不要使用GPIO6~GPIO 11。

特殊引脚

GPIO2引脚 在NodeMCU开发板启动时是不能连接低电平的。GPIO15引脚在开发板运行中一直保持低电平状态。因此请不要使用GPIO15引脚来读取开关状态或进行I²C通讯。GPIO0引脚在开发板运行中需要一直保持高电平状态。否则ESP8266将进入程序上传工作模式也就无法正常工作了。您无需对GPIO0引脚进行额外操作,因为NodeMCU的内置电路可以确保GPIO0引脚在工作时连接高电平而在上传程序时连接低电平。

总结就是:尽量使用GPIO1 对应D10 ,GPIO3对应 D9 ,GPIO13 对应 D7 ,GPIO12 对应 D6 ,GPIO14 对应 D5,GPIO4 对应 D2 ,GPIO5 对应 D1,GPIO16 对应 D0 等引脚

NodeMCU开发板配有降压电路。您可以用NodeMCU开发板的模拟输入引脚读取0-3.3V的模拟电压信号。

4 NodeMcu 按钮和LED灯

我们可以通过NodeMCU开发板上的FLASH按键控制D3引脚的电平。当我们没有按下该按键时,D3引脚将会保持高电平状态。当按下该按键后,D3引脚会变为低电平。

RST按键是让NodeMcu重新运行写入的程序

LED灯和D4直接连接,低电平灯亮(这个不知道为什么,我测试的是D4 LOW,LED灯亮。。。。。。。。)

5 Arduino环境配置

esp8266 nodeMCU arduino开发环境 https://www.jianshu.com/p/58f71aeb6633

6 Arduino 基本入门

建议看下面这个视频教程,每个都很短,看的很快的 https://www.bilibili.com/video/BV1YW411Z76E?from=search&seid=957664686341888135

7 开始使用NodeMcu

直奔主题,远程开机嘛,可以使用点灯科技的APP远程造作NodeMcu某个引脚输出高电平,然后控制(这个如何控制方法很多) 主板开机。

而主板开机的原理就是POWER_SW 的两个跳针短接一下,把POWER_SW 正的那个跳针电压拉低。

在这里插入图片描述 那么根据上面说的原理有两个控制方法

控制方法1:直接连接POWER_SW的正跳针,让板子输出低电压,直接拉低POWER_SW的正跳针的电压实现开机控制方法2:让板子控制POWER_SW正负跳针的短接

我这里使用的控制方法2,因为我不太确定POWER_SW正极的跳针电压到底多大,有说3.3V的有说5V的,我手头就一个能承受3.3V的NodeMcu,直接NodeMcu控制三极管导通,让POWER_SW两个跳针接通短路。

8 进入实战前的模拟 尝试使用三极管

在这里插入图片描述 额,数电和物理老师看到会被打死的电路图 在这里插入图片描述 电路连接的时候注意发光二极管和三极管的连接方式 在这里插入图片描述 发光二极管长的引脚是正

在这里插入图片描述 三极管找到带字的一面对着你的脸,从左到右分别是集电极 基极 发射机 在这里插入图片描述

Arduino代码,原理就是因为按下FLASH按钮会触发D3的低电平,所以读取D3的电压,如果D3是低电平,就给连接三极管基极的D7 写入高电平,导通三极管

void setup() { // put your setup code here, to run once: Serial.begin(9600); // 启动串口通讯 pinMode(D3, INPUT); // 将FLASH按键引脚设置为输入模式 pinMode(D7, OUTPUT); // 将FLASH按键引脚设置为输入模式 Serial.println("开始了 ..."); } void loop() { // put your main code here, to run repeatedly: int pinState = digitalRead(D3); // 获取D3引脚状态 if(pinState == HIGH){ // 当按键引脚D3为高电平,按钮没有按下 digitalWrite(D7,LOW); } else { // 当按键引脚D3为低电平 Serial.println("低电平,按钮按下了"); digitalWrite(D7,HIGH); } } 8 使用点灯科技的库

注意,别使用太新的ESP8266的库,我最初用的1.8的库,结果板子能够连接WIFI但是没法构建MQTT通信,无限循环初始化

在这里插入图片描述

可以参考这个教程一步步来https://www.arduino.cn/thread-83174-1-1.html 遇到问题,再去官方文档找找解决办法https://www.diandeng.tech/doc/arduino-course

然后手机上装点灯APP,新建一个设备,记住秘钥,这个点灯官网就有教程

9 开机部分实现

先用杜邦线把跳线引出来,要不然每次拔插累死了在这里插入图片描述 在这里插入图片描述 电路很简单

D7连接 三极管的 基极作为信号端,高电平使三极管导通POWER_SW+ 连接三极管集电极POWER_SW- 连接发射极NodeMcu的接地也连接POWER_SW-(共地)

代码如下,功能就是按下NodeMcu的Flash按键,会短接POWER_SW+ 和POWER_SW- ,实现台式机开机。

void setup() { // put your setup code here, to run once: Serial.begin(9600); // 启动串口通讯 pinMode(D3, INPUT); // 将FLASH按键引脚设置为输入模式 pinMode(D7, OUTPUT); // 控制信号 pinMode(D4, OUTPUT); // D4控制 开发板上的LED等,当我们按下FLASH按键,让LED亮,相当于个指示信号 Serial.println("开始了 ..."); digitalWrite(D4,HIGH); digitalWrite(D7,LOW); } void loop() { // put your main code here, to run repeatedly: int pinState = digitalRead(D3); // 获取D3引脚状态 if(pinState == HIGH){ // 当按键引脚D3为高电平,按钮没有按下 digitalWrite(D7,LOW); digitalWrite(D4,HIGH); } else { // 当按键引脚D3为低电平 Serial.println("低电平,按钮按下了"); digitalWrite(D7,HIGH); digitalWrite(D4,LOW); } } 10 添加开机状态监控

这一节添加状态监控保持上一节描述的开机电路没有修改,只是代码修改了,变成点灯APP上的按键触发,而不是通过按NodeMcu板子上的FLASH按键触发三级管导通。

直接读取 电源指示灯正极 或者 硬盘指示灯正极是否有电压就行,有电压了电脑就是开机了。 在这里插入图片描述

我这里串了两个200欧的电阻,分下电压,否则会超过NodeMcu 模拟输入的最大3.3V电压。 电路如下,另外比如主机箱LED+ 应该都是杜邦的母头,所以需要用一根公转公的杜邦线才能插到面包板上。 在这里插入图片描述 忽略后面乱糟糟的网线 在这里插入图片描述

配套的点灯APP设置如下,主要是按键和读数控件名字 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 总代码

#define BLINKER_WIFI #include char auth[] = "点灯上添加硬件对应的秘钥"; char ssid[] = "无线ID"; char pswd[] = "无线密码"; // 新建按键组件对象 BlinkerButton Button1("btn-abc"); //读取电压 BlinkerNumber temp("temp"); //板子A0端口读取的模拟电压 float temp_read = 0; //表示主板开机与否 int com_state=0; // 按下按键即会执行该函数 void button1_callback(const String & state) { //串口调试输出 BLINKER_LOG("get button state: ", state); //state是APP上按键的状态,tap表示按了一下 if (state=="tap") { //开机命令,NodeMcu还是D7引脚接三极管基极,所以控制D7输出一下高电平 digitalWrite(D7, HIGH); Blinker.delay(500); //记得再写入低电平,否则就是长按关机了 digitalWrite(D7, LOW); //电脑开机了 com_state=1; BLINKER_LOG("触发开机"); //这个print是给手机上的点灯APP的响应 Button1.print("on"); } //state是APP上按键的状态,press表示长按了,表示关机 else if(state=="press"){ //如果是长安关机,我们这里是 短接4S digitalWrite(D7, HIGH); Blinker.delay(4000); digitalWrite(D7, LOW); com_state=0; BLINKER_LOG("强制关机"); // 给APP上反馈开关状态 Button1.print("off"); } } void setup() { // 初始化串口 Serial.begin(115200); //在 void setup() 中初始化串口Serial BLINKER_DEBUG.stream(Serial); //调试输出更多细节信息 BLINKER_DEBUG.debugAll(); // 初始化IO //D7 高电平控制电脑开机 pinMode(D7, OUTPUT); digitalWrite(D7, LOW); // 初始化blinker Blinker.begin(auth, ssid, pswd); //按钮组件也需要在 setup() 中注册回调函数 Button1.attach(button1_callback); } void loop() { //此函数需要频繁调用以保持设备间连接及处理收到的数据, 建议放在 loop() 函数中 Blinker.run(); //这个吧,就是电脑开机了才读电压 if(com_state==1){ //读取电压 int getADC=analogRead(A0); int x = map(getADC,0,1023,0,32); temp_read=(float)x/10; //串口打印读取的电压 BLINKER_LOG("电压为: ", temp_read, " V"); Blinker.delay(500); //下面函数就是给点灯的APP发送电压信息了 temp.print(temp_read); } }

另外点灯也是为了节省带宽(可以理解,毕竟白嫖了人家),APP是信息主动发起方,所以一段时间后可能APP上就接受不到电压信息了,点击debug窗口的刷新就好了 在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有