2022年10月04日
WEB APIを使用してQRコード (※QRコードはデンソーウェーブの登録商標 です) を読み取りJSON形式でPOST送信するアプリ開発を行いました。
Android/iOsでもQRコードを読み込みができ、機種依存のないアプリ開発になります。

【検討内容】
WEBブラウザーからでもJavaScriptを使用しQRコードを読むことができるというMediaDevices.getUserMedia()というAPIを使用し確認しました。
(スマホアプリ対応バージョン)
Chrome for Android 103以上
Safari On iOs 13.4以上
(QRコードの大きさ)
12㎜角以上
(ブラウザー設定)
ChromeやSafariでは、MediaDevices.getUserMedia()使用するのにSSL証明書が必要になります。
SSL証明書は1年~10年と設定できますが、AppleのSafariは398日(約1年)の申請が必要です。
※Webサーバーですと、ドメインがSSL証明をしてくれますが、今回はローカルサーバーをIISにて使用するため簡単にはSSL証明が発行できませんでした。そのため、OpenSSLを使ってSSL証明書を発行しローカルにインストールさせて動作させるようにしました。ふわりと書いてありますが一番大変なところかもしれません。
【Webアプリ】
1: QRコード読み取りを行います。下記は、Chromeを使用しています。 QRコード読み取りボタンを押します。

QRコードを読み取ります。

読み取れた後は、開くを押すと元の画面に戻りQRコードで読み取ったURLを項目に書き込みます。
名前を入力して送信ボタンを押します。
※https://jsonplaceholder.typicode.com/
にJSONコード
{
“name”:”N”,
“url”:” https://smartageing-s.co.jp/ “,
“time”:”YYYY-MM-DD HH:MM:SS”
}
をPOSTします。
※JSON形式でPOSTされたデータを返信してくれるテストサーバです。

正常に送信できると送信した内容を返してくれるので表示させます。

QRコードを読み取りJSON形式でPOST送信をすることができました。
アプリをダウンロードしなくても、ブラウザーの機能が増えいろいろなことが出来るようになりました。
少しずついろいろな機能を紹介していけたらと思っています。
お読みいただきありがとうございました。
2022年05月25日
Bluetoothモジュールを搭載した湿度制御機器の情報をスマートフォンで取得するシステムの開発依頼があり、BLEモジュールの選定および組込開発とスマホアプリの開発を行いました。

【BLEモジュール】
BLEモジュールは、低消費電力で購入がし易く安価な上、技術情報も取得しやすいLaird Connectivity社の「BL652」を選定しました。
「BL652」 は ノルディック社 nRF52832を使用しています。
https://www.ryoyo.co.jp/product/semiconductor/ireless/laird-bl652/
シリアルインターフェースは、UART/I2C/SPI/ADC/GPIO/PWM/FREQ/output/timersを利用でき、基本ファームウェア(Laird社が配布:smartBASIC runtime engine firmware)の上に、smartBasicで作成したユーザーファームウェアを動作させて利用可能となります。
AE-BL652-BO開発当初は、BL652のブレークアウトボードを使用してPCで作成したユーザーファームウェアをダウンロードしながら動作検証を行いました。
【スマホアプリ】
スマホアプリについては、Android OS/iOSのどちらも利用したいというご要望のため「Web Bluetooth」方式で開発しました。
スマホで利用できるブラウザに制限があります。(下記Webサイトに対応ブラウザ情報があります)https://caniuse.com/web-bluetooth
【BLE概要】
BLEでは(親機)のことをCentral(セントラル)、(子機)のことをPeripheral(ペリフェラル)といい、今回は「BL652」をペリフェラル、スマホ側をセントラルとしています。BLEではセントラルからの接続待ちの仕組みで、ペリフェラル機器の「僕はここです」ということを伝える為の無線信号をだします。それを、アドバタイズといいます。ペリフェラル機器は接続待ちの間、定期的にアドバタイズを発信しています。セントラルからペリフェラルを選択してペアリングし1対1の接続通信のことを、GATT(ガット)通信と呼びます。GATT通信ではService(サービス)とCharacteristic(キャラクタリスティック)という概念でデータのやりとりを行います。Service(サービス)とCharacteristic(キャラクタリスティック)にはUUIDという16バイトの一意な番号がつけられています。セントラル機器はUUIDを指定して、Characteristic(キャラクタリスティック)のデータ内容にアクセスします。
●ブラウザーからのGATT通信接続処理フロー
BLEデバイスの検索 →デバイスとのペアリング→ GATT通信 → サービスの取得 → キャラクタリスティックの取得 (RX,TX) をして、送受信を可能にしていきます。
- デバイスのスキャン(navigator.bluetooth.requestDevice) acceptAllDevices: trueでペリフェラルのデバイスがすべて表示されます
- 表示されたデバイスの中からLAIRD BL652を探し、ペアリングをします
- GATTサーバーに接続(device.gatt.connect)
- サービスの取得VSP Service (server.getPrimaryService)
- キャラクタリスティックの取得RX(service.getCharacteristic)
- キャラクタリスティックの取得TX(service.getCharacteristic)

受信データ表示

【POINT】
- WebからのSendはRX Characteristicに行います。ReadはTX Characteristicから読み取ります。
- Web接続を行う場合はSSL認証を設定する必要があります。
- iPhoneからの接続の場合Bluefy – Web BLE Browserを使用すると接続可能です。
2022年04月19日
システム内容
16台のHDDをUSB切替器と16ポートハブを使用し、自動で1台1台にデータをコピーするシステムを製作しました。
できるだけケーブルは長く、コピー時間は早く。
システム開発
PCにUSBは規格上128台接続可能ということで、なんでも接続したらすぐにドライブも認識するとおもっていました。
甘かったですね、全然安定しないしドライブの認識もされませんでした。
第1の課題
USB3.0ケーブルと16ポートハブとUSB切替器を使用し安定して動作する環境を見つけ出す。
ケーブルの組み合わせは大事です。16ポートハブの後にリピーターをつけてUSB3.0ケーブルを5Mぐらいにしていましたが、
1度目は認識するが2度目が認識しない等、不安定になりました。
16ポートハブの前にリピータをつけて使用したかったのですが、この場合は全く認識しませんでした。
最終的な構成
PC ⇒ 16ポートハブ ⇒ USB3.0(3m)ケーブル ⇒ USB切替器
覚えておくと何かの役にたつかも?
USB2.0の最長(規定)5m
USB3.0の最長(規定)3m
第2の課題
買うタイミングが違うだけでこの仕打ちはなんでしょうか・・・。
スイッチを押したタイミングでUSBポートの切替が行われるものと
給電したタイミングでHDD切替が行われるという動作の違いがあるUSB切替器。
⇒システム的になんとかしてもらうで対応(Delayをいれてどのタイプの切替器か判断する処理を追加)
第3の課題
16ポートハブのスイッチを押しONからOFFにしてもハブの完全OFFにならない。
なんの為のスイッチでしょうか・・・?。
⇒システム的になんとかしてもらうで対応(16ポートハブの電源をOFF処理追加)
第4の課題
ドライブ認識した後、HDDの安全な取り外しってシステム的にできるの?
⇒システム的になんとかしてもらうで対応(HDDの安全な取り外し機能追加)
第5の課題
16台のUSB切替器をシステムで動作させているけどたまにドライブ認識しなくなるのがいるんですけど・・・
⇒システム的になんとかしてもらうで対応(リトライ機能追加)
担当者より一言
お客様のご要望通り、HDDコピーシステムを動作させられてよかったです。
市販品を利用するのは、予想外の事が多々おきるんですね。
システム開発・評価ご苦労さまです。