2018年2月24日土曜日

NTT関連の電話料金を調べる

先日インターネット回線を取り替えたときに、我が家には数年間使われていないADSL回線があることが判明しました。

どうも元々のADSL回線を速いADSLに契約変更をした時に、古い契約が解除されていなかった模様。

解除するには電話番号 / 回線番号が必要だけど、クレジットカードの引き落としには「99月99日 NTT東日本(99月分) 9,999,999円」としか書いてない。電話番号はともかく昔使ってたインターネットの回線番号なんてわからんがな。

ってことで、ちょっとたらい回しになりましたが、なんとかわかりました。私は昔ちょっと会社をやっていましたが、その名義のままだったりかみさん名義の回線があったりで大騒ぎでした。

調べ方としては、まずNTTファイナンスに電話(0800-3330111:フリーダイヤル)して、本人確認などの後、クレジットカードの名義、カード番号、何月分の金額がいくらか、ということを伝えます。その場ですぐにはわからないので折り返し電話をもらいます。これで電話番号 / 回線番号を教えてもらえます。

次にNTT東日本に電話します(これもフリーダイヤル)。番号がわかれば簡単。本人確認と契約者名義(複数あるのでこれ?それともこっち?といくつか並べてもOK)と番号を伝えると、その回線の契約内容を教えてもらえます。これでようやく今使っていない回線が判明しました。完全に前のADSL担当のミスじゃねーかよ(苦笑)。

あとは、解約手続きです。何故かその回線の名義がツマだったので、ツマから連絡してもらいます。いやはや。

今回、116担当の方には本当にしっかりとサポートしていただきました。なんとか調べる方法がないか相談したところ、こういう方法があるということを教えてくださり、NTTファイナンスの担当さんに電話を直接転送して、結果として解決することができました。

…しかし、数年間数千円ずつ払いつづけてきた料金は戻ってこないんですよね。ざっと30万円ぐらいです。しくしく。

あと、電話だと本人確認の後で教えてもらえるのですが、私は聴覚障害者で電話できず、Webで調べたりしたものの文書のやり取りが必要で遅々として進みませんでした。しかし、iPhoneとBluetoothと接続可能な補聴器Widex Beyondを使ったので、普通の人と同じように電話できるようになり、数時間で解決できました。私は補聴器なしだと「いち」と「はち」、「さん」と「よん」を聞き分けできないレベルの感音障害なので、この補聴器なしだと例えば電話番号を教えてもらうのに一桁ごとに「えー? 2ですか? ツー?」てな落語のようなやり取りをしなければいけないんですが、先方がプロの電話仕事人ということもあってか、実にスムーズに会話できました。

補聴器変えた直後は耳に合わずに苦労したのですが、周波数特性などを念入れに調整していただいたおかげでここまで便利になりました。補聴器の調整にご尽力くださった眼鏡市場吉祥寺店の店長さん、心よりお礼申し上げます。

PmodMTDSループ



ちょっとマルチタッチ液晶ディスプレイでデモを作りたくて、PmodMTDSを物色

→事前にArduinoのサンプルがビルド通ることを確認。ソースを見ても他CPUへの移植はそんなに難しくなさそうだなと判断して注文

買ったのはShield版ではないですがArduino unoで動きました。

デモを動かすには別途microSDカードが必要です。

配布されているFAT32でフォーマットしたSDカードにダウンロードしたArduino版ツールを解凍するとDocumentation, Libraries, Resources, Sketchesフォルダがあります。

Resources下にある2つのフォルダごと画像をコピーしてmicroSDのルートにコピーして、MTDSにセットします。

もしArduino IDEが起動していたら終了し、Arduinoのlibraryフォルダの下にMTDSというフォルダを作り、その中にLibraries下の2つのフォルダの中身をコピーします。

Sketches下の.pdeを.inoにrenameしてダブルクリックすればArduino IDEが起動します。念のためですが、結線前のArduino unoにコードをダウンロードしておいてから結線します。

MyDispDemo1は表示だけ、2は読み込み後☆をタップすると画像が変わる、3は待ち時間wheelを表示した後でボタンをタップすると画像が変わる。3にはチェックボックスっぽいボタンが表示されているのでいろいろ期待しちゃうんだけど、ただのデモみたいっすね。

あmicroSD上の画像の処理はぜんぶPmodMTDS上で行われます。でも画像の書き換えは遅いですね。書き換えているところが目に見えます。MTDS上のCPUはPIC32なのでそんなに遅くないはずなんですが。

あとでArduinoより速いCPUでも試してみようと思ってRaspberry pi用のPmodHATも注文してしまったんですが、無駄になっちゃいましたね…。

以下はPmodMTDSとArduino unoとの結線図。

PmodMTDSArduino uno
P1 : ~CSdigital 10
P2 : MOSIICSP4 : MOSI
P3 : MISOICSP1 : MISO
P4 : SCLKICSP3 : SCK
P5 : GNDGND
P6 : VCC3V3
(下段 : NC)


2018年2月10日土曜日

ArduinoでSG90をゆっくり滑らかに動かしたい(失敗)



サーボSG90を20度/秒ぐらいで滑らかに動かしたいと思ったのですが、どうも難しいです。割り箸をホットボンドで接着するといういかにも共振したりハンチング起こしそうな条件ではありますが。

試行錯誤としては、
  • Arduino標準のServoライブラリのexample
  • 同じく、値を変えるごとにdetachしてdelayし再度attach
  • ESP32のLEDCを使って15bit PWM
  • ESP32 / Arduino unoでdelayMicrosecondsを使って正確なパルスを出す
などを試みたのですが、いずれも動画のようなブルブルっぷりでした。強いて言えばLEDCを使ったものが一番良かったですが、やっぱり震えます。今回使ったのはSG90のパチ品です。本物あるいはもっと高価なサーボを使えば滑らかに動いてくれるのでしょうか?

うーむ。

一応LEDC版のソースです。delayは「次のPWMパルスが出そうなところでledcWrite命令を出すとパルス列がコケるのではないか?」ということで一つだけ出るようなタイミングにしてみたりPWM周期を変えてみたりしましたが特に大きな変動は見られません。

こっちはdelayMicroseconds版。

2018年2月5日月曜日

Arduino nanoで肩こり対策デバイス・その2


■原理■

同僚さんから、「肩こりがひどいので電子工作で何かできないか」というご相談をいただいて作ってみたシリーズ第二弾です。第一弾は首肩の傾斜で振動するパターンでした。

今度は「ふと気がつくとモニタに近づきすぎている。近づいたら警告を」というデバイスです。モニタの上端に貼り付けて使います。

距離計測は超音波とToFを試してみたのですが、超音波は人間の顔だとあまりうまいこと検出できず、手持ちのToFは計測レンジが微妙に遠くてNG。シャープの赤外線距離測定デバイスを使うことにしました。

■製作■

Arduino nanoのパチを使いました。

距離センサー

表示にはNeoPixels / WS2812b的なLED

回路は、それぞれのGND同士をつなぎ、ArduinoのVinとセンサーとNeoPixelsの電源同士をつなぎます。距離センサーは最大約2.8vのアナログ出力なのでアナログ入力A0、ArduinoのA1とNeoPixelsのDinをつなぎます。

今回、0.19mmのエナメル線で配線しました。ワイヤリングペンも作ったので、GND-GND-GNDとつながるような場所が大変楽です…と言いたいところですが、所要時間的には架橋ポリエチレン被覆線とあんまり変わらなかったです。



ワイヤリングペン、シャープペンに通すのに例によって30cmほどに切ったワイヤを先端から差し込んで後ろの本体と接合して引っ張り出す作戦を取りました。が、前回は0.3mmだったので突き合わせでハンダ付けできたのですが、今度は0.19mm、さすがに細くて無理だったので、瞬間接着剤使いました。この時期は空気が乾燥しすぎていてなかなか固まらないので困ったもんです。今度、接着促進剤ってのを使ってみたい。

見た目は悪いけど使い勝手は良いですw


■プログラム■

起動したら、5秒間距離を計測して平均値を取ります。これが基準値で、これより近づいたら=値が大きくなったらLEDを点灯させます。

loop()ではanalogReadからの値を簡易的な移動平均処理で測定誤差をツブして無駄なチラツキを減らしています。距離センサーからの値は最大で500ぐらいなので、上記の平均値と500との中間点までは黄色、それを越えて近づいたら赤で点灯するようにしました。


2018年1月31日水曜日

補聴器の医療費控除

■補聴器代金を医療費控除する■

わりと著名なサイトに「処方箋が必要」と書かれていたので耳鼻科でそうお願いしたところ「処方箋なんて無いですよw」と言われました。

改めて、武蔵野税務署の窓口で相談してみたところ、まず、医師で聴力検査を受けた上で診断書(仕事をする上で必要なので、重度・高度難聴用の補聴器を購入する必要がある云々)を書いてもらい、その上で補聴器を購入し、他の医療費と一緒に医療費明細書(平成30年から医療費の領収書は不要になりました)に記載して、翌年の確定申告で申告する、とのことでした。

ついでに補装具費支給制度での支給を受ける場合、通常は片側のみ(1個のみ)についての支給なのですが、両耳装着によって言語明瞭度が上がるなど計測結果を添付するか、仕事の都合上両耳装着でないと業務に支障をきたす、等の事情がないと認められません(1個分のみの支給となります)。私はまだ現役の技術者であり、会議で聞き違いなどのリスクを避けるために少しでも明瞭な聞こえが必要なこと、取引先などと打ち合わせをする際に片耳だけ補聴器を装着して身体を斜めに突き出して聞き返すような形になるのは失礼なので両耳に装着する必要があること、などを記載して申請しました。

判定の結果がどうなるかはわかりませんが(追記:両耳装用が必要と認定されました)。

いずれの場合にも自治体により運用が異なる場合がありますので、医療費控除については税務署の相談窓口、補装具費支給制度については自治体の障害者福祉課などに、まず相談しましょう。

そして、医療費控除では診断書、補装具費支給制度についても医師により意見書(用紙は自治体の窓口で)が必要です。診断書と意見書が必要である胸を指定耳鼻科の窓口で伝えて診察と聴力検査を受けて、交付してもらいましょう。私の行った耳鼻科では診察1,900円、意見書と診断書がそれぞれ2,000円でした。

以上ご参考になれば幸いです。

2018年1月24日水曜日

ストレートネック矯正デバイスw

パチDigiSpark。小さいよかわいいよ。

同僚さんからストレートネックから来る肩こりに困っているので何とかなりませんか?と依頼。さくっと作ってみました。
追記

■原理■

本当は加速度センサーを2個以上使って頚椎の屈曲ぐあいを計る必要があるんですが、簡易的に頭が前傾しすぎたら警告を発するようにしました。起動から5秒間の平均値を求め、それ以上前傾したらダメ!です。

今回のユーザはメガネさんなのでメガネにセンサーを取り付けることにして、ポケットに本体と振動モータと電池を入れられるようにしました。

■構成■

マイコンとしてATTiny85のDigiSpark、センサにはADXL345(オーバースペック)、通知には秋月の振動モータ、ドライブは2SC1815です。振動モータは振動モータにしておくのがもったいないブラシレスです。ドライブ回路内蔵なので、電流制限抵抗省略、多分クランプダイオードも入ってるだろ、ということで外付けは省略。気になる人はちっこいダイオード付けておきましょう。

電源はモバイルバッテリを使いましたが、アイドリング中の消費電流が小さいのでバッテリ側で勝手に電源をオフにしてしまいます。幸い、SANYO KBC-L3S(絶版)は微小な電流でも切れないので、今回はこれを使います。cheeroのIoT機器用バッテリもこういう用途に使えるはずなのですが、ずっと欠品のままで3ヶ月です。このまま発売停止なら何か作るんだけど…出るのかでないのかはっきりしてくれい>cheero

回路図途中まで書いたけどKeynoteとEagle混合だとうまくいかず挫折orz
(あかん)


ということで配線図。

DigiSparkADXL3452SC1815モータ
5VVcc+
GNDGNDE
PB0SDA
PB2SCL
SC→5.1k→5V
SDO→5.1k→GND
PB1B(1kΩでPB1接続)
C-

CSをプルアップ(1608使用)
SDOをプルダウン(でかい)

プラスに配線、マイナスにコレクタ、ベースに1kΩと緑、プラスに赤、エミッタに黒

■追記:続編■

モニタからの距離を測定するバージョンも作ってみました。

■制御プログラム■

探すと見つかるインターネット。まず、これでADXLとDigisparkがちゃんとつながっていることを確認します。y方向に傾けるとオンボードのLEDが着いたり消えたりすればOK。

以下、
  1. 起動したら0.1秒 x 5秒間、X軸方向の加速度(傾斜)を検出し平均値を求める
  2. 平均値取得が終わったら0.1秒振動モータを回す
  3. それ以降、平均値より前傾したら振動モータを回す

だけです。つまり、メガネのツルなどにこの装置のセンサー部分(ADXL345)を取り付けて、「これ以上首を傾けたらダメ」な状態でバイブレータが鳴るまで5秒間静止します。

その後は、普通にお仕事をして、鳴ったら姿勢を改める、という仕掛けです。

なお、傾斜スイッチと振動モータと電池だけでいいじゃん、というツッコミを禁止します。


2018年1月8日月曜日

ESP32でAlexa日本語対応



Facebookで、ESP32からAlexaと日本語でやり取りできた、という記事を見かけたので試してみました。

■資材■



なお、ESP-IDFが必要です。


■作業■

https://github.com/MrBuddyCasino/ESP32_Alexaに書いてある通りですが:
  1. Githubに書いてあるとおり配線
  2. その他、GNDと3.3vも配線。しっかり確認。
  3. プログラムをGithubからcloneします。適当なディレクトリに移動し
    git clone https://github.com/MrBuddyCasino/ESP32_Alexa.git
  4. cd ESP32_Alexa
  5. github上に不足しているコンポーネントを取得します
    git submodule init && git submodule update
  6. ESP32のMACアドレスを取得。例えばこの辺のサンプルを使います。
    https://ht-deko.com/arduino/esp-wroom-32.html
  7. Alexa Authenticationを取得。Githubに書いてある通りです。
  8. make menuconfig -> Alexa ConigでSSID, Password, API Endpoint(US), Language(en-US), Anthentication Token(上記7で取得したtokenをそのままコピペします)を設定。Serial flasher conigなども設定。
  9. ESP32をUSBと接続
  10. make flash

wifiにつながって正常に起動するとスピーカーから「けけけけけ」みたいな声が聞こえます。「alexa, good morming」と呼びかけてみましょう。何かごちゃごちゃ言われます。

すっげー!

以上確認できたら日本語化します。この辺の記事を見ると、サーバ側だけでなくローカルにもLocale設定があるようで、
とりあえずGithub上で"en-US"でテキスト検索してみると、main/Kconfig.projbuildで設定している様子。なので、ja-JPが選択できるようにKconfigを変更してから、menuconigでlocaleを変更します。
  1. 設定ファイルをいじります。main/Kconfig.projbuildを開きます。
    • 以下の2箇所にja-JP / ALEXA_LOCALE_JA_JPを追加します。
      • choice prompt "Language"
      • config ALEXA_LOCALE
    • 以下の2箇所にALEXA_ENDPOINT_FE / "https://avs-alexa-fe.amazon.com"を追加します。
      • prompt "API Endpoint"
      • config ALEXA_ENDPOINT
  2. make menuconfig -> Alexa ConigでLanguage(ja-JP)を選びます。
  3. https://alexa.amazon.comで住所などを設定
  4. make flash

「けけけけけけ」が聞こえたら、「アレクサ、おはよう」と呼びかけてみてください。1月8日は、ホーキング博士についての紹介があります。



…って書くと簡単なんですが、alexa.amazon.comに住所設定してもうまくいかないし、ja-JPを選択するととたんに返事しなくなったり…大変でした。alexa.amazon.co.jpに設定しないとダメとか両方に設定があると動作がおかしくなる、等の情報もあって右往左往しまくりでした…。

■追記■

END_POINTはUSのままでも動作しますが、facebookに紹介されていたので加筆しました。情報を提供してくださってありがとうございます。お陰さまで連休中の作業が無駄になりませんでした。

あと、しばらく放置していると突然「けけけけけけ」と哭きます。大変不気味です。ログをみたらExceptionを吐いていました。Exception->再起動->起動して「けけけ」ってことですね。あんまり気持ちのいい声ではないのでビックリしました。

2018年1月4日木曜日

Amazon FreeRTOSを試してみたけれど


ターゲットへの書込みはうまくいってWiFi接続もできたんだけど、そこから先がうんともすんとも進まない。

ダメならダメでエラーメッセージ出して欲しいっす。タイムアウトなんて贅沢は言いません、せめて今何を待っているのか教えてください。


2017年12月31日日曜日

クラウドファウンディングのハードウェア担当でした


股間のパッドを叩くと「チーン!」と音がするというシンプルな楽器Banggosのハードウェアを担当しました。

■発端■

発案者のFさんからWantedly経由でハードウェアを製作して欲しいと連絡がありました。SwitchScienceで発売しているハードウェアをご覧になったとのこと。面白そうなので担当させていただくことになりました。Chatのやりとりでこんなことが決まりました。
  • 担当するのはハードウェアのみ
  • ESP-WROOM-02を使う
  • WiFiで飛ばしてスマフォから音を出す
  • 衝撃スイッチを用いるバージョン
  • 導電布タッチセンサーを使うバージョン
  • 電源は単三電池3本(外国では単四を入手しにくいため)
    ※その後、海外対応が不要になったため単4電池2本に変更

※現在倉橋浩一はWantedlyは使用していません。
 ご連絡くださる場合には、facebook, LinkedInなどでお願いいたします。

■検討:衝撃スイッチ■

衝撃スイッチを搭載した基板を設計して、Elecrowに発注、自分で実装して試してみました。音楽センス皆無の私からすると叩いてすぐに反応しているように見えたのですが、発案者で音楽家のFさんには「遅延が大きすぎる」との評価。

スイッチを交換したバージョンを何種類か作ってみたものの、状況は変わりませんでした。

■検討:導電布■

ご存じのように多くのマイコンのGPIOは静電容量を用いてタッチセンサーとして用いることができます。まず、支給された高価な導電布を用いてESPに実装してみましたが、感度の調整が難しく、感度を上げると手を近づけただけで反応するなど思わしくありません。導電布ではなく導線・銅板などを使うと意図した通りに反応するので、導電布の導電性が思ったより低いのが原因のようでした。

また、動作が不安定なので、AT42QTシリーズなどの専用チップを用いてみました。これは電源投入時・リセット時に自動的にチューニングをしてくれるというものです。これも銅線ではうまくいきますが、導電布では難しい状態です。

導電布に変わるものを探したところ、Switch Scienceから「EaoTex感圧導電布」が発売され、試してみました。圧力で抵抗値が変わるモノなので、当初は抵抗値で作動させようと思って入手したのですが、これをAT42QTを組み合わせたところ、ほぼ理想的な特性が得られました。価格も前記導電布の1/10程度で非常に安く、耐久性もありそうです。

ただ、着衣状態でのタッチセンサー動作はやはり不安定で、安定させると反応が遅くなってしまう傾向があり、ドラムという打楽器には難しいのではないかと判断しました。

■検討:加速度■

加速度センサーについては当初も案があったのですが、踊りながら叩くというような状況で叩く衝撃と踊る衝撃を区別するには演算が必要で、そうすると遅れが出る……ということで没にしていました。

が、改めて使ってみたところ、叩く衝撃と踊る衝撃は方向が異なるので、ごく単純な演算処理だけで検出できるということがわかりました。Fさんの評価でも遅延はなく、加速度センサー使用によるコストアップは導電布を使わないことで吸収できるとわかり、最終的に決定しました。

また、音の出しやすさなどからCPUについてはESP-WROOM-32とし、内蔵DACからヘッドフォン端子に音を出しつつWiFiで飛ばす。電源については昇降圧DC/DCコンバータを用いて電池2本で駆動する、ということになりました。これならエネループでも新品のアルカリ乾電池でも安定して動作させられます。

■試作:失敗!■

設計した基板をpcbgogoに発注して自分で実装したところ、1発で動作しました。ステンシル無し+ホットプレートリフローでQFNを搭載したボードが一発で動くなんて奇跡です(笑)。ということで、いつものElecrowに5枚の試作を依頼しました。

が、これは動作しませんでした。それは、今回使用した加速度センサのパッケージはQFN16(0.5mmピッチ)はElecrowのデザインルールを下回っていて、ピン間にレジストが回っておらず豪快にブリッジしていました。Eagle CADにElecrowの支給するデザインルールを用いてチェックし問題はなかったのですが、それとは別にWebに最低0.25mmと記載されていました。こちらで設計したQFNのレジスト太さは最低0.1mmでした。

さて、困りました。数個の試作、あるいは数十個単位の製作をElecrowほどの低価格で引き受けてくれるところはそう多くありません。

国内の業者のWebで自動見積をしたところ5個7万円弱、50個9万円弱と出ました。量産はまだしも、失敗する可能性のある試作が7万円というのは非常に痛いです。

探した結果、Seeed StudioのFusion PCBならば0.1mm精度のマスクにも対応可能とのこと。ただ、当然ながら単価は大幅に上がってしまいます。20個で約4万円。当初予定の約10倍です。部品代もESP-WROOM-02のタッチセンス版と比べると約2倍になってしまいました。プロダクトオーナーのFさんの了解を得て進めました。

■量産試作■

回路に問題ないことは確認できていたのでFusion PCB Aに発注。すべての部品は日本から送り、部品到着後2週間。設計意図通りに動作しました。
 
ESP32のI2SライブラリはデータをまとめてセットするAPIと1語ずつセットするAPIが用意されています。前者だと音データが終わるまで他の処理ができないので、今回は後者を使いました。音をだすためのスレッドを作り、その中でシグナルが来たら音を出し、もし途中で別のシグナルが来たらそっちに切り替える、という単純な方法です。

加速度センサーの処理は直近のデータの三軸合成値の移動平均を求め(重力加速度)、その値から大きく変化したら「叩かれた」と判断して音出しシグナルを出します。こうすることで、踊って姿勢が変わっても無駄に音が出ず、叩いた時だけ的確に判定できるようになりました。

■量産■

内部抵抗の大きくなった電池でも安定して動作するようにDC/DCの入力側のパスコンを大きくするなど細かい変更を行って、量産発注しました。発注から約3週間、先方に部品到着から約10日で受け取ることができました。



12月30日の夕方到着。12月31日に動作確認を行った後、基板に電池ボックスをハンダ付けし、プロダクトオーナーの元に送りました。

基板試作は何だかんだで7種類、PCB Aでも3種類作りました。工数は軽く100時間を越え、失敗作分などの持ち出し経費もだいぶ多かったのですが、得るものの多いプロジェクトでした。

冒頭にも記載しましたが、倉橋浩一個人としてこのような基板の設計・製作をお請けすることは可能です。Facebook, LinkedInなどからご連絡いただければ幸いです。

また、KickstarterおよびCampfireでの募集はすでに終了しておりますが、発案者のFさんに直接コンタクトとっていただければ対応可能とのことです。

■IGNICTION■

プロジェクトが進んでいる間に、iFaceなどを作っているHamee株式会社に転職することができました。勤務先のHamee株式会社ではプロダクト・インキュベーション・プロジェクト「IGNICTION(イグニクション)」を開始いたしました。ハードウェア設計・製作支援もご相談可能ですので、ご興味のある方のコンタクトお待ち申し上げております。

念のためですが、このブログ記載内容の一切の責任は倉橋浩一個人にあり、Hamee株式会社とは関係ありません。またBanggosもHamee株式会社とは無関係です。IGNICTIONについてもここでは制度の存在を告知するのみであり、その以上のものではありません。

ラズパイ用micro SDカード管理(小ネタ)

ホコリも吸着するという問題が

あのちっこいSDカードに、ネームランドのテープを貼ったりしていまいしたが、ネームランド面倒くさい。

ふと思い立ってポストイットのノリ部分にmicro SDを直接貼ってみたら、意外と便利でした。しばらく使わないときはクリアファイルに内側から貼り付けておけばファイリングも可能ですw