J1端子を使ったobnizの電池駆動について検証してみみた

先日コピペテックの記事に タミヤ カムプログラムロボットをobnizでラジコン化してみた を投稿しましたが、100円ショップのモバイルバッテリーがロボットにちゃんと収まってなかったりと完成度がイマイチでした。
そこでカムロボットに付いている電池ボックスからobnizに電源を供給できれば、もとの見た目を崩さずに完成度を上げられるのでは?と考え、5V電源作れれば良いんだろうと秋月電子から 5V出力昇圧DCDCコンバータを買ってきて試してみたところ、残念ながらobnizは起動せずでした。。
そこで、改めてobnizの電池駆動について検証してまとめてみることにしました。

obnizの動作電源について確認

スイッチサイエンスのobnizで仕様を確認すると

  • 動作電圧: 5V(microUSB or J1ピン)
  • 動作電流: 平均 170 mA(Wi-Fiにつながり、BLEはスタンバイ、外部に何もつながっておらず、OLED使用中の場合)

とあります。

結論から言うと、秋月のモジュールでobnizが起動しなかったのは、流せる電流の負荷をオーバーしていて電圧も下がってしまっていたからです。

電池で5Vかつ170mA以上の電流を供給可能な電源の作成方法

モバイルバッテリーでのUSB給電はどうしても場所を取るので、5Vかつ170mA以上の電流を供給可能な電源を作成して、J1端子を利用してobnizを電池駆動するを考えてみると、以下のような方法があります。

  1. 電池のみで5Vの電源を作る
  2. 9V電池など5V以上の電源から3端子レギュレータを使用して5V電源を作る
  3. 5V以下の電源、電池1本1.5Vまたは2本3.0vなどから昇圧DCDCコンバーター・モジュールを使用して5V電源を作る
  4. 9V電池など5V以上の電源から降圧DCDCコンバーター・モジュールを使用して5V電源を作る

この記事では、まず1の電池での動作を確認してみます。
次回以降の記事では、2.の3端子レギュレータ、3.昇圧DCDCコンバーター・モジュールを使った場合について検証結果をまとめる予定です。
4.の降圧DCDCコンバーター・モジュールについては2.と概ね同じなので試していません。

obnizのJ1コネクタの使い方

obnizでUSB以外から給電する場合、USBコネクタ横のJ1コネクタを使います。

今回J1ピンにつなぎやすくするために以下のようにL字コネクタをはんだ付けしました。

表側からみて + のシルクが付いている方をVCCについてない方をGNDにつなぎます。

電源電圧・電流の計測

obnizに電源をつないだときに、電圧5Vが維持できていること、電流がどのくらい流れていか確認したいので、電源と電流が同時に計測し表示できる計測器をAmazonで購入してみました。

パネル取付け型DCデジタル電圧計電流計 赤青 100V 10A バルク品 323円

とても安いですがちゃんと動きます。
(デジタルマルチメーターなどが手元にあれば、それで代替可能です)

この計測器は、電流は10mA単位で細かくは計測できませんが、おおよその消費される電流と電圧が5Vを維持できているかは確認できますので、今回の用途としては十分です。

使い方は、類似商品 デジタル電圧計&電流計 (DC 100V 10A) 【赤V&黄A】 のページに詳しく書いてありましたので、こちらを参考につないでいきます。

電池のみ5V電源でobnizを起動

最終的には、電池一本で動作させることが目標ですが、J1端子の使い方を確認するため確実に5V電源とそこそこ電流を供給できるであろう構成を調べたところ、ラズパイなどの5V電源のマイコンを電池駆動させる方法についていくつかの記事を見つけました。
ラズパイを起動するには電流500mAくらい必要らしいですが、ニッケル水素電池1.2v x 4本を使うとちょうど5Vを超えたくらいの電圧になり電源として使えるらしいです。
obnizはラズパイほどの電流は必要ないので、確実に起動しそうです。

ニッケル水素電池と電池ボックスは、秋月電子で以下のものを買ってきました。

この単4 x 4本の電池ボックスはコンパクトかつスイッチ付きで便利おすすめです。

電圧・電流の計測器も含めて以下のようにつなぎます。

電圧・電流計は、左の赤黒が太い線になります。

無事、obnizが起動して、wifiに繋がることを確認できました。

起動後電圧は5.2V、電流はおよそ110mAで落ち着いています。
意外と小さな電流で動いています。

モーター起動時の電流

今回は、通常のモーターをobnizから動かすことを目的としているので、さらにモーターを動かせるかも確認してみます。

以下のようにobnizの0と1にDCモーターをつないで、プログラムはobnizのサイトのSDK パーツライブラリ DCMotorあたりを動かしてみます。

モーターを動かしたときの電流の大きさの変化はこんな感じです

モーター起動時、電流は一時的に150mAくらいの大きさになり、その後50mA程度で安定するようです。
カムロボットはモーター2つなので、400mAくらいの電流を流すことができる必要がありそうだということがわかりました。

ESP32 MicroPython開発環境セットアップしてLチカまで

前回の記事「ESP-IDFをMacにセットアップしてESP32-DevKitCでLチカ」に続いてESP32ネタで、今回はMicroPythonによる開発手順を確認してみます。

開発環境のセットアップ手順は、MicroPython port to the ESP32に従って進めています。

この手順は、MicroPythonのファームウェアをソースからビルドしてESP32開発ボードに転送するものになります。MicroPythonファームウェアはESP32用のバイナリも配布されているので簡単に試したい方はバイナリ版 Firmware for ESP32 boards を利用したほうが良さそうです。

Toolchainのセットアップ

Toolchainのセットアップは前回のESP-IDFの記事「Toolchainのセットアップ」と同じです。

ESP32 toolchain for macOS を
https://dl.espressif.com/dl/xtensa-esp32-elf-osx-1.22.0-80-g6c4433a-5.2.0.tar.gz からダウンロードして、以下のようにファイルをespディレクトリに展開します。

$ mkdir -p ~/esp
$ cd ~/esp
$ tar -xzf ~/Downloads/xtensa-esp32-elf-osx-1.22.0-80-g6c4433a-5.2.0.tar.gz

参考: Setting up the toolchain and ESP-IDF

“ESP32 MicroPython開発環境セットアップしてLチカまで” の続きを読む

ESP-IDFをMacにセットアップしてESP32-DevKitCでLチカ

会社のテックWebマガジン コピペテック の電子工作ネタ用にESP32について調べています。

まずはHello Worldとして、ESP32用の開発環境ESP-IDFをMacにセットアップし、ESP32開発用ボード ESP32-DevKitCでLチカしてみました。

開発ボードは秋月電子通商で購入した「ESP32-DevKitC ESP-WROOM-32 開発ボード」で試しています。

ESP32の開発環境は、主にArduino IDEとESP-IDFがあり、
Arduino IDEの方が使い勝手が良いように思いますが、Arduinoと比べてESP32のメリットであるMicroPythonによる開発をするためにはESP-IDFをベースとした環境が必要になります。
そこでまずはESP-IDFによる開発手順も確認してみたので、それをまとめてみました。

(その後調べてわかったことですが、ESP32用のMicroPythonファームウェアはバイナリでも配布されているので、こちらの Firmware for ESP32 boards を使ったほうが簡単にセットアップでます。参考: ESP32でMicroPythonを試す!簡単ですぐできました!)

ESP-IDFを利用するために必要なもの

Get Started > What You Need にESP-IDFを利用した開発環境で必要となるものがまとめられています。

  1. PC
  2. Toolchain
  3. ESP-IDF
  4. テキストエディタ
  5. ESP32ボード本体とUSBケーブル

Toolchainは、ESP32用のアプリケーションのビルドツールです。
ESP-IDFは、ESP32用の基本APIとToolchainを使用するためのスクリプトを提供する開発フレームワークになります。

“ESP-IDFをMacにセットアップしてESP32-DevKitCでLチカ” の続きを読む

Azure Face APIで顔を識別する手順をcurlで追う

会社のテックWebマガジン コピペテック で、micro:bitと組み合わせた入室管理アプリケーションの記事を公開予定です。
紹介しているのは、人感センサー(焦電赤外線センサー)でオフィスの入出を検知してmicro:bitからiPhoneにコマンドを送って写真を撮り、IFTTT経由でWebhookを叩いて、Microsoft AzureのFace APIで誰が来たか識別し、Slackにお知らせするというシステムです。

このシステムでは、人の検出と、新しく来た人の登録するところでAzure Face APIを利用していますが、この手順について調べた内容についてせっかくなのでまとめて置きたいと思います。

手元の画像でFace APIについてちょろっと試すには、サイトのトップページでも試すことができます。まずは、ここで遊んで精度を確認してみるのも良いかもしれません。

AzureにFace APIリソースを追加

Face APIを利用するには、Azureポータルで「Face API」リソースを作成して、APIキーを取得します。

Azure ポータルにサインインして、画面の左のメニューから、[すべてのサービス] > [AI + MACHINE LEARNING]から[Cognitive Service]を選択します。

Cognitive Servicesのページに切り替わるので、左上の[追加]ボタンまたは[Congnitive Serviesの作成]ボタンをクリックします。

AI + Machine Learningのページで、Cognitive Servicesの[さらに表示]をクリックします。


“Azure Face APIで顔を識別する手順をcurlで追う” の続きを読む

MS Teams のbot開発の始め方

Get started on the Microsoft Teams platform with Node.jsを参考に、MS Teams用のbot作成に必要な手順のみを確認したメモになります。

概要

MS TeamsのBotは、Botの他にTabなどを含むアプリケーションとして定義し、アプリケーションをMS Teamsにデプロイすることで利用可能になります。
また、MS Teamsのbotは、MS Bot frameworkに登録し、それをアプリケーションのmanifestに指定する必要があります。

Botのホストはどこでも可能で、エンドポイントはBot frameworkのBotの設定で指定します。
Botの認証は、Bot frameworkで発行したパスワードにより行います。

(Bot Frameworkは、Azure Bot Serviceに移行されました。以下の記事のBot Frameworkの記述はAzure Bot Serviceに置き換えて参照ください)

事前準備

Office 365のテナントを用意する

Office 365 Developer Programに登録すると1年間利用可能な開発用のオフィス365テナントを入手できます。

“MS Teams のbot開発の始め方” の続きを読む

Symfony 3 DoctrineMigrationsBundleの使い方

この記事では、DoctrineMigrationsBundleのセットアップ手順と、マイグレーションの作成・適用手順についてまとめてみました。

Symfonyは、デフォルトではマイグレーション機構が含まれていません。
また、doctrine:schema:update --forceコマンドを使ってデータベースにスキーマを反映することができますが、デフォルトではProduction環境で利用できないためマイグレーションを導入したほうが無難です。

Symfonyでマイグレーションを実装するには、DoctrineMigrationsBundle (Github: doctrine/DoctrineMigrationsBundle)を導入します。

インストールと設定

composerでパッケージを追加

$ composer require doctrine/doctrine-migrations-bundle "^1.0"

Bundleの読み込みを追加

// app/AppKernel.php
public function registerBundles()
{
    $bundles = array(
        //...
        new Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle(),
    );
}

“Symfony 3 DoctrineMigrationsBundleの使い方” の続きを読む

Facebook SDK for PHP (facebook/graph-sdk) v5.xのインストールと使い方まとめ

PHP用Facebook SDK v5を利用してFacebookアプリを作成する最小限の手順です。
Github: facebook/php-graph-sdk

以前に書いた記事「Facebook PHPをComposerで利用するには」の内容が、古くなっていたので、改めて試してまとめました。

SDKのインストール

Instllationに従い、facebook/graph-sdkをcomposerでインストール

$ composer require facebook/graph-sdk

facebook/graph-sdkが含まれる以下のcomporser.jsonが生成される

// composer.json
{
  "require" : {
    "facebook/graph-sdk": "^5.6"
  }
}

ログインサンプル

php-graph-sdk/facebook_login.mdのサンプルを実装して動作を確認してみます。
“Facebook SDK for PHP (facebook/graph-sdk) v5.xのインストールと使い方まとめ” の続きを読む

Let’s encryptでUbuntu 16.04のApacheをhttps化するには

Let’s encryptとは

無料で使えるSSL認証局で、Internet Security Research Group (ISRG)という団体が提供しています。

ISRGには、Current Sponsors – Let’s Encrypt – Free SSL/TLS Certificatesを見ると、しっかりスポンサーがついているので安心して使えそうです。
SAKURA Internetなど日本の企業もスポンサーも居ます。

証明書の発行とセットアップは、公式に提供されている Certbot コマンドで行います。

証明書の期限は90日で、エージェントが自動更新を行ってくれます。
ということは、AWSのELBのように、Let’s encrypt非対応のミドルウェアを利用している場合は、更新の仕組みを自分で用意する必要があります。

また、さくらのレンタルサーバなどLet’s encryptに対応していてるホスティングサービスの場合、サービスのコントロールパネルで設定が可能でセットアップが簡単にできたりするそうです。

さくらインターネットの「さくらのレンタルサーバ」、コントロールパネル上の簡単操作で無料SSL証明書「Let’s Encrypt」を設定可能に~「Let’s Encrypt」のシルバースポンサーとして参画し、常時SSL化推進に貢献~
提供は、10/17からのようです。

“Let’s encryptでUbuntu 16.04のApacheをhttps化するには” の続きを読む

SymfonyでJS、SCSSをWebpack encoreでビルドするには

Symfonyで、JavascriptやCSSなどフロントエンドのアセットを管理する仕組みとして、以前はAsseticが用意されていましたが、Webpackを利用するWebpack Endoreに置き替わり今時な構成になりました。

Laravelで言うところのElixirにあたります。

Webpack Encoreの利用方法については、公式ドキュメント Managing CSS and JavaScript に一通りの使い方が載っています。
また、Symfonyのでもアプリ symfony/symfony-demo が、Webpack Encoreを使った構成になっているので、こちらのソースを読むほうが解りやすいかもしれません。

この記事では、公式ドキュメントの例、First Example を試してみた手順をまとめいます。
公式ドキュメントでは、nodeのパッケージ管理システムにyarnを使っていますが、私は普段まだnpmを使っているので、npmを利用してパッケージをインストールしています。

プロジェクトの構成

symfony/symfony-demo を参考に、以下のようなディレクトリ構成にします
“SymfonyでJS、SCSSをWebpack encoreでビルドするには” の続きを読む

React x TypeScript x Webpackの開発環境でjQuery (Bootstrap)を使うには

TypeScriptで記述しているReactアプリケーションをWebpackでビルドしている開発環境で、jQueryライブラリをあわせて使う構成について調べたことをまとめてみました。

ここでは、前回の記事 「TypeScript,WebPackを利用したReactJS開発環境セットアップまとめ」で構築したプロジェクトに、jQuery Bootstrapを追加してみます。

jQueryは、TypeScriptのコンパイルはimportで通りますが、そのままでは、jQueryがbundle.jsに含まれません。
jQueryをbundle.jsに含めるためには、ProvidePluginを利用することで解決できます。
また、jQuery本体については、CDNからjsを含めても依存の問題は発生しにくいので、scriptタグで指定してしまうのが良い気もします。

ReactでBootstrapを使いたい場合は、React-Bootstrapを使うほうが筋が良いと思いますが、ここではあえて本家のBoostrapを利用してみます。

パッケージのインストール

jqueryとbootstrap、その型定義をインストールします
また、bootstrapのPopoverはpopper.jsに依存しているのでpopper.jsも追加しておきます

$ npm install --save jquery @types/jquery bootstrap @types/bootstrap popper.js

“React x TypeScript x Webpackの開発環境でjQuery (Bootstrap)を使うには” の続きを読む