忍住凛音桃花的淫技 无码精品人妻一区二区三区漫画 吉泽明步一区二区三区视频 av永久免费观看网站蜜芽 国产精品久久久久久无码 中文字幕人妻丝袜乱一区三区 国产熟女偷窥高潮精品视频 在线观看av网站永久免费观看 五月天中文字幕MV在线 国产AV一区二区三区无码 香蕉视频下载 伊人色综合久久天天人手人婷 国产精品久久久十八禁 亚洲人成网站18禁止影院 亚洲欧洲专线一区 热re99久久精品国产 丰满老师引诱我进她身体 国产色婷婷五月精品综合在线 大香蕉伊在线74 国产麻豆区精品系列在线 亚洲精品第一页国产精品 亚洲精品国铲第一综合 欧美日韩高清在线精品一区二区 久久精品国产99国产精偷 18少女团永久地址 扒开女人下面使劲桶视频 国产成人无码午夜视频在线观看 无码专区日韩亚洲精品 狠狠热精品免费视频 国产亚洲综合AA系列 国模大胆一区二区三区 2020久久超碰国产新品 韩国三级HD中文字幕叫床 男桶女免费60分钟视频 久久国产热这里只有精品 人人操人人人操 超级激情无码 亚洲精品成人H在线观看 美女黄网站18禁免费看胸罩 偷拍一区二区 日本真人gifXXOO动态图 亚洲XX综合好看站芊芊 亚洲系列 中文字幕 国产精品视频播放 调教妻弟的日日夜夜 国产免费牲交视频 青草社区在线全亚洲更新最 亚洲无码电影 国产自产V一区二区三区C 国产一区在线播放 青草视频在线观看 夜夜揉揉日日人人 国产精品久久久久久2021 欧美乱子伦XXXX12在线 久久久久久亚洲麻豆精品无码 美女的秘 让男人桶爽网站 欧美少妇xxxx欧美少妇逼毛多 久久国产亚洲精品无码百度百度 豆奶芒果茄子视频 国产午夜精品理论片小YO奈 熟妇人妻VA精品中文字幕 女邻居给我口爆18p 噜噜噜AV在线观看免费 国产日产欧产美韩系列大片在线观看 亚洲成在人网站av天堂 老熟妇乱子伦牲交视频欧美 国产精品亚洲专区无码站点 最新日韩精品中文字幕一区 日本乱码伦午夜福利在线 久久福利合集精品视频 欧美艺术片在线看 撕开语文老师的黑色丝袜 亚洲a网站在线永久免费入口 激情爆乳一区二区三区 精品少妇一区二区三区在线视频 久久国产999视频久久久 日韩久久无码免费毛片软件 黑车司机赵邦贺31国产精品 国产精品无码2021在线观看 久久精品国产99国产精品严洲 久热re在线视频精品免费 亚洲AV无码乱码在线观看四虎 国产高清综合精品一区二区三区 翘臀后进娇喘呻吟的少妇 亚洲欧洲无码AV电影在线观看 欧美日韩一卡二卡三乱码免费天美传媒在线 欧美乱子伦XXXX12在线 91国自产精品一区二区三区破解版 日韩人妻无码久久一区 男人天堂a 全彩18禁裸乳羞羞漫画无遮挡 国产在线高清精品1314 国产高清打桩机42分钟 亚洲处破女A片出血 国产盗摄XXXX视频XXXX 曰批视频免费40分钟 沈阳45岁性感老熟女最后的高潮 国模吧无码一区二区三区 又摸又揉又黄又爽的视频 精品欧美一区二区不卡视频
首頁 >> 在 Intel Edison 開發板上,利用 JavaScript 打造聰明的桌上型時鐘
在 Intel Edison 開發板上,利用 JavaScript 打造聰明的桌上型時鐘
來源:  時間:2015-10-26
分享到:


為什么我需要更聰明的時鐘……

我常會設定鬧鈴提醒行事歷的開會通知,但當計算機屏幕桌面角落跳出那小小的「某某會議再過 15 分鐘就要開始」的通知時,我心里就會想「15 分鐘夠讓我多做一件事了」,然后按下「延后」或「關閉」,繼續工作。過20 分鐘后才猛然醒悟:我遲到了!

而有時候,我會一直記掛著接下來要開會。我每一分鐘都一下看時鐘、一下看會議開始的時間,心里盤算著還有多久就要開會... 擔心開會遲到。這一直占據著我的心思,根本做不了任何工作。

我可以在四周擺放好幾個時鐘,但大多數的時鐘都是「笨」東西,只能顯示時間給你看。但是,運用一點物聯網神奇的魔力,笨東西也有可能變聰明。

我可以怎么做呢?

讓我們想象一下:有個智能型時鐘,會自動檢查行事歷,并且告訴你下一個行程。

時鐘知道某個活動即將到來,這時候,就會自動提供距離活動還有多久的關系型倒數計時(例如「距離開會時間還有45分鐘」,而不是「會議在下午4時開始」。隨著活動開始時間越來越近,時鐘會改變顏色,從溫和提醒變成急迫警示,催促您馬上動身。(例如黃色表示「注意」、橙色表示「動作快」,而紅色表示「危險」。)

嗯,不要再想了,立刻動手做!

在這篇 Instructables 文章中,我會說明如何將把Intel Edison 與 Grove LCD變成智能型桌鐘,能夠使用Google Calendar API擷取行事歷的信息。這個智能型桌鐘應用程序的編寫,屬于 NodeJS 應用程序(在 Github這里的JavaScript 程序代碼),使用Intel XDK 的 IoT 版本上傳檔案,以及執行物聯網應用程序。

步驟 1
收集需要的材料


要打造內含 Intel 的智能型鬧鐘,你需要:

?    Intel Edison開發板模塊,連接到 Arduino 擴充板

?    專用的電源。

o    我會使用 12V 直流電源,直接插入墻上的插座。

?    Grove Starter Kit for Arduino(Grove 的 Arduino 入門套件)或 Grove Starter Kit Plus – Intel IoT Edition for Intel Galileo Gen 2 and Edison(Grove 入門套件升級版:適用于 Intel Galileo 第 2 代與 Edison 的 Intel IoT 版本)都有提供:

o    Grove Base Shield v2 for Arduino(搭配 Arduino 的擴充板)

o    Grove LCD with RGB backlight(RGB 背光的液晶顯示器)

o    1 條 Grove 組件 4 針連接線

Intel Edison 設計程序,你需要:

?    計算機

o    任何主流操作系統(Mac、Windows、Linux)都行,但我會使用 Mac 做示范。

?    計算機上已經安裝了Intel XDK 的 IoT 版本集成開發環境 (IDE)。

o    我使用 Intel XDK,因為這款應用程序的程序代碼是以 JavaScript 撰寫,用于 NodeJS 環境。

?    一條 micro-USB 傳輸線。

o    在執行 Shell 命令,以及直接在 Intel Edison 設定 WiFi 的時候會用到。(注:如果您的 Intel Edison 已經設定 Wi-Fi 聯機,就不需要這條額外的傳輸線。)

(*注:本項目的程序代碼也適用于 Intel Galileo。如果使用 Intel Galileo,可以透過有線網絡或 WiFi 無線網卡進行聯機。)

步驟 2
設定 Edison 的 Wi-Fi 聯機


Intel Edison 需要連接到無線網絡,才可從 Intel XDK 透過無線網絡進行程序設計,以及呼叫 Google Calendar API【使用行事歷】。

如果尚未設定 Intel Edison 連接到無線路由器,請先執行下列步驟:

1. 取得 Intel Edison 的 Shell 權限

圖文說明英文文件1:https://software.intel.com/en-us/setting-up-serial-terminal-on-system-with-mac-os-x

圖文說明英文文件2: https://software.intel.com/en-us/setting-up-serial-terminal-on-system-with-windows

2. 執行「configure_edison –wifi」命令

圖文說明英文文件: https://software.intel.com/en-us/articles/intel-edison-getting-started-wifi

步驟 3
安裝 Intel XDK IoT Edition


如果還沒有安裝 Intel XDK IoT Edition,請先從https://software.intel.com/en-us/html5/xdk-iot下載并安裝這套集成開發環境。

針對安裝 Intel XDK,如果還需要進一步的協助,請參考以下安裝指南:

?    影片講解:https://software.intel.com/en-us/videos/setting-up-the-intel-xdk-iot-edition-part-1-installation

?    文件數據:https://software.intel.com/en-us/articles/install-the-intel-xdk-iot-edition

若要確認 Intel XDK 是否可以在 Intel Edison 開發板實際執行,請執行控制板載 LED 閃爍的范例項目

?    影片講解:https://software.intel.com/en-us/videos/setting-up-the-intel-xdk-iot-edition-part-2-run-a-sample-project

?    文件說明:https://software.intel.com/en-us/blinking-an-led-with-intel-xdk-iot-edition

步驟 4
將 Grove Shield 組裝到 Intel Edison 的 Arduino 擴充板上

1.    拔除 Arduino 擴充板所有的電源連接。

2.    將 Grove Base Shield 安裝到 Intel Edison 開發板上,請對準所有的針腳,并且確實將 Shield 板插進擴充板的接頭。

3.    將 Grove(4 針腳)線的一端連接到 Grove LCD。

4.    將 Grove 線的另一端連接到 Grove Base Shield,請注意,必須連接到有「I2C」標示的插槽。

5.    重新接通開發板的電源。

步驟 5
啟用 Google Calendar API


要了解如何設定 Google Calendar API,請參考 Google Developers 網站上的 Node.js Quickstart指南:https://developers.google.com/google-apps/calendar/quickstart/node

完成這個「快速入門指南」之后,您應該會得到:

?    一個 Google Calendar API 項目(也許可以叫做「smart-clock」),已經在 Google Developer Console啟用。

?    一個client_secret.json的檔案。

?    一個 NodeJS 腳本文件,可將接下來的 10 個行事歷事件打印出來,送到「開發人員控制臺」。

步驟 6
將 Google Calendar API 的 Node Quickstart 程序代碼移植到 Edison

到 Intel Edison,只需編輯幾個小地方。

1.    在 Intel XDK 的 IoT 版本:開始新項目 >匯入您的 Node.js 專案

? 使用先前步驟建立的文件夾(里面含有 quickstart.js 的文件夾)。

? 提供項目名稱,例如「smart-clock」。

2.    建立package.json檔案。

? 加入 Github 這段程序代碼:https://github.com/pearlchen/iot-smart-desk-clock/blob/master/iot-version/package.json

3.    刪除項目文件夾中的node_modules文件夾(及其中的內容)。

? 因為這個文件夾太大了,如果讓 Intel XDK 透過無線方式復制到開發板,還沒完成就會發生逾時。在后面的步驟,我們會將 Node 鏈接庫直接安裝到開發板上。

4.    建立main.js檔案。

? 將先前在 quickstart.js 編寫的所有程序代碼復制到 main.js。

? 如果您跳過了前面的步驟,請使用這段程序代碼:https://github.com/pearlchen/iot-smart-desk-clock/blob/master/desktop-version/quickstart.js

5.    請確實儲存剛才建立的任何檔案。

6.    如果還沒有連接開發板,請透過「IoT Device」下拉式清單連接到開發板。

7.    單擊底部工具欄的「Manage your daemon/IoT device」按鈕,開始管理物聯網裝置。

? 單擊「Sync PC time w/clock on target device」,同步處理計算機與目標裝置的時間

? 選取「Run npm install directly on IoT Device」,直接在物聯網裝置執行 npm 安裝(這將會使用先前在 package.json 定義的依存關系)

8.    單擊底部工具欄的「Upload」按鈕,開始上傳。

9.    單擊底部工具欄的「Build」按鈕,它在「Upload」旁邊。

10.    使用 SSH Terminal卷標頁(透過無線網絡)或Serial Terminal卷標頁(透過 micro-USB 傳輸線)來連接開發板。

11.    輸入:「cd /node_app_slot」,這是 Intel XDK 復制任何項目文件的地方。

12.    執行您自己的 main.js,也就是這里的腳本文件:「node main.js」

13.    依提示說明取得 Token 認證,再傳遞回去終端機命令行。

14.    如果看到了您接下來 10 項行事歷事件的輸出結果,就表示 Intel Edison 順利透過無線網絡與 Google Calendar API 通訊了!

15.    現在,嘗試從 Intel XDK 執行 Node 應用程序,取代執行「node main.js」。單擊底部工具欄上的「Run」按鈕,開始執行。

16.    你會看到錯誤訊息:「Error loading client secret file」,表示加載檔案發生錯誤,這是因為 Intel XDK 在項目文件夾的范圍之外執行應用程序。

17.    對 main.js 做以下編輯,儲存檔案,再按一次「Run」按鈕,應該就會看到你接下來的 10 項行事歷事件。

// add this line at the top:

var SECRET_FILE = '/node_app_slot/client_secret.json';

// edit this line (around line 13-14)

// fs.readFile('client_secret.json', function processClientSecrets(err, content) {

// to be:

fs.readFile(SECRET_FILE, function processClientSecrets(err, content) {

恭喜!

下一步,就是加入 LCD 屏幕的支持。

步驟 7
匯入 MRAA 與 UPM LCD 鏈接庫

一大堆字母縮寫,夠多了嗎?;)

MRAA是某種低階 C++ 鏈接庫,促成 Edison 的 Linux(軟件)端代表 Edison 的通用輸入輸出針腳(硬件)端進行通訊。Intel 維護的 mraa 鏈接庫放在 Github 這里:https://github.com/intel-iot-devkit/mraa

例如,要點亮連接到 Pin 13 的 LED,就像這樣使用 MRAA:

var mraa = require('mraa');

var led = new mraa.Gpio(13);

led.dir(mraa.DIR_OUT);

led.write(1);

UPM是比較高階的鏈接庫,使用 MRAA 來簡化對于現成電子組件的操控,尤其是有些組件需要的不只是簡單的開關命令,像是上面 LED 的例子。要讓 LCD 屏幕顯示文字,就需要發送某些非常精確計時的電氣信號,所以要有額外的動作,裝進個別的 UPM 鏈接庫中。Intel 維護的 UPM 鏈接庫放在 Github 這里:https://github.com/intel-iot-devkit/upm

針對 Grove LCD 組件 (Jhd1313m1),仍然要像上面那樣包含 MRAA 鏈接庫,此外還要使用個別的 UPM I2C LCD 鏈接庫,像下面這樣:

var mraa = require('mraa');

var jsUpmI2cLcd = require ('jsupm_i2clcd');

// Initialize the LCD.

// The 1st param is the BUS ID:

//   Intel Edison: Use 6

//   Intel Galileo Gen 2: Use 6 (I think)

//   Intel Galileo Gen 1: Use 0

var lcd = new jsUpmI2cLcd.Jhd1313m1(6, 0x3E, 0x62);

// Make the backlight red

lcd.setColor(255, 0, 0);

// Go to the 2nd row, 6th character (0-indexed)

// and print out "Hello!"

lcd.setCursor(1,5);

lcd.write('Hello!');

如果需要更多其他的傳感器范例程序代碼,可以透過 Github 的 UPM 范例文件夾或是Intel IoT 的傳感器網頁尋找。

所以,在 main.js 檔案的最上方,需要有這個:

var mraa = require('mraa');

var jsUpmI2cLcd = require ('jsupm_i2clcd');

var lcd = new jsUpmI2cLcd.Jhd1313m1(6, 0x3E, 0x62);


步驟 8
加入我的 LCD 文字輔助鏈接庫

用 JavaScript 的 UPM LCD 鏈接庫其實相當簡陋,只會提供幾種命令,像是將文字寫到屏幕上、清除屏幕,以及改變 RGB 背光顏色。

如果嘗試寫入超過 16 個字符長度的文字,內容就會截斷(超出屏幕顯示范圍)。

在智能型鬧鐘的例子里,行事歷事件的名稱很可能會超過 16 個字符,所以我寫了一個 Node 模塊,倘若文字超出一行的范圍,就會左右卷動。

1.    從這里下載:https://github.com/pearlchen/iot-smart-desk-clock/blob/master/iot-version/lcd_text_helper.js 這段句柄。

2.    將 lcd_text_helper.js 放進您的項目目錄,與 main.js 放在一起。

3.    在 main.js 中,加入這個部分,與 UPM LCD 鏈接庫放在一起:

var jsUpmI2cLcd  = require ('jsupm_i2clcd');

var LcdTextHelper = require('./lcd_text_helper');

var lcd = new jsUpmI2cLcd.Jhd1313m1(6, 0x3E, 0x62);

var lcdText = new LcdTextHelper(lcd);

4. 像這樣使用:

/**

* Try it out with some test messages.

*/

var LCD_MESSAGE_VERY_LONG = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvxyz"; // >16 characters long (48 chars)

var LCD_MESSAGE_LONG = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; // >16 characters long (24 chars)

var LCD_MESSAGE_16CHAR = "1234567890ABCDEF"; // ==16 characters long

var LCD_MESSAGE_SHORT = "1234567890"; // <16 characters long (10 chars)

var LCD_MESSAGE_VERY_SHORT = "ABC"; // <16 characters long (3 chars)

lcdText.set([

"  Hello,",

"        World!"

]);

setTimeout(function(){

lcdText.set([

LCD_MESSAGE_SHORT,

LCD_MESSAGE_VERY_SHORT

]);

}, 5000);

setTimeout(function(){

lcdText.set([

LCD_MESSAGE_LONG,

LCD_MESSAGE_VERY_LONG

]);

}, 10000);

現在,有了基本(但看起來相當不錯)的功能,可以將文字輸出到 LCD 屏幕,我們再來將一些行事歷的邏輯加到程序代碼中。

步驟 9
加入最后的行事歷事件邏輯

看一看在 Github 這里 main.js 最終的程序代碼:https://github.com/pearlchen/iot-smart-desk-clock/blob/master/iot-version/main.js。

我在最終版本做了一件事,就是將 Google Calendar API 的東西從 main.js 挪出來,放進獨立的 Node 模塊,叫做 GoogleCalendarEventFetcher。

1.    從這里下載:https://github.com/pearlchen/iot-smart-desk-clock/blob/master/iot-version/google_calendar_event_fetcher.js

2.    將 google_calendar_event_fetcher.js 放進您的項目目錄,與 main.js 放在一起。

3.    在 main.js 中,加入這個部分,與 LCD 文字輔助功能放在一起。

var LcdTextHelper = require('./lcd_text_helper');

var GoogleCalendarEventFetcher = require('./google_calendar_event_fetcher');

4. 像這樣使用:

// Initialize it

var calendar = new GoogleCalendarEventFetcher();

calendar.init(successCallback, optionalErrorDisplayCallback);

// Then, in the success callback:

calendar.getEvents(eventsReceivedCallback, MAX_EVENTS, beginTimeToQuery.toISOString(), endTimeToQuery.toISOString());


步驟 10
程序代碼總整理

如果看到步驟 7 或步驟 8 的程序代碼就暈頭轉向了:別擔心!

您可以從 Github 下載整個智能型桌鐘的程序代碼,放在「iot-version」文件夾里面:https://github.com/pearlchen/iot-smart-desk-clock/tree/master/iot-version

請記得,需要將你自己的 client_secret.json加進來,這應該在「步驟 5」的時候就已經有了。

將這些檔案放進您的 Intel XDK 項目目錄,然后使用 Intel XDK:

1.    單擊底部工具欄的「Upload」按鈕,開始上傳。

2.    單擊底部工具欄的「Run」,開始執行。

3.    檢查 Intel XDK 控制臺是否有任何錯誤。

4.    檢查時鐘的 LCD 屏幕!

步驟 11
打造桌鐘的外殼


為了讓 DIY 的智慧桌鐘看起來有一點專業的感覺,就要制作一個外殼,把 Intel Edison 包在里面,并且托住 LCD 屏幕,轉到您坐在桌前可以輕松看到的角度。

要為聰明的桌鐘制作一個簡單的紙板外殼,您需要:

?    紙板,或是很硬的卡紙

?    膠帶、膠水

?    美工刀、剪刀

?    直尺

?    丁字尺(并非必要,但很好用)

?    裝飾用的小物

如果想要額外的質感,可以考慮 3D 打印或是雷射切割桌鐘的外殼。目前,我暫時用紙板就行了,因為我還會繼續改善,增加功能。這東西根本就是用膠帶黏起來的,這樣說并不夸張。;)

我也加了一個 Adafruit NeoPixel Ring 彩色燈環當作裝飾。最終,我會把這個連接到 Intel Edison,但那是日后的事了。

步驟 12
把時鐘放在桌上

完成了!

使用 Intel XDK 編寫 NodeJS 物聯網應用程序的好處,就是位于 /node_app_slot 的應用程序可以自動設定,在 Intel Edison 開機的時候就會自動啟動。

因此,這就表示,只需要經由電源插孔,給時鐘穩定的電源供應,您的時鐘就會立即連接到 Google Calendar API,隨時為你留意行程安排!

樱桃酱饼教学视频

忍住凛音桃花的淫技 无码精品人妻一区二区三区漫画 吉泽明步一区二区三区视频 av永久免费观看网站蜜芽 国产精品久久久久久无码 中文字幕人妻丝袜乱一区三区 国产熟女偷窥高潮精品视频 在线观看av网站永久免费观看 五月天中文字幕MV在线 国产AV一区二区三区无码 香蕉视频下载 伊人色综合久久天天人手人婷 国产精品久久久十八禁 亚洲人成网站18禁止影院 亚洲欧洲专线一区 热re99久久精品国产 丰满老师引诱我进她身体 国产色婷婷五月精品综合在线 大香蕉伊在线74 国产麻豆区精品系列在线 亚洲精品第一页国产精品 亚洲精品国铲第一综合 欧美日韩高清在线精品一区二区 久久精品国产99国产精偷 18少女团永久地址 扒开女人下面使劲桶视频 国产成人无码午夜视频在线观看 无码专区日韩亚洲精品 狠狠热精品免费视频 国产亚洲综合AA系列 国模大胆一区二区三区 2020久久超碰国产新品 韩国三级HD中文字幕叫床 男桶女免费60分钟视频 久久国产热这里只有精品 人人操人人人操 超级激情无码 亚洲精品成人H在线观看 美女黄网站18禁免费看胸罩 偷拍一区二区 日本真人gifXXOO动态图 亚洲XX综合好看站芊芊 亚洲系列 中文字幕 国产精品视频播放 调教妻弟的日日夜夜 国产免费牲交视频 青草社区在线全亚洲更新最 亚洲无码电影 国产自产V一区二区三区C 国产一区在线播放 青草视频在线观看 夜夜揉揉日日人人 国产精品久久久久久2021 欧美乱子伦XXXX12在线 久久久久久亚洲麻豆精品无码 美女的秘 让男人桶爽网站 欧美少妇xxxx欧美少妇逼毛多 久久国产亚洲精品无码百度百度 豆奶芒果茄子视频 国产午夜精品理论片小YO奈 熟妇人妻VA精品中文字幕 女邻居给我口爆18p 噜噜噜AV在线观看免费 国产日产欧产美韩系列大片在线观看 亚洲成在人网站av天堂 老熟妇乱子伦牲交视频欧美 国产精品亚洲专区无码站点 最新日韩精品中文字幕一区 日本乱码伦午夜福利在线 久久福利合集精品视频 欧美艺术片在线看 撕开语文老师的黑色丝袜 亚洲a网站在线永久免费入口 激情爆乳一区二区三区 精品少妇一区二区三区在线视频 久久国产999视频久久久 日韩久久无码免费毛片软件 黑车司机赵邦贺31国产精品 国产精品无码2021在线观看 久久精品国产99国产精品严洲 久热re在线视频精品免费 亚洲AV无码乱码在线观看四虎 国产高清综合精品一区二区三区 翘臀后进娇喘呻吟的少妇 亚洲欧洲无码AV电影在线观看 欧美日韩一卡二卡三乱码免费天美传媒在线 欧美乱子伦XXXX12在线 91国自产精品一区二区三区破解版 日韩人妻无码久久一区 男人天堂a 全彩18禁裸乳羞羞漫画无遮挡 国产在线高清精品1314 国产高清打桩机42分钟 亚洲处破女A片出血 国产盗摄XXXX视频XXXX 曰批视频免费40分钟 沈阳45岁性感老熟女最后的高潮 国模吧无码一区二区三区 又摸又揉又黄又爽的视频 精品欧美一区二区不卡视频