surga Lab

読者です 読者をやめる 読者になる 読者になる

surga Lab

営業部でも開発したい!!

BLE Nanoを試してみました

特別深い意味はありませんが、BLEしたくなったので買いました。
そういうのって大事だと思うんです。

これがBLE Nanoです

f:id:hisurga:20170410212607j:plain

小さいです。

f:id:hisurga:20170410212608j:plain

下のUSB部は書き込み用です。
上に乗っているさらにちっさいのが本体です。

f:id:hisurga:20170410212609j:plain

こんな感じで書き込みます。

f:id:hisurga:20170410212610j:plain

スイッチサイエンスで購入しました。

RedBearLab BLE Nanoキット

RedBearLab BLE Nanoキット

BLE Nanoへプログラミングする方法

以下の方法があります。

mbedでやる

オンラインコンパイラを利用したプログラミングです。
オンラインでバイナリデータを作って放り込めば完成らしい。

今回はARM CPUへの開発になるので、本来ならこっちが自然かもしれないですね。

Arduinoでやる

慣れているので今回はこっちでいきます。
ただなんだかんだmbedと同じようなコードになるみたいです。

Keilでやる

よーわからんです

GCCでやる

よーわからんです

ではArduinoでいきましょう

BLE Nanoのサイトは以下になりますが、Arduinoプログラミングに関してはRedBearLab nrf51822のリファレンスへ誘導されます。

BLE Nano — RedBear

以下のサイトがRedBearLab nrf51822用です。同じnrf51822を使っているので内容は同じなんでしょうね。

ややこしいですが、nrf51822はARMのBLE内蔵CPUチップでRedBearLab nrf51822はその開発用ボードです。

Getting Started - nRF51822 — RedBear

準備

とりあえずArduino IDEにBLE Nanoを対応させるために以下GitHub/READMEの指示に従います。

GitHub - RedBearLab/nRF51822-Arduino: Add support for Arduino IDE to allow compiling nRF51822 firmware.

Arduino IDEを開いて
Setting > ボードマネージャの追加に

https://redbearlab.github.io/arduino/package_redbearlab_index.json

を追加します。

するとTools -> Board -> Boards Manager …にRedBearが表示されるのでインストールします。

f:id:hisurga:20170412004714p:plain

続いてBLE Nanoにbootloaderを書き込みます。
bootloaderフォルダ以下にある"bootloader.hex"を書き込み機のマウント名"MBED" か “DAPLINK"直下にコピーしてください。
しばらくするとBLE Nanoが再起動しますので、再マウントされたフォルダにfailがなければ成功です。

サンプルファイルを書き込んでみる

Arduino IDEのツールから書き込み設定をBLE Nano用に選択します

  • ボードをBLE Nano(新旧あるので注意)
  • 書込装置をMBED or DAPLINK

Arduino IDEのファイル > スケッチの例 > Digital > Blink without Delay で試しに書き込んでみましょう。

BLE Nanoの裏面LEDが点滅するようになったら成功です。

BLEを試す

せっかくなのでBLEの機能も試しましょう。
スケッチの例 > BLE_Example > SimpleChat
を書き込みます。

今回はAndroidと通信を行うためgoogle play storeからアプリを落とします。
対応バージョンは4.3以上で、かつ端末がBLEに対応している必要があります。

play.google.com

iOSはこちらです。

BLE Controller

BLE Controller

  • RedBear
  • ユーティリティ
  • 無料

Arduino IDEでシリアルモニタも開いておきます。

まずはアプリのメニューからでSimple Chatを選択し、検索で出てきたBLE Nanoを選択します。

f:id:hisurga:20170412005902p:plain:w300

続いてアプリ側からメッセージを送ってみます。

f:id:hisurga:20170412005903p:plain:w300

上手くいくとシリアルモニタに文字列が表示されます。

f:id:hisurga:20170412005905p:plain

今度は逆にシリアルモニタからメッセージを送ってみます。

f:id:hisurga:20170412005906p:plain

上手くいくとアプリ側にも文字列が表示されます。

f:id:hisurga:20170412005904p:plain:w300

とりあえず動作検証を問題なく終えることができました。

あとは一体何を作るのか、ですね。

Arduino初心者はステップバイステップで学習するのがおすすめです

ハードウェアや電子工作についてはほとんど無知だった私ですが、
最近では秋月電子とスイッチサイエンスを眺めて何を作ろうか考えることが大好きになるまでなりました。

これもArduinoを購入し、少しずつ電子工作/勉強を進められたおかげだと思います。

そんな素晴らしいArduino
ぜひとも皆さんにも遊んでいただきたいものです。

しかしながらいろいろなブログや話を聞くと、 “購入をためらっている” or “Lチカで満足” で終えてしまっている方が多い気がします。

おそらく"買ったところで何を作ったらいいかわからない"、"Lチカの次は何をすればいいのかわからない"となってしまうのが理由ではないのでしょうか。

だったら“作る物を私がある程度指定してしまおう”ということで、それなりに動く物が作れるようになるまでの簡単なチュートリアルを用意しました。

といってもほとんど私がこのブログで紹介した物になるんですけどね。

ゴールの設定

自分が何を作っているのかわからないまま製作するほどつまらないものはありません。
小さなものを作るときでも、あらかじめゴールを設定しておきましょう。

今回はある程度自立して走行する車をゴールとします。

ステップ1

ステップ1ではArduino + 単一機能の組み合わせで行います。
センサ等との接続はブレッドボードを利用します。

1つの機能に集中することができるので、比較的容易に実装できます。

Lチカ

基本の基本です。

大抵の方は購入時に試しているかと思いますが、久しぶりに取り組む様でしたら動作確認を含めてやってみましょう。

blog.hisurga.com

超音波センサ

センサを1つ加えてみましょう。
一般的な超音波センサです。

センサの仕様確認が必要になり、コードもいきなり複雑になります。
とりあえずはコピーでいいので、だんだんと仕様やプログラミングに慣れていきましょう。

blog.hisurga.com

7セグLED

7セグLEDとシリアルドライバのセット品を利用します。

シリアルドライバでシリアル通信を行うことにより、LEDで表示する数値の変更が容易になります。

blog.hisurga.com

モータドライバ

モータドライバを使ってモータ制御に挑戦です。

ドライバははんだづけが多くて大変ですが、はんだ付けは慣れたもん勝ちだと思います。がんばりましょう。

blog.hisurga.com

ステップ2

ステップ2ではArduino + 2つの機能を組み合わせて実装します。

とはいってもソフト/ハード共に、ステップ1の作品2つをそのまま繋げるだけです。

超音波式メジャー

超音波センサと7セグLEDを組み合わせて超音波式メジャーを作成します。

blog.hisurga.com

ステップ3

ステップ1、ステップ2を組み合わせて1つの作品に仕上げます。

シールド化

ブレッドボードだけでも問題はありませんが、再利用性を求めるならシールド化はやっておきましょう。
見た目も綺麗になります。

blog.hisurga.com

シールドの自作方法

blog.hisurga.com

仕上げ

今回の場合は自立走行車がゴールですので、シャーシにArduinoを乗せて完成となります。

blog.hisurga.com

アルゴリズムの作成

上記状態では自動停止しかできないので、簡単な法則を与えてみましょう。

blog.hisurga.com

次の作品

一通りArduinoに触れることで、電子工作についても理解が深まったことだと思います。

1つ何かの作品を作ることができれば、あとは発想力の勝負だと思います。
つまり、なんでも作れるってことです。

すでに独自ドメイン設定済みで、さらにドメイン変更をした場合は301リダイレクトすべきかもしれないです

最近

lab.hisurga.com

から

blog.hisurga.com

に変更したんですが、特にサイト移管の設定をしていませんでした。
もともとアクセス数はかなり少ないですし。

しかしその後アクセス解析を見ると"かなり少ない"から"ないに等しい"レベルまで落ちているではありませんか。

気になって自分のサイトを検索してみると、

  • トップページが上位に来ない(以前はあった)
  • 旧サブドメインと新サブドメインとはてな初期ドメインが混雑している
  • 旧サブドメインにアクセスするとpage not found

と問題だらけになっていました。

設定をせずに新サブドメインで旧サブドメインのコンテンツをそのまま載せるのは、コンテンツのパクリとみなされる可能性を考えると良くないことかもしれません。

しかしそれ以上に、インデックスされた旧サブドメインにアクセスするとpage not foundになるのはまずいのかなと。
ネット上にゴミサイトができてしまうような物ですし。

そこで、はてなブログで旧サブドメインにアクセスした場合は新サブドメインにリダイレクトするように設定しましたので紹介します。

ちなみにはてな初期ドメインはきちんとリダイレクトされていました。

はてなで独自ドメインを再度変えた時のリダイレクト方法

適当なサーバをレンタル

301リダイレクトをするためには、.htaccessを置くことが必要です。
私はスタードメインでドメインを取得していたため、それに付属する無料サーバを利用しました。

そのため説明もスタードメインに準じます。

旧ドメインをサーバに登録

旧ドメインをサーバに登録します。
登録方法はサーバ会社によって変わりますが、スタードメインの場合はサーバ側で登録すれば、ドメイン側のDNSレコード設定も自動で追加されます。

こんな感じの設定です。

f:id:hisurga:20170323222952p:plain

f:id:hisurga:20170323222955p:plain

.htaccessをサーバにアップロードする

登録した旧ドメイン直下(サブドメインならサブドメインフォルダ直下)に.htaccessファイルをアップロードします。

.htaccessは301リダイレクト設定など様々な設定を行えるファイルです。

ファイル名

.htaccess

中身

ついでにGoogle Search Consoleの認証ファイルも直下にアップロードしておきましょう。

アップロードのコツ

web上でのftp通信がサポートされていたら、一旦"a.htaccess"で作成してサーバにアップロードし、その後ターミナルからftpでrenameすると簡単かもしれません。

f:id:hisurga:20170323222953p:plain

Search Consoleで申請

Google様に報告しておきましょう。

旧ドメインと新ドメインをまず登録し、旧ドメインのダッシュボード>歯車マーク>アドレス変更で新ドメインへ移動したことを報告です。

f:id:hisurga:20170323222954p:plain

完了

すると検索で旧ドメインのサイトにアクセスしても、新ドメインで同じ記事が表示されます!

数ヶ月して安定してきたらサーバは閉じても大丈夫だと思います。

Arduinoでシールドを自作する方法をまとめてみました

シールドとは

Arduinoを拡張する基盤です。
Wi-FiやBLEなどの既製品モジュールを搭載したシールドも多く存在しますが、自分で自由に回路を組める自作シールドも非常に便利に使えます。

シールド1枚に載せるべき機能数

特に制限はありません。
しかし、機能単位でシールドを分けると再利用性が高まりますし、不具合の検証時にも便利です。

小型化が必須でなければモジュール化(機能ごとの分割)をしたほうがいいかと思います。

シールド作成方法

準備するもの

自作用シールド

  • Arduino用に型どられた基盤です。
  • 自由に作成することができます。

Arduino用バニラシールド基板ver.2(黒)
(写真は秋月電子のプロトタイプシールド)

f:id:hisurga:20170316233357j:plain

スズメッキ線

  • 基本配線にはこれを使います。
  • どうしても配線が交差してしまう時はスミチューブなどで絶縁したり、被膜で覆われたケーブルを使います。

協和ハーモネット すずめっき軟銅線 10m TCW 0.5mm 10m

f:id:hisurga:20170316233400j:plain

Arduino用ピン

  • バニラシールドとArduino/下層シールドを繋げるために必要です。

Arduinoシールド用ピンソケットのセット(R3対応)

f:id:hisurga:20170316233358j:plain

はんだゴテセット

  • バリバリとはんだ付けをするので必須です。
  • 最初は安いやつでもいいと思いますが、健康面が気になる方は無鉛はんだを利用するのがおすすめ。

goot 電子工作用はんだこて セット 安定感抜群の大型コテ台付き 半田こて はんだ吸い取り線 はんだ 40W BM-40S

f:id:hisurga:20170316233359j:plain

コネクタ

  • 再利用性を高めたい場合、センサーやモータとの接続にコネクタを使うといいですね。

互換EIコネクタ L字 2P <5個セット><2co-212>

f:id:hisurga:20170316233403j:plain

テスタ

  • 個人的には必須かと思います。
  • ショートしていないかの確認などに使います。

OHM(オーム電機) デジタルマルチテスター TDB-401 (04-1891)

f:id:hisurga:20170316233402j:plain

その他道具

  • 切ったり曲げたりに使います。
  • スズメッキ線は熱が伝わりやすいので、はんだ付けの際はラジオペンチなどで掴みましょう。

高儀 GISUKE ホビーニッパー 125mm GHN-125

iHelp(アイヘルプ) 万能ラジオペンチ 150mm IH-62

f:id:hisurga:20170316233401j:plain

ステップ1 配線の下書き

直感のままに配線をしてもいいですが、いざ進めていくと配線がクロスしてしまう箇所が発生したり、スペースが足りなかったりして、匠な業が必要になってしまうかもしれません。

また、他のシールドと使用するピンが被っていないか確認することも重要です。

そこで事前に設計図を書くことで上記問題を減らすことができます。 秋月さんのシールドの仕様図が下書きにぴったりですので、こちらを印刷してペンで下書きをすると便利です。

こんな感じに、見ての通り結構適当ってことです。
私は表面の配置だけ決めたら裏面の配線はノリでやっちゃいます。
(裏面が1番大事なんですけどね)

f:id:hisurga:20170316233404j:plain

ステップ2 配線/はんだ付け

配線の設計図ができたら、後はそれを信じてひたすらはんだ付けをするだけです。

パーツを押さえながらのはんだ付けは大変ですので、セロハンテープなどで仮止めなどをするとやりやすいです。

f:id:hisurga:20170214215508j:plain

ショートしていないか確認

可能であれば一箇所はんだ付けをするたびに、隣とショートしていないかテスタで確認することをお勧めします。
テスタにショートしていたら音のなる機能があれば、抵抗値を見なくてもいいので楽に確認ができます。

もしもショートしていたら、はんだ取りなどで取り除きましょう。

goot はんだ吸取り線 CP-2015

goot はんだ吸取り線 CP-2015

とにかくビビらず作ってみましょう

1つシールドの作成に失敗しても、だいたい数百円の損で済みます。(高価なモジュールを利用していなければ)

金銭的な損失以上に大きな経験値を得ることができますので、ぜひともどんどんシールドを作成して楽しんでください。

Arduinoの自立走行車にダンゴムシ並みの知能を与えてみました

ダンゴムシって壁にぶつかると右左交互に進んで行くことが多いらしいのです。

実は、オカダンゴムシには進行中に壁にぶつかると左へ、次は右へ(あるいは右へ、次は左へ)と交互に曲がっていく習性がある。この行動は「交替性転向反応」といい、左右に交互に曲がる事で天敵から逃げられる確率を高めているといわれている。(wikipediaより)

オカダンゴムシ - Wikipedia

そこで、前回作成した自立走行車に同じようなアルゴリズムを実装したいと思います。

コード

ハード面の変更はありません。
それと今回から長いコードではgistを使うことにします。見難かったので。

完成

センサーが1つしかなく、加えてモータがどのくらいの距離進んだのか検知することができないために精度がかなり悪いですが、なんとか形にすることができました。

それなりにうまくいった動画も載せておきます。