Mongoose OS(その4)

久々にMongoose OSの件。

やりたいことがあった&一応できたので、それについてメモ。

 

Mongoose OSでM5Stackを使えるという情報がツイッターにあったので、検索したらちゃんと公式のところにサンプルのコードがあった。

 https://github.com/mongoose-os-apps/example-m5stack-js

これはやってみるしかない。

と思ったんだけど、JavaScriptはわからないのでそもそも何するプログラムなのかわからない。

(いや、どのプログラム言語も初心者なんだけど)

でも見た感じ、AWS使ってクラウド経由で信号を送る…のかな。まあいいや。

 

とにかくLinux(Ubuntu)上でMongoose OSを起動して、M5StackをUSB接続。

デバイスはESP32を選択。

「import」からexample-m5stack-jsを落としてきて、まずはビルドしてみたんだけど…エラーになった。

この原因は不明なんだけど、前もそんなことがあったな。

よく見たら裏でアップデートをダウンロードしてたので、とりあえず最新のをインストールしてPCを再起動してみた。

 

再びmosで起動すると、今度はちゃんとデバイスとwifiを認識してるようだ。

接続が確認できてなかったのがまずかったのかな。

画像が小さくて分かりづらいけど、URLの記載されてる窓の下にデバイス名や、Wifiのアドレスが出ている。

(実は最初の起動時にはこれが接続中のままだった)

そういえば前回もちゃんとこの表示が出ていたかも。

 

この状態でフラッシュしたところ、なんの問題もなくM5Stackが起動した。

記念の画像。

ただしクラウドに接続してないので、この状態ではUSB経由でしかボタンに反応してくれない。

でもそこが売りなOSなので、実際に使うならそれを生かした使い方をしたいところ。

今のところ、サンプルプログラムでお茶を濁すことしかできないんでもったいない。

 

しかしM5Stackの話から離れようとしたのに、また戻ってきてしまった。

まあそれだけ使い勝手がいいからしかたないか。面白いし。

Mongoose OS(その3)

諦めきれずに、もうちょっとMongoose OSのこと。

同じように、Mongoose OSでのI2Cについて書いてる人発見。
 http://www.chaoticfocus.net/posts/2017/09/esp8266-using-i2c-with-mongoose-os/
最終的にはやりたいことが違うけど、とてもわかりやすいのでこれを参照に途中までI2Cについて確認してみる。

 

mos.yml内を確認。
 config_schema :
    - [ "i2c.enable", true ]

となってるので、I2Cを使用する状態になってる。
ライブラリも、libs:に
    - origin: https://github.com/mongoose-os-libs/i2c 
が入っている。問題なし。

 

デフォルトでSDAとSCLに使用するピンがちゃんと設定されてることを確認。
これはbuild/fs/conf0.jsonの中。自動的に追加されてるらしい。
    "i2c": {
        "enable": true, 
        "freq": 100000, 
        "debug": false, 
        "sda_gpio": 12, 
        "scl_gpio": 14

       }
記載されている通り、GPIOは12と14。
自分はNodeMCUのモジュールを使ったので、D6(GPIO12)にSDA、D5(GIPO14)にSCL。ここまでは確認できている。

 

んじゃ配線は問題ないよなあと考えて、ふとOLEDの設定の見直しを考えた。

元のinit.jsの中に、

 d.begin(Adafruit_SSD1306.SWITCHCAPVCC, 0x3D, true /* reset */);

という一文があるんだけど、Adafruit SSD1306ライブラリを使うプログラムでで良く見かける。

これはハード(というか解像度)の設定でアドレスが0x3Cに変わることがある。

なので試しに0x3Cにしてフラッシュし直した後、無事OLEDに表示が出ました。

結局、コードもライブラリもほとんど問題ありませんでした。

しかしトラブルがあって見直しをかける際、ビルド後のログとかも確認しやすいし、使いやすい開発環境だということは良くわかった感じ。

プログラムを修正して書き込み直ししたときに、また戻ってこなくなったことがあったので、ここだけはネック。

 

最近M5Stackに構い過ぎなので、こういうところでガス抜きしていこうかな。
(でも結局ESP32とかESP8266とか使ってばっかり)

Mongoose OS(その2)

昨日の続き。
インストールがさくさく終わっちゃったので、何かサンプルを書き込んでみた。そして案の定躓いてる。

スクリーンショットが取れなかったので、ホントにメモ程度。

 

そういえばさくさくとESP8266のモジュールと接続しちゃったけど、USBドライバがなければインストールしておくことが必要。
あと、接続をESP8266にしたとき、メモリの大きさを選択できたのでとりあえず(良く解らないまま)2MBを選択してあります。

 

で、続き。
メイン画面の「My Apps」のところに、「+New」と「Import」があったので、「Import」をクリックしてみたところ、サンプルプログラムらしきものがだ〜っと出てきた。
たぶんこういうところから引っ張ってきてるかなと思った。
 https://github.com/mongoose-os-apps
検索できるので、SSD1306 (OLED)関連のを引っ張ってきてみた。
やり方は上記にもムービーで記載されてる。解りやすくて助かる。

 https://github.com/mongoose-os-apps/example-arduino-adafruit-ssd1306-js

 

ボード名横の右上の端っこのアイコンでESP8266にフラッシュ。
…が、延々とフラッシュし続けてるみたいで戻ってこなくなった。
(画面を別のものにして戻ってきたら止まっていた)
どうも先に隣のスパナのアイコンを押してビルドしておかないとダメみたいだ。って、githubの該当ページのムービー見てればわかったはずなんだけど。

なのでやり直してみたところ、無事に終わった。書き込みの状態は画面下半分のウィンドウで解る。

 

書き込んだESP8266のモジュールと、OLEDと接続して…というところで気づいたんだけど、接続はどのピンが該当するんだろう?

その辺も再確認ということで調べてたら、フォーラムで

 https://forum.mongoose-os.com/discussion/1106/i2c-oled-not-working

という書き込み発見。

さっそくi2cのライブラリを探したところ、

 https://github.com/mongoose-os-libs/i2c/blob/master/mos_esp8266.yml

を確認して、

["i2c.sda_gpio", 12]

["i2c.scl_gpio", 14]

になってたので、該当する端子に繋いだ。つもりなんだけど、表示されない。

断線してるとかじゃなければ、何か間違えてる。

いつものことだけど一気にここまでやっちゃったので、また順にチェックして行きます。

一応方法だけは理解できたし。(たぶん)

Mongoose OS(その1)

まだよくわかってないのと、調べつつメモしてくことが増えそうなのでその1にしておく。

 

ESP8266とかと絡んでツイッターで「Mongoose OS」というのが気になったので、調べてた。

公式のHPを見る限り、IoTに強いという感じだろうか。

 https://mongoose-os.com

とにかくインストールしてみればいいか、と思ったので詳細を検索。

土台になるPCに開発環境を入れて、ESP32やEPS8266にプログラムを転送する感じかな。

Arduinoっぽいけど、JavaScriptでもプログラムできる。

インストール方法は以下。

 https://mongoose-os.com/software.html

端末はMacだとまたごちゃごちゃしそうなので、Ubuntu OSに入れてみた。

 

リポジトリを取得。

$ sudo add-apt-repository ppa:mongoose-os/mos
  The Mongoose OS command line tool
  詳しい情報: https://launchpad.net/~mongoose-os/+archive/ubuntu/mos
 [ENTER] を押すと続行します。ctrl-c で追加をキャンセルできます

 gpg: 鍵リング「/tmp/tmpysuy3rq4/secring.gpg」ができました
 gpg: 鍵リング「/tmp/tmpysuy3rq4/pubring.gpg」ができました
 gpg: 鍵1A213823をhkpからサーバkeyserver.ubuntu.comに要求
 gpg: /tmp/tmpysuy3rq4/trustdb.gpg: 信用データベースができました
 gpg: 鍵1A213823: 公開鍵"Launchpad PPA for Mongoose OS"をインポートしました
 gpg: 処理数の合計: 1
 gpg:               インポート: 1  (RSA: 1)
 OK

一瞬で終わった。で、あとはインストール。

 $ sudo apt-get update

 $ sudo apt-get install mos

 $ mos --help

これはコマンド一覧が出るだけ。起動は、

 $ mos

とすると、WEBブラウザからMongoose OSのIDEが起動する。エラーもなく簡単。

画面キャプチャが小さすぎたけど、とにかくMongoose OSのIDEの準備画面が起動している。

最初USBに何も接続されてなかったのでNo Deviceになってたけど、ESP8266のモジュールを繋げたところ、認識してOSをフラッシュできた。

あとはWifiの設定を入れれば終わり。

 

初期設定が終わって、プログラムが表示されている。

最初はサンプルプログラムが入ってた。

 

使ってる人のブログとか探してみたところ、解りやすいところがあったのでそこも参照して見るといいかも。

(自分はいつものとりあえすやってみようで、行き当たりばったりでやっちゃったけど)

 https://www.1ft-seabass.jp/memo/2017/07/20/espr_developer_32_meets_mongoose_os/

 https://qiita.com/shanonim/items/2c6429f0a0bb2c7d9325

でもってAWSとの連携が多い感じ。あらかじめサンプルが多くて便利らしい。

自分はAWSとか使う予定はなさそうなので、別のサンプルを引っ張ってきて使ってみることにする。

なのでもうちょい続く。

PIXMOB(その後もうちょい)

BUMP OF CHICKENのライブに数回行ったおかげで、PIXMOBがそこそこ集まった。
たくさんあれば多少いじって壊しても大丈夫。

というわけで、少し前からいくつかいじくり回してる。

 

前回のライブからだいぶ経ってたんで、基板のバージョンも上がっただろうと分解してみたら、まだVer.5のままだった。
使ってるマイコンもABOV MC81F4204のまま。ちょっとがっかり。
だったら以前、とあるホームページで見つけたArduinoを使ったプログラムの書き込みをやってみればいいんじゃないか?と考えた。

http://jg.sn.sg/ndp-pixmob-1/
PIXMOBのバージョンが違うからどこまでできるかは解らないけど、試しにやってみる価値はある(?)。
何よりArduino IDEを使って書き込みできるなら、そのままモジュールとして遊べるようにできるかもと期待。

 

さっそく手持ちのArduinoを確認したんだけど、Pro Microは持ってなかった…。
Pro Microは正式なArduinoではなく、互換品だったんだな。初めて知った。
ATMega32U4が載ってる基板も持ってることは持ってるけど、ピンが足りないので結局購入。

 

書き込み用のハードウェアは、基板を起こす気力がないのでブレッドボード上で再現してみようと思った。
回路図を公開してくれて感謝です。

 http://jg.sn.sg/ndp-pixmob/4.png
この9Vの確保はDC/DCコンバータの昇圧回路を作るのが面倒なので、9V電池を使用するのを考えてる。
でもここの回路があると5Vのみで対応できるので、いずれ作っておきたい。

 

PIXMOB側の配線だけど、参考先のバージョンと違い基板上にテストポイントがない。

これはめんどくさい。
ただ、MCUのパッケージ違い用(?)にランドが露出してるところがあるので、ここに直接半田付けできるかも。

 

と思ったんだけど、これが結構大変。

なのでテスターで測ってみると、基板の端にあるパッドが使用できる。

たぶんこんな感じ。

ちなみに最低限必要なのは以下の5つの端子じゃないかと判断。

MC81F4204のデータシートでピン番号を確認。MC81F4204Rという、16ピンのパッケージ。

  • SDATA 4pin(PROG_SDAに接続)
  • SCLK 7pin(PROG_SCKに接続)
  • VPP(RESET) 11pin (PROG_VPP(9V)に接続)
  • 電源とGND

GNDと電源は無理にここから取らなくてもいいとして(むしろ端子が隣り合ってるのでジャマ)、他のは頑張って半田付けして配線を引っ張り出す必要がある。

なのでしばらく保留中。他に半田付けするものがあったらついでにやるつもり。

その間、Arduino IDE側の設定をすることにする。

Sponsered Link