站內搜尋:Yahoo搜尋的結果,如果沒有給完整的網址,請在站內再搜尋一次!

顯示具有 RaspBerryPi 標籤的文章。 顯示所有文章
顯示具有 RaspBerryPi 標籤的文章。 顯示所有文章

2019-07-20

在樹莓派 RaspBerry Pi 下,用Python當開發工具,用SQLite3儲存資料,用SQLiteBrowser協助資料管理

工作環境:

  • RaspBerry Pi 3 Mode B+
  • 作業系統:版本代號為 Buster (Version:June 2019 / Release date:2019-06-20 / Kernel version:4.19)
在Python測試連接SQLite3的使用:
  • Buster版本的Python環境,SQLite3已經是Ready的狀態
  • 用以下的程式測試,在Python使用SQLite是OK的
    使用Python sqlite3模組建立資料庫連線,如果所指定的資料庫不存在,Python便會自動建立產生該資料庫檔案

在樹莓派安裝sqlitebrowser
  • sudo apt-get update
  • sudo apt-get upgrade
  • sudo apt-get install sqlite3
  • sudo apt-get install sqlitebrowser

參考資料:

2019-07-17

在樹莓派 RaspBerry Pi 下,用Python 執行 CURL 指令,發送 LINE Notify即時通知

工作環境:
  • RaspBerry Pi 3 Mode B+
  • 作業系統:版本代號為 Buster (Version:June 2019 / Release date:2019-06-20 / Kernel version:4.19)
  • 透過LINE接收其他網站服務通知,與網站服務連動完成後,LINE所提供的官方帳號「LINE Notify」將會傳送通知。不僅可與多個服務連動,也可透過LINE群組接收通知。
  • 現有可用的可連動服務
  • 當然也可以根據自己的需求,自行開發自己的服務需求
    • 取得通知服務的Token(發行存取權杖),必須先用註冊的電子郵件帳號 / 密碼,登入以下網址:
      https://notify-bot.line.me/my/
    • 點擊『發行權杖』
      輸入權杖名稱
      選取通知對象,可以是自己(1對1聊天接收LINE Notify的通知)或已參加的群組

    • 取得已發行的權杖
      若離開此頁面,將不會再顯示新發行的權杖。 離開頁面前,請先複製權杖。
    • 邀請好友中的『LINE Notify』加入所選取的通知群組(這個範例的群組是:★LuckyFullHouse★幸運滿屋★)。
  • 在樹莓派使用 cURL指令,傳送通知給Line Notify對應的通知對象
    • 甚麼是 cURL ?
      Curl 是一個在 Linux 上用來透過 HTTP Protocol 定義存取網路資源的協定,讓我們可以使用 client / server 模式來取得網路資源)下載和上傳檔案的指令(比起 wget 只能下載強大許多)。
    • curl的選用參數
      -X/--request [GET|POST|PUT|DELETE|PATCH]  使用指定的 http method 來發出 http request
      -H/--header  設定 request 裡所攜帶的 header
      -i/--include   在 output 顯示 response 的 header
      -d/--data       攜帶 HTTP POST Data
      -v/--verbose 輸出更多的訊息方便 debug
      -u/--user       攜帶使用者帳號、密碼
      -b/--cookie   攜帶 cookie(可以是參數或是檔案位置)
    • 使用 curl 傳送通知給Line Notify對應通知對象的指令格式:
      • 文字訊息內容:
        curl -i -X POST -H 'Authorization: Bearer <權杖碼>' -d 'message=<文字訊息內容>' https://notify-api.line.me/api/notify
      • 包含圖片的通知內容:
        curl -i -X POST -H 'Authorization: Bearer <權杖碼>' -d 'message=<文字訊息>' https://notify-api.line.me/api/notify -d 'stickerPackageId=1' -d ' stickerId=407'
      • stickerPackageId 及 stickerId 的代號,可以參閱:
        https://devdocs.line.me/files/sticker_list.pdf  
      • 如果沒得可以執行 curl 的主機,可以用online curl
        https://onlinecurl.com/  
      • LINE Notify的參考文件: https://notify-bot.line.me/doc/en/ 
使用Python搭配 curl 發送 Line Notify :
  • 參考程式碼:
    import os
    zToken='***TheTokenCode***'
    zMsg='2882國泰金目前股價=41.3'
    zCmd="curl -i -X POST -H "
    zCmd=zCmd+"'Authorization: Bearer " + zToken + "' "
    zCmd=zCmd+"-d 'message=" + zMsg + "' "
    zCmd=zCmd+"https://notify-api.line.me/api/notify"
    os.system(zCmd)
  • 執行結果:
    HTTP/1.1 200
    Server: nginx
    Date: Wed, 17 Jul 2019 09:08:31 GMT
    Content-Type: application/json;charset=UTF-8
    Transfer-Encoding: chunked
    Connection: keep-alive
    Keep-Alive: timeout=3
    X-RateLimit-Limit: 1000
    X-RateLimit-ImageLimit: 50
    X-RateLimit-Remaining: 998
    X-RateLimit-ImageRemaining: 50
    X-RateLimit-Reset: 1563357895

    {"status":200,"message":"ok"}
  • 發送的通知內容:

參考資料:

2019-07-16

在樹莓派 RaspBerry Pi 執行排程Python程式 (cron / crontab)

工作環境:

  • RaspBerry Pi 3 Mode B+
  • 作業系統:版本代號為 Buster (Version:June 2019 / Release date:2019-06-20 / Kernel version:4.19)
樹莓派排程工作的編輯:
  1. 如何進入排程工作的編輯?
    (要用預設登入帳號pi的身分執行,所以不要sudo)
     crontab -e
  2. crontab -e的編輯器預設為nano:
    存檔:^O (ctrl-O)
    離開:^X (ctrl-X)
  3. 加入一個排程工作
    */5 * * * * python3 /home/pi/Programs/testSchedule.py > /dev/null 2>&1 
  4. 排程時間參數說明:
    (第幾分鐘 ) (幾點) (哪一天) (月份) (星期)
  5. 常用排程執行週期格式:
    • 每五分鐘執行一次:
       */5 * * * *
    • 每整點執行一次:
       0 * * * * 
    • 每天23:55執行一次:
      55 23 * * *
    • 每月1日00:05執行一次:
      5 0 1 * *
    • 每週一07:00執行一次:
      0 7 * * 1
    • 每小時的1,10,21,32,43,55
      "1,10,21,32,43,55" * * * *
    • 每月的1-3日06:10個執行一次
      10 6 1-3 * *
  6. 排程工作內容編輯後,必須重新啟動排程服務
    sudo service cron restart
用於排程的Python Script程式,須注意的事項:
  1. 用於排程的Python script程式,第一行(shebang line, #! 程式檔名)需指定,這個script要用哪個程式來執行,依照作業環境的不同,區分如下:
    • Windows:#! python3
    • OS X:#! /usr/bin/env python3
    • Linux:#! /usr/bin/python3
    • 其他Linux常見的shebang
      • #!/bin/sh→使用 sh(Bourne shell) 或其它相容 shell 執行指令碼
      • #!/bin/csh→使用 csh(C shell) 執行
      • #!/usr/bin/perl -w→使用帶警告的 Perl 執行
      • #!/usr/bin/python -O→使用具有程式碼最佳化的 Python 執行
      • #!/usr/bin/php→使用 PHP 的命令列直譯器執行
  2. 確認Python script程式的執行權限:
    • 將 .py 程式,放在 預設使用者 pi 的 home folder
    • 授予執行權限:chmod +x thePythonScript.py
    • python script排程時間指定的範例:
      每逢1月2日的03:04am 執行
      4 3 2 1 8 /home/pi/schedulePython.py

參考資料:

在樹莓派 RaspBerry Pi 使用 ssmtp + google gmail 以Python發送ASCII編碼的電子郵件

工作環境:
  • RaspBerry Pi 3 Mode B+
  • 作業系統:版本代號為 Buster (Version:June 2019 / Release date:2019-06-20 / Kernel version:4.19)
建立郵件發送的需求及Python程式碼:

  1. 要有一個Google Gmail的帳號。
    (這個郵件可能是:xxx.yy@gmail.com常見的Gmail格式,也可能是一個使用G suite的自有郵件域名的郵件格式:abc@xx.yy.zz。以下的程式碼測試使用G suite自有域名郵件OK,用abc@xx.yy.zz代表,以此帳號從樹莓派發信至Gmail)
  2. 發信的Gmail帳號,須透過Google 帳號管理,將『低安全性應用程式的存取權限』設為啟用。
    https://www.google.com/settings/security/lesssecureapps 或
    https://myaccount.google.com/lesssecureapps
  3. 在樹莓派上安裝ssmtp
    sudo apt-get update
    sudo apt-get upgrade
    sudo apt-get install ssmtp
    ( sSMTP - Simple SMTP
    sSMTP is a simple MTA to deliver mail from a computer to a mail hub (SMTP server). sSMTP is simple and lightweight, there are no daemons or anything hogging up CPU; Just sSMTP. Unlike Exim4, sSMTP does not receive mail, expand aliases, or manage a queue. https://wiki.debian.org/sSMTP )
  4. 編輯 /etc/ssmtp/ssmtp.conf
    sudo leafpad /etc/ssmtp/ssmtp.conf
    修改為如下設定:
    # 接收系統郵件的 Email帳號(postmaster)
    root=abc.xyz@gmail.com
    # 使用 GMail 的 MTA 送信
    mailhub=smtp.gmail.com:587
    # 設定主機名稱,預設為raspberrypi
    hostname=raspberrypi
    # 發信的Gmail帳號與密碼
    AuthUser=abc@xx.yy.zz
    AuthPass=GmailPassword
    # 啟用安全加密連線
    UseSTARTTLS=YES
    UseTLS=YES
    # 輸出除錯資訊
    Debug=YES
  5. Python測試程式碼
    import smtplib
    zUser = 'abc@xx.yy.zz'
    zPass = 'GmailPassword'
    zTo = 'toAdd@gmail.com'
    zFrom = zUser
    zSubject = 'Test sendmail by Gmail + ssmtp using Python'
    zHeader = 'To: ' + zTo + '\n' + 'From: ' + zFrom + '\n' + 'Subject: ' + zSubject
    zBody = 'Body : Test sendmail by Gmail + ssmtp using Python'
    oSmtp = smtplib.SMTP('smtp.gmail.com',587)
    oSmtp.starttls()
    oSmtp.ehlo()
    oSmtp.login(zUser, zPass)
    oSmtp.sendmail(zFrom, zTo, zHeader + '\n\n' + zBody)
    oSmtp.quit()

  6. 確認toAdd@gmail.com已收到郵件,
    確認已存放至abc@xx.yy.zz 的寄件備份

參考資料:

2019-07-15

樹莓派 RaspBerry Pi 安裝文字瀏覽器 (Text Mode Browser) Lynx

  • 要安裝Lynx的工作環境
    • RaspBerry Pi 3 Mode B+
    • 作業系統:版本代號為 Buster (Version:June 2019 / Release date:2019-06-20 / Kernel version:4.19)
  • 安裝步驟:
    1. 更新軟體源,獲得最新的軟體列表:
      sudo apt-get update
      或 sudo apt update
    2. 升級已安裝的軟體:
      sudo apt-get upgrade
      或 sudo apt upgrade
    3. 安裝 lynx:
      sudo apt install lynx
      (因為sudo apt-get install lynx,找不到可用的lynx可安裝,但改用sudo apt install lynx,就可以順利安裝了 ...)

  • 修改軟體源伺服器。樹莓派官方的軟體來源網站,常會遇到下載速度很慢的情況,可以參考樹莓派官方網站所提供的mirror伺服器,修改/etc/apt/sources.list的更新來源網址:
  • Raspbian Repository Mirrors:https://www.raspbian.org/RaspbianMirrors
    更新來源改為:
    deb http://free.nchc.org.tw/raspbian/raspbian buster main contrib non-free rpi
    更新來源說明:
    deb : ( dpkg格式套件庫 )
    http://free.nchc.org.tw/raspbian/raspbian : ( 協定://伺服器的位址 )
    buster : ( 發行版本代號 )
    main contrib non-free rpi : ( 啟用[選擇Debian鏡射的main contrib non-free rpi]組成元件 )
  • 編輯器修改來源後要有存檔的權限,所以要sudo開啟編輯器,例如:
    sudo leafpad /etc/apt/sources.list 或 sudo nano /etc/apt/sources.list ...
  • 之後如果要移除Lynx這個軟體
    sudo apt purge lynx

2019-07-14

樹莓派 RaspBerry Pi 中文輸入法 (新酷音輸入法)

  1. 目前樹莓派的工作環境:
    • RaspBerry Pi 3 Mode B+
    • 作業系統:版本代號為 Buster (Version:June 2019 / Release date:2019-06-20 / Kernel version:4.19)
  2. 開啟LX終端機
  3. 安裝SCIM輸入法
    sudo apt-get install scim scim-tables-zh


  4. 安裝新酷音輸入法(scim-chewing)
    sudo apt-get install scim-chewing


  5. 查看SCIM輸入法的切換查看及設定
    (泛用智慧型輸入法平台:圖形介面設定工具)
    樹莓派LOGO→偏好設定→SCIM輸入法框架

    (功能切換的快速鍵)
    中英文切換:Control + Space

    (循環切換下一個輸入法的設定)
    (1).選取:放開
    (2).按一下『...』,出現『捕捉按鍵』小視窗

    (3).按下「左邊Shift」,『捕捉按鍵』小視窗自動關閉
    (4).系統會自動勾選「Shift」,文字方塊內出現「Shift_L」

    (5).按下「+」,完成組合建「Shift+Shift_L+KeyRelease」的組合

    (6).完成設定。重新啟動,才能讓設定生效。
  6. 選用中文輸入法
    樹莓派LOGO→偏好設定→SCIM輸入法框架
    輸入法引擎→全域設定
    簡體中文輸入法,全部取消
    繁體中文輸入法,只保留新酷音
    其他語文,保留英文/歐洲語文,移除內碼輸入
  7. 在VNC遠端操作的模式下,如果無法以Control + Space切換至中文輸入法,可以先開啟所要使用的軟體、編輯器,點選鍵盤圖示,選擇繁體中文,即可進入中文輸入模式。
    進入新酷音輸入法後,就可以用「Shift」切換中文、英文的輸入。



2019-07-13

安裝樹莓派RaspBerry Pi的作業系統

在樹莓派的官網(https://www.raspberrypi.org/),有提供許多的很多可供安裝在樹莓派上的作業系統,在Downloads頁面,官方版本Raspbian ( https://www.raspberrypi.org/downloads/raspbian/ )、官方建議的簡易安裝版NOOBS (New Out Of the Box Software) ( https://www.raspberrypi.org/downloads/noobs/ ),還有以下的版本可供選擇:
  1. RaspberryPi Desktop : https://www.raspberrypi.org/downloads/raspberry-pi-desktop/ 
  2. Ubuntu MATE : https://ubuntu-mate.org/raspberry-pi/ 
  3. Ubuntu Core : https://www.ubuntu.com/download/iot/raspberry-pi-2-3-core 
  4. Ubuntu Server : https://www.ubuntu.com/download/iot/raspberry-pi-2-3 
  5. Windows 10 IoT Core : https://docs.microsoft.com/en-us/windows/iot-core/downloads 
  6. OSMC(Open Source Media Centre) : https://osmc.tv/download/ 
  7. LibreELEC : http://libreelec.tv/ 
  8. PiNet : http://pinet.org.uk/ 
  9. RISC OS : https://www.riscosopen.org/content/downloads/raspberry-pi 
  10. Weather Station : http://downloads.raspberrypi.org/weather_station/images/weather_station-2018-01-14/ 
  11. IchigoJam RPi : https://ichigojam.github.io/RPi/ 
這次安裝選擇官方版本Raspbian:
(預計安裝在 RaspBerry Pi 3 Model B+ )
  1. 目前最新的版本代號為 Buster (Version:June 2019 / Release date:2019-06-20 / Kernel version:4.19),可以有三個選項:
  2. 這次選擇Full版本:2019-06-20-raspbian-buster-full.zip
    https://downloads.raspberrypi.org/raspbian/images/raspbian-2019-06-24/2019-06-20-raspbian-buster.zip
    解壓縮取得映像檔:2019-06-20-raspbian-buster-full.img 
  3. 將影像檔寫到TF記憶卡。
    一般都建議用Win32DiskImager ( A Windows tool for writing images to USB sticks or SD/CF cards, https://sourceforge.net/projects/win32diskimager/files/ ) 將 2019-06-20-raspbian-buster-full.img 寫入TF記憶卡,我習慣用 rufus ( https://rufus.ie/ , 官網有提供可攜式portable版本 ),寫入的方式如下:
    1. 選取記憶卡的所在位置:
      確認要將映檔燒錄進記憶卡的磁碟代號位置,選錯了原記憶卡的磁碟代號,燒錄後資料就不見了...

    2. 選擇開機模式:
      選擇『磁碟或ISO映像檔(請選擇)』,接著用『選擇』,選取映像檔的所在位置。如果是舊版Rufus,要勾選『使用映像檔建立開機片』,再選取映像檔為:DD映像檔,並選取映像檔位置。

    3. 執行燒錄
      確認以上的選項正確無誤,即可『執行』燒錄。完成燒錄後,就可以將記憶卡安裝置樹莓派。

  4. 樹莓派首次開機的相關事項:
    1. 螢幕:使用HDMI介面
    2. 鍵盤、滑鼠:使用USB介面,也可以用無線的
    3. 預設的帳號是pi, 密碼是raspberry,建議更改一下密碼
    4. 網路設定:IP資料,或無線網路的SSID及密碼,目前找不到直接輸入隱藏SSID的方式,所要有可以搜尋得到的SSID。
    5. 設定中文語系(在地化)。
    6. 啟用SSH及VNC,方便在沒有使用螢幕時,可以遠端遙控。
      樹莓派LOGO→偏好設定→RaspBerry Pi設定
      『介面』頁籤:啟用SSH及VNC

      螢幕的解析度必須指定,不可以使用Default預設值由系統根據連接的螢幕解析度,來決定解析度,必須選取一個解析度來當VNC連線的解析度。設定方式如下:
      樹莓派LOGO→偏好設定→RaspBerry Pi設定
      『系統』頁籤→Resolution→選一個Default以外的解析度來當VNC連線解析度
      (如果沒有修改解析度為Default以外的解析度,樹莓派未連接螢幕的情況下,是無法順利啟動VNC server來接受VNC client的連線)

  5. 遠端連線樹莓派:
    1. Win10有SSH指令,可以使用以下方式遠端以文字模式登入樹莓派。
      登入:SSH pi@樹莓派的IP
      登出:exit

    2. 樹莓派的VNC版本是RealVNC,可以用pi這個帳號密碼進行VNC連線。
      VNC的chat / transfer files ... 等功能,在RealVNC的server 及client間,都有提供相關的功能。



2019-07-12

買了一塊樹莓派 Raspberry Pi 3 Model B+,準備用來執行Python擷取資料 ...

樹莓派 RaspBerry Pi 3 Model B+的硬體規格:
  1. SoC (系統單晶片System on a Chip): Broadcom BCM2837(CPU,GPU DSP和SDRAM、USB)
  2. CPU : ARM Cortex-A53 64位元 (ARMv8系列) 1.4GHz (四核心)
  3. GPU : Broadcom VideoCore IV, OpenGL ES 2.0, 1080p 30 h.264/MPEG-4 AVC高畫質解碼器
  4. RAM : 1 GB (LPDDR2)
  5. USB 2.0介面個數 : 4
  6. 影像輸入 : 全尺寸HDMI
  7. 音源輸入 : I²S
  8. 音源輸出 : 3.5mm插孔,HDMI電子輸出或I²S
  9. 板載儲存 : MicroSD卡插槽
  10. 網路介面 : 100/1000Mbps 乙太網介面(RJ45介面),支援802.11n無線網路及藍牙4.1
  11. GPIO引腳數 : 40 (28 x GPIO, 12C, SPI, UART)
  12. 外設 : 14個GPIO及HAT規格鋪設
  13. 額定功率 : 10.5 瓦 (5V/2.1A)
  14. 電源輸入 : 5V 電壓 (通過MicroUSB或經GPIO輸入(pin#2/4/6:+5V/+5V/GND,可用來加裝散熱風扇))
  15. 總體尺寸 : 65 × 56.5 × 10 毫米(2.56 × 2.22 × 0.4 英寸)

壓克力外盒組裝、加裝散熱風扇( DC 5V/0.2A)、貼上散熱片:
四個螺絲只鎖兩個,四個全鎖壓克力外盒,加上墊片的高度,會讓兩個USB port無法正常使用。

  1. 使用GPIO pin #4/6 (+5V/GND) 供電給散熱風散。
  2. CUP貼上銅色散熱片。(不可貼鋁散熱片,會卡住風扇)
  3. 網路模組貼上鋁散熱片。

  1. 記憶體貼上鋁散熱片。
  2. 我的螢幕介面是:VGA及DVI,需要再準備一個 HDMI(公) to VGA(母)轉接器。
  3. 供電來源:micro USB供電線,輸出 5V/2.1A的供電來源(變壓器/行動電源)

記憶卡是需要另外加購的,金士頓Micro SDHC, SDCS 32G, 效能:80MB/s 讀取和 10MB/s 寫入速度、UHS-I 速度等級 1 (U1)、Class 10

SD記憶卡儲存容量及對應的檔案系統,區分為:
  1.  (SD        2GB以下):FAT16
  2.  (SDHC 2GB-32GB):FAT32
  3.  (SDXC 32GB-2TB):exFAT
  4.  (SDUC 2TB-128TB):exFAT
SD記憶卡與存取裝置的相容性:
  1. SDUC記憶卡只能用於SDUC主機設備。
    SDXC記憶卡可用於SDXC主機設備和SDUC主機設備。
    SDHC記憶卡可用於SDHC主機設備、SDXC主機設備和SDUC主機設備。
    SD記憶卡可用於SD主機設備、SDHC主機設備、SDXC主機設備和SDUC主機設備。
  2. SDUC主機設備可使用SD記憶卡、SDHC記憶卡、SDXC記憶卡和SDUC記憶卡。
    SDXC主機設備可使用SD記憶卡、SDHC記憶卡和SDXC記憶卡。
    SDHC主機設備可使用SD記憶卡和SDHC記憶卡。
    SD主機設備只能使用SD記憶卡
SD記憶卡寫入速度等級及對應的最低寫入速度:
  1. Class 2 (C2) : 2MB/s
  2. Class 4 (C4) : 4MB/s
  3. Class 6 (C6) : 6MB/s
  4. Class 10 (C10) : 10MB/s
  5. U1 : 10MB/s
  6. U3 : 30MB/s
  7. V6 : 6MB/s
  8. V10 : 10MB/s
  9. V30 : 30MB/s
  10. V60 : 60MB/s
  11. V90 : 90MB/s
SD記憶卡的匯流排介面及對應的速度:
  1. 一般速度:12.5MB/s
  2. 高速度:25MB/s
  3. UHS-I:50MB/s (SDR50, DDR50), 104MB/s (SDR104)
  4. UHS-II:156MB/s Full Duplex, 312MB/s Half Duplex
  5. UHS-III:312MB/s Full Duplex , 624MB/s Full Duplex
  6. SD Express:985MB/s, PCIe Gen.3
SD記憶卡的使用環境需求及對應的速度等級
  1. 720p 標準畫質拍攝(Standard Vedio):C2
  2. HD高畫質拍攝:C4/C6, V6
  3. 1080p Full HD 全高畫質拍攝:C10, U1, V10
  4. 4K 影片錄製 60/120 fps:U3, V30
  5. 8K 影片錄製 60/120 fps:V60/V90