https://halckemy.s3.amazonaws.com/uploads/attachments/945916/att-cover-video-.compressed-1.mp4
你会学到什么 - 使用指纹传感器
- 使用 NodeMCU 在 ThingSpeak 上上传数据
- 使用指纹传感器和 Arduino 制作考勤设备
什么是 ThingSpeak?
IoT(物联网)设想了一个世界,其中许多事物都连接到互联网,与个人和其他设备进行交互,并且通常会将数据上传到云端进行分析。
ThingSpeak 是一个物联网平台,可让您在云计算中显示和收集实时数据。
与 ThingSpeak 交互并上传数据
按照以下步骤启动 ThingSpeak 连接:
第 1 步 ) 进入 ThingSpeak.com 网站并创建一个帐户。
第 2 步 ) 激活您的帐户后登录并点击新频道 在我的频道 部分。
第 3 步 ) 在为您打开的新窗口中,写下面板的名称和任何必要的描述。通过分配名称来确定您需要的字段数。其余部分是可选的。完成信息后保存面板。
第 4 步 ) 现在转到 API 密钥 在您的面板中。
步骤 5 ) 您需要频道 ID 和编写 API 密钥 传输数据,所以写下来。
步骤 6) 下载 ThingSpeak 库并将其添加到您的 Arduino IDE。
ThingSpeak 图书馆
步骤 7) 转到 Arduino IDE。打开 WriteMultipleFiels 从示例部分并输入 SSID、密码、通道 ID 和写入 API 密钥值。
/* WriteMultipleFields 描述:每 20 秒在单个 Thingspeak 更新中将值写入字段 1、2、3、4 和状态。硬件:基于 ESP8266 的开发板!!!重要 - 使用您的网络连接和 Thingspeak 频道详细信息修改此项目的 secrets.h 文件。 !!!注意: - 需要 ESP8266WiFi 库和 ESP8622 开发板插件。有关详细信息,请参阅 https://github.com/esp8266/Arduino。 - 从 Tools->Board 菜单中选择目标硬件 - 此示例是为使用 WPA 加密的网络编写的。对于 WEP 或 WPA,相应地更改 WiFi.begin() 调用。 Thingspeak ( https://www.Thingspeak.com ) 是一项分析物联网平台服务,可让您聚合、可视化和分析云中的实时数据流。访问 https://www.Thingspeak.com 注册一个免费帐户并创建一个频道。 Arduino Thingspeak 通信库的文档位于安装该库的 README.md 文件夹中。有关完整的 Thingspeak 文档,请参阅 https://www.mathworks.com/help/Thingspeak/index.html。有关许可信息,请参阅随附的许可文件。版权所有 2018,The MathWorks, Inc.*/#include "Thingspeak.h"#include "secrets.h"#include char ssid[] =SECRET_SSID; // 您的网络 SSID(名称) char pass[] =SECRET_PASS; // 你的网络密码int keyIndex =0; // 您的网络密钥索引号(仅 WEP 需要)WiFiClient 客户端;unsigned long myChannelNumber =SECRET_CH_ID;const char * myWriteAPIKey =SECRET_WRITE_APIKEY;// 初始化我们的值 int number1 =0;int number2 =random(0,100);int number3 =random (0,100);int number4 =random(0,100);String myStatus ="";void setup() { Serial.begin(115200); // 初始化串口 WiFi.mode(WIFI_STA); Thingspeak.begin(客户端); // 初始化 Thingspeak}void loop() { // 连接或重新连接到 WiFi if(WiFi.status() !=WL_CONNECTED){ Serial.print("Attempting to connect to SSID:"); Serial.println(SECRET_SSID); while(WiFi.status() !=WL_CONNECTED){ WiFi.begin(ssid, pass); // 连接到 WPA/WPA2 网络。如果使用 open 或 WEP 网络,请更改此行 Serial.print(".");延迟(5000); } Serial.println("\n已连接。"); } // 使用值设置字段 Thingspeak.setField(1, number1); Thingspeak.setField(2, number2); Thingspeak.setField(3, number3); Thingspeak.setField(4, number4); // 找出状态信息 if(number1> number2){ myStatus =String("field1 is大于 field2"); } else if(number1 99){ 数字 1 =0; } number2 =随机(0,100); number3 =随机(0,100); number4 =随机(0,100);延迟(20000); // 等待 20 秒再次更新频道}
上传代码后,您会在面板的字段 1 到 4 中看到一些上传的随机数。考勤系统使用相同的结构化代码上传数据。
注意
每次在 ThingSpeak 面板上上传数据之间至少等待 15 秒。
使用指纹传感器和Arduino创建考勤系统
该系统通过指纹登记人员进出后,将员工的日期、姓名、到达时间、出发时间、工作时间等信息存储在SD卡上。然后,此信息将在您指定的时间发送到 ThingSpeak。在没有 Internet 连接的情况下,未发布的数据会被存储起来,一旦连接到 Internet,就会被转发到 ThingSpeak。由于信息存储在微控制器的EEPROM中,因此在停电的情况下不会丢失。
电路
连接好所有模块后,将液晶屏放在Arduino上。
提示
由于 LCD Shield 覆盖了一些 Arduino 引脚,如果您需要这些引脚,您可以将电线从电路板底部连接到特定的引脚。
代码
此代码需要以下库:
Adafruit-指纹-传感器-库
Adafruit-GFX-库
MCUFRIEND_kbv
RTClib
现在下载以下代码并将其上传到您的 Arduino。此代码是为具有默认名称的 11 个人编写的,但您可以更改它们并将其从默认模式中删除。要注册新名称,只需将设备连接到您的计算机并按 键进入注册模式,然后打开串行监视器并按照串行监视器上显示的注册过程进行操作。
从附件下载代码:
您可以在以下链接中了解有关使用 SD 卡、时钟模块和 LCD 的更多信息:
带 Arduino 的 SD 卡模块:如何读/写数据
Arduino DS1307 RTC模块使用方法及注意事项
Arduino TFT LCD 显示器绝对初学者指南。
NodeMCU在本系统中执行上传信息的任务。它通过串口从Arduino获取上传信息并返回上传状态 到阿杜诺。在您的 NodeMCU 上上传以下代码。
#include "Thingspeak.h"#include ESP8266WiFi.h>char ssid[] ="YOUR SSID";char pass[] ="SSID PASSWORD";WiFiClient client;unsigned long myChannelNumber =YOUR CHANNEL ID; const char * myWriteAPIKey ="YOUR CHANNEL WRITE API KEY";String Final ="";String Date ="";String Enter ="";String Exit ="";String Name ="";String WT ="";void String_Analyze(String input) { int index1, index2, index3, index4; index1 =input.indexOf('*', 0); index2 =input.indexOf('*', index1 + 1); index3 =input.indexOf('*', index2 + 1); index4 =input.lastIndexOf('*');名称 =输入;日期 =输入;输入 =输入;退出 =输入; WT =输入; Name.remove(index1); Date.remove(index2); Date.remove(0, index1 + 1); Enter.remove(index3); Enter.remove(0, index2 + 1); Exit.remove(index4); Exit.remove(0, index3 + 1); WT.remove(0, index4 + 1);}void Get_String(){ while (Serial.available()) { Final =Serial.readString(); // 将传入数据读取为字符串 //Serial.println(Final); }}void setup() { Serial.begin(9600); WiFi.mode(WIFI_STA); Thingspeak.begin(客户端); pinMode(LED_BUILTIN,输出); digitalWrite(LED_BUILTIN, HIGH);}void loop() { if (WiFi.status() !=WL_CONNECTED) { //Serial.print("Attempting to connect to SSID:"); // Serial.println(ssid);而 (WiFi.status() !=WL_CONNECTED) { WiFi.begin(ssid, pass); // 连接到 WPA/WPA2 网络。如果使用 open 或 WEP 网络,请更改此行 Serial.print("0");延迟(5000); } } 数字写入(LED_BUILTIN,低); //Serial.println("\n已连接。"); Get_String(); String_Analyze(最终); if (!Final.equals("")) { Thingspeak.setField(1, Date); Thingspeak.setField(2, Name); Thingspeak.setField(3, Enter); Thingspeak.setField(4, Exit); Thingspeak.setField(5, WT); int x =Thingspeak.writeFields(myChannelNumber, myWriteAPIKey);如果(x ==200){延迟(100); Serial.print("1"); } else { 延迟(100); Serial.print("0"); } 延迟(17000);最后=“”; }
首先,更改频道 ID 和编写 API 密钥 根据您的 ThingSpeak 面板。
String_Analuze();
此代码中的函数将 NodeMCU 输入字符串划分为日期、名称、到达和离开时间以及工作时间,并将这些信息发送到 ThingSpeak。然后如果上传成功则发送字符“1”,否则发送字符“0”给Arduino。
组装考勤机
您可以使用以下地图和不同颜色的有机玻璃或任何其他材料来构建考勤机的主体。
从附件下载设备机身激光切割图:
放置电子元件并组装整个机身后,将其安装在所需的位置。现在,只需将 12V 适配器插入设备即可开始工作。
下一步是什么? - 尝试在 LCD 上使用更多图标。
- 尝试向系统添加 RFID 选项。
- 尝试上传 google 电子表格上的数据 而不是 ThingSpeak .
如果您觉得本教程有用且有趣,请点赞我们 脸书。