当前位置: 首页 > news >正文

物联网-ESP8266

预备知识

微控制器的基本知识

16路物联网支付开关控制64个储物柜#跨阵物联 #扫码支付 #智能控制 #控制器
红色正极,黑色负极
连接
正极常开(中间线不在的方向)端接第一列正极串联
常开
负极常开接到第一行负极串联
负极
最后,当要开第一行最后一个开关:一行二列通电到一行一列,形成回路
在这里插入图片描述
买uni板子:

蓝底白字为芯片引脚名称
要设置digitalWrite(D2,HIGH);还是digitalWrite(4,HIGH);作用相同,上面更加直接
ADC为A0,为模拟引脚,D开头是数字引脚。
GND为接地引脚(GROUND,0电压参考点)
ESP-12E

Arduino开发基本操作

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

  • AuduinoIDE下载
    连接
  • USB连接在电脑,另一端连在开发板,然后打开Arduino IDE软件
  • 选择开发板和端口
    选择
    示例
// 反复打开关闭灯(中间间隔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//点平设置为低来熄灭LEDdigitalWrite(LED_BUILTIN, LOW);   // turn the LED off by making the voltage LOW//等待1秒delay(1000);                      // wait for a second
}

arduino官方帮助手册
帮助
太极帮助手册
帮助

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无电流)。
pinMOde

LED

长的一端正极,短的一端为负极
I=20mA,工作时,产生2伏特左右的电压降
LED

电阻

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

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
INPUT
电路
开关没有按下:走上面,没有引脚二到接地的线。上拉电阻(10K欧姆)防止短路(HIGH)
开关按下:走下面,因为上面电阻(上拉电阻(10K欧姆))(LOW)
开关按下
引脚悬空:设置INPUT后没有外接电器,数字随机的

DigitalReadSerial

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

// 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自带内部上拉电阻,可以如需外界电阻

void setup() {//start serial connectionSerial.begin(9600);//configure pin 2 as an input and enable the internal pull-up resistorpinMode(2, INPUT_PULLUP);pinMode(13, OUTPUT);
}void loop() {//read the pushbutton value into a variableint sensorVal = digitalRead(2);//print out the value of the pushbuttonSerial.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Ω)
LED
数字展示结果:
数字

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) {//显示1digitalWrite(4, HIGH);digitalWrite(7, HIGH);} else if (myNumber == 2) {//显示2digitalWrite(3, HIGH);digitalWrite(4, HIGH);digitalWrite(5, HIGH);digitalWrite(8, HIGH);digitalWrite(9, HIGH);} else if (myNumber == 3) {//显示3digitalWrite(3, HIGH);digitalWrite(4, HIGH);digitalWrite(5, HIGH);digitalWrite(7, HIGH);digitalWrite(8, HIGH);} else if (myNumber == 4) {//显示4digitalWrite(6, HIGH);digitalWrite(5, HIGH);digitalWrite(4, HIGH);digitalWrite(7, HIGH);} else if (myNumber == 5) {//显示5digitalWrite(3, HIGH);digitalWrite(6, HIGH);digitalWrite(5, HIGH);digitalWrite(7, HIGH);digitalWrite(8, HIGH);} else if (myNumber == 6) {//显示6digitalWrite(3, HIGH);digitalWrite(4, HIGH);digitalWrite(5, HIGH);digitalWrite(7, HIGH);digitalWrite(8, HIGH);digitalWrite(9, HIGH);} else if (myNumber == 7) {//显示7digitalWrite(3, HIGH);digitalWrite(4, HIGH);digitalWrite(7, HIGH);} else if (myNumber == 8) {//显示8digitalWrite(3, HIGH);digitalWrite(4, HIGH);digitalWrite(5, HIGH);digitalWrite(6, HIGH);digitalWrite(7, HIGH);digitalWrite(8, HIGH);digitalWrite(9, HIGH);} else if (myNumber == 9) {//显示9digitalWrite(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设置引脚,设置也没事

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
亮度

呼吸灯效果

void setup() {// put your setup code here, to run once:pinMode(9,OUTPUT); //9号引脚为输出,点亮LEDSerial.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引脚上
电位器

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)
}

电位器控制灯
控制灯

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-255int brightness=map(analogInputVal,0,1023,0,255);analogWrite(9,brightness);
}

物联网

使用ESP8266-NodeMCU
物联网(IOT,Internet Of Things万物归于互联)

http://www.dtcms.com/a/274142.html

相关文章:

  • API、MCP Client、MCP Server、LLM之间的业务逻辑关系
  • 医疗预约系统中的录音与图片上传功能实现:Vue3+Uniapp 实战
  • 在线重装 Proxmox VE
  • Swift中SwiftyJSON使用详情
  • 墙裂推荐!McpStore库三行代码为Agent添加MCP能力
  • 业务建模如何让金融数字化转型 “轻” 装上
  • CentOS7环境安装包部署并配置MySQL5.7
  • 什么是proxy
  • 使用浏览器inspect调试wx小程序
  • 构建基于表单配置的 Jenkins 测试项目(接口、UI、APP、Jmeter)
  • 加速市场反馈,助力产品迭代升级​
  • 如何使用 Python 删除 Excel 中的行、列和单元格 – 详解
  • IAR携手矽力杰与普华基础软件,共推RISC-V车规芯片高安全应用落地
  • docker 启动中间件
  • Python 数据建模与分析项目实战预备 Day 2 - 数据构建与字段解析(模拟简历结构化数据)
  • 【Python练习】038. 编写一个函数,检查一个链表是否有环
  • PHY模式,slave master怎么区分
  • 力扣网编程134题:加油站(双指针)
  • Android15 无法接收到应用自身发出的广播分析解决
  • 【牛客刷题】dd爱科学1.0
  • Java 大视界 -- Java 大数据在智能医疗远程手术机器人操作数据记录与分析中的应用(342)
  • 从静到动的创作革命:Midjourney Video V1重塑AI影像叙事
  • 滑动窗口-3.无重复字符的最长子串-力扣(LeetCode)
  • 【Linux】虚拟内存的概念和布局
  • UI自动化神器:Playwright元素定位方法!
  • 新型变种木马正在伪装成Termius入侵系统
  • Kotlin 常用语法糖完整整理
  • 【springboot】IDEA手动创建SpringBoot简单工程(无插件)
  • 【零基础学AI】第37讲:提示词工程(Prompt Engineering)
  • NLP_知识图谱_大模型——个人学习记录