在此附上"Raspberry Pi從入門到應用" 章節與筆記
啟稿: 2016/09/03
完稿: 2016/09/27
Chapter 1Raspberry Pi初次接觸
1.1簡介Raspberry Pi的起源與歷史
1.2官方基金會的宗旨
1.3History table
1.4Raspberry Pi這塊板子的硬體規格與
1.5周邊設備選購指南。
Chapter 2安裝作業系統與基本設定
2.1支援作業系統
Linux為核心: Debian,Pidora(Fedor Remix),Gentoo,openSUSE
小巧Linux為核心: Arch Linux ARM, SliTaz, Bodhi
Other OS: RISC OS, Plan 9, FreeBSD
無線路由器套件: OpenWRT
防火牆: IPFire
Qt軟體開方環境: QtonPi
模擬器: PiMAME
以XBMC家庭謀體中心: Raspbmc, OpenElec,XBian
支援硬體專案: Adafruit, Occidentalis
2.2官方推薦的Raspbian發行套件
2.3下載並驗證Raspbian映像檔
2.4燒錄Raspbian映像檔到SD記憶卡
Windows: Win32 Disk Imager
Linux: ImageWriter, /dev/mmcblk0 or /dev/sdc
Linux command:
$df -h : device find
$ sudo umount /dev/sdd1
$ sudo dd bs=2m if=2013-07026-wheezy-raspbian.img of=/dev/sdd
bs: block size
If: inpug file
of: output file
Mac: PIWriter
Mac command:
$diskutil list
$diskutil unmountDisk /dev/disk1
$ sudo dd bs=2m if=2013-07026-wheezy-raspbian.img of=/dev/disk1
2.5初始基本設定
2.6網路
2.7備份記憶卡
Chapter 3進階設定與疑難排除
講解碰到問題時該怎麼進行檢測、排除疑難雜症
3.1電源
LED 1: ACT(OK), Access SD Card
LED 2: PWR, Power On
LED 3: FDX, Ethernet full duplex
LED 4: LNK, Ethernet connection
LED 5: 100, Ethernet 100Mbs
3.2開機程序
1. bootloader第一階段開機程序: 燒錄在Raspberry Pi GPU bootloader,負責掛載SD卡第一個FAT32分割區,然後執行內部的bootcode.bin。
##若PWR亮起,ACT不亮,表示沒有讀取SD記憶卡,可能SD記憶卡有問題沒插好,或板子SD卡槽壞了
2. bootloader第二階段開機程序(也就是bootcode.bin): 負責啟動Cache & Memory,將start.elf載入GPU韌體
##若PWR亮起,ACT以某種行是閃爍,螢幕沒有;有可能映像檔太舊或損毀或少了某些檔,不然就是電源供應有問題。
3. GPU韌體start.elf: 負責讀取config.txt, cmdline.txt各項設定與組態,劃分記憶體交給CPU與GPU,載入下一階段程式軟體,也就是作業系統OS,交給CPU執行。
##若GPU韌體成功載入start.elf,螢幕就會出現”彩式漸層方塊”畫面。
4. 作業系統OS: 若是Linux系統檔kernel.img
##此時會耗用大一點電流,若自動關機或重開,表電源問題。
##若看不到OS開機訊息,表示系統檔kernel.img有問題。
3.3鍵盤滑鼠與其他USB
3.4SD 記憶卡、
3.5螢幕
3.6音訊
內建測試音訊程式:
$ cd /opt/vc/src/hello_pi/
$./rebuild.sh
$cd hello_audio
$./hello_audio.bin //從耳機插座
$./hello_audio.bin 1 //從HDMI
3.7網路連線
- 區域網路目前連線速度:
$cat /sys/class/net/etho/speed
別台SD卡插到另一P板子,因為MAC位址不同,所以預設的網路組態無法運作,所以請修改下規則
$/etc/udev/rules.d/70-persistent-net.rules
- 網路流量過大當掉:
$/etc/sysctl.conf
修改以下參數
vm.min_free_kbytes = 8192 >>16384
- 播接上網 (ADSL)
請先安裝三個套件
ppp: Point-to-Point Protocol
pppoe: PPP over Ethernet
pppoeconf: configureation tools
$sudo apt-get install ppp pppoe pppoeconf
但目前沒上網,就需要別台先至http://archive.raspbian.org/raspbian/pool/main/ 上網下載
libp/libpcap/libpcap0.8_1.3.0-1_armhf.deb
p/ppp/ppp_2.4.5-5.1_armhf.deb
r/rp-pppoe/pppoe_3.8-3_armhf.deb
p/pppoeconf/pppoeconf_1.20_all.deb
放在SD卡第一分割區,會被掛載到/boot目錄下,再執行
$sudo dpkg -I /boot/ libpcap0.8_1.3.0-1_armhf.deb
$sudo dpkg -I /boot/ ppp_2.4.5-5.1_armhf.deb
$sudo dpkg -I /boot/ pppoe_3.8-3_armhf.deb
$sudo dpkg -I /boot/ pppoeconf_1.20_all.deb
$sudo pppoeconf
設定儲存在 /etc/ppp/peers/dsl-provider
- 手動設定網路組態
網路組態紀錄於/etc/network/interfaces檔內
auto lo //該網路會被指令ifup啟動
iface lo inet loopback //loopback虛擬介面
iface eth0 inet dhcp //內建網路卡
allow-hotplug wlan0 //USB無線網路
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp
- 自行定義eth0
auto eth0
iface eth0 inet static
address 192.168.1.2
netmask 255.255.255.0
gateway 192.168.1.1
自行指定DNS要修改/etc/resolv.conf
Nameserver 8.8.8.8 //Google DNS
Nameserver 8.8.4.4 //Google DNS
重新啟動網路
$sudo /etc/init.d/networking restart
3.8超頻
Chapter 4Linux命令列模式與圖形化介面
4.1Linux 系統的終端機命令列模式、終端機、主控台
終端機模擬軟體:
Raspbian: LXTerminal
廣為人知的: NetTerm
BBS: PCMan, MultiTerm
SSH: PuTTY, PieTTY
Serial Port capability: HyperTerminal, Tera Term, Konsole(KDE), GNOME Termnial, MacTerminal
4.2Linux系統與常用指令
$sudo halt //關機
$sudo reboot //重開機
$logout //登出
$exit //登出
Ctrl-d //登出
$passwd //更改密碼
- 檔案系統相關指令
$pwd //目前目錄
$ls -l //List detail
$chmod a-r xxx.file //修改檔案讀取、寫入、執行的權利
其中a: all, u: user, g: group, o: others, +/-: add/remove, r: read, w: write, x: execute
$mkdir //建立目錄
$rmdir //刪除目錄
$mv //搬移
$cp //copy
$rm //刪除file/目錄
- 硬連接與符號連結指令
Linux檔案系統ext2,ext3,ext4結構皆相同稱為inode(index node)
$ls -li //會在第一欄顯示inode編號
$ln a.txt b.txt //link產生b.txt,只有一份檔案a.txt or b.txt
$ln -s a.txt b.txt //產生b.txt shortcut檔
$sudo fdisk -l //得知記憶卡分割狀態
$df -h //得知記憶卡以用及未用儲存空間
- 壓縮、解壓縮及打包
Linux壓縮檔案常見格式.gz, .bz2,但gzip,bzip2只能壓縮、解壓縮,不能將多檔目錄合成一檔,所以先用tar指令進行打包,檔格式.tar
.tar.gz //先用tar打包再用gzip壓縮
.tgz //先用tar打包再用gzip壓縮
$tar -zxvf xyz.tar.gz //解包解壓縮
z:自動呼叫gzip解壓縮,j:代表bzip2
x: 解開打包檔,c:打包
v: 顯示執行過程
f: 指定檔名
- 系統資訊
$uname -a //取得系統資訊
$uptime //取得目前系統執行資訊
$w //取得目前系統執行資訊,有誰登錄系統
$top //及時監看系統
- 掛載外接儲存裝置
$sudo fdisk -l //得知記憶卡分割狀態
$sudo mkdir /media /usbstick //先建目錄作掛載點
$sudo mount -t vfat -o uid=pi,gid=pi /dev/sda1 /media/usbstick
-t vfat : 格式化為FAT16/FAT32,其他還有ext4, iso9660, msdos, nfs, smbfs
-o : 指定讀取權限
/dev/sda1 : 想要掛載的裝置編號
/media/usbstick : 掛載點目的
$sudo umount /media/usbstick //卸除掛載
- 軟體套件管理指令
Debian包括衍生出的發行套件raspbian, Ubuntu, Knoppix採用Debian package management system軟體套件管理系統,副檔名為.deb,套件系統記錄各相關資訊,如套件需要哪些程式庫,需要先安裝哪些套件,版本相依性。
RPM Package Manager軟體套件管理系統採用的為Red hat, Fedora, CentOS, Mandriva, openSUSE
Dpkg: 最基本的套件管理指令,過於低階
APT: Advanced packaging Tool較為高階,指令為apt-get
$sudo apt-get update //更新軟體套件資料庫,取的最新套件資訊
$sudo apt-get install xxx //安裝xxx軟體套件
$sudo apt-get remove xxx //移除xxx軟體套件(會留下組態設定檔)
$sudo apt-get purge xxx //移除xxx軟體套件(通通移除)
下載後的套件會位於/var/cache/apt/archives/
$sudo apt-get clean //清除下載套件
$sudo apt-get apt-cache search xxx //找尋xxx下載套件
圖型化的套件管理界面有:aptitude, synaptic
4.3網路相關Linux指令
$ping //檢查網站活著
$wget http://www.xxx/xxx //網站下載xxx
$ifconfig //show所有網路通訊界面
$iwconfig //只show無線網路通訊界面
$nslookup ptt.cc //查出ip位置
$traceroute ptt.cc //追蹤網站間經過多少節點與時間
$scp xxx acount@192.168.1.2:~/ //SSH傳送xxx檔案到遠端
$scp acount@192.168.1.2:~/xxx ./ //SSH從遠端接收xxx檔案
4.4透過SSH安全連線遠端登入
SSH安全連線協定,參考第二章設定
$ps aux | grep sshd //檢查SSH伺服器是否運作中
- Windows進行SSH安全連線
PieTTY: PuTTY進化版,加入非英語系字元,下載http://ntu.csie.org/~piaip/pietty/解壓縮不用安裝。
執行後在初始畫面Host Name or IP Address主機名稱或位址填入RPi IP address,點選SSH,Port就會改為22;取消勾選English UI下次就會出現中文介面,Open開始
因為第一次連線,所以會出現PieTTY Security Alert,按Y,下次不會再出現。
輸入帳號密碼登入,若出現亂碼請從「選項>字元編碼」設定。
- Mac OS進行SSH安全連線
啟動Mac OS X虛擬終端機軟體, 「應用程式>工具程式>終端機」,輸入:
$ ssh pi@192.168.1.9 //pi登入帳號
因為第一次連線,所以會出現Security Alert訊息,輸入yes,下次不會再出現
輸入帳號密碼登入
- Linux進行SSH安全連線
啟動虛擬終端機軟體, 一般為terminal,輸入:
$ ssh pi@192.168.1.9 //pi登入帳號
其他同Mac OS X
- 免密碼登入(運用公鑰私鑰)
所謂公鑰就是一套加密解密的演算法,以私鑰加密後的資料,只能由配對的公鑰解密,反之亦然。
所以在此要產生「一對屬於你自己的公鑰與私鑰」,將私鑰放在SSH客戶端使用,公鑰放在被連線的RPi電腦內
- 產生屬於你自己的公鑰與私鑰:
登入RPi以指令
$ ssh-keygen -t rsa //-t rsa 非對稱性加密演算法
出現訊息問鑰匙存哪?直接按Enter儲存預設子目錄.ssh裡,檔名預設id_rsa。
然後會要求你輸入passphrase,額外保護私鑰關卡,在此不用,直接按兩次Enter跳過。
如此產生私鑰id_rsa(.ssh子目錄內),公鑰id_rsa.pub
- 私鑰放在連線方,公鑰放在被連線方
放置公鑰內容到authorized_keys檔案內
$ cat .ssh/id_rsa.pub >> .ssh/authorized_keys //RPi3放置公鑰到authorized_keys檔案內
私鑰放在連線方,若是Linux, Mac OS X, Windows下的Cygwin,請在自家目錄裡新增.ssh子目錄,把id_rsa放進去
若是Windows下的PieTTY,要靠PuTTYgen轉換成看得懂得格式,下載:
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
點選Conversions>Import key,匯入先前的私鑰id_rsa,Menu>Save private key,指定儲存檔名id_rsa.ppk放在安全的地方
PieTTY須點選啟動畫面中PuTTY模式,指定私鑰檔,會有訊息告知後回一般模式。
設定畫面,左邊樹結構Session>畫面中Saved Sessions選設定的IP位址,按Load鍵;再到左邊樹結構Connection>SSH>Auth>Private key file for authentication:指定轉成的id_rsa.ppk;左邊樹結構Session>畫面中Saved Sessions,按Save鍵。
- 不需密碼
4.5圖形化視窗操作介面X視窗系統
- Midori: 小巧的瀏覽器,日文代表「綠」
- Scratch: 視覺化程式設計軟體,請參考第9章
- Pi Store: Raspberry Pi軟體市集
- WiFi Config: 設定無線網卡,請參考第2章
- Debian Reference: Debian參考文件
- IDLE: Python2整合式開發環境,請參考第5章
- IDLE 3: Python3整合式開發環境,請參考第5章
- Python Games: Python遊戲,請參考第6章
- LXTerminal: 虛擬終端機
- OCR Resources: OCR(Oxford, Cambridge and RSA Examinations)相關資源
Accessories:一般工具軟體:
- Xarchiver: 壓縮軟體
- Leafpad: 文字編輯器
Graphics:
- ImageMagick:
- xpdf:
Systems
- ScreenLock: 畫面右下角有個含鎖頭螢幕,需要螢幕保護程式,
$ sudo apt-get install xscreensaver
4.6圖形化介面常用應用軟體
- 中文字型與輸入法
安裝文泉驛微米黑字型
$ sudo apt-get install ttf-wqy-microhei ttf-wqy-zenhei xfonts-wqy
文鼎明體字型ttf-arphic-uming,文鼎楷體字型ttf-arphic-ukai
中文輸入法套件scim(Smart Common Input Method)本體,正體中文輸入法套件scim-tables-zh,新酷音輸入法scim-chewing,簡明中文拼音輸入法scim-pinyin
$ sudo apt-get install scim scim-tables-zh scim-chewing scim-pinyin
Local區域設定為正體中文,以下命令
$ sudo dpkg-reconfigure locales
以空白鍵加選,建議加選en_US ISO-8859-1, en_US.UTF-8 UTF8, zh_TW BIG5, zh_TW.UTF-8 UTF-8四個。將預設區域設為zh_TW.UTF-8
- 聽音樂影片
LXMusic音樂播放器
$ sudo apt-get install lxmusic
MPlayer(指令介面), SMPlayer(圖型化介面)
$ sudo apt-get install mplayer smplayer
MPEG-2, VC-1授權,安裝MediaInfo分析檔案格式
$ sudo apt-get install mediainfo mediainfo-gui
- BBS,即時通
批踢踢ppt.cc使用PCMan X客戶軟體
$ sudo apt-get install pcmanx-gtk2
即時通Pidgin(前身為Gaim)
$ sudo apt-get install pidgin
- 辦公室套件LibreOffice(OpenOffice.org)
$ sudo apt-get install libreoffice
LibreOffice |
Note |
副檔名 |
Base |
資料庫 |
.odb |
Calc |
試算表 |
.ods / .fods |
Draw |
向量繪圖 |
.odg / .fodg |
Impress |
簡報投影片製作 |
.odp / .fodp |
Math |
數學方程式與科學公式,可內嵌於其他文件中 |
.odf |
Writer |
文書處理 |
.odt .fodt |
格式為開放式文檔格式Open Document Format
- 影像處理Gimp (GNU Image Manipulation Program)
$ sudo apt-get install gimp
其他較小的工具
XPaint
$ sudo apt-get install xpaint
MyPaint豐富的筆刷
$ sudo apt-get install mypaint
RawTherapee編修數位相片RAW檔
$ sudo apt-get install rawtherapee
- 音訊編輯Audacity
開源音訊編輯軟體,可同時編輯多調音軌,加入數位音效,頻譜分析
$ sudo apt-get install audacity
- Others
抓圖軟體Shutter
$ sudo apt-get install shutter
頁面設計排版軟體Scribus
FTP檔案傳輸FileZilla
樂譜製作LilyPond
向量繪圖 Inkscape
4.7透過VNC遠端遙控
首先要在RPi安裝VNC伺服端軟體,在此採用TightVNC開源碼實作
$ sudo apt-get install tightvncserver
$ tightvncserver :1
客戶端RealVnc > http://www.realvnc.com/download/viewer
網址記的 192.168.1.9:1
Chapter 5來玩遊戲吧
5.1圖形介面下Linux原生遊戲
Python Game
Name |
Content |
flippy |
黑白棋 |
fourinarow |
|
gemgem |
類似Candy Crush |
inkspill |
|
memorypuzzle |
|
pentomino |
|
simulate |
|
slidepuzzle |
4x4還原拼圖遊戲 |
squirrel |
|
starpusher |
推箱子 |
tetromino |
類似俄羅斯方塊 |
tetrominoforidiots |
|
wormy |
|
Linux原生遊戲
Name |
Content |
ltris |
俄羅斯方塊 |
ace-of-penguins |
接龍與踩地雷,另函數種紙牌遊戲 |
pingus |
類似百戰小旅鼠(Lemmings)的益智遊戲,讓一群企鵝抵達安全地點 |
gpe-othello |
黑白棋 |
gmchess |
象棋 |
gnuchess, xboard |
西洋棋,xboard是圖型化前端介面 |
mah-jong |
麻將 |
mahjongg, xshisen |
連連看小遊戲 |
pinball |
彈珠台 |
pacman |
小精靈 |
bomberclone |
類似轟炸超人移植作品,可網路多人連線對打 |
xblast-tnt |
模仿自轟炸超人,可網路多人連線,另外可安裝套件xblast-tnt-sounds, xblast-tnt-musics音效與背景音樂 |
frozen-bubble |
射泡泡 |
supertux |
2D橫向卷軸跑跳遊戲,風格類似超級瑪莉歐 |
supertuxkart |
3D賽車 |
briquolo |
3D打磚塊 |
blobby |
排球 |
tennix |
網球 |
tuxpuck |
桌上曲棍球 |
foobillard |
3D撞球檯,可網路連線 |
airstrike |
2D空戰遊戲 |
starfighter |
2D捲軸射擊遊戲 |
freedroidrpg |
角色扮演遊戲,與機器人對抗將和平重新帶回人類世界 |
freedink |
冒險型角色扮演遊戲,類似薩爾達傳說,以GNU FreeDink為遊戲引擎 |
wesnoth |
*韋諾之戰(Battle for Wesnoth),回合制六角戰棋遊戲,中古風格,扮演各種角色,控制個是軍隊 |
widelands |
*模仿類似工人2(Settlers II)奇幻即時戰略遊戲 |
openttd |
*模仿運輸大亨豪華版(Transport Tycoon Deluxe)建築類遊戲 |
glob2 |
Globulation 2即時戰略遊戲 |
Freeciv-client-gtk Freeciv-client-sdl |
*文明帝國開放原始碼 |
5.2命令列介面下的遊戲
Bsdgames文字型遊戲
- atc: 航空管制塔
- boggle: 考驗英文單字能力,4x4字母,找出合法3個字母單字組合
5.3ScummVM遊戲主機模擬器
Scumm(Script Creation Utility for Maniac Mansion) 為一套LucasArts專為圖形冒險遊戲Maniac Mansion瘋狂大樓開發系統,
Name |
Content |
beneath-a-steel-sky |
Beneath a Steel Sky鋼鐵天空下 |
flight-of-the-amazon-queen |
Flight of the Amazon Queen亞馬遜王后之航程 |
|
Dreamweb |
|
Soltys |
|
Broken Sword |
|
Drascula: The Vampire Strikes Back德斯古拉:吸血鬼反擊 |
|
Lure of the Temptress妖媚之惑 |
ScummVM官網 http://scummvm.org/downloads/
下載Drascula: The Vampire Strikes Back, Freeware Version(English)與Drascula: The Vampire Strikes Back, Freeware Version(Music AddOn, Mp3 format) 2 zip files,還須下載drascula.dat
http://scummvm.svn.sourceforge.net/svnroot/scummvm/scummvm/trunk/dists/engine-data/drascula.dat
Unzip放在同一目錄drascula,整目錄搬移到/usr/share/scummvm下
5.4DOS模擬器
Linus模擬DOS,可以使用QEMU, DOSBox, DOSEmu
QEMU: 功能強大,可模擬可種架構CPU,使用較複雜
DOSEmu: 只支援x86架構CPU,RPi不能用
DOSBox: 很不錯但對於RPi有限的硬體規格效率不佳
rpix86: 效率尚可,可到Pi Store進行安裝,或官網http://rpix86.patrickaalto.com/下載rpix86.zip
$wget http://rpix86.patrickaalto.com/rpix86.zip //下載
$unzip rpix86.zip //解包解壓縮
需要4DOS.COM命令解譯器
ftp://jpsoft.com/4dos/files/
退出:exit
5.5遊戲主機模擬器
5.6Quake III Arena
OpenArena
5.7Minecraft建築自己的世界
CONTROLS.txt 含有操作指令
Keys |
Functions |
W, A, S, D |
上左下右 |
空白鍵 |
跳躍,按兩下代表開始或停止飛行,按著不放表示往上飛 |
Shift |
潛行,按著不放表示往下飛 |
E |
顯示全部的物品 |
1~8 |
選擇物品欄位 |
ESC |
顯示或隱藏選單 |
Tab |
放掉滑鼠控制權 |
Enter |
確認 |
Mouse Move |
左右轉彎、上下看 |
Mouse Left Key |
破壞磚塊(可按不放) |
Mouse Right Key |
放置磚塊;以劍敲擊磚塊 |
Mouse Scroll Roll |
選擇物品欄位 |
利用Python與之互動
$mkdir ~/minecraft-code
$cp -r ~/mcpi/api/python/mcpi ~/minecraft-code/minecraft
$nano ~/minecraft-code/minecraft-basic.py
參考sample code/
$python ~/minecraft-code/minecraft-basic.py
Chapter 6Python程式語言
6.1Python簡介Python程式語言
Python取至於英國超現實喜劇”蒙提派森的飛行馬戲團(Monty Python Flying Circus)”,軟體發展環境稱為IDLE (Integrated DeveLopment Environment);Python又有巨蟒的意思。
6.2Hello Python
進入Python直譯器
$Python
>>>
離開Python,請按Ctrl-d
>Example<
6.3Python整合式開發環境
6.4變數、物件、型別
Python型別: list串列、dictionary字典、set集合、file檔案
Python屬於動態型別檢查的程式語言,意思是資料型別放在物件身上,而不是放在變數上。
i=3
i=[1,2,3,4,5]
i=”abcde”
判斷或迴路
if True:
…
else:
while True:
for x in range(2, 10):
for y in range(1, 10):
>Example<
6.5串列
Python提供了稱為List Comprehension的語法
clist = [(f - 32) * 5 / 9 for f in flist]
amount2 = [x for x in amount if x <= 1000] //Filter
result = [[n, len(n)] for n in names]
result = [str(x) + " * " + str(y) + " = " + str(x * y) for x in xlist for y in ylist]
>Example<
6.6函式
將一堆程式碼包起來,形成一支函式。
def times(x, y):
return x * y
def ftoc(f):
return (f - 32) * 5 / 9
def ctof(c):
return c * (9 / 5) + 32
def acc(n = 0): //Default value n=0 if now parameter
6.7模組
一支.py檔就是一個模組,將多個檔案放在同一目錄裡就可運作
呼叫先以匯入該模組的名稱,不需要副檔名.py
>Exampe1<
加入命名空間,用from/import語法
from hello_module import * //>Example2<
上述作法可能造成名稱衝突,可改用import/as語法
import hello_module as h //>Example3<
選擇性匯入
from hello_module import hello //>Example4<
運用內建的標準程式庫模組,可以到PyPI(Python Package Index)查詢可用的程式庫模組
6.8常見錯誤
6.9參考資料
須加強的部分:
- 語彙範圍
- 模組搜尋路徑
- 類別
- 繼承
- 多型
參考資料
- Dive Into Python, Mark Pilgrim, http://www.diveintopython.net/
- Learn python The Hard Way, Zed Shaw, http://learnpythonthehardway.org/
- The Python Tutorial, http://docs.phython.org/2/tutorial/
Chapter 7GPIO針腳
7.1所需電子材料
7.2Raspberry Pi板子上的GPIO針腳與麵包版的連接方式
7.3Raspberry Pi板子上的GPIO針腳
Raspberry Pi板子上的2x13 GPIO針腳,其中某些針腳已經固定,可容忍電壓上限為3.3V
Pin1,17總輸出電流上限50mA,pin 2,4電流則看USB輸入電流大小,例如1A USB提供給Model B本身需要700mA,所以pin 2最高可取用為300mA。
7.4LED閃爍與明暗度控制
5mm LED最大承受2V, pin2 3.3V,電組須承受1.3V
LED最大耗流0.02A, R=V/I > 1.3/0.02 ~=65 ohm取大一點為220ohm
7.5以開關控制LED
7.6解決開關彈跳問題
7.7C語言介面的程式庫
採用C語言則使用WiringPi來控制:https://wiringpi.com/
Or git: https://git.drogon.net/?p=wiringPi;a=summary 點選snapshot便會下載壓縮原始碼
$tar xfz wiringPi-41fb1b9.tar.gz
$cd wiringPi-41fb1b9
$sudo ./build
$gpio readall //dump all the pin definition
$gpio -l mode 12 out //-l: 實體腳位Phys,
$gpio -l write 12 1 //-l: 實體腳位output high
Example ledblink.c
$gcc -I/usr/local/include -L/usr/local/lib -lwiringPi ledblink.c -o ledblink
Example ledpwm.c
$gcc -I/usr/local/include -L/usr/local/lib -lwiringPi -lpthread ledpwm.c -o ledpwm
7.8讀取類比數路
MCP3008 10bits ADC
VDD > 3.3V
VREF > 3.3V
AGND > GND
CLK > pin23 (SPI SCLK)
DOUT > pin21 (SPI MISO)
DIN > pin19 (SPI MOSI)
CS/SHDN > pin24 (SPI CE0)
DGND > GND
7.9出現問題
GPIO.cleanup(): 上次沒有清理收回動作,會有警告如下:
RuntimeWarning: This channel is already in use, continuing anyway. Use GPIO. Setwarnings(False) to disable warnings.
7.10參考資料
擴充板:
Adafruit, Ciseco Slice, Gertboard, PiFace
Arduino compatible: Alamode
Book:
Simon Monk
Programming the Raspberry Pi: Getting Started with Python
Adafruit Learning doc:
http://learn. Adafruit.com/category/learn-raspberry-pi
Chapter 8家庭劇院媒體中心與Raspbmc
8.1 家庭劇院與媒體中心
介紹加入XBMC 的Raspbmc特製發行套件, 讓家裡電視機搖身一變成為家庭劇院媒體中心。
8.2Raspbmc安裝與初始設定
uXBMC操作介面
u取消自動更新
uSSH安全連線
開啟SSH: 程式>Raspbmc settings>System Configuration>SSH server
User: pi, PW raspberry
scp: 將檔案複製到記憶卡裡
uFTP傳輸檔案
開啟FTP: 程式>Raspbmc settings>System Configuration>FTP server
User: pi, PW raspberry
uHTTP網路協定控制XBMC (kodi remote)
啟用”允許通過HTTP控制XBMC”: 系統設定>服務>網站伺服器>允許通過HTTP控制XBMC
連接阜(port)、user、password可設可不設
kodi remote
啟用”遠端遙控”: 系統設定>服務>遠端遙控
8.3連結WiFi無線網路
8.4圖片、視訊、音樂
uAirPlay
啟用AirPlay: 系統設定>服務> AirPlay>允許通過XBMC接收AirPlay內容
8.5附加元件
中文附加元件
http://code.google.com/p/xbmc-addons-chinese/downloads/list download 3 zips
script.module.keyboard.chinese-1.2.8.zip //中文鍵盤
script.xbmc.subtitles-frodo-pre.zip //字幕
repository.googlecode.xbmc-addons-chinese-eden.zip //中文附加元件list
8.6紅外線遙控
u紅外線原理與選購紅外線接收機
IR 波長770nm~1mm
遙控器波長: 一般遙控器選擇940nm
遙控器載波頻率: 36~54KHz
36KHz: Philips
38KHz: JVC, LG, NEC, Nikon, Panasonic, Pioneer, Sharp, 三菱, 三星
40KHz: Sony
56KHz: RCA
電壓: 3.3V or 5V, Raspberry Pi must use 3.3V
u連接紅外線接收機與RPi GPIO針腳
38KHz IR receiver, TSOP38238, TSOP34138, TSOP4438, PNA4602, FM-6038TH2
Pin1: 紅外線訊號 > RPi Pin12(GPIO18 lirc_rpi default)
Pin2: GND接地 > RPi Pin6(GND)
Pin3: V 電源 > RPi Pin1(3.3V)
LIRC(Linux Infrared Remote Control)
uLearning
程式>Raspbmc settings>System Configuration>IR Remote 關閉Enable GPIO TSOP IR receiver否則我們無法使用LIRC,重新啟動系統,透過SSH在終端機下
$ sudo modprobe lirc_rpi //載入lirc driver
$ sudo kill $(pidof lircd) //kill lircd,負責解讀訊號給上層應用軟體
$ mode2 -d /dev/lirc0 //直接讀取低階訊號顯示在螢幕
在home pi已經有lirc.conf這支檔案,先備份
$ irrecord -list-namespace //學習但內容有400多個
Chapter 9Scratch
本書example git clone: https://github.com/yehnan/rpi_book_yehnan.git
9.1介紹輕鬆上手、視覺化程式設計軟體Scratch
改為中文: 右上角地球圖示>改為中文
八種積木:
- 動作:角色移動、旋轉、面向方向、座標位置
- 外觀:切換造型,顯示尺寸、隱藏、顯示對話框
- 聲音:發聲、鼓聲、音符、音量與節奏
- 畫筆: 畫筆大小、亮度、顏色
- 控制:進行動作條件,如按下某鍵、重複某動作、等待幾秒
- 偵測: 偵測外部條件進行不同的動作,如角色移動碰到某顏色、座標、使用者輸入
- 運算:加減乘除、大於小於、邏輯運算、And/OR
- 變數:新增刪除、設定
9.2造型與聲音
9.3電流急急棒
9.4貪食蛇
9.5塔防遊戲
9.6分享與社群
Scratch控制硬體: SA4(Scratch for Arduino),不支援ARM的LINUX
PicoBoard
LEGO WeDo機器人
Chapter 10向外延伸
補充本書未能詳細介紹的內容, 包括其他的作業系統、有趣的創作專案、外接電源主題。
10.1作業系統
參考RPi Hub > http:/elinux.org/RPi_Distributions
通用型Linux
- Arch Linux ARM:
- Pidora: come from Fedora
- Ubuntu Mate:
- Gentoo:
- openSUSE:
作業系統
- NOOBS: New Out Of Box Software複合映像檔
- BerryBoot: 安裝多個作業系統,也可放在外接硬碟
小巧型Linux
- Arch Linux ARM:
- Raspbian:
- Bodhi
- Puppy:
- SliTaz:
特殊用途
- RISC OS:
- Android
- IPFire: 防火牆
- OpenWRT: 無線路由器
- PiMAME,Retropie: Game Emulator
- QtonPi: 預設包含QT開發環境
- Kali:測試網路被入侵
- PwnPi: 測試網路被入侵
- Raspbmc, OpenELEC, LibraELEC, XBian: 媒體中心
10.2Linux核心與ARM組合語言
RPi修改過的Linux核心碼Git Hub ? https://github.com/raspberrypi
Book:
- Raspberry Pi Assembly Language RASPBIAN Beginners: Hands On Guide
- Raspberry Pi Assembly Language Beginners: Hand On Guide
Training:
- 劍橋大學Baking Pi> http://www.cl.cam.ac.uk/projects/ raspberrypi/tutorials/os/
- https:/github.com/dwelch67/ raspberrypi
10.3硬體擴充板
Adafruit
Gertboard:
BrickPi: 結合Raspberry Pi、LEGO機器人
Alamode: Arduino擴充板
XLoBorg:加速度方向擴充板
Pi Lite/LedBorg: 大型LED矩陣
MotoPiduino/MotoPiTX:驅動馬達
10.4其他各式各樣的開發板
10.5Raspberry Pi為基礎的創意作品
高空攝影: http:/www.daveakerman.com/
自動航行船: http:/www.abersalibot.co.uk/
海洋保育協會潛水: http://chagos-trust.org/projects/latest/feb-2013-expedition/battling-heat
南安普敦大學Super computer: http:/www.southampton.ac.uk/~sjc/raspberrypi/
人形機器人Rapiro
R2D2
10.6行動電源
10.7序列傳輸
Raspberry Pi GPIO pin 8, 9 RS-232 Tx,Rx
位準轉換器: MAX3232 > 3.3V <> RS-232(12V)
Raspberry Pi Linux UART : /dev/ttyAMA0
General Linux UART : /dev/ttyS0
10.8教育
OCR (Oxford Cambridge and RSA Examinations) and Cambridge GCSE(中等教育通用證書)
http://www.cambridgegcsecomputing.org/
MOOC(Massive Open Online Course)大規模網路免費公開課程
10.9展望未來
Chapter 11Appendix A Raspberry Pi 相關詞彙
列出與Raspberry Pi相關的詞彙並簡短描述。
Chapter 12Appendix B 購買MPEG-2與VC-1硬體編解碼器的授權碼
列出購買MPEG-2與VC-1硬體編解碼器授權碼的步驟。
Chapter 13Appendix C HDMI 顯示模式
列出HDMI顯示模式的設定值。
留言列表