リモコンで実際に送信してみた・・・続き

ソニーのテレビリモコンも確認

SONYテレビ点灯を確認スケッチはDEMOの例そのままでいける。”A90″を0.04秒おきにを3回送ると電源ON/OFFができるようだ。じつは、受信テストでは2回しか検出することができなかった。サンプルになかったらできなかったかもしれない。

実際の波形がどうなっているか、PicoScopeで受信の波形を測定してみた。波形を見ると本当に3回送っていることを確認することができた。

回路の電流値を確認

次に回路が計算どおりにできているかテスターを使って確かめてみた。回路の電流は計算値より低かった。抵抗を測ってみると、1つ1つの抵抗はほぼ出ているのに、合成抵抗は計算より高めになるようだ。L12170はIF値を200mAにしたいので、抵抗を6個並列にしようかと思う。IF値が130mAだがとりあえずこれで行くことにしよう。

リモコンテスト 実際に送信してみた

赤外線リモコン送信テスト

赤外線LEDが点灯したことをお確認したので、実際に送信してみた。スケッチは
スケッチ例 → IRremote → IRSendDemo
NEC照明用にプログラムを変更 、前に取得したコードを書き込む。Arduinoで確認成功。

ESP32でLチカ

将来的にWi-fiで接続し制御するようにしたいので、ここから送信はESP32を使用することにする。Arduinoのプログラムが動作し、Wi-fiやBluetoothも使用できる。Arduino IDEに拡張すれば使えるようになる。今回買ったのは開発ボードESP32-DevKitC。インストールはいろいろなサイトが親切に書いているのでここでは割愛する。
まずはLチカで点灯することを確認。持っているブレッドボードに対してちょっと大きいので、直接ソケットタイプの線を挿して接続した。スケッチはピン番号がArduinoと違うので、そこを変更するだけ。今回は26番ピンに接続した。

ESP32でリモコン送信

これもピン番号を変えるだけ。IRsendを定義する時にピン番号を記入する。
このスケッチでは、照明の明るさが1つ上がる

Arduinoで受信確認

Arduinoが空いたので送信したデータを受信して確認した。
スケッチ例 → IRremote → IRrecvDemo
変更はいらなず、そのまま書き込むだけ。

リモコンと同じデータを受信することを確認した。照明に向けると5秒毎に1段階ずつ照明が明るくなることを確認した。

まとめ

赤外線LEDから実際にデータを送って切り替わることを確認した。ライブラリがあるのですごく簡単だった。また、ESP32を初めて使用したがArduinoからの移行があまりにも簡単で驚いた。開発ボードの値段が1500円ぐらいと価格も安いので、この先もいろいろなことに使えそうだと思った。

リモコンにトライ トランジスタを購入しまずはLチカを試してみた

トランジスタPN2222を選定
前回、赤外線LED L12170のIF値が大きく、ON/OFFできなかったので、もっと容量が大きいとトランジスタPN2222を選定した。
データシートに書いてあるL12170の標準IF値は200mAでVFは1.45V。 PN2222のコレクタ電流Icは600mAなので余裕がある。
電流制限抵抗にかかる電圧は Rv = 3.3V-1.45V = 1.85V
抵抗値 R = 1.85V / 0.2 A = 9.25 Ω
容量が大きくなるので、47Ωを並列に4つ接続して 抵抗が11.75Ωになるようににした。

Fritzingで回路図を作成

トランジスタに抵抗とLED接続するだけなので、回路図を書かなくても配線できるが、最近Fritzingを導入したので、図面を書いてみた。Fritzingはブレッドボード上に実際の部品と同じような感じに書けるので、実際に配線する時に迷いなく組み立てることができて便利だ。今回のようにちょっとしたテストでも図面を書いておけば、後で確認することもできる。

Lチカで点灯を確認

LEDの点灯を確認するために、ArduinoでLチカをしてみた。Lチカはよく入門サイトや本に載っているやつである。一応スケッチは下記の通り。前回は分からなかったが、赤外線といえども角度によっては点灯時に裸眼で確認できた。前回同様Webカメラで確認した。

次回

前回つまづいた赤外線LED点灯はできるようになった。やはりちゃんと容量を満たした部品が必要だ。次回はいよいよ、リモコンの赤外線送信テストだ。

Arduinoでリモコンにトライ

電子工作をやりたくなり、電子工作入門でよく取り上げられる赤外線リモコンを作ることにした。リビングに置いてテレビとシーリング照明のON/OFFを制御したい。そしてAmazon Echoから音声で制御するところまでやりたい。それぐらいのことができる商品はネットで5千円ぐらいから売っているとは思うが、自作でやってみようと思う。

とは言ってもリモコンはやったことが無い。まずは実験でArduinoで制御してみることにした。下記サイトで詳しく載っていた。
Arduinoで赤外線リモコンの値を読み取り、送信する方法 : 試行錯誤な日々

まずは、リモコンから送信された値を確認。サイトにかかれている方法で全く問題なくできた。サイトでは赤外線リモコンモージュールはSPS-444を使っていたが、SPS-440-1でも問題なくできた。試したのはNECのLEDシーリング照明だった。

できなかったのはLED送信の方だ。5mm赤外LED L12170 高出力・高速応答: LED(発光ダイオード) 秋月電子通商-電子部品・ネット通販を買って試したのだが全然光らない。全然サイトの例で赤外線LEDの型式が載っているにもかかわらず適当に買ったのが悪かった。LEDの電流値はどれも20mAだろう思ってスペックを全然見てなかった。もう一度秋月電子のページ確認してみるとL12170なんと300mAもあった。GPIOからじゃ無理だ。むしろ壊れなくてよかった。5Vを直接かけたら光った。

今は、300mAを切り替えられるトランジスタを持っていないので後日挑戦することにする。

HDMIをDisplayPortに変換するのは難しい

やられた。自分が無知ということを思い知らされた。会社ではノートパソコンを使用していて、外置きのモニタにVGAで拡張表示をしている。パソコンを買い替えて新しいパソコンはモニタを2台まで拡張できるということが書いてあった。ちょうど、モニタがもう一台余っているので接続すれば試すことができそうだ。ノートパソコンはHDMI出力が余っているが、モニタ側はVGAとDisplayPortしかない。何でディスクトップ用のモニタはHDMIが無いのだろう。
どうしても複数台接続を試したくてネットでケーブルを探したら、DisplayPort HDMI変換ケーブルを見つけた。値段も1000円弱なのでそんなに高くない。

Qtuo 金メッキ DisplayPort to HDMIケーブル ディスプレイポートto HDMI アダプター【逆に転換不能】DPケーブル フルハイビジョン(1080p) 1.8M -ブラック

購入し早速試してみたら、モニタに何も現れない。デバイスマネージャーを見ても特にドライバに問題があるわけでもなさそうだ。何度か抜き差しをやってみたけれど、うんともすんとも言わなかった。仕方が無いから諦めた。よくよく取説を見ると、パソコン側にDisplayPortをつないでモニタ側にHDMIをつなぐと書いてある。購入したページを見ると「DisplayPort to HDMIケーブル ディスプレイポートto HDMI アダプター【逆に転換不能】」と書いてあった。何を見てるんだ。
そもそも、HDMIとDisplayPortは同じデジタル処理とは言えど、信号が全然違うらしい。当たり前か。なぜDisplayPortからHDMIへ信号を送れるかというと、DisplayPortがHDMIやDVIに採用されているTMDSという伝送方式に対応しているからだ。このことについて書かれているサイトがいくつかあった。

DisplayPortからHDMIに変換できるのは何故?

なぜ DVI や HDMI から DisplayPort へ変換するアダプターは見られないのか

2つのディスプレイI/F規格、勝者はいずれに:DisplayPort vs. HDMI

HDMIからDisplayPortへ送るには信号変換が必要ということだ。そういう機器は数は少ないがあることはある。5000円ぐらいするので、ただ試したいだけに買うには勿体無い。変換ICも売られているし、開発ボードも売っているが自作というレベルでは無い。

Digi-key MegaChips Technology America Corporation RD4-2600


HDMIからDisplayPortい変換するのは諦めて、HDMIからVGAに変換するものを買うことにした。

シリアル変換ケーブルTTL-232R-5Vを試してみた。

電子工作がまたやりたくなった。
前回RS-485通信をやってから、また電子工作をやってみたくなった。やってみたいテーマは、リモコンを作ってテレビや照明を消すこと。電子工作の例でよくのっているやつだ。早速秋月電子で赤外線の受信素子や赤外線LEDを購入した。

ついでに、以前に欲しいと思っていた、USBシリアルケーブルを思わず購入したのでこれを先に試すことにした。型式はTTL-232R-5V。商品が届いたが、取説類は全然入っていなかった。秋月電子のHPで書かれていたPDFで接続のしかたは分かった。試しにMacbookとArduino Unoでシリアル通信をすることにしたが、意外と苦労した。

商品が届いたが、取説類は全然入っていなかった。秋月電子のHPで書かれていたPDFで接続のしかたは分かった。試しにMacbookとArduino Unoでシリアル通信をすることにしたが、意外と苦労した。

のでこれを先に試すことにした。型式はTTL-232R-5V。商品が届いたが、取説類は全然入っていなかった。秋月電子のHPで書かれていたPDFで接続のしかたは分かった。試しにMacbookとArduino Unoでシリアル通信をすることにしたが、意外と苦労した。

MacはScreenで接続

-l /dev/tty.*
でポートを調べて
$ screen /dev/tty.usbserial-FTAKBZ4I
で接続

散々苦労したが結果的に悪かったのは(わからなかったことは)Arduinoシリアルモニタは受信データを表示しない事だ。確認するには受信したデータをSerial.print()関数などで、シリアルに送らなければ鳴らない。
スケッチは以下の通り。

これが分からずに配線をいろいろ入れ替えたこともあり、RXとTXがどっちがどっちだか分からなくなった。結局正解は最初からやってたこの接続だった。

Arduino PC TTL-232R-5V 通信方向
1 : TX →  5 : RXD(黄) ArduinoからPCへ
0 : RX →  4 : TXD(橙) PCからArduinoへ
GND 0 : GND(黒)

今回いろいろ試行錯誤してわかったこと

  • Ardunio通信設定のデフォルトはデータ長8bit,ストップビット1bit,パリティなし
  • これをscreenで設定するには
    $ screen /dev/tty.usbserial-FTAKBZ4I 9600,cs8,-parenb,-cstopb
  • screenの終了方法
    control + a を押してからk 。終了してよいかどうか聞かれるのでyを押す

今後

何年か前にもやってははずなのにすっかり忘れている。screenについてはもっと調べたほうが良さそうだ。

RS485/RS422トランシーバ送信テストをやってみた。

何年か前に買ったRS485/RS422トランシーバ「LTC1785CN8」を買ってずっとそのままだったのを気づいた。LTC1785CN8はLINERD TECHNOLOGY社が発売していて、マイコンなどからTTLレベルと差動入出力を変換してくれるICだ。買ったのはおそらく2、3年前ぐらいだったと思うが、何のために買ったかは忘れてしまった。

RS485なのできちんとできているかどうか確認するのが大変だ。確認方法としては、Arduinoのシリアルから送信し、三菱電機QシリーズのシリアルコミュニケーションユニットQJ71C24Nのシリアルモニタで確認することにした。三菱電機のシーケンサは仕事で使っているので問題ない。電子工作は最近やってなく、Arduino使い方を思い出すところからだったので、結構大変だった。

昨年、macbookのSSDを交換した時に、まっさら状態からやり直したのでArduinoのIDEを入れるところからやった。IDEはただダウンロードしてインストールするだけなので問題なかった。

回路は下記の通り

スケッチは下記の通り

2秒に1回ひたすら”Hello, world”と出力するだけの回路だ。
2:REはレシーバ出力イネーブル。3:DEはドライバ出力イネーブル。両方ともディスエーブルの場合、回路は低消費電力シャットダウン状態になるとのこと。
PLCがわはプログラムは不要でパラメータの設定だけ。シリアルコミュニケーションモニターで確認できた。
次は受信をテストだ。あと、RS485を使って何をするか考えよう。

mac OS mojave で前と変わったこと

telnetができない

あまりよく使うコマンドでは無いから気がつくまで時間がかかったが、telnetができなくなっていた 。telnetはTCPポートが開いているかどうかの確認の時によく使う。使い方としては次のような感じ。
$ telnet 192.168.0.2 80
いつからだろう。思い当たるのはOSをアップデートした頃ぐらいかな。inetutilsをインストールして解決できた。
brew install inetutils

pingができない

そしていつの間にかpingもできなくなった。

ping 192.168.20.2
ping: Lacking privilege for raw socket.

whichで調べてみると、下記のファイルになってた。
$ which ping
/usr/local/opt/inetutils/libexec/gnubin/ping

inetutilsをインストールしてからか?
解決策として管理者としてやるか、別のpingプログラムを使うか。
$ sudo ping 192.168.0.2
$ /sbin/ping 192.168.0.2

どちらでもそんなに手間ではない。

コンピュータ名でping

pingで思い出したが、windowsのpingは ping <コンピュータ名>のようにコンピュータ名を打って、pingができる。macはWindowsみたくコンピュータ名でpingは打てないようだ。同じようにできないかと調べたが見つからなかった。しかし、一つだけ名前からip アドレスを調べるコマンドは分かった。sumutilだ。使い方はこう。
$ smbutil lookup <PC name>

Wake On Lanについていろいろ試してみた

テレビをリモートで操作する方法を調べていたら、Wake On Lanにかかれているサイトに出会った。恥ずかしながら今までWake On Lanという言葉を知らなかった。文字通りLan 経由で起動するということだが、マジックパケットと呼ばれる方式で通信をすると、電源がOFFが状態から起動するということらしい。

まずはXYCベアボーンで試そうと思った。WindowsデバイスマネージャーのLANカードオプションからWake On Lanを設定。これは問題なかった。次にBIOSの設定しようとしたら項目が出て来なかった。おそらくマザーボードがWake On Lanに対応していないということだろう。それでも、スリープ状態から起動することができた。

起動する側で試したのはRaspberry piでetherwakeというソフト。次にMacbookでwakeonlanというソフト使い方は次の通り

Raspberry pi
$ sudo aptinstall etherwake
$ sudo etherwake 01:02:03:04:05:06

Mac
$ brew install wakeonlan
$ wakeonlan -i 192.168.1.255 -p 9 01:02:03:04:05:06

Wake On Lanをきっかけはテレビだが、そのサイトもうちと同じソニーのブラビアなので一応試してみた。家のほうがずっと古いがダメ元で、一応Lanポートもついているし。

試してみるとうんともすんとも言わなかった。インターネットで調べると。Wake On Lanには対応していませんと明記されていた。

このまま、試すことが出来ないで終わってしまうのか。と思っていたところ、会社で使っているDell 製のDesktopパソコンで試すことにした。このPCはやり方の手順がのった例までのっているサイトがあったのでできることは間違えなし。Windowsの設定とBiosの設定をやったらできるようになった。

今回わかった事はWake On Lanができる状態では、電源を切った状態でもLan接続している部分のランプが点滅すること。でなきゃ、パソコンの電源を落とした状態で、マジックパケットを受け取ることができるわけがないから。

そもそもWake On Lanがどんな動きをするかわからなかったので、正解までたどり着けてよかった。

参考にしたサイト

Raspberry Piで自宅内のWindows機を起動させる (Wake-on-LAN)
Wake Other Computers from Mac OSX
Windows10でWOL(Wake on LAN)の設定を行う
最近のDELL OptiplexでWOL(Wake on LAN)をするには?

「OUTPUT 学びを結果に変えるアウトプット大全」を読んで

勉強する習慣はあると思うが、なかなか思うように進まなく結果が出ない。原因は実践(OUTPUT)が足りないのではないかと思っていた時にこの本をAmazonで見つけ思わず買った

一言にアウトプットといっても、さまざまな方法があるということがわかった。
作者が精神科医の先生ということもあり、前向な日記を書くとか、楽しむなど心理学的な技術も書かれていたので、勉強になった。

最終章のアウトプットを高める7つのトレーニングは

  1. 日記を書く
  2. 健康について記録する
  3. 読書感想文を書く
  4. 情報発信する
  5. SNSに書く
  6. ブログを書く
  7. 趣味について書く

この7つだが、どれもすぐ出来て続けられそうなものばかりだ続けられそうなものばかりだ。

1の「日記に書く」は今までも時々Evernoteに書いていたが、数週間空いてしまうこともあった。しかも本には基本的にポジティブな出来事や、楽しかったことを中心に書くとあったが、今までは、愚痴や嫌だったことなどネガティブな事を書いて、嫌な思いを吐き出してスッキリしてたつもりだった。ポジティブな楽しいことを書かなかったから、続けられなかったのかもしれない。

2の「健康について記録する」は朝起きた時に、体重、その日の気分、睡眠時間、気分のいい、悪い理由を書くいてフィードバックするという内容であった。これも今まで体重だけは記録していたがやはり間が空いてしまっていた。体重だけでなく、気分や善悪の理由まで書くのが重要かもしれない。この1ヶ月は続けられている。

3〜7はこのブロブを始めたきっかけとなった内容だった。とくに情報を発信するという点については効果があると感じている。情報を発信するには書くためにいろいろ調べたり、考えなくてはならないし、まとめるために内容を精査するので理解力が深まるとためだ。読書感想文、SNS、ブログ、趣味についってとう言うのは情報発信の道具や内容なのだと思う。

ブログを始めてからもう少しで1ヶ月になるが、続けていけそうな気がする。これからも続けていきアウトプット力を高めていこう。