Arduino MKR VIDOR 4000を入手

FPGAが載っているArduinoがあるのをTwitterで知って、ついポチってしまいました。アメリカからドイツ経由で2週間強、ようやく届きました。

届いたら、箱がやや潰れてました(泣)。中身は帯電防止袋なしで、帯電防止スポンジに刺さった状態のArduino MKR VIDOR 4000がゴロッと入ってました。幸い、外観上の異常はなさそうです。

で、使い方を調べていたら、HDMIケーブルはMini HDMIじゃなくて、Micro HDMIが必要なことが判明。早速アマゾンでポチりました。

搭載しているチップは、

  • CPU Atmel ATSAMD21
  • FPGA Intel Cyclone10 10CL016YU256C8G
  • DRAM Alliance Memory AS4C4M16SA-7BCN
  • FLASH Winbond 25Q16DVN1G

のようです。CycloneがALTERAのロゴでなくなっているのは時代を感じさせられるのと、Allianceのメモリは昔痛い目にあったので大丈夫なのか不安です(笑)。

しかし、もうチップの刻印が見えない見えない(涙)。ルーペで必死に見ました。

このルーペは40年ほど前に父がドイツに出張した際に買ってきてくれたお土産です。残念ながら、自分が小さい頃だったので、こんなものに頼らなくても小さな文字までバッチリ見えたので扱いを雑にしていたため、レンズの中央部分に細かい傷がたくさんできていて、かなり見辛くなってしまっています。

レンズをよく見ると、ESCHENBACH W-GERMANY という刻印が見えます。W-GERMANYは西ドイツ製ということだと思います。(当時はまだ西ドイツと東ドイツに分かれていて、ベルリンの壁もあった時代です)

で、ESCHENBACHって何かと調べたら、メーカーの名前(ブランド)のようで、実は同じ(に見える)モデルが今では国内でも買えるようです。

Arduino IDE 1.8.8を動かしてみた

久しぶりに Arduino IDE を使ってみたくなったのでLinux Mint 18.1 LTS上にインストールしてみました。ターゲットボードはずっと前に秋月で買った ESP32-DevKitC ESP-WROOM-32開発ボード です。

インストールの手順はこちらに記載されているとおりなのですが、なにはともあれ、こちらからArduino IDE 1.8.8 Linux 64bitをダウンロードして、ホームディレクトリに展開します。

展開したディレクトリに移動して、インストールスクリプトを起動します。

これでメニュー上に追加されます。

「ファイル」→「環境設定」で環境設定画面を開きます。設定の下の方にある「追加のボードマネージャのURL」に「https://dl.espressif.com/dl/package_esp32_index.json」を入力(下記)します。

次に、「ツール」→「ボード」→「ボードマネージャ」

で「esp32 by Espressif Systems」のところにある「インストール」ボタンをクリックしてインストールします。完了すると「ツール」→「ボード」でESP32を搭載したボードが大量に出てくるので、「ESP32 Dev Module」を選択します。

次に、サンプルを動かしてみます。今回はNTPサーバーにアクセスして時刻を取得するサンプルを動かしてみました。まず、「スケッチ例」→「ESP32」→「Time」→「SimpleTime」でサンプルを開きます。開いたら、上の方にある ssid と password の部分に手近な無線LANアクセスポイントの設定を記述します。

チェックマークをクリックしてビルドすると、エラーが発生します。いろいろ調べると、python の pyserial モジュールがないために発生するようなので、インストールします。そもそも、pip も入っていなかったので、インストールしました。

ビルドが通るようになったので、書き込んでみます。

「ツール」→「シリアルポート」で /dev/ttyUSB0 を選択した後、「ツール」→「シリアルモニタ」でシリアルモニタを開き、速度を 115200bps に設定します。その後で、右矢印マークをクリックするとビルドして書き込み、実行します。

うまく行けば、NTPサーバから取ってきた時刻(UTC)が表示されるはずです。

意外にあっさりと動いてしまいました。

CircuitPythonのAPI

サンプルは動きましたが、いじって遊ぶにはAPIがわらかないことにはどうにもなりません。Circuit Playground Express上のCircuitPythonのAPIを調べてみました。

どうやってたどり着いたかよくわからない(汗)のですが、メモしておきます。

CircutPythonを試してみました

最近始めたTwitterで見かけたCircutPythonというキーワードを調べていくと、その正体はどうやら USBマスストレージ+MicroPython であることがわかりました。PythonのスクリプトをUSBマスストレージに見えているハードウェアデバイスに放り込んでやると、そのまま実行できるというお手軽この上ない環境のようです。エディタとしてGeanyを使えば、更にお手軽になる予感がします。

今回は、ハードウェアとしてはadafruitのCircuit Playgound Expressを購入してみました。

早速購入したCircuit Playgound ExpressをUSBでPCに接続すると、デモ動作をします。

ブザー音を出しながら10個のフルカラーLEDが順に点灯、LinuxMint上で

とすると、シリアルコンソールにCapsenseセンサ、スライドスイッチ、明るさセンサ、加速度センサ、温度センサの各状態を出力しているのが見えます。プッシュスイッチを押すとその状態も出力されます。スライドスイッチを左にスライドすると出力が変わるとともにブザー音がなくなります。

この状態ではCircuit Pythonは使えないので、CircuitPythonをインストールします。

まず、Circuit Playgound Express用のCircuitPythonをguthubからダウンロードします。現時点では CircuitPython 3.1.2が最新のようです。ディレクトリの中からCircuit Playground Express用のadafruit-circuitpython-circuitplayground_express-3.1.2.uf2をダウンロードします。ダウンロードできたら、これをインストールします。

Circuit Playgound Expressの中央のリセットスイッチを押すと、すべてのフルカラーLEDが一瞬赤になった後、緑になり、USBマスストレージ(ボリューム名CPLAYBOOT)として認識されます。このモードがブートローダモードと呼ぶようです。(なお、Circuit Playgound Expressの場合は、購入直後はリセットスイッチ1回でブートローダモードに入れますが、通常はリセットスイッチ2回連打する必要があるようで、そのタイミングが結構難しいようです。公式サイトでは何度が繰り返してやってみろ、と書いてあります。)

マスストレージとして認識されているCPLAYBOOTに先ほどダウンロードしたadafruit-circuitpython-circuitplayground_express-3.1.2.uf2をドラッグ&ドロップで書き込むと、USBコネクタ脇の小さな赤いLEDが高速で点滅した後、フルカラーLEDが一つだけ一瞬白色で点灯、その後、一旦CPLAYBOOTというボリューム名のマスストレージは閉じて、今度はCIRCUITPYというボリューム名のマスストレージが開きます。これがCircuitPythonとして扱われるドライブのようです。

公式サイトでは、Windows/MacOS/Linux用にMu Editorというのをインストールするよう勧めていますので、試してみます。

公式サイトのままだと、Setuptoolsがないというエラーが出てしまいますので、先に python3-setuptools をインストールしておきます。また、上記手順のあと、コマンドラインから

でmu-editorを起動できるような記述がありますが、一旦再起動(たぶん、ログアウトして再ログインでOK)しないと起動しませんでした。

起動すると、モードの選択が出てきます。

ここでは、一番上の「Adafruit CircuitPython」を選択して、OKをクリックします。
クリックするとコード編集画面に変わります。

公式ページからサンプルコードをコピペします。

これをCIRCUITPYの下にcode.pyという名前で保存すると、LEDが点滅するはずです・・・・・が、点滅しません。別のエディタで見てみると、ファイル自体は存在しているようです。試しに、リセットしてみると・・・・現れたドライブにはファイル名は存在するものの、ファイル自体は空っぽになっていました。何度やっても同じです。
試しに、USBケーブルを抜いて電源を再投入してみると、以降は期待した動作をするようになりました。sleepのパラメータを変えて保存すると直ちに、点滅周期が変わります。

参考:
adafruitのCircuitPythonのページ

MPLAB SNAPのケースを作ってみた

Microchipからリリースされた新しいPIC(だけじゃなくて、AVRとかも扱えるらしい)用デバッガ・プログラマのSNAPが秋月にあったので買ってきました。

いままでのPICkitと違って、こいつはケースがなく、基板剥き出しです。必要なら3Dプリンタで自分でケースを作ってね、ということみたいです。

・・・というわけで、作ってみました。

例によって、スナップフィットで蓋を固定するようにしたので、3Dプリンタで出力した2つの部品以外は必要なく、なかなかいい感じになりました。

LEDの部分は穴を開けるのではなく、厚さを薄くしてありますので、LEDが点灯すると透けて見えます。中にゴミなどが入る心配がないのがいいところです。

秋月GPSモジュールいろいろ

3年ほど前に試してみたGPSモジュールですが、久しぶりに発掘したのでいじってみました。

1.ケースを作ってみた

これまで、とりあえず動かしてみた後放置する原因の一つはむき出しの状態や見栄えの悪い状態で使わざるを得ないことでした。そこで今回はケースを作ってみました。

できるだけ3Dプリンタで出力した部品だけで済ませたいところですが、手を抜いたこともあり、今ひとつといったところです。

2.LinuxMint19で動かしてみた

3年も経っているので、Linux側もそこそこ変わっています。同じ手順で動かしてみようと思ったのですが、思うように動きませんでした。次回動かすためのメモを残しておきます。

(1)動かすのに必要なもの
synapticで、「viking」「gpsd」「gpsd-clients」をインストールします。

(2)USBシリアルを認識、操作できるようにします。
ユーザーをdialoutグループに所属させます。所属させないと /dev/ttyUSB* へのアクセス権がありません。グループに所属させたら、一旦ログアウトしてログインし直します。

(3)PCに接続します

(4)GPSモジュールからデータが来ているか確認します。

(5)gpsdにGPSモジュールを登録します
ここが前回と違うところです。前回はこんなことした記憶がありません。

(6)Vikingで地図上に表示します
操作は概ね同じですが、MapTypeのOpenStreetMap(MapQuest)は変更が必要です。
「Start Realtime Tracking」すると、綺麗に軌跡が描かれるようになりました。

3.GPSモジュールのファームウェアアップデート

秋月の製品ページを見ると、新しいファームウェアがリリースされていて、みちびきの複数機同時運用に対応していました。で、ファームウェアをアップデートしようとアップデートモジュールをダウンロードしたあたりから雲行きが怪しくなりました・・・。
アップデートのためのソフトウェアはWindows用なのですが、PL2303はWindows10では認識しないのです。FT234Xに交換してもいいのですが、FT234XはLinuxでまともに動作しません。うーん、複数機同時対応、試してみたかったんですが・・・。

DarkStarを動かしてみた

歴史遺産ともいえる、Xerox Starのエミュレータがgithubでリリースされたようです。エミュレータ自体はこちらで、ドキュメントはこちらで参照できます。

LinuxMint19上で実際に動かすには、まずこちらに従って mono をインストールします。

次に、必要なライブラリをインストールします。

ダウンロードしたエミュレータを展開します。

エミュレータを起動します。

しばらくすると、上の方にメニューバーと下の方にステータスバーのついたエミュレータウインドウが開きました。
この状態だと、ハードディスクイメージがないので、ハードディスクイメージを取ってきて展開します。

ダウンロードしたハードディスクイメージをセットします。
「System」⇒「Hard Disk」⇒「load」でイメージを指定します。今回は、ViewPoint-2.0-11-9-1990-18-38.imgを指定してみました。
その後、「System」⇒「Start」で起動するのですが、セルフテストの画面をたくさん表示した後、フリーズしてしまうようです。
「System」⇒「Alternate Boot」で「Rigid」を選んでおくと、セルフテストをスキップして起動するようです。しばらくすると、

ダイムゾーンの設定画面になりました。ここでは -9 を入れてみます。
・・・・が、キーマップがおかしいようです。数字だとキーが一つずれている感じです。

一旦停止させて、ディスクイメージを XDE-5.0.imgに切り替えて、再起動してみました。しばらくしたら、

2値ビットマップのウインドウ表示がされました。渋いです(笑)

歯車のSTLファイルを生成できるWebサイト

動く機械構造を作ろうとすると、歯車がどうしても欲しくなります。で、どうしたら歯車を3Dプリンタで出力できるか調べていたら、歯車のSTLファイルを生成できるサイトを見つけました。サイトのURLは http://www.knowhave.com/gear/ で、平歯車、ラック&ピニオン、遊星ギヤ、すぐば傘歯車、ウォームギヤの設計ができるようです。

で、試しに設計してみたのがこちらです。

「CREATE STL」をクリックすると、STLファイルで保存ができますが、なぜかGoogle Chromeではエラーになります。Firefoxでは問題ないので、Firefoxで保存、Curaで読み込ませて早速3Dプリンタで出力してみました。

他にもウォームギヤも出力してみました。

できたものを組みあわせるとこんな感じ。

Fusion360でSTLを読み込んで他の部品の一部にしたり、少し加工できたりできると嬉しいのですが、なにか方法はあるんでしょうかね??

WordPressのテーマ変更

これまで、このサイトのテーマは初めてWordPressを使った際に選んだテーマをPHPのバージョンアップに伴う不具合とかを手直ししつつ使ってきたのですが、さすがに今の世の中、スマホやタブレットでサイトを見る機会が増えてきていて、レスポンシブデザインへの対応をしたいなー、と思うようになりました。

しかし、元のデザインを自力でレスポンシブデザイン対応させるようなスキルもないので、ついにテーマ変更することにしました。で、新しいテーマはできるだけ長くサポートされるであろう、標準のテーマのうち、レスポンシブデザインに対応しているもの・・・ということで、TwentySeventeenにしました・・・が、TwentySeventeenはそのままだとアクセスするとどどーんと画像が表示されてしまうので、こちらのサイトを参考に控えめに表示されるようにしました。

変更箇所は、テーマの中のfunctions.phpの最後に、以下の記述を追加して UTF-8 で保存しました。もう少しデザインはカスタマイズすると思いますが、とりあえずレスポンシブデザインになったのでよしとします。

・・・が、何も考えずにテーマ自体のfunctions.phpを編集してしまうと、テーマがバージョンアップしたときに元に戻ってしまうようです。なので、子テーマを作って、そちらの funcions.php を編集しました。

子テーマは、サーバ上のテーマディレクトリと同じ階層に子テーマのディレクトリ(twentyseventeen-child)を作って、そこに必要なファイルを置きます。

一つは、functions.php で、以下の内容です。実際には、上記の内容も後ろに書き足して、UTF-8で保存しました。

もう一つは、style.css で、以下の内容です。

ここに、こちらのサイトの記事の内容そのまま(ありがとうございます!)ですが、

を後ろに書き足して元のテーマでは狭くて読みにくい記事の幅を広げてみました。

さらに、記事の見出しと記事内の見出しがともにh3で同じサイズで表示されてして醜いところがありましたので、あちこち参考にさせてもらいながら、style.css に

を追加して記事のタイトルに装飾をつけてみました。

今しばらくはデザインがいろいろ変わるかもしれませんが、ご容赦を(笑)

ESP32搭載可能なFPGAボード

Hack a dayを見ていたら、新しいFPGAボードの記事が出ていました。搭載しているFPGAがLatticeというのがちょっと好みがわかれそうな気がしないでもないです。このボードの仕様一覧をみていて気づいたのですが、仕様をざっと並べると

  • FPGAは Lattice ECP5 LFE5U-85F-6BG381Cで、84KのLUTと3.7Mbitのメモリを内蔵
  • JTAG I/F用のFT231XSを搭載
  • 32MBのSDRAMを搭載(DDR2とかじゃないので、設計が楽なはず^^;)
  • コンフィグ用を兼ねた4-16MBのフラッシュ(まだ容量確定してないのかな?)
  • MicroSDスロット搭載
  • LED11個、ボタン7個、4極3.5mmジャック
  • 0.96インチのカラーOLEDディスプレイが取付可能
  • ESP-32取付可能(WiFi越しに独立してJTAGをWebで操作可能っぽい!)
  • 無線用アンテナ(27,88−108,144,433MHz)搭載
    (88-108MHzはFMラジオ受信用、他は無線リモコンの受信用ですかね。後者は日本では使えないと思いますが)
  • ADC搭載

ということで、ケーブルレスでFPGAのコンフィグができそうです。JTAGつなぐのめんどくさいのでケーブルレスで行けるのなら面白そうです。ただ、価格帯は$60〜$200ということみたいなので、具体的に何かネタ(と時間と気力)がないとちょっと手が出ないかも。