close

在此附上"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                          //卸除掛載

 

  • 軟體套件管理指令

ebian包括衍生出的發行套件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,點選SSHPort就會改為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電腦內

  1. 產生屬於你自己的公鑰與私鑰:

    登入RPi以指令

    $ ssh-keygen -t rsa                                        //-t rsa 非對稱性加密演算法

    出現訊息問鑰匙存哪?直接按Enter儲存預設子目錄.ssh裡,檔名預設id_rsa

    然後會要求你輸入passphrase,額外保護私鑰關卡,在此不用,直接按兩次Enter跳過。

    如此產生私鑰id_rsa(.ssh子目錄內),公鑰id_rsa.pub

  2. 私鑰放在連線方,公鑰放在被連線方

    放置公鑰內容到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_rsaMenu>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鍵。

  3. 不需密碼

 

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參考資料

須加強的部分:

  • 語彙範圍
  • 模組搜尋路徑
  • 類別
  • 繼承
  • 多型

參考資料

 

 

 

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)userpassword可設可不設

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

官網: http://scratch.mit.edu/

本書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-2VC-1硬體編解碼器的授權碼

列出購買MPEG-2VC-1硬體編解碼器授權碼的步驟。

 

Chapter 13Appendix C HDMI 顯示模式

列出HDMI顯示模式的設定值。

 

arrow
arrow
    文章標籤
    raspberry
    全站熱搜
    創作者介紹
    創作者 Philip4G 的頭像
    Philip4G

    Philip4G四眼仙機的部落格

    Philip4G 發表在 痞客邦 留言(0) 人氣()