本篇的兩個完整專案原始碼可在這裡下載。

WebAssembly 簡史

在新世代的高效能後端語言如 Rust、Go 崛起之際,前端環境的語言仍幾乎是 JavaScript 的天下。自從 1995 年 Netscape 瀏覽器首次內建 JS 引擎以來,JavaScript 這個語法模仿 Java、本質上卻和 Python 一樣是直譯式語言的東西就是能在各家瀏覽器運行的唯一語言。

有很多後端語言可以撰寫伺服器程式,在使用者送出請求時傳回它們要的東西,你也能完全透過後端來創造使用者看到的內容。在 2010 年代這麼做其實挺常見的;然而,隨著網路流量與使用者的增加,這種運算負擔全集中在伺服器的模式已經不再實務,勢必得將一大部分運算挪到前端。近年來前端框架與 Node.js 的流行也正反映了這種趨勢。

問題就在於:即使有最佳化技術,Ja …


Photo by Dominik Scythe on Unsplash

注意:本文介紹的東西目前測試,只能在 Windows 平台運作。我沒有 Mac 所以未測 macOS 環境。

2017 年時,Google 推出了一個網站 Teachable Machine,用意在用親合的瀏覽器介面展示人工智慧/機器學習模型是如何訓練和辨識目標的。2.0 版網站則在 2019 年底上線,可以辨識影像、聲音和人體姿態,而且可以下載它背後使用的 Tensorflow 模型。也就是說,你可以用這網站當成一個快速訓練 AI 的工具,然後把模型用在自己的工具中。

Teachable Machine 使用所謂的遷移式學習(Transfer Learning),也就是它其實是在用事先訓練好的模型,但你可以指定自己的辨識樣本給它。這使得 Teachable Machine 所需的「訓練」時間非常 …


Photo by Alina Grubnyak on Unsplash

2020 年中時,一個叫做 Edge Impulse 的新創公司推出了個線上的 TinyML 平台,讓使用者能更容易地訓練神經網路模型、並把它們佈署到嵌入式硬體上。Edge Impulse 和 Arduino、Tensorflow、Arm 以及 Nordic Semiconductor、STMicroelectronics 等晶片廠都有合作,並使用自己開發的 Edge Optimized Neural (EON) 技術來進一步縮小神經網路模型的大小跟記憶體用量。

我之前寫過一篇介紹 EloquentTinyML 這個函式庫的文,它可以用比較簡單的方式將 Tensorflow Lite 神經網路模型佈署到開發板上;事實上我後來甚至嘗試實作了一個簡易的語音辨識專案。然而,這和 Edge Imp …


Photo by Harrison Broadbent on Unsplash

在這個系列中,我們要來看看 Raspberry Pi Pico — — 或者應該說 RP2040 微控制器 — — 的一個特殊功能,也就是 PIO(Programmed I/O,程式化輸出入)。

在許多開發板上,會有事先針對特定通訊方式設定好的 GPIO 腳位,例如 I2C、SPI、UART… 但假如你希望增加這類腳位的數量,甚至使用一些更特殊的通訊協定如 I2S、VGA、DPI,可能就只能用軟體模擬,讓主控制器來扮演腳位控制者了,而這就是所謂的「bit banging」。然而每個協定的通訊速度不同,這麼做也會占用處理器資源,並不是很有效率。

為解決這個問題,RP2040 提供了兩組 PIO,相當於獨立的迷你處理器,可以用稱為 PIO Assembler(pioasm)的組合語言來設定腳位行為。

可程式化的腳位並非新概念:這在 FPGA 和 CPLD 上已經存在,卻是第一次應用在這種平價、親民的開發板產品上。而透過 MicroPython,你不需要什麼很困難的技術就能存取 PIO。只是在我寫這篇之前,官方文件的解釋一直很有限,網路上又很難找到夠充分的討論和介紹,所以卯起來做了點研究。實際上來說,本篇就是這段研究的成果記錄 …


Photo by Pawel Czerwinski on Unsplash

2020 年 4 月 11 日,英國數學家、身為普林斯頓大學教職員一員的約翰‧何頓‧康威(John Horton Conway)在紐澤西因新冠肺炎引起的併發症逝世,享年 82 歲。相較於慘烈的疫情新聞,這則消息在台灣沒有引起多少關注。

很久以前在自學程式時,偶然聽說了「康威生命遊戲」(Conway’s Game of Life),從此對它深感著迷,多年來還替它寫了好幾種不同程式語言的版本。但就和康威本人一樣,當我和其他寫程式的人談起它時,大部分的人根本沒聽過這是什麼。

生命遊戲(不是桌上遊戲那個生命遊戲)堪稱康威最出名的成就之一,是他在 1970 年發明的一個零和遊戲,在平面棋盤裡進行。其規則如下:

  1. Any live cell with fewer than two live neighbour …

Photo by Syed Ali on Unsplash

這是一篇很短的文,其實也不算創新,但最近剛好能派上用場。

簡而言之,在台灣於 2021 年 5 月爆發大規模社區感染後,有許多在家等待就醫的人因「快樂缺氧」(happy hypoxia)猝逝,也就是因肺部受感染後血氧濃度降低、但患者本身沒有明顯感覺,導致情況惡化就來不及了。也因為如此,人們開始搶購血氧機,甚至有醫生傳授若搶不到血氧機時該怎麼檢查是否隱性缺氧。

剛好我手上有個別人給的 MAX30100 脈搏血氧感測模組,趕快做了一個 DIY 血氧機,裝在一個名片盒裡面給我爸媽用。


Photo by Annie Spratt on Unsplash

我第一次(自)學程式是小六畢業的暑假。小學時已經有電腦課,只上一些簡單的作業系統跟文書、繪圖操作。當時不知在哪看到說 MS-DOS 5.0 有附一個可以寫程式的東西叫 QBasic.exe,結果就去書店找了一本 Quick Basic 的中文電腦書來學,並在那個暑假寫了我的頭幾支程式。

(QB 是所謂的 Structured BASIC,它不再需要在每一行前面寫行號,功能也更強大。此外 QBasic 其實又是 Quick Basic 的簡化版,拿掉了編譯可執行檔的功能。)

在那個台灣還沒有 STEM 教育、資訊素養若有可無的年代,寫程式的概念跟最佳實踐方式沒人教,就只能自己胡亂摸索。但也因為這樣,國中開始自學 Visual Basic 4(高中時是用 6.0),到大學時雖然沒有考進資訊科技科 …


Photo by Vishnu Mohanan on Unsplash

This is a simple article, originating from one of my experiments for a failed company project proposal.

Tensorflow/Keras is (still) a popular AI package, and AutoKeras (a open AutoML or automated machine learning Python package) lets you train a neural network model in TF without having to set any parameters. It requires Tensorflow 2, which in turn needs 64-bit Python runtime. However, official Raspberry Pi OS is still using 32-bit kernels.

It’s not that hard to find 64-bit OS, but there are so many dependencies that are never fully documented. I managed to find the solution: here I’ll show you…


Photo by Jorge Ramirez on Unsplash

(上圖不是 ESP8266,不過就將就吧。)

前言

Raspberry Pi Pico 的問世,使更多人開始重新注意到 MicroPython 這個嵌入式系統用的 Python 語言。儘管 MicroPython 在執行速度上不及 C++ 等語言,但它有很多語言與功能上的便利優點。

ESP8266 和 IoT 自造專案已經不是新玩意,然而你仍然能用它們來做些低成本的物聯網裝置。若你對 MicroPython 與周邊裝置有一定了解,還可以隨自己的需求改造。不過,一般人對這會不會有興趣呢?

本文要展示的,就是筆者至目前為止最喜歡的三個 ESP8266 IoT 專案。你可以在完全不懂程式與硬體的前提下,照著以下步驟做出你自己的裝置,放在自己家裡或辦公室使用。也因為如此,這篇不會太深入講語言和硬體知識,但你能在書 …


昨天拿到了我訂的 RPi Pico,多花了一點銀子,但新玩意總得親自動手玩才能有點概念。

2021 年 1 月下旬,樹莓派基金會出人意表地發表了 Raspberry Pi Pico — — 一款小型、便宜的微控制器,搭載自家研發的 RP2040(雙核 Cortex M0+,最高時脈 133 HMz)。而且不僅如此:MicroPython 的開發者 Damien George 已經替它設計了專屬的韌體,可直接從樹莓派單板電腦 OS 內附的 Thonny IDE 連線,連官方書籍都準備好了。此外,包括 Arduino、Adafruit、Sparkfun 和 Pimoroni 都會用 RP2040 生產自己的開發板。

(Pico 只裝有一個類比溫度感應器。寫這篇文時,Arduino 的版本 Ardu …

Alan Wang

I just like to write weird stuff that have very little to do with my actual work. My normal blog is https://krantasblog.blogspot.com.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store