2017年7月30日 星期日

DHT11 Temperature and Humidity with LCD Display

The data from DHT11 Sensor send to Arduino UNO and then displaying the humidity and temperature on the I2C LCD Display.
Parts List
  • Arduino UNO
  • I2C LCD display 16×2
  • DHT11 Temperature and Humidity Sensor
  • 4.7k resistor
Library
DHT11_LCD_01
Wiring Arduino UNO + I2C LCD + DHT11  Sensor
DHT11 Temperature and Humidity with LCD Display_Elec-Cafe
Upload Code to Arduino
#include <DHT11.h>
#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
// Addr, En, Rw, Rs, d4, d5, d6, d7, backlighpin, polarity

int pin = A0;
DHT11 dht11(pin);

double Fahrenheit(double celsius) {
return ((double)(9 / 5) * celsius) + 32;
}

double Kelvin(double celsius) {
return celsius + 273.15;
}

void setup() {
lcd.begin(16, 2);
lcd.backlight();
lcd.clear();
lcd.print("Humidity & temp");
delay(3000);
lcd.clear();
lcd.print("Starting.....");
delay(3000);
}

void loop() {
int err;
float temp, humi;
if ((err = dht11.read(humi, temp)) == 0)
{
lcd.clear();
delay(500);
lcd.setCursor(0, 0);
lcd.print("Temp");
lcd.setCursor(0, 1);
lcd.print("Humidity");
lcd.setCursor(9, 0);
lcd.print(temp);
lcd.print(" C");
lcd.setCursor(9, 1);
lcd.print(humi);
lcd.print(" %");
delay(10000);
}
else
{
lcd.println();
lcd.print("Error No :");
lcd.print(err);
lcd.println();
}
}
LCD Display Temperature and Humidity
DHT11_LCD_02

2017年7月28日 星期五

SkyDrive就可以把PDF轉成Word來編輯

PDF轉Word的工具非常多,免費和付費都有,但試過很多種工具,繁中的PDF檔轉換出來的內容經常是亂碼,尤其有表格的話,風險更高。在遇見SkyDrive之後,發現自己犯傻了,原來只要運用SkyDrive開啟PDF檔,內建的Word Web App即可幫我們把PDF檔轉換成可編輯的Word檔。
原來SkyDrive提供免費的網頁版Office,使用者可以在SkyDrive中開啟Word、Excel、PowerPoint及OneNote,現在又多了支援PDF檔。

讓我們來見證這個奇蹟
在SkyDrive中,上傳並開啟一個PDF 檔時,你就會看到Word Web App執行
然後看到亂碼的內容還真是令人傷心

但別難過,很快就出現「File Conversion」,按「Convert」


就看得懂囉~==b

但這時仍是無法編修的,所以我們來按【Edit Document】,我選【Word Web App】

然後你看看,就可以輸入文字了 ^^

你也可以看到轉出來的內容,會多出一些像"口"的內容,我是覺得能正確轉成Word實在太感人了,小小需要修正的部分,實在微不足道的問題。

2017年7月27日 星期四

Arduino : HC-06 藍芽模組的設定

HC-06 的 firmware 沒有 HC-05 完整,少了很多的 AT 指令可以使用,最重要的是,在沒有進行藍芽配對時就是 AT command mode,不用像 HC-05 必須將 key 設為高電位才能進入 AT command mode,這一關卡最久。不過,這也有一個缺點,HC-05 的 AT command mode 使用固定的 baud rate 38400,而 HC-06 如果已經改過 baud rate ,想利用 AT command mode 來改 baud rate,如果忘了原來的設定值,還得先猜一下原來設的速率是多少,不然根本無法溝通(不知是否有辦法讓它恢復成預設值?)。下面就來看看如何設定 HC-06 的連線速率。



以 USB to TTL 與 HC-06 連線

如果有 USB to TTL ,就按底下的對應該關係將腳位接好:

HC-06 VCC → USB/TTL 5V
HC-06 GND → USB/TTL GND
HC-06 TXD → USB/TTL RXD
HC-06 RXD → USB/TTL TXD

像我的 USB to TTL 直接用 4 pins 的杜邦端子插上就搞定了。不過,接過好幾個不同的裝置後,終於搞懂我的 USB to TTL 上的標示 TXD & RXD 是另一端的,每次我照著腦中的記憶,將 TXD & RXD 對調,反而是錯的。結論是:手冊很重要,不過,我買的這個沒手冊 XD。



接好線後,將 USB/TTL 插入電腦並以終端機軟體(例如:Windows 的「超級終端機」、putty .....)連上 USB/TTL 的序列埠即可輸入 AT commands。


以 Arduino 與 HC-06 連線

第二種方式是利用 Arduino 的 SoftwareSerial 來和 HC-06 通訊,顯示訊息及輸入指令的工作交給 Arduino 的序列埠,再由 Arduino 幫我將指令透過我們自訂的腳位寫入 HC-06 並由 HC-06 擷取回應的訊息。

HC-06 和 Arduino 的腳位對應如下:

HC-06 VCC → Arduino 5V
HC-06 GND → Arduino GND
HC-06 TXD → Arduino pin 10
HC-06 RXD → Arduino pin 11



接好硬體後,將下面改自 Hazim Bitar (techbitar) 給 HC-05 的 firmware 程式碼 upload 到 Arduino:

#include <SoftwareSerial.h>
SoftwareSerial BTSerial(10, 11); // RX | TX
void setup()
{
  Serial.begin(9600);
  Serial.println("Enter AT commands:");
  BTSerial.begin(9600);  // HC-06 current bound rate (default 9600)
}
void loop()
{
  // Keep reading from HC-06 and send to Arduino Serial Monitor
  if (BTSerial.available())
    Serial.write(BTSerial.read());
  // Keep reading from Arduino Serial Monitor and send to HC-06
  if (Serial.available())
    BTSerial.write(Serial.read());
}

上面紅色的 9600 是 HC-06 出廠後的預設 baud rate,如果已經改過了,必須自己置換掉,不然,可能無法正常連線。

Arduino firmware upload 完畢,關掉 Arduino IDE 程式後,我們就可以用終端機軟體連 Arduino 的序列埠(以 9600 來連線)。成功和 Arduino 連上線,畫面上應該會出現Enter AT commands:」的訊息,如果輸入「AT」,HC-06 應該會回應「OK」,如果沒有回應,就要檢查一下接腳是否正確,或是將「BTSerial.begin(9600)」中的 9600 要換成別的連線速率試試。


HC-06 的 AT command

HC-06 的 AT command 只有簡單的幾項,而且不像 HC-05 必須按 Enter 鍵送出「\r\n」才會執行並回應。所以,我們一按完「AT」兩個按鍵,它馬上就回應「OK」了。試了一下,它的指定一定要用大寫字母,也沒有什麼查詢的 AT 指令,底下就列出在玩 S4A 可能會用到的 AT commands。

  • AT:測試,回應「OK」
  • AT+VERSION:回應靭體的版本。
  • AT+NAMExyz:將裝置名稱改為「xyz」。n                                  
  • AT+PIN1234:將連線密碼換為「1234」。
  • AT+BAUD4:將 baud rate 換為 9600。
  • AT+BAUD5:將 baud rate 換為 19200
  • AT+BAUD6:將 baud rate 換為 38400
  • AT+BAUD7:將 baud rate 換為 57600
更換 baud rate 的指定可以由 BAUD1~BAUDC ,有需要再自行上網找說明。

因為 HC-06 一輸入完「AT」就馬上會回應了,建議上面的指令用複製貼上的方法,不然,很難跟晶片比快啦!

Arduino藍芽遙控小車

使用Arduino搭配兩個模組

  1. MTADRL293D 馬達控制板
    1. http://ddddiy.blogspot.tw/2014/02/mtadrl293d.html
  2. HC-05 藍芽模組
    1. http://ddddiy.blogspot.tw/2014/02/hc-05-bt-module.html

做法:
  1. 參考這裡將HC-05 藍芽模組設定好,接上VCC/GND,並將HC-05的TX/RX接到Leonardo的RX/TX
  2. 將MTADRL293D插上Leonardo
  3. 將MTADRL293D的M1/M4(在這張版子上這兩顆馬達吃BATT的電,另外兩顆吃5V)接到車子左右兩顆馬達的正負極
  4. MTADRL293D接上電池

車身/履帶/減速機: 田宮 工作樂系列
範例程式碼:

如何重新安裝 macOS

瞭解如何在 Mac 上重新安裝 Mac 作業系統

開始之前

如果您要將 Mac 賣掉或送人,那麼首先應該停用特定功能與服務,然後依照本文中的步驟操作。
此外,重新安裝 macOS 的最簡單方式是從 Mac App Store 重新安裝。如果您無法利用 Mac App Store 重新安裝,請依照本文中的步驟操作。

從「macOS 回復」啟動

macOS 回復」功能會根據您在重新啟動時按下的按鍵組合,安裝不同版本的 macOS。按下電源按鈕後,緊接著馬上按住下列一組按鍵組合來啟動 Mac。看到 Apple 標誌或旋轉的地球時放開按鍵。
Command-R
重新安裝 Mac 之前安裝的最新 macOS,而不升級到更高的版本。1
Option-Command-R
升級到與 Mac 相容的最新 macOS。2
Shift-Option-Command-R
需要 macOS Sierra 10.12.4 或以上版本
重新安裝 Mac 原本搭載的 macOS,或是依然可用的最新版本。 
1.如果您要將 Mac 賣掉或送人,而它是執行 OS X El Capitan 或之前版本時,請使用 Option-Command-R 確保安裝不會與您的 Apple ID 建立關聯。
2.如果您並未安裝 macOS Sierra 10.12.4 或以上版本,則使用 Option-Command-R 會重新安裝 Mac 原本搭載的 macOS,或是依然可用的最新版本。

當您看到「macOS 工具程式」視窗時,請至下一節判斷應該要清除啟動磁碟,還是開始重新安裝 macOS

清除啟動磁碟(如需要)

從「macOS 回復」啟動後,應決定要清除啟動磁碟,還是開始重新安裝 macOS。在下列情況下,您應清除啟動磁碟:
  • 您要將 Mac 賣掉或送人,所以要清除 Mac 中任何與您、您的資料或您的 Apple ID 相關聯的一切內容。
  • 您要解決使用「磁碟工具程式」無法修復的問題。
  • macOS 安裝程式表示無法安裝在您的電腦或卷宗上,或是您的啟動磁碟無法用於啟動您的電腦。譬如,假設您嘗試安裝之前版本的 macOS 來覆蓋較新版本的 macOS,那麼安裝程式會表示這不可行,因為已安裝了較新的版本。
如果上述情況對您都不適用,請跳至下一節開始重新安裝 macOS。
清除啟動磁碟將會永久刪除儲存在其中的所有資料。
如果您需要清除啟動磁碟,請依照下列步驟操作:
  1. 在「macOS 回復」的工具程式視窗中,選擇「磁碟工具程式」,然後按一下「繼續」。
  2. 在「磁碟工具程式」的側邊欄中選擇您的啟動磁碟。
    請選取磁碟名稱,而不是底下縮排顯示的卷宗名稱。
  3. 按一下「清除」按鈕或標籤頁。
    如果沒有看到「清除」按鈕或標籤頁,請選擇卷宗名稱底下縮排顯示的卷宗名稱,然後再查看一次。
  4. 填妥下列欄位:
    • 名稱:輸入磁碟的名稱,如「Macintosh HD」。
    • 格式:選擇「Mac OS 擴充格式(日誌式)」。
    • 架構(如有):選擇「GUID 分割區配置表」。
  5. 按一下「清除」開始清除磁碟。
  6. 完成後,結束「磁碟工具程式」,返回工具程式視窗。現在您可以重新安裝 macOS 了。
「磁碟工具程式」視窗
在這個範例中,側邊欄顯示的磁碟名稱為 APPLE SSD,而 Macintosh HD 是卷宗名稱。

重新安裝 macOS

從「macOS 回復」啟動後,請依照下列步驟操作:
  1. 在工具程式視窗中,選擇「重新安裝 macOS」(或「重新安裝 OS X」)。
  2. 按一下「繼續」,然後按照螢幕上的指示操作,系統會要求您選擇啟動磁碟並按一下「安裝」。
    為確認是否有資格安裝 macOS,您的 Mac 序號會傳送給 Apple,您可能也要提供 Apple ID。
  3. 您的 Mac 會在安裝程序完成後重新啟動。
如果您清除磁碟後再重新安裝,或者要建立新的啟動磁碟,您的 Mac 會重新啟動到設定輔助程式。
  • 如果您要保留 Mac,請使用自己的資訊完成設定輔助程式。
  • 如果您要將 Mac 賣掉或送人,請按 Command-Q 結束設定輔助程式,而不執行任何設定步驟。然後按一下「關機」。當新的持有者啟動 Mac 時,可以使用自己的資訊完成設定。

App Inventor 透過藍牙傳送訊號給 Arduino

在撰寫程式前我們先準備以下材料:範例程式請點我下載(App Inventor中文學習網檔案庫)
材料清單:
1 Android系統智慧型手機
2.Arduino相容開發板 (本文使用Arduino Uno,其他的Arduino相容板也是類似的作法)
3.藍牙收發接收器(本系列使用JY-MCU04 or JY-MCU05) 請按照電路圖將電路接上(藍牙RX – Arduino D11, 藍牙TX – Arduino D10腳位)
bt
藍牙TX: Arduino D10 (RX)。藍牙RX: Arduino D11 (TX) 定義於I2CBT(10,11); 語法中
STEP1:App Inventor 編寫簡易的藍牙訊息發送程式。畫面上只有三個元件,由上而下依序為 ListPicker 與兩個Button。
1
程式碼說明:
在程式初始化時,設定各元件可否點選。並在 ListPicker 點選之前設定其內容為藍牙(BLuetoothClient)的配對裝置位址與名稱。
當 ListPicker 被點選之後,則對該點選位置發起連線。成功的話則設定各元件可否點選。
螢幕快照 2014-10-30 上午12.44.04
當按下[sens a word]按鈕後,Android 手機會經由藍牙發送一個字元「a」給Arduino,您可在 Arduino IDE 的 Serial Monitor 中看看是否正確接收。
按下[disconnect]按鈕,則斷開藍牙連線,並將各元件恢復連線前狀態。
螢幕快照 2014-10-30 上午12.44.13
STEP2:Arduino的CODE
#include <SoftwareSerial.h> 
#include <Wire.h>  //引用二個函式庫SoftwareSerial及Wire SoftwareSerial 
SoftwareSerial I2CBT(10,11); //定義PIN10及PIN11分別為RX及TX腳位 
void setup() { 
  Serial.begin(9600); //Arduino起始鮑率9600 
  I2CBT.begin(57600); //藍牙鮑率57600
  //(注意!此鮑率每個藍牙晶片不一定相同,請先確認完再填寫進去) 
} 

void loop() { 
  byte cmmd[20]; 
  int insize; 
  while(1){ 
  if ((insize=(I2CBT.available()))>0)
  {  //判斷有沒有訊息接收 
    Serial.print("input size = "); 
    Serial.println(insize);  //顯示接收多少訊息 
    for (int i=0; i<insize; i++) {
      Serial.print(cmmd[i]=char(I2CBT.read()));//將接收的訊息顯示出來
      Serial.println(" ");  
    }//if
  } //for 
  }//while
}
App Inventor send char to Arduino