用心做好每一件事情!

生产追溯系统-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 将调试信息输出来,看看是否正确,最终的效果如下图所示:

 

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

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

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

 

posted @ 2019-06-19 15:38  无 影  阅读(1477)  评论(3编辑  收藏  举报
作者: Allen【QQ:96966 1314】 网名:无影 出处: http://www.cnblogs.com/allen0118/ 声明: 本文版权归作者和博客园共有!转载时必须保留此段声明,且在文章页面明显位置给出原文连接。