生產追溯系統-Wifi+傳感器,實現計數器以及監控機器是否中止

物聯網聽上去是一個高大上的詞兒,還有什麼大數據、雲、智能製造等等,今天我也往這方面稍微靠一靠,這篇文章主要介紹的是經過 wifi 模塊與傳感器組合,實現感應計數器,應用場景主要以下:git

1.統計 SMT 機器過板數量。編程

2.監測 SMT 機器是否中止運行。json

3.AGV障礙物感應預警。api

 

在此以前咱們須要準備必備的硬件,wifi模塊與傳感器,分別以下圖所示:微信

傳感器 + wifiapp

 

接線方式以下:工具

3V --> 3V/5Voop

OUT-->15開發工具

GND-->SND字體

 

開發工具爲 Arduion 1.8.9,打開工具以後咱們開始編程,主要代碼以下:

#include "SSD1306Wire.h"     這相似C#裏面的引用
#include <WiFiMulti.h>
#include <HTTPClient.h>

char* ssid = "";     // wifi 名稱
char* password = ""; // wifi 密碼


void loop(){
    display.clear(); 
    display.drawString(0, 16, WiFi.localIP().toString()); //顯示 IP 地址
 
     
    display.display();
    delay(300);

    
      String url="http://192.168.1.166/api.ashx"; 
      
      HTTPClient http;        
      http.begin(url);   
       
      int httpCode = http.GET();     
   
      if(httpCode > 0){
        Serial.println("Submitted");
      }
      if(httpCode==200){
        Serial.println("Result OK");
      }    
      http.end();
    
  }
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 將調試信息輸出來,看看是否正確,最終的效果以下圖所示:

 

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

關注如下公衆號,您將得到更多資訊!

若是您以爲該文章對您有幫助,請幫忙點個贊,感謝!!

相關文章
相關標籤/搜索