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

ESP-WROOM-02を赤外線リモコンに

今回はESP-WROOM-02で赤外線通信をする方法について書きます。

ESP-WROOM-02の基本的な使い方についてはこちらをご覧ください。
taltalp.hatenablog.jp

1.今回の目標

ESP-WROOM-02で赤外線通信を出来るようにする。
時間があればスマホなどからブラウザで操作できる「IoTリモコン」的なものを作りたい。(そのうち作ります)

2.ライブラリの用意

Arduinoの赤外線ライブラリはKen Shirriff氏が作成したArduino-IRremoteが有名ですが、これをそのままESP-WROOM-02で動かそうとしてもうまく行きません。
ESP8266用に書き換えられたライブラリがあるのでそちらを使います。
github.com
こちらからリポジトリをダウンロードして展開してください。
展開したディレクトリの名前を「IRremoteESP8266」に変更して、(Arduinoがあるディレクトリ)/librariesにそのディレクトリを移動します。

3.実際に使ってみる

ArduinoIDEを開いてファイル > スケッチブックの例 > IRremoteESP8266 にデモがいくつかあります。
これを編集していけば良さそうです。

4.今後の予定

次回はこのライブラリを使ってIoTリモコンを作ってみようかと思います。
今回は赤外線受光モジュールが手元に無かったためサボリ気味な記事になってしまいましたので、次回はちゃんと作例を紹介しようかと思います(笑)

4.余談

・ESP-WROOM-02で赤外線通信をする際、delayなどを用いて信号を生成しようとするとWDTによって本体にリセットがかかりうまく行きませんでした。
どうやらdelayは長過ぎるとダメなようで、定期的に何かしら命令を実行してあげないとリセットされてしまうようです。
・ESP-WROOM-02に載っているESP8266EXにはIrDAインターフェースが載っているらしいのですが、そこにどうやってデータを送ればいいのか、SDKのソースを見てもそれらしいものが見つかりませんでした。
最初、IrDAインターフェースが載っているから簡単に赤外線通信が出来るだろうと思って買ったのですが、結局よくわからないままライブラリを使うことにしました。

ESP-WROOM-02をArduinoで開発する

ESP-WROOM-02Arduinoで使う手順です。

1.使用した環境

Windows7
Arduino 1.6.5
ESP-WROOM-02(秋月電子)

2.Arduinoの設定

こちらのリポジトリを参考にArduinoIDEの環境を作って行きます。
github.com

1.Arduino IDEの「ファイル」→「環境設定」を開く
2.Additional Boards Manager URLs に
http://arduino.esp8266.com/stable/package_esp8266com_index.json
を入力して「OK」
3.「ツール」→「ボード」→「Boards Managers」から「esp8266 platform」を検索してインストール
4.「ツール」→「ボード」→「Generic ESP8266 Module」を選択

3.回路の作成

今回の回路は下図のようにしました。
f:id:taltalp:20160318202800p:plain
※回路図が間違っていたため修正しました.
注意するのは+3.3Vの電源電流です。
ESP-WROOM-02Wi-Fiモジュールですので、Wi-Fiの電波を飛ばすときにかなりの電流を消費(数百mA程度)するようです。電源電流が足りないとESP-WROOM-02にスケッチを書き込むことが出来ません。今回は3.3V/1.5AのNJM2396F33を使用しています。また、書き込みにはシリアル通信を使用しますので、TXD,RXDには115200Hz対応のUSBシリアル変換基板を接続しました。

4.サンプルスケッチの書き込み

1.ArduinoIDEの「ファイル」→「スケッチの例」→「esp8266」→「Blink」を開く。
2.ソースコードの「BUILTIN_LED」を「13」などに書き換える。(ESP-WROOM-02のIOxxピンのxxが対応)
3.ESP-WROOM-02のIO13にLEDを接続する。
4.「ツール」の各項目を以下のように設定

項目y
Flash Mode QIO
Flash Frequency 40 MHz
Upload Using Serial
CPU Frequency 80 MHz
Flash Size 4M(3M SPIFFS)
Upload Speed 115200
ポート 適当なポート

5.RSTスイッチとIO0のスイッチを同時押ししてから、リセットスイッチを先に話すと書き込みモードになります。
この作業をしてからでないと書き込みに失敗します。

6.「マイコンボードに書き込む」ボタンを押す

ここで接続がうまくいくとコンソールに「・・・・・・・・・」と表示されて書き込みを行っていることがわかります。
「warning: espcomm_sync failed」などが表示された場合は回路が間違っているか、電源の電流不足が考えられますのでそのあたりをもう一度確認してみてください。


ここまででLEDが点滅すればESP-WROOM-02Arduinoとして使う実験は成功です。

ST7735メモ

aitendoで販売されているTFT液晶ST7735を使ってみました。
使用方法について簡単に紹介します。

f:id:taltalp:20151107223021j:plain

1.概要

今回使用したTFT液晶はaitendoのキャリーボード付き液晶ZY-FGD1442701V1-PCBです。
128px×128pxの1.44インチ液晶で、MPU搭載ですのでマイコンからでも簡単に制御することが出来ます。

2.ピン配置

液晶キャリーボードのピン配置は液晶モジュールのピン配置とは異なっているようです。
キャリーボードの方のピン配置を下記に載せます。

続きを読む

ニキシー管時計の制作

前回、ニキシー管を点灯させる実験をしました。taltalp.hatenablog.jp

前回実験で登場した回路を用いて「ニキシー管時計」を制作しました。

f:id:taltalp:20150928030047j:plain

ハンダ付けが下手くそだったり、実験中に焦がした抵抗をそのまま使っていたりだとか、いろいろとひどいですがなんとか動きます。

今回作った回路はなんの面白みもない時刻表示をするだけの回路です。
PICマイコンを用いて6このニキシー管をダイナミック点灯させて表示しています。
ダイナミック点灯なので、すべてのニキシー管が点いているように見えますが、実際には1つずつしか点いていません。
なのでニキシー管の電源回路から取り出す電流は前回のニキシー管実験の時とほぼ変わりません。

また、今回はRTCに時刻をカウントさせているため、PIC側はダイナミック点灯をしながら、一定時間ごとにRTCから時刻データをもらっているだけです。

写真には写っていませんが、中央の3ピンの端子に押しボタンスイッチが2つ接続されます。
これは時刻設定用です。

回路図

電源回路
f:id:taltalp:20151009011401p:plain
上の記事で説明したとおりです。
半固定抵抗で170Vあたりが出るように調整します。

表示部
f:id:taltalp:20151009011421p:plain
ニキシー管6つ分です。フォトカプラを使って桁を選択して、IC74141で数字を選択します。
R3の20kΩ抵抗は必ず入れてください。これがないとニキシー管に過剰に電流が流れて、数字の切替時に管内で火花が飛び散りました。

メインボード
f:id:taltalp:20151009011432p:plain
マイコンは自宅にたくさんあったのでPIC18F14K50を使いました。RTCを使っているので回路はとても簡単です。
2つの押しボタンスイッチで時刻を設定します。

PICに書き込むソースコードはあまりにも汚いので公開できません。



基板がむき出しだと時計として使いにくいですし、なにより170Vの電圧が出ているため危険ですので、後日ケースを作成する予定です。

高電圧を用いますので、制作する場合は自己責任でお願いします。

ニキシー管を点けました

先日ニキシー管を購入したので、早速点けてみました。
今回購入したニキシー管はIN-12Aというもので,AMAZONで6個3000円程度で売っているため簡単に入手することが出来ました。
f:id:taltalp:20150830191356j:plain



回路図はネット上にあるものを参考に作成してみました。
IN-12A Nixie Röhre- Nixie Tube
こちらのサイトによると、145V程度で点灯させることができるということで、145Vが出るような回路にしました。
f:id:taltalp:20150830191043p:plain
NJM2360Aは5番ピンに入力される電圧と1.25Vを比較して、それよりも電圧が低い場合は2番ピンからパルスが出るようです。



実際に点灯させた時の写真
f:id:taltalp:20150830191007j:plain
綺麗に光りました。電圧が非常に高いため端子の接続を切り替えるときに火花が飛び散ります。

高電圧が出ます。制作する場合は自己責任でお願いします。

参考サイト
愉しみを数ボルト (1) ニキシー管って何だ? | マイナビニュース
IN-12A Nixie Röhre- Nixie Tube

MFT2015に行ってきた

Maker Faire Tokyo 2015 に行ってきました。

Lチカコンピュータやintel4004を用いた電卓の展示、ペッパーの集団など普段なかなか見れないようなものがたくさんありました。
今回がMFT初参戦だったのですが来年もまた参加したいです。

スーパーLチカコンピュータ
DSC_0651www.flickr.com

ニキシー管時計
DSC_0639www.flickr.com

Flickrアルバム
MFT2015 | Flickr - Photo Sharing!

図形描画

これまでに作成したVGA表示回路で図形を描画できるようにしました.
NIOS IIでVRAMにアクセスして図形を描画しています.

図形の描画アルゴリズムはこちらのサイトを参考にしました.
アルゴリズムの紹介

まだ直線と画像の描画しか実装していないのですがとりあえず実行中の画像です.
f:id:taltalp:20150721024534j:plain
文字(画像)の描画と直線の描画


また今回は、DE0の起動毎にハードウェアの情報を書き込んで、ソフトを書き込むという作業が面倒だったため、下記の本の第9章を参考にブートコピアを実装しました.

ハードウェアの情報はEPCS4に、ソフトウェアはFlashに入れるため不揮発性になりCycloneIII内のメモリー使用量を減らすことができました.空いた分をVRAMにまわせそうです.

しかし、CPUの処理が重くなり描画に時間がかかるようになってしまいました.
今は静止画のみの描画なので速度が遅くても困りませんが、そのうちより複雑な計算が必要になってきたらソフトウェアでは厳しそうです.

また、VRAMもDE0に載っているCycloneIII内のメモリービット数では640×480ピクセル分のデータを保持することができないため, SDRAM上にVRAMの領域を取るなど改良が必要そうです.

これらの改良はまた後々にやってみようと思います.