ASCIIコード送るだけでキーボード入力される pic.twitter.com/bhd8Y0xXdr
— じてんしゃP (@jitenshap) January 8, 2023
チラ裏
2023年1月8日日曜日
UART to USB HID変換IC CH9329を使ってみた
2022年12月17日土曜日
東京オタクPOP UP ストアメモ
POP UP ストアとは
何を売ってるの?
共通事項
・秋葉原アトレコラボシリーズ
・ゲーム/アニメ/ホビーショップで開催のPOP UPストア
・渋谷マルイ/新宿マルイ (マルイノアニメ)
・番外編 しまむら/アベイル
しまむらはアニメグッズショップ pic.twitter.com/urHaiJtCiE
— じてんしゃP (@jitenshap) October 10, 2022
2022年3月26日土曜日
さくらのクラウド「さくらのモノプラットフォーム」でLTE-Mを使ってCO2モニタリングしてみた
さくらのクラウド「さくらのモノプラットフォーム」をサービス開始しました。
https://iot.sakura.ad.jp/platform/
クローズドベータテスト募集がされていたので申し込み、いただいたアカウントと基板でサクッと試してみましたが、なかなか記事にできずにおりました
今回は、さくらのモノプラットフォームを使い作成したCO2モニタリングシステムについて紹介します。
テスター登録したところ、モノプラットフォームだけでなく、無料で各サービスを利用できるアカウントのログイン情報がメールで届きました。 また後日、
M5Stack対応LTEモジュール
DIP型LTEモジュール基板
LTEアンテナ
STM32Nucleo対応シールド基板
J-LINKコネクタ変換基板
のセットが到着しました。
利用開始前に、メールで届いたID、パスワードを使い、コンソールにログインしてSIMの登録を行います。
SIMはオンボードのeSIMで、基板上に書いてあるICCID、パスコードを入力して登録します。
あとはモノプラットフォームのメニューからプロジェクトを作成、SIMを紐付ければ準備完了です。
若干手順がありますが、このあたりはすべて丁寧なドキュメントがありますので、ドキュメントの手順どおりやれば問題ないです。
https://manual.sakura.ad.jp/cloud/manual-iotpf.html
さて、ハードウェア側です。Nucleoはあまり使っていないものの、M5Stackは出始めからいじっていたので早速つないでみました。
マニュアルにArduino用サンプルスケッチがあり、書き込むといきなりLTE-Mでさくらのサーバーと接続ができます。
完全に理解した pic.twitter.com/y9vtK1lgij
— じてんしゃっぷ (@jitenshap) September 12, 2021
サンプルは、M5StackのボタンA、ボタンB、ボタンCの押された回数をそれぞれ送信するもので、送信に成功すると、画面上の数字が増えていきます。
コンソールにログインすると、ブラウザ上で送信ログを確認できます。
もちろん、デバイスの送信データを受信するためのAPIもあります。
後述しますが、こちらはWebSocket APIになっており、デバイスがデータを送信するとJSONにシリアライズされて流れてくるストリーミングAPIです。
サンプルスケッチを見ると、LTEモジュールに送るコマンドフォーマットがわかるので、適宜改造すればサクッとデータを送信可能です。
データ形式は以下の通りです。
タグID
データ型 uint8からfloat64まで数種類
データ本文
これを設定して送信する形になります。
たとえば、温湿度センサーの値を送る場合、
タグID 0x01をfloat32で温度
タグID 0x02をint8で湿度
のようにして使うとそれぞれ別のものとして区別して送信できます。
サンプルスケッチでは、
ボタンAをタグID: 0x01のuint32
ボタンBをタグID: 0x02のuint32
ボタンCをタグID: 0x03のuint32
としてそれぞれ送信するようになっています。
試したところ、タグIDは0x00-0xFFまで使うことができたため、255個の変数を設定できそうです。
サンプルスケッチの、setup()にある接続周りの処理を実行すれば、あとはsipf_client.cppにある
SipfCmdTxコマンドでデータ送信が可能です。
先ほどの例で、気温を送信したい場合は、
SipfCmdTx(0x01, OBJ_TYPE_FLOAT32, (uint8_t*)&temperature, 4, buff);
のようにして送信できます。
引数は、第一引数から
//タグID(0x00-0xff) uint8_t tag_id; //spif_client.h enum SimpObjTypeId データ型enum SimpObjTypeId type; //データ本文 uint8_t *value; //データレングス(バイト) uint8_t value_len; //モジュールからのレスポンスバッファー(?) uint8_t *otid;
という理解で使うことができました。
それでは実際に任意の値を送ってみます。
M5StackにGROVE接続のSensirion SCD41 CO2 温湿度センサーを接続しました。
SCD41は、Sensirion公式のArduinoライブラリがあり、M5Stackで即動作させることが可能です。
SCD41のサンプルスケッチに、さくらのモノプラットフォームのサンプルスケッチを合体したものを作ってデータ送信してみました。
データ送信は、以下のようにしています。
//CO2送信コマンド発行 ret = SipfCmdTx(0x00, OBJ_TYPE_UINT16, (uint8_t*)&co2, 2, buff); //気温送信コマンド発行 ret = SipfCmdTx(0x01, OBJ_TYPE_FLOAT32, (uint8_t*)&temperature, 4, buff); //湿度送信コマンド発行 ret = SipfCmdTx(0x02, OBJ_TYPE_FLOAT32, (uint8_t*)&humidity, 4, buff);
タグID: 0x00をCO2
タグID: 0x01を気温
タグID: 0x02を湿度
にして、それぞれuint16 float32形式で送信しています。
測定は5秒に1度測定してLCDに表示、送信は1分に1度最新の値を送信するようにしました。
送信したデータは、WebSocket APIを使うとリアルタイムに確認することができます。
これはwscatを使ってコンソールで接続していますが、ブラウザのJavaScriptでWebSocket接続することも可能です。
(WebSocket APIのエンドポイントURLは公開しないほうがよさそうなので、公開するなら間にプロキシがいるかも)
デバイスが送信したデータを受信するAPIは、サービスアダプタと呼ぶようです。
サービスアダプタには、このWebSocket APIに加え、Outgoing Webhook、Incoming Webhookが作成できます。
HTTP APIを自前サーバーで作っておけば、データ受信時にHTTPリクエストで受け取ることも可能なようです。
それに加えて、今回は使っていませんが、デバイスからデータを送信するほかに、デバイスにデータを送信することも可能です。
それでは、データが送信できているのを確認したので、データ蓄積や表示ができるようにしたいと思います。
さくらのクラウドでは、もちろんVPSサーバーやデータベース、VPCルーターなどを作成可能であるため、
エッジデバイスのデータ送信からバックエンドまでワンストップで行うことが可能です。
モノプラットフォームのベータテストアカウントでは、なんと太っ腹なことにこれらのクラウドサーバーサービスも無料でトライアル可能でした。
非常にリッチなVPSなども立ち上げ可能ですが、1クライアントではそれほどのスペックは必要ないため、
プラン/2Core-2GB OSはUbuntuのサーバー ストレージは20GB SSD
MariaDB 10.4 シングル構成 1Core RAM2GB ディスク10GB
VPCルーター
スイッチ
という構成で組んでみました。
それぞれWebUIからぽちぽち押していくだけで作れるので簡単に設定できます。
Ubuntuサーバーを使って、Node.jsでWebSocket APIに接続し、データを受信したらデータベースに書き込み
別にNode.jsでHTTP APIも作ってデータベースから値を引っ張ってくるAPI動かすようにしました。
CO2、温度、湿度の順番でデータを送信しているため、それぞれ受信して3つが揃った段階でデータベースに書き込むようにしています。
あとはNginxで表示ページをホストして、Chart.jsでグラフを表示させるようにして完成です。
このへんはセンサー系のPoCではいつもどおりの作業ですね
使ってみた感想ですが、データ送信を非常に簡単に行えるのがメリットだと思います。
データ送信から受信までのプロセスを含め、1から作ることも可能ですが、
プロトコルを作るところから始まることになり非常に煩雑です。
モジュール、アンテナの技適やモデムコマンドを含むデータシートの開示のためのNDA契約など、
一切のプロセスを飛ばして、いきなりコマンドラインで受信可能な状態になることは
非常にアドバンテージがある仕組みだと思います。
セルラーIoTを初めたいけど、何からはじめていいかわからない、という方は1つのアカウントで
エッジデバイスからサーバーサイドまで管理できて明朗会計なさくらのモノプラットフォームがおすすめです!
2021年5月22日土曜日
USB HID-UARTブリッジ CH9350を使ってみる
とりあえず買ってみた pic.twitter.com/VUN22zY3LS
— じてんしゃっぷ (@jitenshap) May 15, 2021
ホスト側もなんか動いたっぽい。何もしなくてもダーってなんか流れてて、キー押すと加速する pic.twitter.com/rhBZTUV8Yq
— じてんしゃっぷ (@jitenshap) May 16, 2021
Lチカ pic.twitter.com/swAYrfeg1H
— じてんしゃっぷ (@jitenshap) May 22, 2021
2021年3月21日日曜日
えっ、まだESP32にRTC外付けしてるんですか!?
https://t.co/9EJqUo62JN
— じてんしゃっぷ (@jitenshap) January 5, 2021
>Optimized 32.768 KHz crystal oscillator stability, the issue was reported by client that
there is a low probability that under ECO V1 hardware, the 32.768 KHz crystal oscillator
couldn’t start properly.
2021年1月10日日曜日
WindowsでphpMyAdminを使う+多段SSHポートフォワードでDBのポートが通るようにする
location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
<?php phpinfo(); ?>
start nginx.exe start C:\php\php-cgi.exe -b 127.0.0.1:9000
nginx -s stop taskkill /F /IM php-cgi.exe
$cfg['Servers'][$i]['host'] = 'localhost'; $cfg['Servers'][$i]['port'] = '13306';
2021年1月2日土曜日
ジョゼと虎と魚たちを見た感想
各映画サイトにて高得点獲得‼️‼️
— アニメ映画『ジョゼと虎と魚たち』大ヒット上映中!! (@joseetora_movie) December 28, 2020
『#ジョゼと虎と魚たち 』
🌟「Yahoo!映画」4.28点 🌟
🌟 「映画.com」 4.0点 🌟
24万人以上の方が注目してくださり、感動の声続々到着!😭
➡️ https://t.co/IzFUODb3eF#ジョゼ虎 #大ヒット上映中 #ボンズ #Eve #中川大志 #清原果耶 #見取り図
🐠ℂ𝕙𝕒𝕣𝕒𝕔𝕥𝕖𝕣:二ノ宮舞✨
— アニメ映画『ジョゼと虎と魚たち』大ヒット上映中!! (@joseetora_movie) October 5, 2020
恒夫がバイトしているダイビングショップの後輩。
魚の水中写真を撮ることが好き。
恒夫に想いを寄せているが打ち明けられずにいる。
CV #宮本侑芽#ジョゼ虎 pic.twitter.com/5YDfozg79h
🐠ℂ𝕙𝕒𝕣𝕒𝕔𝕥𝕖𝕣:岸本花菜✨
— アニメ映画『ジョゼと虎と魚たち』大ヒット上映中!! (@joseetora_movie) December 28, 2020
ジョゼが恒夫と共に訪れた図書館の司書。
フランソワーズ・サガンが好きで、初めて出会ったジョゼと小説の話で意気投合する。
CV #Lynn#ジョゼ虎 pic.twitter.com/78zdsBhaRZ