今天我们将进入到Esp32结合Line的推播服务(开始变得有趣起来了呢!)相信这应该也是大部份小夥伴期待已久的系列内容吧?! 这篇会使用到Esp32s的STA模式,那在前几张说过,此次会见证到STA的真正功能,那就继续往下看,因为此次还需要使用到Line的服务,所以准备事情较多,那就废话不多说,往主题Let's Go~
※本章节需使用到Line帐号。
- 调整Arduino IDE中Esp32的版本
- 下载Line Notify函式库
- 登入Line Notify取得Token
第1点,降Esp32版本可至开发板管理员输入Esp32,调整Esp32的版本,请将版本调整至1.0.3。(如不懂可至「Day4 Arduino测试烧录」,当中就有介绍如何选择指定版本)
图片取自:使用者拍摄
第2点,取得Line Notify函式库,可至Arduino IDE的程序库管理员打上Line Notify安装。(如不懂可至「程序码讲解Part-2」,当中有提提到如何安装函式库)
图片取自:使用者拍摄
第3点,登入Line Notify取得Token
请先打开浏览器,并搜寻Line Notify,进入页面後点击登入。
图片取自:Line Notify
登入後,点击相同地方,选择个人页面
图片取自:Line Notify
点击发行权杖
图片取自:Line Notify
当出现这画面时,就是开始申请权杖(Token),所以请先输入名称,及选择透过1对1聊天接收Line Notify的通知,都选择好後点击发行
图片取自:Line Notify
发行後,会看到这样一条序号,这序号就是你的权杖(Token),请先把这权杖复制起来,等等会使用到
※这边要注意,该权杖只会显示这次,所以请先把这权杖记录起来,尽量复制起来贴上记事本上
图片取自:Line Notify
申请完权杖後,会看见多了一条,那就代表成功罗,那右方解除就是当你不想使用时就可解除。
图片取自:Line Notify
图片取自:使用者绘制
- Esp32s GND -> St01(C) -
- Esp32s Vcc(5V) -> St01(C) +
- Esp32s 22 -> St01(C) SCL
- Esp32s 21 -> St01(C) SDA
需更改ssid及password的数值,还有LINE_TOKEN中的数值(贴上刚才申请的LINE权杖),都设定好後就可烧录。
#include <WiFi.h>
#include <WiFiClient.h>
#include <TridentTD_LineNotify.h>
#include <AHT10.h>
#include <Wire.h>
uint8_t readStatus = 0;
AHT10 myAHT10(AHT10_ADDRESS_0X38);
// 修改成上述寄到登入邮箱的 Token权杖号码
#define LINE_TOKEN "jYTanwRtmAwnwevAWbBhU35RKhEq2OXAxxxxxxxxxxx"
// 设定无线基地台SSID跟密码
const char* ssid = "xxxx";
const char* password = "xxxxxxxx";
float humidity, temp_f; // 从 AHT10 读取的值
unsigned long previousMillis = 0; // will store last temp was read
const long interval = 2000; // interval at which to read sensor
// 用不到以下两个变数
// const char* host = "notify-api.line.me";
// const int httpsPort = 443;
void setup(void)
{
Serial.begin(115200); // 设定速率 感测器
myAHT10.begin(); // 初始化
WiFi.mode(WIFI_STA);
// 连接无线基地台
WiFi.begin(ssid, password);
Serial.print("\n\r \n\rWorking to connect");
// 等待连线,并从 Console显示 IP
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("DHT Weather Reading Server");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
}
void loop(void)
{
// 量测间等待至少 2 秒
unsigned long currentMillis = millis();
if(currentMillis - previousMillis >= interval) {
// 将最後读取感测值的时间纪录下来
previousMillis = currentMillis;
// 读取温度大约 250 微秒!
humidity = myAHT10.readHumidity(); // 读取湿度(百分比)
delay(100);
temp_f = myAHT10.readTemperature(); // 读取温度(华氏)
delay(100);
// 检查两个值是否为空值
if (isnan(humidity) || isnan(temp_f)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
}
String tempe="温度:"+String(temp_f)+"℃";
String humid="湿度:"+String(humidity)+"%";
// 显示 Line版本
Serial.println(LINE.getVersion());
LINE.setToken(LINE_TOKEN);
// 先换行再显示
LINE.notify("\n" + tempe + " ;" + humid);
// 每2分钟发送一次(delay120000)
delay(10000);
}
如果上述都完成且正确,那就会开始收到Line Notify所传输的数值,那跟之前一样可以尝试触碰AHT10查看数值变化状态。
图片取自:使用者拍摄
好了,今天介绍了使用Esp32s的STA mode 加上 AHT10 并透过LINE Notify的服务,达到可以传送温湿度数值到手机上,不知大家这种传输有没有兴趣,除连自己手机外,也可以将这作品放在家中,并连接家中的WiFi分享器,就可以时刻接受到家中温湿度,希望大家看完这篇会有收获,那就明天见罗。
<<: Day24 AWS - Route53 & Domain name
>>: Day19:Flow 准备好输出了吗?使用 Terminal operators 产生结果吧。
在之前有说到为甚麽会有这张去 Monitor SEO 的数字总表,一开始只是要记录一个简单的事:平均...
Laravel 的 MVC 架构 Controller 负责接收并处理由 Routes 转发来的请求...
前言 JS 30 是由加拿大的全端工程师 Wes Bos 免费提供的 JavaScript 简单应用...
好拉 昨天算是一个里程碑, 游戏的核心也快完成了。 来修复一下 可以出手牌没有的牌的 bug 先把 ...
Hello 大家, 分类的的部分先介绍到一个段落, 今天先拿一个实例来跟大家介绍, 就拿我最近很常用...