查看: 986|回复: 5

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

[复制链接]
  • TA的每日心情

    2020-3-9 06:02
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    发表于 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
  • TA的每日心情
    开心
    2020-12-22 13:44
  • 签到天数: 89 天

    [LV.6]常住居民II

    发表于 2020-11-3 21:24 | 显示全部楼层
    图没啥看的,吧程序发来看看
  • TA的每日心情

    2020-3-9 06:02
  • 签到天数: 6 天

    [LV.2]偶尔看看I

     楼主| 发表于 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(); //处理来自客户端的请求
    }
  • TA的每日心情
    开心
    2021-1-27 10:54
  • 签到天数: 660 天

    [LV.9]以坛为家II

    发表于 2020-11-4 17:39 | 显示全部楼层
    电脑端是怎么做的?能分享下吗?
  • TA的每日心情

    2020-3-9 06:02
  • 签到天数: 6 天

    [LV.2]偶尔看看I

     楼主| 发表于 2020-11-4 19:56 | 显示全部楼层
    keliyuan 发表于 2020-11-4 17:39
    电脑端是怎么做的?能分享下吗?

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

    本版积分规则

    热门推荐

    (开源)微信小程序控制esp8266,可远程
    (开源)微信小程序控制es
    流程说明:首先要使esp8266能够联网,能联网就可以控制,使用示例程序,修改WIFI、
    arduino封装了一个无线串口模块LC12S的操作库
    arduino封装了一个无线串
    前一段时间接触到一个比较好用的2.4G无线串口通信模块LC12S, 在淘宝上仅四五块钱,收
    【花雕动手做】快餐盒盖,极低成本搭建机器人实验平台
    【花雕动手做】快餐盒盖,
    吃完快餐粥,除了粥的味道不错之外,我对个快餐盒的圆盖子产生了兴趣,能否做个极低成
    全新AVR芯片ATMEGA328P烧录程序的教程
    全新AVR芯片ATMEGA328P烧
    潜水多年,觉得有义务贡献一些内容,此贴作为最近学习Arduino的一个总结。 玩Arduino
    【Arduino】168种传感器模块系列实验(90)--- ULN2003步进电机
    【Arduino】168种传感器模
    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表