[Day23] Esp32 + LINE

1.前言

今天我们将进入到Esp32结合Line的推播服务(开始变得有趣起来了呢!)相信这应该也是大部份小夥伴期待已久的系列内容吧?! 这篇会使用到Esp32s的STA模式,那在前几张说过,此次会见证到STA的真正功能,那就继续往下看,因为此次还需要使用到Line的服务,所以准备事情较多,那就废话不多说,往主题Let's Go~
※本章节需使用到Line帐号。

2.准备事项

  1. 调整Arduino IDE中Esp32的版本
  2. 下载Line Notify函式库
  3. 登入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

3.接线图

图片取自:使用者绘制

  • Esp32s GND -> St01(C) -
  • Esp32s Vcc(5V) -> St01(C) +
  • Esp32s 22 -> St01(C) SCL
  • Esp32s 21 -> St01(C) SDA

4.程序码

需更改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);
}

5.操作画面

如果上述都完成且正确,那就会开始收到Line Notify所传输的数值,那跟之前一样可以尝试触碰AHT10查看数值变化状态。

图片取自:使用者拍摄

欢迎交流

好了,今天介绍了使用Esp32s的STA mode 加上 AHT10 并透过LINE Notify的服务,达到可以传送温湿度数值到手机上,不知大家这种传输有没有兴趣,除连自己手机外,也可以将这作品放在家中,并连接家中的WiFi分享器,就可以时刻接受到家中温湿度,希望大家看完这篇会有收获,那就明天见罗。


<<:  Day24 AWS - Route53 & Domain name

>>:  Day19:Flow 准备好输出了吗?使用 Terminal operators 产生结果吧。

从 IT 技术面细说 Search Console 的 27 组数字 KPI (20) :KPI 总表,从历史说起

在之前有说到为甚麽会有这张去 Monitor SEO 的数字总表,一开始只是要记录一个简单的事:平均...

Laravel 的 MVC 与 Router

Laravel 的 MVC 架构 Controller 负责接收并处理由 Routes 转发来的请求...

Day 6 - Ajax Type Ahead

前言 JS 30 是由加拿大的全端工程师 Wes Bos 免费提供的 JavaScript 简单应用...

15 修bug兼整理

好拉 昨天算是一个里程碑, 游戏的核心也快完成了。 来修复一下 可以出手牌没有的牌的 bug 先把 ...

Day17 iPhone捷径-实联制简讯

Hello 大家, 分类的的部分先介绍到一个段落, 今天先拿一个实例来跟大家介绍, 就拿我最近很常用...