「Arduino」カテゴリーアーカイブ

I2C UART 変換IC SC16IS750

I2C UART 変換IC SC16IS750を使ってみた。

Arduino(ATMEGA328P-PU)を使っているとシリアルポートが足りない事ありますよね。
センサー類はI2C対応が多いけど
GPSモジュールとかはシリアルでしか信号出ていないし。

今回そんな悩みを解消してくれる【I2C UART 変換IC SC16IS750】を使ってみました。

テストしたモジュールは
Switch science の https://www.switch-science.com/catalog/2310/ です。
このボードは I2C固定でデフォルトのアドレスは (0xBA)となっています。

Arduino用のライブラリは
ボード供給元の Sparkfun では提供されていないので
https://github.com/SandboxElectronics/UART_Bridge を使いました。
githubからzipファイルをダウンロードして
Arduino IDE のライブラリに追加します。
(追加の手順は割愛します。)

ライブラリを追加したら
ファイル → スケッチの例 → UART_Bridge-master → I2CSELFTEST を開きます。

6行目の
SC16IS750 i2cuart = SC16IS750(SC16IS750_PROTOCOL_I2C,SC16IS750_ADDRESS_AD);

SC16IS750 i2cuart = SC16IS750(SC16IS750_PROTOCOL_I2C,SC16IS750_ADDRESS_BA);
に変更します。(変換ボードのアドレスを変更した場合は変更したアドレスに合わせます。)

このサンプルスケッチはループバックテストなので
TXとRXを接続してください。

シリアルモニタで確認すると

device found
start serial communication
とだけ表示されます。なんか動いていないように見えますが
このサンプルプログラムを見ると
送信したデータと違うデータを受信したときのみ
“serial communication error” と表示して
正常の場合は何も表示しないようになっています。

正常時

使ったサンプルプログラム

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <Wire.h>
#include <SC16IS750.h>
#include <string.h>
#include <SPI.h>
 
SC16IS750 i2cuart = SC16IS750(SC16IS750_PROTOCOL_I2C,SC16IS750_ADDRESS_BA);
 
//Connect TX and RX with a wire and run this sketch
 
void setup() 
{
    Serial.begin(9600);
 
    // UART to Serial Bridge Initialization
    i2cuart.begin(9600);               //baudrate setting
    if (i2cuart.ping()!=1) {
        Serial.println("device not found");
        while(1);
    } else {
        Serial.println("device found");
    }
    Serial.println("start serial communication");
 
 
 
};
 
void loop() 
{
 
    i2cuart.write(0x55);
    while(i2cuart.available()==0);
    if (i2cuart.read()!=0x55) {
        Serial.println("serial communication error");
        while(1);
    }   
    delay(200);
 
    i2cuart.write(0xAA);
    while(i2cuart.available()==0);
    if (i2cuart.read()!=0xAA) {
        Serial.println("serial communication error");
        while(1);
    }   
 
    delay(200);
};

次回はシリアル出力の GPSモジュール を接続してみます。

IoTプロジェクトビルダー「Cayenne」を試してみた (まだ途中)

rduinoやRaspberry Piを使ってセンサーの値を取得したりアクチュエータへの出力をネット経由で行えるサービス「Cayenne」を試してみました。
色々とやれることは沢山あるみたいですが、
先ずはArduino UNOにI2C経由で繋いだ照度センサー(TSL2561)の値を表示するサンプルを動かしました。

■準備するもの

「Cayenne」のアカウント
http://www.cayenne-mydevices.com/
こちらの「Cayenne」のサイトから登録します。

Arduino UNO
Arduino用 インサーネットシールド(W5100)
照度センサー(TSL2561)
ブレッドボード、ブレッドボード用ジャンパー線
USBケーブル(Arduino UNO用)

■Arduino IDE へ「Cayenne」のライブラリを追加。

Arduino IDEのメニューから
[スケッチ]→[ライブラリをインクルード]→[ライブラリを管理] を選択します。

ライブラリマネージャーが開いたら
検索をフィルター となっている箇所に
「Cayenne」と入力します。

Cayenne by myDevices と
Cayenne MQTT の2つのライブラリが表示されますのでこの2つをインストールしてください。
ライブラリの表示枠内(黄色)で左クリックすると[インストール]ボタンが表示されます。

■Cayenneの使い方
1. Cayenneのサイトにログインします。
  https://cayenne.mydevices.com/cayenne/login

2. プロジェクトの作成
  [Create new prj]ボタンを押してください。

  プロジェクト名を入力して[☑]をクリックしてください。(自分はTestという名前のプロジェクトを作りました。)

3. Device/Widget の選択
  {Add New]メニューから[Device/Wedget]を選択してください。

  Arduinoを選択してください。

  Arduinoのセットアップ説明画面が表示されるので[Next]をクリックして次へ進んでください。

  Arduino と インサーネットシールド を選択します。
  (自分はArduino UNO とW5100 の組み合わせを選択しました。

  Arduino用のプログラムがポップアップウインドウに表示されるのでこのコードをコピーしてArduino IDE にペーストして Arduni にプログラムを書き込んでください。

  Arduinoにプログラムを書き込んだ後にインサーネット上に検出されると[Remove]ボタンが消えてソースコードの下に[Done]ボタンが表示されるのでクリックしてください。

  以下の画面に切り替わったら[Add new] [Device/Widget] を選択してください。

============== 続きは後日 =================

123D circuits のデバッグモード

なんと、123D circuitsでArduinoのプログラムのデバッグが出来るという事実に今日気付きました。
今まで123D circuitsでArduino UNOの回路をブレッドボードで組んで
プログラムをシミュレーションモードで走らせる所まではやっていたのですが、
なんとプログラムにブレークをかけて、変数の値を見れるという素晴らしい機能に気付きました。

方法はいたって簡単で
ソースコードを表示させた状態で「Debugger」ボタンを押します。
Debuggerモードに入ると「Debugger」ボタンが青くなります。

この状態でブレークをかけたいソースコードの行番号をマウスでクリックします。
するとその行番号が青くなります。

「Start Simulation」ボタンを押してプログラムを実行してください。
先ほどブレークポイントに設定した行までプログラムが実行されると、
プログラムが停止して行全体が水色に変わります。

プログラムが停止している状態で、値を見たい変数にマウスを合わせると
その変数の現在値が表示されます。

プログラムを再開するには 「|▶」こんなマークの部分をクリックしてください。

ちなみに以下の画面キャプチャーは
ボリームを回して、その時のアナログ入力値から計算した「delay_time」の値を確認しています。
ブログム起動時は「0」
次がボリームMaxで値が「1000」
次にだいたい中間地点で「500」付近。

これはかなり使える機能だと思います。

実際のデバッガもこんな感じで使いますので。

debug_11

debug_21

debug_31

debug_41

debug_51

debug_61

debug_71

ハッカソン初めて参加しました。

昨日福岡アイドルハッカソンに参加しました。
ハッカソンへの参加は初めてでしたが色々と楽しめました。

今回はアイドルとテクノロジーの融合というちょっと変わったテーマでした。

朝10時にスタートして午前中にテーマを決めて午後から制作
そして19時から、制作したものを実際にアイドルが身に着けて
ミニライブという形での発表会&審査。
ブルートゥース
午前中のテーマ収集でアイドルの子たちからの要望が多かった
光る衣装、色が変わる衣装を題材に決定。

ちなみに我々のチームは自分と
福岡での電子工作の一番目の生徒、
今回タッグを組むことになったアイドルの熱狂的ファン、
それと、一番目の生徒の知り合い。

なんとも大丈夫か?感が一番強いチーム。
ちなみにアイドルは「ヒペリカム」という平均年齢14、6歳のフレッシュなアイドル。

午後からテーマに合わせての機材選定。
ちなみにテーマは、スマホからコントロールしてLEDチューブの色を変えるのと
マイクセンサーで音を拾ってその大きさでLEDチューブの色を変えるの2つ。

用意された機材の中からLEDチューブとArduinoとマイクセンサーユニット、
それにブレッドボードや配線資材を確保。

スマホからコントロールするのに使うブルートゥースのユニットが無かったので
これは自分の手持ちのを使うことに。

LEDチューブを使うのは初めてだったので、しようを調べたりするところから始めて
Arduino用のライブラリ探しとかを経て何とかハードとソフトが完成。

ここでまだ大きな2つの問題が。
1つは駆動用の電源。
もう一つはどうやってアイドルに装着するか。

アイドルへの装着は別のチームがやっていた100円ショップからベルトとポーチを買ってきて
ポーチの中にハードユニットを入れて、ベルトで腰に巻いてもらう方法をとることに。

駆動電源はカホパーツに単三電池4本用の電池ボックスと単三電池を買いに走ることに。
心配だったの消費電力とか計算していなかったので、ステージの間電池が持つか?

発表ステージでの「ヒペリカム」の出演順は2番目、
アイドルの2人に装置を着けてもらいスタンバイ。

ステージでは1組目の発表が始まる。

ここで「聞いていないよ~」という問題発生。
発表前にステージで製作者から、挨拶+今回の制作物の内容の説明。

仕方ないので当然アドリブで対応。
「ヒペリカム」のステージが始まりました。

装置の配線はブレッドボードにジャンパーワイヤーでの繋ぎこみ、
激しいダンスの接続が外れるのが一番の心配。
案の定1人のこの配線がスタート早々外れてしまいました。

もう一人の子の方は最後まで動いていました。

とりあえず出番が終わったら、後は傍観者、アイドルのステージを楽しみました。

全チームのステージが終わって審査開始、結構時間かかっている。

先ずは、地元TV局「KBC賞」の発表、
「KBC」の方が自ら発表、一目で業界人とわかる雰囲気の人でした。
「KBC賞はエントリーNo.2 ヒペリカムです」とのアナウンス。

なんと自分たちのチームでした。

「KBC賞」は深夜の番組でヒペリカムを紹介してもらえるということでした。
今日一日がんばった「ヒペリカム」の女の子たち、良かったね。
本当に頑張ってくれたから。

ちなみに「KBC賞」は別名「チームワーク賞」
アイドルとエンジニアがいかに協力し合って作品を作っているか
制作過程からずっと見ていらっしゃったみたいです。

ある意味「優秀賞」より嬉しいかも。

なんだかんだで長い一日が終わりました。

めちゃくちゃ楽しい一日でした。

ちなみに、この「アイドルハッカソン」の模様が
福岡KBCテレビで10月25日深夜2時から放映されるらしいです。

Arduino の実験中に LCDを壊してしまいました(泣)

ArduinoでLCDをコントローするテストをしていたら、バックライトLEDの制限抵抗が小さすぎてLCDを壊してしまいました。

といっても、AutoDisk社が提供している電子回路シミュレータ 123D circuits 上での話ですが。

定格以上の電流を流すとパーツが壊れるのまで再現しているんですね。
おまけに「壊れたマーク」にマウスカーソルを合わせると原因まで表示してくれます。
楽しすぎ。

LCDが動くと色々な応用がききますね。
アナログ入力値を表示したり、パルスの周期を測定して表示したり。

ただ実機ではないのでスピード的に難しい部分もあるでしょうが。

今回の123D circuits のデータは

https://123d.circuits.io/circuits/924835-lcd-test

に置いています。
「Start Simulation」ボタンを押すと LCD が壊れます。

123D Criuits はユーザー登録すれば作った回路を保存出来ます。
無料ですので是非登録して、色々と遊んでみてください。

Arduino Uno 13PIN に関する誤解

Arduino UNO でLチカのサンプルを紹介しているサイトが沢山ありますが
そのほとんどが配線図の中に制限抵抗が入っていません。

確かにそれでも点灯はしますが、これは正しいLEDの使い方ではありません。
(ArduinoにLEDを電流制限抵抗なしで繋いで壊れないのはArduinoの出力電流が最大100mA40mAに制限されているためですが、これはLEDに電流が流れ過ぎです。)

サイトの中には、「13PINは基板内部で1kΩで制限されている」と説明しているページもありますが、これも間違った解説です。
確かに基板上の13PINに接続してあるLEDには制限抵抗が入っていますが、コネクターの13PINはICから直接接続されています。
回路図の赤丸間には抵抗は入っていません。

LEDには制限抵抗が必要です。
ごくまれに制限抵抗入りのLEDも販売されていますのでそれは例外となりますが。

LEDに流す電流はだいたい10mAで良いので、Arduino UNO の場合は5Vで動いていますので制限抵抗は500Ωとなります。
500Ωの抵抗は一般では手に入りにくいので510Ωを使うことになります。
(LEDの電圧降下も考慮する必要があります) ← 2017/02/01 追記
ただLEDは5mAでも十分点灯するので自分は1kΩの抵抗を良く使っています。

UNO_回路図

簡単にIoTを実現する「Blynk」の使い方 No.2 Arduino側

前回スマホ側の「Blynk」の使い方を説明しましたので
今回はArduino側の簡単な使い方を説明します。
Arduinoはインサーネットシールドにてインターネットに接続しています。

先ずは
https://github.com/blynkkk/blynk-library/releases
から ソースコードをダウンロードします。
Release v0.3.0 · blynkkk-blynk-library · GitHub
ダウンロードしたら適当な場所に解凍してください。

次に
Arduino IDEに「Blynk」のライブラリを登録します。

Arduino IDEを起動して
スケッチ->Include Library->Add ZIP Library… で先ほどダウンロードしたZIPを指定します。
Blynk_ライブラリ追加
ライブラリが正常に設定されると先ほどのプルダウンリストの下の方に「Blynk」が追加されます。

次に
Arduinoに「Blynk」のスケッチを書き込みます。
Arduino IDEから先ほど解凍したファイルの中から「Arduino_Ethernet.ino」を読み込んで
スマホで作ったアプリの AUTH TOKEN を設定します。
修正する箇所はココだけです。

「Arduino_Ethernet.ino」は
blynk-library-0.3.0\examples\BoardsAndShields\Arduino_Ethernet
フォルダー内に有ります。

YourAuthToken_ORG
赤枠の部分に「AUTH TOKEN」を設定します。
YourAuthToken_MOD
AUTH TOKEN を設定したら
「マイコンボードに書き込み」を実行します。

「マイコンボードに書き込み」が完了したら
Arduino IDEで「ツール」→「シリアルモニタ」を起動します。

IPアドレスの割振りが終わって
「Ready (ping: 190ms).」と表示されたら、Arduino側の「Blynk」は正常に起動しています。
Blynk_ターミナル

これでスマホからArduinoの入出力をモニタ・コントロール出来ます。

以下の写真では
ArduinoのA0、A1に接続したボリームのモニタと
9PINに接続したLEDをON/OFFしています。

Blynkスマホアプリ

Blynk_テスト環境

スマホ側の説明はこちらです。

今回使用したArduinoのインサーネットシールド(互換品)をAmazonで販売しています。
当然Blynkでの動作確認済です。
インサーネットシールド
2015年8月19日現在の販売価格:1,850円(日本国内送料無料)

ArduinoやIchigoJamで遊ぶために「37 in 1 box Sensor Kit」を購入してみた

センサーやLEDとかが、てんこ盛りのモジュールセットを購入しました。
中華サイトからの格安購入なのでケースも無ければ説明書も無し。
センサーの写真が印刷されたペラ紙一枚。
とりあえず、そのペラ紙に型名を書き込んでみた。

Amazonで「smartDIYs」さん他数社で売られているみたいですがこちらは説明書付きなのかな。
ちなみに「smartDIYs」さんのは6,480円です。

これを説明書無しで売ったら苦情の嵐だろうな、たぶん。

すべてのセンサーのサンプルプログラムを書いて、それが出来たら販売しよう。
いつになるか……。

ちなみにセットの内容は
.1 x 3-color LED module KY-016
.1 x Mercury open optical module KY-017
.1 x Yin Yi 2-color LED module 3MM KY-029
.1 x Active buzzer module KY-012
.1 x Temperature sensor module KY-013
.1 x Automatic flashing colorful LED module KY-034
.1 x Mini magnetic reed modules KY-021
.1 x Hall magnetic sensor module KY-003
.1 x Infrared sensor receiver module KY-022
.1 x Class Bihor magnetic sensor KY-035
.1 x Magic light cup module KY-027
.1 x Rotary encoder module KY-040
.1 x Optical broken module KY-010
.1 x Detect the heartbeat module KY-039
.1 x Reed module KY-025
.1 x Obstacle avoidance sensor module KY-032
.1 x Hunt sensor module KY-033
.1 x Microphone sound sensor module KY-038
.1 x Laser sensor module KY-008
.1 x 5V relay module KY-019
.1 x Temperature sensor module KY-001
.1 x Temperature sensor module KY-028
.1 x Linear magnetic Hall sensors KY-024
.1 x Flame sensor module KY-026
.1 x Sensitive microphone sensor module KY-037
.1 x Temperature and humidity sensor module KY-015
.1 x XY-axis joystick module KY-023
.1 x Metal touch sensor module KY-036

ペラ紙に型名を記入しました。

簡単にIoTを実現する「Blynk」の使い方 No.1 スマホ側

ArduinoRaspberry Piをインターネット経由でコントロールするためのスマホアプリ「Blynk
これを使えば簡単にIoTが実現できます。

まだ使い始めたばかりですが、思った以上に簡単に使えたのでサマリーだけですが解説します。

「Blynk」のホームページです。

Blynkホームページ

Blynkホームページ

まずは AppStore または Google Play から 「Blynk」アプリをダウンロード、インストールして下さい。
Blynkで検索すればすぐに出てきます。

1. プロジェクトの作成
インストールした「Blynk」を起動して、アカウントを作成してください。

アカウントを作成後はまだプロジェクトが何も無い状態なので以下のような画面になります。
「Create New Project」をタップしてください。
Blynk_1

2. プロジェクトの設定
「Create New Project」をクリックすると 「プロジェクトの設定」 に表示が変わります。
a. Project Name の欄にプロジェクト名を入力します。Test とか何でも良いです。
b. HARDWARE MODEL : コントロールするマイコンボードを選択します
  Arduino UNO とか Raspberry Pi とか自分が制御しようとしているボードを選択しま
選択できるのは
・Arduino(Due、Mega、Nano、Pro Micro、Pro Mini、UNO、Yun)
・ESP8266
・Generic Board
・Raspberry Pi 2/B+
・Raspberry Pi(Rev1)
・Raspberry Pi A/B (Rev1)
・Spark Core
・TinyDuino
・Wildfire v2
・Wildfire v3
です。
c. AUTH TOKEN
ここに表示されているコードをターゲット側のプログラムに設定します。
アプリ側のコードとターゲット側のコードが一致していないと動きません。
「Refresh」ボタンをタップするとコードが更新されて別のコードが表示されます。
「E-mail」ボタンをタップするとE-mailにコードをメールします。
d. Create ボタンをタップして このプロジェクトを作成します。
Blynk_2

3.パーツの配置と設定
プロジェクトの作成直後の画面は以下のようになっていますので + の部分をタップしてください。
Blynk_4

+をタップすると以下のように WIDGET BOX が表示されます。
WIDGET BOXで 「Button」をタップしてください。
Blynk_5

以下の画面のように「Button」が配置されます。
Blynk_6

この配置された「Button」をタップするとこの「Button」の設定画面になります。
まずは、青枠の部分が「名前」と「色」の設定です。
「色」はタップする度に変わります。
Blynk_7

次にこの「Button」が押されたときに変化させる PIN を設定します。
PINの部分をタップしてください。
Blynk_8

この例では Degital の D0 PINに割り付けています。
Blynk_9

次にこの「Button」の動作を選択します。
「PUSH」は ボタンを押している間だけ「ON」になり
「SWITCH」はボタンを押す度に「ON」「OFF」が切り替わります。

「DELETE」は配置した部品を削除する時に使います。

設定が終わったら 「Button Settings」の横の「←」をタップしてください。

Blynk_10

「Button」を配置した時と同じように今度は「LED」を配置してください。
Blynk_11

「Button」の時と同じように「LED」をタップして「LED」の設定を行います。
内容は「Button」の時と同じです。
Blynk_12

「LED」の設定が終わったら以下の画面の青枠の部分をタップしてください。
アプリが実行されます。
Blynk_15

まだ、ターゲット側が動いていないので以下のように
「Your Arduino UNO is not in Network」と表示されます。
Blynk_16

以上スマホ側の設定を簡単に説明しました。
次回はターゲット側(今回はArduino UNO)の設定を説明する予定です。

Arduinoを搭載したオープンソースPLC

ArduinoがPLCにまで浸食。

PLCがオープンソース、しかもArduino搭載って、楽しすぎる。

ただ、PLCはProgrammable Logic Controllerの略で
ラダー図でプログラムを書くのが一般的なので
Arduino同様、Arduino IDEによりプログラミングするのはどうなんだろう。

たぶんほとんどのシーケンサープログラマーは簡単に移行できないし、
どちらかと言うと、組込みプログラマー向けかと思うので
現行のPLC(シーケンサー)ユーザーには受け入れられない気がする。

ただ自分としては現物を入手していじってみたい。

Arduino搭載のオープンソースPLC

Arduino搭載のオープンソースPLC

↑ ↑ ↑ ↑ ↑

Browser Shots』というプラグインを使って取込んでてます。