2017/04/18

ESP8266:第一次接觸Adafruit HUZZAH ESP8266 Breakout,燒錄韌體NodeMCU、Arduino SDK、MicroPython、CircuitPython

這篇是寫給我自己看的,初步介紹ESP8266,韌體包含NodeMCU、Arduino SDK、MicroPython、CircuitPython,以及燒錄工具。

大綱:

  • ESP8266基本介紹
  • ESP8266模組
  • NodeMCU、韌體燒錄工具esptool、整合式開發環境ESPlorer、圖形介面的燒錄工具nodemcu-flasher與nodemcu-pyflasher
  • Arduino SDK
  • MicroPython
  • CircuitPython

ESP8266基本介紹

ESP8266,乐鑫信息科技公司(Espressif Systems)推出的WiFi晶片,價格超低,受到國外人士關注,並且把資料文件從中文翻成英文;後來釋出開發工具SDK,開始湧出各種韌體。社群網站在此,資訊豐富。

基本規格如下,詳情可看維基百科ESP8266
  • CPU,32-bit RISC, Tensilica Xtensa L106,運作頻率80 MHz。
  • 64 KB指令RAM,96 KB資料RAM。
  • 外部Flash:0.5 MB到4 MB(最高可達16 MB)。
  • WiFi:2.4 GHz ,IEEE 802.11 b/g/n、WEP or WPA/WPA2,可做為站台、AP存取點、或雙模。
  • 網路協定:TCP/IP、DNS。
  • 16個GPIO腳位,其他還有SPI、I2C、I2S、UART、10-bit ADC。
  • 工作電壓:3.3 V。 
  • 功耗:待機小於200uA,正常狀態12mA(平均)到200mA(峰值),持續傳送狀態70mA(平均)到200mA (峰值)。
  • 傳送速率:110到921600 bps。
ESP8266模組

通常會買模組而非單獨的晶片,知名模組廠商有安信可科技(Ai-Thinker、Anxinke),產品型號ESP-01、ESP-02 ... ESP-14等等,差異在於加裝的Flash大小、是否通過FCC與CE檢驗、天線類型、拉出來的腳位數量等,可到維基百科ESP8266查詢。注意,下圖中的模組尺寸比例,沒有依照實際大小。
不過我買的是Adafruit HUZZAH ESP8266 Breakout,以ESP-12F為基礎(含4 MB的Flash),再加上穩壓器(輸入電壓範圍3.4~6 V、輸出3.3V 500mA)、電壓準位轉換、LED、按鈕、二極體保護電源輸入等等,只需要再準備USB轉序列埠的線此模組的文件在此,詳述腳位、資料規格表、以及NodeMCU與Arduino SDK的基本範例。另外的產品Adafruit Feather HUZZAH with ESP8266 WiFi,則已內建USB轉序列埠晶片CP2104與LiPoly充電電路。
背面。
以USB轉序列埠的線連接電腦後,開始嚐試各種韌體、寫點程式碼吧。

NodeMCU、韌體燒錄工具esptool、整合式開發環境ESPlorer、圖形介面的燒錄工具nodemcu-flasher與nodemcu-pyflasher

此模組預設燒錄的韌體是NodeMCU文件在此,有API與韌體的建置和燒錄),版本0.9.5(build 20150318、Lua 5.1.4),可使用PuTTY(Win)、CoolTerm(Mac)、screen(Linux)、或其他終端機軟體連線,速率是9600,關掉任何硬體交握或流量控制,行結尾應設為CRLF "\r\n" 。

我使用PuTTY連線,需按一下模組上的Reset重置鈕,看到底下畫面的提示字元,便可開始輸入Lua程式:
若出現字樣「MEM CHECK FAIL!!!」,可能原因之一是傳輸速率錯了。

也可使用整合式開發環境ESPlorer(Java軟體),支援的韌體有NodeMCU、MicroPython、與AT指令。開啟後先到Settings-Select firmware選擇韌體為NodeMCU,選擇正確的序列埠與傳輸速率,按下Open連線,同樣地要按一下模組上的Reset重置鈕:
嗯,版本太舊了,可到NodeMCU custom builds線上建置韌體,自由選擇想要哪些程式庫,只需等幾分鐘,就會寄信告知;下載後,使用esptool(以Python的pip來安裝)進行燒錄,先讓ESP8266進入燒錄模式,作法是按著此模組的GPIO0鍵、按一下Reset鍵、放開GPIO0鍵,成功的話,GPIO0旁邊的紅色LED會進入半亮(黯淡)的狀態,然後執行的指令與參數如下:

python esptool.py --port COM5 --baud 460800 write_flash --flash_size=detect -fm dio 0x00000 firmware.bin

--port指定序列埠號,--baud指定速率,write_flash代表要燒錄,0x00000代表燒錄起始位址,firmware.bin是想燒錄的韌體。--flash_size=detect代表自動偵測Flash的大小,-fm是燒錄模式,512 KB模組使用qio,4 MB以上模組使用dio,但-fm或可省略。詳情可參考esptool官網NodeMCU的文件Adafruit的文件

如果發生奇怪的行為,可下參數erase_flash清除Flash,然後再燒錄,或可解決。原因可能是新舊版韌體有所差異而導致。

燒錄新版NodeMCU韌體後,再試著連線,雖然速率9600也可以,但改成115200會比較順。
另外,有支圖形介面的燒錄工具nodemcu-flasher,只有Windows版,直接下載32位元版64位元版。簡單用法是到Config指定韌體檔與位址,然後到Operation指定序列埠,按下Flash(F)即可燒錄。
還有支圖形介面的燒錄工具nodemcu-pyflasher,需要Python與wxPython,跨平台。我在Windows上想安裝,但卡在wxPython模組這一關。

如果想自己建置NodeMCU韌體,ESP8266核心的處理器,採用Tensilica公司的Xtensa LX106,所以需要該處理器的工具鍊。參考How to set up manually the GCC toolchain and SDK,原生建置環境,使用VirtualBox,安裝Ubuntu 12.04(15.04與16.10應該也可以),然後看Guts of the IoT: Building NodeMCU from Source for the ESP8266,下載esp-open-sdk,包含了Xtensa lx106架構的工具鍊、Espressif Systems釋出的ESP8266 IoT SDK(會被稱為vendor sdk)、以及其他程式庫,然後下載NodeMCU韌體的原始碼,進行建置。

Arduino SDK

社群有為ESP8266移植Arduino API,讓Arduino IDE支援ESP8266程式開發,安裝1.6.4以後的版本(官方建議1.6.8版),到選單-檔案-偏好設定-額外的開發板管理員網址,增加http://arduino.esp8266.com/stable/package_esp8266com_index.json,然後到選單-工具-開發板-開發板管理員,安裝「esp8266 by ESP8266 Community」。然後到選單-工具-開發板與序列埠,做好設定。

接著便可如平常撰寫Arduino草稿碼的方式,開始撰寫程式控制ESP8266。建置並燒錄的東西,就等同於韌體,也就是說會覆蓋掉之前的韌體。

MicroPython

MicroPython官網下載供ESP8266用的韌體,例如esp8266-20170108-v1.8.7.bin,然後燒錄即可,序列埠連線速率是115200。MicroPython文件到此參閱,原始碼在GitHub。另可參考Adafruit的文件MicroPython Basics: How to Load MicroPython on a Board

CircuitPython

CircuitPython是MicroPython的分支版本,主要加入Atmel SAMD21的支援,以及API的變動。到此下載供ESP8266用的韌體,例如供此模組用的adafruit-circuitpython-feather_huzzah-0.9.5.bin,然後燒錄即可,序列埠連線速率是115200。CircuitPython文件到此參閱,原始碼在GitHub,還有專屬的Gitter聊天室論壇

也可以自己建置,需要工具是ESP Open SDK,自己從頭搞的話太麻煩,參考這份文件,使用VirtualBox、Vagrant打造建置環境,然後便可建置CircuitPython(MicroPython也可以)。

注意,在0.9.0版以前,若是此模組Adafruit HUZZAH ESP8266 Breakout的話,序列埠連線會有問題,雖可出現Python提示符號(三個大於),但輸入沒反應。

若是0.9.1~0.9.4版,則無法正常連線。
上述問題已於0.9.5版解決,原因在這篇論壇討論文章另一篇


其他:
  • Pycom,各種以Python為開發語言的開發板,如WiPy、LoPy、SiPy等等。 
  • ampy,Adafruit MicroPython Tool,序列埠工具,傳送、存取檔案。

2017/04/12

情報:「放課後Fun School」參展單位召募中

Cavedu教育團隊舉辦的「放課後Fun School」,正在召募參展單位喔,不論你是創作者還是設計師,不論你是夢想實踐者還是擁有特別嗜好的玩家,都歡迎你參展喔。

以發掘新興趣為目標,募集100項各個領域的達人,真心分享體驗,邀請您一起拓展日常的活動版圖。

活動日期:2017年5月27日- 5月28日
報名參展截止日期:4月14日
地點:華山1914文創產業園區  東2館 (位於台北市八德路一段1號,光華商場附近)

展出內容規劃,可以是以興趣取向的社團形式,藉由本次展覽與同好聚會;也可以是研究導向,例如學術、科技、知識相關的介紹;當然啦,不必太過拘泥,盡情撒野也無不可,沒有特定主題,放手玩樂。

有興趣者,請到官方網站查詢報名方式,連絡方式與其他詳情,都可在參展說明手冊找到喔。之前曾辦過徵展說明會,可到此看看影片,進一步了解。
另外,放課後Young Maker徵展計畫,開放給15歲以下的任何人,向主辦單位提案/介紹/推薦自己的作品或創意,獲得免費展出的機會。

徵件日期到4月21日截止喔!

2017/03/27

Raspberry Pi:六角塑膠柱組合四塊Model B+

之前曾以4塊Model B+板子,玩玩distccMPICH,但只用紙盒裝著板子,相當陽春;到電子材料行找找適當的組具,讓4塊板子合體吧。

Model B+與更新的rpi板子,其孔洞大小、板子高度,應該都差不多,所以皆可適用。

原裝紙盒。

Sense HAT的六角柱與螺絲,拿來試試看。
不行,高度不夠,因為Sense HAT並不會在USB埠和RJ-45網路埠之上。兩塊板子之間大約需相隔2公分。
到電子材料行,購買適當的塑膠六角柱,須注意其大小與高度,最簡便的做法是拿板子去實際試試。注意,Pi 1的孔洞較大,B+之後的孔洞較小一點。
比較,Sense HAT的螺絲較細,我買的較粗。
裝上4個底部,與1個位於中間的隔離柱。六角柱的螺絲部分,其粗細恰恰可符合Pi板子的孔洞,但有時因為誤差,需要以旋轉方式才能穿過,或是稍微施加推力。
疊上第2塊板子。
依樣畫葫蘆,裝上隔離柱與其他板子。
最後鎖上短短的、算是螺帽吧;圖中還有兩個沒鎖。
完成囉,躺下來看看。
立起來,側面照。
跟原本的比較。

2017/03/22

Arduino擴充板:Adafruit的2.8吋觸控式TFT螢幕擴充板

買了Adafruit的Adafruit的2.8吋觸控式TFT螢幕擴充板,開箱並簡單介紹,詳細設定步驟請看Adafruit的文件;我買的是Arduino擴充板形式,另外也有分線板形式

我的環境:Windows 10、Arduino IDE 1.8.1、Arduino Uno板子。

這款產品主要有三個部分,都是SPI介面:

  • TFT LCD,對角線長2.8吋,解析度240x340像素,18-bit顏色(262000個色彩),不過Adafruit的程式庫使用16-bit色彩模式,背光是4個白光LED,驅動器是ILI9341。LCD有8-bit模式與SPI模式,前者需要的腳位較多、速度較快,後者需要的腳位較少、速度較慢。
  • 觸控螢幕,屬於電阻式觸控技術,只能感測一個接觸點,控制器是STMPE610。
  • microSD插槽,SPI介面。
既然是SPI介面,共同所需腳位有13(SCLK)、12(MISO)、11(MOSI),然後LCD的CS是腳位10,且還需要一條DC線路是腳位9(控制要傳資料Data、還是命令Command);觸控螢幕的CS是腳位8;microSD的CS是腳位4。

因為已經是Arduino擴充板了,硬體方面直接插上即可。

軟體方面需要的程式庫:
Adafruit_ILI9341,LCD低階操作動作的程式庫,附帶許多範例。
Adafruit-GFX-Library,高階的泛用圖形繪製程式庫,API參考文件
Adafruit_STMPE610,觸控螢幕的程式庫。

先執行Adafruit_STMPE610程式庫的測試範例TouchTest,然後用手指按一按觸控螢幕,應可在序列埠監控視窗看到類似下列的訊息。

注意:這支範例程式預設使用I2C介面,需要修改,拿掉I2C的部分,加上底下這兩行使用SPI:
#define STMPE_CS 8
Adafruit_STMPE610 touch = Adafruit_STMPE610(STMPE_CS);
然後執行Adafruit_ILI9341程式庫的測試範例graphicstest,會輸出各種不同圖形畫面,影片在YouTube,38秒

然後執行Adafruit_ILI9341程式庫的範例touchpaint,從左邊選擇顏色,當個小畫家吧。
另外還有範例是從microSD卡讀出圖檔,顯示在螢幕上。

板子的正面就是螢幕,背面如下圖:
  • 左下方,可看到TFT LCD與觸控螢幕(touchscreen) 的控制器晶片型號與介面。
  • 左邊中間,microSD卡插槽。
  • 右邊中間,可看到腳位編號。
  • 右下方,backlite控制要不要從腳位3控制背光(預設為開);TS int控制要不要接收觸控螢幕的中斷訊號;右邊的六個,控制SPI的腳位要不要連到13、12、11與ICSP排針,Leonardo與Mega板子需要修改。
板子上有個3.3V / 300mA的LDO穩壓器,TFT LCD與觸控螢幕應該只會耗用100mA的電。


參考資料:

2017/03/21

Raspberry Pi:RTC即時時鐘PCF8523

簡單記錄一下設定作業:Adafruit的RTC即時時鐘PCF8523電路板模組。其實這篇的內容,幾乎都是來自Adafruit的文件

PCF8523屬於便宜的RTC,若想要更好的,請選用DS1307(一般)或DS3231(很好)。

我的環境:Raspberry Pi 3,Raspbian  2017-03-02。

硬體線路,參看https://pinout.xyz/的腳位功能圖:

  • 實體腳位1(3.3V),接到PCF8523模組的VCC。
  • 實體腳位6(GND),接到PCF8523模組的GND。
  • 實體腳位3(SDA),接到PCF8523模組的SDA。
  • 實體腳位5(SCL),接到PCF8523模組的SCL。
照片。
然後執行raspi-config,進入選單5 Interfacing Options - P5 I2C,開啟I2C介面。
安裝所需模組:
$ sudo apt-get install python-smbus i2c-tools

執行i2cdetect測試,PCF8523模組的I2C位址是0x68。
$ sudo i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

編輯 /boot/config,加入底下這行:
dtoverlay=i2c-rtc,pcf8523

重開機,再次執行,此時不會看到68,因為被系統拿去了。
$ sudo i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

移除原本的虛擬硬體時鐘套件,註:之後我不知道怎麼恢復。
$ sudo apt-get -y remove fake-hwclock
$ sudo update-rc.d -f fake-hwclock remove

修改/lib/udev/hwclock-set,註解掉底下這三行:
#if [ -e /run/systemd/system ] ; then
# exit 0
#fi

執行raspi-config,進入選單4 Localisation Options - I2 Change Timezone,設定時區。
Current default time zone: 'Asia/Taipei'
Local time is now:      Sun Mar 19 11:15:30 CST 2017.
Universal Time is now:  Sun Mar 19 03:15:30 UTC 2017.

執行hwclock,讀取即時時鐘的資訊:
$ sudo hwclock -D -r
hwclock from util-linux 2.25.2
Using the /dev interface to the clock.
Assuming hardware clock is kept in UTC time.
Waiting for clock tick...
/dev/rtc does not have interrupt functions. Waiting in loop for time from /dev/rtc to change
...got clock tick
Time read from Hardware Clock: 2017/03/19 03:13:31
Hw clock time : 2017/03/19 03:13:31 = 1489893211 seconds since 1969
Sun 19 Mar 2017 11:13:31 AM CST  -0.431869 seconds

rpi應會上網抓取時間日期,下指令date看看是否正確。
$ date
Sun Mar 19 11:16:04 CST 2017

把日期時間、寫入即時時鐘。
$ sudo hwclock -w

看看對不對。
$ sudo hwclock -r
Sun 19 Mar 2017 11:17:38 AM CST  -0.588629 seconds

之後重開機,就會從即時時鐘抓日期時間。


參考資料:

2017/03/19

Arduino練習:RTC即時時鐘PCF8523

之前曾用過RTC即時時鐘DS1307,自買零件組裝,這篇則購買Adafruit的RTC即時時鐘PCF8523電路板模組

我的環境:Windows 10,Arduino IDE 1.8.1,Arduino Uno板子。

這款PCF8523模組的基本資料:

  • 工作電壓:3.3V或5V
  • 電池:CR1220
  • 精確度:不高,一天可能誤差2秒
  • 介面:I2C,位址0x68
正面照,左邊有5個腳位,右邊要裝電池CR1220。
背面照。
準備一顆CR1220電池。
線路很簡單:
Arduino Uno的5V,接到這款產品的VCC。
Arduino Uno的GND,接到這款產品的GND。
Arduino Uno的A4,接到這款產品的SDA。
Arduino Uno的A5,接到這款產品的SCL。

這款產品的SQW,不接。
近照。
以上是硬體部分,軟體部分要安裝Adafruit的程式庫RTClib。到Arduino IDE選單-草稿碼-匯入程式庫-管理程式庫...,開啟程式庫管理員,找到「RTClib by Adafruit」,安裝。
便可在Arduino IDE選單-檔案-範例-RTClib-pcf8523找到範例程式。
編譯並燒錄,開啟序列埠監控視窗,出現如下畫面。
這支範例程式,會把草稿碼編譯的日期時間,設定到RTC裡,所以第一行會出現正確的日期時間,後兩行則是測試用,計算7天又12小時又30分又6秒之後的日期時間。

參考資料:
DS1307 Real Time Clock Breakout Board Kit | Adafruit Learning System

2017/02/28

Raspberry Pi:Sense HAT開箱介紹

很早很早以前,有個Astro Pi計畫,把Raspberry Pi送上太空,加上感測元件,開放讓學生提交想執行的程式,嘿,可惜外人也只能光看乾瞪眼而已,後來,該計畫搭配的擴充板Sense HAT,變成商品開始銷售。

除了Raspberry Pi板子、Sense HAT與官方相機模組,還有那看起來金剛不壞的外殼,真帥,可惜沒賣。

最近買了Sense HAT這塊擴充板,可搭配的板子有Pi 3 / Pi 2 / Model B+ / Model A+,我使用Pi 3,試試吧,雖然已經不新鮮囉,呵呵。
 
規格如下:
  • 8×8 RGB LED矩陣
  • 含5個按鈕的搖桿
  • 溫度(temperature)感測器,0-65°C (Accurate ±2°C)
  • 相對濕度(humidity)感測器,20-80% rH (Accurate ±4.5%, in 15-40°C ±0.5°C)
  • 大氣壓力(barometric pressure)感測器,260 – 1260 hPa (Accurate ±0.1 hPa)
  • 加速計(accelerometer),±2/4/8/16 (g)
  • 磁力儀(magnetometer) ,±4/8/12/16 (gauss)
  • 陀螺儀(gyroscope),±245/500/2000 (dps)
  • 尺寸:65.1mm x 56.6mm x 13.9mm
  • 重量:20.4g
開箱,紙盒的正面與背面。
厚厚的安全手冊,因為有各國語言,嘿,太不環保了吧。
六角隔離柱與螺絲。
拿出放在防靜電袋裡的Sense HAT,終於看到本尊了。一眼就可看到8×8的LED矩陣,其右邊有顆晶片標示著「ACCEL/GYRO/MAG」,再往右則標示著「PRESSURE」與「HUMIDITY」,嗯,沒找到溫度的字樣。右下角是搖桿。上方是要插入Pi板子的40針腳。四個角落各有一個裝設孔。
背面照。
硬體安裝,對準插入,沒什麼好說的。
若要更穩固,加裝六角隔離柱與螺絲。
開機,LED矩陣會發光。
接下來安裝軟體部分,首先更新套件清單:
$ sudo apt-get update

然後安裝Sense HAT的程式庫:
$ sudo apt-get install sense-hat

照理說應該也會啟動I2C,若無,請自己執行raspi-config設定組態。然後重開機:
$ sudo reboot

軟體架構如下圖,有C/C++程式庫(RTIMULib)的部份,也有Python程式庫(python-sense-hat)。
剛剛安裝的套件裡,已經包含許多範例程式,位於/usr/src/sense-hat/examples,底下指令可複製該子目錄到自己的家目錄裡:
$ cp -R /usr/src/sense-hat/examples/ ~/

有Python範例程式、也有C/C++的,後者需要下指令make進行編譯,以RTIMULibDrive11為例,這支程式可測試Sense HAT擴充板的所有感測器:
$ cd ~/examples/RTIMULib/RTIMULibDrive11
$ make
$ ./RTIMULibDrive11

可看到類似下列的輸出訊息,有roll、pitch、yaw、氣壓、海平面高度、溫度、濕度、
Settings file not found. Using defaults and creating settings file
Detected LSM9DS1 at standard/standard address
Using fusion algorithm RTQF
Detected LPS25H at standard address
Detected HTS221 at standard address
min/max compass calibration not in use
Ellipsoid compass calibration not in use
Accel calibration not in use
LSM9DS1 init complete
Sample rate 0: : roll:-0.639063, pitch:-1.415285, yaw:-43.705342
Pressure: 1025.0, height above sea level: -97.7, temperature: 25.2, humidity: 53.8

第一行說找不到設定檔,會使用預設值並新增;另可複製預先校正過的設定檔,讓測量結果更為準確:
$ rm RTIMULib.ini
$ cp /etc/RTIMULib.ini ./

再次執行RTIMULibDrive11,輸出訊息如下:
Settings file RTIMULib.ini loaded
Using fusion algorithm RTQF
Detected LPS25H at standard address
Detected HTS221 at standard address
Using min/max compass calibration
Using ellipsoid compass calibration
Using accel calibration
LSM9DS1 init complete
Sample rate 0: : roll:0.503324, pitch:1.209912, yaw:-2.244175
Pressure: 1025.1, height above sea level: -97.9, temperature: 26.2, humidity: 53.3

發現roll、pitch、yaw的值的確差異甚大。若想自己校準,請參閱Sense HAT - Raspberry Pi Documentation

其他尚有許多範例程式,自己試試吧,如compass.py會以LED指出北方、rainbow.py與rotation.py各自秀出絢麗的動畫效果、text_scroll.py則是文字捲動,還有小遊戲snake貪食蛇。

自己動手寫寫程式,底下這支Python程式,會以LED矩陣營造跑馬燈效果,秀出文字「Hello Sense!」,影片在此(只有10秒而已)
from sense_hat import SenseHat
sense = SenseHat()
sense.show_message("Hello Sense!")

其實呢,Sense HAT有模擬器喔,在瀏覽器上頭就可以嘗試,嘿,真好:
若想在自己的Pi板子上頭執行模擬器,需要安裝底下的套件:
$ sudo apt-get install python-sense-emu python3-sense-emu python-sense-emu-doc sense-emu-tools

哈,看到囉;模擬器可加速開發速度,然而模擬終歸只是模擬。

接下來,想想要做些什麼吧,不如看看MagPiHackster.io,參考別人開發的專案。


參考資料: