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

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

3天內(nèi)不再提示

如何從Arduino控制飛利浦Hue燈

454398 ? 來(lái)源:網(wǎng)絡(luò)整理 ? 作者:網(wǎng)絡(luò)整理 ? 2019-12-03 08:46 ? 次閱讀

飛利浦Hue燈的范圍肯定不便宜(有一些替代品),但是我真正欣賞的一件事是,用于編寫自己的Hue應(yīng)用程序的有據(jù)可查的API。今天,我將向您展示如何通過(guò)Arduino控制色相燈,然后添加一個(gè)簡(jiǎn)單的運(yùn)動(dòng)傳感器。

我們?yōu)槭裁匆@樣做?因?yàn)榧彝プ詣?dòng)化系統(tǒng)可能相當(dāng)僵化且昂貴。通過(guò)學(xué)習(xí)如何從Arduino控制色相,您可以打開各種定制的家庭自動(dòng)化項(xiàng)目的大門,這些項(xiàng)目根本無(wú)法被現(xiàn)成的組件所擊敗。如果不是一起亂搞,請(qǐng)嘗試使用這8個(gè)出色的Hue應(yīng)用程序。

Hue系統(tǒng)

讓我們稍微了解一下技術(shù),以便您了解基礎(chǔ)系統(tǒng)正在合作。順化燈光使用稱為ZigBee的短程無(wú)線協(xié)議來(lái)創(chuàng)建amesh網(wǎng)絡(luò)-具體來(lái)說(shuō),它們已通過(guò)ZigBee Light Link認(rèn)證,這意味著其他ZLL產(chǎn)品也應(yīng)與順化一起使用(理論上)。

盡管在技術(shù)上很短在ZigBee的范圍內(nèi),ZigBee的網(wǎng)狀網(wǎng)絡(luò)功能意味著每個(gè)新燈泡都會(huì)擴(kuò)展網(wǎng)絡(luò),并將消息中繼到其他燈泡。這意味著,如果您在控制房子另一側(cè)的照明時(shí)遇到麻煩,請(qǐng)嘗試在兩者之間放置另一個(gè)照明。

Zigbee是一個(gè)很好的協(xié)議,但是與Wi-Fi完全不同或有線計(jì)算機(jī)網(wǎng)絡(luò),因此我們需要飛利浦色相橋?qū)烧呓Y(jié)合在一起。色相橋運(yùn)行一個(gè)經(jīng)過(guò)修改的開放源代碼Linux固件,該固件廣播了基本的Web服務(wù)器。

《圖id =“ attachment_463163” aria- describeby =“ caption-attachment-463163” class =“ wp-caption aligncenter”》

如何從Arduino控制飛利浦Hue燈

如果您僅將Hue橋接器的IP地址輸入瀏覽器,就會(huì)看到此信息。但是,您不能從這里做很多事情。

通過(guò)與本地Web服務(wù)器進(jìn)行交互,您可以找出照明燈的當(dāng)前狀態(tài)并對(duì)其進(jìn)行控制。/p》

這是一個(gè)非常簡(jiǎn)單的系統(tǒng),已經(jīng)可以用于DIY項(xiàng)目。

開始

對(duì)于飛利浦使這件事變得易于黑客攻擊表示敬意。在訪問(wèn)API文檔之前,您需要注冊(cè)為開發(fā)人員。它是免費(fèi)的,但您需要接受條款和條件。立即執(zhí)行此操作。

任何熟悉標(biāo)準(zhǔn)Web服務(wù)或Javascript的人都應(yīng)該可以使用Hue:所有數(shù)據(jù)都以JSON數(shù)據(jù)包的形式發(fā)送和接收。

看看這個(gè)實(shí)際上,您需要知道Hue網(wǎng)橋的IP地址。有幾種方法可以做到這一點(diǎn):

在路由器的管理界面中查看DHCP地址分配表

運(yùn)行諸如IP Scanner Home之類的網(wǎng)絡(luò)映射程序

嘗試使用飛利浦UPnP代理工具

Ping“ philips-hue.home”

何時(shí)完成后,繼續(xù)并將其輸入到瀏覽器地址欄中,并在URL后面附加 debug/clip.html 。就我而言,這是:

http://192.168.1.216/debug/clip.html

這是一個(gè)調(diào)試工具,可讓您通過(guò)簡(jiǎn)單的網(wǎng)絡(luò)界面發(fā)送和接收J(rèn)SON數(shù)據(jù)包。第一步是在Hue Bridge本身上啟用開發(fā)人員配置文件-出于安全原因,默認(rèn)情況下將其禁用。將以下內(nèi)容粘貼到BODY字段中,將URL保留為/api/,然后通過(guò)單擊 post按鈕發(fā)送POST請(qǐng)求:

{“devicetype”:“test user”,“username”:“newdeveloper”}

首次執(zhí)行此操作時(shí),您會(huì)在響應(yīng)中的某處看到“未按下鏈接按鈕”。這是一項(xiàng)安全功能,要求您使用的每個(gè)新應(yīng)用程序都經(jīng)過(guò)物理授權(quán)。去找到您的網(wǎng)橋,按一下按鈕,然后在30秒內(nèi)再次發(fā)送相同的請(qǐng)求。這次您將獲得不同的響應(yīng),并且該用戶將得到授權(quán)。如果您想使用其他用戶名,請(qǐng)閱讀有關(guān)創(chuàng)建用戶的API文檔。到目前為止,就足夠了。

設(shè)置用戶后,您應(yīng)該與之互動(dòng)的基本URL就會(huì)變?yōu)?api/newdeveloper/。您可以發(fā)送GETrequest來(lái)查找Bridge當(dāng)前知道的有關(guān)連續(xù)的燈光,警報(bào),場(chǎng)景以及已使用的應(yīng)用程序簡(jiǎn)短日志的所有信息。這是單個(gè)燈泡包含的一些狀態(tài)信息的示例。

“state”: {

“on”: true,

“bri”: 254,

“hue”: 14910,

“sat”: 144,

“effect”: “none”,

“xy”: [

0.4596,

0.4105

],

“ct”: 369,

“alert”: “none”,

“colormode”: “ct”,

“reachable”: false

},

“type”: “Extended color light”,

“name”: “Bedroom 1”,

“modelid”: “LCT001”,

請(qǐng)注意,“ on”:true 狀態(tài)不會(huì)實(shí)際告訴您燈泡是否打開;僅根據(jù)網(wǎng)橋設(shè)置,應(yīng)該 處于啟用狀態(tài)。 “ reachable”:false 可以指示燈泡太遠(yuǎn),或者只是在電源開關(guān)處關(guān)閉了燈泡。

將其集成到Arduino中的最后一個(gè)示例:確保其中一個(gè)燈可見(jiàn)且亮著,并且知道它是哪個(gè)數(shù)字。將URL更改為/api/newdevelopers/lights/1/state (將數(shù)字更改為light),然后發(fā)送包含以下數(shù)據(jù)的PUT請(qǐng)求:

{“hue”: 50100,“sat”:255,“bri”:255}

您應(yīng)該看到燈的反應(yīng)如下:

您要做的是將新?tīng)顟B(tài)推入燈泡。您還可以添加“過(guò)渡時(shí)間”,這是一種原始的動(dòng)畫方法,指示您希望狀態(tài)更改花費(fèi)多少秒。

顏色可以通過(guò)多種方式設(shè)置,但不幸的是沒(méi)有簡(jiǎn)單的方法來(lái)發(fā)送RGB值。在上面的示例中,我們發(fā)送了色調(diào),飽和度和 bri ghtness。嘗試更改色相值并再次發(fā)送PUT請(qǐng)求。

從Arduino工作

有一個(gè)名為ArduinoHue的現(xiàn)有Hue/Arduino庫(kù),Philips本身在API文檔中已鏈接到該庫(kù)。該庫(kù)的問(wèn)題在于它通過(guò)USB連接與您的PC通信,這也需要不斷運(yùn)行Python應(yīng)用程序。 Eugh 。到那時(shí),您還可以讓計(jì)算機(jī)運(yùn)行整個(gè)過(guò)程,然后完全切掉Arduino。

我將向您展示如何使用以太網(wǎng)屏蔽從Arduino 控制色相。 。您的Arduino無(wú)需連接到計(jì)算機(jī),因此它可以在您可以插入以太網(wǎng)電纜的任何地方獨(dú)立運(yùn)行。實(shí)際上,它也可以與Wi-Fi防護(hù)罩一起使用,但我沒(méi)有一個(gè)可以玩的。

如果您想跳過(guò)前面,完整的示例代碼嵌入在下面,或在此處提供。我改編自Gilson Oguime發(fā)布的示例。如果您以前從未玩過(guò)以太網(wǎng)屏蔽,則可能希望快速瀏覽一下Web客戶端教程-我假設(shè)對(duì)此有所了解,并且不會(huì)涉及用于建立網(wǎng)絡(luò)的代碼IP等。我們還向您展示了如何使用以太網(wǎng)屏蔽創(chuàng)建一個(gè)小型Web服務(wù)器。

創(chuàng)建狀態(tài)更改

創(chuàng)建新?tīng)顟B(tài)以推送到燈泡創(chuàng)建新的 String 變量并轉(zhuǎn)義所有雙引號(hào)的簡(jiǎn)單情況。我還在其中添加了 random()函數(shù),以創(chuàng)建具有一定動(dòng)態(tài)性的動(dòng)畫。嘗試對(duì)不同的顏色也隨機(jī)設(shè)置hue變量。

String command = “{”on“:true,”hue“:50100,”sat“:255,”bri“:255,”transitiontime“:”+String(random(15,25))+“}”; 發(fā)送命令

要實(shí)際發(fā)送命令,您需要使用一個(gè)名為setHue( ),它以燈號(hào)和命令字符串作為參數(shù),例如:

setHue(1,command);

然后,它所做的就是將其連接到網(wǎng)橋,將命令作為PUT請(qǐng)求以及創(chuàng)建HTTP請(qǐng)求涉及的所有其他廢話。

client.print(“PUT /api/”);

client.print(hueUsername);

client.print(“/lights/”);

client.print(lightNum);

client.println(“/state HTTP/1.1”);

client.println(“keep-alive”);

client.print(“Host: ”);

client.println(hueHubIP);

client.print(“Content-Length: ”);

client.println(command.length());

client.println(“Content-Type: text/plain;charset=UTF-8”);

client.println(); // blank line before body

client.println(command); // Hue command

添加運(yùn)動(dòng)傳感器

最后,我連接了一個(gè)簡(jiǎn)單的HC -SR501運(yùn)動(dòng)傳感器到數(shù)字I/Opin2。檢測(cè)到運(yùn)動(dòng)時(shí),將一系列狀態(tài)推入2個(gè)燈泡的橋以創(chuàng)建緩慢的動(dòng)態(tài)動(dòng)畫。當(dāng)運(yùn)動(dòng)傳感器停用時(shí),將向兩個(gè)發(fā)送單個(gè)關(guān)閉命令。理想情況下,它們會(huì)恢復(fù)為在檢測(cè)到運(yùn)動(dòng)之前所處的狀態(tài),但是邏輯并不是那么聰明-我們只是打開和關(guān)閉它們。

限制

盡管公認(rèn)的未優(yōu)化代碼,但Arduino的網(wǎng)絡(luò)接口幾乎要花一秒鐘的時(shí)間發(fā)送單個(gè)命令請(qǐng)求。我在Mac上使用相同的以太網(wǎng)連接測(cè)試了相同的命令,它的速度是它的十到二十倍(如果要測(cè)試,這里是AppleScript)。因此,Arduino無(wú)法實(shí)現(xiàn)任何類型的快速動(dòng)畫(我試圖創(chuàng)建閃爍的燭光效果)。對(duì)于大多數(shù)項(xiàng)目而言,這對(duì)高速光照動(dòng)畫而言應(yīng)該不是問(wèn)題,但要意識(shí)到這一限制是件好事。

要完全解析從網(wǎng)橋返回的任何JSON響應(yīng)也很困難; Arduino上沒(méi)有足夠的RAM來(lái)存儲(chǔ)所有原始數(shù)據(jù)。因此,您可能主要希望限制發(fā)送。

控制色相

現(xiàn)在,您已經(jīng)掌握了如何完全獨(dú)立地控制色相的知識(shí),它將打開順化家庭自動(dòng)化黑客世界。真正的問(wèn)題是:你會(huì)做什么?
責(zé)任編輯:wv

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 飛利浦
    +關(guān)注

    關(guān)注

    7

    文章

    550

    瀏覽量

    57610
  • Arduino
    +關(guān)注

    關(guān)注

    187

    文章

    6453

    瀏覽量

    185927
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    天馬榮獲飛利浦“2023 Procurement Partnership Award”

    服務(wù)能力,飛利浦全球TOP500供應(yīng)商的激烈競(jìng)爭(zhēng)中脫穎而出,榮獲了備受矚目的“2023 Procurement Partnership Award”。這一殊榮不僅彰顯了天馬在行業(yè)內(nèi)的領(lǐng)先地位,更是對(duì)其與飛利浦長(zhǎng)達(dá)二十年深厚合作
    的頭像 發(fā)表于 07-09 14:33 ?431次閱讀

    開源項(xiàng)目!可編程的磁懸浮桌面氛圍Arduino+WS2812)

    作者: tomouwerkerkerk 這是一款小巧溫馨的懸浮桌面氛圍,可變色的微光給房間增添了些許溫柔的氣息。 它是基于 Arduino 和 3D 打印的組件構(gòu)建而成,搭建起來(lái)也非常的簡(jiǎn)單
    發(fā)表于 06-03 11:53

    arduino控制步進(jìn)電機(jī)代碼

    Arduino是一種開放源代碼的電路板平臺(tái),它可以用于控制各種不同的電子設(shè)備,包括步進(jìn)電機(jī)。步進(jìn)電機(jī)是一種電動(dòng)機(jī),可以通過(guò)下達(dá)特定的指令來(lái)控制每個(gè)步進(jìn)的角度,從而使電機(jī)旋轉(zhuǎn)到指定的位置。在本文
    的頭像 發(fā)表于 02-14 16:29 ?1618次閱讀

    如何使用Arduino控制RGB LED

    在本指南中,您將學(xué)習(xí)如何使用Arduino控制RGB LED。RGB(紅-綠-藍(lán))LED可以通過(guò)混合不同強(qiáng)度的紅、綠、藍(lán)光來(lái)產(chǎn)生多種顏色。您將學(xué)習(xí)創(chuàng)建一個(gè)基本Arduino RGB LED電路,并以一些基本顏色為例循環(huán)。
    的頭像 發(fā)表于 02-11 10:28 ?3722次閱讀
    如何使用<b class='flag-5'>Arduino</b><b class='flag-5'>控制</b>RGB LED

    如何使用Arduino UNO板和電位器控制伺服電機(jī)

    在本Arduino伺服電機(jī)教程中,您將學(xué)習(xí)如何使用Arduino UNO板和電位器控制伺服電機(jī)。
    的頭像 發(fā)表于 02-11 10:11 ?1948次閱讀
    如何使用<b class='flag-5'>Arduino</b> UNO板和電位器<b class='flag-5'>控制</b>伺服電機(jī)

    控制器工作原理是什么?單控制器是如何控制燈具的?

    控制器工作原理是什么?單控制器是如何控制燈具的? 單
    的頭像 發(fā)表于 02-03 11:38 ?1651次閱讀

    ESP32與Arduino板之間的區(qū)別差異

    Arduino板包括一個(gè)ATmega328P8位微控制器,具有0至13個(gè)數(shù)字引腳。這些引腳用于數(shù)字輸入和數(shù)字輸出,其中數(shù)字輸入用于設(shè)備讀取數(shù)據(jù),數(shù)字輸出用于將數(shù)據(jù)
    的頭像 發(fā)表于 02-02 14:36 ?5851次閱讀
    ESP32與<b class='flag-5'>Arduino</b>板之間的區(qū)別差異

    如何使用arduino控制接觸器?

    我將避免鉛酸電池過(guò)載。我想通過(guò)使用近 30A 的接觸器和 arduino uno 板來(lái)控制電池過(guò)載。如何使用arduino控制接觸器?
    發(fā)表于 01-22 07:14

    基于WiFi的Arduino網(wǎng)絡(luò)控制方案

    電子發(fā)燒友網(wǎng)站提供《基于WiFi的Arduino網(wǎng)絡(luò)控制方案.rar》資料免費(fèi)下載
    發(fā)表于 11-10 10:30 ?0次下載
    基于WiFi的<b class='flag-5'>Arduino</b>網(wǎng)絡(luò)<b class='flag-5'>控制</b>方案

    Arduino篇—WS2812帶的使用方法

    RGBLED控制arduino需要通過(guò)PWM引腳進(jìn)行控制RGBLED。一個(gè)UNO有六個(gè)PWM引腳,因此,如果單獨(dú)的控制RGBLED的話,那就只能
    的頭像 發(fā)表于 11-02 11:36 ?1.1w次閱讀
    <b class='flag-5'>Arduino</b>篇—WS2812<b class='flag-5'>燈</b>帶的使用方法

    Arduino提供的PWM控制功能入門(1)

    今天來(lái)學(xué)習(xí)一下 Arduino 提供的 PWM 控制功能,它可以用來(lái)控制電機(jī)轉(zhuǎn)速,LED 明亮等。
    的頭像 發(fā)表于 10-31 16:32 ?1991次閱讀
    <b class='flag-5'>Arduino</b>提供的PWM<b class='flag-5'>控制</b>功能入門(1)

    如何使用Python和PinPong庫(kù)控制Arduino

    與傳感器和其他物理設(shè)備集成的應(yīng)用程序。如果您已經(jīng)掌握了Python的基礎(chǔ)知識(shí),那么您可以通過(guò)使用Python來(lái)控制Arduino來(lái)入門。本文目的主要是向您展示如何使用PinPong庫(kù)通過(guò)Python
    的頭像 發(fā)表于 10-13 10:59 ?754次閱讀
    如何使用Python和PinPong庫(kù)<b class='flag-5'>控制</b><b class='flag-5'>Arduino</b>

    基于Arduino做個(gè)音樂(lè)可視化LED

    基于Arduino做個(gè)音樂(lè)可視化LED帶,快來(lái)探索用了什么原理和材料!結(jié)合提供的簡(jiǎn)單代碼,軟硬件結(jié)合,你也可以在音樂(lè)中成為最靚的仔!
    發(fā)表于 09-27 08:08

    控制LED的開關(guān)是如何去控制LED的?

    日常生活中我們碰到的LED各式各樣,因此我們今天也介紹下控制LED的開關(guān)是如何去控制LED的,它有何巧妙之處,正好還可以復(fù)習(xí)一下三極管
    發(fā)表于 09-25 15:50 ?2023次閱讀
    <b class='flag-5'>控制</b>LED<b class='flag-5'>燈</b>的開關(guān)是如何去<b class='flag-5'>控制</b>LED<b class='flag-5'>燈</b>的?

    基于arduino設(shè)計(jì)的手勢(shì)控制小車

    基于arduino的手勢(shì)控制小車
    發(fā)表于 09-25 06:06