9か月の育休を終えて

 

f:id:inajob:20210124210638p:plain

昨年4月からまるっと9か月育休を取得するという貴重な体験をしたので、育休が終わった今、振り返り記事を書いてみました。


ここまで長い男性の育休というのはまだ珍しいと思うので、この記事が少しでも多くの方の役に立てば幸いです。

この育休体験記のフォーマットは #パパ育 を主催している シカゴリラさんから提案いただいたものです。

 

papaikuq.com

基本情報

  • 名前: inajob
  • 具体的な育休取得期間: 2020年4月(出産当日)から2020年12月(9か月)まで
  • 居住地: 関東圏
  • 職業: 会社員(1001人以上)
  • 育休取得時の家族構成: パパ(自分)35歳、ママ35歳、娘(0歳)

育休を取得した理由

頼りにできそうな親族は遠方で、出産直後の妻1人では育児をしていくのは難しいと感じたためです。
また、これから始まる長い育児をしていく中で、自分の経験値を高めておくために育休制度を使うのが金銭面でも有効だと感じたというのも理由の一つです。

育休取得プロセス

家族とのやりとり

妊娠時から、(望んだ妊娠とはいえ)妻が子育てについて不安を抱いており、自分も長く育休を取得し一緒に頑張っていこうと話し合っていました。
さらに妻はつわりも比較的ひどかったため、妊娠中の食事の用意や家事全般も自分ができるだけ対応し、役に立つアピールをしていたことも、育休取得の流れにつながりました。

会社とのやりとり

比較的大企業という事もあり、育休を取ることは会社としても推奨していると感じました。
妊娠発覚時から上司と育休については話し合っており、長期にわたる育休にもかかわらず、業務の引継ぎをスムーズに行うことが出来ました。同じ部署に子持ちの方が多かったというのもスムーズに事が進んだ一因だと思います。

 

育休中の生活

家事や育児について

家事についてはもともと妻と分担しており、またお互いが不調の時に代わりに担当家事を肩代わりすることもあったので、そこまで心配していませんでした。
しかし、育休により家での食事が増えたため、食事の準備をする家事が思いのほか増えました。

とはいえ、自分も妻も両方育休を取得していたため、自由にできる時間はそこそこあったので、この機会に「作り置き」や「下ごしらえ」などのテクニックを使い、自炊のバリエーションを増やしたり、時短調理できるようになりました。

 

育児の方は、第一子という事もあり、わからないことだらけでした。また、親戚も遠方ということで、育児本で学んだり、ママ友・パパ友から教えてもらったりしました。

出産直後、妻が非常に疲弊しており、ともかく休ませたいという事で、夜間の子守は私が担当しました。今も引き続き夜間の子守をしています。夜ミルクを欲する回数も減り、随分ラクになりました。

夜自分が子守をする代わりに、朝のルーチン家事は妻にお願いし、自分は朝7時ごろから足りない分「朝寝」をさせてもらっています。

 

育児のために必要な道具については、自分が調査をして、おすすめ品を妻に紹介して、良さそうなら購入という風にしました。例えば哺乳瓶一つとっても、様々な種類があり、それらをざっと見るだけでも結構手間がかかってしまいます。
もともと自分は「ガジェットオタク」的な気質なので、育児用品も一種の「ガジェット」ととらえ、様々なメーカーの様々な製品を調べ、利点・欠点をまとめ、今我が家に必要なものはどれか?を検討するという作業を楽しんでこなすことが出来ました。
(ただしファッション系を除く・・)

 

育休からの復帰に備えて予行演習的に「ベビーシッター」さんに子守を見ていただくというのも体験しました。これが意外とよくて、ちょっとした日常の心配事を相談したり、子育てのためのTipsを教えてもらったりと、単なる「子供を預けてその間に親が別のことをする」使い方だけでなく、「子育ての相談」という使い方もアリなんだなと感じました。(最近はコロナなどもあり、あまり利用できていませんが・・)

家事や育児以外(自己研鑽や趣味、家族旅行、住宅購入等)

もともと私はコンピュータを使ったモノづくり(ソフトウェア、ハードウェア)が趣味で、育休中も工夫しながら趣味を続けることが出来ました。これも妻と育児を分担しているおかげです。
特にソフトウェアの作業は細かい単位で変更ができるので、隙間時間でを使ってモノづくりをするには向いていると感じました。

また、ブログ記事を書くような作業も区切りをつけながら作業することで、育児と両立して行うことが出来ています。一方、全く新しいことに挑戦するような趣味は時間がどれだけかかるか見積もることが出来ず、また細切れの時間で作業すると非常に効率が悪くなってしまうので、あまり育児とは向いていないように感じています。

 

旅行はもともと年に1~2回、近場に行くくらいでした。娘が生まれてからも、うまく工夫して旅行することが出来ました。まぁ夫婦二人でのんびり旅行とはずいぶん雰囲気が違いますが、娘を連れた旅行というのも良い気分転換となりました。

inajob.hatenablog.jp

大きく変わったのは、外食やカフェでまったりするようなことが難しくなった点です。1人が娘を見ている間に、もう一人がカフェに行くというようなことはできますが、夫婦でのんびり・・というのはしばらくできないだろうなと感じています。

 

住宅は妊娠前から子育てを前提とした間取りの部屋に引っ越し済みだったので、特にこのタイミングでは何かをする必要はありませんでした。生活家電については、ドラム型洗濯機、ロボット掃除機はすでに利用中でしたが、これらは育休中も大活躍しました。

育休中に新たに購入した家電としては「食洗器」があります。これも大活躍中です。

ということで、いわゆる新・三種の神器はすべて揃えましたが、どれも育休中、大活躍しています。

育休中の大変だったエピソード(子供の病気や怪我、突発的な事故(ヒヤリハット体験)、育休中のドタバタ等)

私、妻、娘全員が風邪をひいたことがあり、全員熱は出ていないものの咳や鼻水がひどいという状態で、この時が一番大変でした。

inajob.hatenablog.jp


また、出産後の妻が疲弊している期間が思った以上に長く、育休を取っておいて本当に良かったと感じています。
(肉体面でもそうですが、精神面での疲弊も結構きつそうで、生活を共にしつつサポートすることが非常に大事だと感じました)

今のところ突発的な事故は起きていません。ドタバタは・・まぁ日々ドタバタですね・・。


育休を振り返ってみて

育休なしの自分の子育て生活は考えられないです。もし育休なしという事で進めていたとしても、妻一人では全く回らず、緊急で自分が仕事を休むことになっていただろうと思います。

 

子供の世話というのは、幼いころほど手がかかり大変というのはそうなのですが、幼いころほど単純で、その対処自体は簡単だと感じました。(その簡単な対処が非常に多いので幼いころは大変なわけですが・・)

つまり作業としての難易度ははLv1、苦労としてはそこそこ、というのが生まれたての赤ちゃんです。これが成長していくにつれて、できることが増え、自分の考えも持ち、徐々に子育ての作業としての難易度が上がってくるように感じています。

育休を取ることで、このLv1の状態から子育てに取り組めているという事が、今後の長い子育ての道のりの大きな助けになっていると感じています。娘と一緒に父親の私もレベルを1つずつ上げていくことで、無理のない楽しい子育てができています。

これが、育休を取らず、ちょいちょい手助けをするような子育てをしていると、自分のレベルが上がらず、そのギャップに苦労していただろうなと思います。

 

次に子供が産まれたら育休を取得したいか

取得したいですが・・今のところ2人目は考えられないくらい日々がバタバタです。(よく皆さん2人以上子育てできてますね・・)

これから育休を取得する人へのメッセージ

女性みんながそうなのかは、わかりませんが、少なくとも我が家の場合は、出産後の妻は非常に疲弊しており、子育てできるコンディションではない状態が数か月続きました。

そうなってからバタバタするより、あらかじめ育休を取得し、余裕をもって育児をするほうが絶対に良いです。最悪の場合、産後クライシスと呼ばれるような夫婦の仲に亀裂を生じさせるような事態にもなりかねません。

また、育児というのは非常に長く続きますが、その第一歩をうまく進めるためにも早い段階から育児にかかわっておくことがうまく進める秘訣なのでは?と感じています。

子育てというのは余裕があると、子供はかわいいし、周りのみんなにも愛でてもらえるし、良いことずくめですが、ギアがくるって、疲れが先行してしまうと、ギャン泣きに苦しみ、寝不足になり、妻とは喧嘩する毎日・・という裏返しの状況になってしまうものです。

育休に限らずですが、家族に無理が無いように調整しつつ子育てしていく工夫というのが大切だと感じています。

 

(こういうことが出来る余裕が大切です↓)

 

 

その他(言い残したことがあれば是非)

育児は夫婦で挑む孤独な戦いという側面もあります。

そんな中でも頼りになるのは、同じ経験をしているママ友・パパ友です。
私の経験上、ママ友というのは比較的多くコミュニティがあり、地域の子育てサークルなどを通じてつながりを持つことが出来ますが、パパ友というのは意外と見つけにくいものです。

私の場合、仕事がインターネット関係という事もあり、育休中も職場の先輩パパにチャットで近況報告や、相談をさせてもらったり、Twitterの #パパ育 のハッシュタグで、同じく子育てに奔走するパパの皆さんとつながりを持ったりして、この孤独な闘いを少しでも楽しく、有意義に過ごせるように工夫しています。

このブログで子育て記事を発信しているのもそうした活動の1つです。

私の体験が少しでも多くの方の助けになれば幸いです。加えて、今後もこのブログやTwitterを通して子育ての近況や、悩みを発信していきますので、今後ともどうぞよろしくお願いします。

 

育休中に書いた子育てに関する記事リンク集

inajob.hatenablog.jp

inajob.hatenablog.jp

inajob.hatenablog.jp

inajob.hatenablog.jp

inajob.hatenablog.jp

inajob.hatenablog.jp

inajob.hatenablog.jp

inajob.hatenablog.jp

GamePi20を「物理”TIC-80”ゲーム機」にする

2020まとめも書いてしまった後ですが、ちょっと記事を書きたくなっちゃいました。

 

縁あってレビューした、下記記事のGamePi20というゲーム機ですが、これを使って Fantasy Computerである「TIC-80」のゲームを動かす方法が分かったので、紹介していこうと思います。

inajob.github.io

 

TIC-80って?

実はTIC-80については、ずいぶん前に記事を書いたことがありました。

inajob.hatenablog.jp

要は、レトロ風ゲーム実行環境です。実際のレトロゲームは「専用ハード」があり、そこで動くゲームでしたが、TIC-80などのFantasy Computerと呼ばれる仮想のゲーム機は、本体を持たず、PCなどで遊ぶことが前提とされています。

 

この手の仮想ゲーム機で最も有名なものは PICO-8 Fantasy Consoleです。ブラウザでゲームを遊ぶのは無料でできますが、ゲーム開発や、ネイティブアプリでの実行に関しては有料のソフトウェアです。

f:id:inajob:20201229164543p:plain

一方、TIC-80 tiny computerオープンソースで開発されており、特にお金を払うことなく開発・実行ができます。

 

GamePi20って?

こちらは自分が書いた下記レビュー記事を見て欲しいのですが、ざっくりいうとRaspberry Pi Zeroを内蔵したポータブルゲーム機です。

inajob.github.io

もともと、このゲーム機はファミコンや、メガドライブなど、レトロゲームエミュレータを動作させるためのものですが、この記事では、仮想ゲーム機であるTIC-80のゲームを動かす方法を紹介していきます。

 

ゲームエミュレータ用OS 「Recalbox」とは?

f:id:inajob:20201229164140p:plain

GamePi20のようなLinuxを基にしたゲームエミュレータ専用機というのは、ほかにもたくさん存在し、世界中に愛好者がいます。

そのため、このようなLinuxマシンを簡単にセットアップするためのLinuxディストリビューションも存在しています。この手のOSでは、メニューなどの操作をすべてゲーム用コントローラで操作できたり、簡単にROMファイルをゲーム機に転送するための仕組みが用意してあったりと、ゲームエミュレータ利用者が欲しい機能が一通り実装されています。

 

そのようなOSとしてメジャーなものとしてRetroPieRecalboxがあります。

実はこのRecalboxのバージョン6.1から TIC-80のゲームが実行できるようになったのです。

 

ということで、この記事では最新のRecalboxをGamePi20に導入する方法を紹介していきます。

 

GamePi20とRecalbox

GamePi20には公式で提供されるRecalboxと RetroPieのOSイメージが存在します。

しかし、Recalboxのバージョンが6.0と古く、前述したTIC-80には未対応のものとなっています。

という事でGamePi20の公式イメージに頼らず、Recalboxの最新版(Version 7.1.1-Reloaded)をセットアップする必要があります。

 

大まかな流れはGamePi20のWikiに書いてあるので、それに従っていきます。

GamePi20 - Waveshare Wiki

必要なもの

これからの作業を実施するにあたり必要なものは下記です。(リンクは参考です、自分の環境では家に合ったテキトーな機材を使っています。)

 (上記はAmazonですが、Banggoodだともっと安いですよ!)

  • mini-HDMI - HDMI ケーブル(またはアダプタとケーブル)
  • USB-OTGアダプタ
iBUFFALO USB(microB to A)変換アダプター ブラック BSMPC11C01BK

iBUFFALO USB(microB to A)変換アダプター ブラック BSMPC11C01BK

  • 発売日: 2011/11/01
  • メディア: エレクトロニクス
 
  • USB接続のキーボード

SDカードへのイメージの書き込み

ここではWindowsを使ってセットアップを行う方法を紹介していきます。

まずは16GB程度のSDカードを用意します。

下記からRaspberry Pi Imagerをダウンロードします。

Raspberry Pi OS – Raspberry Pi

Raspberry Pi Imagerをセットアップしたら、SDカードにRecalboxをインストールします。

f:id:inajob:20201229165806p:plain
OS一覧にRecalboxがあるので、選択して、SDカードへの書き込みボタンを押すだけで、後は勝手にやってくれます。

f:id:inajob:20201229165819p:plain



HDMIの出力を一番安心なものにする

このSDカードをGamePi20に挿入して起動!と行きたいところなのですが、HDMIの出力設定を変更しておきます。

もしかしたらこの手順無しでもうまく動くかもしれませんが、モニタとの相性などでうまく映らないことがあるので、設定することを勧めます。

 

前節で書き込んだSDカードをPCに挿入すると/bootの内容にアクセスすることが出来るので、そこに存在するconfig.txtを編集し

hdmi_safe=1

という行を有効にします(もともとコメントアウトされているはずです)

これで一番コンサバな設定でHDMI信号が出力されるようになります。

SDカードを挿入

GamePi20のねじを外して、分解します。

f:id:inajob:20201229165917p:plain

メイン基板からピンヘッダで接続されているRaspberry Pi Zeroを分離します。この際、基板を傷つけないように気を付けてください。(結構外しづらいです。)

f:id:inajob:20201229165939p:plain

分離したRaspberry Pi Zeroに元々挿入されているSDカードを抜いて、先ほどセットアップしたSDカードに差し換え、GamePi20を再び組み立てます。

 

(ここで横着して、ケースに入れず続きの作業を行うのは推奨しません。基板が金属に触れて故障したり、HDMI端子やUSB端子に斜めに力がはいって「もげる」こともあります)

初回ブート

初回ブート前に、必要な配線を行います。

初期ブート時は内蔵の液晶モニタや、キーパッドが利用できないので、下記のようにモニタとキーボードを接続します。

  • HDMIケーブル(HDMI Mini - HDMI)でモニタと接続
  • USB-OTGアダプタ経由でキーボードを接続

電源を入れるとHDMIケーブルで接続されたモニタにスプラッシュ画面が表示されます。電源を入れてからしばらく(2分くらい?)時間がかかるので気長に待ってください。その後ローディング画面でまた3分ほど待ちます。

 

WiFiの設定

次にWiFiの設定を行います。これにより以降、sshで接続したり、Samba経由でファイルを編集したりできるようになります。

 

まずEnterキーでメニューを表示します。上下キーで「NETWORK SETTINGS」を選択し「A」キーで決定します。

次に「ENABLE WIFI」で「A」キーを押します。「Connecting to WIFI...」と表示されるのでしばらく待ちます。

そして「WIFI SSID」で接続したいAPを選択して「A」キーで決定します。

最後に「WIFI KEY」で接続パスワードを入力します。(ここはキーボードでパスワードを入力します。

 

接続ができると「IP ADDRESS」の欄にIPアドレスが表示されるので、内容を控えておいてください。

SSH接続して続きの設定を行う

下記のようにしてログインします。ユーザ名は"root"、パスワードは"recalboxroot"です。

$ ssh root@192.168.X.X  # 上記で確認したIPアドレス

Recalboxではシステムファイルは編集できないようにReadOnlyでマウントされているため、編集できるようにマウントしなおします。

# mount -o remount, rw /boot
# mount -o remount, rw /

/etc/modules.conf にフレームバッファ関係のカーネルモジュールの設定を追記します。

# vim /etc/modules.conf

以下の内容を追記します(もともと書かれている内容はそのままにしておいてください)

flexfb
fbtft_device

次にSPIを有効にするために/boot/config.txtを編集します。

# vim /boot/config.txt

以下の内容を追記します(もともと書かれている内容はそのままにしておいてください)

 dtparam=spi=on

続いて、/etc/modprobe.d/fbtft.confというファイルを作成し、液晶画面の初期化方法などの設定を行います。

# vim /etc/modprobe.d/fbtft.conf

内容は下記です。(この部分、公式Wikiの値が間違っています。下記が正しいです。)

options fbtft_device name=flexfb gpios=reset:27,dc:25,cs:8,led:24 speed=96000000 bgr=1 fps=60 custom=1 height=240 width=320
options flexfb setaddrwin=0 width=320 height=240 init=-1,0x11,-2,120,-1,0x36,0xA0,-1,0x3A,0x05,-1,0x21,-1,0x2A,0x00,0x01,0x00,0x3F,-1,0x2B,0x00,0x00,0x00,0xEF,-1,0xB2,0x0C,0x0C,0x00,0x33,0x33,-1,0xB7,0x35,-1,0xBB,0x1F,-1,0xC0,0x2C,-1,0xC2,0x01,-1,0xC3,0x12,-1,0xC4,0x20,-1,0xC6,0x0F,-1,0xD0,0xA4,0xA1,-1,0xE0,0xD0,0x08,0x11,0x08,0x0C,0x15,0x39,0x33,0x50,0x36,0x13,0x14,0x29,0x2D,-1,0xE1,0xD0,0x08,0x10,0x08,0x06,0x06,0x39,0x44,0x51,0x0B,0x16,0x14,0x2F,0x31,-1,0x29,-3

ここまで出来たらリブートします。

# reboot

しばらく待って、再びSSHで接続します。

/dev/fb1が存在することを確認します。

# ls /dev/fb*
/dev/fb0  /dev/fb1

このfb1が内蔵液晶用のフレームバッファです。(fb0はHDMI接続されたモニタのためのフレームバッファです)

 

再び設定ファイルを編集するので、マウントしなおします。

# mount -o remount, rw /boot
# mount -o remount, rw /

/etc/init.d/rcSに下記を追記します。

fbcp &

このfbcpというツールはfb0の内容をfb1にコピーするというもので、これにより次回に起動したときは、内蔵液晶モニタにもHDMI接続されたモニタと同じものが表示されるようになります。(Recalboxにもfbcpの設定があるようなのですが、正しく設定する方法がわからず、ここでは強引にブート時にfbcpが起動するように設定しています。)

 

次にrecalbox.confを編集します。

# vim recalbox.conf

ディスプレイの設定を下記のように設定します。(該当部分の設定を下記のように変更します。ほかの部分はそのままにしておいてください。)

global.videomode=default
global.ratio=4/3

次にコントローラの設定を行います。

GamePi20はコントローラの各ボタンがRaspberr Pi ZeroのGPIOに接続されているので、そのピンを列挙する形で設定します。

controllers.gpio.enabled=1
# controllers.gpio.args=map=1,2  # この行はこのようにコメントアウトする
controllers.gpio.args=map=5 gpio=12,20,21,13,26,16,23,4,6,17,22,5,16

最後にconfig.txtでtftディスプレイとスピーカの設定を行います

# vi /boot/config.txt

下記を追記します。

hdmi_force_hotplug=1
hdmi_cvt=640 480 60 1 0 0 0
hdmi_group=2
hdmi_mode=1
hdmi_mode=87
dtoverlay=pwm

ここまで設定出来たら、再びrebootします。

# reboot

BGMがスピーカーから鳴り、液晶とキーパッドが正しく動くことを確認します。

 

ここまでで普通にRecalboxが動くようになりました。HDMIを抜いても普通に遊ぶことができます。

f:id:inajob:20201229163543p:plain

プラスアルファの設定 - ゲーム一覧の文字サイズを大きくする

ここまでの状態だと、ゲーム一覧の文字が小さすぎて、液晶だと読めないです。

# mount -o remount, rw /
# vim /etc/emulationstation/themes/recalbox-next/theme.xml

設定のうちの下記部分のfontSizeを0.05に変更します。

 <textlist name="gamelist">
<fontPath>./data/arts/Exo2-BoldCondensed.otf</fontPath>
<fontSize>0.025</fontSize>
<forceUppercase>1</forceUppercase>
</textlist>

 プラスアルファの設定 - 不要なサービスを停止する

Recalboxのデフォルトで起動している仮想ゲームパッドと、Web経由での設定変更をするためのマネージャは利用しないので停止しておきます。

# vim recalbox.conf
system.virtual-gamepads.enabled=0
system.manager.enabled=0

ゲームを転送する

ゲームを転送するためには、Samba経由でアクセスするのが簡単です。

Windowsの場合はエクスプローラに、「\\192.168.X.Y\share\roms\」と入力することで、GamePi20のファイルにアクセスすることが出来ます。

TIC-80のゲームの場合は拡張子がticのファイルを入れればOKです。

 

転送後は STARTボタンメニューの「UPDATE GAMELISTS」を実行しないとゲームが表示されないので注意が必要です。

 

ゲーム中にRecalboxのメニューに戻る

HotKey + START を押すことで、Recalboxのメニューに戻ります。

このHotKeyはここまでの設定で「SELECT」ボタンに割り当ててあります。

他にもこのHotKeyを使うことでスクリーンショットを撮ったりもできますので、説明書で確認してください。

 

During the game - Documentation

 

TIC-80のゲーム

TIC-80 tiny computer から選び放題です。ブラウザでも遊べますが、各ページの「download cartridge」からticファイルをダウンロードすることができ、これをGamePi20に転送することで、GamePi20でも遊ぶことが出来ます。

ただし、TIC-80のゲームの中にはCPUパワー要求するものもあるため、GamePi20では処理落ちしてしまうものも多いです。

 

手元でちょっと調べた中だと、下記の「STELE」などはGamePi20でもキビキビ動いていい感じでした。

tic80.com

まとめと宣伝

ということで、GamePi20に最新のRecalboxをインストールして、TIC-80のゲームが遊べるようになりました!

 

GamePi20は本来レトロゲームエミュレータを遊ぶためのガジェットとして作られたものですが、仮想ゲーム端末である「TIC-80の物理端末」としても活用法も面白いと感じました。

 

GamePi20は汎用Linuxマシンなので、TIC-80はもちろんですが、Webサーバやファイルサーバ、プレゼンテーションなど様々なソフトウェアを持ち歩くことが出来ます。

ポケットからさっと取り出したマシンから直接プレゼンテーションをするなどは、なかなか面白い使い方だと感じます。

 

皆さんもこのGamePi20の使い道を考えてみてはどうでしょう?

 

そんなGamePi20ですが、Banggoodで購入する方にはクーポンがあるので、ぜひ下記ページを参照してクーポンコードをゲットして購入してください。

クーポンの有効期限は2021/01/31までなので、欲しいと思ったら即ポチることをお勧めします!

 

inajob.github.io

 

2020まとめ

f:id:inajob:20201224160808p:plain

ピックアップニュース

子育ての1年

なんといっても、これ!

4月に娘が生まれ、そこからずっと育児休業を取得した2020年でした。

その期間は大体9か月! 来年1月からは復職予定です。

とにかくわからないことだらけで、エンジニア業務以上に調べ、実践し、という事の繰り返しで育児を行っています。

子育てについてのブログ記事もたくさん書きました。

小粒サービスづくりの1年

子育ての空き時間に自分の趣味の作業を行う生活スタイルとなったため、自然と細かい成果の多い1年となりました。

具体的には・・

などを作りました

製品レビューの1年

今年は、このブログやもう一つの inajobがいろいろ紹介するサイトです – inajobのいろいろレビュー を見てくださる方も増えてきたようで、製品のレビューをさせていただくという経験ができました。

自分が面白いと思う情報を発信することで、自分が好きそうなガジェットのレビューを依頼されるというのは非常に良いサイクルで、今後もこういう機会があれば積極的に引き受けていきたいです。

ステータス

  • 引っ越してから4年目
  • 会社に入ってから11年目(来年で12年目)
  • 結婚してから4年ちょっと
  • New! 娘が生まれて0年目

今年学んだスキル

  • 育児全般
  • PCBAの発注
  • CNCルーターによるアクリルカット
  • CNCルーターによる基板作成
  • React.jsによるWebアプリケーション作成(ScrapboxWiki
  • ホットエアーガンによる自宅リフロー
  • FreeCADによるモデリング
  • ESP32でduktape(JavaScript
  • ESP32でAssemblyScript
  • Google Homeでアプリ作成
  • elecrowにレーザーカッター発注
  • ディアウォールをDIY
  • leafletによる地図系Webサービスの作成
  • WioTerminalちょっと触った

今年買ったもの

所感

子供が生まれるという事で生活スタイルが一変した1年でした。育休をがっつりとらせてもらったおかげで、比較的余裕をもって育児をできた、、はずですが、自分たちとしてはいっぱいいっぱいという感じでした。子育てをしている皆さんはすごいのだなと改めて感じました。

 

とはいえ、隙間時間は結構あったので、自分の趣味やスキルアップに関しても取り組むことが出来、多くの学びがあった1年でもありました。これもひとえに、育休が取得できたことや、妻の助けがあったおかげです。

 

来年はしょっぱな1月からの復職となり、4月には(うまくいけば)娘を保育園に入園させたりと、想像するだけでもイベント盛りだくさんの大忙しの1年になりそうです。

肩の力を抜いて日々を楽しみながら過ごしていければと考えています。

 

月別振り返り

この記事を書くために今年の月ごとに活動した内容をピックアップしました。いやーいろいろ手を付けましたね・・

1月

inajob.hatenablog.jp

inajob.hatenablog.jp

  • 魔法陣エンジンでArduinoのピンアウトを描く → arduino-nano
  • 家族クレジットカードデビュー
  • 去年バズったTweetについてテレビの取材を受ける

2月

inajob.hatenablog.jp

inajob.hatenablog.jp

 

 

 

 

 箱根旅行に行った

 

3月

 

inajob.hatenablog.jp

HACHIBARを販売

 

4月

 ドットマトリクスLED駆動IC HT1632を買った

 ドットマトリクスLED駆動IC HT1632を買った

 ホットエアーガンを購入

 

 はじめてのLCSC

 

 

 

inajob.hatenablog.jp

 

5月

inajob.hatenablog.jp

inajob.hatenablog.jp

inajob.hatenablog.jp

 

 

 

  •  ロケットモバイルに移行

 

6月

 

 RakuChord音源変更実験

 

 

 o-bako duktape対応

 AssemblyScript組み込み実験

 ESP32でAssemblyScript実験

github.com

inajob.hatenablog.jp

7月

 

 

inajob.hatenablog.jp

inajob.hatenablog.jp

8月

 

 

inajob.hatenablog.jp

inajob.hatenablog.jp

 

 

9月

 

 

inajob.hatenablog.jp

inajob.hatenablog.jp

 

 

 

10月

  • 食洗器購入

 

 

inajob.hatenablog.jp

 

 

11月

 

inajob.hatenablog.jp

inajob.hatenablog.jp

  •  無線でディスプレイを転送する技術を調べる

 

inajob.hatenablog.jp

inajob.hatenablog.jp

 

12月

HACHIBARで緑LED実験

 

ATMega328PBにハマる

 

inajob.hatenablog.jp

参考

 

ステイホーム・子育てだからこそ、5000円で始められるWiiFitのススメ

ステイホームが叫ばれて、ずいぶん経ちますが、皆さんは最近「運動」できてますか?

 

自分はここ1年間はWiiFitで運動しています。

いまさら? と思う方も多いでしょうが、WiiFit いいですよ!

 

お値段 

この記事でおススメするのはWiiFit Plus」です。Plus無印WiiFit」の上位互換で、ミニゲームが増えたり、後述する「赤ちゃん測定」の機能が付いたりしています。

 

今なら中古で・・・ 2000円以下

Wiiフィット プラス (バランスWiiボードセット) (シロ)

Wiiフィット プラス (バランスWiiボードセット) (シロ)

  • 発売日: 2009/10/01
  • メディア: Video Game
 

 Wii本体を持っていない? 大丈夫。今なら中古で 2000円以下でそろえることが出来ます。

 Wiiをつなげるディスプレイが PCのディスプレイしかない?

これを使えばWiiの画面出力をHDMIに変換出来ます。

 

全部そろえても5000円くらいです!

5000円で運動習慣を買うことが出来るのです!お買い得ですね!

 

良い所1:毎日運動を促す仕組みがある

f:id:inajob:20201221132334p:plain

運動した日はカレンダーにスタンプを押すことが出来ます。このように表示されると、毎日続けるモチベーションになります。

f:id:inajob:20201221132509p:plain

また、季節に応じてちょっとした演出が発生する日もあり、毎日の退屈なルーチンが少し楽しくなります。

良い所2:赤ちゃんの体重も記録できる

出来心で0歳の娘を登録しようと操作してみると、、なんと赤ちゃんとして認識されました。(これはWiiFit Plusで追加された新機能のようです)

f:id:inajob:20201221175228p:plain



f:id:inajob:20201221132843p:plain

赤ちゃん測定では、抱っこしてWiiFitに乗ることで、差分を計算して体重を記録してくれます。

 

ちょっと誤差が大きい日もありますが、大まかな傾向を見ることが出来れば良いので、十分です。毎日記録していると下の画像のような感じで赤ちゃんの体重を記録でき、その推移を確認することが出来ます。

f:id:inajob:20201221132929p:plain

良い所3:赤ちゃんの前で運動するとウケる

私は毎日夕方にWiiFit「腕立て伏せと横バランス」をやっているのですが、これをバウンサーに座っている娘の前でやると、目が合うたびにキャッキャと笑ってくれます。

f:id:inajob:20201221173627p:plain

一人で黙々と運動するのも疲れてくるので、ここは娘からパワーをもらうという裏技を使って運動を継続しています。

 

まとめ

運動習慣をなんとか定着させたいと思い買ったWiiFitですが、意外と赤ちゃんを子育てしているシチュエーションで活用できるという事がわかりました。

 

これを読んでいる運動不足の皆さん! WiiFit いかがですか?

Wiiフィット プラス (バランスWiiボードセット) (シロ)

Wiiフィット プラス (バランスWiiボードセット) (シロ)

  • 発売日: 2009/10/01
  • メディア: Video Game
 

 WiiFitはちょっと・・という方は?

ダンスダンスレボリューションはどうでしょう?

(個人的には楽しくて好きなのですが、運動になるか、と言われるとちょっと・・ということで最近はWiiFitばかりやっています)

inajob.hatenablog.jp

RakuChord v1.4の開発の記録

RakuChordの開発スタイル

本編のまえに、RakuChordの計画について少し紹介します。

RakuChordは僕が、「楽に演奏できる楽器」というコンセプトで10年ほど作り続けている電子楽器です。

販売は 2018年 にMakerFaireTokyo、通販は2019年に2回、そして今回です。

f:id:inajob:20201115101426p:plain

意外と長いRakuChord開発の歴史

RakuChordはすでに十分に"演奏できる楽器"にはなっているものの、細かい改良点がまだたくさんある状態です。

基板の発注は最低単位があり、1つだけ、というわけにもいかないため、せっかく作った基板だし、ということでキットとして販売をしているというのが実情です。

RakuChordを買っていただくことで、僕が次のさらに進化したRakuChordや、ほかの何かを作り始めることが出来ます。

またRakuChordを他の人に見せびらかしていただくことで、さらに多くの方が、RakuChordに興味を持ってもらうことができ、このサイクルを回しやすくなります。

 

作りかけを売るってこと? と思われるかもしれませんが、RakuChordの開発はライフワークなので、あきらめない限り無限に改良できます。その時その時でベストを尽くしていますので、手を抜いているわけではないことをご承知おきください。

「同人ハードウェア方式」

RakuChordのような開発スタイルを勝手に「同人ハードウェア方式」と名付けてみました。

自分のような、趣味でものづくりを行っている人にとって、ある程度大規模に製品を作る手段として有名なものとして、クラウドファンディングがあります。

よくRakuChordもクラウドファンディングしないのか?と聞かれることがあるのですが、「その必要がない」と返答しています。

 

クラウドファンディングが必要な状況とは何でしょう?

  • なるべく多くの人に製品を使ってもらいたい
  • 目的とする品質を実現するためには量産が不可避
  • 量産のための頭金が必要

といった状況ではクラウドファンディングが有効なのではと考えます。

 

しかしRakuChordについて考えると、、

  • 興味のある人に製品を使ってもらいたい
  • 現状3Dプリンタ、レーザーカッター、中国の基板業者を使うことで、1イテレーション10個単位で生産可能
  • 量産ではないので頭金は不要

という感じで、あえてクラウドファンディングを行う必要性が無いのです。

 

しかし、10個単位で生産ができるとしても、イテレーションを回すにはそこそこのお金がかかります。まぁ趣味の開発なのでそこは自分のお小遣いで・・ということもで切るのですが、作るたびに赤字を垂れ流すというのもテンションが下がります。

 

MakerFaireTokyoなどでRakuChordを展示していると「自分も欲しい!」という奇特な方が存在することもわかりました。

 

そこでRakuChordは「同人ハードウェア方式」を採用して、持続可能な開発を進めることにしました。

 

この方式は、下図の企画、検証以降の「試作」フェーズで採用することが出来ます。

要は、実際に動作するプロトタイプを有料で販売し、それを基に試作フェーズを持続的に回す、という方式です。

f:id:inajob:20201115085544p:plain

今後のRakuChordが、どうなるかは、まだ僕もわかりません。

試作フェーズを数回回して、ある程度満足するものが出来たら、量産に挑戦するかもしれませんし、そのためにもう少しバッチサイズを大きくして試作フェーズを回す、ということもあるかもしれません。

 

まぁ、ともかく現在のRakuChordの開発は、試作段階のプロタイプを買っていただける奇特な方の存在により実現できているという状態なのです。

 

ここまでの販売で、RakuChordを購入いただいた方、宣伝いただいた方には、大変感謝しています。

 

まぁ、そういった方式で進めていることもあり、今回のRakuChord v1.4では、どのような改良をしたのか?ということを、公開することはとても重要なことなのです。

応援いただいている皆様に、RakuChordがどのように進化しているか、僕がどのように試行錯誤しているか?を紹介することで、このサイクルに皆さんを巻き込んでいきたいと考えているからです。

 

過去のRakuChordの記事紹介

この記事ではRakuChord v1.4 の開発の記録について紹介します。

それ以前のRakuChordの開発記録については、下記リンクを参照してください。

inajob.hatenablog.jp

inajob.hatenablog.jp

inajob.hatenablog.jp

inajob.hatenablog.jp

基板設計見直し

RakuChord v1.4では、基板の設計を見直しています。

変更点はイヤホン端子の出力を、アンプの後段にしたことです。

今までイヤホン端子からの出力は、マイコンからの信号をCRフィルタしたものがそのまま出力されていました。そのため、イヤホンで聞くなどは問題が無かったのですが、外部のスピーカなどにつないだ際には、ほかの機器に比べてオーディオのレベルが低くなってしまっていました。

 

そこで、今回はイヤホン端子の出力もアンプの後段に持ってくることで、この問題を解消しました。

f:id:inajob:20201115101803p:plain

イヤホン端子をアンプの後段にした

しかし、この変更をすると、イヤホン使用時に音量が大きすぎるという問題が発生しました、そこで、音量調節用のボリュームも実装することにしました。

このボリュームはスピーカー出力の際も有効なので、静かな部屋で演奏するときにはボリュームを下げるといった操作ができるようになりました。

f:id:inajob:20201115105828p:plain

新設したボリュームです!

 

もう一つの変更点は「拡張端子」です。RakuChordは、Arduinoベースの楽器試作環境としても、利用することを想定しているので、拡張端子は必須です。

v1.3 までは、Arduino Nanoのピンをそのまま内側に伸ばして拡張端子、としていましたが、この端子が、使いにくい、、、ということで設計しなおすことにしました。

f:id:inajob:20201115102052p:plain

新しい拡張端子

拡張端子は、RakuChordで使用していないArduinoGPIOと、電源、シリアル、I2C、そしてアンプの入力、アンプの出力、を引き出しました。

 

これにより、例えば下記のような拡張ボードが作れます。

  • シリアル、またはI2Cで接続できる外部音源
  • 内蔵スピーカ以外のスピーカの搭載
  • 内蔵アンプ以外のアンプの搭載
  • I2Cやアナログ入力による入力インターフェース追加
  • フルカラーLEDなど演奏に応じて光るような飾りの追加
  • 外部機器とのテンポ同期信号のやり取り

まぁ、想定しているだけで、どれもまだ存在していませんが・・

筐体設計見直し

筐体設計も大きく見直しました。というかモデリングツールをOpenSCADからFreeCADに移行しました。

ツールを変更したのは「フィレットがやりにくい」という理由からです。

OpenSCADはプログラミングで3D図形を設計するという一風変わった3DCADです。Gitで差分管理をしてもわかりやすいということで、ここまで使用してきたのですが、仕上げの部分で、使いづらさが出てきました。

 

1.3までのRakuChordの筐体の底面の角は「角ばって」いました。これはOpenSCADでそのまま底面を引き延ばして、3D図形を作っていたためです。

f:id:inajob:20201115102809p:plain

底面の角がすごく角ばっている

この底面の角を丸くする、いわゆる「フィレット」を付けたいな、と思ったのですが、OpenSCADにはそれを実現する直感的な方法がありませんでした。

もちろん工夫してモデリングすれば期待する立体を得る方法はあるのですが、そのためにいろいろとパズル的に設計するのは、どうも遠回りな気がしてきました。

 

ということでFreeCADです。FreeCADはGUIの3DCADで、辺を選択しフィレットを付けることが出来ます。

 

ちょっと癖のあるソフトなので、使いこなすのに苦労しましたが、なんとか、今までのRakuChordの筐体と同程度の物にフィレットを付けたものを作ることが出来ました。

f:id:inajob:20201115102408p:plain

FreeCADでフィレットが簡単につけられました

製造・発注

設計が終わったら次は製造です。

基板はいつも通りFusion PCBに発注しました。筐体本体は引き続き我が家の3Dプリンタで作成しました。

www.fusionpcb.jp

筐体のフロントパネル・スペーサーについては、今までは、フロントパネルは最寄りの工作室でレーザーカット、スペーサーは我が家の3Dプリンタで作成していたのですが、今回はelecrowにレーザーカットを発注してみました。

www.elecrow.com

我が家の3Dプリンタで作っても良かったのですが、なるべく外注で作れるようにしていこうと考え、レーザーカットの発注にしました。

f:id:inajob:20201115110740p:plain

良い感じに加工してくれました!

バグとその対策

さて、実装が完了し、手元にはRakuChord v1.4 のキットの材料がそろいました。

1台を組み立てつつ、マニュアルを作成します。

 

大体ここで、バグを発見するのですが・・今回もいくつか致命的なバグをやらかしました。

 

ボリュームとイヤホン端子の干渉

まず、組み立てていて気付いたのは、ボリュームとイヤホン端子が干渉してしまい、組付けられない!という致命的なミスです。

ボリュームは新しくつけたものなので、この周りでミスが起きるのはある程度想定していましたが、、これは・・何とも恥ずかしいミスです。

f:id:inajob:20201129131743p:plain

ここであきらめて、基板を捨てても良かったのですが、リカバリ方法を考えてみました。

 

まさかのボリュームの逆挿しです。配線が対称なボリュームであればこの技が使えます。(この時は対称だと思っていた・・・次項へ続く・・)

f:id:inajob:20201115103155p:plain

必殺!裏面挿し!

ボリュームを逆刺ししたことで、今度はスピーカーとボリュームが干渉するようになりましたが、筐体の隙間を少し開けることでこちらは比較的簡単に対応することが出来ました。

 

フットプリントに対して、逆向きにボリュームを実装するというワークアラウンドでこの問題は無事回避(したかのように見えました、、)。

ボリュームのフットプリントのミス

いきなりの伏線回収。このボリューム、5つの足があり、2連のボリュームを1つだけ使うような設計にしていたのですが、その5つの足の役割を間違えていました・・

おかげで、完璧とも思えた前述の「ボリュームの逆刺し」案も配線が意図しないものとなり、実現が難しいこととなりました・・

 

しかし!!まだあきらめません。このボリューム、2連のうち1連しか使用していないので、使っていないボリュームの足と配線をショートさせても特に問題はありません。

 

ということで、間違った配線のボリュームのピンを隣の正しい配線のピンとはんだボールを使いショートさせることで、意図した配線を実現しました。

f:id:inajob:20201115103411p:plain

必殺!はんだボール!

これでボリューム周りのミスは無事回避出来ました!

(結果組み立て手順が難しくなっていきました・・)

電解コンデンサの配線間違い

これは、完全に配線の設計ミスです。イヤホン端子付近にあった電解コンデンサを、そのままにしていたのですが、イヤホン端子がアンプの後段に移動したおかげで、その電解コンデンサが、回路上意図しない位置に実装されてしまっていました。

 

これはもう、どうしようもない・・ と思いましたが、、

f:id:inajob:20201115103634p:plain

必殺!リワーク!

必殺リワーク!を使い、 基板上の配線をアクリルカッターで1本カットし、組み立て時に余った配線で、電解コンデンサの足を正しい端子につなげる、という手順とすることで、回避しました。

(結果、また組み立て手順が難しくなってしまいました・・)

マニュアルの写真ミス

これは、販売当時は気づいていなかったのですが、組み立てマニュアルの写真に2か所も間違いがありました。

これは、実際の組み立て時、上記のミスを修正したり、試行錯誤している中で撮った写真と取り違えてしまっていたのが原因の1つでした。

OLEDの裏面にゴムを貼る

これは、ミスではなく、未然にミスを防ぐ仕組みです。

OLEDを実装するとき、その裏面には配線が存在しており、OLEDを斜めに実装した場合、OLED裏面の金属部分と、裏面の配線が接触することにより、意図せず回路がショートすることが予想されました。

これを防ぐために、v1.3のころからOLEDの裏側に薄いゴム板を貼り付けることにしました。

これにより、組み立て時に発生しそうなミスを1つ減らすことが出来たと考えています。

f:id:inajob:20201115103759p:plain

キット販売では細かい配慮が重要

まとめ

以上のような改良と、それによって発生した様々なバグを乗り越えて、RakuChord v1.4は完成しました。

次回 v1.5 を作る際は、少なくともこれらのバグを修正したものとなりそうです。

 

重ねてのお礼となりますが、ここまでの販売で、RakuChordを購入いただいた方、宣伝いただいた方には、大変感謝しています。皆さんのおかげで、RakuChordの機能が洗練され、さらに多くの方の手にRakuChordを届けることが出来ています。

 

引き続きどうぞよろしくお願いします。

 

宣伝

RakuChord v1.4 まだもうちょっと在庫が残っています。この記事を読んでみて、「面白い試みだな」「遊んでみたいな」と思った方!ぜひ購入してみてください!

 

inajob.booth.pm

WioTerminalが来た!(商品提供によるレビュー記事です)

はじめに

この記事はSeeedからレビュー用の製品をいただき、書いたものです。

 

f:id:inajob:20201110130852p:plain

Seeedは、中国の企業でいわゆるメイカー向けの製品の開発・販売や、製造を行っている会社です。自分はSeeed Fusionという、プリント基板の製造や、部品の実装を行ってくれるサービスをよく利用しています。

inajob.hatenablog.jp

 

思えばこのブログも結構長く書いてきましたが、ついに自分にも「製品レビューの依頼」が来ました!!!

ちょっと感動しつつ、ありがたくレビューさせていただくことにしました。

 

ということで、以下 いわゆる PR記事 になるんですかね、Wio Terminalについてレビューしていきたいと思います。

Wio Terminal 公式での買い方

こちらから買うことが出来ます。

jp.seeedstudio.com

f:id:inajob:20201110130039p:plain

Japan Direct Lineで発送してもらうと、DHLやFedExよりも安い値段で、そこそこ早く届けてくれました。(5-7営業日)

製品外観

良い感じの箱に入ってきます

f:id:inajob:20201110103613p:plain

技適もばっちり

f:id:inajob:20201110103654p:plain

右下の丸いのが方向キー

f:id:inajob:20201110103727p:plain

筐体にも技適マーク付き。スケルトンがカッコいい!のは光センサーがここに入っているから。

f:id:inajob:20201110103823p:plain

説明書にも日本語ページがありました!

f:id:inajob:20201110104205p:plain



新製品!ワクワクしますね!

仕様を見てみる

なんとなく存在は知っていたWio Terminalですが、改めてそのスペックを見てみることにします。

 

まず外見ですが、最近広く見かけるようになった「M5Stack」とよく似ていることに気付きます。M5Stackとの比較記事としては下記が非常に参考になります。

note.com

この記事にも書かれていますが、自分が気になった点は

  • 画面解像度は同じ(サイズはWio Terminalのほうが大きい)
  • 技適付きなのも同じ
  • CPUはARMベースの samd51なのでARMの勉強によさそう(M5Stackは ESP32)
  • 十字キーが搭載されていてうれしい
  • 加速度センサー・マイク・光センサー・IR送信機 など 周辺機器がてんこ盛りなのがうれしい
  • USBホスト・クライアント機能がうれしい
  • バッテリーが非搭載なのは残念(別途バッテリーが販売されているようです)
  • SRAMが少ないのは残念

といったところです。いい所・悪い所 それぞれある感じですね。

Arduinoとして利用してみる

早速ArduinoとしてPCにつないでみます。

f:id:inajob:20201110104011p:plain

緑と青のLEDがかっこいい!

私が普段使用しているのはWindows10搭載のPCです。おそらくこういうデバイスを使う上ではMacよりもWindowsのほうがすんなりいくことが経験上多いです。

 

USBケーブルでPCとWio Terminalをつなげると、期待通り ドライバのインストールが自動的に始まり、インストールされると Wio TerminalのシリアルポートがPCから見えるようになりました。

 

WioTerminalの情報は、公式ページが結構充実しており、これに従っていけば基本的に困ることはなさそうです。

wiki.seeedstudio.com

しかも、日本語版も用意されています。これは初学者にも優しくて良いですね。

(ただし日本語版よりも英語版のほうが内容が充実しているようです。英語に抵抗がない方は英語版を見ながら進めるのがよさそうです。)

 

さて、シリアルポートが見えるようになったので、Arduino IDEから書き込みを試してみます。

M5Stackなどほかのボードの追加と同様に、ボード定義を含むjsonファイルの設定を追加してから、ボードマネージャから「Seeed SAMD Boards」を追加すれば、ボード一覧にWio Terminalが現れます。

f:id:inajob:20201110082819p:plain

まぁ上記ページの通りにやればArduinoとして使い始めることが出来るというわけです。

WioTerminalの2つの書き換え方法

WioTerminalのコアであるSAMD51を書き換える方法はいくつかあるようです。

まず1つはArduino系のファームウェアが書き込まれている状態であれば、前述のようなUSBシリアル経由での書き込みができるようです。

f:id:inajob:20201110083208p:plain

そしてもう一つ「ブートローダーモード」というのがあります。電源ボタンをONの方向からさらに先に押し込むという「リセット」操作を素早く2回行うことによりこの「ブートローダーモード」に入ることが出来ます。

f:id:inajob:20201110083222p:plain

この時PCにはマスストレージデバイスとして認識され、USBメモリのようなドライブが出現します。このドライブにuf2形式のファイルを配置することで、ファームウェアを書き込みするのが後者の方法です。(mbedなどでおなじみの方法ですね)

 

この仕組み故か、ArduinoIDEから書き換えを行うタイミングで、USBのドライブが接続されて、すぐに外されるような挙動をするようです。(ちょっとびっくりしました)

 

Arduinoから最新の方法でWiFiを使う準備

Wio TerminalはWiFiBluetoothの機能も提供していますが、これはメインCPUであるSAMD51とは別に搭載されているRTL8720というCPUにより実現されています。

M5StackはメインCPUであるESP32の内部にWiFiBluetoothの機能が内蔵されているのとは対照的ですね。

 

で、どうもWio Terminalの古い仕組みだとRTL8720とSAMD51の間はATコマンドでやり取りをしたようなのですが、今では新しくeRPCというプロトコルに刷新されているようです。

f:id:inajob:20201110083635p:plain

f:id:inajob:20201110083650p:plain

ということで、RTL8720のファームウェアを書き換えて、上記の新しいやり方であるeRPCを使えるようにバージョンアップするのがよさそうです。

ここで紹介する内容は公式Wikiの下記ページを基にしています。(英語版しかないようです)

wiki.seeedstudio.com

RTL8720はUSBと直接つながっているわけではないので、ちょっと工夫が必要です。

まずSAMD51に「PCから送られてくる情報を基に、RTL8720のファームウェアを書き換えるソフトウェア」を書きこみ、それからUSBシリアル経由でRTL8720用のファームウェアを書き込みます。

バケツリレーのようですね。

f:id:inajob:20201110084231p:plain

公式ページで紹介されているのはブートローダーモードによる書き換え方法なので、それに従います。

提供されているuf2形式のファイル(rtl8720_update_v2.uf2)を、マスストレージデバイスとして認識されたWio TerminalにCopy&Pasteします。

このuf2形式のファイルの実体は、下記のArduinoのスケッチをコンパイルしたもののようです。

github.com

シリアルポートから来たコマンドをRTL8720にそのまま渡すようなプログラムのようです。

ここまで来たらPCからRTL8720の新しいファームウェアを書き込みます。

日本版はファームウェアが別のようなので注意が必要です。

f:id:inajob:20201113071125p:plain

 

GitHub - LynnL4/ambd_flash_tool: Firmware download script for rtl872x のリポジトリを git cloneして書き込みツールを取得する手順が紹介されているのでそれに従います。

 

書き込みツールの実体はPythonで動作するスクリプトのようですが、Windows向けにはexe形式も用意されているので、Pythonの導入は不要でした。

公式ページの指示に従い RTL8720のFlashの消去と、新しいファームウェアへの更新を行います。

$ ./ambd_flash_tool.exe erase
Erasing...
All images are sent successfully!
Image tool closed!

Success!

$ ./ambd_flash_tool.exe flash -d 20201106-seeed-ambd-firmware-rpc-v2.0.1/
copy img to workspace...
Flashing...
All images are sent successfully!
Image tool closed!

Success!

これでハードウェア的には準備が整いました。

 

次はArduinoからこの 新しいファームウェアを利用する準備を行います。

必要なライブラリは公式から提供されているようなので、単にそれらをArduino IDEに取り込むだけです。

ライブラリはArduino公式のライブラリとしては登録されていないので、GitHubからZIP形式でダウンロードし、Arduino IDEに取り込みます。

GitHub - Seeed-Studio/Seeed_Arduino_rpcWiFi: A library of maximum ESP32 WiFi-compatible software.

これはRTL8720のWiFi機能を ESP32の WiFi機能とよく似たインターフェースで利用するためのライブラリです。

GitHub - Seeed-Studio/Seeed_Arduino_rpcUnified: RTL8720DN wireless abstraction layer using the eRPC protocol.

これはeRPCを扱うためのライブラリです。

GitHub - Seeed-Studio/Seeed_Arduino_FreeRTOS: This library gives an example of how to get FreeRTOS running on a SAMD processor. The project can be used as a template to build your projects off of as well.

これはFreeRTOSの実装のようです。 READMEにはSAMD21用と書かれているので、WioTerminalに必要なものかよくわかっていませんが、公式の手順で紹介されているので、一応入れておきます。

 

これらのライブラリはかなり新しいもののようでこれからどんどん改良されていくことが予想されます。rpcWiFiなどはまだバージョンに対応するタグが1つもないなど、開発途上である様子が伺えます。

 

とにかくここまで導入すれば、最新のドキュメントに従ってArduinoからWiFiを利用することができます。

 

公式ドキュメントにあるWiFiのアクセスポイントを列挙するサンプルが動くことを確認しました。

Wi-Fi - Seeed Wiki

使い方はM5StackのWiFiライブラリと同じなので、学ぶことが少なて良いですね。

Platformio(CLI)から書き込んでみる

私はArduinoを扱う時は Platformioを使うことが多いです。

調べるとPlatformioはWio Terminalにも対応しているようなので、試してみました。

Seeeduino Wio Terminal — PlatformIO 5.0.3a2 documentation

[env:seeed_wio_terminal]
platform = atmelsam
framework = arduino
board = seeed_wio_terminal
board_build.mcu = samd51p19a
board_build.f_cpu = 120000000L

こんな感じのplatformio.iniを用意すれば、PlatformioからもArduinoとして書き込むことが出来ました。

これでCLIを使った開発がはかどりそうです。

 

画面に文字を出すだけの簡単な例を作ってみました。Platformioを使った開発の参考にしてみてください。

github.com

f:id:inajob:20201110104131p:plain

感想

ざっとWio Terminalを使って開発を行う手前のところまでの手順を紹介しました。

周辺機器が充実しており、電子工作をしない人でもソフトウェアの書き換えだけでしばらく遊べそうです。

 

ここまで触ってきて、Wio Terminalを買うと幸せになる人の像がぼんやりと見えてきました。

  • SAMD51を使ったオリジナルの「同人ハードウェア」のプロトタイピングを行いたい方
  • M5Stackは気になるけどESP32のアーキテクチャがちょっと・・という方
  • Wio Terminalを製品の一部に組み込むことで、難しい部分の設計を省きたいという方
  • Wio Terminal自体をゲーム機と考え、そこで動くゲーム開発を行いたい方

この記事を読んでいるあなた! これらの項目に当てはまるぞ!という場合はぜひ Wio Terminal を買ってみてください。

 

 この記事では Wio Terminalの本当に導入部分までしか紹介できませんでした。

無線機能の活用やUSBホスト・クライアント、各種センサーの活用、ほかの電子部品との合わせ技、などWio Terminalで試してみたいことはまだまだたくさんあります。

 

またいろいろ遊んでみてから、記事を書いていこうと思います。 

Go To Eat が使えるお店を 地図で見るためのサービス「Go To Eat 埼玉 マップ! 」を作った

これは何?

今話題のGo To Eatですが、その利用可能店舗を知るためには、利用可能店舗一覧ページを見るしかなく、それぞれに住所は書いてあるものの、地図上で確認することが出来ませんでした。

 

そこで、上記の情報を基に埼玉県のGo To Eat対象店舗を地図上で見ることが出来るWebサービス 「Go To Eat 埼玉マップ!」を作りました。

 

※ここで扱うのは埼玉県のGo To Eatの食事券が使える店舗です。これ以外に予約サイトのポイントがたまるというのもGo To Eatの施策がありますが、そちらに対応している店舗はもっとあるはずです。

f:id:inajob:20201109134633p:plain

 

 

類似サービス

同じような課題を感じている方は他にもいて、下記のような類似サービスが開発されているようです。

正直なところ、私が作ったものより、これらのサービスのほうが使い勝手が良いと感じます。また埼玉県以外もサポートしているようです。

まぁすでに自分も作ってしまったし、同じようなサービスが切磋琢磨したほうが良いものができると思うので、皆さんそれぞれのサイトを使ってみてください。

 

go-to-eat-map.com

gotoeatmap.net

自由な地図API

地図系のサービスを作るということであれば Google MapsYahoo! 地図が真っ先に思い浮かぶのですが、Google Mapsは有料化され、Yahoo! 地図のAPIは廃止されています。

map.yahoo.co.jp

 

(後で良く良く調べると、Google Mapsは条件によっては無料で使えるらしく、今回の用途であればマイマップを使うのが良かったかもしれません。類似サービスの中には枚マップを使ったものもありました。)

qiita.com

まぁ、ともあれ、地図系のWebサービスを作るときに他社のご機嫌をうかがいながら開発するのも気持ちの良いものではありません。

 

ということで、今回はLeafletと国土地理院の地図を使ってみることにしました。

 

leafletjs.com

Leafletというのは ブラウザ上で地図を表示するためのオープンソースJavaScriptライブラリです。OpenStreetMapのタイルサーバを参照することで、世界中の地図を表示することが出来ます。

また地図のドラッグアンドドロップや、地図上にマーカーを描画するなど、いわゆるYahoo! 地図やGoogle Mapsのような使い勝手を、非常に少ないコーディングで実現することが出来ます。

 

Leafletについては下記サイトが非常に参考になりました。

ops.jig-saw.com

 

日本の政府機関である国土地理院は、OpenStreetMap互換のタイルサーバを提供しています。

maps.gsi.go.jp

利用のガイドラインも非常に緩く、今回の用途でも問題なく利用できそうでした。

地理院タイルをウェブサイトやソフトウェア、アプリケーション上でリアルタイムに読み込んで利用する場合、地理院タイルは出典の明示のみで申請不要でご利用いただけます。

本当はOpenStreetMapの本家のタイルサーバを利用したかったのですが、これは不特定多数が利用するWebサービスから参照することは、規約上NGのようだったので、使用を見送りました。

wiki.openstreetmap.org

住所文字列から緯度経度への変換

Go To Eatの対象店舗情報は、各自治体ごとに公表されています。

埼玉県の場合は下記サイトにHTMLで一覧が記載されています。

saitama-goto-eat.com

ここには店の名前、電話番号、住所などが記載されていますが、地図上に表示する際に必要な「緯度・経度」が記載されていません。

 

ということで「住所文字列から緯度・経度を求める」必要があります。

 

幸いなことにYahoo! JAPANが提供しているAPIに良いものがありました。

developer.yahoo.co.jp

ということで材料はそろいました。

埼玉県のGo To Eat対象店舗一覧のHTMLをスクレイピングして、店舗の情報を取得し、YOLPのジオコーダAPIをつかい、それらの緯度・経度を求めます。

 

最後にこれらの情報をLeafletを使って国土地理院のタイルの上に描画すれば完成です。

 

マーカーが多すぎる問題の回避

Leafletを使って、マーカーを大量に配置すると、ブラウザが固まってしまうほど動作が遅くなってしまいました。

これはLeafletあるある、な問題のようで、今回はMarkerではなくCircleMarkerという別の仕組みを使って地点を描画することで、この問題を回避しました。

f:id:inajob:20201109142415p:plain

MakerはDOMを生成するため大量に登録するとブラウザが重くなるようです、しかしCircleMarkerの場合はCanvasに図形を描画するため、ブラウザはそこまで重くならないようです。

 

下記のStackoverflowが参考になりました。

stackoverflow.com

埼玉県への要望

できれば、Go To Eat対象店舗の情報をCSVのようなコンピュータで扱いやすい形式で公開してほしいです。

ちょうど埼玉県のオープンデータのポータルがあるようなので、ここで公開するのが良いのでは?と考えています。

https://opendata.pref.saitama.lg.jp/

(すでに上記サイトから要望は送ってみました)

最後に

まぁこんな感じで無事「Go To Eat 埼玉マップ!」が完成しました。

MITライセンスでソースコードもオープンにしているので、似たようなものを作りたい人は参考にしてみてください。

また、修正点・改善点のPullRequestもお待ちしています。

 

github.com