電子發(fā)燒友App

硬聲App

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

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

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>Lane Tech PCL亞馬遜Alexa PC啟動和加熱器啟動

Lane Tech PCL亞馬遜Alexa PC啟動和加熱器啟動

2023-02-03 | zip | 0.30 MB | 次下載 | 免費

資料介紹

描述

理念

我的辦公桌在我地下室的凸窗旁邊,因為我的房子真的很舊,那里的絕緣和溫度一直很奇怪,而且總是很冷。出于這個確切的原因,我的辦公桌旁邊有一個空間加熱器。我想創(chuàng)造一種更好的方式來調(diào)節(jié)和控制我的辦公桌設(shè)置,包括我的 PC 和空間加熱器。我選定了一個項目,該項目可以讓我使用家里的 Amazon Alexa Echo Dots 自動執(zhí)行此過程,并使用 Alexa 應(yīng)用程序遠(yuǎn)程觸發(fā)它。我希望能夠告訴 Alexa 我在家,她會通過啟動一切來自動執(zhí)行此過程。我也希望有一些細(xì)微差別,所以我想我可以添加另一個組件來調(diào)節(jié)加熱器,它是以溫度傳感器的形式出現(xiàn)的。

溫度感應(yīng)器

我首先開始設(shè)置溫度傳感器,因為我知道這將是項目的關(guān)鍵組成部分。

tempsensor_XIkUswMOjq.jpg?auto=compress%2Cformat&w=740&h=555&fit=max
?

我使用了 PietteTech 庫并為溫度傳感器創(chuàng)建了一個測試。傳感器的完整測試代碼可以在代碼部分找到:DHT22 溫度傳感器測試。

我遇到了一個問題,如果檢查得太頻繁,傳感器偶爾會偶爾讀取一個荒謬的值,比如 -2 度,所以我知道我必須在以后考慮這個問題。

image_K9YMy6zF40.png?auto=compress%2Cformat&w=740&h=555&fit=max
偶爾的溫度數(shù)據(jù)
?

我的解決方案是保留一個單獨的值,該值僅在有效值時更新

if(currentTime - prevTime > 30000){
        int result = DHT.acquireAndWait(2000);
        serverTemp = DHT.getFahrenheit();
        if(serverTemp>0){
            accurateTemp = serverTemp;
        }    
        Particle.publish("servertemperature", String::format("%.1f", serverTemp));
        Particle.publish("accuratetemperature", String::format("%.1f", accurateTemp));
        prevTime = currentTime;
    }

IFTTT 亞馬遜 Alexa 觸發(fā)器

下一步是將我的 Amazon Alexa 連接到 Webhook post 請求服務(wù),以便與 Particle Argon 交互。我選擇了 IFTTT,并將我的亞馬遜賬戶連接到它并設(shè)置了小程序。

image_AzATDhCH5p.png?auto=compress%2Cformat&w=740&h=555&fit=max
?

為了連接 IFTTT 集成,我使用粒子云和 Spark.function Particle.publish來調(diào)用使用粒子令牌的函數(shù),然后將 Webhook 發(fā)布請求附加到 IFTTT 觸發(fā)器以及我的代碼中的函數(shù)。

局域網(wǎng)喚醒電腦

然后我需要找到一種方法來遠(yuǎn)程啟動我的電腦。我知道這可以使用 Wake On Lan 功能實現(xiàn),但我必須讓它與 Particle 環(huán)境一起工作。幸運的是,我找到了這個項目來幫助我入門。然后我研究了代碼并將其壓縮為僅對我來說是必要的功能。此代碼采用給定的原始 MAC 地址,將其轉(zhuǎn)換為字節(jié),然后通過指定的 MAC 地址將喚醒數(shù)據(jù)包發(fā)送到 PC。完整的測試代碼可以在代碼部分找到:局域網(wǎng)喚醒測試。

其他注意事項:

出于測試目的,我在另一臺計算機上安裝并使用了Homebrew ,以便安裝 wakeonlan 命令并測試獨立于粒子環(huán)境的功能。

我還需要調(diào)整我的 BIOS 和設(shè)置以允許 Wake On Lan 正常運行,并根據(jù)我的主板制造商的說明做了這三件事:

1. 在 BIOS 電源管理菜單中將“EUP 2013”??設(shè)置為禁用。2. 在喚醒事件設(shè)置中啟用“通過 PCI 或 PCI-E 設(shè)備恢復(fù)”。3. 在 Windows 設(shè)備管理器中,進入“網(wǎng)絡(luò)適配器”->“電源管理”選項卡,勾選【允許此設(shè)備喚醒計算機】復(fù)選框。

加熱器功能

我控制加熱器的第一個想法是使用智能插座或繼電器來控制加熱器的插座電源并將其連接到 Alexa。然而,這不是一個選擇,因為我的加熱器有一個數(shù)字而非手動電源開關(guān)這意味著切斷插座電源然后恢復(fù)它不會正確打開和關(guān)閉加熱器。相反,我決定使用紅外信號來控制加熱器,因為它有一個紅外 LED 遙控器作為控制選項,因此我可以以某種方式復(fù)制信號以供我使用。

image_50349057_vnhFQqjLuu.JPG?auto=compress%2Cformat&w=740&h=555&fit=max
我的空間加熱器和紅外遙控器
?

在決定使用紅外通信后,我設(shè)置了一個系統(tǒng)來測試接收和發(fā)送紅外信號,并使用 Arduino 兼容遙控器進行測試。

image_67513857_GT9FKv1BBq.JPG?auto=compress%2Cformat&w=740&h=555&fit=max
紅外發(fā)射 LED 和紅外接收器
?
arduinoremote_W1sdtAxqOe.jpg?auto=compress%2Cformat&w=740&h=555&fit=max
遠(yuǎn)程測試
?

使用這個遙控器和我的 IR 發(fā)送和接收節(jié)點,我能夠成功地復(fù)制從遙控器接收到的 IR 信號。IR 傳輸具有特定的編碼參數(shù)集,這些參數(shù)在大多數(shù)情況下都很常見,可用于輕松復(fù)制信號。這個特定的遙控器使用了 NEC 最常見的編碼。完整的測試代碼可以在代碼部分找到:IR 發(fā)射測試、IR 接收測試和 IR 發(fā)射和接收測試。

當(dāng)我試圖復(fù)制我個人遙控器的信號時,問題就出現(xiàn)了。

image_FURRv1Q1v1.png?auto=compress%2Cformat&w=740&h=555&fit=max
從加熱器遙控器接收到的信號
?

這些信號的復(fù)制要復(fù)雜得多。我不能只是說我要發(fā)送一個 NEC 代碼并給它一個簡單的十六進制值來發(fā)送。只能發(fā)送十六進制值,因為編碼類型已知。經(jīng)過大量研究后,我確定我必須改為從遙控器發(fā)送原始信號,沒有任何簡化值,因為 Lasko 公司的遙控器沒有我可以使用的任何公共編碼類型。我家樓上有一個不同版本的 Lasko 加熱器,證實了我的懷疑,因為那個遙控器也有一個未知的編碼。然后我記錄了來自遙控器的不同原始信號,這些信號控制了我需要的加熱器的所有功能。

unsigned int oncodePower[143] = {1250,415,1250,415,423,1250,1247,448,1223,427,422,1256,423,1258,422,1257,423,1257,421,1257,423,1256,1248,7026,1250,416,1254,412,422,1250,1248,406,1264,427,422,1260,421,1257,423,1257,422,1256,423,1258,422,1256,1249,7066,1251,399,1267,416,421,1249,1250,419,1252,427,422,1260,420,1258,421,1258,423,1257,422,1256,436,1242,1250,7032,1250,416,1250,418,421,1249,1250,420,1250,428,422,1258,423,1256,421,1259,422,1258,422,1257,422,1255,1249,7028,1250,417,1250,416,421,1249,1250,418,1253,425,428,1254,422,1257,423,1257,422,1258,421,1260,419,1257,1248,7028,1248,416,1251,417,420,1250,1251,418,1251,427,422,1259,422,1257,423,1256,423,1267,412,1258,426,1252,1250};
unsigned int oncodeSwitch[119] = {1250,411,1255,411,425,1244,1253,414,1255,421,427,1254,427,1252,428,1250,426,1253,1251,423,427,1253,426,7849,1253,411,1254,417,421,1245,1253,415,1255,422,427,1255,424,1254,426,1252,429,1247,1256,422,427,1253,428,7891,1253,410,1255,410,426,1247,1254,414,1254,423,427,1255,426,1255,424,1255,426,1249,1256,422,428,1251,429,7857,1253,411,1255,411,427,1244,1255,414,1256,419,429,1254,428,1251,428,1255,424,1251,1254,421,428,1253,428,7851,1255,410,1256,410,427,1245,1253,414,1257,422,428,1253,427,1252,429,1253,424,1251,1254,422,427,1254,426};
unsigned int oncodeOsc[143] = {1247,415,1250,417,422,1249,1249,420,1250,427,423,1257,424,1257,423,1257,1249,427,422,1259,422,1258,423,7804,1250,416,1250,416,422,1251,1250,420,1250,435,415,1260,423,1260,421,1256,1252,438,412,1260,422,1258,424,7857,1250,416,1251,416,424,1252,1249,420,1251,438,413,1259,423,1259,423,1256,1252,429,421,1260,424,1260,422,7818,1248,433,1237,417,422,1251,1251,422,1250,428,422,1258,426,1257,426,1256,1251,429,422,1262,421,1261,422,7810,1249,418,1250,418,421,1251,1253,420,1252,427,423,1260,424,1259,423,1259,1250,427,423,1262,422,1261,421,7812,1250,414,1255,415,422,1252,1252,419,1252,427,423,1262,423,1261,422,1258,1252,427,422,1262,422,1258,425};

我重新連接了溫度傳感器并將我的紅外設(shè)備整合到一個面包板上進行測試。

image_67191809_rEtmgF0AYi.JPG?auto=compress%2Cformat&w=740&h=555&fit=max
組裝好的面包板
?

加熱器溫度相互作用

由于我的加熱器有兩種不同的設(shè)置,我使用溫度傳感器來確定當(dāng)我啟動我的電腦時是否需要加熱器(低于 72 度)。

int wakeHost(String param) {
    String MACaddress = "00:d8:61:aa:73:7a";
    Particle.publish("test","got to wake host");

    char szMacAddress[80];
    MACaddress.toCharArray(szMacAddress,80);
    Particle.publish("test", szMacAddress);
    if(accurateTemp < 72.0){
        deskStart = TRUE;
    }
    checkHIGHTemp = TRUE;
    return wake(szMacAddress);
}

傳感器還會檢查溫度是否過高(超過 67 度),然后將其切換到低溫模式。

if(highTempOverride || (checkHIGHTemp && accurateTemp > 67.0)){
        irsend.sendRaw(oncodeSwitch,119,38);
        checkHIGHTemp = FALSE;
        highTempOverride = FALSE;
        Particle.publish("test","sentTEMPIR");
    }

最終產(chǎn)品

image_50394113_OOKKHRNqd0.JPG?auto=compress%2Cformat&w=740&h=555&fit=max
最終面包板
?
?
?
?
?
?

?


評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應(yīng)用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關(guān)電源設(shè)計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅(qū)動電路設(shè)計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學(xué)會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費