Arduino secret変数処理

Arduino IDEでssid, pwの含まれたヘッダファイルの組み込みの代わりと言っては何ですが、同様の機能の実現手段は以下で対応できるようです。

① Secretタブを追加する

画面では既に作成済みです。

スクリーンショット 2021-12-04 16.15.17.png

② ソースに該当情報を記述する

シークレット対象情報、ここではSECRET_SSIDとSECRET_PASSは全て大文字にしないとダメだと。ソースに27行目と28行目を記述すると自動的にSecretファイルに反映されます。

スクリーンショット 2021-12-04 16.11.02.png

③ Secret情報をSecretタブに入力する

文字列として””で囲んで入力します。

これでコンパイルが無事に終了しました。ソースにこれらの情報を直接盛り込んでももちろんコンパイルは正常終了しますが、クラウド上の管理でソースはオープン(共有)にされることを考慮してSecretタブの内容は別管理扱いされるということです。GitHubのアラームと似たようなものかも。

—————————————————

/usr/local/bin/arduino-cli compile –fqbn arduino:samd:mkrwifi1010 –libraries /home/builder/opt/libraries/latest –build-cache-path 

/tmp –output-dir /tmp/579479944/build –build-path /tmp/arduino-build-E38EFE0B45CCB8581EC071210802C6FF /tmp/579479944/SimpleWebServerWiFi

Sketch uses 21160 bytes (8%) of program storage space. Maximum is 262144 bytes.

Global variables use 3340 bytes (10%) of dynamic memory, leaving 29428 bytes for local variables. Maximum is 32768 bytes.

 

admin

Arduino Web Editorを使う

ほぼデスクトップ版と同じUIに見えますが、ボードの接続状態も見えるのはアドバンテージ。

コードはクラウド上からもインポートは出来ますが、最初のステップのLチカコードをmacからインポートして書き込めば動作しました。

 

スクリーンショット 2021-12-04 10.02.03.png

しかしヘッダファイルを組み込むSimpleWebServerWiFiはヘッダファイルをタブ追加して置いても、組み込めない(コンパイルできない)からこれは継続調査必要。

 

admin

Arduino IoT Cloud使うための準備

IoT Cloudを使うために、

<事前準備>

① アカウント取得

② Arduino Client Plugin、実はagentのインストール

③ Arduino IoT Cloudに入って使う

の手順になりますが、②のagentインストールで証明書インストールエラー(一言で言うと)でインストール完了しません。

スクリーンショット 2021-12-03 13.59.54.png

WebのArduino forumのリンクで関連する事象あったので対応出来ました。

https://forum.arduino.cc/t/macos-big-sur-installation-problem-createagent/929305/4

具体的には、

“Upon further investigation this is something we can’t seem to be able to tackle unless InstallBuilder allows shell scripts to be executed.
There is a chain of trust which fails when launching an AppleScript invoking a Shell script.

For now, users who get this issue, please run this command in the terminal after installing the Agent”

で、インストールが不完全に終わった後で、以下のコマンドを実行。このコマンドで証明書をキーチェーンに追加するようです。

$ sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain /Users/$(whoami)/Applications/ArduinoCreateAgent/ArduinoCreateAgent.app/Contents/MacOS/ca.cert.pem

このアプリ自身はバックグランド動作(おそらくクラウドにログオンするためのエージェント)するのでこのアプリ自体をクリックしても何も起きませんが、他のアプリを動かすことでagentの動作を確認できます。

常駐したことは、アイコン表示で知ることができます。

ここまでできれば、

https://www.arduino.cc/en/Guide/MKRWiFi1010

のガイドにあるように、

スクリーンショット 2021-12-03 14.25.22.png

3.のArduino IoT Cloudにログイン出来て、こんな画面が最初に現れます。常駐アイコンのクリックメニューでもArduino createに入れますが。

https://create.arduino.cc/iot/things

スクリーンショット 2021-12-03 14.24.08.png

<デバイスのCloudへの登録>

Arduino IoT Cloudのメニューにデバイス登録があるので登録してみました。

ここで再びArduino Client Plugin見つかんないよと言われたので、同じことを再度繰り返し。実はこのリンク辿るとPluginの版数が異なってますね。

ともかくArudinoをUSB接続して認識されると、クラウドにデバイスが登録されました。デバイスの名称(Aubry)はデフォルト値そのままです。この登録過程ではArudinoに書き込まれていたファームは書き換えされるようです。

IoT CloudではWebエディターも使えるから、もしかしたらデスクトップIDEが必要ないのかもしれない。

 

admin

ArduinoのWi-Fi機能確認

参考は、

https://www.denshi.club/cookbook/arduino/mkr1010/arduinoiot3wi-fil.html

・Wi-Fi使うためにWiFiNINAライブラリのインストール

どこかでインストールしてしまったか、既にインストール済みになっていた。

使い方は既存のA.Pに接続してIPアドレスを取得し、自分自身はHTTPサーバーとなって他のクライアントからのリクエストを受け取ってレスポンスを返すというもの。

あるいは、Arduino自身をA.Pにすることもできるようですね。

スクリーンショット 2021-12-01 17.09.40.png

・サンプルプログラム

サンプルからSimpleWebServerWiFiを読み込む。

IDEエディタのヘッダーファイルarduino_secrets.hに自分が使うA.P情報を追加入力する。

char ssid[] = “aterm”; # 自分のAP SSID

char pass[] = “pw”; # 自分のpw

int keyIndex = 0;   

Wi-Fiはnではつながるけれどもacにはつながらないようです。実用上は全く問題ないですが。

・動作の確認

コンパイルしてArduinoに転送するとプログラムが起動して、

ネットワークにArduinoが見えました、Wi-Fiモジュール(Espressif)は中国製のようです。pingにも応答します。

スクリーンショット 2021-12-02 14.51.27.png

シリアルモニターにArduinoが吐き出すメッセージとクライアントとの通信ログ(HTTPリクエストの中身)も見えます。また、setup()関数の最後にprintWifiStatus()関数で自分のWi-Fiのステータスを吐き出してます。シリアルモニターはあくまでUSB経由つないだ時しか見れず、Arduinoを切り離してWi-Fiで運用するときには機能しません。あり得ないけど、USBつないでるときは無線でやりとりしないで、USB経由でやりとりしてる?

スクリーンショット 2021-12-02 14.56.51.png

ブラウザから該当のURLをアクセスすると、このようなメニューが表示されて、ボードのLEDのオンオフがブラウザから”Click here”のリンクをクリックすることで制御できます。ブラウザからのアクセス受け付けるまでに、データ転送完了後あるいはArduinoの電源オンから5秒以上は待たないといけないようです。

スクリーンショット 2021-12-02 14.52.46.png

これでWi-Fiの疎通確認ができました。

Arduinoはwebサーバー機能あるといっても、HTMLやHTTPステートメントは全てprint文で記述しなければいけないのでかなり面倒ではあります。

 

admin

Arduino IDEのセットアップと動作確認

購入後の最初の動作確認をしてみます。

 

<set up>

・Arduino MKR WiFi 1010はデフォルトのボード選択リストに入っていないから、ボードマネージャーで追加します。手順は以下を参考に、

https://www.denshi.club/cookbook/arduino/mkr1010/arduinoiot1iotarduino.html

 

<動作確認>

・動作確認のためにサンプルプログラムを動かす(定番のLチカ)

コードはこんな感じで、ボード搭載のLEDを出力指定して、時間を指定してオン。オフ切り替えしています。

// the setup function runs once when you press reset or power the board

void setup() {

  // initialize digital pin LED_BUILTIN as an output.

  pinMode(LED_BUILTIN, OUTPUT);

}

// the loop function runs over and over again forever

void loop() {

  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)

  delay(2000);                       // wait for 2 seconds

  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW

  delay(1000);                       // wait for a second

}

最初電源供給できるだけのUSBケーブルでつないでいたからシリアルポート見えなくて当然、データ転送できるUSBケーブルで以下のように見えます。(/dev/usbmodem*****)

USBだけど、Arduinoはシリアルポートと呼んでいます。シリアルに違いはないけども。

スクリーンショット 2021-12-01 13.34.22.png

ソースをコンパイル、転送すると自動的にプログラムはスタート。指定した通りにボード上のLED が点滅しています。他のプログラム言語のHello world!と同じ。

下の動画はLED点灯のオンオフを100msにしたものです。

 

admin

MacBookシステム移行のやり方の差

まだ不要ですが、いずれ移行が必要になったときにWi-Fi以外でどうするのかなと思ったら、M1より前のモデルはthunderboltケーブルで、M1以降はthunderbolt、USBあるいはUSB type-Cケーブルでつなげとあります。

この差はなんなのだろうと思うけれども、よく読めば後者はintel macはターゲットディスクモードにはならないと言ってるようだから、接続はやはりthunderbolt使うことになりそう。

第三の方法としては元のmacのバックアップデータであるtime machineデータを指定して新たなマシンに持ってくるというやり方もありそうです。

まとめると、

  Wi-Fi経由

② thunderbolt直接接続

③ timemachineバックアップから

速度的には② > ① ≧ ③(NASだから実力50MB/sぐらい)になるんだろうけど、手間かからないのは①か③ということになる。

スクリーンショット 2021-11-30 13.28.39.png

スクリーンショット 2021-11-30 13.24.46.png

 

admin