吴忠躺衫网络科技有限公司

電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>使用Oplà套件進(jìn)行空中標(biāo)志

使用Oplà套件進(jìn)行空中標(biāo)志

2022-10-31 | zip | 0.01 MB | 次下載 | 免費(fèi)

資料介紹

描述

這個(gè)項(xiàng)目的想法是在新冠病毒封鎖期間誕生的,當(dāng)時(shí)在家工作是新常態(tài)。這種實(shí)現(xiàn)是為 Arduino Cloud Games 制作的。

該項(xiàng)目有兩個(gè)設(shè)備:

  • Arduino Oplà IOT Kit 作為主要設(shè)備,它從谷歌日歷中獲取會(huì)議信息當(dāng)會(huì)議正在進(jìn)行時(shí),它會(huì)打開(kāi)標(biāo)志,并可以提前結(jié)束。
  • on Air Sign 作為輔助設(shè)備,放置在我們的家庭辦公室門周圍,并在會(huì)議進(jìn)行時(shí)點(diǎn)亮。可選,因?yàn)?Oplà 套件本身可用于此目的,否則任何支持 IOT 的設(shè)備都可以重新用于此功能。

對(duì)于連接,它利用 Arduino IOT Cloud 并實(shí)現(xiàn)物對(duì)物通信

我為 ESP8266 創(chuàng)建了一個(gè)東西,并將一個(gè)變量定義為布爾值。該變量用于打開(kāi)和關(guān)閉廣播標(biāo)志。我還創(chuàng)建了一個(gè)儀表板來(lái)通過(guò)我的手機(jī)對(duì)其進(jìn)行管理。

pYYBAGNYt8GAEDudAACJE8RJcu8864.png
?

我用白色 PLA 打印了一個(gè)外殼,并使用 2 種顏色的 PLA 打印了標(biāo)簽,在第一層后停止打印機(jī)并手動(dòng)切換燈絲,因?yàn)槲矣幸慌_(tái)擠出機(jī)。我也在用其他類型的外殼做實(shí)驗(yàn),它們也很好用(例如帶彩繪玻璃的木箱)。

之后,我通過(guò)回收手電筒中的 LED 面板來(lái)構(gòu)建電路。您可以按照原理圖復(fù)制或構(gòu)建自己的電路。ESP8266 的代碼已附加,它使用來(lái)自 IOT Cloud 的布爾變量后面的端口 2。

poYBAGNYt8WAI2tlAANUw1nfXEs384.jpg
?

為了對(duì) ESP-01 進(jìn)行編程,我在 USB-TTL 設(shè)備上添加了復(fù)位和編程模式按鈕,并且我還在面包板上安裝了一個(gè)備用設(shè)備。您可以找到提供的源代碼。

poYBAGNYt8mAIdJuAALRu-shImM476.jpg
?

在這張照片上,您可以查看我的標(biāo)牌定制硬件的電子設(shè)備,它包括:

  • 18650電池及其座
  • 18650充電保護(hù)板
  • ESP - 01 帶有 BS170 開(kāi)關(guān)在引腳 2
  • 從手電筒中回收的 LED 面板
  • 開(kāi)/關(guān)
pYYBAGNYt8yAd9XTAAMijZEVLvg348.jpg
?

對(duì)于 Oplà 套件,我創(chuàng)建了具有相同變量并配置為同步的第二個(gè)事物。

一旦我的工具包連接到我的 wifi 和 Arduino Cloud,它就會(huì)使用秘密 url(這種技術(shù)也稱為魔法 cookie url)以 iCal 格式獲取 Google 日歷提要,需要幾個(gè)周期來(lái)弄清楚如何進(jìn)行 HTTPS 請(qǐng)求和下載沒(méi)有 SD 卡的文件(超過(guò) 100kb),并以有限的內(nèi)存解析文件內(nèi)容。或者,這可以通過(guò)在 Raspberry Pi 上使用 Google 腳本或自定義代碼來(lái)完成。

#include 
#include 
#include 
char server[] = "calendar.google.com";
WiFiClient client;
int port = 443;
void sendRequestICalendarFeed() {
  if (client.connectSSL(server, port)) {
    String get("GET /calendar/ical/");
    get += SECRET_ICALENDAR;
    get += "/basic.ics HTTP/1.1";
    client.println(get);
    client.println("Host: calendar.google.com");
    client.println("Connection: close");
    client.println();
  }
}
void readICalendarFeed() {
  while (client.connected()) {
    String line = client.readStringUntil('\n');
    if (line == "0\r") {
      // end of response
      break;
    }
    // parsing response...
  }
}

解析邏輯如下:

struct Event {
 public:
    String dtstart;
    String dtend;
    String dtstamp;
    String uid;
    String created;
    String description;
    String lastModified;
    String location;
 int sequence;
    String status;
    String summary;
    String transp;
};
Event events[20];
int event_index = -1;
int event_length = event_index + 1;
void load(WiFiClient client) {
  String line;
  String buffer = "";
  String key;
  String value;
  bool insideEvent = false;
  bool today = false;
  int idx = -1;
  while (client.connected()) {
    String line = client.readStringUntil('\n');
    if (line == "0\r") {
      break;
    }
    if (line.charAt(0) == ' ') {
        // collecting multiline prop
      if (buffer.length() < 100)
        buffer += line.substring(1);
      } else {
        if (buffer != "") {
          // process previous prop
          auto m = buffer.indexOf(':');
          if (m == -1)
            m = buffer.indexOf(';');
          key = buffer.substring(0, m);
          value = buffer.substring(m + 1);
          if (key.compareTo("BEGIN") == 0 && value.compareTo("VEVENT\r") == 0) {
            if (idx < 19){
              idx++;
            }
            insideEvent = true;
          } else if (key.compareTo("END") == 0 && value.compareTo("VEVENT\r") == 0) {
            insideEvent = false;
            if (!is_today(events[idx].dtstart.c_str(), ArduinoCloud.getLocalTime())) {
              idx--;
            }
          } else if (key.compareTo("DTSTART") == 0 && insideEvent) {
 events[idx].dtstart = value;
          } else if (key.compareTo("DTEND") == 0 && insideEvent) {
 events[idx].dtend = value;
          } else if (key.compareTo("DTSTAMP") == 0 && insideEvent) {
 events[idx].dtstamp = value;
          } else if (key.compareTo("CREATED") == 0 && insideEvent) {
 events[idx].created = value;
          } else if (key.compareTo("DESCRIPTION") == 0 && insideEvent) {
 events[idx].description = value;
          } else if (key.compareTo("SUMMARY") == 0 && insideEvent) {
 events[idx].summary = value;
          }
          buffer = "";
      }
      buffer = line;
    }
  }
  event_length = idx + 1;
  if (!client.connected()) {
    client.stop();
  }
}

當(dāng)文件內(nèi)容被流式傳輸時(shí),我正在尋找今天安排的會(huì)議,而忽略其余的以適應(yīng)內(nèi)存。

poYBAGNYt9CAV-rVAAOu7f1kSuM735.jpg
?

當(dāng)解析今天的會(huì)議列表時(shí),我確定了當(dāng)前(或下一個(gè))正在發(fā)生的會(huì)議并將其顯示在屏幕上。在那一刻,Oplà 套件將布爾變量 onAir 設(shè)置為 true,如果標(biāo)志打開(kāi),則它開(kāi)始發(fā)光。

pYYBAGNYt9WAEH7kAAKy0hUAz64748.jpg
?

頂部的按鈕直接控制 on Air 標(biāo)志。當(dāng)它為紅色時(shí),表示 On Air 標(biāo)志已打開(kāi):

poYBAGNYt9qACJOEAAH2UhN8aaQ988.jpg
?

通過(guò)使用按鈕,我可以提前結(jié)束實(shí)際會(huì)議,因此標(biāo)志關(guān)閉,LED 切換為綠色。我還可以瀏覽會(huì)議列表。

pYYBAGNYt92ADJkHAALmKbx6RY8331.jpg
?

對(duì)于該項(xiàng)目的進(jìn)一步升級(jí),我正在考慮啟用 Oplà 工具包來(lái)編輯 Google 日歷上的會(huì)議,例如安排新會(huì)議,并使用第二個(gè) Oplà 工具包 - 為我的妻子 - 作為輔助設(shè)備。


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評(píng)論

查看更多

下載排行

本周

  1. 1A7159和A7139射頻芯片的資料免費(fèi)下載
  2. 0.20 MB   |  55次下載  |  5 積分
  3. 2PIC12F629/675 數(shù)據(jù)手冊(cè)免費(fèi)下載
  4. 2.38 MB   |  36次下載  |  5 積分
  5. 3PIC16F716 數(shù)據(jù)手冊(cè)免費(fèi)下載
  6. 2.35 MB   |  18次下載  |  5 積分
  7. 4dsPIC33EDV64MC205電機(jī)控制開(kāi)發(fā)板用戶指南
  8. 5.78MB   |  8次下載  |  免費(fèi)
  9. 5STC15系列常用寄存器匯總免費(fèi)下載
  10. 1.60 MB   |  7次下載  |  5 積分
  11. 6模擬電路仿真實(shí)現(xiàn)
  12. 2.94MB   |  4次下載  |  免費(fèi)
  13. 7PCB圖繪制實(shí)例操作
  14. 2.92MB   |  2次下載  |  免費(fèi)
  15. 8零死角玩轉(zhuǎn)STM32F103—指南者
  16. 26.78 MB   |  1次下載  |  1 積分

本月

  1. 1ADI高性能電源管理解決方案
  2. 2.43 MB   |  452次下載  |  免費(fèi)
  3. 2免費(fèi)開(kāi)源CC3D飛控資料(電路圖&PCB源文件、BOM、
  4. 5.67 MB   |  141次下載  |  1 積分
  5. 3基于STM32單片機(jī)智能手環(huán)心率計(jì)步器體溫顯示設(shè)計(jì)
  6. 0.10 MB   |  137次下載  |  免費(fèi)
  7. 4A7159和A7139射頻芯片的資料免費(fèi)下載
  8. 0.20 MB   |  55次下載  |  5 積分
  9. 5PIC12F629/675 數(shù)據(jù)手冊(cè)免費(fèi)下載
  10. 2.38 MB   |  36次下載  |  5 積分
  11. 6如何正確測(cè)試電源的紋波
  12. 0.36 MB   |  19次下載  |  免費(fèi)
  13. 7PIC16F716 數(shù)據(jù)手冊(cè)免費(fèi)下載
  14. 2.35 MB   |  18次下載  |  5 積分
  15. 8Q/SQR E8-4-2024乘用車電子電器零部件及子系統(tǒng)EMC試驗(yàn)方法及要求
  16. 1.97 MB   |  8次下載  |  10 積分

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935121次下載  |  10 積分
  3. 2開(kāi)源硬件-PMP21529.1-4 開(kāi)關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
  4. 1.48MB  |  420062次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233088次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費(fèi)下載
  8. 340992  |  191367次下載  |  10 積分
  9. 5十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
  10. 158M  |  183335次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81581次下載  |  10 積分
  13. 7Keil工具M(jìn)DK-Arm免費(fèi)下載
  14. 0.02 MB  |  73810次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65988次下載  |  10 積分
百家乐庄闲偏差有多大| 棋牌室管理制度| 喀什市| 百家乐官网赌博彩| 百家乐视频游戏挖坑| 大发888娱乐城真钱游戏| 网上百家乐官网内幕| 百家乐是如何出千的| bet365体育投注| 赢家百家乐官网的玩法技巧和规则| 真让百家乐游戏开户| 皇冠现金网网址| 赌百家乐官网到底能赌博赢| 博彩百家乐字谜总汇二丹东| 澳门百家乐官网心得玩博| 百家乐推二八杠| 烟台市| 百家乐官网游戏单机牌| 百家乐代理合作| 澳门百家乐官网职业赌客| 五星百家乐的玩法技巧和规则| 百家乐官网怎样捉住长开| 百家乐打水论坛| 东乡族自治县| 百家乐平台信誉排名| 黄金城娱乐场| 百家乐视频游戏平台| 利高在线娱乐城| 百家乐视频游戏网站| 米林县| 百家乐必赢外挂软件| 百家乐官网视频游戏平台| 多台百家乐的玩法技巧和规则| 澳门百家乐官网网上赌| 总玩百家乐有赢的吗| 百家乐官网槛| 海南博彩bocai0898| 百家乐官网麻将筹码币| 新利| 百家乐赌场技巧论坛| 百家乐官网扑克发牌器|