スマホから赤外線リモコン

これも旧ブログ移行ついで。
久しぶりに触ってたら条件分岐で==を使わずに=を使ってたりして赤面。

やったことメモ。

■ハードウェア
ハードウェアはつなげるだけなので書かなくてもええやろ、みたいなのもホントは良くないんだろうなぁ。
一応SC1815使ってGPIO直出しじゃない状態にしました。
設定的には赤外線LEDに500mA~1Aぐらい流す感じだったと思う(3.3VでLEDにつないで制限抵抗は2~4Ωぐらい)。
SC1815の定格は満たしてないけど、トランジスタの定格ってほぼ熱の問題だと思うので、
パルスでの使用だったら越えてもどうにかなると思う。どうにかなれ。
一日4~5回使う程度なので多分まず壊れないと思う。

■ソフトウェア
1.express-generatorを使って雛形作成。

 jadeにあこがれるものの学習がなんとなく面倒なのと
 参考サイトがejsだったのでejsで作成。

2.viewsにusers.ejsを作って以下を記述

<!DOCTYPE html>
<html>
  <head>
    <title>smart-remote</title>
    <style type="text/css">
      input.button {
        width:150px;
        height:150px;
        font-size:1.8em;
      }
    </style>
  </head>
  <body>
    <form method="GET" action="/users">
      <input type="submit" name="onoff" value="on" class="button"/>
      <input type="submit" name="onoff" value="off" class="button"/>
    </form>
  </body>
</html>

③の記事を模倣させていただきました。いらなかった箇所を削りました。

3.routesのusers.jsを以下のように編集

var express = require('express');
var router = express.Router();

/* GET users listing. */
router.get('/', function(req, res, next) {
  var execSync = require('child_process').execSync;
  console.log(req.query);
  var onoff = req.query.onoff;
  if(onoff=='on'){
    execSync('sudo /home/hoge/ir-remote/sendir /home/hoge/ir-remote/lighton.dat 1 0');
  }
  if(onoff=='off'){
    execSync('sudo /home/hoge/ir-remote/sendir /home/hoge/ir-remote/lightoff.dat 1 0');
  }
  res.render('users', {message: onoff});
});
module.exports = router;

これもほぼ③の記事を模倣させていただきました。
nodejsからシェルコマンドを実行させるのでexecSyncをつかってます。②の記事を参考にさせていただきました。
分岐後に使ってるsendirとそれで読みこんでるdatを作ってるscanirは
①の記事にあるソースをそのまま使わせていただきました。

4.雛形の根元でnpm start

いまだにnpm startの意味が分かってないの良くないと思うんだけど保留。

5.自動起動設定

⑤の記事を参考にrc.localになんとなく記載。雛形の根元にcdしてnpm start。
systemd推奨とはあったものの、ちょっとオプションが多くて意欲がわかず。


ソースをgitで管理してれば後からraspberry Piから直接引っ張ってこれていいんだろうなぁと思うんだけど、
なかなかgitを学習する意欲が……。

■ 以下参考
★今回は以下のサイトを参考にさせていただきました。
www.feijoa.jp
www.sirochro.com
Node.js(2) GPIOraspberrylife.wordpress.com
④[s4kr4.hatenablog.com
hendigi.karaage.xyz



④の記事より、便利だったので引用しておかせていただきます。

wiringPiで使用するPIN番号を調べる。
$ gpio readall
 +-----+-----+---------+------+---+---Pi 3---+---+------+---------+-----+-----+
 | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 |     |     |    3.3v |      |   |  1 || 2  |   |      | 5v      |     |     |
 |   2 |   8 |   SDA.1 |   IN | 1 |  3 || 4  |   |      | 5V      |     |     |
 |   3 |   9 |   SCL.1 |   IN | 1 |  5 || 6  |   |      | 0v      |     |     |
 |   4 |   7 | GPIO. 7 |   IN | 1 |  7 || 8  | 0 | IN   | TxD     | 15  | 14  |
 |     |     |      0v |      |   |  9 || 10 | 1 | IN   | RxD     | 16  | 15  |
 |  17 |   0 | GPIO. 0 |   IN | 0 | 11 || 12 | 1 | IN   | GPIO. 1 | 1   | 18  |
 |  27 |   2 | GPIO. 2 |   IN | 0 | 13 || 14 |   |      | 0v      |     |     |
 |  22 |   3 | GPIO. 3 |   IN | 0 | 15 || 16 | 0 | IN   | GPIO. 4 | 4   | 23  |
 |     |     |    3.3v |      |   | 17 || 18 | 1 | IN   | GPIO. 5 | 5   | 24  |
 |  10 |  12 |    MOSI |   IN | 0 | 19 || 20 |   |      | 0v      |     |     |
 |   9 |  13 |    MISO |   IN | 0 | 21 || 22 | 0 | IN   | GPIO. 6 | 6   | 25  |
 |  11 |  14 |    SCLK |   IN | 0 | 23 || 24 | 1 | IN   | CE0     | 10  | 8   |
 |     |     |      0v |      |   | 25 || 26 | 1 | IN   | CE1     | 11  | 7   |
 |   0 |  30 |   SDA.0 |   IN | 1 | 27 || 28 | 1 | IN   | SCL.0   | 31  | 1   |
 |   5 |  21 | GPIO.21 |   IN | 0 | 29 || 30 |   |      | 0v      |     |     |
 |   6 |  22 | GPIO.22 |   IN | 1 | 31 || 32 | 0 | IN   | GPIO.26 | 26  | 12  |
 |  13 |  23 | GPIO.23 |   IN | 0 | 33 || 34 |   |      | 0v      |     |     |
 |  19 |  24 | GPIO.24 |   IN | 0 | 35 || 36 | 0 | IN   | GPIO.27 | 27  | 16  |
 |  26 |  25 | GPIO.25 |   IN | 0 | 37 || 38 | 0 | OUT  | GPIO.28 | 28  | 20  |
 |     |     |      0v |      |   | 39 || 40 | 0 | IN   | GPIO.29 | 29  | 21  |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
 +-----+-----+---------+------+---+---Pi 3---+---+------+---------+-----+-----+

★マークダウン学習までやる気が回らなかったのでとりあえずはてな記法を始めた。
help.hatenablog.com



■今後?
gitに家の温度データを蓄積させていくとかそういう使い方で無理やり使って学習を進めようかなぁ。
CSS勉強かねて、はてなブログ見出しの番号振りをどうしてたかがまたなんか思い出せなかったので今度記事に起こす。

nodejsこと始め。

 そういえばこっちの記事ではラズベリーパイについて書いてなかったのでこれも移動ついで。

 

qiita.com/seibe/items/36cef7df85fe2cefa3ea

導入手順

まず普通に nodejs, npm をインストールします

$ sudo apt-get install -y nodejs npm

次に n package を導入します

$ sudo npm cache clean
$ sudo npm install n -g

最後に n package を使って node をインストールします

$ sudo n stable
$ sudo ln -sf /usr/local/bin/node /usr/bin/node

ちゃんと最新かどうか、バージョンを確認してみましょう

$ node -v
v5.2.0

※ 最初に入れた nodejs, npm は古いので、混乱を避けるべく消しちゃいます

$ sudo apt-get purge -y nodejs npm

 

 

 

 

ラズベリーパイとnodejsについてはずっと以下のサイトを参考にさせてもらっている。

 

Node.jsraspberrylife.wordpress.com

 

Webアプリのひな形を自動生成してくれるフレームワーク「express」が非常に便利なので、これもインストールしておく。インストールにはNode.jsに含まれるパッケージ管理ツール「npm」を使用。

1
$ sudo npm install -g express-generator

 

 

 

expressでWebアプリのひな形を作成し、起動するには以下のように行う

1
2
3
4
$ express -e MyWebApp
$ cd MyWebApp
$ npm install
$ npm start

 

とりあえずこれで

http://"IPアドレス":3000/

から

Express

Welcome to Express

が確認できた。

 

コピペプログラマなのでブログまでコピペで終わらせる。

ブログじゃなくてクリップボードって名前にした方がいい気がしてきた。

ラズベリーパイを開始しました。

友人からの熱いマークダウン推しなどもありましたが普通にやります。

Atomを入れたら真面目に考えるかも。

でもなんかうまくいかないのでしばらくはやらないかも。

 

 

ラズベリーパイしばらく触ってなかったのは

OSをインストールしなおしたらsudo権限の移行方法がわからなくなってしまったせいで、

調べなおしたら以下にあった。

jyn.jp

 

そしてパスワードなしsudoを出来ないようにするには……

追記:いつからかやり方が変わりました

「/etc/sudoers.d/010_pi-nopasswd」を開き、「pi ALL=(ALL) NOPASSWD: ALL」をコメントアウトします。

もしくは「sudo rm /etc/sudoers.d/010_pi-nopasswd」でファイルそのものを消してしまいましょう。

古い方法:「sudo visudo」でファイルを開き、「pi ALL=(ALL) NOPASSWD: ALL」をコメントアウト

 というわけで、visudoからsudoersを編集するんじゃなくて、

sudoers.dの中にそれっぽいものを突っ込めばsudoできるようになるよってことみたい。

というわけで障壁がだいぶ下がったので再開。

一個詰まると一か月死ぬってことはよくあることよね。

 

とりあえず三点セット実行した、はず。

sudo rpi-update
sudo apt-get update
sudo apt-get upgrade

 

めも。

油断していたらまたシフトレジスタとか買いそうになってた。いややりたいならいいんだけどさ。
→レベルメータのLEDバー?を買ったので今度遊ぶ

≪作ろうとしているもの雑記。あとで整理、清書≫

Wi-Fi越しにラックの照明をオンオフする。
→esp8266つかう

12vのLEDモジュールを3本出力したい。
→出力用のDCジャックとFETをつけよう。

家電のオンオフしたい。
→ACは怖いのでモジュールを別につくる。
制御用のグランドと信号を出す
いい感じの2pinのジャックとコネクタが欲しい


オンオフ用のGPI/Oは足りるのか?
→i2cのGPI/Oのやつがあるみたい。
★これは勉強になりそうだしGPI/Oは16ビットまど拡張できるもつかえみたい。やろう。

状態を確認したい
→i2cのLCDつけよう

時計の代わりになんないかな
→試しに7セグつける?
→いらなそう、小さくて見なそう、眩しそう



12vから3.3vつくったりケースにいれたりして温度は大丈夫?
→多分。やってみてから?電流の確認方法が欲しいところ。一定以上になったらアラームとか。
→電流センサ探す。

固定どうすんの
→ナットとかでネジ止め予定。迷いどころ。
少なくともACはエポキシで固める。

計画的なもったいない注文

お金を出して時間を節約したい。

下の2つのパターンのような感じで、一度やったことはお金を出してでも回避していくように進めていこうと思う。

パターン①

ガラクタ箱を掃除していたら16x2のキャラクタLCDが二枚出てきた。

そういえば汎用ロジックICの595があったから3線制御でLCD制御ができそうだ。

●でもそれやったことあるしI2Cの方が手っ取り早そうだし今後の為にもなりそう。

●時間はないけどお金はある。

 ⇒出てきたLCDを捨ててI2C対応のLCDをポチった。

 

パターン②

ソリッドステートリレーキット作った

●ヒューズついてなくてなんか怖いし基盤が小さくて筐体への固定が面倒くさそう

●時間はないけどお金はある

 ⇒実装しやすそうなパッケージ化されてるSSR

  実装しやすそうなヒューズをぽちった

  ※あ、バリスタを発注し忘れてた。パッケージに入ってるかな。

 

雑記

作りたいものをざっくり決定したのでいろいろ探してたところスーパー三端子レギュレータなるものを見つけた。三端子レギュレータにもリニアレギュレータとスイッチングレギュレータがあるんだね。

そのうち二つのデータシートを眺めて記事を書こうかなと思う。

背景として、12Vを電源として使いたかったんだけど、リニアレギュレータで12Vから3.3Vを作るのはターゲットよりもレギュレータの方が消費電力が高いとかいう状態になってしまうので少し抵抗があって探してた。

検討はデータシートをちゃんと読んでからだけど、以下4点から多分リニアレギュレータを使うことになる。

 ・スーパー何とかを使うことに特に勉強成分がない(データシートを読めば十分)

 ・0.1A程度なら多分リニアレギュレータで行ける

 ・価格が高いし実装面積もリニアレギュレータより大きいかどっこいどっこい

 ・時間短縮にはならない。

以上。

ソリッドステートリレーキット

なんかはてなブログの記事書くときにIMEがうまく動かなくてキーボード改造した影響かと思って焦った。HTML編集とかプレビューとか画面切り替えてたらなおった。

 

掲題の件について。

akizukidenshi.com

買ったまんまだったので。ラズベリーパイから使おうと思ってたんだけどどうせだしESP8266で使おうかってことで組み立て。

 

問題点発覚

これトライアックのピッチあってないじゃん。え、なんでバリスタ二個入ってるの。

と思ったら、

※このキットは(K-00203)の基板を使用しています。その為、トライアックと基板は別々になります。

 まじでか。K-00203の方は2A耐圧なのでトライアックもピッチが違うのね。へいへい。

とりあえず穴をあけました。

 

完成

とりあえず穴を増やしてくっつけた。一応動作も確認できた。

f:id:SoranoHashibiro:20170212231214j:plain

 

一個余ったバリスタについて考察

大容量のトライアックだとサージが増えるとかあるのかな……。

そのために添付されているバリスタが増えている……?

2Aの家電ではバリスタ一個分のサージが出て、4Aの家電ではバリスタ二個分のサージが出るって考える方が普通か。トライアックが大電流用になっても電圧のスルーレートが変わるわけでもなさそうが気がする。そこらへん制御するならむしろゆっくりにするんじゃないのか。

別に4A使う予定ないし……なんなら1A使うかも怪しい。モーター系を使うわけでもないし……。というわけで一個で良しとする。今回は。

 

今後AC用のSSR買うとしたら

次回買う時があったらもう組む気が起きないので↓二個のうちどっちか。下のやつのほうがよさそう。抵抗一個つける必要はあるもののの、ゼロクロスを考慮してくれるらしいところと、モールドがまともなところがいい。っていうか学生の時に使ったやつだ下のやつ。ああ。

 

akizukidenshi.com

akizukidenshi.com

以上。

 

ESP-WROOM③ とりあえずLチカ

そういえば作業の参考の場所を埋め込み忘れてた。

今回もここを参考にさせていただきました。たぶんずっと参考にさせてもらいます。

deviceplus.jp

 

そういえばArduino IDE消しちゃってたので最新の1.8.1を入れた。

その後、上のサイトを参考に、

1. Arduino IDEを起動する

2. 「ファイル」-「環境設定」を開く

3. 「環境設定」の中にあるAdditional Boards Manager URLs:に下記のURLを入力

入力するURL:http://arduino.esp8266.com/stable/package_esp8266com_index.json

でOKをクリック。

その後ツール→ボード→ボードマネージャでボードマネージャを開く。

ボードマネージャ開くとプラットフォームをダウンロードしてます的なことが流れた後に操作できるようになって、

esp8266って入れるとそれっぽいのが出てくる。

2.3.0が最新っぽいので選択したところダウンロードが始まった。

153,527kBとか結構重い。わりと時間かかる。25分ぐらい?うちのwifi環境のせいかな?

 

したら入ったので、シリアルポートをUSB-serialのにして、デバイスをGeneric-ESP8266-Moduleにして、あとは触らないでコピペプログラマ

void setup() {
pinMode(13, OUTPUT);
}
 
void loop() {
digitalWrite(13, HIGH);
delay(400);
digitalWrite(13, LOW);
delay(400);
}

無事Lチカ。

f:id:SoranoHashibiro:20170209022908j:plain

次はwi-fi越しに何かしよう。