PicoPad (2)
前回、PicoPad がブレッドボード上で動作したので、今度はユニバーサル基板を使って組み立ててみた。

まずは、Affinity で配線図を描いた。両面基板を使って、LCD の裏側に Raspberry Pi Pico (の互換機)を配置することにした。

今回は配線に ジュンフロンETFE電線 を使ってみた。より線のビニル電線とかと比べて、固いのではんだ付けする時に固定しやすいし、細いので基板の穴も通過できて便利だった。

底面の電源基板には、セリアで買ったポリスチレンプレート プラ板(厚さ1.8mm)を使用 。やわらかいので、のこぎりで切ったりピンバイスで穴を開けたりしやすくて便利だった。電源には、単4の eneloop 3本を、昇圧DCDCコンバータ で5Vにして利用。電源回路はセロテープと両面テープとグルーガンで固定。

横からの見た目

ブレッドボードでの試作段階ではなかなか安定動作しなかったMP3プレーヤーも、抵抗と電解コンデンサーを追加したおかげで無事動作して良かった!

PicoPad (1)
Rasberry Pi Pico を使った PicoPad をブレッドボードで組み立ててみた。ひとまず動作した!

補足
- 音が出る時になんかLCDにノイズが入るので、Geminiに相談してみたら、BAT(スピーカーの+端子)とGND(トランジスタのエミッター)との間に100μF程の電解コンデンサーを入れろと言われたので、試してみたらノイズが無くなった。Geminiすごい
- リチウムポリマー電池はなんか怖そうなので、バッテリー充電回路は省略して、単四のeneloop3本で代用した
- 使っている Rasberry Pi Pico が AliExpress で買った安い互換機だからなのか、VSYS に2.8Vぐらいの電圧を入れているときに、3V3端子に2.6Vぐらいの電圧しか来ておらず、LCDが暗くなってしまう。VSYS に5Vを入れれば問題なさそう
- 同じく、 AliExpress で買った安い Rasberry Pi Pico 2 の互換機 も試してみたが、こちらはそもそも PicoLibSDK に入っているバイナリ(
!PicoPad20ディレクトリのもの)が動作しないっぽい??!Pico2ディレクトリのバイナリなら動作するんだけど。互換機だから何か違うのかも... - eneloopを昇圧DCDCコンバーターで5VにしてBATにつないでみたら、電流が多すぎるためかeneloopの電圧降下がひどく、逆にLCDが暗くなった。スピーカーの+端子と、BAT(電解コンデンサーの+)との間に100Ωの抵抗を入れたら、音は小さくなったけど電流が減っていい感じになった
PicoLibSDK の開発環境をセットアップ
PicoPad用のアプリを開発するための PicoLibSDK をセットアップした。 AI Agent に開発環境を自由に使ってほしいので、Docker container 内に開発環境を用意した。
docker-compose.yml
services: tools: build: context: . dockerfile: Dockerfile tty: true volumes: - type: bind source: "[PicoLibSDKを展開したホストPCのディレクトリのパス]" target: "/prj/PicoLibSDK" consistency: cached - type: volume source: gemini_data target: /root/.gemini volumes: gemini_data: name: gemini_data external: true
Dockerfile
FROM ubuntu:noble
WORKDIR /root
RUN apt-get update --quiet --yes \
&& apt-get upgrade --quiet --yes \
&& apt-get autoremove --quiet --yes \
&& apt-get install --quiet --yes wget xz-utils git
RUN wget https://developer.arm.com/-/media/Files/downloads/gnu/15.2.rel1/binrel/arm-gnu-toolchain-15.2.rel1-x86_64-arm-none-eabi.tar.xz \
&& tar -xf arm-gnu-toolchain-15.2.rel1-x86_64-arm-none-eabi.tar.xz -C /opt/ \
&& rm arm-gnu-toolchain-15.2.rel1-x86_64-arm-none-eabi.tar.xz \
&& echo 'export PATH=$PATH:/opt/arm-gnu-toolchain-15.2.rel1-x86_64-arm-none-eabi/bin' >> /root/.bashrc
# RUN wget https://buildbot.embecosm.com/job/riscv32-gcc-ubuntu2204-release/10/artifact/riscv32-embecosm-ubuntu2204-gcc13.2.0.tar.gz \
# && tar -xzf riscv32-embecosm-ubuntu2204-gcc13.2.0.tar.gz -C /opt/ \
# && rm riscv32-embecosm-ubuntu2204-gcc13.2.0.tar.gz \
# && echo 'export PATH=$PATH:/opt/riscv32-embecosm-ubuntu2204-gcc13.2.0/bin' >> /root/.bashrc
RUN apt-get install --quiet --yes make g++ python3
# COPY --chmod=644 .gitconfig /root/.gitconfig
RUN mkdir -p /prj
WORKDIR /prj/PicoLibSDK
あと、_tools ディレクトリにある各種ツールの、Linux x86_64用のバイナリをビルドする必要があった。PicoLibSDK のルートに以下のようなスクリプトを配置して、Docker内で実行すればよさそう
initial_setup.sh
#!/bin/bash -eux SCRIPT_DIR=$(cd $(dirname $0) ; pwd) cd $SCRIPT_DIR if [ ! -x "_c1.sh" ]; then find . -type f -name "*.sh" -exec chmod +x {} \; fi cd $SCRIPT_DIR/_tools/elf2uf2 g++ -o elf2uf2 main.cpp cd $SCRIPT_DIR/_tools/PicoPadLoaderCrc g++ -o LoaderCrc LoaderCrc.cpp # Image tools 64-bit patch and build IMAGE_TOOLS="RaspPicoImg PicoPadImg PicoPadImg2" for TOOL in $IMAGE_TOOLS; do cd $SCRIPT_DIR/_tools/$TOOL # PicoPadImg2 source is named PicoPadImg.cpp, others match tool name SRC="$TOOL.cpp" OUT="$TOOL" if [ "$TOOL" == "PicoPadImg2" ]; then SRC="PicoPadImg.cpp" OUT="PicoPadImg" fi sed -i 's/typedef signed long int s32;/typedef signed int s32;/g' $SRC sed -i 's/typedef unsigned long int u32;/typedef unsigned int u32;/g' $SRC g++ -o $OUT $SRC done
Antigtavityでゲームアプリを作ってみた
AI agent の Antigravity に、「スーパーマ〇オブラザーズ風の2Dプラットフォーマーゲームを作って」と頼んだら、以下のようなゲームが出来た。
ほえ~
Antigravity に、「PicoPad用に、スーパーマ〇オブラザーズ風の2Dプラットフォーマーゲームを作って」と頼んだら、以下のようなゲームが出来た pic.twitter.com/HXI5zyJCt3
— sunflat (@sunflat) 2026年2月9日
参考サイト
Tiny Joypad (2)
Tiny Joypad (1)
以下の記事を見て、ATtiny85を使ったミニゲーム機 Tiny Joypad を作ってみたくなった。
電子部品は、電子工作ステーション や AliExpress などで購入した。条件を満たせば送料無料で送ってくれるのでありがたい。
ATtiny85 にゲームデータを書き込むために Arduino IDE の設定をしたところ、どうやらボードマネージャのURL(http://drazzy.com/package_drazzy.com_index.json)が使えなくなっていたり、Arduino IDE 2.x.x に対応していなかったりするらしく、以下の記事を参考に手動でセットアップする必要があった。
また、ボードマネージャの Arduino AVR Boards を v1.8.7 にアップデートすると、以下のようなエラーが出て書き込みが出来なくなるようで、これを v1.8.6 にダウングレードすると書き込みができるようになった。
Warning: programmer wiring fails to specify prog_modes = PM_...; [...\avr\avrdude.conf:350] Warning: programmer arduino fails to specify prog_modes = PM_...; [...\avr\avrdude.conf:357] Error: unknown token [...\avr\avrdude.conf:392] Warning: programmer avrftdi fails to specify prog_modes = PM_...; [...\avr\avrdude.conf:392] Error: syntax error [...\avr\avrdude.conf:392] Error: unable to process system wide configuration file ...\avr\avrdude.conf Failed to burn bootloader: uploading error: exit status 1
ブレッドボードで組み立てて動作確認。なかなかいい感じ!

電源は、ボタン電池(CR2032)だとパワーが足りないのかうまく動作しなかったが、eneloop(単4)x3をつなげばちゃんと動作した。
カロリー計算アプリ「食事日記帳」を作った
はてなブックマークのRSSからthresholdパラメータが削除されたので、Netlify Functions を使って自力でフィルタする
はてなブックマークの新着エントリーのRSSから、一定以上のブックマーク数のものだけをフィルタしたRSSを作成するやつを作った。
以前、はてなブックマークの新着エントリーのRSSには、thresholdパラメータをつけて一定以上のブックマーク数のものだけをフィルタすることができた。 しかし、最近この機能がなくなってしまったようで、大量のエントリーがRSSリーダーに表示されて困っていた。
RSSの中身を見ると、各itemごとに hatena:bookmarkcount という要素がついていて、ブックマーク数を表すっぽいので、これでフィルタできそう。
Yahoo Pipes も無くなっちゃったし、herokuの無料枠も別の用途で使っているので、フィルタするコードを無料で動かせそうな場所はどこかに無いかなと探してみたところ、NetlifyのFunctions 機能が良さげだった。AWS Lambda のラッパーみたいだけど、125,000リクエスト/月、100時間/月 までは無料で使えるのでありがたい。
デプロイ先は公開していないので、もし使いたい人がいたら、上記のリポジトリを自分でNetlifyにデプロイして使って下さい。
ちなみに、RSSリーダーは inoreader を使ってます。30分に1回リクエストが発生するので、1回の処理時間が5秒として、1ヶ月でだいたい1500リクエスト&2時間。余裕で無料枠に収まりそうな感じ。





