秋葉原で安く拾ってきたWindowsタブレット(おそらく何かの教育用途の放出品)にLMDEを入れて使っている。冷却ファンがないので埃っぽい自室でも安心して使えるのと、音声出力がそれなりにあるのでもっぱらラジオとして使っている。
問題はOSをLinuxにしたことで(なお、このタブレットを買った時にインストールされていたのはWindows8.1だった)数少ないボタンのうち電源ボタンしか認識しなくなった事。おかげで音量を少し変えるにもスクリーンにタッチしなくてはならず、手抜きでタッチ向けのウィジェットを書かないでデスクトップのそれを流用している事から扱いにくいことこの上ないのですね。自分が悪いんだけどさ。
マルチメディアキーを繋いでやれば何とかなるか、と思っていたのですがいろいろあって手を付けずにいました。
で、ようやく作り始めたのですね。
当初、RaspiPICOを使おうと思っていたのですがやろうとする事の割に高性能すぎてもったいなくなって、手元に余っていたUSBマイコン、LPC11U35(401)を使うことにしました。だいぶ以前に秋月の店頭で買ったものです。mbed readyなボードで、当時は「なんて便利なんだろう」と感動したもんですが、しかし時は流れ、今では後発でより高機能なPICO(RP2040)のほうが少し安く買えるようになってしまいました。
消費電力の点ではまだアドバンテージがあると思いますが、11U35(401)はどうも終売のようです。mbedのサポートも打ち切られているし、早めに使ってしまったほうがいいでしょう。
という事で、開発環境の再整備から始めたのですがこれが思いの外難航しました。なんせこのボードはmbed2までしか対応しておらず、そのmbed2はとっくの昔に廃止になっているのですね。それでも Keil Studio Cloudでは未だ使えるようでした。問題はユーザーが書いたライブラリのインポートで、探しにくくて苦労しました。Keilはよくできていると思いますが、ライブラリの参照やインポートは以前のツールのほうが使いやすいと思います。
一点注意が必要なのがツールチェーンのバージョン(リビジョン?)で、mbed.bldを書き換えないとビルドが通らない場合があるとか。今回は時間がなかったので詳しく検証せずにネットの記事に従いましたが、よく考えると変な話ではあります。mbed自体、一時期(今でも、か)armのお家事情のおかげで怪しい時期がありましたのでその辺も影響しているのかも。
使ったコンパイラはこちら。
https://os.mbed.com/users/mbed_official/code/mbed/builds/65be27845400
コードはこんな感じです。繋いだキー(ボタン)が少ないので安直に割り込みで済ませています。待ちループはsleep()を挟むと動作しなくなったので、残念ながら空回し状態です。
#include "mbed.h"
#include "USBKeyboard.h"
USBKeyboard key;
DigitalOut myled(LED1);
InterruptIn pushsw_1(p16);
InterruptIn pushsw_2(p17);
InterruptIn pushsw_3(p18);
InterruptIn pushsw_4(p20);
void hoge(void)
{
//key.printf("hoge¥r¥n");
key.mediaControl(KEY_VOLUME_UP);
myled = !myled;
}
void fuga(void)
{
//key.printf("fuga¥r¥n");
key.mediaControl(KEY_VOLUME_DOWN);
myled = !myled;
}
void piyo(void)
{
//key.printf("piyo¥r¥n");
key.mediaControl(KEY_NEXT_TRACK);
myled = !myled;
}
void nano(void)
{
//key.printf("nano¥r¥n");
key.mediaControl(KEY_PREVIOUS_TRACK);
myled = !myled;
}
int main(void)
{
pushsw_1.mode(PullUp);
pushsw_2.mode(PullUp);
pushsw_3.mode(PullUp);
pushsw_4.mode(PullUp);pushsw_1.rise(&hoge);
pushsw_2.rise(&fuga);
pushsw_3.rise(&piyo);
pushsw_4.rise(&nano);
myled = 0;
while (1) {
}
}
回路図は省略。試作中の外観はこちら。
早速繋いで使ってみました。音量調整キーはxfce4 のpulseaudioが持っていきましたので当初の目的はあっさりクリアしたのですが、問題はここから。曲や局の変更に使おうとしたNEXT_TRACKとPREVIOUS_TRACKが思うように扱えません。
Audaciousはプラグインで対応できましたが、Lollipopはダメのようです。自作のラジオのほうはgtkのイベント処理を攻略できていません。gtk_flow_boxではカーソルキー及びTABキーで要素の移動ができるので、key-press-eventでTRACKキーをトラップしてTABキーに差し替えてemitしたのですが、移動してくれないんですね。
先は長いな。
]]>
昔からある定番のセンサーで、秋月電子などでモジュールとして売っている。センサーとしては高価な部類と思うが、扱いやすいのと取得できる情報が多いせいか、ロングセラーのようだ。(秋月電子のサイトでは「ベストセラー」と表示されている。)
どういう仕組みで計測しているのかほとんど理解しないまま自室でも使っているが、特筆すべきは気圧の正確さで、天気予報とほぼ同じ値が得られる。
3月10日6時の実況天気図(気象庁のホームページより)
関東平野は1024hPaから1020hPaの間に収まっているのが判る。
自室での気圧の様子。6時頃は1022hPaで気象庁の実況と概ね一致する。
自室での計測では海面校正をやっている。海抜は国土地理院発行のちょっと詳しい地図を見ればでている。自室(埼玉県和光市)の場合は概ね35mである。
]]>
デスクトップの付箋を整理していて見つけたので。読んでいて少し前に実験していたのを思い出した。
参考URL
https://wiki.alpinelinux.org/wiki/Raspberry_Pi
https://0sn.net/posts/20211127/raspberrypi-alpine/
バージョンは3.19 aarch64を使った。
注意点
何も考えずにインストールするとディスクレスモードとなる。この状態で保存されるのは
/etc
$HOME
だけ。しかも /etc/以下すべてが保存される訳ではない、らしい。
参照URL
https://wiki.alpinelinux.org/wiki/Alpine_local_backup
結局、他のLinuxPCで*.apkvol.tar.gz を編集するのが一番確実と思われる。
/usr/bin等、/etc以外の任意のディレクトリを追加できる。
その際、追加するファイル(ディレクトリ)のUID,GIDはrootにしておく。
参照URL
https://wiki.alpinelinux.org/wiki/Manually_editing_a_existing_apkovl
zeroconf 問題
リポジトリにavahiがあるので適当に入れれば、domain.localでアクセスできるようになる。
しかしresolvにはひと工夫必要である。
wiki.alpinelinux.orgの記事にあるように、avahiからdnsに投げるプログラムをインストール
しなくてはならない。問題は、ディスクレスモードだとこのインストール内容が保存されない
という事。プログラム本体(avahi2dns)は勿論、/etc/init.dにインストールするスクリプトも
保存されない。
/etc/resolv.conf
wiki.alpinelinux.orgのmDNSの記事の通りに作業すると、LAN内と外部(ほとんどがインター
ネット)に同時にアクセスできない。対策は簡単で、/etc/resolv.confのnameserver を
127.0.0.1 のほかに外部のアドレス(LAN内のゲートウェイとか)を書けば良い。
例)
nameserver 192.168.hoge.1
nameserver ::1
nameserver 127.0.0.1
WebブラウザのMidoriについて調べていたら、現在は floorp の派生になってしまっていた。元々はWebkitとGtkだったのだが。
で floorp は Firefox由来とか。
floorpをインストールして動かしてみた。レスポンスは悪くないが、YouTubeで動画を再生した時のCPU負荷がChromeの倍(初代Corei5のノートPCだとほぼ100%)に達してしまったので、アンインストールした。最新のコア数の多いCPUであれば状況は変わるのかも知れない。
]]>
参考URLの記事を元に接続先URLを得るスクリプトを書いた。
#! /bin/sh
ST=$1
echo "{¥"command¥": [¥"loadfile¥", ¥"https://`wget -q -O - "https://playerservices.streamtheworld.com/api/livestream?station=${ST}&transports=http,hls&version=1.8"|grep "<ip>"|head -n 1|sed -e 's/ //g' -e 's/<ip>//' -e 's/<¥/ip>//'`/${ST}.mp3¥"]}"| socat /run/user/1000/mpvsocket -
常駐している mpv にソケット経由でコマンドを渡している。
鳴り出すまでの待ち時間が長い。pythonとかで「最初の<ip></ip>を検出した時点でダウンロードを打切ってURLを得る」ようなスクリプトを書けば少しは速くなるかも知れない。
毎回xmlファイルをダウンロードする必要はないと思うが、そうすると既知の接続先が有効かどうか、逐次確認しなくてはならない。そのためには、mpv からエラー情報を貰ってきてスクリプト側でURL生成をリトライするという処理を書かなくてはならず、面倒なのでそのままにしている。
参考URL
]]>
LinuxMint 付属のテキストエディタ xed (version 3.2.2)にてメニューバーを非表示にする
ショートカットキーが割り当てられておらず、コンテキストメニューにもないので元に戻せなくなる。
dconfエディターを使って元に戻す
/org/x/editor/preferences/ui/ に設定箇所がある。
dconf-editor は初期状態ではインストールされていないようなので、リポジトリから取得する。
]]>
xfce4起動時の様子。テーマ変更や日本語入力、conkyを起動して使用メモリは183MiB/974MiBである。音周りがalsaなのでpulseaudio/pipewire関連がないぶん省メモリかも知れない。conkyで時刻が表示されない。フォントサイズ変更の処理がうまくいっていないようだ。
audacious 4.3.1をGTKでビルドしてみた。リポジトリにあるものはGTKを切っているので。とりあえずflacとaacとmp3が鳴れば良いのでビルドは簡単に済んだ。
mpvをバックエンドに使った自作のラジオチューナ。リポジトリにはxappも収録されているのでLinuxMintからの移植も大丈夫だった。
別のデスクトップはどうかしらん、と思ってリポジトリを漁ったらwindowmakerがあったので入れてみた。とりあえずアプリケーションソフトを動かすだけならこれで充分かも知れない。
まあ、当然といえば当然だが他のリナックスディストリビューションでできることはだいたいできるようだ。しかし一方、日本語の資料が少ない等扱いにくい面もあり、LinuxMintやdebianが動く環境でこれを選ぶ理由が見当たらないのであった。
/etc/profile.d/20locale.sh.sh
export LC_MESSAGES='ja_JP.UTF-8'
とりあえず、メッセージに対してだけ指定すれば良いようだ。
翻訳ファイルはひとつひとつインストールすることもできるが、メタパッケージ lang を入れるのが確実。
]]>
で、元日は近所で数コマ、2日は雨降りだったので中止、3日の今日になってようやく本格的(?)に撮ろうとして出かけたのですね。
しかし。
ひっさしぶりに35mm一眼レフ使ってわかったのだが、「眼」が終わってました。ファインダーの視度に合わせてメガネを作り直すか、もはや絶滅したニコン一眼レフ用の視度補正レンズを探さなくてはならないようです。
35mmで撮る時は必ず2本差しにするのですが、気がついたらFのウエストレベルファインダーばかり覗いていました。
2時間強で36コマ撮りを2本費消するのがやっと。カラダが120フィルム(6x6及び6x9)の撮影リズムに馴染んでしまっているので、思った以上にはかどりません。
加えて。
撮っているのが雑踏写真なので仕方ないのですが、「カメラだ!」と鋭い声が飛んできて流石に怯んで(ひるんで)しまいました。以前はこんなことなかったんですけどね。スマフォで隠し取りするよりいいだろ、というのは撮る側の理屈で、レンズアレルギーの人にしてみれば違いはないんでしょうな。
だいじょうぶ、有効期限切れのネガ使ってますから。写っているかどうかすら怪しいので。
って、そういう問題ではないですね。すみません。
新宿2023
露出計代わりのPowershot S95で撮影。久しく行っていなかった箇所なのだが、露店が全て取り壊されていて驚いた。
]]>
localeが切り替わらない事については、設定記事が見つかった。
https://wiki.alpinelinux.org/wiki/Post_installation#Language_support
確かに切り替わるのだが、今度はIME(ibus)が使えない。ctrl-jや半角/全角を押しても入力できない。しかし、ibus自体は起動している。
localeをCに切り替えると治る。
うーむ、わからん。先は長いな。
]]>
とはいえ、debian派生が全て候補から外れるので選択肢は限られてくる。で、今回はAlpineLinuxを試すことにしたのですね。
どちらかといえば、サーバーや組み込み向けでデスクトップ用途はオマケみたいな感じがしますが、リポジトリにはxfce4も用意されているので実用になると思いました。
現実はなかなか厳しくてそう簡単には行かなかったのですが。
現状の問題点
というか、どこで設定すればよいのか今ひとつ分かっていない。とりあえず~/.ashrcには書いた。
LinuxUser(の誰か)でログインし、呼び出すとセグってコケる。このため、自動開始アプリケーションの登録ができなくなってしまった。最初からこの状態ではなく、イジっているうちにおかしくなったので、何か触ってはいけない箇所があったのかも知れない。
当面の方便として、rootでログインし、スイッチユーザーで任意のLinuxUserに切り替えると回避できる。
今どきibus-anthyはないよね。まあ、x86(本物の32bitCPU)を積んだPCでガシガシ日本語入力する事はないのかも知れないけどさ。
xfce4のインポートが余り重要視されていない為かも知れない。あるいはバグが生じたか、そもそもビルドできないとかかしらん。
仮想環境(Virtualbox)での動作状況。ダークテーマをLinuxMintから借りてきてインストール済である。確かに省メモリではあるのだが、systemdでないとか、gvfs一式が動いていないとか、いろいろとタネも仕掛けもあるのであった。
いや、今でも趣味の一つだけどさ。流石にアクティビティ低すぎでしょ、ということで封印状態だったりする訳です。
ずいぶん前のことになるが、青春18きっぷの発売に合わせて離京し、西日本方面で写真を撮っていた事があった。最初の頃は35mmで撮っていて、2〜3日の旅程のノルマはモノクロネガ20本、カラーネガ少々というものだった。モノクロネガ20本というのは100ft巻から36コマ撮りで切り出すと20本(正確には19本と少々)になるためである。撮影時はボディ2本差しでそのうち1台はモードラ内蔵なので、使い切るにはちょうど良いくらいだった。
部屋の冷蔵庫に1巻だけ温存していた400TMY。有効期限はかなり以前に切れている。
100ft巻を切り出す際に必要になるのがフィルムローダー(ディロール)。四半世紀に渡って愛用しているが、流石に調子が悪い。
症状はフィルムゲートが閉じない、という致命的なもの。フィルム巻きとりハンドルを差し込むと連動して開閉するようになっているのだけれど、経時劣化で動作が渋くなって閉じなくなったのですね。
分解した様子。仕組みは簡単で、カンヌキが2重に施されておりパトローネ室の蓋を閉じ、巻取りハンドルを差し込むとゲートが開くようになっている。
ゲートの開閉状態は巻取りハンドルを取り外すと外部からでも確認できる。開いてしまっていたら、カンヌキ部分にショックを与えることで所定の動作をするようになった。
来年は少し撮ろうかと思う。
]]>
例によってすぐになくなる訳ではないし、oldstableのリポジトリを閉じてしまうとかでもない(と思う)ので、今すぐに使えなくなる、とかでは無いのだけれど。
この部屋のPCの中で、32ビット(i386)のdebianベースを入れているマシンは5台もある。そのうち2台は常用中である。
まあ、Linux自体がIA32を切った訳ではない(未だi486対応だったはず)から必要なら自分でビルドすればいいだけ、なのだが。
]]>
一人で作る場合でもgitは便利である。
昔と違ってマイコンのプログラム開発に使う言語は既にいろいろあるから処理系を自作する意味は余りないのだけれど。
それでも趣味でやる分には簡単なインタープリタがあると重宝する場合もある。シリアルターミナルさえ繋げば何かできる、という形式であればなおさら。
という理由でちょっと昔にBASICインタープリタを書いたのだが、最近はマイコンのスペックが上がってきたので、その辺も踏まえてイチから書き直そうと思い立ったのですね。
で、手を付けてから半年も放り出してあったのを今月に入ってからやおら書き進めて、取り敢えずPCでは所定の動作をするところまで仕上げました。
なにせプロジェクト名がBASIC2023なので。年越すわけには行かなかったのですね。
最近のマイコンを踏まえて、と書いたけれど精度は16ビットのままにしました。16ビットあればほとんどのペリフェラルを捌けるだろう、というのが理由です。マイコンの銘柄によってはプログラムテキストをRAM上に展開して使う場合もあるのでメモリ消費量を節約する点でも重要かと思います。
printf のtiny版を書いたのだけれど、BASICのPRINT文にそのまま流用できないので似たような処理が重複するとか、見積もりの甘かった部分も多いので、マイコンで動かす際は結構な修正を迫られそうです。
]]>
部屋住みの身分なので大音量でスピーカーを鳴らすとかはできない。
ちょっと前まではイヤフォンユーザーだった。部屋にいる時はシャワーを浴びる時以外は装着している、という使い方をしていたのが、耳の中が黴びる、というので使うのを止めたのだった。確かに耳垢が増えたような気がするが、黴びたためなのか、それとも単に加齢によるものだけなのかはわからない。
イヤフォンが使えないならヘッドフォンしかないのだが、長時間使っていると頭が痛くなってくるのが難点なのだった。しかたないので、できるだけ軽量かつ安価で丈夫な製品を、ということでSONYの下から2番め位のものを選んでつかっていた。高域がまったく伸びず、かつ低域がこもる、といったいかにも安物という音で、イコライザ必須なのだがどうせPCやラジオにしか繋がないので割り切って使っていた。
2つ使ったところで流石に飽きてしまった事もあってオーテクのちょっとよさそうなものを買い足した。確かに音は良くなったが、ヘッドバンドが固くて側圧が強すぎて、アルバム1枚を聴くのが我慢の限界だった。
次に買うのは、音はともかく装着感の良いものを、ということで店頭で実際に耳に当ててみて選んだのが、同じくオーテクのATH-M50xという製品だったのですね。
値段は2万円と個人的には高額の部類に入ります。位置付けはモニター用ヘッドフォンというもので、オーテクの製品ではハイエンドモデルだとか。ちなみに同じシリーズでM70xというのがあってこちらはフラッグシップモデルだそうだ。うーむ、よくわからん。ニコンのF4とF-801,F5とF100、あるいはTRIOのTS-9xx系とTS-8xx(4xx)の関係みたいなものかしらん。
コジンテキに耳が腐っているので音質についてどうこう言えないのですが、SONYの安物と比べれば確かに解像感は感じられます。無駄にフカしてもっともらしい音にしている、という感じではなく、低域も高域も丁寧に再生しているなあ、という印象ですね。
値段は高いけれど、コードは脱着可能(用途別に3本も付属してきた)だし、耳あても交換できるので、過入力でボイスコイルを切ったり、踏んづけて機械的に壊したりしなければ長く使えそうです。
肝心の装着感は耳全体を覆うため、個人的には痛くならずに使えています。付けたまま朝まで寝たりしたけれど頭が痛くてつらい、等ということにはなりませんでした。
ノートPCに繋いで使っているだけですが、ドライブ能力が気になってきたのでそのうちアンプでも組んで遊んでみようと考えています。