【課程】Raspberry Pi Pico 快速入門工作坊

首場 Raspberry Pi Pico 工作坊,內容涵蓋基礎電子電路、MicroPython 程式介紹,還搭配官方教材!

《課程內容》
目標:一天學會使用 Raspberry Pi Pico 控制多種硬體
時間:2021/05/23(日) 10:00~18:00
地點:台北市重慶南路一段105號2樓/天瓏資訊圖書
講師:台灣樹莓派 Ledger 和 sosorry

05/23 課程內容
10:00 – 11:00: 1. Pico 安裝設定(更新韌體,開發環境介紹,圖形化界面開發)
11:00 – 12:00: 2. GPIO 介紹(數位/類比,輸入/輸出,MicroPython,多執行緒)
13:00 – 14:00: 3. 數位輸出/輸入(LED,按鍵,人體紅外線感測器,蜂鳴器)
14:00 – 15:00: 4. 類比輸出/輸入(LED,伺服馬達,MQ-2 煙霧感測器)
15:00 – 15:30: 5. 溫度量測記錄(內建感測器,資料讀寫)
15:30 – 16:30: 6. I2C(I2C 協定和工具介紹,LCD 顯示原理)
16:30 – 17:00: 7. UART 通訊(I2C 協定介紹,雙 Pico 通訊)

《費用》
Raspberry Pi 工作坊候補表單  <==報名額滿了,填寫候補表單!
* $2,900元(含稅),包含午餐(Pizza)。硬體包含 Raspberry Pi Pico 入門套件(內含 Pico 已焊)、Get Started with MicroPython on Raspberry Pi Pico 英文實體書 、SG90 伺服馬達、MQ-2 煙霧感測器等。

注意事項:
* 此課程為初階課程。
* 學員當天需自備筆電,Windows / Linux / Mac 皆可。

[產品] Raspberry Pi Pico | Pico Board | RP2040 (大量現貨)

《特色》
1. 開源硬體和開源軟體!
2. 高性能與更多靈活的 I/O!
3. 內建溫度感測器和實時時鐘(RTC)。
4. 支援 C 和 MicroPython 開發。
5. 可執行 TensorFlow Lite 框架。

《規格》

Processor: RP2040 Dual-core Arm Cortex-M0+(可達 133 MHz)
SRAM: 264KB on-chip
Flash: 2MB
GPIO: 26 multifunction GPIO pins(3.3V 準位) 包含 3 analogue inputs
I/O: UART x2; SPI x2; I2C x2; PWM x16
USB: USB 1.1 x1(controller and PHY with host and device support)
PIO: Programmable I/O (PIO) x8
Sensor: Temperature; RTC
Power: 1.8–5.5V DC(microUSB)
Dimensions: 21 mm × 51 mm

《腳位定義》

《下載》
* pinout diagram
* Fritzing part
* design files
* STEP file

《文件》
* Raspberry Pi Pico Datasheet
* Getting started with Raspberry Pi Pico
* RP2040 Datasheet
* Hardware design with RP2040
* Pico C/C++ SDK
* Pico Python SDK

《新聞》
* [新聞] Raspberry Pi Pico 出來了!

Raspberry Pi Pico 開發板,$ 168 (運費 $60,3片以上免運費)



Raspberry Pi Pico 套件(含Pico + 傳輸線 + 銅排針),$ 210 (運費 $60,3片以上免運費)


※若無法使用Paypal購買,請到 這裡 填寫表單購買,造成您的不便敬請見諒。

[新聞] Raspberry Pi Pico 出來了!


影片來源:Meet Raspberry Silicon: Raspberry Pi Pico now on sale at $4

Raspberry Pi 基金會 設計的第一款單晶片(microcontroller)等級的開發板 Pico 出來了!


圖片來源:Raspberry Pi Pico – what did you think?

截至 2020 年底,Raspberry Pi 已經銷售了三千七百萬台,並且被廣泛應用在個人創客、學校教學或是量產品上。但如果是想做單純 I/O 功能的應用,就需要考慮使用樹莓派的限制了。因為 Raspberry Pi 的功耗至少是 100 毫瓦(milliwatts)起跳,而且 Raspberry Pi(包括 Zero 系列)都沒有支援類比輸入,而使用 Linux 作業系統更不適合低延遲的場景。


圖片來源:Meet Raspberry Silicon: Raspberry Pi Pico now on sale at $4

《特色》
因此 RP2040 微控制器的設計目標就是在高性能與更多靈活的 I/O 上。使用雙核 Arm Cortex-M0+ @ 133MHz 讓 RP2040 有極佳的效能,而 Mark Owen(Qfplib 函式庫作者)更優化了 Cortex-M0+ 的浮點函數,甚至比 GCC 函式庫還要快的多。雙核和大記憶體也讓 RP2040 可以執行 TensorFlow Lite 的框架,例如 Pete Warden 為 Pico 寫了一個應用


圖片來源:Raspberry Pi Pico Pinout

RP2040 的產品代號可以由這張圖來說明,未來將可看到 RP 開頭的微控制器系列。

圖片來源:Raspberry Pi Pico microcontroller: specifications, features and RP2040

而高達 26 支 multifunction 的 GPIO 腳位(3.3V 準位),具備有 ADC x2、UART x2、SPI x2、I2C x2、PWM x16,可以更靈活的控制硬體。並且可使用 C 或是 MicroPython 作為開發的程式語言。


圖片來源:Raspberry Pi Pico Review: ‘Pi Silicon’ Debuts on $4 Microcontroller

Pico 的誕生,會分食 Arduino 的市場,學校或是企業將轉投入開發 Pico 的應用。特別的是,RP2040 是使用台積電(TSMC)的 40nm 製程,相信這品質是不容懷疑。

不過 Pico 還是有些小小缺點,例如沒有內建無線功能(WiFi 和藍牙都沒有)就只能做 IoT 場景的終端節點,因此未來和 Raspberry Pi 整合搭配將會是主要應用。

馬上購買!現貨庫存!

《參考資料》
* Meet Raspberry Silicon: Raspberry Pi Pico now on sale at $4
* Raspberry Pi Pico – what did you think?
* Getting Started with Raspberry Pi Pico
* Raspberry Pi Pico: Tutorials, Pinout, Everything You Need to Know
* [產品] Raspberry Pi Pico | Pico Board | RP2040

[產品] LoRa LRM001(USB/UART) – Microchip RN2483

SONY DSC

《特色》
* Mini PCI Express form factor
* 2 u.FL antennas to support either 433 or 868MHz
* Range 7KM
* FTDI® 232HL
* 型式認證號碼:CCAN16LP0530T5

《規格》
* Microchip® RN2483
* Compliant with LoRaWan®
* USB/UART interface
* Mini PCI Express form factor
* 2 u.FL antennas to support 433 or 868MHz
* Range: 7KM
* Data rate: 1k bps
* Network type: Star
* Standby current: 0.1mA
* Rx current: 12ma
* RF Output power (maximum) : 20dbm
* Receiver sensitivity: -130 dbm
* Support Win 7 and Window 10
* Support Linux : Ubuntu 12.04
* Operating temperature: -30oC~ 75oC
* Operating humidity: 5% ~ 95% RH
* Dimension: 50 x 29 x 9 mm

《內容物》
– LoRa LRM001(USB/UART) Module x1
– microUSB to USB cable x1
– 2.54 to 2.0mm Jumper Wires x1
– Antenna x1

《下載》
規格書
RN2483 Command Reference Users Guide

《使用教學》
LoRa LRM001 User Guide
– 投影片下載

$ 2,250


※若無法使用Paypal購買,請到 這裡 填寫表單購買,造成您的不便敬請見諒。

[活動] Raspberry Pi社群聚會 #16 會後資料(Raspberry Pi IoT 無線傳輸技術)

第十六次 Raspberry Pi 社群聚會,希望能透過社群活動的分享和交流,找到更多 Raspberry Pi 的可能。本次主題是「 Raspberry Pi 物聯網(IoT, Internet of Things)無線傳輸技術」。

感謝大家的共筆,將分享的重點紀錄起來。我們會持續辦各種活動,連結更多有興趣的朋友們,找到更多 Raspberry Pi 的可能。

分享者1:柯大(MakerPro 技術顧問)
題目:LoRa 開發經驗分享
大綱:LoRa 通訊架構、LoRa 應用 與LoRa 模組使用
下載:20161115_樹莓派 LoRa 開發經驗分享_V2

LoRa 開發經驗分享
柯大這次將台灣的 LoRa 模組廠商全部測試完畢。包括正文科技、亞太電信、泰發科技、MICROCHIP、群登科技、環天世通科技等,投影片中有詳細的使用方式與接線圖,也比較各家的優缺點。

lora_node_and_lora_gateway
最後展示了 LoRa Node + LoRa Gateway 的實際應用。其中 LoRa Node 是紀錄溫濕度與 PM2.5 的數值,資訊會先傳給以 Ameba + LoRa 自建的 LoRa Gateway,再以 WiFi 上傳到用 QNAP 所搭建的 NAS 私有雲。可以從後端介面查詢各項原始資訊,並用 Node-RED 建立物件之間的關聯性。

Raspberry Pi社群聚會 #16
科大這次的分享因為是一手實測,內容非常豐富,大家都迫不及待的先用手機紀錄下來。

立亞特科技Robert
立亞特科技的 Robert 也以製造商的角色也分享了 LoRa 模組的使用經驗,包括功率、傳送距離、使用注意須知等。

 

分享者2:sosorry(台灣樹莓派)
題目:Raspberry Pi IoT 應用展示(藍牙)
Raspberry Pi IoT 應用展示

我們這次介紹了 Bluetooth 無線傳輸技術。包括有:
1. Bluetooth 技術演進,從 BR/EDR 到 BLE。
2. Pi 3 的藍牙問題與使用,該怎麼設定才能讓 UART 和藍牙同時使用。
3. 常用藍牙工具,如何配對與連線,如何查看藍牙封包等。
4. 常見 IoT 架構,包括感測器終端節點、網路閘道器、雲端服務等,通常會用智慧型手機做監控或是互動裝置。
5. Beacon 展示與應用,以 Google 推的 Physical Web 來推播各項資訊,免除安裝 app 的問題。


Raspberry Pi IoT無線傳輸技術介紹 – Bluetooth篇 from raspberrypi-tw

 
歡迎大家來參加社群聚會,相關活動我們都會在網頁facebook 公告,如果有主題想分享也請來信 service AT raspberrypi.com.tw。

[測試] AS3992 – UHF RFID Single Chip Reader

《文件與教學》
文件總整理,可以從這論壇查看使用教學。
https://www.soliddepot.com/forum/viewforum.php?f=22

AS399X firmware(.hex)下載
https://www.soliddepot.com/forum/viewtopic.php?f=22&t=40343&sid=e0f3335ae0e157fb2e77c799a567d57d

下載完整資料(出處),包括 datashhet、schematics、firmware、document 等等。
https://www.dropbox.com/s/u9cv2ytscplytmg/AS3992%20reader%20module%20files%20English.zip?dl=0

 
《硬體外觀》
AS3992_adapter_antenna_tag
AS3992 開發板 + 3.6V/2A 電源 + 3dBi 天線 + 五張 915MHz Tag

usb_debugger_jtag_adapter
USB Debug Adapter + JTAG 排線 + JTAG 轉 C2 轉板

 
《AS3992 韌體更新》
由於韌體預設是燒錄 USB 版本,可以燒成 UART 版本方便測試。連接方式如下。

jtag_connect_usb_debugger
JTAG排線防呆。

jtag_connect_adapter
注意要三角對三角。

pin_of_as3992_jtag_adapter
AS3992 的 C2CK 和 C2D 還有 GND 要和 JTAG 轉板腳位相接。

connect_as3992_jtag_adapter
相接的結果(用手扶著就可以了)。

upload_firmware_connection
完整連接圖。

韌體更新要透過 Silicon Lab 提供的 FLASH 燒錄工具(C8051F)上傳。或是下載完整資料裡的壓縮檔。選擇 C2 programmer > Flash Programming V3.90.exe

如果一切連接順利,就可以看到 USB Debug Adapter 是可以選取的。
silicon_lab_flash_utility

點選 “Connect”,順利的話就可以連接到 AS3992,原來 “Connect” 會變成 “Disconnect”。
connect_to_as3992

下載 AS399X firmware.zip(.hex)
其中,as399xdemo_uart_3992.hex 表示 115200bps baud rate
另外,as399xdemo3992uart_9600.hex 表示 9600bps baud rate
我們選擇 115200bps 燒錄(用 9600bps 的也可以)。

upload_firmware
燒錄完畢後,重插拔電源將會使用新韌體開機(如果下載到一半斷線也沒關係,但電源不能斷)

 
《AS3992 連線》
我們測試的環境為 Raspberry Pi 3,使用 2016-05-23 的映像檔。
Raspberry Pi 和 AS3992 使用 USB 轉 TTL 序列傳輸線(PL2303HXD 或是 PL2303HX 都可以)相接。
raspberry_pi_as3992

通訊的方式是用 CuteCom,如果還沒安裝請先用 sudo apt-get install cutecom 安裝。
在 Pi 上連線的介面是 /dev/ttyUSBX,例如 /dev/ttyUSB0 如下圖。
dev_ttyusb0

一切沒問題,就可以使用 cutecom 做連線測試了。步驟如下:
1. 在 Device 選擇 /dev/ttyUSB0
2. 在 Baud rate 選擇 115200
3. 在 Data bits 選擇 8
4. 在 Stop bits 選擇 1
5. 在 Parity 選擇 None
6. 這時候點選 Open device
7. 最下方選擇 Hex input
8. char delay 選擇 1 ms
cutecom

根據文件說明,送 10 03 00 是查詢韌體版本,送 10 03 01 是查詢硬體版本。

因此我們在底下的 Input 輸入100300 就可以看到 AS3992 回傳的韌體版本。
cutecom_100300

如果是輸入100301 就可以看到 AS3992 回傳的硬體版本。
cutecom_100301

更多命令就需要參考完整的手冊才知道怎麼使用了。最重要的是完整資料裡的 datasheet 和 command。
datasheet: AS3992 reader module files English > Application notes > AS3992_Datasheet_v1.0.pdf
command: AS3992 reader module files English > Application notes > AN399x Leo Roger System Description_1_4.pdf

 
《AS3992 讀卡》
有人將 AS3992 UHF RFID reader 寫了 Python 的模組,可以參考使用。

接線就和剛剛的方式一樣,Raspberry Pi 透過 PL2303HX 或 PL2303HXD 和 AS3992 相接。

################                 ##########
# Raspberry Pi #  --USB to TTL-- # AS3992 #
################                 ##########

開啟 Pi 的終端機,先把程式拉(pull)下來。

$ cd ~
$ git clone https://github.com/GuyLewin/pyAS3992
$ cd pyAS3992/

因為原本的範例程式(example.py)只會讀取一次,我們稍做修改就可以持續讀取。

$ vim main.py
import as3992_api
import time

def main():
    ann = as3992_api.AntennaDevice()
    print "Firmware info: %s\nHardware info: %s" % ann.get_system_info()
    print "Activating antenna"
    ann.set_antenna_state(True)
    print "Tags:"

    while True:
        try:
            for epc, rssi in ann.iter_epc_rssi():
                print epc.encode("HEX"), rssi
        except:
            pass

        time.sleep(1)

if __name__ == "__main__":
    main()

執行 main.py,我們拿五張 tag 做測試,會讀到 epcrssi。實測接收距離約在 10-15cm 左右。

$ sudo python main.py

as3992_reader

[產品] Windows 10 IOT 物聯網入門與實戰(柯博文)/學習套件

win10-iot-learning-kit-2-serial-s

《特色》
– 實體書 “Windows 10 IOT物聯網入門與實戰 – 使用 Raspberry Pi” 學習套件

《規格》

1. 400洞中型麵包板 x1 8. 10KΩ電阻 x1 15.切換式開關(三腳) x1
2. SG90伺服馬達 x1 9. 光敏電阻 x1 16. LED紅色(3mm) x8
3. 七段式LED數字燈 x1 10. 水銀開關(元件) x1 17. 0.1µF電容x1
4. HC-SR04超音波感測器 x1 11. RGB LED(元件) x1 18. 150pf電容x1
5. 10KΩ可變電阻 x1 12. USB轉UART TTL x1 19. 74HC595 IC x1
6. 220Ω電阻 x14 13. ADXL345模組 x1 20. ADC0804 IC x1
7. 3.9KΩ電阻 x1 14. 小按鍵開關 x1 21. 20cm公對母排線 x20

注意:此組合不含控制板及F-60藍牙模組

學習套件 
$ 750

 

AEH003500-s
書搭套件合購 $ 1330 
$ 1250


※若無法使用Paypal購買,請到 這裡 填寫表單購買,造成您的不便敬請見諒。

[產品] LoRa LRM001(UART) – Microchip RN2483

LoRa LRM001(UART)

《特色》
* Mini PCI Express form factor
* 2 u.FL antennas to support either 433 or 868MHz
* Range 7KM
* FTDI® 232HL
* 型式認證號碼:CCAN16LP0530T5

《規格》
* Microchip® RN2483
* Compliant with LoRaWan®
* UART interface
* Mini PCI Express form factor
* 2 u.FL antennas to support 433 or 868MHz
* Range: 7KM
* Data rate: 1k bps
* Network type: Star
* Standby current: 0.1mA
* Rx current: 12ma
* RF Output power (maximum) : 20dbm
* Receiver sensitivity: -130 dbm
* Operating temperature: -30oC~ 75oC
* Operating humidity: 5% ~ 95% RH
* Dimension: 50 x 29 x 9 mm

《內容物》
– LoRa LRM001(UART) Module x1
– 2.54 to 2.0mm Jumper Wires x1
– Antenna x1

《下載》
規格書
RN2483 Command Reference Users Guide

《使用教學》
LoRa LRM001 User Guide
– 投影片下載

$ 2,250 停售 


※若無法使用Paypal購買,請到 這裡 填寫表單購買,造成您的不便敬請見諒。

[常見問與答] 解決從序列埠登入到 Pi 3 的亂碼問題

購買產品:PL2303HX USB轉TTL傳輸線PL2303HXD USB轉TTL傳輸線

raspberry-pi-3-login-via-uart-baud-rates-broken

剛拿到 Pi 3 如果安裝 2016-02-26-raspbian-jessie 的映像檔後想使用序列埠連線,會發現出現亂碼,該怎麼辦?

這是因為原本 Pi 3 內建的硬體 UART 被 BCM2837 SoC 拿去給 Bluetooth 晶片組使用,而原本的 UART 輸出腳位(GPIOs 14 & 15)改成用 mini-uart port。意思是原本硬體 UART 有獨立的 clock divisor,因此 baud rate 可以維持在 115200,可是 mini-uart 使用系統核心時脈,實際只能跑到 72000 左右的 baud rate,因此當使用 115200 的 baud rate 連線就會出現亂碼。

解決的方法為:
步驟一,增加一個 pi3-disable-bt-overlaydevice tree overlay。這個 overlay 會停用藍牙,並且將 UART0/ttyAMA0 再設定給 GPIOs 14 & 15。
建議將 image 寫入 SD 卡後就直接修改 /boot/config.txt,在檔案最後增加兩行。

force_turbo=1
dtoverlay=pi3-disable-bt

add-pi3-disable-bt-overlay-at-config-file

其中,force_turbo=1 是強制 CPU 的時脈維持 1.2GHz 的時脈。預設值為 0 時表示時脈為 ondemand,會隨著負載而調整。
dtoverlay=pi3-disable-bt 表示載入 pi3-disable-bt 這個 device tree overlay,將會停用藍牙並將 UART0/ttyAMA0 設定到 GPIOs 14 & 15 腳位。

其實做完步驟一以後就可以用 115200 的 baud rate 透過序列埠連線進 Pi 了。可是雖然載入 pi3-disable-bt-overlay,但藍牙的服務依然是開啟的,因此還是要進入系統將藍牙服務停掉。

$ sudo systemctl disable hciuart

最後,因為使用 force_turbo=1 這個設定,整個 SoC 溫度會很高,因此再更新系統(包括 firmware 和 dtb)後就可以把這個設定註解掉,重開機生效。

$ sudo apt-get update
$ sudo apt-get upgrade

connect-to-raspberry-pi-3-via-serial

更多資訊:

1. 要如何看 CPU 時脈?
可以用 cat 指令查看以下三個檔案如下,分別為最高時脈、目前時脈、最低時脈。

$ cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq
$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
$ cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq

2. 如何看目前的 Device Tree?
首先要安裝 device tree compiler

$ sudo apt-get install device-tree-compiler

再用 dtc 指令查看。

$ dtc -I fs /proc/device-tree

結果會像

/dts-v1/;

/ {
    model = "Raspberry Pi 3 Model B Rev 1.2";
    compatible = "brcm,bcm2710", "brcm,bcm2709";
    memreserve = <0x3b000000 0x4000000>;
    #address-cells = <0x1>;
    #size-cells = <0x1>;
    interrupt-parent = <0x1>;
...
    soc {
        compatible = "simple-bus";
        ranges = <0x7e000000 0x3f000000 0x1000000>;
        #address-cells = <0x1>;
        phandle = <0x27>;
        #size-cells = <0x1>;
        linux,phandle = <0x27>;
...
            uart0_pins {
                phandle = <0x34>;
                brcm,function = <0x4>;
                brcm,pins = <0xe 0xf>;
                brcm,pull = <0x0 0x2>;
                linux,phandle = <0x34>;
            };
            uart1_pins {
                phandle = <0xf>;
                brcm,function = <0x2>;
                brcm,pins = <0xe 0xf>;
                brcm,pull = <0x0 0x2>;
                linux,phandle = <0xf>;
            };
...

參考資料:
* CONFIG.TXT
* DEVICE TREES, OVERLAYS AND PARAMETERS
* Raspberry Pi Device Tree Overlays
* Raspberry Pi 3 UART Overlay Workaround
* Raspberry Pi 3 compatibility (BT disable & serial port remap fix)
* RPi Serial Connection
* Raspberry Pi Serial Communication: What, Why, and a Touch of How
* More on Raspberry Pi serial ports