M.C.P.C. (Mamesibori Creation Plus Communication)

印刷屋から五反田のWeb屋に転職したCLのブログです。

ESP-WROOM-02を昇圧電源回路で乾電池2本(2.4V)駆動

ESP-WROOM-02は、3.0V~3.6Vの電圧で動くとありますが(つまり3.3Vで使えってこったね)、どうやら瞬間的に350mAぐらい使うので、それを流しても電圧があまり落ちないぐらいのタフな電源でないとリセットがかかってしまうとのこと。

ねむいさんのぶろぐ | ESP-WROOM-02を使ってみる3 -そんな電源で大丈夫か-

ところで、こういうマイコンって乾電池2本ぐらいで動かしたいですよね?

定番の昇圧電源回路

いつも使っているHOLTEK HT7733Aの昇圧電源回路があるんですが、

akizukidenshi-ogp-injector.dtpwiki.jp

f:id:C_L:20151103143003j:plain

これはうまく設計すると200mAまで出せるというICで、ブレッドボードで雑に作ると200mAなんて出ないわけですけれども、Atmega328と7セグメントLEDの回路ぐらいならこれで動きます。しかし、ESP-WROOM-02は起動すらしない。

秋月電子の他の昇圧電源も3.3V/500mA付近は出ない

akizukidenshi-ogp-injector.dtpwiki.jp

akizukidenshi-ogp-injector.dtpwiki.jp

を手持ちで持っていますがやっぱり500mAは無理。

TPS63000でパワフル昇圧電源

そこで、TPS63000が組み込まれたストロベリーリナックスの昇圧回路を使ってみました。スペックを見ると、

  • 出力電圧:3.3V(はんだジャンパで5Vに変更可)
  • 最低起動電圧:1.8V
  • 入力電圧:1.8V~5.5V
  • 最大出力電流:0.8A(入力2.4Vのとき)

となむ。

TPS63000 昇降圧DC-DCコンバータモジュール(3.3V/5V) - TPS63000 - ネット販売

こんなかんじ

f:id:C_L:20151103135908j:plain

エネループ単四乾電池でも動く。ちなみに動かしているアプリケーションは10分ごとにHTTPでjson取得してマイコン内蔵RGB LEDをRGB値の通り光らせて、ESP-WROOM-02自身はdeep sleepに入るというもの。

f:id:C_L:20151103141050j:plain

停止した時点で負荷つなげたまま入力側(電池)の電圧を測ったら1.7V程度。

f:id:C_L:20151103140735j:plain

ニッケル水素蓄電池の終止電圧が1.0~0.9Vと設定されることが多いから、2本で2.0V~1.8Vから比べるとちょっと下がっているけれども、まだセーフかな?

postfixで不達メールキューをメールアドレス指定して一括削除

postsuper -d ALLやると全部消えてしまうから怖い。かといって、postqueue -pでキューリストを取得し消してもいいキュー番号を確認して、postsuper -d {Queue ID}でキュー番号を指定して消せるが数が多すぎて残業代もでるわけもなく死ぬるとき使おう。

具体的には、絶対届かないメールアドレスをフォームにぶっこまれて何百通も送信されてしまうっていうやつ。もしかしたら、WordPress乗っ取りされてLinuxサーバがメール送信踏み台サーバになったときも使えるんじゃないかな(←さりげないサーチエンジン用検索ワードの付加)。

rootユーザで

# postqueue -p | tail -n +2 | head -n -1 | paste - - - - | \grep -e test@example.com | awk '{print $1}' | xargs -r -l postsuper -d

postqueueコマンドの出力を流用するのだけれども、

  • 1行目: カラム説明のヘッダ
    • 2行目: Queue ID, Size, Arrival Time, Sender
    • 3行目: メッセージ
    • 4行目: Recipient
    • 5行目: 空行、以降2行目~5行目を繰り返す
  • 最終行: キュー数とキロバイト数を表示するフッタ

という複数行の形式なので、Recipientで行grepできず、先ずヘッダ行とフッタ行をtail -n +2 | head -n -1 で削り、paste - - - -で4行分を1行にくっつける。それの1カラム目をawkで取り出して行リストができたのをxargsでぶった切ってpostsuperの引数に1つずつ入れて実行してあげます。

このあと、Webアプリ担当君に変なフォーム送信を防ぐような作りにしてもらおう。

pasteコマンドは、複数のファイルの行リストを横に連結するなどにも使える謎の使い勝手があります。使おうとしたときにpasteコマンドなんて忘れているんだけど。

秋月電子AT-ESP-WROOM-02で試作環境を作る

秋月電子から話題のモジュールESP−WROOM−02が出ているのですがこれで実際にLチカできるぐらいに組み立てることをやります。

部品表

部品は通販に便利なように秋月電子でまとめています。

品名 価格 コメント
Wi−Fiモジュール ESP−WROOM−02 DIP化キット 650 爆安のWiFiモジュール。Arduinoにも化ける
タクトスイッチ(黒) (10個入) 120 リード付タクトスイッチはブレッドボード工作に◎
カーボン抵抗 1/2W 10kΩ (100本入) 100 多い日も安心プルアップ用10kΩ抵抗
ブレッドボード BB−801 200 日本名でまな板とか流行らなくてよかったね
FT231X USBシリアル変換モジュール 750 USBの5V取れるものがありがたい
三端子レギュレータ3.3V500mA TA48M033F(S Q) 100 5Vから3.3Vを生成 2種類のコンデンサ同梱で便利 初出時5Vにする製品になっていました
ブレッドボード・ジャンパーワイヤ 400 色がバラバラになるのは勘弁な
高輝度5mm白色LED OSW54K5B61A (10個入) 250 Lチカも白色LEDの時代
------------------------------------------ ---- ----------------------------------------------
合計 2570 Arduino Unoより安いのではないかな

akizukidenshi-ogp-injector.dtpwiki.jp

akizukidenshi-ogp-injector.dtpwiki.jp

akizukidenshi-ogp-injector.dtpwiki.jp

akizukidenshi-ogp-injector.dtpwiki.jp

akizukidenshi-ogp-injector.dtpwiki.jp

akizukidenshi-ogp-injector.dtpwiki.jp

akizukidenshi-ogp-injector.dtpwiki.jp

akizukidenshi-ogp-injector.dtpwiki.jp

配線

配線はこんな感じ、LEDとタクトスイッチは同等品(あとで気が向いたら清書する)

ポイントは、USBシリアル変換モジュールからLDO(三端子レギュレータ)を使って、ESP−WROOM−02の起動に耐えうる電流を流せる3.3V電源を作るところです。無線LAN部は消費電力が高いので3.3Vの電源が弱いと起動時に再起動してしまう。

2つあるボタンのうち一つ(SW2と呼ぼう)はRSTにつながっていて押して離すと文字通りリセット、もう一つ(SW1と呼ぼう)はIO0につながっていて起動時orリセット時に押し込まれていることでプログラム転送モードになるものです。

動作確認

いろんなところに説明があるので割愛するが、まずはATコマンド通るかどうか試すところからやろう

先にPCとUSBシリアルモジュールだけをmicroUSBケーブルでつなげて、COMポートに割り当てておく。そのあと、COMターミナル(Arduinoのでも可)で115200bpsでつなげて「AT」エンターしてみよう

他にもATコマンドであらかじめ入力して設定を紙に書き写しておいた方がいいものとかもあるのでやっておこう

Arduinoとして使う

いろんなところに説明があるので割愛

プログラム書き込みモード(UART Download Mode)にしないと書き込めないが、SW1を押しながらリセット(SW2を押して離す)をするとそれに移行するので、Arduino IDEから転送する前に操作する

なお別製品の方がよい

ちょうど2015/10/23にスイッチサイエンスから今回パーツを集めて作った試作環境(プロトタイピングとかいいますね)が一発で揃う奴が出ていた。ぎゃふん。

www.switch-science.com

追記

セマフォ不足でApacheが起動できないときセマフォをまとめて削除する

まとめ

Apacheが起動できない状態で、解放されず残っているapacheユーザのセマフォを消すには、rootユーザで

ipcs -s | awk '/apache/{print $2}' | xargs -r ipcrm sem

/apache/のところは、Apache実行ユーザに読み替えよう)

経緯

セマフォ不足でApacheが起動できなくなるっていうトラブルがありました。

前回は10か月前19時30分開始のGotanda.pm #3に参加するため19時退社して(うちは定時21時なんです)モバイルファクトリーの社内で参加中20時ぐらいに会社から電話かかってきて「Apacheが起動できませ~ん」というのでリモートで潜って対応。

今回は、アパートの立ち入り検査があるとかで有給休暇を取って全裸待機していたら朝10時位に電話がかかってきて(うちは始業は10時なんです)「Apacheが起動できませ~ん」というのでリモートで潜って対応。

セマフォ不足であることを示す直接のログは出てこず、Apacheのエラーログに

  • No space left on device: Cannot create SSLMutex
  • No space left on device: Couldn't create accept lock
  • No space left on device: mod_rewrite: could not create rewrite_log_lock

等のなんかのスペースが足りん的なエラーメッセージとして出てくるようです(監視システムなどに設定するのはこのエラーメッセージを設定することになる)。

初回のインシデントの時点で自動で復旧できるぐらい組んどけよっていう批判は甘んじて受けますがともかくセマフォ不足でApacheが起動できないというのをGoogle検索しますと、セマフォの消し方としてこういうのが出てきます。

www.geek.sc

ipcs -s | grep apache | perl -e 'while (>STDIN<) { @a=split(/\s+/); print `ipcrm sem $a[1]`}'

(ダイヤモンド演算子ってそういう書き方できるんだ)よく見るとPerlワンライナーってwhileを書かなくても書いたことにできるスイッチあったよなーと思ったのでいじってみました。

改善

ipcs -sで出てくるのは

# ipcs -s

------ セマフォ配列 --------
キー     semid      所有者  権限     nsems
0x00000000 0          root       600        1
0x00000000 32769      root       600        1
0x00000000 6619138    apache     600        1
0x00000000 6651907    apache     600        1
0x00000000 6684676    apache     600        1
0x00000000 6717445    apache     600        1
0x00000000 6750214    apache     600        1
0x00000000 3670033    root       600        1

という文字列です。Apacheセマフォ不足で立ち上がらないというのは、何らかの原因でApacheが作ったセマフォが百数十個残ったままになっているということ。何も考えずCentOS5/6をセットアップすればカーネルに設定されたデフォルト上限値として128個まで作れることになる(see: kernel.sem)。というわけで、セマフォ不足でApacheが起動できないという場合は、apacheの実行ユーザが所有者となっているセマフォipcrm sem {semid}を実行して120回ぐらい延々と消す必要がある。

要はipcs -sapacheユーザでgrepしたやつの2番目のカラムの{semid}を引数にしたipcrm semを実行させればよいわけなんで、

基本形の

ipcs -s | grep apache | perl -e 'while (>STDIN<) { @a=split(/\s+/); print `ipcrm sem $a[1]`}'

から、

  • Perl-nスイッチで標準入力1行ごとのwhileループを省略しよう
  • 暗黙の$_@_を活用しよう
  • バッククォート演算子じゃなくてsystem関数だとメッセージをprintしなくてよい

つうことで、

ipcs -s | grep apache | perl -nlE 'split(/\s+/); system "ipcrm sem $_[1]"'

としてみた。よく見ると、Perlコマンドラインオプションの-aをつけるとawkモードになって@Fに自動的にカラムが入ってくれるからsplitいらなくなるじゃないかと思って、

ipcs -s | grep apache | perl -a -nlE 'system "ipcrm sem $F[1]"'

としてみた。ところで、最近のLinuxディストリビューションだと最小構成インストールでPerlが入らないという大変なことになっていたりするので、Perl抜きで組み立てたほうがよくね?と思い、

ipcs -s | grep apache | awk '{print $2}' | xargs -l -r ipcrm sem

ここまで来ると、grepの作業ってawkでもできるよねってなって、

ipcs -s | awk '/apache/{print $2}' | xargs -l -r ipcrm sem

となる。そんで、よく考えると、ipcrmmanを見ていなかったことに気づき、参照したれば、

IPCRM(1)                   Linux Programmer’s Manual                  IPCRM(1)

NAME
       ipcrm - remove a message queue, semaphore set or shared memory id

SYNOPSIS
       ipcrm [ -M key | -m id | -Q key | -q id | -S key | -s id ] ...

       deprecated usage

       ipcrm {shm|msg|sem} id...

とありましたので、今まで安全のために入れておいたxargs-lオプション(引数を1個だけにして、1回ずつ実行させる)を取っ払って、

ipcs -s | awk '/apache/{print $2}' | xargs -r ipcrm sem

あたりに落ち着きました。

アイキャッチ画像に使ったセマフォ写真は File:Udegishiki Tokushima.jpg - Wikimedia Commons

秋月電子通商の個別商品ページにOGPメタデータをつけてイケてるブログカード貼れるサイト作った

github.com

秋月電子通商、お盆で秋葉原の店舗がリニューアルしましたね。たまげた。

そんなことにはあまり関係ないが、秋月電子通商のオンライン販売ウェブサイト、まさに電子部品のデパートみたいで見ているとオラなんだかワクワクするのですが、「このイケてる商品のリンクをはてなブログに貼ろう」とすると、こんな感じでちょっと残念です。

akizukidenshi.com

せっかくの商品の魅力が台無しなので、見栄えがよくなるよう、具体的に言うとOGPのメタデータを埋め込むサイトを作りました。

使い方(はてなブログ

秋月電子の個別商品ページのURLが

http://akizukidenshi.com/catalog/g/gM-07385

だとしまして、これをはてなブログに貼ると

akizukidenshi.com

となります、これがはてなブログの「はてなブログカード」+秋月電子の商品ページのメタデータでの表現です。

さて、秋月電子の個別ページのURLの前に、今回用意しました「http://akizukidenshi-ogp-injector.dtpwiki.jp/」を付けまして、

http://akizukidenshi-ogp-injector.dtpwiki.jp/http://akizukidenshi.com/catalog/g/gM-07385

とすることで、OGPに対応したメタデータが埋め込まれたページができるので、それをそのままはてなブログに貼ると、

akizukidenshi-ogp-injector.dtpwiki.jp

こうなります。商品の写真が表示され、商品の詳細説明が読めるので、「どらどら、サイトに行ってみようかな?」となりそうな雰囲気だと私は思います。

秋月電子アフィリエイトとかはない

TwitterでもOGPでTwitter Card

Twitterにインジェクタを通したURLを貼ると、Twitter Card展開してくれて、商品画像が出てくれるのでうれしい。

f:id:C_L:20150911024602p:plain

Facebookはむずかしい

OGPといえばFacebookですが、FacebookのOGPパーサは割と厳格に解釈するので、今回のインジェクタのように本来のURLを指示したまま別のページを作るのはNGでした。og:urlのドメイン秋月電子通商からインジェクタのドメインに差し替えてしまえばいいのでしょうが、さすがにそれはいかんと思う。

インジェクタのウェブサイト

あまりユーザインタフェースいらない仕組みなんですが、とりあえず作ってあるので、ブックマークするならこちらをどうぞ。

akizukidenshi-ogp-injector.dtpwiki.jp

ギャラリー

使用前・使用後の比較画像です。

f:id:C_L:20150911022518p:plain

f:id:C_L:20150911022525p:plain

f:id:C_L:20150911022532p:plain

f:id:C_L:20150911022541p:plain

関係ないが

印刷関連の一般社団法人JaGraっていうところが印刷関連の動画を配信する「ジャグラBB」っていうサイトを持っていまして、新着動画がわかりにくいのでRSSを生成するやつを8年前作ったわけだけれども、

blog.dtpwiki.jp

blog.dtpwiki.jp

印刷展示会(IGAS)のときJaGraのブースがあったので名刺出して「せっかくの動画サイトなんで、RSSあったほうがいいですよ」とか言うたりしたが未だにジャグラBBにはRSSが付かないので、こういうのは外部の人間が便利だーとか言っても変化がないものである。

今回の秋月電子のサイトにOGPメタデータが付いていたらいいのにな、でも付いていないから野良で付けるのです、というのもこのままになりそうだなあと思いました。

そういえば、マルツもOGP出ていない

www.marutsu.co.jp

きりがない

インターネットが1Mbpsから8Mbpsになって夏'2015

わたし東京にkickり出されてから、インターネット回線をどうしようかっていうのがずうっと問題でして、金がないしせっかく都会にいるんだからWiMAXっていうものを使ってみよう、という考えで、今までの経緯としては

みたいな環境です。

それに加え、住んでいる物件が途中でCATV設備のリニューアルでCATVモデムを設置して0円インターネット(1Mbps)ができるようになっていたので、ヤマハのルータRTX1000を中古で買ってきて、WiMAXとCATVの両方でインターネットができるように設定しておりました。

外出するときにWiMAXルータを持ち出すと、RTX1000WiMAXルータへのpingを9回失敗して、その後WANをCATVに切り替えるっていう奴。帰宅するとRTX1000WiMAXルータへのpingが成功するので、WANがWiMAXルータに切り替わる。

(在宅時)               ¦(外出時)
┌──────┐¦ ┌─────┐  ¦┌──────┐  ┌─────┐
│WiMAXルータ │¦ │CATVモデム│  ¦│WiMAXルータ │  │CATVモデム│
│(\3696/月) │¦ │(\0/月)  │  ¦│は鞄の中  │  │(\0/月)  │
└──┰───┘¦ └──┬──┘  ¦└──────┘  └──┰──┘
………┃…………     │     ¦ (接続なし)      ┃
┌──┸───┐     │     ¦┌──────┐     ┃
│MZK-RP150NA │     │     ¦│MZK-RP150NA │     ┃
│(コンバータ)│     │     ¦│(コンバータ)│     ┃
└──┰───┘     │     ¦└──┬───┘     ┃
   ┃WAN1 6Mbps    │WAN2 1Mbps¦    PING失敗     ┃WAN2 1Mbps
┌──┸─────────┴──┐  ¦┌──┴─────────┸──┐
│RTX1000(イオシスで1000円)   │  ¦│RTX1000(イオシスで1000円)   │
└───────┬───────┘  ¦└───────┬───────┘
        │LAN 100Mbps     ¦        │LAN 100Mbps
┌───────┴───────┐  ¦┌───────┴───────┐
│GS108E(NTT-Xで4800円)     │  ¦│GS108E(NTT-Xで4800円)     │
└──┬──────────┬─┘  ¦└──┬──────────┬─┘
   │LAN GbE       │    ¦   │LAN GbE       │
┌──┴───┐      │    ¦┌──┴───┐      │
│PA-WG1200HS │      │    ¦│PA-WG1200HS │      │
│(無線LAN AP)│      │    ¦│(無線LAN AP)│      │
└──┬───┘      │    ¦└──┬───┘      │
   │Wi-Fi 11ac      │LAN GbE ¦   │Wi-Fi 11ac      │LAN GbE
┌──┴────┐┌────┴───┐¦┌──┴────┐┌────┴───┐
│PC/PSVita/3DS ││PC/Mac/Linux/PS3│¦│PC/PSVita/3DS ││PC/Mac/Linux/PS3│
│iPad/Android..││NAS/RasPi/XenVMs│¦│iPad/Android..││NAS/RasPi/XenVMs│
└───────┘└────────┘¦└───────┘└────────┘

【ここで突然機材紹介】

無線モバイルルータを家庭用インターネット回線にする時のキーになる製品。無線モバイルルータに有線でつなげるようにするコンバータモードで利用します。製品が自動的に無線モバイルルータのWi-Fiとリコネクションするので、モバイルルータを持ったまま家に入ると自動的にモバイルルータへのルートができあがり、後段のルータの機能でWANとみなして家庭用インターネット回線として利用できます。現行モデルではないですが、同様の機能を持った製品がありますのでそちらで試されるとよろしいかと思います。

先日書いたIEEE802.11ac 867MbpsのUSB無線LANアダプタ

でのベンチマークをしたくて買った。ほぼ同じスペックで屋内中継機能が付いた価格が高いPA-WG1200HP、有線LAN部が100MbpsのPA-WF1200HPが店頭にあるので注意。罠だろ。ビックカメラの渋谷店にはあんな狭い店舗なのにPA-WG1200HSも置いていたので良心的だと思います。

5000円ぐらいなのに閉ループ接続したら異常接続を検出してダウンを防ぐことができたり、VLANできたりするチョットカシコいスイッチングハブ。転職面接時に「最後に、何がご質問はございますか?」と面接官に言われたとき「御社の業務内で実際に苦労したことはありますか」と聞くと、社内エンジニア職だとスイッチングハブにユーザが勝手にLANケーブルを挿したせいで閉ループができてネットワークがダウンして困ったとかいうのを言われることがあるらしく、それを聞くと、〇ッ〇ァ〇ーの業務用とかよりこういうチョットカシコいスイッチングハブを島に置くと防げるのになーと思うのだけれども、いろいろ理由があるのだろうなあとも思う。

ヤマハ ギガアクセスVPNルーター RTX1200

ヤマハ ギガアクセスVPNルーター RTX1200

図内ではRTX1000を使っているけれども、RTX1200があるといろいろできるので持っているとよい。後継機種RTX1210が出たことで、2015/8現在中古品が今アキバで2万~3万、ネット通販でもその位で売っている。

【機材紹介おわり】

ところが、WiMAX2+で2015/5に通信量に応じた速度規制が始まりまして(契約から2年は速度低下がないっていうあいまいな約束がルール変更の余地がある規約になっていて後出しルールで反故にされた)、こらつらいなーこいつらも商売人としてつらいなーって思っているところでした。

通信速度は、WiMAX1時は3Mbps、WiMAX2+時は6Mbpsぐらい、通信量は少ない月で大体70GBだったので、どの無線通信サービスにしてもつらいなーということで、困っていたんですけれども、CATVの無料サービスのやつを速度プラン上げて有料にすればよくね?と思い、ケーブルインターネット会社に電話したら即日でスピードが上がった。都会と特定の地方はCATV会社のインターネットがあってとても良いですね。

1Mbps⇒8Mbpsのセカイ

8Mbps切り替え後速度測定では7Mbpsが出ているので、WiMAX2+とかのMax110Mbpsとか言うて15Mbps出ていると上出来という世界とは違ってとても良い。これでCentOSのDVDイメージとかnohupかけてダウンロードしなくても済む(2015年に書く話題ではない)。

あとWiMAXだとTCPセッション張っていてもお構いなしに切断が起きていたけれども、CATV回線だと起きない。あたりまえだ。でもありがたい。CentOSのDVDイメージをVPSサーバに入ってnohupでダウンロードしておいたやつを家にダウンロードするときに安全にダウンロードできる(2015年に書く話題ではない)。

あとエッチなサイトのエッチ広告アグリゲータの一部の広告が表示されないのはこれなんかIPブラックリストとかあるわけ? DMMとかはくっそ出る(2015年とか関係なく書く話題ではない)。

ところで、低速インターネットの世界に慣れると、転職面接で「注目しているウェブサービスについて挙げてください」とかいう質問にわりと答えられなくなるので注意。はなやかなりし高速回線前提のサービスは選択しなくなったというのはこのブログの過去エントリが電子工作寄りになったことを見ても明らか、貧すれば鈍するとはこれのことだ。だがしかし電子工作も面白いよ。

ピカリ館の単色LEDパネルとRaspberry Piで文字バナーを流す

夏休みの自由工作のつもりなのだが夏休み最後の日の8月24日はとうの昔に過ぎてしまっていたわけであり、そんなの気にせずできたところまで出す。

前にやったところ:

cl.hatenablog.com

プログラムなんですけど、JavaScriptってこれでいいかどうかわからないんですよね。詳しい人に指導してもらいたいなあ。

gist.github.com

動画

www.youtube.com