物联网-ESP8266

预备知识

微控制器的基本知识

16路物联网支付开关控制64个储物柜#跨阵物联 #扫码支付 #智能控制 #控制器

红色正极,黑色负极

正极常开(中间线不在的方向)端接第一列正极串联

负极常开接到第一行负极串联

最后,当要开第一行最后一个开关:一行二列通电到一行一列,形成回路

买uni板子:

蓝底白字为芯片引脚名称

要设置digitalWrite(D2,HIGH);还是digitalWrite(4,HIGH);作用相同,上面更加直接

ADC为A0,为模拟引脚,D开头是数字引脚。

GND为接地引脚(GROUND,0电压参考点)

红底白字GND接地,3V3为为外界提供3.3V电压,Vin为输入电 压(给NodeMCU供电),两种给开发板供电,一种是线,另一种就是Vin

nodeMCU电压3.3V,所以D2引脚所能连接的电压不能超过3.3V

模拟引脚为0-1V之间,不能超过1V,不然会造成永久伤害。

浅蓝背景黑色文字:通讯类型引脚,常见为串口通讯。U0TXD和U0RXD,TX为发送,RX为接收数据

U1TXD和U1RXD,TX为发送,RX为接收数据,可以和其他开发板通讯。电压不同需要电平转换板或其他方式变成能接收的3.3V电压

黑底白字:内存存储单元操作端口,6-7-11-8-9-10不能使用。

灰底白字很少用,不用看。

看个按钮,RST为reset按钮复位键。FLASH为刷固件按钮。

Arduino开发基本操作

太极创客】零基础入门学用Arduino 第一部分 合辑

  • AuduinoIDE下载
  • 电压为5V
  • USB连接在电脑,另一端连在开发板,然后打开Arduino IDE软件
  • 选择开发板和端口

c 复制代码
// 反复打开关闭灯(中间间隔1s)
void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  //初始化
  //LED_BUTTON数字引脚未输出模式
  pinMode(LED_BUILTIN, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  // 点亮LED并等待1秒
  digitalWrite(LED_BUILTIN, HIGH);  // turn the LED on (HIGH is the voltage level)
  delay(1000);                      // wait for a second
  //点平设置为低来熄灭LED
  digitalWrite(LED_BUILTIN, LOW);   // turn the LED off by making the voltage LOW
  //等待1秒
  delay(1000);                      // wait for a second
}

arduino官方帮助手册

太极帮助手册

c 复制代码
void setup() {
  // put your setup code here, to run once:
  pinMode(ledPin,OUTPUT);
}
let ledPin=13; //Arduino Uno引脚13有LED
void loop() {
  digitalWrite(ledPin,HIGH);
  delayMicroseconds(10000); //等待10000微妙
  digitalWrite(ledPin,LOW);
  delayMicroseconds(10000);

}

pinMode

为xxx引脚设置为xxx模式

为13引脚设置输出模式:pinMode(13,OUTPUT)

LET_BUILTIN为常量引脚编号13,根据板的型号自动调整

设置为输出模式之后才能digitalWrite(灯开关,HIGH有电流,LOW无电流)。

LED

长的一端正极,短的一端为负极

I=20mA,工作时,产生2伏特左右的电压降

电阻

两个引脚,中间是小电阻,用于保护短路,防止短路,一个小长方形

digitalWrite

HIGH为5V高电平

LOW为0V低电平

点亮一个LED

LED的电压为2V,所以正极为2V,Arduino引脚为5V,所以电阻为3V。

LED工作电流20mA,因为电阻为3V,所以电阻为U/I=R=3V/20mA=150Ω

电阻一般为200Ω或100Ω,可以用200,流过LED的电流安全,不能用100,会发热,能大不能小,确保LED寿命和稳定性

面包板

同一组的同一列相通

最边上两组是同一行相通,是供电用的

INPUT

引脚为高阻抗状态(100兆欧),用于读取传感器信号或开关信号:相连不同侧,同侧不相连

开关信号(数字信号),按下0,松开1

开关没有按下:走上面,没有引脚二到接地的线。上拉电阻(10K欧姆)防止短路(HIGH)

开关按下:走下面,因为上面电阻(上拉电阻(10K欧姆))(LOW)

引脚悬空:设置INPUT后没有外接电器,数字随机的

DigitalReadSerial

读取引脚数字输入,并将结果显示在串口监视器

c 复制代码
// digital pin 2 has a pushbutton attached to it. Give it a name:
int pushButton = 2;

// the setup routine runs once when you press reset:
void setup() {
  // 初始化串口通讯,每秒9600位,和软件窗口监视器波特率一致
  Serial.begin(9600);
  // 将pushbutton引脚设置为输入
  pinMode(pushButton, INPUT);
}

// the loop routine runs over and over again forever:
void loop() {
  // 读取引脚状态
  int buttonState = digitalRead(pushButton);
  // 打印按钮状态
  Serial.println(buttonState);
  delay(1);  // 延时1毫秒,让程序更加稳定运行
}

INPUT_PULLUP

输入上拉模式,Arduino自带内部上拉电阻,可以如需外界电阻

c 复制代码
void setup() {
  //start serial connection
  Serial.begin(9600);
  //configure pin 2 as an input and enable the internal pull-up resistor
  pinMode(2, INPUT_PULLUP);
  pinMode(13, OUTPUT);
}

void loop() {
  //read the pushbutton value into a variable
  int sensorVal = digitalRead(2);
  //print out the value of the pushbutton
  Serial.println(sensorVal);

  // Keep in mind the pull-up means the pushbutton's logic is inverted. It goes
  // HIGH when it's open, and LOW when it's pressed. Turn on pin 13 when the
  // 根据读取道德开光状态设置LED的高低电平
  if (sensorVal == HIGH) {
    digitalWrite(13, LOW); //熄灭
  } else {
    digitalWrite(13, HIGH); //点亮
  }
}

模拟电路

搭建电路图:

需要10根线,10根面包板跳线,数码管,开关,一个200-500欧姆电阻,一个Uno R3开发板

1位8段共阴极LED数码管(共阴代表所有负极接在一起)

中间是CC引脚,阴极

CC通过电阻到了接地上(电阻位200-500Ω)

数字展示结果:

c 复制代码
void setup() {
  pinMode(2,INPUT_PULLUP);
  Serial.begin(9600);
  int pinNumber = 3;
  while (pinNumber <= 9) {
    pinMode(pinNumber, OUTPUT);
    pinNumber = pinNumber + 1;
  }
  //RandomSeed产生随机种子,seedVal位随机种子数值,A0为模拟输入数值
  randomSeed(analogRead(A0));
}

void loop() {
  int myNumber;
  if(!digitalRead(2)){
    myNumber = random(1, 10);
  }
  
  Serial.print("randomNumber:");
  Serial.println(myNumber);
  displayNumber(myNumber);
  delay(500);
  displayClear();
  delay(500);
}
//自定义
void displayClear() {
  digitalWrite(3, LOW);
  digitalWrite(4, LOW);
  digitalWrite(5, LOW);
  digitalWrite(6, LOW);
  digitalWrite(7, LOW);
  digitalWrite(8, LOW);
  digitalWrite(9, LOW);
}
void displayNumber(int myNumber) {
  if (myNumber == 1) {
    //显示1
    digitalWrite(4, HIGH);
    digitalWrite(7, HIGH);
  } else if (myNumber == 2) {
    //显示2
    digitalWrite(3, HIGH);
    digitalWrite(4, HIGH);
    digitalWrite(5, HIGH);
    digitalWrite(8, HIGH);
    digitalWrite(9, HIGH);
  } else if (myNumber == 3) {
    //显示3
    digitalWrite(3, HIGH);
    digitalWrite(4, HIGH);
    digitalWrite(5, HIGH);
    digitalWrite(7, HIGH);
    digitalWrite(8, HIGH);
  } else if (myNumber == 4) {
    //显示4
    digitalWrite(6, HIGH);
    digitalWrite(5, HIGH);
    digitalWrite(4, HIGH);
    digitalWrite(7, HIGH);
  } else if (myNumber == 5) {
    //显示5
    digitalWrite(3, HIGH);
    digitalWrite(6, HIGH);
    digitalWrite(5, HIGH);
    digitalWrite(7, HIGH);
    digitalWrite(8, HIGH);
  } else if (myNumber == 6) {
    //显示6
    digitalWrite(3, HIGH);
    digitalWrite(4, HIGH);
    digitalWrite(5, HIGH);
    digitalWrite(7, HIGH);
    digitalWrite(8, HIGH);
    digitalWrite(9, HIGH);
  } else if (myNumber == 7) {
    //显示7
    digitalWrite(3, HIGH);
    digitalWrite(4, HIGH);
    digitalWrite(7, HIGH);
  } else if (myNumber == 8) {
    //显示8
    digitalWrite(3, HIGH);
    digitalWrite(4, HIGH);
    digitalWrite(5, HIGH);
    digitalWrite(6, HIGH);
    digitalWrite(7, HIGH);
    digitalWrite(8, HIGH);
    digitalWrite(9, HIGH);
  } else if (myNumber == 9) {
    //显示9
    digitalWrite(3, HIGH);
    digitalWrite(4, HIGH);
    digitalWrite(5, HIGH);
    digitalWrite(6, HIGH);
    digitalWrite(7, HIGH);
    digitalWrite(8, HIGH);
  }
}

模拟输入输出

调节亮度:带小曲线的引脚(0-255亮度值)
analogWrite(ledPin引脚,brightness亮度级别); 控制亮度

左边按钮变大,右边按钮变小

每次analogWrite的时候会给该引脚一个固定频率的PWM信号,只有3-5-6-9-10-11支持analogWrite函数,5好和6好引脚的PWM频率为980赫兹。

再analogWrite之前,不需要pinMode设置引脚,设置也没事

c 复制代码
boolean pushButton1; //存储开关1的电平
boolean pushButton2; //存储开关2的电平
int ledPin=9; //LED引脚号
int brightness=128;//LED亮度参数
void setup() {
  // put your setup code here, to run once:
  //引脚2和8设置为上拉模式
  pinMode(2,INPUT_PULLUP);
  pinMode(8,INPUT_PULLUP);
  //LED为输出模式
  pinMode(ledPin,OUTPUT);
  //启动串口通讯
  Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
  pushButton1=digitalRead(2);//读取引脚2状态
  pushButton2=digitalRead(8);//读取引脚8状态
  //如果按下按钮开关1 并且亮度大于1,就降低亮度
  if(!pushButton1 && brightness>0){
    brightness--;
  }
  //如果按钮按钮开关2,并且亮度小于255,就增加亮度
  else if(!pushButton2 && brightness <255){
    brightness++;
  }
  //设置led亮度
  analogWrite(ledPin,brightness);
  Serial.println(brightness); //打印亮度
  delay(10);
}

PWM

数字信号:

当间隔为1毫秒,就看起来是50%亮度
analogWrite(ledPin,127);127就是255*0.5

亮度长,灭的短,就75%亮度,变亮
analogWrite(ledPin,191);191=255*0.75

呼吸灯效果

c 复制代码
void setup() {
  // put your setup code here, to run once:
  pinMode(9,OUTPUT); //9号引脚为输出,点亮LED
  Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
  //控制LED由暗到明
  for(int brightness=0;brightness<=255;brightness++){
    analogWrite(9,brightness);
    Serial.println(brightness);
    delay(10);
  }
  for(int brightness=255;beightness>=0;beightness--){
    analogWrite(9,brightness);
    Serial.println(brightness);
    delay(10);
  }
}

电位器

样子:

可以看成两个电阻串联,旋钮会导致电阻同时发生变化

旋转到中间:1-2为500,2-3为500,一共1000欧姆

左旋:1-2减少,2--3增大,到尽头,1-2为0,2-3为1000Ω

右旋:2-3减少,1-2增大,到尽头,1-2为1000,2-3为0Ω

旋钮向哪转,哪边电阻减。

一般用于分压电路,电流=电压/电阻

R1-2为500,R2-3为500,如果U1为5V,那么U2为2.5V,U3为0V

R1-2为800,R2-3为200,如果U1为5V,那么U2为1V,U3为0V

1号为接地引脚,2号模拟输入引脚,3号引脚为5V引脚

练习图:

中间引脚节点模拟电路A0引脚上

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

void loop() {
  // put your main code here, to run repeatedly:
  //从模拟输入引脚读取数值0-1023,将0-5V电压输入信号映射到数值0-1023,空引脚数值是不固定的随机的
  int analogInPutVal=analogRead(A0);
  Serial.println(analogInPutVal)
}

电位器控制灯

c 复制代码
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  pinMode(9,OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  int analogInputVal=analogRead(A0);
  //将0-1025等比映射到0-255
  int brightness=map(analogInputVal,0,1023,0,255);
  analogWrite(9,brightness);
}

物联网

使用ESP8266-NodeMCU

物联网(IOT,Internet Of Things万物归于互联)

跟着详细教程教程

  • 问题1:安装ESP8266适配的驱动器(板子后面有,看到型号后直接百度或者github下载即可(官网下载地址)
    下图COM5就是开发板端口

-问题2:开发板管理器下载失败:离线下载教程

教程(网址

互联网基础

相关推荐
北京阿尔泰科技厂家5 小时前
从数据采集到智能诊断:阿尔泰科技实时高精度远距离管道状态监测全流程
物联网·安全·能源·信号采集·数据采集器·工业测试·管道监测
我先去打把游戏先12 小时前
ESP32开发指南(基于IDF):连接AWS,乐鑫官方esp-aws-iot-master例程实验、跑通
开发语言·笔记·单片机·物联网·学习·云计算·aws
QQ129584550419 小时前
ThingsBoard部件数据结构解析
数据结构·数据库·物联网·iot
TDengine (老段)20 小时前
TDengine 数学函数 ASCII 用户手册
java·大数据·数据库·物联网·时序数据库·tdengine·涛思数据
TDengine (老段)1 天前
TDengine 数学函数 TRUNCATE 用户手册
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
TDengine (老段)1 天前
TDengine 数据函数 CORR 用户手册
大数据·数据库·物联网·时序数据库·tdengine·1024程序员节
搜移IT科技1 天前
2025广州国际物联网产业生态博览会(物联网展)最新技术与亮点揭秘!
物联网
卍郝凝卍1 天前
NVR(网络视频录像机)和视频网关的工作方式
网络·图像处理·物联网·音视频·视频解决方案
kaka❷❷1 天前
STM32 单片机 ESP8266 联网 和 MQTT协议
stm32·单片机·嵌入式硬件·物联网·mqtt·esp8266
塔能物联运维2 天前
物联网运维中基于数字孪生的实时设备状态同步与仿真验证技术
运维·物联网