资讯详情

Arduino初学者-控制继电器(串口 or NodeMCU)

串口控制继电器开关

参考: 官方例程 官方函数 csdn使用用户编写的继电器模块

串口指令:

//以下函数可与串口一起使用: Serial.XX() if(Serial) available() availableForWrite() begin() end() find() findUntil() flush() parseFloat() parseInt() peek() print() println() //Serial.println(val, format) val即数值,format格式,可选HEX、OCT等 read()   readBytes() readBytesUntil() readString() readStringUntil() setTimeout() write() serialEvent() 

Relay Model (继电器)

在这里插入图片描述 它可以长在上面。

但是,为了方便使用,我们在购买继电器模块时通常会购买上述模块。上面是一路继电器。

  • 左边有三个引脚:一个是输入VCC、一个接地GCC、一个为信号IN。
  • 右侧有三个引脚:NC常闭端(normal close),COM公共端,NO常开端(normal open)
  • IN高电平时,常闭端与公共端连接;IN为低电平时NO-COM相连。
  • 需要注意的是,继电器不会向左引脚供电,继电器IN引脚给高低电平只是决定把开关吸到哪里(使用电磁效应)。因此,为了达到继电器断开/关闭的效果,我们需要左侧NC-COM或NO-COM串入带电源的主回路。

例1:用串口写入C/O控制继电器关闭/打开小灯

  • 思路:选用Pin向继电器传输信号IN打开串口监视器读入我们输入的符号。

  • 电路:首先建立一个简单的电源电阻-Led电路;然后继电器NC、COM串入其中。

  • 程序如下:

    int relayPin = 8; char incomingByte = 'O';  void setup() { 
                // put your setup code here, to run once: pinMode(relayPin,OUTPUT); //设8脚为输出、连着继电器的IN Serial.begin(9600); } void loop() { 
                if (Serial.available() > 0) { 
                // read the incoming byte: incomingByte = Serial.read(); if(incomingByte == 'C'){ 
                //串口输入C时 NC、COM相连 digitalWrite(relayPin, HIGH); Serial.println(incomingByte); } if(incomingByte == 'O'){ 
                digitalWrite(relayPin, LOW); Serial.println(incomingByte); } } } 

例2:使用Node MCU代替Arduino

例3:用NodeMCU的服务端控制小灯亮灭

  • 接线不变。但是改用Web控制D8引脚
  • NodeMCU相关指令见Arduino初学者-NodeMCU
  • (更新:NodeMCU打开串口前都别用D8引脚!可能会使WiFi连接不上,或者串口乱码。)
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>

ESP8266WebServer controlpage(80);
const char* ssid = "Xiaomi_DE92";
const char* password = "yz6689440"; //这是我家wifi啦,欢迎连接
int relayPin = 15;
void setup(){
  Serial.begin(9600);
  pinMode(relayPin, OUTPUT);
  WiFi.begin(ssid,password);
  Serial.print("Connecting to ");
  Serial.print(ssid);  
  Serial.println("...");
  
  while(WiFi.status() != WL_CONNECTED){ //当ESP8266与路由器连上时会返回WL_CONNECTED
    delay(500);}
  Serial.println("Conection established");
  Serial.print("IP address:  ");  
  Serial.println(WiFi.localIP()); //显示IP地址,可以用来在浏览器访问

  controlpage.begin();
  controlpage.on("/",HTTP_GET,handleRoot); //若用GET的方式打开首页,则执行子程序
  controlpage.on("/Relay",HTTP_POST,handleRelay);
  controlpage.onNotFound(handleNotFound);
  
  Serial.println("HTTP controlpage started");
}

void loop(){
  controlpage.handleClient(); //不断检查http的访问
}
void handleRoot(){
  controlpage.send(200,"text/html","<form action=\"/Relay\" method=\"POST\"><input type=\"submit\" value=\"RelayChange\"></form>");
}
void handleRelay(){
  digitalWrite(relayPin,!digitalRead(relayPin));
  controlpage.sendHeader("Location","/"); //修改头文件中的键值对内容,套娃的关键
  controlpage.send(303);  //页面跳转代码:303
}
void handleNotFound(){
  controlpage.send(404,"text/plain","404:Not found");
}

标签: 继电器用什么串口控制继电器串口

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台