2013年5月25日 星期六

Raspberry Pi Note #9 (mjpg streamer)

最近很忙,所以偷懶了一陣子

分享一下關於如何使用mjpg streamer將webcam影像即時顯示在網頁上

http://www.bobtech.ro/tutoriale/raspberry-pi/78-streaming-webcam-in-format-m-jpg-cu-raspberry-pi


2013年2月22日 星期五

MySQL and C++

在linux介面下要在C++使用mysql API很簡單

sudo apt-get install libmysqlclient-dev

就可以#include <mysql/mysql.h>

接下來就自行參照mysql官方的API說明

但是在windows就悲劇了

下載安裝mysql之後,在mysql目錄裡面只有提供給Visual studio編譯器們的.lib

沒有給mingw的.a

所以就要透過mingw的小工具reimp來把,lib轉換為.a

讓mingw可以使用(如果沒有reimp的就自己下載一下吧)

 先把mysql安裝目錄下的lib與include資料夾,複製到c:/mysql,因為我覺得他資料夾名稱太複雜,可能會有不可預期的怪事

開啟cmd(命令提示字元)

輸入

cd c:/mysql/lib

reimp -d libmysql.lib

dlltool -k -d libmysql.def -l libmysql.a

就會生成.a

如果是使用QT,可以在.pro中加入

LIBS += C:/mysql/lib/libmysql.a

INCLUDEPATH += C:/mysql/include\



Raspberry Pi Note #8 (C++ and MySQL)

最近需要透過網路來操作RSP的GPIO

為了達成這個目標,其實有很多方法可以實現

例如使用python搭配Webpy與gpio

或是網路上有強者寫好的,使用java與python

http://code.google.com/p/webiopi/

不過java與python我都不太熟悉

還是比較偏好使用PHP存取資料庫,並且使用C++來存為資料庫與GPIO中間之連結

在網路上找到一篇文章

http://www.metsky.com/archives/554.html

http://www.cnblogs.com/cy163/archive/2009/04/24/1442859.html

http://dev.mysql.com/doc/refman/5.1/zh/sql-syntax.html 

關於資料庫的部分大多是參考這個

2013年2月20日 星期三

Raspberry Pi Note #7 (LAMP Server)

LAMP Server 是許多網頁伺服器常見的架構

LAMP = Linux + Apache(網頁伺服器) + MySQL(資料庫) + PHP(Perl or Python等網頁語言)

如果有小流量個人的網頁架設需求的話RSP其實是一個很棒的平台

既省電又不占空間,隨手塞在牆邊就可以架站

但如果是大流量或是商業使用的話嘛...還是花點錢組台Server

首先,更新一下apt-get list

sudo apt-get update

然後安裝apache

sudo apt-get install apache2

預設是開機會自己啟動,並且網頁的目錄在/var/www

接下來安裝mysql

sudo apt-get install mysql-server

預設也是開機啟動

在接下來安裝PHP

sudo apt-get install php5

如果有圖形化介面資料庫的需求,也可以安裝phpmyadmin

sudo apt-get install php-myadmin



Raspberry Pi Note #6 (GPIO)

紀錄一下關於RSP的GPIO使用方法

如果是使用python的朋友,可以參考RSP官方所釋出的python GPIO 函式庫 

sudo apt-get update 
sudo apt-get install python-dev 
sudo apt-get install python-rpi.gpio

就可以安裝完成

http://code.google.com/p/raspberry-gpio-python/
https://pypi.python.org/pypi/RPi.GPIO

而在這些連結中有清楚的教學與範例

我並不熟悉python,所以這次的重點還是放在C++上

為了能將RSP的GPIO使用的像是Arduino一樣的簡單容易

https://projects.drogon.net/raspberry-pi/wiringpi/

使用一個好用的函示庫,wiringPi

他也有for python的版本,google wiringPi python 就可以找到

安裝方法有很多種,下面是關於安裝的教學

https://projects.drogon.net/raspberry-pi/wiringpi/download-and-install/

這個函式庫補充了RSP的PWM,I2C與SPI的功能

讓GPIO發揮更多功能

程式撰寫完成之後,編譯的指令為

sudo gcc test.c -lwiringPi -o test

記得要加-lwiringPi

C++的使用者就自己把gcc改成g++吧


2013年2月2日 星期六

Current Sensor

http://www.google.com.tw/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&ved=0CDYQFjAA&url=http%3A%2F%2Fwww.allegromicro.com%2F~%2FMedia%2FFiles%2FDatasheets%2FACS714-Datasheet.ashx&ei=zOsMUceXF4KnlQWnyYGADA&usg=AFQjCNGnQpf5D9mTUcEbo_-7Xw26-1O4wA&sig2=-bgW3P-CHq4oNCZphdrEaA

2013年1月21日 星期一

Raspberry Pi Note #5 (QT with OpenCV)

在上一篇提到了關於QT

但是如果是在RSP的環境中需要使用OpenCV來做一些影像處理及使用者介面的撰寫

就還需要再另外安裝函式庫了

需要確認是否有安裝libgtk2.0-dev與pkg-config

OpenCV會使用到相關的東西

sudo apt-get install libgtk2.0-dev

sudo apt-get install pkg-config

確認都是最新版之後

sudo apt-get install libopencv-dev

即可安裝完成OpenCV-2.3.1

如果需要安裝最新版的OpenCV,可能就要自己花一點時間cmake and make

根據我實測,大概要make整整12小時左右,所以沒有使用最新版需求的朋友不要輕易嘗試...會等很久

如果需要自己編譯方法如下

先去OpenCV官網下載linux版本,然後解壓縮,假設是解壓縮到這邊/opencv243

最好是使用root權限來編譯,不然出現甚麼問題都有可能

sudo -i

理論上會切換成root使用者

cd /opencv243

進入解壓縮好的資料夾

mkdir release

建立新資料夾來放編譯完成的檔案

cd /opencv243/release

進入資料夾cmake

cmake ..

cmake上層資料夾到release中

應該等個5分鐘就會好了

make

按下去之後會開始編譯,然後就去睡覺,大概起床就會編譯好了

make instal

安裝編譯完成的東西

這樣就大功告成了



只要在QT 的.pro中加入

OpenCV_Lib = /usr/lib

INCLUDEPATH += /usr/include\
               /usr/include/opencv2

LIBS += $$OpenCV_Lib/libopencv_highgui.so\
        $$OpenCV_Lib/libopencv_calib3d.so\
        $$OpenCV_Lib/libopencv_core.so\
        $$OpenCV_Lib/libopencv_features2d.so\
        $$OpenCV_Lib/libopencv_flann.so\
        $$OpenCV_Lib/libopencv_imgproc.so\
        $$OpenCV_Lib/libopencv_legacy.so\
        $$OpenCV_Lib/libopencv_ml.so\
        $$OpenCV_Lib/libopencv_objdetect.so\
 
就可以開心使用opencv 

2013年1月20日 星期日

Raspberry Pi Note #4 (QT)

這篇寫的是該如何在RSP上安裝QT這個跨平台的C++ IDE

其實滿簡單的

首先

sudo apt-get update

更新完之後

sudo apt-get install qt-sdk

耐心等待下載及安裝完成,就大功告成了

安裝完理論上在圖形化介面中就可以看到QT了

Opencv Note #1

Opencv (Open Source Computer Vision Library)
目前最新版本2.4.3

由於個人需求在Mingw+QT 4.8.4+QT Creator+windows 8的環境下使用opencv

但是QT官網上所提供的QT 4.8.4  是對應於 mingw4.4

由於經過實際測試使用migw4.4編譯opencv會出現一大堆狗屁倒灶的error

使用mingw 4.6就可以成功的編譯

經過幾天測試之後,成功的在這個環境下使用opencv

列出使用的軟體與版本

1.Opencv 2.4.3
2.CMake 2.8.10
3.QT library 4.8.4
4.mingw 4.6

首先,要先確保QT能夠正常的使用mingw4.4編譯程式,不論是安裝QT SDK或是獨立安裝mingw4.4的都無所謂

接下來去下載mingw4.6,安裝到電腦中

之後,將mingw4.6所安裝的資料夾位置中,bin資料夾的路徑位置加入至環境變數中(path)

完成後重新開機

接下來進去QT看看,是否compiler被置換成mingw4.6,再次確認QT編譯正常後

安裝CMake,選好輸入輸出資料夾,configure按到沒有紅字之後generate

開啟命令提示字元(cmd),進入generate出的資料夾,輸入mingw32-make

接下來耐心等待,完成後再輸入mingw32-install

就大功告成了,只需要在QT的專案檔中加入include與lib的路徑即可使用

OpenCV_Lib = C:/opencv_build/lib

INCLUDEPATH +=  C:/opencv_build/include\
                C:/opencv_build/include/opencv2\

Release: LIBS +=    $$OpenCV_Lib/libopencv_highgui243.dll.a\
                    $$OpenCV_Lib/libopencv_calib3d243.dll.a\
                    $$OpenCV_Lib/libopencv_contrib243.dll.a\
                    $$OpenCV_Lib/libopencv_core243.dll.a\
                    $$OpenCV_Lib/libopencv_features2d243.dll.a\
                    $$OpenCV_Lib/libopencv_flann243.dll.a\
                    $$OpenCV_Lib/libopencv_gpu243.dll.a\
                    $$OpenCV_Lib/libopencv_imgproc243.dll.a\
                    $$OpenCV_Lib/libopencv_legacy243.dll.a\
                    $$OpenCV_Lib/libopencv_ml243.dll.a\
                    $$OpenCV_Lib/libopencv_objdetect243.dll.a\
                    $$OpenCV_Lib/libopencv_ts243.a\
 
請教了不少人才弄出來,在此感謝這些強者們! 

2013年1月14日 星期一

Raspberry Pi Note #3 (VNC Server and VNC Viewer)

這篇是寫給沒有HDMI螢幕的朋友們參考的

有螢幕可以接的就可以跳過這段

繼續上一篇筆記,當RSP連接上網路且可以開啟SSH連線之後

只有文字模式並不完全能夠符合所有人的用途

有時候還是需要圖形化介面

開啟SSH連線並且登入後

sudo apt-get update

先更新清單

sudo apt-get install vnc-server

安裝VNC Server

接下來在用戶端電腦這邊安裝VNC Viewer

sudo vncserver :1 -geometry 1920x1080

開啟VNC Server,通訊埠為5900+1=5901,解析度為1920x1080

VNC Server 通訊埠雖然開啟為1,但事實上是5901,理論上數字較小的port是不可以被占用的



開啟Server之後,下載VNC Viewer



開啟VNC Viewer



輸入IP及通訊埠,這時通訊埠要輸入1





完成之後就可以看到大大的LOGO了