- 作者:趙英傑
- 出版社:旗標出版股份有限公司
- 出版日期:2016.05.31
- 頁數:656頁,雙色印刷。
- 定價:NT$699
書名很長,以下簡稱《超圖解物聯網IoT實作入門》
封面的控制板和3C裝置圖案,刻意以黑白灰階方式呈現,傳達軟體的重要性,若沒有軟體驅動,這些高科技裝置宛如沒有靈魂的軀殼;背景採用和JavaScript標誌相同的黃色系。
《超圖解 Arduino 互動設計入門》序言中的「序」字,繪製成印刷電路板風格;本書強調的是裝置之間的連結,因此「序」字也做出對應的改變。
內容簡介
本書是《超圖解 Arduino 互動設計入門》的姊妹作,強調串聯網路軟體和微電腦控制板, 以 JavaScript 為主軸,開發網路應用程式、手機 App、互動網頁、資料庫程式和操控微電腦。書中包含網頁式遠端遙控 LED 燈、即時溫濕度 、保全自動感測拍照蒐證、網頁式遠端 LED 繪圖板、即時影像監控 、影像辨識擺頭控制攝影機雲台、雲端溫濕度監控、即時資訊動態圖表、藍牙機器人遙控手機 App 等多元範例(感謝本書編輯黃昕暐先生提供文案)。
本書特色
- 統括物聯網應用開發的全面技術
- 前端 JavaScript 到後端 Node.JS 實踐物聯網創意
- 結合 Arduino、Raspberry Pi 實作物聯網感測控制節點
- 詳述 C/P 值最高的 ESP8266 Wi-Fi 模組
- 活用 Apache Cordova 開發跨平台物聯網行動 App
- 使用 JavaScript 即可駕馭的 Espruino 嵌入式控制板
- 採用 MongoDB 建構後端資料庫
- 利用 D3.js / C3.js 打造資訊圖表
- 連結 IFTTT 串連各項雲端服務
《超圖解物聯網 IoT 實作入門》目錄
各章節導讀,請參閱「新書預告:《超圖解物聯網IoT實作入門 使用JavaScript/Node.JS/Arduino/Raspberry Pi/ESP8266/Espruino》」這篇貼文。
第0章 無所不在的 JavaScript 與物聯網裝置
- JavaScript 與物聯網
- MPU、MCU與SoC介紹
- 章節導讀
第1章 JavaScript 入門
- JavaScript 入門
- JavaScript 語言基礎
- 函式定義
- 定時產生隨機數字
- Array(陣列)物件
- 認識 Object(物件)類型
- BOM(瀏覽器物件模型)與 DOM(文件物件模型
- 動手做 操作網頁物件
- 在網頁中嵌入 JavaScript
- 事件處理程式
第2章 認識 jQuery 程式庫
- jQuery 簡介
- jQuery 語法基礎
- AJAX 技術:動態更新 HTML 內容
- 動手做 從 Arduino 輸出純文字溫度
- 網頁訊息交換格式
- Arduino 輸出 JSON 訊息
- 調整燈光亮度的網頁介面
- 動手做 接收調光值的 Arduino 網站程式
- 動手做 製作滑桿介面網頁
- AJAX 的安全限制
第3章 Node.js 入門
- 在電腦以及樹莓派安裝 Node.js
- Node 程式設計起步
- 使用 http 模組建立網站伺服器程式
- 事件驅動、非阻塞 I/O 示範:讀取檔案
- global(全域)物件與模組檔案
- 安裝與管理模組:使用 npm 工具程式
- 使用 Express 框架開發網站應用程式
- 使用 package.json 管理 Node 專案的模組程式
- 動手做 從 Arduino 傳遞溫溼度值 給 Node 網站
- 動手做 讓 Arduino 定時上傳 DHT11 資料
- 使用 JSONP 格式跨網域存取資訊
第4章 Node.js 序列埠通訊與樹莓派 GPIO 控制
- 安裝編譯 Node 模組所需的軟體
- 動手做 Node.js 序列埠通訊
- 動手做 從 Node.js 傳送序列資料
- 透過 Node.js 執行系統指令
- 樹莓派的 GPIO 簡介
- 動手做 GPIO 輸出入訊號練習:按開關閃爍 LED
- 動手做 透過紅外線感測模組拍攝照片
- 樹莓派 GPIO 整合 Arduino 控制板
- 5V 和 3.3V 電壓準位轉換
第5章 使用霹靂五號操控 Arduino
- 霹靂五號:用 JavaScript 控制 Arduino
- 動手做 用霹靂五號指揮 Arduino 閃爍 LED
- 動手做 啟用上拉電阻並讀取開關訊號
- 動手做 類比輸入與 PWM 輸出程式實驗
- 動手做 檢測溫度
- 動手做 控制伺服馬達
- 動手做 控制 LED 矩陣顯示圖像
- 使用 Socket.io 建立即時連線
- 動手做 建立即時通訊程式
- 動手做 瀏覽器與矩陣 LED 作畫
第6章 電子郵件、串流視訊、電腦視覺與操控伺服馬達
- 透過 Node 傳送電子郵件
- 動手做 雲端蒐證 / 拍照自動寄送 e-mail
- 動手做 串流視訊 / 推播即時影像
- 使用 MJPG 壓縮與串流視訊
- 控制伺服馬達雲台
- 動手做 使用方向鍵操控伺服馬達雲台
- 動手做 攝影機雲台的 Node 伺服器程式碼
- 使用觸控螢幕虛擬搖桿操控攝影機雲台
- 瀏覽器連接遊戲控制器(電玩把手)
- 動手做 使用 gamepad.js 程式庫建立遊戲器操作的網頁程式
- 機器視覺(computer vision)應用
- 使用 tracking.js 偵測人臉
- 動手做 臉孔偵測與伺服馬達連動
- 動手做 偵測顏色
第7章 Espruino 控制板簡介
- Espruino 程式開發軟體
- Espruino 的基本硬體操作指令
- 動手做 使用光敏電阻製作小夜燈
- 動手做 呼吸燈效果
- 動手做 超音波控制燈光亮度
- Espruino 的睡眠模式
- 動手做 深層睡眠實驗
- 動手做 藍牙控制 LED
- 動手做 藍牙遙控車(馬達控制)
- 動手做 利用 SD 記憶卡紀錄溫濕度變化
- 動手做 控制伺服馬達
- STM32 微控器相容板
- 動手做 替 STM32 控制板燒錄 Espruino 韌體
第8章 使用 MongoDB 資料庫以及ejs 樣版引擎建立動態網頁
- 資料庫簡介
- 安裝 MongoDB
- MongoDB 的基本操作
- 查詢資料
- 更新與刪除資料
- 使用 mongoose 套件連結 MongoDB 資料庫
- 連結 MongoDB 並讀取資料的程式
- 動手做 儲存 Arduino 上傳的溫溼資料
- 認識樣版引擎
- 動手做 在 ejs 樣版中顯示最近 10 筆溫濕度資料
- 動手做 分頁顯示資料
第9章 資料視覺化:使用 C3.js 與D3.js 繪製圖表
- 使用 C3.js 繪製圖表
- 顯示動態平移的即時線條圖
- 動手做 使用資料庫數據描繪折線
- 動態顯示 Arduino 檢測類比值
- 動手做 使用圖表動態顯示感測器數據
- 簡易數位濾波
- 使用 D3 程式庫
- 認識 SVG
- 使用 D3 繪製 SVG 圖像
- 使用動態資料繪製折線圖
- 結合數據動態附加 HTML 元素
第10章 使用 Cordova 開發行動裝置 APP
- 認識 Cordova
- 設置 Cordova 的 Android 開發環境
- 下載與設置 Android SDK
- 安裝 Cordova 工具程式和 Ant
- 使用 Cordova 建立手機 App
- 啟用 Android 手機的 USB Debug 功能
- Cordova 網頁的基本程式架構
- jQuery Mobile 框架入門
- 動手做 手機 App 網路控制 Arduino
第11章 製作藍牙手機遙控 App
- 製作藍牙遙控 LED 燈 App
- 動手做 Arduino 端的藍牙 LED 開關程式
- 作藍牙機器昆蟲遙控 App
- 動手做 手機體感(加速度感測器)控制伺服馬達
- 動手做 透過手機 USB 介面連接 Arduino 板
- 透過返回(Back)鍵關閉 App
第12章 ESP8266 物聯網應用入門(一)
- ESP8266 模組簡介
- NodeMCU 開發版簡介
- 使用 AT 指令操作通用型 ESP 模組(ESP-01)
- 動手做 透過 Arduino 執行 ESP8266 的 AT 命令
- Wi-Fi 無線網路簡介
- 動手做 透過 ESP-01 的 AT 命令建立 HTTP 伺服器
- 使用 Arduino 開發 ESP8266 程式
- 使用 ESP8266WiFi 程式庫連接無線網路
- 使用 ESP8266WebServer 程式庫建立 HTTP 伺服器
- 動手做 處理 GET 或 POST 請求
- 讓 NodeMCU 扮演網路前端上傳資料(IFTTT)
第13章 ESP8266 物聯網實作(二)
- 設置區域網路域名
- 動手做 使用 ESP-01 模組開發 Arduino 物聯網
- 透過 OTA 更新 ESP8266 的韌體
- 使用 OLED 顯示器呈現 IP 位址和溫濕度值
- 動手做 在 OLED 顯示 IP 位址與動態溫濕度
- 使用 JavaScript 程式開發 ESP8266 程式
- 使用 Espruino 的 Wifi 程式庫
- 觸發執行 IFTTT 網路程式
好想马上买,但知道您一定会改版….
hi ayu:
謝謝,but,… 目前並沒有改版計畫,上一本《超圖解Arduino互動設計入門》也是一年之後改版。
thanks,
jeffrey
非常期待这本书,请问什么时候可以买到?
繁體中文版已經上市,謝謝!
thanks,
jeffrey
趙老師您好:
拜讀您的兩本超圖解真是獲益良多!
目前欲將手上的STM32相容版燒入Espruino韌體
使用命令列視窗似乎無法執行python 2.7版的,只能執行3.5版
而stm32loader.py又是2.x版寫的
因python還未接觸,不知是否有其他燒入方式?
不能直接用ST-LINK 直接燒寫嗎?
hi jammy:
命令列可以執行2.x和3.x版的Python,請先移除3.x版再安裝2.x版試試看。我目前使用的Windows 10系統,就是執行2.7版。
另一個燒錄STM32微控器韌體的方法是透過J-Link(7-51頁有提到),但是這個硬體比序列線貴,而且只拿來上傳軟體,也挺浪費的。
thanks,
jeffrey
感謝趙老師的回應與指導!
手邊剛好有一片 ST NUCLEO-F401RE 開發板
看過Espruino剛好有支援這塊
就利用STM32 ST-LINK Utility 程式開啟 espruino_1v85_nucleof401re.bin
再燒入,結果試用可以成功
提供給大家參考~
感謝告知!
thanks,
jeffrey
請問有要出 Google play 電子書嘛?
現在對比較厚的書, 都想要看電子書
hi plasma:
目前沒有電子版的出版計畫,謝謝!
thanks,
jeffrey
哈囉 ~ 因為讀了老師的書 學習到很多 真的很謝謝老師
現在如果碰到朋友有想學習的一定大推超圖解這兩本
目前碰到在12-10動手做的部分 ,在下達at指令時
都跑出數字 ,但將print改成write就成功了,有點誤打誤撞,
但不是很清楚其中的緣故是資料類型的關係嗎??
hi 0-7:
非常感謝!
也許是ESP-01模組的韌體版本不同,print()和write()的差別在於,print()會將資料輸出成「字元」或「字串」,方便人類閱讀;write()則是輸出實際值。以底下的程式碼為例:
在序列埠監控視窗的輸出結果如下:
print: 65
write: A
表面上,print()似乎原封不動地顯示變數a的值,但實際是輸出字元’6’和’5’。
而write()輸出了數字65,被序列埠監控視窗解讀成字元’A’。
thanks,
jeffrey
趙老師:在閱讀 ESP8266物聯網應用入門 這一章節時,有個問題向您請教下:
動手做透過arduino執行ESP8266的AT命令,麵包板上的LD1117芯片的電壓輸入腳是連接在arduino的5v輸出腳上,那LD1117芯片輸出電流是不是可以超過arduino的5v輸出引腳提供的最大輸出電流?在使用LD1117芯片時,雖然可以提供更大的輸出電流,但是最終也還是要受制于前級輸入最大能提供的輸出電流?不知道我這樣理解正不正確?
原廠的Arduino Uno控制板上面的5V直流電壓轉換IC是NCP1117ST50T3G,它能提供最大1A的輸出電流;若是連接電腦的USB 2.0,大約可提供500mA輸出電流,所以足以供應書本的範例使用。
沒錯!LD1117的電流輸出將受制於前級的輸出電流。
thanks,
jeffrey
趙老師:在閱讀esp-01模組與arduino連接通信時,因為有連接的詳細示意圖,所以看起來心理比較踏實。但在12-5節,替NodeMCU燒錄Arduino程式,您寫到序列埠位於COM5,我有個疑惑這個NodeMCU透過哪個口與計算機相連的?NodeMCU與Arduino的連接示意圖好像書本中沒有畫出來,可能我比較菜鳥,不知道趙老師能否寫寫篇博文補充說明下,謝謝。
Arduino連接的COM編號是電腦指定的,所以你在實驗時,COM編號可能會和我不同。第12和13章介紹的NodeMCU,在某些應用領域足以取代Arduino控制板,不需要連接Arduino。
thanks,
jeffrey
謝謝趙老師的耐心回答,感謝萬分!還想問下:替nodeMCU燒錄程式時是通過microUSB口與計算機usb口相連的嗎?
沒錯!我應該在內文提到「先把NodeMCU的microUSB接上電腦的USB,再進行燒錄」,感謝提醒!
thanks,
jeffrey
趙老師您好
請問為esp8266供電的時候為什麼不用arduino uno板上3.3輸出就好,而需要用5v電流轉換?
hi yc:
請參閱12-4頁「3.3V直流轉換電路」一節說明,簡言之,因為ESP8266的消耗電流大於Arduino板所能供給。
thanks,
jeffrey
了解 謝謝^^
趙老師您好
我正在讀您的Cordova開發行動裝置App一章
到10-5使用Cordova建立APP時下達cordova bulid命令時出現以下錯誤
http://i.imgur.com/13n4zVP.png
是否是我的使用者變數沒有ANDROID_HOME呢? 新增路徑為?
ANDROID_HOME是Android SDK的所在位置,以我的電腦為例,位於:
C:\Users\cubie\Android\android-sdk
你可以在設置完成後,於命令提示字元輸入這個指令,它會輸出ANDROID_HOME的值讓你確認:
C:\>echo %ANDROID_HOME%
thanks,
jeffrey
謝謝老師回應
SORRY沒有APP開發經驗問題比較多
http://i.imgur.com/AODSPPN.png
加上該變數及路徑後,無法成功輸出APK檔
不知道問題出在哪
那個錯誤訊息等同於10-17頁底下的錯訊息,書上的訊息顯示「缺乏android-22目標版本」,你的訊息則顯示缺乏android-23版本。
請依照10-18頁說明,開啟SDK Manager,勾選 (API 23) 裡的 “SDK Platform”。
安裝指定的套件之後,即可順利編譯成功。
thanks,
jeffrey
老師您好
關於ESP8266 我使用USB轉TTL連接ESP-01
下AT命令正常來說AT+RST回傳最後一行應該是ready 但我卻是invalid 不知是哪裡出錯?
也無法At+CWSAP更改SSID跟密碼(也是會回傳invalid)
看了12-14的回傳值以及其他教學文章後,AT+GMR都是回傳一串資料跟我的不一樣,是否是韌體的問題?
以下是詳細回傳訊息http://i.imgur.com/FzmK4c9.png
書本上採用的ESP-01韌體是AI-Thinker(安信可)公司的0.95.2版,我剛剛略讀了一下安信可公司的維基網站,沒找到這個舊版的韌體,倒是他們的最新版韌體(固件,1.5.4)有提供 8Mbit (1MB) 和 32Mbit (4MB) 兩個版本。
我在這個網站看到9600bps和115200bps的0.95.2韌體,如果你希望AT指令的操作結果和書本一致的話,請在ESP-01刷入這個韌體。
燒錄ESP8266的韌體工具,採書本13-32頁使用的nodemcu-flasher,把下載的ai-thinker-0.9.5.2-9600.bin燒錄到0x00000位址即可。新版的韌體燒錄位址配置,請參閱安信可的「ESP 系列 Bin 燒錄」網頁說明。
除了安信可,你也可以嘗試刷入樂鑫原廠的韌體,不過,我剛剛看了一下他們的SDK下載頁,只有提供1.5.x版。印象中,原廠的韌體在1.4版之後,只能燒入 32Mbit (4MB) 的快閃記憶體。如果你要下載樂鑫原廠的AT命令韌體,請選擇標題為”ESP8266_NONOS_SDK”開頭(亦即,沒有即時作業系統)的檔案,裡面就包含.bin格式的韌體。
樂鑫原廠韌體的AT指令,可在該公司網站的「文檔」頁面的「入門指南」找到(ESP8266 Non-OS SDK AT 指令集,簡體中文版)。
thanks,
jeffrey
謝謝老師
已成功更新韌體
感謝告知!
thanks,
jeffrey
老師您好
我也買了這一本書來看,
然後在實驗ESP8266連上WiFi的時候一直卡關,編譯的時候一直錯誤。
在您書中的12-36頁的程式碼第一行,
#include
我一直沒有辦法引用這個檔案(字體不會變色),不過我確定我有放在libraries裡面。
試了好久都無法編譯成功,還請老師幫我解答了!
我使用編譯器的版本是Arduino 1.6.5
(這是編譯器回報的錯誤訊息)
WiFi_basic.ino: In function ‘void setup()’:
WiFi_basic.ino:5:3: error: ‘WiFi’ was not declared in this scope
WiFi_basic.ino:12:27: error: ‘WL_CONNECTED’ was not declared in this scope
‘WiFi’ was not declared in this scope
hi peter:
我的電腦目前安裝三個版本的Arduino IDE:
1.6.5(舊版的下載位置在此)
1.6.9
1.7.10 (arduino.org版)
補充說明:除了1.6.5版是以安裝程式(Installer)方式安裝,其餘都是下載.zip免安裝格式,解壓縮之後直接使用。
主要使用的是1.6.5版,因為這個版本之後更新了GCC編譯器,導致某些程式庫無法順利編譯。ESP8266編譯器在1.6.5以及後續版本的預設安裝路徑不同,所以我如果使用1.6.9同樣會出現編譯錯誤。
請嘗試在Arduino IDE中選擇主功能表的「工具→板子→板子管理員(Board Manager)」指令,然後按一下「板子管理員」裡的ESP8266,再按一下「移除」。重新啟動Arduino IDE之後再重新安裝ESP8266編譯環境試試看。
thanks,
jeffrey
老師,我照著這個方法測試過了。還是不行
(這是錯誤訊息)
Arduino:1.6.5 (Mac OS X), 板子:”Arduino/Genuino Uno”
WiFi_basic.ino: In function ‘void setup()’:
WiFi_basic:5: error: ‘WiFi’ was not declared in this scope
WiFi_basic:6: error: ‘WL_CONNECTED’ was not declared in this scope
‘WiFi’ was not declared in this scope
———————–分隔線—————————–
這是我的程式碼
#include
void setup() {
Serial.begin(9600);
WiFi.begin(“LAB-Free”);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
}
Serial.println(“”);
Serial.println(“IP address: “);
Serial.print(WiFi.localIP());
Serial.println(“WiFi status:”);
WiFi.printDiag(Serial);
}
void loop() {
}
———————–分隔線—————————–
另外我使用的ESP8266wifi.h是在這邊下載的
https://github.com/ekstrand/ESP8266wifi
從錯誤訊息看來,你在編譯程式碼之前,忘了選擇ESP8266模組,所以IDE假設的目標控制板是Arduino Uno。
thanks,
jeffrey
老師,我反覆試幾次之後發現
在板子管理員裡出現了這樣的訊息
「Error downloading http://arduino.esp8266.com/stable/package_esp8266com_index.json」
(我用螢幕截圖下來了)
https://drive.google.com/file/d/0B0DAwJ9UyOwpYnRYU0g4dldfeUk/view?usp=sharing
麻煩老師幫我解答了,感謝!
咦?我剛剛在Mac OS X上,用1.6.10版的IDE安裝ESP8266,可以正常安裝:
編譯ESP8266的程式碼也沒問題:
thanks,
jeffrey
老師,跟你說的一樣
我沒有採用NodeMCU開發版,我用的是Arduino Uno開發版。
不過我在板子管理員裡面把開發版改成NodeMCU 1.0之後仍然編譯失敗。
(錯誤訊息)
https://drive.google.com/file/d/0B0DAwJ9UyOwpT3VrNW5VMTBabXM/view?usp=sharing
我還是解不出來問題在哪裡,麻煩老師幫我解答了!感謝!
如同12-4頁談到,ESP8266有兩大應用類型:
1. 當作WiFi網路的橋接器
2. 以獨立的控制板運作
編譯器的錯誤訊息包含找不到avr相關程式碼,代表你的程式碼的目標處理器是AVR晶片,例如,Uno控制板採用的ATmega328。
我剛剛看了ESP8266wifi程式庫的說明頁,這個程式庫是把ESP8266當成WiFi橋接器使用,也就是書本第12章「透過ESP-01的AT命令建立HTTP伺服器」的用法,程式庫把AT命令用更方便操作的語法包裝起來,主程式透過Arduino的ATmega328執行,所以採用這個程式庫的程式碼,控制板請選擇Arduino Uno。
從第12章「使用Arduino開發ESP8266」一節開始的內容,則是把EP8266當成獨立的控制板使用,不需要搭配其他控制板,編譯這一類程式碼之前,控制板必須選擇ESP8266模組。
thanks,
jeffrey
老師您好~
我改成使用NodeMCU 1.0開發版之後,可以連上自己的無線網路了。
謝謝老師!!
接下來想實作利用NodeMCU 1.0搭配DHT11溫度感測器,上傳到Google的Firebase。
請問這樣的組合是合理的嗎?
因為我對Arduino比較熟悉,所以還是會用Arduino編譯器上傳程式這樣。
麻煩老師解答了,謝謝老師!
可以的。
thanks,
jeffrey
老師您好!不好意思一直打擾
我查詢了一下,發現網路上很少運用Arduino與Firebase的Demo。
不曉得老師有沒有可以提供參考的資料呢?
我現在對如何連接Arduino與Firebase這件事非常沒有頭緒。
麻煩老師了,真是不好意思。
你查詢資料的方向,並不應該從Arduino和Firebase相連著手。
像Firebase這種雲端服務,都會提供API,所以你要查詢的是它提供哪些指令以及語法。像Firebase的REST API文件,你就可以從電腦或者微控制器下達這些指令來操作Firebase。
如果你一定要用ESP8266/Arduino,建議選用Arduino Yun之類的高階控制板或者樹莓派,會讓你的開發工作輕鬆不少。
good luck!
jeffrey
老師您好
想用cordova製作一個app操控esp01/arduino
是否能提示方法?
hi nnp:
書本裡面介紹的Cordova (Android) App操控Arduino/ESP8266控制板的範例有三種:網路連線、藍牙和USB序列埠。
thanks,
jeffrey
老師您好
每次在ESP-01燒錄Arduino程式,如果要更改程式內容需要重新燒回AT韌體再重新燒入Arduino程式嗎?
不需要,直接燒入Arduino程式即可,你可以用13-13頁的方法,透過OTA更新ESP8266的韌體。
thanks,
jeffrey
老師您好
關於12-18頁
SoftwareSerial宣告物件ESP
提供的find函式 其參數為字串,ESP.find(“x”)是指監看用戶連線時所回傳的AT韌體訊息是否有字串”x”對吧?
還有問題是read()函式的值就是來自AT韌體訊息的”連線編號”嗎? 他是一個字一個字讀入並以ASCII作為其回傳值嗎?
如果連線編號是十位數的話,我是否就應該call兩次read function?
另外問題是NodeMCU是不是沒有AT韌體,我可以用13-13頁的方法燒錄?
因為我覺得ESP-01實在不太穩定,想拿NodeMCU作為Arduino的橋接器,做為測試實驗用而已,雖然殺雞用牛刀
1. 沒錯!
2. 如同該行程式碼和註解,read()的傳回值是char形式,也就是一個字元,所以你不需要call兩次read()。
3. AT韌體也可以燒錄到NodeMCU,因為它就是一個ESP-12E模組外加電源和USB序列通訊晶片。你可以用13-32頁的方式燒錄。
thanks,
jeffrey
老師您好
關於read()我看了這篇教學文章
http://allaboutee.com/2015/01/02/esp8266-arduino-led-control-from-webpage
程式部分44、45行, 他使用read()兩次想要讀到”1″,”3″兩字元,請問為什麼會按照順序得到值?我看了arduino官網的文件好像沒有說明?
還有想問一般關於函式庫有哪些函式可用、使用方法、參數、回傳值等等資料,只有官網有嗎? 我去看他們的github都沒有說明文件,還是都在examples裡面了?
在《超圖解Arduino互動設計入門》5-12頁的圖解裡面有說明,Serial.read()可取出緩衝區裡的第一個字元,也就是按照順序、逐一取出緩衝區裡面的字元。
Arduino IDE提供的函式庫說明,請參閱Arduino網站的Reference單元,例如,這是Serial.read()函式的說明。
thanks,
jeffrey
老師您好
當引用ESP8266mDNS函式庫就會自動將esp8266設定為STA+AP模式嗎?
不會,我都是用STA模式。
thanks,
jeffrey
老師請問LD1117為esp01供電仍然有電流不足的問題 是否還有其他的替代方式?
我是用UTC這家公司的,也去查datasheet確認腳位了 不知道問題出在哪
我認為不是電流不足,我也曾在台中電子街買過UTC公司的LD1117,焊接好電路之後無法順利輸出3.3V,以為買到故障品,回到同一家材料行打算再購買一個。
這一次,店員把零件包放在櫃子上準備拿出元件時,我才看見:
如果真的不行,可換用書本12-5頁提到的LM317。
thanks,
jeffrey
沒錯 我也是買這個
但是腳位定義應該跟書上一樣阿
http://i.imgur.com/kYeZIwm.png
你用電錶測量它的輸出電壓是3.3V嗎?
如果是的話,按照規格書,它的電流輸出可達800mA,足夠ESP-01使用。
thanks,
jeffrey
老師你好:
當我執行第二章中的範例:監控遠端的溫濕度值diy2_1,
呼叫網頁時,程式只要執行到void defaultCmd()l裡面的dtostrf(DHT11.temperature, 5, 2, buffer)時,
網頁就會出不來,當我把dtostrf()拿掉,
只用 server << "溫度:" << DHT11.temperature << "”;
就可以正當.
這是什麼問題呢.
謝謝
hi gogo:
“gogo”這個發音聽起來像閩南語的「哥哥」 😀
我剛剛用Chrome測試可以顯示,Edge不行。請把buffer陣列元素從5改成6個:
網頁無法顯示是因為在轉換成字串時,字串資料沒有結尾。假設30.00度,轉換成字串之後,結尾還要包含”\0″,所以是6個元素,拍謝~
thanks,
jeffrey
知道了..謝謝
老師你好:
我在第5章中測試Blink2.js時.
問題出現在這行 : this.digitalWrite(LEDPIN, (out ^= 1));
回傳 this.digitalWrite is not a function
可能是那裡出問題呢?
謝謝
可能是因為版本不同的緣故,我之前使用的Johnny-Five是0.9.4版,目前的版本是0.10.0。
請改用led或pin物件試試看,底下是用pin物件的write方法輸出:
thanks,
jeffrey
謝謝老師指點.
另外第五章中的另一個範例:servo.js
我測試了光碟中及書中的範例(因書中及光碟中的範例寫法有點不同),
arduino 對應了 servo.js 指定脚位, 執行時 ,
輸入書中所提的指令,都沒有任何反應.
如:s.y.to(30);等
ps : 我的伺服馬達( MG995 / S3003二款 , 確定是正常的 ) 採外接5v電源,
都沒有反應.
是否還有其他地方我沒注意到的.
不好意思剛才才發現..我忘了共地當然不會動了.
現在正常了.
Sorry.
感謝告知 🙂
thanks,
jeffrey
老師您好!
我想請問你,我要用blueduino rev2和ESP8266溝通,因為這個板子比較少人用,所以不知道該如何接線?想請教您。
hi huang:
我也沒用過blueduino,如果你所謂的「溝通」是指拿ESP8266當作blueduino的WiFi介面,那就用AT韌體功能即可。
thanks,
jeffrey
前陣子在博客來看到這本書, 馬上就衝去買了~~~
IoT這本介紹的東西有比較深一點了(我不是本科系的), 所以看得比較慢一點, 目前還在努力當中…
但這二本超圖解我都很喜歡~~~大推~~~
hi kevin:
非常感謝!!
thanks,
jeffrey
老師你好:
在書中第13-10頁提到當使用UNO來燒錄ESP-01時,
凡是從UNO板輸入訊號到ESP-01模的的接脚都要串2.2K電阻.
我感覺接線圖在ESP-01的RX/TX表示好像畫錯了.
也就是要從uno的tx輸出訊號而接上2.2K電阻應該是到esp-01的rx位置.
還是我認知有誤呢?
在這次燒錄接線圖中,
為什麼是RX對RX
TX對TX呢?
是怎樣的條件下才會這樣接呢?
是因為要燒韌體才會這樣嗎?還有何時會這樣接.
謝謝
不好意思,是我的錯。之前也有讀者反應同樣的問題,我忘了更新。
thanks,
jeffrey
請問一下,wifi+arduino的AT指令一直沒有回應。
我是用MEGA2560版子,電壓外接3.3V電源,TXRX設在0和1 (程式也有改到0和1)
燒錄進去後 打指令AT完全沒有回應
想請問問題出在哪裡!?
hi wei:
1. 請確認你的Serial程式運作正常
2. 請嘗試用不同的鮑率,例如,115200。
3. 請參閱這一篇回應,刷新韌體看看。
thanks,
jeffrey
感謝你的回答!
程式是照著課本上打的,也試過更改鮑率及刷新韌體了
利用終端機與esp8266是可以溝通的,
但是接上arduino利用序列監控室窗與esp8266通訊還是沒有反應…
還有什麼導致沒有回應的原因嗎 ?
請參考這一篇回應,把print改成write,謝謝!
thanks,
jeffrey
我的硬體環境: Arduino UNO R3是旗標版本(另一本書及實驗套件),已經用Arduino IDE分別測試dht11、w5100網卡,軟硬體都是正常。
我想按照書上先實際測試第二章範例程式[動手做-從 Arduino 傳遞溫溼度值 給 Node 網站],我將書附光碟的檔案複製到硬碟,安裝Aarduino IDE 1.6.11版本(後來改換1.6.5),直接將書附範例程式編譯,都會發生錯誤!
請問:若要能夠正常編譯書附範例程式,軟硬體有無那些限制?需要下載的Library有哪些?
會這樣問是因為已經將書附範例copy至Arduino,但是,在未改任何code就進行編譯,會找不到 Streaming.h或是語法有問題 …… 好多狀況。
我是個Arduino新手,也沒有購買[超圖解Arduino互動設計入門],單純想編譯書附範例就碰到一堆問題,不知該如何讀這本書?
hi abel:
書本的Arduino板以Uno為主,也就是你手邊的控制板。
由於本書第2章的範例,沿自《超圖解Arduino互動設計入門》第16章,因此相關的程式碼沒有在此書詳列,除了dht11之外,需要的程式庫包含:
Webduino(提供HTTP伺服器服務功能)以及Streaming(按此可下載最新版本),請下載安裝這兩個程式庫,再編譯程式碼。
我使用1.6.11版編譯無誤。
thanks,
jeffrey
請問:本書其它章節的範例,是否也會有類似的情形?
本書因為引用另一本書的範例,但是讀者不一定會購買另一本書,畢竟 ,本書論及的開發板範圍較廣,如果沒有詳細說明使用的LIBRARY或提供額外下載網址,當碰到[動手做]時,會浪費很多不必要的時間.
以我來說,買這本書的主要目的是想了解Node.js/javascript在物聯網當中扮演的角色並學習相關技術,反而不是要學書中提及的開發板該如何撰寫程式,所以,是否可以麻煩您整理一份本書在動手做的完整範例程式,讓讀者下載以便跟著讀書進度練習並了解實際運作的機制,不甚感激!
剛剛下載完streaming5,未修改範例程式並在編譯時發生下列錯誤訊息:
C:\Users\Abel\Documents\Arduino\DHT11Client_2\DHT11Client_2.ino: In function ‘void httpSend()’:
DHT11Client_2:53: error: expected unqualified-id before ‘<<' token
EthernetClient << "GET /th?t=" << dtostrf(DHT11.temperature, 5, 2, tBuffer) << "&h=" << dtostrf(DHT11.humidity, 5, 2, hBuffer) << " HTTP/1.1\n";
^
exit status 1
expected unqualified-id before '<<' token
主要的程式庫,除了Streaming之外,就是放在光碟「Arduino程式庫」資料夾裡的dht11和webduino。
ch3的arduino/DHT11Client_2/DHT11Client_2.ino檔,用1.6.5版編譯沒問題,用1.6.11會出現”httpSend未定義”的錯誤:
‘httpSend’ was not declared in this scope
只要把httpSend()函式定義敘述挪到呼叫它的loop()函式之前,例如,放在setup()函式定義的上面,就能正確編譯了。像這樣:
thanks,
jeffrey
已經可以正常編譯並成功將DHT-11產出的數值,傳遞給遠端的Node.js網站。
謝謝您的協助與解惑!
感謝告知!
thanks,
jeffrey
我想請問老師,為什麼Arduino Nano和ESP8266無法溝通?
有更新燒錄過了,用AT指令都沒有反應,該怎麼辦?
問題跟Arduino板子無關,請參閱這一篇回應,把print改成write。
thanks,
jeffrey
請教老師:
在第12章中的動手做(透過ESP-01的AT命令建立HTTP伺服器)
預設的server IP為192.168.4.1
如何修改本範例讓IP成為我要的靜態IP.
謝謝.
ESP8266的AT命令中,設定靜態IP的命令有兩個:
AT+CIPSTA:設定STA模式的IP位址
AT+CIPAP:設定softAP(軟體AP)模式的IP位址
安信可(Ai-Think)公司的官方韌體AT命令說明文件,可在這個網址瀏覽(簡體中文和英文,PDF格式)。
我尚未嘗試用AT命令設置靜態IP位址,請嘗試底下的操作步驟(#號和後面的文字是註解,請勿輸入):
AT+CWMODE=1 #設置成STA模式
AT+CWLAP #列舉可用的無線基地台
假設其中的一個基地台的SSID是”pi”,密碼是 “raspberry”,請執行底下的命令連結該基地台:
AT+CWJAP=”pi”,”raspberry”
如果基地台採用動態分配位址(DHCP),執行底下的命令可顯示分配到的位址:
AT+CIFSR
否則,你可以嘗試底下的命令設定靜態IP位址、閘道器位址和網路遮罩:
AT+CIPSTA=”192.168.1.100″,”192.168.1.1″,”255.255.255.0″
如果你要把ESP-01設置成softAP(軟體AP),請執行AT+CWSAP命令(詳細的命令格式和參數說明,請參閱安信可公司的說明文件):
AT+CWSAP=”myESP”,”12345678″,5,3 # 設定SSID為”myESP”、密碼”12345678″、頻道5、WPA2_PSK加密
AT+CIPAP=”192.168.5.1″ # 設定IP位址”192.168.5.1″
請注意,官方AT說明文件列舉的某些命令,可能不適用於舊版(0.9x)的AT韌體。
thanks,
jeffrey
老師您好
我用板載ESP-12的WeMos D1這塊板子
使用的是IDE裡的ESP8266WebServer範例中的WebUpdate
這個也是一種OTA更新韌體的方式對吧?
但我更新失敗了,導致現在板子運作不正常
上傳程式後都在Serial回傳亂碼
不知道一般要用什麼方法重置它?
我沒有WeMos D1這個板子,不過它們的運作方式都一樣,請嘗試燒入不同的韌體,例如ch13後面提到的Espruino測試,然後再燒寫Arduino程式看看。
thanks,
jeffrey
謝謝老師 已經恢復正常了
另外想請問第12-32頁
const char PAGE_INDEX[] PROGMEM = R”=====(
test)=====”;
這樣的方法要如何在以上字串中插入的不同資料型態的變數呢?
我想顯示例如溫度資料在這個http server上
要動態更新網頁的顯示值,建議使用jQuery的get()方法搭配SetInterval()函式(請參閱2-19頁),你可以把網頁和JS程式庫存入ESP8266的SPIFFS記憶體區域。
thanks,
jeffrey
老師您好
我想按照2-19的方法取得溫度資料
先嘗試新增網頁資源路徑
server.on (“/temp”, [](){
server.send(200, “text/plain”, “28”);
});
直接網址輸入yc.local/temp/ 仍然得不到純文字資料
但是我如果在網頁中加入連結
temp
這樣子卻可以看到看到資料
打開console看也get不到資料
為什麼會有這樣的情況呢?
因為“/temp”指的是根路徑底下的temp資源;
“/temp/”指的是根路徑的”temp”路徑裡面的首頁。
輸入網址時,去掉末尾的”/”即可。
thanks,
jeffrey
測試成功 謝謝老師
感謝告知!
thanks,
jeffrey
請教老師:
有關第13章,設置區域網路域名的範例中(mDNS.ino),
我在PC上安裝了書中提的Bonjour printer service.
可在pc的瀏覽器中正確的執行jarvis.local呼叫網頁.
當我在我的Android手機上下載了Bonjour Broswer後,
我在Bonjour Broswer中也成功看到我的ESP01的相關內容.
但在手機的瀏覽器中輸入jarvis.local時,卻是找不到該網頁.
輸入IP時,網頁內容才出現.
請問這可能是那裡出現問題?
ps:我試了不同的手機都是相同的結果.
我記得Android 4.1版就有支援,我只在4.2.x, 5.x和6.0.1版系統的Note 2與Note 4手機,用Chrome瀏覽器測試沒問題,請下載其他瀏覽器測試看看。
thanks,
jeffrey
您好~~~
我想請問一下, 我將第八章的ejs範例複製到硬碟, 然後執行”node top10.js”, 會出現下列的錯誤訊息:
D:\mongo>node top10.js
##############################################################
#
# !!! MONGOOSE WARNING !!!
#
# This is an UNSTABLE release of Mongoose.
# Unstable releases are available for preview/testing only.
# DO NOT run this in production.
#
##############################################################
events.js:141
throw er; // Unhandled ‘error’ event
^
Error: failed to connect to [localhost:27017]
at null. (D:\mongo\node_modules\mongoose\node_modules\mongodb\lib
\mongodb\connection\server.js:549:25)
at emitThree (events.js:97:13)
at emit (events.js:175:7)
at null. (D:\mongo\node_modules\mongoose\node_modules\mongodb\lib
\mongodb\connection\connection_pool.js:150:15)
at emitTwo (events.js:87:13)
at emit (events.js:172:7)
at Socket. (D:\mongo\node_modules\mongoose\node_modules\mongodb\l
ib\mongodb\connection\connection.js:533:10)
at emitOne (events.js:77:13)
at Socket.emit (events.js:169:7)
at emitErrorNT (net.js:1269:8)
請問一下, 我可以從哪方面著手去除錯呢?!
請問你有事先啟動MongoDB嗎?MongoDB是第幾版?晚一點我再測試看看。
thanks,
jeffrey
[更新] 我用MongoDb 3.0.4版< 測試top10.js,執行正常。 另外,我查看了光碟裡的package.json,裡面設定的mongoose是3.0版, 我目前使用的是4.1.10版,也請試用底下的package.json定義安裝套件看看:
老師您好,
上傳程式的時候遇到這個錯誤,
warning: espcomm_send_command: wrong direction/command: 0x00 0x08, expected 0x01 0x08
warning: espcomm_send_command: wrong direction/command: 0x00 0x08, expected 0x01 0x08
warning: espcomm_send_command: wrong direction/command: 0x00 0x08, expected 0x01 0x08
warning: espcomm_send_command: wrong direction/command: 0x00 0x08, expected 0x01 0x08
warning: espcomm_send_command: wrong direction/command: 0x00 0x08, expected 0x01 0x08
warning: espcomm_send_command: wrong direction/command: 0x00 0x08, expected 0x01 0x08
warning: espcomm_send_command: wrong direction/command: 0x00 0x08, expected 0x01 0x08
warning: espcomm_send_command: wrong direction/command: 0x00 0x08, expected 0x01 0x08
warning: espcomm_send_command: wrong direction/command: 0x00 0x08, expected 0x01 0x08
warning: espcomm_sync failed
error: espcomm_open failed
error: espcomm_upload_mem failed
error: espcomm_upload_mem failed
想請問有沒有什麼解決方法。
是跟程式有關還是跟板子的設定?
從錯誤訊息看來,問題並非出在你的程式;請問你的控制板是NodeMCU 1.0嗎?
我之前也遇過無法燒錄的情況,使用電錶檢查,原因出在ESP-12E的某些接腳和板子焊接不良(虛焊),補上銲錫之後就正常了。
也請更新Arduino IDE和ESP8266編譯環境看看。
thanks,
jeffrey
感謝老師的解答,
我是使用ESP8266-01再加上CP2102
ARDUINO已經是最新版本了,
我試過其他塊ESP8266-01也是一樣的情況,
所以可能可以排除接觸不良這部分。
不過ESP8266板子的設定倒是有點不確定
板子:Generic ESP8266 Module
Flash Mode:QIO
Flash Frequency:40MHZ
CPU Frequency:80MHZ
Flash Size:4M(1M SPIFFS)
Debug port:Serial1
Debug Level:無
Reset Method:ck
Upload Speed:9600
請參閱13-11頁說明,Flash容量設定成1M。
thanks,
jeffrey
這個問題我之前也有遇過, 如果你確定軟體和線路連接都是正常的話, 請在上傳sketch之前, Reset一下你的ESP8266(把RST和GND短路一下), 之後再上傳.
今天我有再把ESP8266拿出來測試, 我的環境是Arduino IDE 1.6.12, 測試了幾個會發生這個問題的情況, 整理下來給你參考:
1. ESP8266供電不足 : 我使用FDTI連接線接在電腦的USB 2.0 Port, 經AMS1117轉換成3.3V供電給ESP8266. 但因為USB 1.1和2.0的供電電流都只有500ma, 再經過轉換電流就不夠推動ESP8266了, 把線插到USB 3.0 Port(電流在1A左右)再上傳就正常了.
2. 前一個例子上傳成功後, 線路都沒動, 要再上傳另一個sketch就發生了”espcomm”的錯誤了. 用迴紋針碰一下”RST”和”GND”二個腳位, 之後上傳就成功了. 後來我就不斷的測試上傳, 只要在上傳之前, 先RST一下, 上傳率100%.
這個是在我的環境下的測試結果, 你的情況有可能跟我不同, 可以參考一下, 如果解決不了你的問題, 可能就要再請其他高手們解答了.
WOW~ 非常感謝Kevin兄的補充說明,謝謝!!
thanks,
jeffrey
感謝您的回覆~~~
我目前使用的MongoDB是最新版(mongodb-win32-x86_64-2008plus-ssl-3.2.10-signed.msi). 將Mongoose模組更新至4.1.10版後, 已可正常執行!
謝謝您的幫忙~~~我可以再往下一個章節繼續測試了~~~
感謝告知!
thanks,
jeffrey
請教老師:
目前想將手上的STM32F103RCT6相容版燒入Espruino韌體,
使用python 2.7.12版分別在windows7,windows10命令列視窗執行執行書上7-50頁
python stm32loader.py -p COM29 -e -w -v espruino.bin 命令時,出現以下錯誤.
File “stm32loader.py”, line 29, in
import serial
importError:No module named serail
我確定COM port 號是正確的,不知問題出在哪裡?
本身對python不熟,不知可否指點一下,感恩!
hi jacky:
“No module named serial” 訊息代表Python程式找不到序列通訊模組。
拍謝,我忘了說明。
請到Python官網的pyserial(序列通讯模组)網頁下載 .whl 格式的擴充模組(Python Wheel),例如:pyserial-3.2.1-py2.py3-none-any.whl
為了方便安裝,請將此 .whl 放到磁碟根目錄,例如,我將 “pyserial-3.2.1-py2.py3-none-any.whl” 複製到代號 G 的隨身碟根目錄。
開啟命令列視窗,輸入底下的指令即可安裝序列通訊模組:
pip install g:/pyserial-3.2.1-py2.py3-none-any.whl
安裝Pyhon模組的指令格式如下:
pip install [模組檔案的路徑]
請留意,Windows系統的路徑分隔符號是 “\”,但是在 pip 指令的參數中,請改寫成 “/”。
thanks,
jeffrey
老師您好:
經過一番努力,解決了pyserial(序列通讯模组)的問題,本以為可以一路順暢執行
python stm32loader.py -p COM29 -e -w -v espruino.bin 命令,不過又出現以下新的錯誤訊息.
Cat’t init Ensure BOOT=1,BOOT1=0,and reset device
Traceback (most recent call last):
File “stm32loader.py”, line 554,in
bootversion = cmd.cmdGet()
File “stm32loader.py”, line 140,in cmdGet
if self.cmdGeneric(0x00)
.
省略…
我確定BOOT=1,BOOT1=0 硬體設定正確,usb to ttl轉板也連接正確,也更改過包率 9600,19200,115200 測過都不行.
又卡關了,不知問題出在哪裡? 不知老師可否再指點一下,感恩!
剛才嘗試在STM32板子燒寫Espruino韌體,也發生錯誤:
但是按一下Reset鍵,再執行一次就能正常寫入了:
thanks,
jeffrey
背景:
公司產品以工業控制為主,大部分以RS232連線控制。
選擇此書的評估:
行動裝置的數目即將超越PC,所以有客戶要求使用手機做機器設定,NB也開始被嫌重。
基本上手機又有Android及iOS二大系統,各有開發語言及工具。
個人接下在手機上開發控制程式任務,一開始就有平台問題。
所以看到此書符合需求就買下。
軟體使用Cordova為主,除可應付手機/平板,也可能產出PC程式。
之前是MCU工程師,故無相關背景。
合理的方法是使用Bluetooth-UART將原先通信轉到手機可以收到。
使用Bluetooth的原因在於隱密性,只有客戶才可設定配對碼。
不過Cordova開發上有些問題,不好找資源。
也試過React-Native,更糟,新到沒有人可以問。
可以建議Cordova相關的資源網站嗎?
Cordova好像已發展很久了,但用的人好像也不是很多,也許是我不會找。
hi bee:
遇到問題的時候,我都是用關鍵字問谷歌大神,或者閱讀廠商∕開發人員提供的技術文件,沒有習慣固定造訪某個論壇或blog。
企劃本書的行動App單元時,除了Cordova/PhoneGap,我有稍微閱讀React Native和NativeScript的文章,最後選擇Cordova的主要原因:當時React Native仍處於快速發展階段,語法和結構上可能會有大幅的變動,有可能我寫完整本書,這個單元會被迫重寫。
再加上行動App開發是這本書的部份單元,不是主軸,而且React也不適合程式初學者,一個小小的App會涉及類別(class)、組件(component)、虛擬DOM…等概念。我還記得曾讀到「盡力完善Mac開發環境」之類的聲明,也就是開發環境以Mac OS為首選。
所以本書採用相對成熟,參考文件較為豐富(市面上有多本Cordova書籍)、有我需要的外掛(像藍牙和USB序列通訊 )、且已經有教育單位導入教學的Cordova/PhoneGap。
thanks,
jeffrey
主要是在Cordova上打通裝置的速度不快。
開SD卡,用了一天。但找不到開檔開到那去了。因為從android和PC二側看到的檔案結構有些不同。
第二天改成寫特定檔名,再用Android檔案總管去找出位置。
HC-05讀回又用了一天。但讀回的字有非顯示字元就出問題。第二天換接收函式,字元對了,數目不對。
後來才發現,非同步I/O有使用到類似中斷的方式,所以接收函式要將資料串起來。這樣是對了,但又寫不進SD卡。
寫入SD卡的是物件,以JSON格式放起來。又再查,找到寫入時改成物件內的buffer,才可以寫入二進制檔。
用Cordova讀寫二進位的文章很少,所以前進速度很慢。
這樣二週用掉了!
樹莓派在執行8-27頁的find.js 出現下面的回應,我該用甚麼方法讓他正常執行呢?
pi@raspberrypi:~/test $ node find.js
/home/pi/test/find.js:27
�@�@console.log(“�䤣��dht11�����ơI”);
^
SyntaxError: Unexpected token ILLEGAL
at Object.exports.runInThisContext (vm.js:76:16)
at Module._compile (module.js:513:28)
at Object.Module._extensions..js (module.js:550:10)
at Module.load (module.js:458:32)
at tryModuleLoad (module.js:417:12)
at Function.Module._load (module.js:409:3)
at Module.runMain (module.js:575:10)
at run (bootstrap_node.js:352:7)
at startup (bootstrap_node.js:144:9)
at bootstrap_node.js:467:3
我今晚測試看看。
>> 更新
剛剛在乾淨的Raspbian系統安裝3.0.9版的MongoDB,測試沒問題:
應該是輸入的指令敘述裡的中文不是UTF-8編碼的緣故。如果你是使用光碟裡的 “MongoDB命令練習.txt” 複製指令、貼上的話,請先將 “MongoDB命令練習.txt” 轉存成UTF-8格式。
thanks,
jeffrey
謝謝老師 解決問題了 也可以正常執行
老師您好:
在ejs樣板中顯示最近10筆溫濕度資料時.當執行時發生如下的錯誤訊息.
本身mongodb 是處于執行狀態,也可以查詢出相關的紀錄.
卻發生如下的錯誤訊息:
skhost:mongo skmac$ node top10.js
{ [Error: Cannot find module ‘../build/Release/bson’] code: ‘MODULE_NOT_FOUND’ }
js-bson: Failed to load c++ bson extension, using pure JS version
##############################################################
#
# !!! MONGOOSE WARNING !!!
#
# This is an UNSTABLE release of Mongoose.
# Unstable releases are available for preview/testing only.
# DO NOT run this in production.
#
##############################################################
package.json
{
“name”: “sensorDB”,
“description”: “Test Mongodb by mongoose”,
“version”: “0.0.1”,
“dependencies”: {
“ejs”: “^2.5.2”,
“express”: “^4.14.0”,
“mongoose”: “^3.0.0”
}
}
詢問一下如何解決.此問題.
hi skill:
請參閱這一篇留言,把Mongoose改成4.1.2版本再測試看看,謝謝!
thanks,
jeffrey
老師你好:
當將Mongoose修改為4.1.2版本之後出現新的狀況
skhost:mongo skmac$ node top10.js
網站伺服器在端口號:3000 為你服務中…
當開啟Browser: http://localhost:3000 之後. 畫面為空白 而server端出現這樣的提示
Mongoose: mpromise (mongoose’s default promise library) is deprecated, plug in your own promise library
instead: http://mongoosejs.com/docs/promises.html
不知道如何解決. 請問老師有沒有解結的方式.
老師該問題已經解決了:
mongoose版本有修正,為4.1.2 ,另外在 models目錄下的dht11.js
mongoose.connect(‘mongodb://localhost/sensors’);
這行測試時remark. 忘記改回來. 產生了相關錯誤. 目前該程式已經正常運行.謝謝
老師您好,
我想利用esp8266上傳霍爾感知器
測得的轉速至Thingspeak,
卻不知道從何下手,
可以給我建議嗎
謝謝
hi cindy:
把一個大問題拆解成數個小問題,分別解決。例如,先了解如何取得感測器數值、再測試以用戶端形式,透過GET或POST方法傳遞資料,實驗這一步之前,妳可能要先了解網頁表單的運作方式…最後再查閱thingspeak提供的API,並且把之前實驗的程式整合起來。
have fun!
jeffrey
老師您好,
因為沒有寫程式的經驗,
從網路上找些程式拼拼湊湊,
大致上可以看得懂邏輯性,
但是要解決問題有點難倒我了,
一直無法將讀取到的數值寫出來,
不管怎麼跑都是0,
程式碼:http://pastie.org/10975535
希望老師可以幫幫忙。
Hello, Cindy. 如果單純將霍爾感測器的數值print出來, 顯示的數值是正常嗎?! 如果不正常, 建議妳先從霍爾感測器的方面先解決. 如果同時要判斷感測器和ThingSpeak的問題, 會使問題複雜化.
kevin大,感謝分享!
thanks,
jeffrey
老師您好, 我有您寫的IOT黃色這本, 想請教:
page2-26實做後, 點擊書本範例程式”temp_json.html”,
其網址列上顯示為, 電腦硬碟中的路徑, 並不是如p2-25中的192.168.1.25
修改其中ip去抓arduino的192.168.1.106/th.json資料,
發現第一次reset板子後會抓到溫濕度數值,
但是接下來似乎就接不到 JSON 的回應.
而且濕度值與溫度值卻一樣, 如溫度20度, 濕度20%(從其他端顯示溼度應為50%)
不知道是不是我漏了什麼?
請把thCmd()函式裡的buffer陣列元素改成6個試試看:
char buffer[6] = “”;
thanks,
jeffrey
之前你提到,可能是因為版本不同的緣故,
你用的是0.9.4版,而目前的版本是0.10.0。
所以digitalWrite要改成其他的寫法,
我也因為這個卡了很久,後來看了你的網站才解決,
但請問一下,那個寫法是從哪邊來的資料,
而且,是全部的函式只要碰到wait都不行還是只有這個digitalWrite。
另外,請教一下,有沒有辦法可以只灌0.9.4。
johnny-five網站的API單元,有列舉所有物件和相關指令,像這個Board物件的API文件,但是我沒看到改版的說明。
至於指定Node.js套件版本的說明,請參閱3-43頁「使用package.json管理專案的模組程式」一節。
thanks,
jeffrey
你好,
赵老师,请问该书在大陆该如何购买,谢谢!
你好,不知你是否能看到这些网站,台湾的一些网络书店可配送到全球,像是博客来网路书店。或者,香港的香港书城也有贩售。
其实我已经跟北京的电子工业出版社签约,2017年第一季会有简体中文版,谢谢!
thanks,
jeffrey
老師您好,
請問在12章「使用 ESP8266WebServer 程式庫建立 HTTP 伺服器」,
或13章,「動手做 使用 ESP-01 模組開發 Arduino 物聯網」中,
ESP是設成STA模式嗎?
還有透過ip或網址jarvis.local連到ESP模組時,
使用的筆電或手機是不是需要跟ESP模組連線的wifi在同一個網域才行?
用手機的3G上網就找不到?
謝謝老師!
對,我是用STA模式。一定要在相同網域才能相連,否則你就得設定無線基地台,開啟Virtual DMZ (虛擬非軍事區),讓你的ESP8266可以從外部網路存取。每個路由器的設定方式都不同,請查閱相關說明。
thanks,
jeffrey
老師好
我想請問一下書中12-26頁的範例中
#include
這個程式庫是哪裡下載的
我在這個網站中https://github.com/esp8266/Arduino下載的壓縮檔
檔名叫做Arduino-master
然後打開arduino IDE 選草稿碼->include library->add .zip library
放進去arduino裡面還是不能夠編譯
請問是我載錯還是加入library 方是有錯