2015/05/21

Raspberry Pi:溫濕度感測器DHT11

很快速地嘗試使用溫濕度感測器DHT11,可量測相對濕度20~90%,誤差±5%;溫度0~50℃,誤差±2℃。

電路圖如下:

然後安裝Adafruit寫好的模組與範例程式,有C也有Python,嘿。

先安裝所需套件:
$ sudo apt-get update
$ sudo apt-get install build-essential python-dev

然後下載,進入該目錄:
$ git clone https://github.com/adafruit/Adafruit_Python_DHT.git
$ cd Adafruit_Python_DHT

安裝:
$ sudo python setup.py install

接著就能讀取DHT11了,執行寫好的範例Python程式:
$ cd examples
$ sudo ./AdafruitDHT.py 11 4
Temp=27.0*C  Humidity=81.0%

其中參數11代表DHT11,4代表我把它接到Raspberry Pi的GPIO 4。


參考資料:

2015/05/13

Raspberry Pi與Java 8:Hello World

嘿,我好久沒寫Java的程式,聽說Raspberry Pi/Raspbian已預設安裝Java 8(套件名oracle-java8-jdk),來試試看吧。

首先是簡單的Hello World,程式碼如下:

public class HelloWorld{
        public static void main(String[] args){
                System.out.println("Hello, world!");
        }
}

儲存為檔名HelloWorld.java,然後進行編譯:

$ javac HelloWorld.java

得到HelloWorld.class,然後執行:

$ java HelloWorld
Exception in thread "main" java.lang.UnsupportedClassVersionError: HelloWorld : Unsupported major.minor version 52.0
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:643)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
        at java.net.URLClassLoader.access$000(URLClassLoader.java:73)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:212)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:323)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:268)
Could not find the main class: HelloWorld. Program will exit.

嘿,怎麼會這樣呢?這麼簡單的程式碼也出錯?查詢javac與java的版本後,

$ javac -version
javac 1.8.0

$ java -version
java version "1.6.0_34"
OpenJDK Runtime Environment (IcedTea6 1.13.6) (6b34-1.13.6-1~deb7u1+rpi1)
OpenJDK Zero VM (build 23.25-b01, mixed mode)

發現兩者不同,所以問題應該是程式被編譯為1.8版,但執行環境(JRE、JVM)卻是1.6版,於是無法執行。嗯,怎麼辦呢?試著以參數指定版本吧:

$ javac -source 1.6 -target 1.6 HelloWorld.java
warning: [options] bootstrap class path not set in conjunction with -source 1.6
1 warning

$ java HelloWorld
Hello, world!

哇,成功囉。

嗯,不過我想玩Java 8的新功能與新特色啊,拜過孤狗大神後,到Oracle JDK的網頁,下載JDK 8 for ARM,我下載的是jdk-8u33-linux-arm-vfp-hflt.tar.gz,放在家目錄裡,然後進行底下的步驟:

$ sudo mkdir -v -v /opt/java

$ sudo tar zxvf ~/jdk-8u33-linux-arm-vfp-hflt.tar.gz -C /opt/java

解壓縮並把所有東西放進/opt/java裡的子目錄jdk1.8.0_33,此時可刪除原先的壓縮檔。然後是告知系統我們想要使用剛剛安裝的Java版本。

$ sudo update-alternatives --install "/usr/bin/java" "java" "/opt/java/jdk1.8.0_33/bin/java" 1

$ sudo update-alternatives --set java /opt/java/jdk1.8.0_33/bin/java
update-alternatives: using /opt/java/jdk1.8.0_33/bin/java to provide /usr/bin/java (java) in manual mode

查看版本,都是1.8囉。

$ javac -version
javac 1.8.0

$ java -version
java version "1.8.0_33"
Java(TM) SE Runtime Environment (build 1.8.0_33-b05)
Java HotSpot(TM) Client VM (build 25.33-b05, mixed mode)

另外,有些軟體需要環境變數JAVA_HOME,請編輯~/.bashrc,加入:

export JAVA_HOME="/opt/java/jdk1.8.0_33"
export PATH=$PATH:$JAVA_HOME/bin

耶,趕快來玩Java 8吧。


參考資料:

2015/05/10

Raspberry Pi情報彙整(49)

我收集整理網路上看到的、感興趣的、跟Raspberry Pi相關的資訊,如果您發現任何新奇驚人的專案、新聞、活動等等,還請留言告知。

TrafficHAT — Ryanteck LTD.,一塊簡單的擴充版,三個大大的LED,一個按鈕,以及蜂鳴器。

Windows IoT - Get Started,Windows 10與Arduino、Raspberry Pi 2、Intel Minnowboard MaxHackster.IO我也在Pi 2上安裝Win 10了。嘿嘿,看看那台可愛的小機器人B15吧,裡頭是Pi 2 + Win 10喔。
Raspberry Pi Music Fingers,運用電容式感測技術,製作音樂手指,每個手指一敲,發出不同聲響。
Pi-nk : tutorial,結合rpi與Kindle,詳細的步驟指引。
Raspberry pi "Power" case,裝入rpi後,這個外殼能夠直接插入電源插座,方便吧。
Raspberry Pi Academy — Medium,記錄參加Picademy的過程與感想。
Camera board extension | Raspberry Pi,相機模組的擴充延長線,5公尺的HDMI線。
PiMuxClock by David M Saul — Kickstarter,一塊簡單的擴充板,可用來顯示時間與溫度。
CHIP - The World's First Nine Dollar Computer by Next Thing Co. — Kickstarter,哇賽,九塊美金的電腦,又小又便宜。使用Allwinner SoC,1GHz、512MB DDR3記憶體,能以3.7V鋰電池供電。造成轟動,不過也看看另一面向的意見吧:C.H.I.P 是超級大團購,還是翻轉的新起點?Interview with the Creators of CHIP, a $9 Single-Board Computer | Hackaday
PyConAPAC 2015 Tutorial - Raspberry Pi Camera + Python,台灣樹莓派的相機模組工作坊,2015/05/31,使用Python語言。

其他: