zoukankan      html  css  js  c++  java
  • 生产追溯系统-Wifi+传感器,实现计数器以及监控机器是否停止

    物联网听上去是一个高大上的词儿,还有什么大数据、云、智能制造等等,今天我也往这方面稍微靠一靠,这篇文章主要介绍的是通过 wifi 模块与传感器组合,实现感应计数器,应用场景主要如下:

    1.统计 SMT 机器过板数量。

    2.监测 SMT 机器是否停止运行。

    3.AGV障碍物感应预警。

    在此之前我们需要准备必备的硬件,wifi模块与传感器,分别如下图所示:

    传感器 + wifi

    接线方式如下:

    3V --> 3V/5V

    OUT-->15

    GND-->SND

    开发工具为 Arduion 1.8.9,打开工具之后我们开始编程,主要代码如下:

    void loop(){
        display.clear(); 
        display.drawString(0, 16, WiFi.localIP().toString()); //显示 IP 地址
     
         
        display.display();
        delay(300);
     
        
      }
    void setup()
    {
        display.init();
        display.flipScreenVertically();
        display.setFont(ArialMT_Plain_16); //设置字体
        display.clear();      
        display.drawString(0, 0, id);
        display.drawString(0, 20, "...");
        display.display();
        while(WiFiMulti.run() != WL_CONNECTED) { 
             delay(500);   
        }
        
        Serial.begin(115200);
        delay(10);  
     
        Serial.print(digitalRead(16));
        delay(5000);    
        attachInterrupt(16, CountTimes, FALLING); //触发条件
    
    }

    Api代码比较简单,一个写入数据一个读取数据:

     public string SaveData(System.Web.HttpContext app)
            {
                System.Web.HttpRequest req = app.Request;
    
                var db = Entity.SqlDB.GetInstance("mts");
                int i = 0;
                Entity.WIFI_AUTO_COUNT wic = new Entity.WIFI_AUTO_COUNT();
                if (db.Queryable<Entity.WIFI_AUTO_COUNT>().Any())
                {
                    DataTable dt = db.Queryable<Entity.WIFI_AUTO_COUNT>().ToDataTable();
                    int curr_times = Convert.ToInt32(dt.Rows[0][0].ToString());
                    wic.TIMES = (curr_times + 1).ToString();
                    i = db.Updateable(wic)
                           .UpdateColumns(it => new { it.TIMES })
                           .Where(it => it.FID == "test_key")
                           .ExecuteCommand();
                }
                else
                {
                    wic.FID = "test_key";
                    wic.TIMES = "1";
    
                    i = db.Insertable(wic).ExecuteCommand();
                }
    
                MesLog.Logs.AddHourLog(req.Url.ToString());
                return "ok";
            }
    
    
            public string GetData(System.Web.HttpContext app)
            {
                System.Web.HttpRequest req = app.Request;
    
                var db = Entity.SqlDB.GetInstance("mts");
    
                var json = db.Queryable<Entity.WIFI_AUTO_COUNT>().Select(it => new { Times = it.TIMES }).ToJson(); 
    
                if (req["callback"] != null)
                {
                    return req["callback"].Trim() + "([" + json + "])";//支持Jsonp
                }
    
    
                return json;
            }

    wifi连接这一部分可以选择固定IP地址以及网关,也可以采用自动获取,Api 需要根据实际需求来编写,接收客户端的调用。

    将资料写入至模块以后,我们可以通过Arduion 里面的工具-->Serial Monitor 将调试信息输出来,看看是否正确,最终的效果如下图所示:

    我也顺应潮流,开通了微信公众号,后续会将博客园的文章同步至公众号!

    关注以下公众号,您将获得更多资讯!

    如果您觉得该文章对您有帮助,请帮忙点个赞,感谢!!

  • 相关阅读:
    单链表反转的2种常见方法
    LeetCode解题报告:Reorder List
    LeetCode解题报告:Binary Tree Postorder Traversal
    LeetCode解题报告:LRU Cache
    LeetCode解题报告:Insertion Sort List
    Java编程杂记
    如何对一个不断更新的HashMap进行排序
    Python快速入门
    Html与CSS快速入门01-基础概念
    JVM快速入门
  • 原文地址:https://www.cnblogs.com/allen0118/p/11051689.html
Copyright © 2011-2022 走看看