用心做好每一件事情!

生产追溯系统-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 @   无 影  阅读(1526)  评论(3编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
作者: Allen【QQ:96966 1314】 网名:无影 出处: http://www.cnblogs.com/allen0118/ 声明: 本文版权归作者和博客园共有!转载时必须保留此段声明,且在文章页面明显位置给出原文连接。
点击右上角即可分享
微信分享提示