おととい届いて動作確認できてなかった名刺型基板MeishinoCH552、R1とR2の値を間違って指定していた(正しくは5.1kのところを1kを指定していた)。手動で載せ替えて動作OK。BOMをふくめてGitHubを更新。これで今日の基板設計体験イベントにまにあった。スライドはこれ。
今日の気付き。Groveコネクタは、K型コテ先で一発ではずせる。めちゃ便利。
このまえコレクションしてたTaoBaoで売ってるSTM32互換チップ、一番謎だった”メーカー名なし"(刻印はSTM32)の2つ、中のチップが違ってた(左の2つ)。右端のはSZLCSCで買ったSTM32F030だから本物(のはず)で、チップサイズを見る限り”無印”も本物と同じっぽい。顕微鏡で詳しく見てみよう。この無印チップ、もうあと何個か買って比べてみるか。
と、改めてそのチップを買ったTaoBaoのショップを見てみたら、選択肢に「新品」と「テストOK品」というのがあって、後者のほうが1元安い。香ばしすぎる。とりあえず5個買った。中身は何種類あるんだろう。
M5Stack新製品の案をもう1つ。NT金沢をいっしょにやってる電飾職人(?)の五味さんから、NeoPixelをたくさん使うと電源容量がたりないので、外から給電だけするGrove中継機がほしいなだよね、という話を聞いて、たしかに、と思って。ほかにも振動モータとかは本体からだと電源容量が足りないことがたまにあるので、そいうのにも使える。いろいろ探した結果、既存の製品のうち"1-to-3 Hub UNIT"のケースを流用するのが良さそう、との結論にたっした。これの手前のところに、GroveコネクタではなくてUSB Type-Cコネクタを置き、そこから下流へ給電する。制御信号だけ、上流から下流へ。下流が2個になるから分岐もできる。 早速Jimmyを交えたWeChatグループチャットで相談。USB Type-Cよりも、VH3.96とか2.1mmDCとかのほうが使いやすいんじゃ?ということを言われたんだけど、電飾だとモバイルバッテリが使えるのがとても便利で、かつDC2.1mmだと間違えて12Vとかの高い電圧を加えて壊しかねないので(DC/DCを入れるという方法もあると言われたけど)、Type-Cが以下にMakerにとって使いやすいか、ということを説明して、納得してもらえた。というわけで"1-to-3 Hub UNIT"の基板データをもらって設計をはじめる。
広州の東の方で、自動運転のタクシー・バスが乗れるというので、いってきた。
アプリをいれると、地図で「乗る場所」と「降りる場所」を選択肢から選んで、「呼ぶ」ボタン。
すると近くにいる自動運転タクシーがこっちへ発車。しばらくすると自動運転タクシーがやってくる。
車の屋根にはこんな感じでLiDARやカメラがついているけど、そんなに数は多くない。
走り始めるとこんなかんじ。運転手さんは乗っているけど手はハンドルから離している。座席前のモニタに、周りの認識状況が表示されていて、クルマは直方体のオブジェクトとして、それ以外の歩行者や自転車、木などは点群のまま。
途中は、それなりに交通量もあって、中国特有の電動バイクがチョロチョロ走っている、まあ自動運転にとってはやりにくい環境なんだけど、そんなに危なっかしく感じることもなく、60km/hくらいで走っている。すごいな。途中、右車線の車が割り込みかけてきたという場面もあったんだけど、少し左によけつつ、少し加速して前に出る、というのも自動でやっていた。
料金は普通のタクシーぐらいだった。現状だと乗っているだけの運転手さんの人件費がかかるし、地図データ作成などにそれなりにお金も手間もかかるから、ビジネスとしてどうなるのかはよくわからないけど、未来を感じる。
ついたら、アプリで支払い。
同じく、少し離れた地区で走っている自動運転バスも乗ってみた。
こちらはテスト中ということで無料。こちらは人も少なめの地区で、定まったルートを走ることもあって、危なっかしさを感じることもなかった。
前後の四隅にカメラとLiDARがついている。前方は斜め下向きのLiDARもついていた。
今日、JETROの方、高須さんとお話をしていて気づいたんだけど、ESP8266/ESP32をつくっているEspressifは、ムーアの法則をうまく使った例、と言えることに気づいた。つまり微細化による性能向上とは別の、やや古めのテクノロジを使ってコストを抑えつつ、「無線機能がメインで、演算性能はそんなにたいしたことないマイコン、だけどとても低価格」というジャンルを開拓して確立した製品、といえる。NeoPixelと同じ並びで語れる例とえいる。
この前買った細長いUSB顕微鏡を、持ってきた太いUSB顕微鏡の台に固定するアタッチメントをJLCPCBの3Dプリントに出してたの、届いた。ぴったり。ネジでしめればしっかり固定できる。
STCmicroのSTC8G純正書き込みツールのSTC-ISP、タイマの設定やループまわすdelayのコードの生成ツールがある。めちゃ便利。
ついでにSTC-ISPの設定をみてたら、起動時のリセットを長めに待つ、というオプションがあって、デフォルトでONになっている。データシートを読み返したけど、少なくとも英語版にはこれのことは書いてないっぽいが、実測で100msくらいリセット待ちするようだ。
このまえの「ルネサスがArduinoに出資、というニュースについて、特電のなひたふさんがblogを書いている。いろいろありすぎる。
日曜日にやった基板設計イベントに向けて設計したMeishinoCH552で、JLCPCBのWebからPCBAの発注をすると、CH552とUSBコネクタだけ、向きがズレる、という現象がある。この図はWebビューアでみたUSBコネクタの配置。
ただ、この部品の情報Footprintからみえる、EasyEDA用のライブラリだと、こんなふうに出る。一般的にはこの向きを「0度」と定義するはず。そしてCPLファイルでの部品の向きは「180度」。実際の基板上でも、コネクタはこのFootprint図の180度回転した向きなので、CPLファイルでの指定は正しい。しかしWebビューアだと、どうみても90度or270度ズレてる。もしかしてWebビューアのバグなんだろうか。とはいえ抵抗とかチップLEDなどの向きはこんなふうに90度ズレる、というのはおこらない。
M5Stack新製品案の追加、NeoPixelをたくさん使う電飾勢は電流不足しがち問題、USB-Cから5Vを下流側に供給するための中継機。ケースは1-to-3 Hub UNITをを流用。設計おわったので基板つくってもらう。データを渡して1.5時間後くらいに、GNDパターンを少し太くしたほうがいいな、と改良をしたら、もう発注済みとのこと。相変わらず早いな。
このまえから試しているpicoprobe、RaspberryPiPicoが届いたので書き込みテスト。ArduinoIDE(Win)からpicoprobe経由で、RasPicoに書き込みはできるようになった。でも自作ボードで同じ配線をしても書き込みができない。エラーメッセージをみると"DAP init failed"とでてる。RP2040でDAPを初期化できないって、なんでじゃ?水晶いるんだっけ?
夜は、3月の高須さんの講義で呼んでいただいている、早稲田ビジネススクールの牧先生の授業受講生・ゼミ生のみなさんとオンラインで、深センの生活について紹介したりしてた。自分がM5Stackでやってることは、見方を変えると、深センの企業に社員じゃない人が入ってゼロから製品をリリースまで2ヶ月で持っていく、それはなぜできるのか、という点から考えることができるのか、と、勉強になった。
JLCPCBのPCBAの配置ビューア、ちょっと謎な挙動がある。手元(KiCAD)と向こうで0度の定義が違う場合はあるので、それは理解できる(この例だと一番下)んだけど、両者が一致しているのに、CPLで指定してる向きとビューアでの向きが90度ずれてるのがある。バグなんかな。
「次世代X-nics 半導体創生拠点形成事業 Agile-X 革新的半導体の民主化拠点 キックオフシンポジウム」というのを聴講していた。
招待講演は、GoogleでMPWの中の人の一人、Johan Euphrosine氏。背景と問題意識のところのスライドは、まさに自分がMakeLSI:を始めることにした問題意識で、つまり普遍的な問題点ともいえる。 やはりすごいというかうまいな、と思うのは、他の巻き込み方。企業、アカデミアを、本当にうまくまきこみながら、どんどん進めている。 内容も、HDLからのデジタルから始まって、他ノードへも移行できるアナログ、Linuxが動くCPUなど、参加者がフレームワークや実例をつくる(そしてもちろん共有される)サイクルがまわっていて、まさしく「民主化」という言葉の意味を正しく確実に実現しようとしている。「民主化」なんて、上から目線でできるはずがない。ちゃんと同じ目線まで降りて、いっしょに汗を流している。
ところでこのEuphrosine氏に、だいぶ前からTwitterをフォローされていることに気づいて、ちょっとビビった。
その中でのユーザ側の話として、川原先生のお話。まさにこれ。「半導体を道具に」
あとしばらく難儀しているSTM32Fの割り込みでのI2Cスレーブ、ちょっとブレイクスルーがあった。ちょうと似たことをやっている事例を見つけた。1段階ずつ動作を追っていくと、どうもTRANSFER_DIR_WRITE/READが逆っぽくて、それをなおしたらだいぶ動作が進んだ。ただ、よくあるマスタからREGアドレス書き込み→続けてデータを読み出し、という動作だと、書き込み時にすぐにデータを返す、ようになってしまうようで、I2Cアドレスマッチ時の動作が読み出しだったらデータを返す、というようにしたら、それらしく動作するようになった。ただ、書き込みを連続して行う場合の扱いが、これだとできない(受信を1バイトに決め打ちしているため)。うーむ。積みかけている予感。要は、ExtIo2のソースをベースに改造をしたい(けど使っているペリフェラルが違うので再構成をしたいがKeilとSTM32CubeMXのバージョンが違うので、手元でできない)、ということなので、M5StackのほうでSTM32FのFWを書いているJay氏に、ヘルプを求めよう・・・つまり、既にI2C受信ができているExtIo2と同じようなスケルトンを、こっちのボードのペリフェラルの構成ファイルを渡して、そっちのKeil/STM32CubeMXで作ってくれないか、という相談。Jay氏の手をわずらわせるのは申し訳ないけど、ヘルプを求めてみることにする。
とお願いしたら20分後に「ほれ」と送られてきた(しかも実機動作確認済み)。ひょえ・・・簡単な動作(FWバージョン読み出し)を実装してみたら、ばっちり動く。今日まる一日、格闘していたのはなんだったんだろう・・・やはり生き字引は頼るべきだな。
TaoBaoで頼んでいた、「無印STM32F030(テストOK品)」をもう5個買っていたのが届いた。マークは、まあ本物っぽいだけど、足にハンダが少し残っているから、少なくとも再利用品。で、マークの真偽のほどは、中を見るしかない。
昨日、バーナーで炙った「無印STM32F030(テストOK品)」を、朝持っていくのを忘れてしまったので、それ以外のチップの顕微鏡写真をとってみた。その中には実は本物が混じってるっぽかったり、明らかにニセモノ(たぶんSTM32F030としては使えない)っぽいのが混じっていたり、なかなかな状況。
チップ写真からチップサイズを測ろうと、いっしょに定規の目盛りを撮っておいたんだけど、そこからチップサイズを求めるのに、以前つくった画像で指定した長方形のサイズを計測・計算するアプリがめちゃめちゃ便利だった。
しばらく前にぼちぼちやろうとしていた、ArduinoIDEのSTC8G対応を、どこまでやったっけ、というリハビリ。まずWindowsしか使えなかったので、ThinkPadのほうでやっていたんだった。で、ArduinoIDEのフォルダ構成を思い出しつつ、肝心のcore/STC8を、とりあえずはDropboxで作業しようとDropbox内に置いて、そこにリンク(ジャンクション)をはったんだった。で、レジスタ関連の設定がめんどいな・・・というところで止まっていたんだった。でもよく考えたら、レジスタの宣言は、以前noteにも書いていたように、簡易ライブラリFwLib_STC8のヘッダファイルがほぼそのままで、Apacheライセンスだから、これをそのまま使うのがよさそうだな。・・・というところまで思い出した。いっかいビルドしてみるか。
と、ふとみてみたら、以前サーバが応答しなかったSTCmicroの本家(?)のWebが復活してる。
学生の研究に関連して、ちょっと古いんだけど、"MCUNet: Tiny Deep Learning on IoT Devices"という論文を読んでいる。エッジ向けに、MCUクラスの貧弱な性能・メモリでNeuralNetでの推論をできるようにするためのNeruralNet最適化(NAS)と、その推論エンジン。一応ImageNetクラスの規模のネットワークを対象としている。
このまえ思いつき→提案→設計まで1日だったM5Stackの新製品、NeoPixelたくさん使う電飾勢は電流不足しがち問題向けのGrove給電のプロト、でけた。給電のUSB-Cをケースの端まで移動させたほうがいいかな。白は上流、赤はつよつよ給電の下流側。
USB-C周囲が少し開くのはまあしょうがない。とりあえず5V給電は大丈夫そうだ。NeoPixelつないで動作確認してから、USBコネクタの位置を変えた基板を試作に出そう。
M5Stackの作業部屋は、だいたい工具・計測器はなんでもそろってるんだけど、ルーペがないのは、みんな若いから老眼じゃないんだろうなー。もちろんLCD顕微鏡はあるから、それで拡大すればいいんだけど。
部品箱にこんなUSB-Aコネクタがあった、奥行きがだいぶ短い。LCSCだとこのあたりかな。
Hブリッジドライバの方のプログラムの方はだいたいめどがたった。あとはI2Cでコマンドを送っての細かい動作確認なので、できれば専用のツールがほしいところ。ざっとしらべてみると、WCHのCH341がUSB-SPI/I2Cの機能があるようなので、とりあえずボードを買ってみた。ただ制御ソフトの方は、ざっと探した範囲では、SPI/I2C接続のEEPROMを読み書きするのがほとんどで、もっと低レベルな操作ができそうなのがみつからない。もう1つ、I2Cスレーブとかにもなれるボードがあったので、こちらもとりあえず買ってみた。制御ソフトはオリジナルのもののようだ。TaoBaoチャットで問い合わせてもらうやつかな、これは。
ただ、こういうのって、Arduinoとかでシリアルでコマンド送ってI2C制御する、というの、ぜったい誰かつくってそうだなー、と思ったら、こんなのがあるよ、と教えてもらった。まさにどんぴしゃっぽいな。まずはこれを使ってみようと思う。軽く使ってみたところでは、やりたいことはばっちりできそうだ。
いま定義している制御レジスタを順に試すことになる。いくつか、↑のA_CTRLで試したところでは、動作OKそう。
ついでに制御対象のDCモータも用意しようと、いくつか小さいギヤードモータをTaoBaoでポチってみた。6Vと12Vで、ギヤ比が違うのを何個か。1個200円くらいだから安いものだ。
ついでに、USB-PDで指定した電圧を引き出すモジュール(いわゆるデコイ、中国語だと「扳机」)を、ちょっと調べてみた。このあたりのやつだと、要求電圧をボタンで変更できる(LEDの色で電圧を確認でき、ボタン長押しで保存)ようだ。こりゃ便利だ。一つ買っておこう。ちなみに黄=9V / 緑=12V / 水色=15V / 青=20V、白=最高電圧、ということのようだ。
そういえばPICマイコンから離れて長いけど、最近のはCLC (Configurable Logic Cell)というミニミニFPGAみたいなの(可変機能論理ブロック)があって、NeoPixel制御回路とか作れちゃうんだよな。PSoC(のデジタル部)ほどの自由度はないけど、こういうのがあるのは大きい。他のマイコンにも広がらないかなー。
今日、M5Stackに来ていて、お昼ごはんのときに、Jimmyから、ぜひ会わせたい人がいる、と、韓さん、という人を紹介された。聞くと、アメリカの大学に留学していながら、M5Stackの仕事をリモートでやっているエンジニアだそうだ。ちなみに大学での専門はMEMSらしい。オフィスに戻ってから見せてもらったのは、中国の半導体メーカ(AXERA)のエッジAI向けチップが載ったカメラのボードで、それの仕込みをやる、という。初めて聞くメーカ名だったけど、中身はCortexA7x4コアのARMで、ハードウエアアクセラレータも載っている、という。それぐらいのでもそこそこのことができちゃうんだな。実は午後に、何人かの人がJimmyの部屋に入っていくのを見てたんだけど、後から聞いたら、そのチップのメーカの人だったらしい。UnitV2の系列になるんだろうか。
Grove系統にUSB-Cから5V給電するUNIT、動作OKそう。USB-Cコネクタの位置を微調整して、最終版かな。Jimmyに報告したら、表面のコネクタの横(UNITの上部)にシールを貼ったほうがいいんじゃ?と。コネクタの色で機能(上流・下流)を分けているからいらなないんじゃ?とも思ったけど、昨日の理解にいいし、同じ形状の"1-to-3 Hub"と区別がついていいんじゃ、と。たしかにそうだな。
この前TaoBaoで買った、メーカ名が明記されてない「32F030(テストOK品)」5個、チップをみてみた。意外にというか全部ダイ自体は本物っぽい。リユース品ということか。
マイコン関連をいじっているとたまに見かける用語BSPの意味をお恥ずかしながら調べて知った。Board Support Packageの略で、評価ボードなど、システム全体の評価のために必要な構成要素一式。
昨日M5Stackで会った韓さん、高須さんによると、M5Stackのけっこう初期のころから出入りしているんだそうで、M5StickVの開発段階で、かなりコアの部分(いわゆるBSPまわり)に関わっていたんだそうだ。で、昨日見せてもらったAXERAのチップを、どうやって、なぜ選んだのか、と聞いてみたら、エッジAIのチップはそんなに多くなくて、そんな中でAXERAはAI画像処理、特に暗いところでの画像処理に強みがあるんだそうだ。で、今回使うのはAX620というチップだそうだ。ついでに、MicrosoftResearchにも籍をおいている(?)ようで、エッジAIに関する研究もやっているんだそうだ。活動の幅が広い。
夕方、高須さんのところに講演の依頼があったので一度訪問しておこう、と、epis education centerのわかば深セン教室へ、iMakerBaseのZoeyさんもいっしょに、おじゃましてきた。ここは、本来は日本人駐在員のお子さんが対象の塾(つまりいずれ日本に帰るので、そのときの受験勉強などの塾)なんだけど、そこの山家先生という方が、土曜にプログラミング教育というかArdunioでIoT+データサイエンス、みたいな授業をやっている、というので、見学におじゃましてきた。
こんな感じで、センサでとったデータをクラウドに上げる、というのをやっている。回路・プログラム自体は「写経」なんだけど、それでも実際に動く、という体験は、いいんじゃないかと思う。Fab 3D Contestに応募したり、Maker Faire Shenzhenに申し込むつもり、とか、なかなかアクティブな先生だ。
席上、せっかく深センにいるんだから、深センらしい体験をさせてあげるといいんじゃないか、という話にはなって、例えば华强北に部品を買いに行くとか、自分のArduinoを自分でPCBAにだす、とか、いいんじゃないかなあ、というアイディアは出た。
ちなみに中国だと「編程猫(bian1cheng2mao1)」というプログラミング教室(オンライン?)があって、けっこう一からきっちりつみあげていく(そしてフォローもしっかり)、というタイプのやつがあるんだそうだ。これは、アメリカやMakeでもよくある、「自由にやらせれば伸びる」というのとは、ある意味対極なんだけど、どちらが正解というものでもないんだと思う。