新手发帖。ESP32局域网控制32路mos管-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3296|回复: 5

新手发帖。ESP32局域网控制32路mos管

[复制链接]
发表于 2020-11-3 20:25 | 显示全部楼层 |阅读模式
大家好,本人是新手,刚接触ESP32,发现这东西是真的香啊。
正好朋友的密室逃脱店里想要做个wifi控制机关的道具。刚开始的时候用ESP32开发板和继电器板
微信图片_20201103194533.jpg 微信图片_20201103194544.jpg
从淘宝上找到 O1CN01xKoZ3w200Uf0N4Mwk_!!37756787.jpg 发觉价格太贵。于是自己画了个去打样 微信图片_20201103194553.jpg 微信图片_20201103194548.jpg
一通焊接,再通过点灯科技的例程修改下做了个控制16路继电器的。
微信图片_20201103195224.jpg 微信图片_20201103195851.jpg
以为完事了。结果朋友说16路太少了。而且他需要用电脑控制。

于是便想到用74HC595.然后就从新画了板子。
微信图片_20201103200429.jpg 微信图片_20201103200443.jpg

发觉视频不知道怎么传。多发几张照片吧
微信图片_20201103202357.jpg 微信图片_20201103202351.jpg 微信图片_20201103202344.jpg
板子我这还有,如果有想要了可以联系我哦。

微信图片_20201103200437.jpg
发表于 2020-11-3 21:24 | 显示全部楼层
图没啥看的,吧程序发来看看
 楼主| 发表于 2020-11-3 21:49 | 显示全部楼层
#include <WiFi.h>
#include <WebServer.h> //引入相应库

const char *ssid = "";
const char *password = "";
int t=0;
byte Sta[4];
int latchPin = 15;
int clockPin = 2;
int dataPin = 4;
hw_timer_t * timer = NULL;
WebServer server(80); //声明WebServer对象

void handleArg1() //回调函数
{
  String arg = server.pathArg(0);
  int a=arg.toInt();
  if(a==100){Sta[0]=0;
   Sta[1]=0;
   Sta[2]=0;
   Sta[3]=0;
   t=10;   
    }
   else if(a==101){Sta[0]=255;
   Sta[1]=255;
   Sta[2]=255;
   Sta[3]=255;
   t=10;
    }
   String c= String(Sta[0])+","+ String(Sta[1])+","+ String(Sta[2])+","+ String(Sta[3]);
    server.send(200, "text/plain", c);   
}

void IRAM_ATTR onTimer(){
  if(t>=10){
   digitalWrite(latchPin, LOW);
   shiftOut(dataPin,clockPin,MSBFIRST,Sta[3]);
   shiftOut(dataPin,clockPin,MSBFIRST,Sta[2]);
   shiftOut(dataPin,clockPin,MSBFIRST,Sta[1]);
   shiftOut(dataPin,clockPin,MSBFIRST,Sta[0]);
  digitalWrite(latchPin, HIGH);
  t=0;
  }
  else{t++;}
  
}
void handleArg2() //回调函数
{
  String arg0 = server.pathArg(0);
  String arg1 = server.pathArg(1);
  
  int a=arg0.toInt();
  int s=arg1.toInt();
  if(a<8&s<=1)
   { bitWrite(Sta[0], a, s);
   t=10;  
  //String c= String(Sta);
// server.send(200, "text/plain", c);
   }
   else if(a<16&s<=1)
   { bitWrite(Sta[1], a-8, s);
   t=10;  
   }
    else if(a<24&s<=1)
   { bitWrite(Sta[2], a-16, s);  
     t=10;
   }
    else if(a<32&s<=1)
   { bitWrite(Sta[3], a-24, s);  
    t=10;
   }
   else if(a==200)
   {    unsigned char hexdata[6]={170,7,2,0,0,0};
     hexdata[4]=s;
    hexdata[5]=hexdata[0]+hexdata[1]+hexdata[2]+hexdata[3]+hexdata[4];
    Serial2.write(hexdata, 6);
   }
    else if(a==201)
   {    unsigned char hexdata[7]={170,22,3,2,0,0,0};
     hexdata[5]=s;
    hexdata[6]=hexdata[0]+hexdata[1]+hexdata[2]+hexdata[3]+hexdata[4]+hexdata[5];
    Serial2.write(hexdata, 7);
   }
   else if(a==202)
   {    unsigned char hexdata[5]={170,24,1,0,0};
     hexdata[3]=s;
    hexdata[4]=hexdata[0]+hexdata[1]+hexdata[2]+hexdata[3];
    Serial2.write(hexdata, 5);
   }
      else if(a==203)
   {    unsigned char hexdata[5]={170,19,1,0,0};
     hexdata[3]=s;
    hexdata[4]=hexdata[0]+hexdata[1]+hexdata[2]+hexdata[3];
    Serial2.write(hexdata, 5);
   }
    String c= String(Sta[0])+","+ String(Sta[1])+","+ String(Sta[2])+","+ String(Sta[3]);
    server.send(200, "text/plain", c);
    //IRAM_ATTR onTimer();
}
  

void setup()
{
  Serial.begin(115200);
  Serial2.begin(9600);
  Serial.println();
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
  WiFi.mode(WIFI_STA);
  WiFi.setSleep(false);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED)
  {
    delay(500);
    Serial.print(".");
  }
  Serial.println("Connected");
  Serial.print("IP Address:");
  Serial.println(WiFi.localIP());

  server.on("/{}", handleArg1);        //注册链接与回调函数
  server.on("/{}/{}", handleArg2);
  server.begin(); //启动服务器
  Serial.println("Web server started");
  timer = timerBegin(0, 80, true);
  timerAttachInterrupt(timer, &onTimer, true);
  timerAlarmWrite(timer, 500000, true);
  timerAlarmEnable(timer);
  
}

void loop()
{
  server.handleClient(); //处理来自客户端的请求
}
发表于 2020-11-4 17:39 | 显示全部楼层
电脑端是怎么做的?能分享下吗?
 楼主| 发表于 2020-11-4 19:56 | 显示全部楼层
keliyuan 发表于 2020-11-4 17:39
电脑端是怎么做的?能分享下吗?

https://blog.csdn.net/Naisu_kun/article/details/88572129
看看这个就懂了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 10:43 , Processed in 0.083500 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表