物联网听上去是一个高大上的词儿,还有什么大数据、云、智能制造等等,今天我也往这方面稍微靠一靠,这篇文章主要介绍的是通过 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().Any()) { DataTable dt = db.Queryable ().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 ().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 将调试信息输出来,看看是否正确,最终的效果如下图所示:
我也顺应潮流,开通了微信公众号,后续会将博客园的文章同步至公众号!
关注以下公众号,您将获得更多资讯!
如果您觉得该文章对您有帮助,请帮忙点个赞,感谢!!