ぼちぼちと更新をしていたブログですが、始めてから60万アクセスに届きました。 年末で切りのいい数字になったかな。これからも好きなことばかりしか書かないとおもいますが、よろしくお願いいたします。始めてから6年ぐらいになるので、結構長く続いたかなと思います。
そろそろWioTerminal、M5、AIっぽいことにも手を出していきたいのですが…時間がなかなか作れない…。
ぼちぼちと更新をしていたブログですが、始めてから60万アクセスに届きました。 年末で切りのいい数字になったかな。これからも好きなことばかりしか書かないとおもいますが、よろしくお願いいたします。始めてから6年ぐらいになるので、結構長く続いたかなと思います。
そろそろWioTerminal、M5、AIっぽいことにも手を出していきたいのですが…時間がなかなか作れない…。
前回はWSL2-Docker環境
でChromeブラウザ
の起動まで行ったので、続きの作業としてmicro:bit
のGitHub版最新開発環境を構築していきます。
参考
基本的には参考リンクで事足りるかなと思いますので、簡単めの説明にとどめたいと思います。
micro:bit
のGitHub最新版を```WSL2-Docker環境で動作させる基本的には以下の手順となります。
micro:bit
のGitHub最新開発版のクローンmicro:bit
環境の構築と実行実際には以下を実行していくことになります。Ubuntuコンテナのデフォルトではcurl
、git
、node.js
などはインストールされていないので、インストールを行ってから導入していくことになります。最後にGoogle Chrome
を起動しておくといいかなと思います。本来の手順としてはブラウザは自動的に起動するのですが、Chromiumブラウザ
がインストールされていない場合には、別途生成されたリンクをURLとしてオープンする必要があるので、このような手順にしています。
# apt install -y curl git # curl -sL https://deb.nodesource.com/setup_14.x | bash - # apt install -y nodejs # git clone https://github.com/microsoft/pxt-microbit # cd pxt-microbit/ # npm install -g pxt # npm install # google-chrome --no-sandbox & # pxt serve
最後にあるpxt serve
を実行すると実行時ログの中にURLが表示されると思います。これをコピーして事前に開いておいたブラウザに貼り付ければOKです。ブラウザはFirefox
でもいいのかなと思ったのですが、Firebfox
でURLを開いても、エラーが発生するのでChrome系ブラウザ
にしています。
拡大
URLをオープンすると以下の様な、micro:bit
のMakeCode環境が表示されます。
Docker環境下なのでUSB接続でmicro:bit
を認識してくれません。そのため、一度ファイル出力を行ったものをホスト側にもってきて、USBストレージとして書き込む方法を行います。コンテナの構築時にファイル共有のディレクトリを作成していたのはそのためでもあります。
参考(作成時の設定で共有ディレクトリ設定をしています)
普通に拡張などの機能も使ってブロックを組み立てることもできます。
ダウンロード先の設定をChrome側で行っておくと共有ディレクトリに保存できて便利かなと思います。
散々Firefox
ではうまく行かなかったといっていたのですが、動作検証のために再度インストールを試してみましたが、問題なく動作してしまいました。
また、pxt serve
後にFirefoxインストール後はブラウザが起動するようになりました。状況はわかりませんが、問題はなさそうです。
ブラウザの起動は以前から問題はなかった*
MakeCodeの起動で失敗していたのですが、起動しました
コードの生成もファイルのダウンロードも問題ありません
WSL2-Docker環境
でもmicro:bit
(MakekCode)のGitHub版最新開発環境を動作させることができました。話によるとWindows環境だけでも構築はできるみたいなので、そこまでのことをしなくても良かったのかなとも思いますが、どんな環境になるかわからないのであればDocker
で環境を作ってしまうというのも割とありかなと思いました。
前にmicro:bit
の最新版をRaspberry Pi
で動作させましたが、Raspberry Pi
では結構動作が遅く、起動までにかなりの時間がかかっていました。
本当はWindows10でも試してみようかなと思ったのですが、割とインストールした開発アプリの状況が汚いWindows10しかなかったこともあり純粋に手順としてメモをしておく意味はないかなと考え、今回はWSL2
環境でのDocker
をインストールしていることを思い出しました。
参考
ただ、問題があってmicro:bit
のGitHub版最新開発環境導入にはGUI環境(ブラウザが立ち上がる必要があります)そのため、Docker
のコンテナ環境だけではなく、X Window System
のアプリWindows10側でも見えるようにする必要があります。そこで、X Window Systemサーバー
の設定も行っていこうと思います。情報では、今後WSL2(Windows Subsystem for Linux 2)
がWindows上のX Window System
のサーバと連携するようになるという話もありったりしたので、来年以降でWindowsだけで別のアプリを入れることなく動作させることもできるかなと思っています。
そんな中、今回はWindows10のWSL2
上にインストールを行ったDocker
の環境(以後WSL2-Docker
環境ということにします)を使用して、まずは環境整備を行ってみます。
次回はこの環境を使用してmicro:bit
の最新版を動かしていくことにします。micro:bitの最新版の導入に関しては以前のエントリーとほとんど同じなのでそちらを参考にしてください。こちらではコマンドのみを記載するだけにとどめます。
参考
続きを読む実は去年のアドベントカレンダーに書こうと思っていた内容ですが、ようやくうまくいったのでまとめておこうと思います。
Chromebook
も最近は嘘みたいにお安くなっているので、Arduino IDE
を使って電子工作をするといった要望もあるかなと思います。Visual Studio Code
も正式に動作が確認されたと言うこともありますし、かなり開発サイドの状況もこの一年で変わってきたと言えるでしょう。
今回の内容は、うまく行かなかったことも含めてまとめたものになりますので、実際に成功する方法に関しては末尾に「ArduinoIDEの正しい導入手順」として、まとめておきますので、そちらをご覧ください。
Chromebook
での、Arduino IDE
に関しては情報はあまりありません。検索して自分のブログがヒットするのが1番辛いのですが、参考になるページがありますのでそちらの情報をぜひご覧ください。(少し古いですが、この情報がほとんどすべてかもしれません)
参考
https://www.stevencombs.com/arduino/2020/01/20/arduino-on-chromeos.html
続きを読む最近、micro:bit
を使用することが多いです。教室の指導者向け(大人?)向けのメンターのような形での授業や、小学生向けのクラスを受け持っているので
今月はかなりの時間を費やしているような状況です。また、最近正式に発売されたmicro:bit v2のこともあり、ネットでも盛り上がりを見せています。
そんな中、自分もようやく新micro:bit
を購入しました。お値段は据え置きの2200円です。
ハードウエアとしては、マイク・スピーカーが標準で装備されたのが非常に大きな違いと思いますが、実際に使用して見るとそれ以外にも高速化されているところもあります。
特にiPadなどからBluetooth経由でペアリングしてダウンロードを行うような場合をみるとそのスピードが顕著です。ダブレットなどではUSB経由でのダウンロードができないので、【Aボタン】+【Bボタン】+【リセットボタン】を同時に押して、フラッシュの待機状態にしてから、画面内の【ダウンロード】ボタンをクリックすることになりますが、その時の待機時間が圧倒的に早いです。旧バージョンと同じようなスピードだと逆に失敗するくらいスピードだと思ってもいいかもしれません。
あとは使用できるメモリ量が増えるのもいい点かもしれません。Bluetoothのライブラリをロードすると結構メモリが足りなくて処理を削らないと行けないと思いますが、そういうことも少なくなると思います。(まだそういう状況になっていないので希望的な状況ではあります)
そんなメリットも多い新バージョンのmicrobitですが、まだまだ出たばかりなので少し不具合もあるようです。自分が使う機会のあった以下のキットに同梱されているGrove接続の超音波モジュールがうまく動作しません。(※2020.12.22AM0時現在の話になります)
動作させてみると一回計測を行ったあとに以下のようなエラーが発生します。
エラーコードはLEDの表示としては020
となっていたので、メモリ関係でなにかが発生しているように考えられます。
ただ、以下のようなコードでメモリを食うとは思わないのでバグだと思われます。
実行の様子
参考
Extension using pulseIn errors 020 on V2 · Issue #3731 · microsoft/pxt-microbit · GitHub
少し待てはバージョンアップも行われて、問題なく使えるようになるとは思います。すでに報告済みのバグのようなので修正も完了しているようですが、リリースまではされていない状況です。個人的にはできればそういった機能も早めに使えるといいなと思いMakeCode
の最新版をWeb経由ではなくGitHub経由で取得してローカルに展開しようと考えました。今回のエントリーはそんなローカルにMakeCode
サーバーを構築すると言うものになります。
Windows
でもできるのかもしれませんが、Linux
やMac
のほうが構築が簡単だと感じたので、手元にあったRaspberry Pi
で行ってみました。ちょっとダメ元って感じではありますが。Debian
ベースなのでなんとかなるでしょう。
あとでわかるのですが、Xが必要になるようなので注意が必要です。
Raspberry Pi
のOSバージョンの確認では、今回使用したRaspberry Pi
のバージョンをチェックしておきます。ハードウエアは部屋に転がっていたRaspberry Pi 3B
を使用します。そこまでスペックもいらないかなと思っての選択です。
$ lsb_release -a No LSB modules are available. Distributor ID: Raspbian Description: Raspbian GNU/Linux 10 (buster) Release: 10 Codename: buster $ uname -a Linux raspberrypi 5.4.51-v7+ #1333 SMP Mon Aug 10 16:45:19 BST 2020 armv7l GNU/Linux $ cat /etc/debian_version 10.4
OSのバージョンはこんな状況です。最新のRaspberry Pi OS
のバージョンがDecember 2nd 2020
なので少し古いものになります。
Node.js
のインストールデフォルトではNode.js
のパッケージが古いと思うので、今回は以下のサイトからLTSバージョンのVersion 14
をダウンロードしてインストールしました。
上記のサイトのドキュメントにある通りにインストールを行います。ルート権限のユーザーで実行すればsudo
なしでインストールは可能です。
Node.jsのインストール
curl -sL https://deb.nodesource.com/setup_14.x | sudo bash - sudo apt install -y nodejs
使用するコマンドのバージョンの確認
$ node -v v14.15.3 $ npm -v 6.14.9 $ git --version git version 2.20.1
念の為git
コマンドもバージョン確認しています。
MakeCode
の取得とインストール
MakeCode
の最新版は以下のGitHub
にあります。
この中のLocal server setupの項目を見ながら作業を進めていくことになります。 基本的には以下のように作業すればOKです。ただ、色々エラーやワーニングがでますが、そのまま継続して行っていきます。
ソースコードのCloneとインストール
$ git clone https://github.com/microsoft/pxt-microbit $ cd pxt-microbit $ sudo npm install -g pxt $ npm install
インストールログ
$ git clone https://github.com/microsoft/pxt-microbit Cloning into 'pxt-microbit'... remote: Enumerating objects: 46, done. remote: Counting objects: 100% (46/46), done. remote: Compressing objects: 100% (37/37), done. remote: Total 38335 (delta 19), reused 24 (delta 9), pack-reused 38289 Receiving objects: 100% (38335/38335), 304.68 MiB | 2.17 MiB/s, done. Resolving deltas: 100% (24203/24203), done. Checking out files: 100% (2291/2291), done. $ cd pxt-microbit $ sudo npm install -g pxt /usr/bin/pxt -> /usr/lib/node_modules/pxt/pxt + pxt@0.5.1 added 1 package in 2.067s $ npm install npm WARN deprecated request@2.81.0: request has been deprecated, see https://github.com/request/request/issues/3142 npm WARN deprecated har-validator@4.2.1: this library is no longer supported npm WARN deprecated hawk@3.1.3: This module moved to @hapi/hawk. Please make sure to switch over as this distribution is no longer supported and may contain bugs and critical security issues. npm WARN deprecated hoek@2.16.3: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial). npm WARN deprecated boom@2.10.1: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial). npm WARN deprecated cryptiles@2.0.5: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial). npm WARN deprecated sntp@1.0.9: This module moved to @hapi/sntp. Please make sure to switch over as this distribution is no longer supported and may contain bugs and critical security issues. npm WARN deprecated request@2.88.0: request has been deprecated, see https://github.com/request/request/issues/3142 npm WARN deprecated applicationinsights-js@1.0.21: This package has been moved to @microsoft/applicationinsights-web. Please install that package instead for the latest updates & features npm WARN deprecated har-validator@5.1.5: this library is no longer supported npm WARN deprecated mkdirp@0.5.1: Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.) npm WARN deprecated fsevents@2.1.3: Please update to v 2.2.x > puppeteer@2.1.1 install /home/pi/pxt-microbit/node_modules/puppeteer > node install.js Downloading Chromium r722234 - 121.1 Mb [====================] 100% 0.0s Chromium downloaded to /home/pi/pxt-microbit/node_modules/puppeteer/.local-chromium/linux-722234 npm notice created a lockfile as package-lock.json. You should commit this file. npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@~2.1.2 (node_modules/chokidar/node_modules/fsevents): npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.1.3: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"arm"}) added 666 packages from 1204 contributors and audited 670 packages in 414.196s 39 packages are looking for funding run `npm fund` for details found 25 vulnerabilities (6 low, 16 moderate, 3 high) run `npm audit fix` to fix them, or `npm audit` for details
インストールが完了すればあとは実行になります。
ドキュメントのRunningの部分を参考にしていくことになりますが、ここで注意なのはこのコマンドの最後でX上(GUI上)のChromiumブラウザを実行してローカルサーバーにアクセスするという動きをします。そのため、以下コマンドの実行はX上のコンソールから行ったほうがいいと思います。
$ pxt serve
これで実行されます。時間は結構かかりますが、正常にいけばブラウザが立ち上がりMakeCodeが起動されます。今回はリモートデスクトップをしようしたので以下のような状態になりました。
いつもみたようなMakeCodeが起動しています。ただ、バージョンを確認すると以下の様になっているので少し違っていることがわかるかと思います。
今回の導入はうまく行ったように見えますが、シュミレータがうまく行かいないようでした。インストール時のログでも、シミュレータ部分でいろいろとなどのワーニングが出ていたためだと思います。ただ、ブロックの操作に関しては特に問題はないようです。ではGrove
を使用できる拡張コードを導入して、テストコードを作成していこうと思います。
【拡張機能】の画面を開いて…
grove
と検索して、最初にでてきたものをクリックしていきます。
追加されたGroveブロックを使って行くことになります。
今回使用するのはUltra Sonic
となります。v2とついているものが該当するブロックになるのでそれを使用します。また、単位はcmで返してほしいの(in cm)となっている方を選択してください。
取り出して、超音波センサーの値をLEDに表示されるようにブロックを組み立てていきます。
拡大すると以下のようになります。
あとは、通常のダウンロードと同じようにしてmicro:bit
に書き込んで行きます。Raspberry Pi
はUSBで接続することができるので、そのままPCのように操作していくことでダウンロードできます。
デバイスの登録もできます。
登録すれば簡単にダウンロードができるようになります。
ダウンロードしたら、実行状況を確認します。
実行の様子
うまく動作するようになったようです。連続して値を出力してくれています。
micro:bit v2
でバグがあった超音波センサーブロックをGitHub
のソースコードを使用してローカルにサーバーを立てることで、エラー回避対応することができました。v2が出たばかりということもあってWeb版もFixされ少しずつ変わってきています。こんな手を使わなくても少し待てば解決できそうですが、あえてこういうことにチャレンジするのも面白いです。
ちなみにWindows
でも同じようにGit
とNode.js
を使ってインストールをしてみようと思ったのですが、インストール中に止まってしまいました。Docker
だとうまくいくのかもしれません。ちょっとやってみてもいいかも?