JF1DIR業務日誌(はてなblog版)

アマチュア無線局JF1DIRのアクティビティをつづっています。

2021年読書ログ

2021年はまったく更新していませんでした。無線やっていませんでしたからね。ブログのタイトルも変えたほうがよいのかな・・・・

読書は割と続けていたのでその備忘録代わりに2021年に読んだ長編小説を載せておきます。覚えているものだけなので他にも読んだ本もあります。短編小説や非創作ものはあまり覚えていないので省略します。
だいたい週に1冊を読んでおり、海外文学と日本文学と非創作本を交互に読んでいることが多いです。下の表のうち約半数が読み返した本です。

タイトル 著者 翻訳
ブッデンブローク家の人びと トーマス・マン 望月市恵
トーニオ・クレーガー トーマス・マン 高橋義孝
イーリアス ホメロス 呉茂一
ペーター・カーメンツィント ヘルマン・ヘッセ 猪俣和夫
神曲 ダンテ・アリギエーリ 平川祐弘
嵐が丘 エミリー・ブロンテ 鴻巣友季子
新エロイーズ ジャン・ジャック・ルソー 松本勤
従妹ベット オノレ・ド・バルザック 山田登世子
三銃士 アレクサンドル・デュマ 生島遼一
フランツ・カフカ 前田敬作
武器よさらば アーネスト・ヘミングウェイ 高見浩
誰がために鐘は鳴る アーネスト・ヘミングウェイ 高見浩
幽霊 ポール・オースター 柴田元幸
リヴァイアサン ポール・オースター 柴田元幸
幻影の書 ポール・オースター 柴田元幸
ムーン・パレス ポール・オースター 柴田元幸
ブルックリン・フォリーズ ポール・オースター 柴田元幸
ラクル・ナイト ポール・オースター 柴田元幸
ロング・グッドバイ レイモンド・チャンドラー 村上春樹
鍵への街 ルース・レンデル 山本やよい
地霊 大佛次郎
帰郷 大佛次郎
楡家の人びと 北杜夫
桜田門外の変 吉村昭
仮釈放 吉村昭
大黒屋光太夫 吉村昭
間宮林蔵 吉村昭
渋江抽斎 森鴎外
真空地帯 野間宏
太陽のない街 徳永直
されどわれらが日々 柴田翔
われら戦友たち 柴田翔
三千枚の金貨 宮本輝
行人 夏目漱石
金閣寺 三島由紀夫
午後の曳航 三島由紀夫
鏡子の家 三島由紀夫
悲の器 高橋和巳
我が心は石にあらず 高橋和巳
邪宗門 高橋和巳
僕の中の壊れていない部分 白石一文
一瞬の光 白石一文
この胸に深々と突き刺さる矢を抜け 白石一文

この中で一番おもしろかったのは、トーマス・マンの『ブッデンブローク家の人びと』でした。おそらくマンの中でも最も読みやすくストーリーも楽しめました。北杜夫の『楡家の人びと』を読んで比べてみると面白いです。やはり革命や戦争を挟んだ年代記は面白いですね。一族が滅びる話ですからね。次の良かったのが村上春樹訳の『ロング・グッドバイです。清水訳が有名でしたが、どうやら訳を一部端折っているとのことです。村上訳のチャンドラー長編はすべて出ているので、今年中に完読しておきたいです。次に良かったのが高橋和巳です。全共闘時代の若者によく読まれたらしいのです。全集を手に入れてしまったのでこれも今年中に完読することを目標にしています。オースターは2・3度目の読書でしたが、やはり『幻影の書』は読み返しても良かったです。初期のニューヨーク物は哲学的でとっつきにくいですが、『ムーン・パレス』や『ブルックリン・フォリーズ』はストーリーがしっかりしているのでおすすめです。ここには書いていませんですが、短編はヘミングウェイフランク・オコナーモームモーパッサンシュティフターなどをよく読みました。古典文学をより楽しむためには世界史の知識が重要なので、革命や戦争に関する歴史書もたくさん読みました。ミステリーも読みましたが、レンデル以外はイマイチでした。

今年は古典を中心に読み進める予定です。ただいまトーマス・マンの分厚いのに着手中。

Pythonで測定器の制御〜GPIB編〜

ひさびさのブログ更新は備忘録がわりの記事です。アマチュア無線については最近アクティビティがほとんどゼロになっているので何も書くことがありません。
お仕事(化学会社で研究職をやっています)で古い(実はそうでもないですが)分析機器を使っていますが、ほぼすべての分析機器・測定器は制御を自動化したりデータを取り込んだりするためにコンピュータと接続されています。よくあるトラブルが本体の測定装置よりもコンピュータのほうが先に故障してしまうことで、しかもハードやOSが古いせいで修理不能であったり、かといってコンピュータを新しくするとインタフェイスボードや制御ソフトウェアまで更新せざるをえなくなり、さらに新しい制御ソフトウエアは手持ちの古い測定に対応していなかったりと、たかだか数万円のコンピュータが壊れただけなのに、全部新しくしなければならない、その総費用は数千万円になることがザラにあったりして、ものすごく不合理です。
現在仕事で頻繁に使っている装置も、コンピュータ(DELLのPC、OSはWindows Vista)の動作が怪しくなってきており、そろそろ更新したいのだけど、上記のような事情でPCだけの更新は無理になりました。そこで、装置の制御をLinux上のPCで自力でやることにしました。
この装置は、ContecのPCIボードのGPIBアダプタによってGPIBで制御されているですが、ContecのデバイスドライバWindows用しかないことが判明(Linuxもあるけど古いカーネルにしか対応していない)。そこで、Agilent 82357bというUSB-GPIBアダプタを使うことにしました。このアダプタは結構有名なので、Linux用のドライバが用意されていました。以下、このアダプタを使ってLinux(Ubuntu 18.04 LTS, カーネル 5.3.0)上で装置を動かすまでの手順を示します。

Linux-GPIBのインストール

Linux-GPIBのWebページsourceforge.net
で最新のバージョンのソースファイルをダウンロードしてきます(今日現在 バージョン4.3.3)。次に、ソースを展開し、インストールします。

$ tar xzvf linux-gpib-4.3.3.tar.gz
$ cd linux-gpib-4.3.3
$ tar xzvf linux-gpib-kernel-4.3.3.tar.gz
$ cd linux-gpib-kernel-4.3.3
$ make
$ sudo make install
$ cd ../
$ tar xzvf linux-gpib-user-4.3.3.tar.gz
$ cd linux-gpib-user-4.3.3
$ ./configure
$ make
$ sudo make install

pythonとバインドするため開発ツールが入っていない場合はあらかじめ、

$ sudo apt install python3-dev libboost-dev python3-setuptools

としておきます(そうでないとmake時にエラーが出ます)。

アダプタのファームウェアの用意

Agilentのファームウェアはここのページにあるので、最新のものをダウンロードします(gpib_firmware-2008-08-10.tar.gz)。

$ tar xvzf gpib_firmware-2008-08-10.tar.gz
$ cd linux_gpib_firmware-master/agilent_82357a/
$ ls
82357a_fw.hex  firmware.c         lsusb_postload.txt
README         lsusb_initial.txt  measat_releaseX1.8.hex

このmeasat_releaseX1.8.hexがファームウェア本体となっています。

fxloadのインストール

入ってなければapt installでインストールしておきます。

gpib.confの設定

GPIBのインタフェイスとGPIB機器の登録を済ませておきます。場所は/usr/local/etc/gpib.confです。interfaceの節にAgilent 82357a、device節に各GPIB機器の機器名やプライマリーアドレスなどを設定しておきます。

interface {
        minor = 0       /* board index, minor = 0 uses /dev/gpib0, minor = 1 uses /dev/gpib1, etc. */
        board_type = "agilent_82357a"   /* type of interface board being used */
        name = "agi"    /* optional name, allows you to get a board descriptor using ibfind() */
        pad = 0 /* primary address of interface             */
        sad = 0 /* secondary address of interface           */
        timeout = T3s   /* timeout for commands */
        eos = 0x0a      /* EOS Byte, 0xa is newline and 0xd is carriage return */
        set-reos = yes  /* Terminate read if EOS */
        set-bin = no    /* Compare EOS 8-bit */
        set-xeos = no   /* Assert EOI whenever EOS byte is sent */
        set-eot = yes   /* Assert EOI with last byte on writes */
        base = 0        /* Base io ADDRESS                  */
        irq  = 0        /* Interrupt request level */
        dma  = 0        /* DMA channel (zero disables)      */
        master = yes    /* interface board is system controller */
}

device {
        minor = 0       /* minor number for interface board this device is connected to */
        name = "agilent_34401a" /* device mnemonic */
        pad = 12        /* The Primary Address */
        sad = 0 /* Secondary Address */
}

カーネルモジュールのロード

$ sudo modprobe gpib_common
$ sudo modprobe agilent_82357a

USBデバイスの設定

PCにUSBを差し込むと、アダプタの赤LEDのみ点灯しているはずです。USBバス番号を確認しておきます。

$ lsusb
Bus 001 Device 009: ID 0957:0718 Agilent Technologies, Inc. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 003: ID 413c:2107 Dell Computer Corp. 
Bus 003 Device 002: ID 413c:3200 Dell Computer Corp. Mouse

バス番号001、デバイス番号009でアダプタが認識されているのを確認しました。

fxloadでプラグする

$ sudo fxload -D /dev/bus/usb/001/009 -t fx2 -I XXXXX/measat_releaseX1.8.hex

XXXXXはファームウェアがあるディレクトリです。再度USBバス番号をチェックすると、

$ lsusb
Bus 001 Device 010: ID 0957:0718 Agilent Technologies, Inc. 
.....

なぜかデバイス番号が一つ増えています。もう一度、fxloadします。うまく行けば、アダプタの緑のLEDが点灯します(この時点では、赤と緑の両方のLEDが点灯しているはず)。

$ sudo fxload -D /dev/bus/usb/001/010 -t fx2 -I XXXXX/measat_releaseX1.8.hex

GPIBデバイスファイルの権限を変更

/dev/gpib0を通じて制御できるようになるのですが、rootのものなのでアクセス権を付与しておきます。

$ sudo chmod 666 /dev/gpib0

ライブラリのシンボリックリンクを張る

makeして作られたライブラリが/usr/local/lib/の下にできるのだが、実行時には/libのライブラリを見に行くので、シンボリックリンクを張っておく(バグでしょうか?)。

$ sudo ln -s /usr/local/lib/libgpib.so.0 /lib/libgpib.so.0

GPIBの設定を反映させる

$ sudo gpib_conf

うまくいけば、アダプタのLEDが緑だけ点灯しているはずで、これでようやく使えるようになりました。やれやれ。

動作チェック

ibtestというGPIBアダプタとGPIB機器をチェックしたりかんたんな通信ができるツールがあるので、実行してみます。

$ ibtest
Do you wish to open a (d)evice or an interface (b)oard?
	(you probably want to open a device): d
enter primary gpib address for device you wish to open [0-30]: 12
trying to open pad = 12 on /dev/gpib0 ...
You can:
	w(a)it for an event
	write (c)ommand bytes to bus (system controller only)
	send (d)evice clear (device only)
	change remote (e)nable line (system controller only)
	(g)o to standby (release ATN line, system controller only)
	send (i)nterface clear (system controller only)
	ta(k)e control (assert ATN line, system controller only)
	get bus (l)ine status (board only)
	go to local (m)ode
	change end (o)f transmission configuration
	(q)uit
	(r)ead string
	perform (s)erial poll (device only)
	change (t)imeout on io operations
	request ser(v)ice (board only)
	(w)rite data string
	send group e(x)ecute trigger (device only)
: 

のように動かせます。例えば、DMM(キーサイトの34401A)を使って電圧値を取得したい場合は、

: w
enter a string to send to your device: read?
sending string: read?
......
: r
enter maximum number of bytes to read [1024]: 1024
trying to read 1024 bytes from device...
received string: '-1.02559000E-04
'
Number of bytes read: 16
gpib status is: 
ibsta = 0x2100  < END CMPL >
iberr= 0
ibcntl = 16

のように、wコマンドで文字列を送信して("read?")、rコマンドで文字列を受信する("-1.02559000E-04\r\n")という具合です。

Pythonで制御

PythonでGPIBを制御する方法は、Linux-GPIBに付属しているライブラリとVISAライブラリを使う方法がありますが、今回は前者を使ってみます。例として、DMMと接続してトリガ測定で10回連続して電圧値を取得するスクリプトを作ってみました。

import gpib
import time

dev = gpib.find("agilent_34401a")

gpib.write(dev, "*rst")
time.sleep(0.1)
gpib.write(dev, "*cls")
time.sleep(0.1)
gpib.write(dev, "trig:coun 10")
time.sleep(0.1)
gpib.write(dev, "init")
time.sleep(1)
gpib.write(dev, "fetc?")
time.sleep(0.1)
str = gpib.read(dev, 1024)
print(str.decode().strip())

バッファから取り出した値はバイト型になって扱いづらいので、.decode()して文字列型に変換する必要があります。.strip()で行末の改行文字などを取り除いておきました。通信コマンドを受け付けるまで若干の時間を要するので、各コマンド間に0.1秒のスリープを設けました。実行結果はこのような結果になります。

+2.40874090E+01,+2.40881940E+01,+2.40894820E+01,+2.40883620E+01,+2.40887800E+01,+2.40903930E+01,+2.40902050E+01,+2.40898490E+01,+2.40905400E+01,+2.40893980E+01

次はUSB接続、シリアル接続についても説明します(備忘録として)。

はてなブログへ引っ越しました

長年使っていたはてなダイアリーがとうとう終了するというので、はてなブログの方へ引っ越してきました。
実は2013年ごろに一度引っ越したのですが、あまり思い出せない理由でインポート作業を途中で放置していたのです。

アクティビティは相変わらず低迷すると思いますが、こちらでもよろしくお願いします。
(旧はてなダイアリーにアクセスすると、こちら強制リダイレクトされるはずです)

新年明けましておめでとうございます

ちょっとご挨拶がおくれましたが、新年明けましておめでとうございます。

去年2018年の振り返りを簡単にしますと、2017年の記念局開設&運用の反動とHFのコンディションが悪いことも相まって、無線運用のアクティビティが1/10以下に減ってしまいました。海外運用の時期はまだ先でしょうか。それまではアクティビティが細くなっていくような気がしています。その分、ほったらかしにしていた他の趣味に没頭できたので、私生活はまぁまぁ充実しました。仕事面では、組織の体制がちょっと変わって、基幹職ではあるのですが、管理職よりも実務(研究開発)のほうがボリュームが多くなりました。若い技術者を引っ張りながら一緒に知恵を出し合い身体も使って仕事する機会が増え、刺激的な仕事生活でありました。

2019年は無線運用はコンテストくらいになってしまうと思いますが、引き続き交信よろしくお願いします。また、記念局の開設も近々予定しておりますので、その準備をしたいと思っています。電子工作やプログラミングは相変わらずやっています。最近、勉強し始めたプログラミング言語のRustを使いこなして、ARMを動かしてみたいとか^^; 仕事面は、どうなるかわかりませんが、まぁほどほどに頑張りたいと思います。

最後に。はてなダイアリーがそろそろ終了とのことで、はてなブログの方に本格的に引っ越しする予定です。

ことしもよろしくお願いします。73

WiFi NTP時計の製作

また更新をサボってしまいました。無線に対するモチベーションが低下し特に書くことがない、というのが正直なところ。しかし、電子工作はほそぼそと続けています。

以前、安価なGPSモジュールでGPS信号を受信し、その中の正確な時刻データで校正する置き時計をARMマイコンで作ってみました。明かりのない部屋でも確認できるので寝室用の置き時計として使っていましたが、部屋の模様替えに伴い、この時計の置き場所を少し窓から遠いところへ変えたら、GPS信号を安定に受信しなくなってしまいました。GPSモノは鉄筋のマンション住まいにはやっぱり苦しいところです。GPSアンテナを外に出してケーブルで引っ張ってくるという手もありますが、いろいろ面倒なのでやるつもありはありません(以前、ThunderBolt DOを制作したときGPSアンテナを外に設置しましたが、すぐに引っ込めました)。そこで、WiFiを使ったNTP時計を作ってみることにしました。作例はたくさんあるので、あちこちのブログを参考にしながら作ってみました。

Wifiバイスには、秋月で売っているESP-WROOM-02Dip化モジュールを使ってみました。開発時はリセットスイッチや電源周りが付いている、開発キットを使っていましたが、実際の時計には上記キットを使いました。このモジュールの中にすべてのプログラムを入れてしまってもよいのですが、7セグLEDのドライバを使いたかったりしてピン数が足りないので、WiFiモジュールでNTPで校正した時刻を生成し、シリアルで別のARMマイコンと通信して、そのARMマイコンでLEDを表示するという方式にしました。

まずはESP-WROOM-02のプログラミング。ArduinoIDEでプログラミングして書き込みました。ソースはこちら。ESP8226WiFiというライブラリを入手してIDEにインストールしてください。ソースのとおり、3時間おきにNICTのNTPサーバーに接続し時刻を校正し、成功したら先頭に"-"の文字を、それに続いて時刻をUSART経由で送信します。その後、1秒毎時刻を同様に送信し続けます。

#include <ESP8266WiFi.h>
#include <time.h>

#define JST     3600*9

const char* ssid = "◯◯◯◯";
const char* password = "◯◯◯◯";

void set_ntp() {
  Serial.begin(115200);
  delay(100);
  Serial.print("\n\nStart\n");

  WiFi.begin(ssid, password);
  while(WiFi.status() != WL_CONNECTED) {
    delay(500);
  }
  configTime( JST, 0, "ntp.nict.jp", "ntp.jst.mfeed.ad.jp");
}

void setup() {
  set_ntp();
}

void loop() {
  time_t t;
  struct tm *tm;
  int time_count = 0;
  
  while(1) {
    t = time(NULL);
    tm = localtime(&t);
    Serial.printf("-%02d:%02d:%02d\n", tm->tm_hour, tm->tm_min, tm->tm_sec);
    time_count++;
    if (time_count >= 3600 * 3) {
      set_ntp();
      time_count = 0;
    }
    delay(1000);
  }
}

次にARM側のプログラミングです。石は手元に大量にあるNXPのLPC1114FN28/102を採用しました。外部クリスタル不要で、DIP品でいろいろと使いやすいです。開発環境はmbedを使いました。書き込みはとても便利なLPCISPを使いました。表示は6桁の7セグLEDですが、ベッドの上で(つまりメガネを外した状態)はっきりと見えるくらいの大きさ(文字高20mmほど)、色はグリーンにしてみました。なかなか見つからず、RSコンポーネンツでアノードコモンのものをようやく見つけました。LEDドライバはMAX7219を採用。カソードコモン用なので、トランジスタアレイでロジックを反転させました。カソード側にシンクタイプのドライバ、アノード側にはインバータロジックを搭載して、電流アンプも兼ねることにしました。WiFiとARMマイコンには3.3V、LEDドライバと反転ドライバには5Vを使用しています。
WiFiモジュールとの通信は、UART受信割り込みで時刻をARM側にコピーするという感じになります。MAX7219を動かすには、各桁にどんなどこエレメントを光らせるか1バイトで表現してそれを書き込むだけとシンプル。
基板の様子がこちら。


LPC1114FNのソースはこちら。

// Wifi NTP Clock for LPC1114 and ESP-ROOM-02
// by JF1DIR 2018/11
//
#include "mbed.h"
#include "max7219.h" // 本家MAXIMからライブラリを入手 https://os.mbed.com/teams/Maxim-Integrated/code/MAX7219/

Max7219 max7219(dp2, dp1, dp6, dp4); // SPI0_MOSI, SPI0_MISO, SPI0_SCK, SPI0_SS
static const uint8_t num[10] = {0x7e, 0x30, 0x6d, 0x79, 0x33, 0x5b, 0x5f, 0x72, 0x7f, 0x7b};
Serial rx_time(dp16, dp15); // tx, rx
uint8_t h, m, s;

// ESPからシリアルで文字列受信し時刻(時分秒)データを格納
// 文字列の先頭に'-'があるデータだけを有効とする
void update_time()
{
    char data[256];
    uint8_t data_index = 0;
    while(1) {
        if (!rx_time.readable()) continue;
        char c = rx_time.getc();
        data[data_index++] = c;
        if(data_index > 255) break;
        if(c == '\n') {
            data[data_index] = '\0';
            data_index = 0;
            if(data[0] != '-') return;
            char h_str[3], m_str[3], s_str[3];
            h_str[0] = data[1]; h_str[1] = data[2]; h_str[2] = '\0';
            m_str[0] = data[4]; m_str[1] = data[5]; m_str[2] = '\0';
            s_str[0] = data[7]; s_str[1] = data[8]; s_str[2] = '\0';
            h = atoi(h_str); m = atoi(m_str); s = atoi(s_str);
            break;
        }
    }
    return;
}
 
int main() {
    // setting for LED driver
    max7219_configuration_t cfg = {
        .device_number = 1,
        .decode_mode = 0,
        .intensity = Max7219::MAX7219_INTENSITY_8,
        .scan_limit = Max7219::MAX7219_SCAN_8
    };
    max7219.init_device(cfg);
    max7219.enable_device(1);
    max7219.set_display_test();
    wait(0.1);
    max7219.clear_display_test();    
    
    // setting for serial port    
    rx_time.baud(115200);
    NVIC_SetPriority(UART_IRQn, 1); // UART割り込み優先の設定
    rx_time.attach(update_time, Serial::RxIrq);
    
    while(1) {
        // send to driver
        max7219.write_digit(1, 6, num[h/10]);
        max7219.write_digit(1, 5, num[h%10]);
        max7219.write_digit(1, 4, num[m/10]);
        max7219.write_digit(1, 3, num[m%10]);
        max7219.write_digit(1, 2, num[s/10]);
        max7219.write_digit(1, 1, num[s%10]);
        wait(0.1);
    }
}

7セグLEDは別基板にして2階建て構造にしました。後ほどスチロール製の透明ケースに入れます。

暗闇で見るとこんな感じ。もう少し鮮やかなミドリがよかったのですが・・・

LM3886アンプにハイレゾDACを実装してみる

かなり長期間ブログをほったらかしにしておりました。ネタがないわけではないのですが億劫なだけでした。ようやく更新してみるネタができたようなので書いてみました(汗)。

書斎のPCのサウンドを再生するアンプには自作真空管アンプや自作半導体を使っております。今は2年前に作ったLM3886を組み込んだシンプルなアンプをしばらく使っておりました。製作記事はココです。LM3886は非常に使いやすくてよいアンプの石なので気に入っております。DCサーボを組み込んで完全DC化をやってみるつもりでしたが、これは次回にしておきます。今回は比較的入手しやすいDACハイレゾオーディオを実現して見ようとやってみました。どうやらラズパイにDACをI2S接続してハイレゾPCオーディオが簡単に再生することが流行っているようで、これも時間のネタにしておきます。
せっかくなのでUSB→I2S変換を経由する回路にしてみました。

USBアダプタDACにPCM2706を使いPCM5102AへI2S接続してアナログ出力するというシンプルな構成です。外付け部品がずいぶんと少なく済んでいます。USBのバスパワーだけでは足りなさそうなので外部電源で動作する仕様としました。PCM5102Aは32bit, 384kHzのDACでしかも単電源でもパスコンなしにアナログ信号を出力してしまうというなかなか便利(チャージポンプ回路で負電源をIC内で生成)なので、アンプの方にもパスコンなしでダイレクトに接続してしまいました。おかげで音質は非常にクリアでFBです。LM3886アンプに組み込むとこちらです。

電源は別筐体になっております。±24Vの電源を使っているので、DAC基板に積んでいる3端子LDOの入力電源最大電圧が20Vしかないのに気が付き、急遽9Vの3端子レギュレータを実装しました。音が良くなっただけでなく、アンプにUSBケーブルを繋げるだけでよいのでずいぶんシンプルになりました。
DAC部の回路図はココを参考にさせていただきました。VY TKS。

◯◯互換小型マイコンキットの使い方

ローカル局から「いま流行りのフィジカルコンピューティングをやってみたいのだが、何を買ったらいいの?」と聞かれたので「とりあえずArduino Unoを」と答えておいたのですが、どういうわけか秋月の「AE−ATMEGA328−MINI」を買ってきてしまいました。おそらく「安くて小さく」て「上位互換」という謳い文句に釣られたのでしょうか。純正のArduino Unoは秋月でも2,940円するので分からなくもないのですが、AE-ATMEGA-MINIの取説には最低限のことしか書いてないし、USBインターフェースがついてない上にブレッドボードを持ってないと使いづらいので初心者には少しハードルが高いと思います。さらに、aitendoにはは400円足らずのArduino互換の「あちゃんでいいの」が有名ですが、これもインターフェースなしで(もちろん取説なんてついてない)、AVRマイコンが別売りだったり(ブートローダーの書き込みが初心者にはシンドイ)して、こちらもハードルが高いです。安いからとりあえず買っておくかと、つい手を伸ばしてしまいがちですよね・・・。
パーツ箱の肥やしになってしまわないためにも、各安価互換マイコンボードの使い方をまとめて書いてみます。

aitendoのあちゃんでいいの

いつくかバージョンがあるようですが、今店頭に並んでいるのはバージョン2のようです(ですが基本的に変わりません)。
AVRマイコンを除いたパーツが入っていて、お値段なんと99円。マイコンを加えても400円くらいになります。Arduino互換というよりは、AVRマイコンにクロック水晶とリセットボタン、電源LET、UART接続のため引き出しピンが付いている基板です。小さくてなにより安価なので、この基板のまま完成品に実装してしまうことを想定しているのでしょうか。
部品点数が少ないですが一応キットです。作り方はaitendoの説明の通りです。表面実装のCRのはんだ付けが不慣れな方にはネックでしょうか。また、附属のピンヘッダは径が太くてブレッドボードなどに差し込みにくいので、細ピンヘッダに取り替えたほうが良いと思います。基板の裏に取り付けられた水晶は割りと高さがあるので、ピンがブレッドボードに完全に差し込むことができないなどの不具合?があります。
組み立て終わったら、USB-シリアル変換と接続します。DTR端子が付いたものが必要です。あちゃんでいいののUART端子は1番が順に、TX, RX, VCC, GND, PROG_RESET(TR5GPというらしい)となっています。TXにはシリアル変換のRXを、RXにはTXを、PROG_RESETにはDTRを接続します。USBをPCに接続すると電源があちゃんでいいのに投入されるので、LEDが点灯するはずです。WindowsのデバイスマネージャーでUSB-シリアル変換のCOMポート番号を控えておきます。USB-シリアル変換が付属していないだけなので、これさえ出来てしまえば、あとは普通のArduinoと同じです。
次にArduino IDEを立ち上げ、シリアルポートを設定し、ボードの指定は「Arduino UNO」にします(AE-ATMEGA328-MINIならばArduino Pro or Pro MINIに設定)。あとはプログラミングしてマイコンに書き込むだけです。

aitendoのDIP化最小構成マイコンキット

製品名から一体何のマイコンなのかが分かりません。Webを見ればLPC1114とわかりますが、店頭だと恐ろしく見にくいLSI上のシルク印刷を読まないと分かりません。なんて不親切なんでしょうか。
「最小構成」とあるように、DIP品のLPC1114FN28と同じサイズの大きさ中に水晶とリセットスイッチ、ISPブートジャンパー、LEDが付いています。実装が楽にできてかつ395円とDIP品のマイコン単体よりも安いくらいです。下の写真は、左からaitendoのDIP化最小構成マイコンキット、SSOP28ピンタイプのLPC1114FDH28/102をDIP化したもの、DIP品のLPC1114FN28/102。サイズがすべて同じです。

当然ながら作り方の説明は一切ありません。SSOP28ピンのLPC1114FDH28/102も自分ではんだ付けする必要があります。あちゃんでいいのようにシリアルと接続する端子が出ていません。LPC1114の使い方をある程度知っていないと手出しできませんね(汗)。
あちゃんでいいのと同様、USB-シリアル変換を用意しておきますが、TXとRXだけで結構です。最小構成マイコンキットの16ピンと15ピンにそれぞれtx, rxと書かれています。下の写真のようにUSB-シリアルとクロスで接続しておきます(もちろん、GNDとVCC(3.3Vなので注意)も忘れずに)。
プログラミングはmbed環境を使うことができます。mbedのターゲットプラットフォームをmbed LPC1114FN28にしてプログラミングをビルドすると、binファイルがダウンロードされてきます。このbinファイルをマイコンに転送する方法はいくつかありますが、一番簡単でオススメなのは、LPCIPSというツールを使ってbinフィアルをUART経由でマイコンへ書き込む方法です。ISPモードで転送する必要があるのですが、最小構成マイコンキットのISPジャンパーをショートしてリセットボタンを押すとISPにモードに入ります。この状態でLPCISPでファイルを書き込んで下さい。書き込み後、ジャンパーを外してリセットボタンを押すと書き込まれたプログラムが起動します。

激安ARM STM32F103C8T6ボード

以前STM32F103C8T6ボードの紹介をしました。このときはUART経由で書き込む方法を紹介しましたが、ボード上にST-LINK用の端子がついているので、今回は簡単なST-LINKで書き込む方法を紹介します。
ST-LINKはST様のプログラマ/デバッガの書き込むツールで、純正品の他に中華コンパチ品も出回っております。後者のドングルが500円くらいで入手できるので、STM32を使う人は揃えておいて損はないと思います。なお、Nucleoの頭の部分についているのがST-LINKです(偶然にもSTM32F103C8T6が使われています)。あまりメリットないですがNucleoでもST-LINKで接続することができます。
ボードのST-LINK端子にそれぞれドングルのピンを接続します。STM ST-LINK UtilityをST様からダウンロードし入手します。最初にST-LINKとPCを接続した時に、ST-LINK自身のファームウエアをアップデートしておきましょう。ST-LINK Utilityはbinだけでなくhex形式も読めます。LPC1114と同様に、mbed環境でプログラミング・ビルドして得られたbinファイルをST-Link Utilityに読み込ませ、"Target -> Program"でマイコンに書き込むことができます。

ボード、ST-LINKともに中華品なのでとても安いです。mbed環境がそのまま使えて、高性能なマイコンを使いこなしたいならば、この構成が最強なのではないでしょうか。