生產追溯系統-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 將調試信息輸出來,看看是否正確,最終的效果如下圖所示:

 

我也順應潮流,開通了微信公眾號,后續會將博客園的文章同步至公眾號!

關注以下公眾號,您將獲得更多資訊!

如果您覺得該文章對您有幫助,請幫忙點個贊,感謝!!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM