資料介紹
描述
這個(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)行管理。
我用白色 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。
為了對(duì) ESP-01 進(jìn)行編程,我在 USB-TTL 設(shè)備上添加了復(fù)位和編程模式按鈕,并且我還在面包板上安裝了一個(gè)備用設(shè)備。您可以找到提供的源代碼。
在這張照片上,您可以查看我的標(biāo)牌定制硬件的電子設(shè)備,它包括:
- 18650電池及其座
- 18650充電保護(hù)板
- ESP - 01 帶有 BS170 開(kāi)關(guān)在引腳 2
- 從手電筒中回收的 LED 面板
- 開(kāi)/關(guān)
對(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)存。
當(dāng)解析今天的會(huì)議列表時(shí),我確定了當(dāng)前(或下一個(gè))正在發(fā)生的會(huì)議并將其顯示在屏幕上。在那一刻,Oplà 套件將布爾變量 onAir 設(shè)置為 true,如果標(biāo)志打開(kāi),則它開(kāi)始發(fā)光。
頂部的按鈕直接控制 on Air 標(biāo)志。當(dāng)它為紅色時(shí),表示 On Air 標(biāo)志已打開(kāi):
通過(guò)使用按鈕,我可以提前結(jié)束實(shí)際會(huì)議,因此標(biāo)志關(guān)閉,LED 切換為綠色。我還可以瀏覽會(huì)議列表。
對(duì)于該項(xiàng)目的進(jìn)一步升級(jí),我正在考慮啟用 Oplà 工具包來(lái)編輯 Google 日歷上的會(huì)議,例如安排新會(huì)議,并使用第二個(gè) Oplà 工具包 - 為我的妻子 - 作為輔助設(shè)備。
- 物聯(lián)網(wǎng)空中標(biāo)志開(kāi)源硬件
- AURACASR藍(lán)牙品牌指南和標(biāo)志文件
- AD5940評(píng)估套件使用方法.ppt 21次下載
- EVAL-AD5940評(píng)估套件用戶指南 9次下載
- Pegasus智能家居開(kāi)發(fā)套件_2021
- Neptune開(kāi)發(fā)套件_2021
- Taurus AI Camera開(kāi)發(fā)套件_2021
- YNH-950 人臉識(shí)別亞克力套件規(guī)格書(shū)
- YNH-350 人臉識(shí)別亞克力套件規(guī)格書(shū)
- 基于航跡數(shù)據(jù)的空中交通管制自動(dòng)化系統(tǒng) 7次下載
- LoRa技術(shù)評(píng)估套件用戶指南 27次下載
- ST電機(jī)控制開(kāi)發(fā)套件5.0 27次下載
- 智慧城市中標(biāo)識(shí)技術(shù)發(fā)展和應(yīng)用 27次下載
- ce標(biāo)志下載
- TDMA空中接口技術(shù) 0次下載
- FreeRTOS的事件標(biāo)志組 1141次閱讀
- 如何進(jìn)行FFT IP配置和設(shè)計(jì) 2474次閱讀
- DeepStream智能分析套件的安裝方法 1800次閱讀
- 西門子PLC的內(nèi)部標(biāo)志與寄存器 1.4w次閱讀
- 什么是物聯(lián)網(wǎng)開(kāi)發(fā)套件?如何挑選物聯(lián)網(wǎng)開(kāi)發(fā)套件 5261次閱讀
- dfrobotmicro:bit造物粒子入門套件簡(jiǎn)介 4402次閱讀
- dfrobot Arduino套件介紹 2260次閱讀
- dfrobot 空中飛鼠鍵盤介紹 2860次閱讀
- dfrobotArduino官方配套套件 1403次閱讀
- 關(guān)于標(biāo)志寄存器的各個(gè)標(biāo)志 6293次閱讀
- 標(biāo)志寄存器的概念 4747次閱讀
- 單片機(jī)C語(yǔ)言中標(biāo)志位的經(jīng)典應(yīng)用,讓你快速學(xué)會(huì)單片機(jī)C語(yǔ)言 7322次閱讀
- 賽靈思Vivado設(shè)計(jì)套件震撼登場(chǎng) 1885次閱讀
- 空中鼠標(biāo)原理及問(wèn)題 8217次閱讀
- 電網(wǎng)中的安全色和安全標(biāo)志 2746次閱讀
下載排行
本周
- 1A7159和A7139射頻芯片的資料免費(fèi)下載
- 0.20 MB | 55次下載 | 5 積分
- 2PIC12F629/675 數(shù)據(jù)手冊(cè)免費(fèi)下載
- 2.38 MB | 36次下載 | 5 積分
- 3PIC16F716 數(shù)據(jù)手冊(cè)免費(fèi)下載
- 2.35 MB | 18次下載 | 5 積分
- 4dsPIC33EDV64MC205電機(jī)控制開(kāi)發(fā)板用戶指南
- 5.78MB | 8次下載 | 免費(fèi)
- 5STC15系列常用寄存器匯總免費(fèi)下載
- 1.60 MB | 7次下載 | 5 積分
- 6模擬電路仿真實(shí)現(xiàn)
- 2.94MB | 4次下載 | 免費(fèi)
- 7PCB圖繪制實(shí)例操作
- 2.92MB | 2次下載 | 免費(fèi)
- 8零死角玩轉(zhuǎn)STM32F103—指南者
- 26.78 MB | 1次下載 | 1 積分
本月
- 1ADI高性能電源管理解決方案
- 2.43 MB | 452次下載 | 免費(fèi)
- 2免費(fèi)開(kāi)源CC3D飛控資料(電路圖&PCB源文件、BOM、
- 5.67 MB | 141次下載 | 1 積分
- 3基于STM32單片機(jī)智能手環(huán)心率計(jì)步器體溫顯示設(shè)計(jì)
- 0.10 MB | 137次下載 | 免費(fèi)
- 4A7159和A7139射頻芯片的資料免費(fèi)下載
- 0.20 MB | 55次下載 | 5 積分
- 5PIC12F629/675 數(shù)據(jù)手冊(cè)免費(fèi)下載
- 2.38 MB | 36次下載 | 5 積分
- 6如何正確測(cè)試電源的紋波
- 0.36 MB | 19次下載 | 免費(fèi)
- 7PIC16F716 數(shù)據(jù)手冊(cè)免費(fèi)下載
- 2.35 MB | 18次下載 | 5 積分
- 8Q/SQR E8-4-2024乘用車電子電器零部件及子系統(tǒng)EMC試驗(yàn)方法及要求
- 1.97 MB | 8次下載 | 10 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935121次下載 | 10 積分
- 2開(kāi)源硬件-PMP21529.1-4 開(kāi)關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
- 1.48MB | 420062次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233088次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191367次下載 | 10 積分
- 5十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183335次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81581次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73810次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65988次下載 | 10 積分
評(píng)論
查看更多