物聯網聽上去是一個高大上的詞兒,還有什麼大數據、雲、智能製造等等,今天我也往這方面稍微靠一靠,這篇文章主要介紹的是經過 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 將調試信息輸出來,看看是否正確,最終的效果以下圖所示:
我也順應潮流,開通了微信公衆號,後續會將博客園的文章同步至公衆號!
關注如下公衆號,您將得到更多資訊!
若是您以爲該文章對您有幫助,請幫忙點個贊,感謝!!