2015年10月31日 星期六

{ 樹莓派 + Arduino } 紫外線強度偵測 ( 使用大型數字顯示 )

網頁最後修改時間:2015/10/31

在這篇網頁中,將說明賣場紫外線( UltraViolet, UV ) 強度偵測模組使用的方法,以及將所取得的類比電壓轉換為數位數值輸出,並經由所求得的多項式方程式算出相對應的類比電壓以及紫外線指數值。最後將相關資料使用大型數字的方式顯示在整合型 LCD 上。

如何在整合型 LCD 顯示大型數字,請參考 "{ 單晶片 + Arduino + 樹莓派 } 整合型 LCD ( @ I2C 模式 ) 的漂亮數字顯示 ( 自訂字型或圖案 ) " 網頁中的說明與範例展示影片。

/*-/--*-*/*/*/*/***//-*-*-**-*/*-*-/*/*/*-*-/-////--/**/**--**/--///--//**----**//--**//**----***//*-**//*
有購買商品的使用者,網頁中所需相關資料已放置於雲端硬碟,請自行下載使用!
其餘的使用者,請自行依照提供之連結下載相關資料,程式碼複製貼上使用!
/*-/--*-*/*/*/*/***//-*-*-**-*/*-*-/*/*/*-*-/-////--/**/**--**/--///--//**----**//--**//**----***//*-**//*

2015年10月29日 星期四

{ 單晶片 + Arduino + 樹莓派 } 整合型 LCD ( @ I2C 模式 ) 的漂亮數字顯示 ( 自訂字型或圖案 )

網頁修改時間:2015/10/31

前一陣子在找一些資料的時候,無意間在 youtube 網站上看到一個影片,內容是在 LCD 上顯示環境中的溫、濕度與塵埃濃度。一聽之下或許覺得沒什麼,因為在部落格中早就有這些東西存在!但是令我駐足觀看的是:它所使用的數字顯示很大、很清楚也很漂亮,作為一眼就能清楚得知數值大小,效果很好!因此就產生了這篇網頁!

2015年9月26日 星期六

ESP8266 入門學習套件支援 Arduino IDE 開發環境之安裝、使用說明與範例

網頁最後修改時間:2016/01/08
本篇網頁介紹 ESP8266, ESP-01 如何直接使用 Arduni IDE 開發、編譯和上傳程式,捨棄原本需要額外處理 AT 指令的微控制器,只要 ESP8266, ESP-01 自己本身就可以搞定所有事!

在接下來的網頁內容,將會以上面那張照片為例,使用 ESP8266, ESP-01 開啟 mDNS 服務,使用者可以使用網頁 ( http://esp8266.local/, http://[esp8266_ip] ) 或是網址輸入的方式控制二通道光隔離繼電器模組所連接的燈泡開啟或是關閉。

NOTE: 網頁中的操作會修改 ESP8266 現有的韌體,請先看清楚網頁內容之後再操作。一但進行操作,任何風險請自己負責!

-*-*/*/*/*/***//-*-*-**-*/*-*-/*/*/*-*-/-////--/**/**--**/--///--//**----**//--**//**----***//*-**//**/-*-
網頁中的程式碼使用賣場中的 "二通道光隔離繼電器模組" 和 "ESP8266 入門學習套件" 測試通過。
/*-/--*-*/*/*/*/***//-*-*-**-*/*-*-/*/*/*-*-/-////--/**/**--**/--///--//**----**//--**//**----***//*-**//*

2015年9月23日 星期三

使用 Arduino IDE 開發 ESP8266 物聯網應用 - 取回 ThingSpeak 特定 Channel 和 Field 最後一筆資料

網頁最後修改時間:2015/09/22

上一篇 "使用 Arduino IDE 開發 ESP8266 物聯網應用 - ThingSpeak, HTTP GET / POST 資料上傳方法"網頁中提到了使用 HTTP GET 與 HTTP POST 上傳資料到 ThingSpeak IoT Server 的方法;這一篇反過來,要說明如何取回 ThingSpeak IoT Server 特定 Channel 和 Field 上最後一筆資料。

ps. 其實寫到最後發現!只有一個情況下,不管如何只能取回最後一筆資料;但另外一個情況則是,相同的程式碼處理下,取回多筆資料會比取回最後一筆資料來的容易解釋!

為什麼是最後一筆,而不是全部或是其中一點的資料 ? 原因是:除非在資料集中的每一個數據都很重要,不然最後一筆資料就是最重要的數據;另外一點,就是語法都差不多,差異在於後面所接的參數不同而已,只要看過下面所舉的例子之後,舉一反三絕不會是問題!

/*-/--*-*/*/*/*/***//-*-*-**-*/*-*-/*/*/*-*-/-////--/**/**--**/--///--//**----**//--**//**----***//*-**//*
有購買商品的使用者,網頁中所需相關資料已放置於雲端硬碟,請自行下載使用!
其餘的使用者,請自行依照提供之連結下載相關資料,程式碼複製貼上使用!
/*-/--*-*/*/*/*/***//-*-*-**-*/*-*-/*/*/*-*-/-////--/**/**--**/--///--//**----**//--**//**----***//*-**//*

NOTE:本篇網頁所使用的程式經過  ESP8266 UNO Arduino IDE 開發板 (Type B1)  (  本文簡稱開發板  )測試通過!不過,同樣適用於其他使用 Arduino IDE 開發的 ESP8266, ESP-## 型號的板子,但請自行測試!
除了與網頁內容相關的討論之外,像是 Arduino IDE 與其他 ESP8266 型號連線的問題等,請使用者自行搞定!!!

2015年9月21日 星期一

使用 Arduino IDE 開發 ESP8266 物聯網應用 - ThingSpeak, HTTP GET / POST 資料上傳方法

網頁最後修改時間:2015/09/22

在部落格的另一篇關於物聯網應用的網頁中,已經說明了使用 HTTP GET 上傳感測器資料到到 IoT ( Internet-of-Thing, 物聯網 ) Server ( 這裡以 ThingSpeak 為例 ) 的方法 ( HTTP POST 的方法請查閱該網頁所提供的參考連結 )。而在此篇網頁,將延續在 Arduino IDE 撰寫程式碼的方式,但會捨棄使用 Arduino 板,改用 ESP8266 做為微控制器與週邊裝置通訊,撰寫與說明如何在 Arduino IDE 撰寫 ESP8266 使用 HTTP GET 和 POST 上傳資料到 ThingSpeak.com 的 Sketch!

看過此篇之後就會發現到,使用 ESP8266 Arduino IDE 開發板 ( 下面簡稱:開發板 )
  • ESP8266 無線網路模組就是微控制器
  • 不需要額外處理與設置 AT 指令
  • 利用熟悉的 Arduino 語法開發 ESP8266 就像開發其他 Arduino 板子一樣簡單
  • ... 
更多、更多好處等著使用者自己去發掘 !

/*-/--*-*/*/*/*/***//-*-*-**-*/*-*-/*/*/*-*-/-////--/**/**--**/--///--//**----**//--**//**----***//*-**//*
有購買商品的使用者,網頁中所需相關資料已放置於雲端硬碟,請自行下載使用!
其餘的使用者,請自行依照提供之連結下載相關資料,程式碼複製貼上使用!
/*-/--*-*/*/*/*/***//-*-*-**-*/*-*-/*/*/*-*-/-////--/**/**--**/--///--//**----**//--**//**----***//*-**//*

NOTE:本篇網頁所使用的程式經過 ESP8266 UNO Arduino IDE 開發板 (Type B1) 測試通過!不過,同樣適用於其他使用 Arduino IDE 開發的 ESP8266, ESP-## 型號的板子,但請自行測試!
除了與網頁內容相關的討論之外,像是 Arduino IDE 與其他 ESP8266 型號連線的問題等,請使用者自行搞定!!!

2015年9月6日 星期日

MAX7219 LED Matrix 驅動控制模組使用範例影片

網頁最後修改時間:2015/09/019

在這篇網頁中,有三個 MAX7219 LED Matrix 驅動控制模組展示影片:前兩個影片,使用相同的程式碼,一個使用藍牙控制,另一個使用 ESP8266 WiFi 模組控制。最後一個影片展示如何使用自訂的連續圖型並以動畫做表示。

關於程式碼的說明,可以參考網頁中所提供的超連結看原始作者的說明 ( 程式碼裡面也有 )。但是要注意的是:在網頁影片中所使用的 MAX7219 模組與超連結網頁中所始使用的不同,一定必須使用賣場所提供的程式碼才可以跟影片中展示的結果一樣,不然會相差 90 度。

有購買此套件的使用者,在雲端硬碟零件的資料夾中有所需要安裝的函式庫檔案 ( 函式庫安裝方式,請自行參考 arduino 官網的教學 ),以及網頁影片中所使用的程式碼。

2015年7月26日 星期日

{ Arduino + DS18B20 } 如何取得多顆 DS18B20 溫度感測器序號和溫度值

此篇網頁是 DS18B20 說明應用網頁的其中一篇,除了微處理器使用 Arduino 之外,都是使用於讀取多個 DS18B20 溫度感測器序號和溫度值。

Arduino 使用 Serial Monitor 和整合型 LCD 輸出結果,ESP8266 則燒錄 NodeMCU 韌體使用 UART 輸出 ( NodeMCU 韌體燒錄可參閱這篇網頁說明 )。不同的是 ESP8266 可以整合 WiFi 網路做成 IoT ( 物聯網 ) 應用,而且只需要 ESP8266 本身就可做到,不再需要其他微處理器;若使用 AT 韌體就需要其他微處理器做控制中心。

2015年6月29日 星期一

使用 N-Channel MOSFET 做 I2C 電壓準位轉換電路

網頁最後修改時間:2016/08/03 更新
I2C 電壓準位轉換電路圖 (V0.2)
感謝網友 
Tad Chu 的提醒,修正 Q1 和 Q2 的接腳錯位問題
寫這網頁的主要目的:轉換兩個不同電壓之間通訊的準位,且是可雙向溝通的。

在 proteus 的 賣場 裡,販售的大多是 3V3 或是 5V 控制的電子零件,有時候因為控制訊號與微處理器之間電壓準位的關係,必須在兩者之間再加入準位轉換的模組才能正常通訊,但這大多用在單向通訊或是控制比較多。所以若是出現需要在同一支接腳實現收、或發的動作,例如 I2C 的 SDA 接腳,若不是需要很多支情形之下,上面的電壓準位轉換電路就是一個很好的選擇  !

2015年6月26日 星期五

如何使用 SHARP Optical Dust Sensor 量測懸浮粒子以及計算空氣品質指數 ( AQI, Air Quality Index )


這是關於露天賣場懸浮粒子感測器的範例展示與使用說明網頁。此網頁將會說明如何使用 SHARP GP2Y1010AU0F Dust Sensor 量測出 PM2.5 與 PM10 懸浮粒子的濃度,並計算得出相對應的空氣品質指數 ( Air Quality Index, AQI )。

千言萬語說一大堆,倒不如先看影片中的展示,剩下的我再後補!

螢幕左上方是 Arduino IDE 的畫面,用來直接修改使用 PM2.5 或是 PM10 的懸浮粒子大小的定義,這些是用來對照到 AQI ( 空氣品質指數 ) 的數值。

螢幕左下方,是 Serial Monitor 的輸出畫面。輸出 Vo 的讀取到的類比轉數位的數值 ( 0-1024 );計算成電壓的數值;由電壓對照出的懸浮粒子密度值;懸浮粒度值轉換成 AQI 指數。

螢幕右上角,是配合整合型 LCD 顯示 AQI 數值以及相對應的懸浮粒子危險等級文字訊息。

上面只是粗略的對於 PM2.5 與 PM10 做說明,WiKi:空氣品質指數有討論關於空氣品質指數的計算,而我們的範例是假設 PM2.5 和 PM10 是空氣品質分指數裡面最高的,而且是將數據即時顯現出來;對於 PM2.5 或 PM10 必須要連續 24 小時的數據做平均來得到的,這一點使用時必須要特別注意!

詳細的說明,等我寫完再更新上來........ 待續..........

2015年6月20日 星期六

[ MAX6675 + LCD @Arduino ] 整合型 LCD 顯示 MAX6675 K 型熱電偶溫度及開路偵測

網頁最後修改時間:2016/12/19 

MAX6675 是一個具有冷結點 ( Cold-Junction ) 補償,將 K 型熱電偶 ( Thermometer, 簡稱 TC ) 溫度轉換為數位資料的傳換晶片 ( 如上圖上最左邊已做成電路板模組的形式 ),有 12-bit 的解析度和 0.25 ℃ 的精度,還具有 K 型熱電偶開路偵測的功能;配合不同的溫度探頭形式,可用在狹小或是密閉空間中的溫度偵測,溫度可達 1023.75 ℃。本篇將以賣場這款 "MAX6675 - K 型熱電偶溫度轉換模組" 配合 Arduino 顯示溫度在 "{5V} 整合型 LCD" 上作範例來做說明,並且在熱電偶被拔除或是開路時,會顯示 "TC is open !" 以及每隔 5 秒在偵測一次 TC 是否已恢復正常 ? 再繼續溫度的顯示。

2015年5月31日 星期日

ESP8266 ( ESP-01 ) 無線模組燒錄 NodeMCU 韌體 ( Lua 語法支援 )

網頁最後修改時間:2016/12/19
NodeMCU 是一個開放原始碼與硬體,並將 Lua 嵌入到 ESP8266 中的一個成功的項目。而在這篇網頁中,將會介紹如何使用賣場的 ESP8266 IoT 入門學習套件,燒錄可支援 Lua 語法的 NodeMCU 韌體進到 ESP8266, ESP-01 中,並且介紹一個方便的軟體做為學習 NodeMCU 之用。最後,我會給出幾個 ESP8266, ESP-01 的例子,撰寫 Lua 程式控制 LED 開關以及以 PWM 控制 LED 漸亮與漸滅來做示範;最後介紹 Arduino 如何與燒錄 NodeMCU 的 ESP8266 ESP-01 做溝通控制作為結尾。

之前曾經有使用者遇到無法使用 AT 指令將設定的資料存放在 ESP8266 ESP-01 中的問題,只要更新為 NodeMCU 之後,就可以很容易的將其存放在 ESP 的檔案系統裡,每次重新啟動或是開機就會自動載入,不用預先撰寫初始化程式。

相信我,看過這篇網頁的介紹之後,你(妳)會喜歡上 NodeMCU

2015年5月30日 星期六

自行更新 ESP8266 , ESP-01 無線模組韌體至 AT:0.23, SDK:1.0.1

網頁最後修改時間:2016/12/19
韌體更新為 AT:0.23, SDK:1.0.1 之後的版本訊息

如果手邊的 ESP8266, ESP01 AT 指令的版本小於 0.23 的話,可以下載網頁提供的韌體檔案自行燒錄升級。

如果有賣場的 IoT 套件,有兩種韌體升級更新的選擇 ( 相關資料都以同步至雲端硬碟,網頁中也有下載與使用的資料 ):
  1. AT: 0.23, SDK: 1.0.1
    AT 指令的升級更新 ( 這篇網頁說明的重點 ),主要是因為要讓使用者同步 AT 版本,而且解決了舊版本不能儲存使用者網路參數設定的問題。
  2. NodeMCU 0.9.5
    使用 Lua 語法操控 ESP8266 的韌體。
Note:若是已經玩過 ESP8266 AT 指令的使用者,建議更新韌體為 NodeMCU!

2015年3月15日 星期日

初遇 IoT ( Internet of Thing, 物聯網 ) - 使用 Arduino 控制 ESP8266 無線模組上傳資料到 IoT Server ( ThingSpeak )

網頁最後修改時間:2017/01/07
ThingSpeak 環境溫濕度記錄圖
網路是構成物聯網 ( IoT, Internet of Things ) 其中一項不可或缺的技術,而 IoT Server 就是用來蒐集並記錄由世界各地傳過來的數據資料,這些資料可以自己使用也可以分享給其他人做使用,這對於需要在世界各地蒐集資料的科學家或是程式設計師,善用這些資料可以加速其研究分析的工作,節省很多的時間。例如,對於科技農夫來說,可以蒐集整片土地上面各處土壤的溫溼度、光照程度在特定時間間隔的分佈狀態,以長時間的數據來分析影響土地上各植物的生長狀態的因素,幫助農夫可以做製程改善達到最大的產量輸出。當然,還有很多的應用,可以利用物聯網的方式來實現,而本篇網頁提出一個實際的例子來說明,如何使用賣場的 "ESP8266 IoT 入門學習套件" 每隔 60 秒傳送環境溫濕度到 IoT Server ( ThingSpeak ) 做紀錄。

*********************************************************************************
   物聯網,維基百科的解釋
*********************************************************************************

2015年3月3日 星期二

ATtiny85 開發板使用說明,與 Arduino IDE 編輯環境設置

網頁最後修改時間:2017/01/02

ATtiny85 是屬於 ATMEL 生產的 AVR 8-bit 微控制器晶片,具有 8K Byte 可程式 Flash ROM、512 Bytes In-System 可程式 EEPROM 與 512 Bytes 內部 SRAM,8 支接腳的封裝非常適合小型專案的開發。

一般開發 AVR 晶片使用 ATMEL Studio 或 IAR 整合編輯環境又或是直接使用 AVR GCC 撰寫韌體程式,需要閱讀篇幅攏長的資料手冊才能掌握晶片的開發要點。優點是可以完全發揮晶片的各項功能,但缺點是需要耗費比較多的時間在底層的硬體參數設置與規劃上。對於初學者或是想嘗試使用 ATMEL AVR ATtiny 晶片的人來說,都是非常折磨人的過程 ! 尤其,只需要用到幾支接腳功能的應用來說,能夠快速達到要求才是最重要的,上手過程能夠越短就能省下更多的時間與金錢 !

ATtiny85 開發板就是能解決這問題的一項選擇!

如果是直接使用已經設置好 ATtiny85 開發板的 Arduino IDE 版本 ( 最新的官方釋出版本是使用 Arduino IDE 1.5.8 版本做修改 ),那接下來就只要注意到硬體限制的部分與注意事項就好,其他的部分就毋須理會 ! 但若需要設置 ATtiny85 開發板到 Arduino IDE 不同版本中 ( 這裡是使用 Arduino IDE 1.6.0 做示範,但同樣適用於 1.5 以上的版本 ),也就是讓現有的 Arduino IDE 支援 ATtiny85 開發板的話,那就要注意接下來網頁中的說明!

Note:下面的操作需要一些檔案,這些檔案放置在賣場所提供的雲端硬碟資料夾中,請先開啟雲端硬碟或是下載全部檔案以備使用。若沒有賣場所提供的檔案,同樣的也可以上網找到這些支援檔案依照說明做安裝。

2015年1月16日 星期五

[ Wireless-RF@Arduino ] 無線天氣資料傳輸 - Arduino Manchester 函式庫應用

網頁最後修改時間:2016/09/04 

延續上一篇 Manchester ( 曼徹斯特 ) 函式庫的介紹,這一篇將繼續深入一點點,連接 BH1750 ( 光照度感測器 ) 和 DHT11 ( 溫溼度感測器 ) 在 Arduino 板子上,所收到的溫溼度以及環境照度資料經由 RF433 以及 ASK433 ( 如下圖 ) 無線發射模組傳送到遠端的無線接收端。

本篇除了使用與上一篇同樣的方法傳送資料之外,還介紹了使用陣列傳送的方式,使用這方法可以擴展更多的 ID 與資料串列,用來接收更多不同無線發射端的資料 !
賣場的無線發射接收模組 ( 左邊:本文稱 RF433;右邊:本為稱 ASK433 )