很多人都想知道到底要學哪一種程式語言,當然大家都有自己的意見和想法。
不過,終於有一個專業網站提出了數據,給大家參考。
TIOBE
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
這個指數主要是在看程式語言的受歡迎程度。
每個月會更新一次,依照全球此技術工程師人數,開課課程和第三方供應商來排行,應該是滿準確的。
看看自己熟悉的程式語言現在排行第幾了?
Peter Huang的新玩意
把一些好玩的東西放上來,大家一起研究研究。
2013年9月30日 星期一
自由軟體(辦公室文書處理)
由於office 2003 和 xp很快就要停止支援了,所以公司開始導入open office了.
目前有兩套open office系統.
第一套是 Libreoffice
第二套是 Openoffice
整體來說這兩套介面上都差不多,libreoffice更新比較快 ,open office則是比較穩定。
另外,如果要換掉office,那就也必須將outlook換成thunderbird。
目前已經將自己電腦的OFFICE移除了快一個月,尚未感覺到有什麼不能解決的問題。
總之先立一個文章,再慢慢的把碰到的問題分享了。
目前有兩套open office系統.
第一套是 Libreoffice
第二套是 Openoffice
整體來說這兩套介面上都差不多,libreoffice更新比較快 ,open office則是比較穩定。
另外,如果要換掉office,那就也必須將outlook換成thunderbird。
目前已經將自己電腦的OFFICE移除了快一個月,尚未感覺到有什麼不能解決的問題。
總之先立一個文章,再慢慢的把碰到的問題分享了。
2013年8月21日 星期三
樹莓派Raspberry透過arduino取得DHT-11溫度數據
DHT-11這個溫度和濕度感應器,在PCHOME購買,只花了55 NTD。
就像上面所說的,它可以偵測到0-50度,濕度是20%-95%,應該可以說是最基本型的感應器。如果需要更特別的功能,可能就得買更好的感應器了。
透過ARDUINO取得DHT-11溫度感應器的範例已經很多了,這邊也不在說明。
這邊研究的是,如何使用樹梅派,安裝PHP之後,利用網頁顯示溫度資訊。
首先,先參考網路範例,將 DHT-11安裝完畢。
修改arduino程式, 如果樹莓派傳送'T', 會回傳溫度。如果樹莓派傳送'M', 就回傳濕度。
#include <DHT11.h>
int pin=2;
DHT11 dht11(pin);
void setup()
{
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}
}
void loop()
{
int err;
float temp, humi;
if (Serial.available() > 0) {
// read data
int inByte = Serial.read();
if((err=dht11.read(humi, temp))==0){
switch (inByte) {
case 'T':
Serial.print(temp);
break;
case 'M':
Serial.print(humi);
break;
default:
Serial.print(inByte);
}
}
delay(DHT11_RETRY_DELAY); //delay for reread
}
}
如果直接使用php來連結USB到arduino,就會馬上碰到權限的問題。因為apache是使用apache這個權限在執行,預設是無法讀取到usb,自然也無法直接對arduino下達命令。
故使用root權限,撰寫以下SHELL,並設定crontab,讓系統每分鐘執行該SHELL,把結果導入到/var/www/html/log 這個檔案中。
#!/usr/bin/bash
#設定stty
stty -F /dev/ttyACM0 cs8 9600 ignbrk -brkint -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts
#使用CAT 將ttyACMO的資訊導入到檔案
cat /dev/ttyACM0 > /var/www/html/log &
#休息一下 避免CAT還沒執行,就傳送訊息給ARDUINO。
sleep 1
#傳送T給ARDUINO
echo 'T' > /dev/ttyACM0
#砍掉CAT監控程式
kill -9 $(ps -ef | grep ACM0 | awk '{ print $2}' )
PHP再去開啟該檔案,就可以達到PHP讀取溫度的功能。
<?php
$file = fopen("log", "r");
$value = fgets($file);
print "The temperature is " . $value . "<br>";
// Close the file that no longer in use
fclose($file);
?>
crontab設定每分鐘去執行該SHELL
*/1 * * * * /var/www/html/shell.sh
結果如下
結論:
樹莓派上面使用PHP來讀取ARDUINO有滿多的限制,主要就是因為APACHE是用apache這個帳號執行,而非root。當然我們可以把這些限制都移除,比方說用ROOT來執行APACHE,但是這又有很多安全上的疑慮。
所以目前採用SHELL的方式,使用root身分執行crontab,設定每分鐘定期去撈取溫度資料,並存入到一個特定檔案中。再用PHP的開檔功能去讀取該檔案,取得溫度資料。目前測試正常。
2013年8月12日 星期一
RASPBERRY PI 連結arduino版
所需工具
1. 樹莓派
2. arduino mega 2560
3. 七段顯示器
4. 麵包版
5. 線材, 電阻
買了樹莓派後,就心血來潮的把已經被快被蜘蛛網包覆的arduino拿出來了。
由於之前已經完成了一個arduino的七段顯示器實驗,請參考網址,就決定修改此功能,
將其修改為讓RASPBERRY PI 利用USB將數字傳輸給arduino後,
arduino接收數字後進行顯示的功能。
首先,先安裝一個pidora起來。安裝pidora的原因是因為我比較熟悉fedora的介面,等等可以用yum 來安裝相關資料。
安裝完成後,執行yum install arduino 就會將arduino進行安裝。
在X WINDOW環境上,開啟一個終端機,使用root權限,執行
[root@raspi ]#arduino
即可開啟arduino程式。
參考以下圖一,將arduino的USB接到樹梅派上面.
修改arduino程式,將 Serial.begin(9600); 加入到setup段落。
目的是為了要設定鮑率。
另外, LOOP段 修改如下:
void loop() {
int incomingByte = 0;
if (Serial.available() > 0) {
// read the incoming byte:
incomingByte = Serial.read();
incomingByte = incomingByte - 48;
if (incomingByte >0 && incomingByte < 10){
sevenSegWrite(incomingByte);
// say what you got:
Serial.print("I received: ");
Serial.println(incomingByte, DEC);
}
}
delay(1000);
}
其中,-48的原因是因為接收到的為ascii碼,需減去48才能還原為數字。
接著將程式上傳到arduino。
執行arduino的tools==> Serial Port ==> 選擇 /dev/ttyACM0
執行arduino的tools==> Serial Monitor 傳送 123456789到arduino,效果如影片一。
1. 樹莓派
2. arduino mega 2560
3. 七段顯示器
4. 麵包版
5. 線材, 電阻
買了樹莓派後,就心血來潮的把已經被快被蜘蛛網包覆的arduino拿出來了。
由於之前已經完成了一個arduino的七段顯示器實驗,請參考網址,就決定修改此功能,
將其修改為讓RASPBERRY PI 利用USB將數字傳輸給arduino後,
arduino接收數字後進行顯示的功能。
首先,先安裝一個pidora起來。安裝pidora的原因是因為我比較熟悉fedora的介面,等等可以用yum 來安裝相關資料。
安裝完成後,執行yum install arduino 就會將arduino進行安裝。
在X WINDOW環境上,開啟一個終端機,使用root權限,執行
[root@raspi ]#arduino
即可開啟arduino程式。
參考以下圖一,將arduino的USB接到樹梅派上面.
圖一
修改arduino程式,將 Serial.begin(9600); 加入到setup段落。
目的是為了要設定鮑率。
另外, LOOP段 修改如下:
void loop() {
int incomingByte = 0;
if (Serial.available() > 0) {
// read the incoming byte:
incomingByte = Serial.read();
incomingByte = incomingByte - 48;
if (incomingByte >0 && incomingByte < 10){
sevenSegWrite(incomingByte);
// say what you got:
Serial.print("I received: ");
Serial.println(incomingByte, DEC);
}
}
delay(1000);
}
其中,-48的原因是因為接收到的為ascii碼,需減去48才能還原為數字。
接著將程式上傳到arduino。
執行arduino的tools==> Serial Port ==> 選擇 /dev/ttyACM0
執行arduino的tools==> Serial Monitor 傳送 123456789到arduino,效果如影片一。
影片一
2013年8月8日 星期四
樹莓派raspberry pi 安裝XBMC
總共花了1799買了以下幾個東西。
1. Raspberry Pi Model B (512 MB)
2. 透明外殼
3. 8G的記憶卡
4. 散熱片
安裝方式:
1. 硬體:將透明外殼組好後,將HDMI線,鍵盤,滑鼠,網路接上。接上後如圖1.1。
(樹梅派本身無電源裝置,所以電源可以先不接,避免樹莓派直接開機)
圖1.1
樹莓派預設只有兩個USB插槽,所以以這個例子,我使用了一個USB HUB外接,這樣就不用擔心USB PORT不足的問題(如圖1.2)。
圖1.2
2. 軟體:軟體的部份,其實是很簡單的。最快的方式是直接安裝已經打包處裡好的raspbmc作業系統。
網址為: http://www.raspbmc.com/wiki/user/windows-installation/
如果有求知慾望,可以仔細研究以上連結的內容,下面是簡化的方式。
2.1 WINDOWS用戶,請下載
http://download.raspbmc.com/downloads/bin/installers/raspbmc-win32.zip
將一張SD卡放入到讀卡機中後,
解開壓縮檔案後,執行installer.exe (或是文件裡的setup.exe)
執行後,應該會出現以下畫面。
勾選該張SD卡後,將I accept the license agreement 打勾。
點選install。
此時,該安裝程式會安裝相關資料到該SD卡上面。
圖2.1.1
2.2 LINUX用戶或是MAC用戶請參考http://www.raspbmc.com/wiki/user/os-x-linux-installation/
3. 安裝完畢後,當然就是把SD卡插入到樹梅派上了。
由於樹莓派本身無電源開關,接上電源後,系統就會開機了。
如圖3.1, 開機後應該所有的燈號都會亮。
圖 3.1
系統需要連結網路,如果網路不通,就會出現以下錯誤(圖3.2)。
圖 3.2
通知你需要15-20分(圖3.3)。
圖 3.3
進行磁碟分割(圖3.4)。
圖 3.4
下載相關資料(圖3.5) , 建議你去喝杯咖啡。
圖 3.5
進行安裝。(圖3.6)
圖 3.6
進入到XBMC。(圖3.7)
圖 3.7
完全不會LAG。(圖3.8)(不會斷斷續續,或是完全無畫面)
圖3.8
4. 結論
樹莓派規格如下:
- SoC Broadcom BCM2835 (CPU, GPU, DSP, and SDRAM)
- CPU: 700 MHz ARM1176JZF-S core (ARM11 family)
- GPU: Broadcom VideoCore IV, OpenGL ES 2.0, 1080p30 h.264/MPEG-4 AVC high-profile decoder
- Memory (SDRAM): 512 Megabytes
- Video outputs: Composite RCA, HDMI
- Audio outputs: 3.5 mm jack, HDMI
- Onboard storage: SD, MMC, SDIO card slot
- 10/100 Ethernet RJ45 onboard network
- Storage via SD/ MMC/ SDIO card slot
可以發現樹莓派本身採用ARM CPU,不過只有700 MHZ。測試了一些別的LINUX系統後,如果跑X WINDOWS的GUI程式,速度不是很好。但是如果執行TERMINAL指令模式,其實還不錯。令外,他有內建GPU,該GPU本身支援解碼,所以使用XBMC看電影,基本上是不會LAG,跑的非常順。
訂閱:
文章 (Atom)