---
# System prepended metadata

title: The Coral USB Accelerator with Raspberry Pi

---

# The Coral USB Accelerator with Raspberry Pi


## `1. 從序列埠進到 Raspberry Pi`

#### a. 依照下圖將pi裝上"PL2303HXD USB轉TTL傳輸線"，並接上筆電
![](https://i.imgur.com/gB9atUg.png =70%x)

#### b. 將pi連接好電源線，開機(紅燈會亮，黃光會閃)
#### c. 查詢筆電的Device Manager確認你的pi接上到COM幾(以下圖為例 為COM3)
![](https://i.imgur.com/3jWZh2M.png =70%x)

#### d. 開putty，點選Serial
Serial line填你在上一部查的COM，Speed填115200，如下圖所示
點選右下角的Open開啟連結
![](https://i.imgur.com/tKZJdT2.png =70%x)

### Hint: 如果連上後畫面全黑，可以試試按Enter，或重開pi

-------------

## `2. 設定網路`
    $ ifconfig wlan0
    => 發現沒網路
    
    $ sudo iwlist wlan0 scan
    => 查詢現有的網路，找到想要的那個
    
    $ sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
    
    在裡頭填上資料，如下: 
    ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
    update_config=1

    network={
        ssid="hahaha"           =>網路名稱
        psk="1234567890123"     =>密碼
        proto=RSN               =>WPA2填RSN，WPA1填WPA
        key_mgmt=WPA-PSK        =>PSK填WPA-PSK，EAP填WPA-EAP
        pairwise=CCMP           =>AES cipher(WPA2)填CCMP，TKIP cipher(WPA1)填TKIP
        auth_alg=OPEN
    }
    =>按ctrl+X =>按Y 儲存跳離檔案
    
    $ sudo ifdown wlan0
    $ sudo ifup wlan0
    $ sudo kill -9 $(ps -ef | grep wpa | awk '{print $2}')
    $ sudo wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
    $ sudo dhclient
    =>這5個指令中間有錯誤訊息皆忽略
    
    $ ifconfig wlan0
    => 查看網路有沒有了

### Hint1: sudo reboot試試
### Hint2: 可以把ifdown和ifup兩行程式換成 ⇒ 
    $ sudo ip link set wlan0 down
    $ sudo ip link set wlan0 up   
### Hint3: 出錯的話 試試以下作法
    $ sudo nano /etc/network/interfaces
    
    在裡頭填上資料，如下: 
    auto lo

    iface lo inet loopback
    iface eth0 inet dhcp

    allow-hotplug wlan0
    iface wlan0 inet manual
    wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
    iface default inet dhcp
    =>按ctrl+X =>按Y 儲存跳離檔案

-------------

## `3. vnc遠端控制`
#### a. 在pi上打以下指令
    $ sudo apt-get install tightvncserver -y
    => 安裝tightvncerver
    
    $ vncserver
    => 設定密碼等等等
    
    $ ps a | grep vnc
    => 確認vnc server是開在哪一個DISPLAY上
#### b. 在筆電安裝VNC viewer，步驟如下
在Chrome上安裝 VNC Viewer for Google Chrome套件
在Chrome上打 "chrome://apps"，點選 VNC Viewer

#### c. 用VNC連線，步驟如下
在address那欄填上"PI's IP address:5900+DISPLAY NUMBER"
例如：
PI's IP address == 192.168.0.1
DISPLAY NUMBER == 1
那addres那欄要填 => `192.168.0.1:5901`

### Hint1: 可以用`$ vncpasswd`來設定新密碼
### Hint2: 電腦和raspberry要在同一個網路下
### Hint3: 出錯的話 試試以下作法
    $ ps aux | grep -i apt
    =>查看有沒有process在工作
    
    $ sudo kill -9 <process id>
    => 把他們停掉
    
    $ sudo killall apt apt-get
    => 停掉所有的工作
### Hint4: 出錯的話，不知道有沒有用但可以試試看
    $ sudo killall apt apt-get
    $ sudo rm /var/lib/apt/lists/lock 
    $ sudo rm /var/cache/apt/archives/lock 
    $ sudo rm /var/lib/dpkg/lock*
    $ sudo dpkg --configure -a
    $ sudo apt update

----------

## `4. 相機設定`
#### a. 軟體設定

    $ sudo raspi-config
    
    選擇Interfacing Options 
    將Camera和I2C都開啟    //I2C記得開，很重要
    她會自動重開機，就讓她做

#### b. 硬體安裝

按照這個 https://www.youtube.com/watch?v=GImeVqHQzsE&feature=emb_title 影片裝上相機

我的裝好的樣子: 
![](https://i.imgur.com/4H47wgX.jpg =70%x)

    $ raspistill -o haha.png
    => 拍照
    
    $ eog haha.png
    => 查看拍的照片有沒有成功
    
### Hint: png不行，就換jpg試試 
    
------------------

## `5. 實作 USB Accelerator`
#### a. 安裝Edge TPU runtime，如下: 
    $ echo "deb https://packages.cloud.google.com/apt coral-edgetpu-stable main" | sudo tee /etc/apt/sources.list.d/coral-edgetpu.list

    $ curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -

    $ sudo apt-get update
    $ sudo apt-get install libedgetpu1-std
把USB Accelerator接上raspberry pi
我接好的雛形:
![](https://i.imgur.com/SvIH12c.jpg =70%x)



#### b. 查詢欲下載的版本，並下載。步驟如下:
查詢規格: https://www.raspberrypi.com.tw/10684/55/

    nano一個py檔(EX: nano haha.py )
    -------------------haha.py------------------------------------
    #!/usr/bim/env python
    import pip
    print (pip.pep425tags.get_supported())
    ------------------------------------------------------------------
    python3 haha.py
    =>你會看到pip執行的版本，像我的話會看到有 ('cp35', 'cp35m', 'linux_armv7l')
    =>那我就知道要下載pip3 install tflite_runtime-1.14.0-cp35-cp35m-linux_armv7l.whl 這個版本

到這個 https://www.tensorflow.org/lite/guide/python 網站
點選下載你規格的whl檔
    
    $ pip3 install tflite_runtime-1.14.0-cp37-cp37m-linux_armv7l.whl
    => 這行可能會跑很久，要有耐心

#### c. 額外弄一些東東，不然會出錯 

`*切記: 以下所有指令，如果發現出錯`
`sudo就加-H, wget就加no-check-certificate，可能本來不行的就成功了`

    $ strings /usr/lib/arm-linux-gnueabihf/libstdc++.so.6 | grep GLIBCXX
    => 查看當前GLIBCXX的版本
    => 若缺少GLIBCXX_3.4.22，做以下指令
    
    $ sudo apt-get install libstdc++6
    $ sudo add-apt-repository ppa:ubuntu-toolchain-r/test 
    $ sudo apt-get update
    $ sudo apt-get upgrade
    $ sudo apt-get dist-upgrade
    
    $ strings /usr/lib/arm-linux-gnueabihf/libstdc++.so.6 | grep GLIBCXX
    => 看看有沒有新加了

#### d. 這個斷落的內容，是我在實作時有加的東西，但我不知道有沒有影響，所以等你出錯時，再試著加加看 

    $ sudo apt-get install -y libhdf5-dev libc-ares-dev libeigen3-dev
    $ sudo pip3 install keras_applications==1.0.7 --no-deps
    $ sudo pip3 install keras_preprocessing==1.0.9 --no-deps
    
    $ wget -O numpy-1.16.1-cp35-cp35m-linux_armv7l.whl https://www.piwheels.hostedpi.com/simple/numpy/numpy-1.16.1-cp35-cp35m-linux_armv7l.whl
    $ pip3 install numpy-1.16-1.whl

    $ wget -O h5py-2.9.0-cp35-cp35m-linux_armv7l.whl https://www.piwheels.org/simple/h5py/h5py-2.9.0-cp35-cp35m-linux_armv7l.whl
    $ pip3 install h5py-2.9.0-cp35-cp35m-linux_armv7l.whl --no-deps
    $ sudo apt-get install -y openmpi-bin libopenmpi-dev
    -----------------------------------------------------------------
    $ virtualenv --python=python3 /tmp/v
    $ sudo apt-get install libtiff-dev libjpeg-dev zlib1g-dev libfreetype6-dev liblcms2-dev libwebp-dev tcl-dev tk-dev python-tk


#### e. 跑一個model試試看(出錯基本上都是這裡出錯，心臟要夠大顆QQ)

    $ mkdir coral && cd coral
    $ git clone https://github.com/google-coral/tflite.git
    
    $ cd tflite/python/examples/classification
    $ bash install_requirements.sh
    => 這行可能會跑很久，要有耐心(也可能很快拉XD)
    
    $ python3 classify_image.py \
    --model models/mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite \
    --labels models/inat_bird_labels.txt \
    --input images/parrot.jpg
    
如果跑出以下類似訊息，就代表成功了!

    INFO: Initialized TensorFlow Lite runtime.
    ----INFERENCE TIME----
    Note: The first inference on Edge TPU is slow because it includes loading the model into Edge TPU memory.
    11.8ms
    3.0ms
    2.8ms
    2.9ms
    2.9ms
    -------RESULTS--------
    Ara macao (Scarlet Macaw): 0.76562
    
我們的成果: 
![](https://i.imgur.com/G27pr5N.png)

    
### Hint: 出錯的話，試試這個給他run，可能會有奇效
    $ apt-get install -y \
    python3 \
    python-dev \
    python3-dev 

-----------------------------



### `參考資料`
https://coral.withgoogle.com/docs/accelerator/get-started/

https://www.raspberrypi.com.tw/1999/connect-to-raspberry-pi-via-serial/

https://www.raspberrypi.com.tw/2152/setting-up-wifi-with-the-command-line/?fbclid=IwAR3RQd2CvjVx8sOiPf_l2ixpUwcDIszvgRf6L5_ZEk9aufDOeYXnkLPL3wg

https://blog.cavedu.com/2018/03/23/raspberry-pi-%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%E9%81%A0%E7%AB%AF%E6%A1%8C%E9%9D%A2/

https://blog.wuct.me/raspberry-pi-100abbe7a1fd