Splendid Small World -2ページ目

Splendid Small World

Some people feel the rain. Others just get wet.
- Bob Marley -

という訳で。
好きにに生きて、趣味とかやって、酒飲んで。
たまに雨を感じられる人生が最高な訳です

 

 

4月某日。

 

その日、本郷の交差点にあるコンビニで買った弁当をぶら下げて帰った部屋には、うす暗い中で13番ピンに接続されたLEDを、一生懸命に点滅させるArduinoが待っていた。

 

ただいま、と僕がつぶやいても、Arduinoは一生懸命にLEDを点滅させ続けるだけだった。

ここ数日ですっかり見慣れた、いつもの風景だった。

 

そろそろLチカ以外のプログラムも書かなければいけないのだろう。

 

面倒なことだ、と僕は思う。

同時に、今日もこれから数時間、Arduinoと不毛な会話を繰り返すのだろうなと覚悟を決める。

一つだけわかっていることは、Lチカ以外のプログラムなんて、どうやって書けばいいのかさっぱりわからない、ということだけだ。

 

 

==========

 

 

 

そんなわけで、しばらくはArduinoと格闘する必要があります。

 

まずは、DS3231を使ったRTCをArduinoに接続し、これに時刻を設定して時刻情報を取り出すところからやってみることにしました。

LCDとかGPS?そんなもんあとですよ、あと。

 

DS3231を使ったRTCモジュールは世の中にたくさん存在していて、先日のブログに書いたもの(https://www.amazon.co.jp/dp/B00YQZFMMQ/)もその一つです。

 

これはI2Cという規格のシリアル通信を使ってArduinoと接続します。

電源以外は2本の線だけで配線完了という、お手軽スタイルです。

 

I2Cはシリアル通信の一種で、複数のデバイスを数珠つなぎに接続できる仕様となっています。

まぁ、RTCを動かすだけですので、とりあえずそのまま繋ぎます。

 

私のArduinoはArduinoMegaという、GPIOの数が多いモノですので、I2C通信用のPinは20番と21番。

それを、下図の用に接続します。

 

 

VCCは5vに、SCLはSCL同士、SDAはSDA同士を接続します。

 

 

 

接続したら、ライブラリを使います。

ライブラリというのは、Arduinoとセンサーやディスプレイ、モジュールなどとの接続と使用をかんたんにするためのプログラムの集合だと思っておけばおっけー(厳密にはちょっと違うのだけど)。

 

DS3231のライブラリは色々なものがあるのですが、僕は今回、「RTClib」というライブラリを使いました。

https://github.com/adafruit/RTClib

上記のURLから、ZIP圧縮でライブラリをダウンロードして、ArduinoIDEに追加します。

 

・・・というやり方でも良いのですが、Arduinoに装備されているライブラリマネージャを使ってインストールすることもできます。

 

ArduinoIDEの画面上部の「スケッチ」→「Include Library」→「Manage Libraries」から、Library Managerを立ち上げることができます。

 

立ち上がった画面の右上部に「Filter your serch...」と書かれた入力ボックスがありますので、そこにRTClibと入力して、表示されたライブラリの「install」ボタンを押せばOKなので、こっちの方が簡単かも。

 

 

さて、次回はサンプルプログラムを動かしてみたいと思います。

 

つづく

 

 

こっちでもこっそりやってますので、よろしければどーぞ

管球自在

 

 

4月某日。

 

 

==========

 

その日の天気は、曇りだったのかもしれない。

Arduinoは、僕の手の上で一生懸命に13番ピンのLEDを光らせていた。

 

僕は、好きなアーティストの曲が流れるラジオをBGMに、彼女に伝えた。

 

「時計を作ろうと思う。これを使って」

 

僕の手の中にあるArduinoにちらりと目線をくれたあと、彼女は珈琲カップをダイニングのテーブルに戻して、少し遠くを見る様な目をした。

 

「あなたのArduinoにはね、時計が内蔵されていないの」

「ううん、世界中探したって、最初から時計が内蔵されているArduinoなんてどこにも存在しないわ」

 

僕は、何も言えなかった。

 

「解決できなければ、それまで。判ってるんでしょ』

 

そレだけ言うと彼女は、来た時と同じ様に優雅な足取りで部屋を出て行った。

手のひらのArduinoは、相変わらず13番ピンのLEDで僕にウィンクを繰り返していた。

 

==========

 

 

はいっ、と言うわけで、Arduinoには時計が内蔵されていません。

なので、時刻情報をどうにかして作るか外部から引っ張って来る必要があります。

 

「Arduino 時計」とかでググると、RTC(リアルタイムクロック)というモジュールを使って時刻情報を取得する方法がいっぱい出てきます。

 

最近のRTCは低価格でも高精度なので、時計の機能を持たせるだけであればこれで十分なのですが、時刻を手動で合わせる必要があります。

できれば時刻合わせを勝手にやってくれる様な時計にしたいと思います。

 

時刻情報を外部から取得する方法として一般的なのは次の3つです。

  • NTP
  • 電波時計
  • GPS
このうち、NTPはインターネットに接続しなければりませんが、今回の時計はスタンドアロンで動かしますので採用できません。
 
電波時計は自宅の受信状況を別の電波時計で試してみたのですが、うまく電波を捕まえられなかったので不採用。
結果、GPSの情報を使って時刻を取得することにしました。
 
ニキシー管で表示するGPS時計。
いい感じです。
 
 
使用する部品として、RTCは、このあたりのものを
 
GPSは、秋月さんのみちびき対応GPS受信キット

を使用することにしました。

 

 

RTCのDS3231は、ネット上で多くの情報が見つかることと、値段の割には大変に精度がいいことを選定の理由にしました。

GPS受信キットも、秋月電商ですぐに手に入ることと、これもネットにいろんな情報があって、扱いやすそうなことが理由です。

 

 

接続図や回路は後で書くとして。

ざっくりと、こんな感じにしようかと。

 

 

 

ついでだからと、デバックしやすくするためと、日付や温度、GPSかRTCかのモード表示などのために、16文字×2行のディスプレイモジュールもつけることにしました。

 

秋月さんのコレを使います。

http://akizukidenshi.com/catalog/g/gP-13220/

 

 

まずはこれで、基本的なニキシー管時計の構成要素が見えてきました。

 

 

 

 

部品が集まったら早速、Arduinoに接続して使い方をマスターしようと思います。

なかなか話の進まないブログですが、じわじわ時計に近づいてきた・・のか?

 

 

 

つづく

 

 

 

 

 

 

 

 

 

ねぇ、冒頭の小話、必要なの?

いや、うん。なんとなくやってみたかったんだ。反省してるけど後悔してない。

やめときなさいって。

次はもっとうまくやるつもりだ。

あのね、こう言うのは話の面白い機転のきく人がやるから面白いのよ。

・・・・そ、そうだね。

 

 

 

 

こっちでもこっそりやってますので、よろしければどーぞ

管球自在

 

 

4月某日。

 

 

Arduino。

少しだけ、Arduinoについて話をする事を許して欲しい。

 

はるかな昔、それは私が紅顔の美少年であった頃。

 

昭和と呼ばれたその時代、電子工作といえば、自分で回路を設計し、ちまちまと部品をはんだ付けし、テスターで電圧やら電流を図ってナニかを作る趣味の世界の話でした。

それは、アナログ回路と電気への深い理解をもとに、ブール代数でデジタル回路を設計し、アセンブラやCを使いこなしてマイコンを組み込むという、魔法使いですか賢者ですかって人が住まう異世界の話で、とても私が手を出せるようなものではなかったのです。

 

 

時は移り、昭和から平成を経て令和へ。

紅顔の美少年は青年になり、おっさんへと見事にクラスチェンジを果たしました。

 

最近の電子工作は、Arduinoなどを使うことで、マイコンに各種センサーからの情報を入力し、モーターやランプを制御するという使い方が、昔に比べて遥かに簡単になりました。

 

Arduinoは、マイコンへのプログラム書き込みの面倒なところを、無償で公開されている開発環境とボード上に組み込まれた回路がまとめて面倒を見てくれます。

制御プログラムはアセンブラはなく、C++を元に簡易化された「スケッチ」と呼ばれるものでかなりとっつきやすくなっています。

作ったものをネットに繋いでスマホから操作すれば、ほらIoT(Internet of Things)、というわけです。

 

 

そんなわけで、買ってきましたArduino。

見るのも触るのも初めてですので、例によってネットの海を徘徊し、入門にちょうど良いページを探して色々やってみるところから始めてみたいと思います。

 

入門にあたっては、

https://deviceplus.jp/hobby/arduino-listicle-01/

こちらのページが大変役に立ちました。

丁寧に記述してくださっていますので、記事の内容を丁寧になぞっていけば、自然にArduinoのことが理解できる作りになっていました。

 

 

 

さて、Arduinoの入門編を勉強している間に、時計の機能的な部分を決めたいと思います。

 

欲しい機能は

  1. 6桁表示の時計機能
  2. 曜日表示機能
  3. 日付表示機能
  4. 自動時刻調整機能
  5. 温度表示機能
  6. ニキシー管のシャッフル機能
  7. ニキシー管のオフ機能
ざっくりこんな感じでしょうか。
 
とはいえ、あんまり難しいことを目指しても挫折してしまいますので、まずは時計を表示するところから始めてみたいと思います。
 
 
 
Arduinoは、マイコンに書き込まれたプログラムに従って、GPIOという基盤の周りにたくさんついている黒いピンにかける出力電圧を、0Vか5Vに制御します。
 
あるいは、GPIOピンに掛かっている電圧を読み取る事で、そのピンが「ON」なのか「OFF」なのかをArduinoへの入力として使うことができます。
 
では、ニキシー管のカソードを直接そこに接続して、マイコンで指定した桁を0Vにしたらいいんじゃない?と言うと、そう言うわけにはいきません。
 
5Vで動作するLEDなら、その使い方もできなくはないのですが、ニキシー管の動作電圧は170Vですので、そんな事をやろうもんならArduinoがぶっ壊れますし、へたすりゃ火を吹きます。
 
ですので、5vか0vで出力されるArduinoの信号を、上手いことやってニキシー管の170vに合わせる事で対応しなければなりません。
 

 

 

で、この「上手いことやる」ための小道具がコレ。

SN74141というICで、これは、10本のピンのうちどれかを0vに繋げるために使われるICなのですが、170vの高電圧に耐えられる様に作ってあって、元々ニキシー管の為に作られたICっぽいです。

 

 

 

これもニキシー管同様に、今では製造されていない為、入手性はものすごく悪いです。

のですが、ロシア製の互換ICが「K155ID1」という名前で販売されていて、これは今でもebayなどで、1個100円程度の値段で手に入ります。

 

(キリル文字がいい雰囲気だしています)

 

使い方としては、2進数4桁で表現された0から9までの数字に対応したピンを、0Vに落としてくれると言う感じです。

 

 

 

Arduinoは、時刻の情報を4桁×6の2進数の情報にして出力し、それをSN74141に入力します。

ニキシー管の0から9までのカソードのピンは、SN74141に接続されていて、Arduinoからの入力に従って、表示したいピンの電圧が0Vになる、という作りにすれば、時計の部分はどうにかなりそうです。

 

 

こんなかんじ。

 

 



次回は、時刻の情報をどうやって作るか、どうやって出力するかについて考えてみようと思います。

 

つづく

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

つづく

 

 

 

 

4月某日。

 

 

遠くウクライナから到着したニキシー管は、無事に点灯のみぎりと相成りました。

まことに慶賀の至りなわけですが。

 

時計づくりとして何かが進んだのかというと、そういうわけじゃありません。

文字を表示させただけなのですから、当たり前っちゃ当たり前です。

 

ニキシー管は表示装置でしかありませんので、時計の機構は別に作る必要があります。

さて、どうするか。

 

 

置き時計ですから、ある程度場所は自由に選べなければいけません。

170v、24mA(4mA×6)という高電圧を使う以上、ACアダプタは外せないでしょうが、時刻の情報をパソコンから取得する様な設計にはしたくありません。

独立した時計として動かしたいです。

 

 

完全に時計の回路をスクラッチで作るのでない限り、ある程度手段は絞ることができます。

  1. マイコン(PICやAVR)を使って時計化する
  2. Arduino(アルドゥイーノ)の様なワンボードマイコンを使う
  3. Raspberry pi(ラズベリーパイ)の様なワンボードPCを使う

ざっとこんな感じ。

 

マイコン?Arduino?Raspberry pi?

はい、最初は僕もわかんなかったです。

ラズベリーパイなんて始めは、らすぷべりー、ぴ?とか読みましたから。(ホントです)

 

ものすご〜く簡単にいうと、

 

マイコンは黒いげじげじ。

C言語などでプログラムを作って、書き込み用の道具を使って書き込むと、プログラムした動作をさせられる。

 

 

 

こういうやつ。

実際に使うときには、こいつの周りに色々と電源まわりなどの回路をくっつけて使う必要があります。

 

 

・・・・・・

 

 

Arduino(アルドゥイーノ)は、上の黒いげじげじを板に乗っけて、周りに色々回路くっつけた基板。

USBでパソコンに接続して、Arduino用の開発環境(ArduinoIDEといいます。パソコンのソフトだね)でプログラムを書き込んで使います。

パソコン上の開発環境からUSBでお手軽にプログラムを転送できるのはとっても楽。

Arduinoは、入出力がたくさんあるやつ、少ないやつなど、いろんな種類があって、用途によって選んで使います。

 

 

 

・・・・・・

 

 

 

Raspberry Piは、ラズベリーパイ、略してラズパイ、なんて呼ばれています。

これは見た目はArduinoっぽいのですが、中身はもうそのまんま、基盤の上に作られたパソコンです。

パソコンなので、ちゃんとOSがあったりします。LinuxベースのOSです。

 

 

Linuxを触ったことがある人であれば、キーボードとディスプレイに接続して、すぐに開発を始められるお手軽さがウリ。

Arduinoやマイコン単体に比べて、ネットワークへの接続などのハードルはめっちゃ低くなります。

 

 

 

 

選択肢は3つ。

さて何を選ぶか。

 

Linuxパソコンっぽく使ってお手軽開発できそうなのはラズパイみたいだけど、正直、時計にパソコンの機能はいらない。

マイコンは、マイコン本体の他にライターを用意しなきゃいけなくて、なんだかめんどくさそう。

うん、Arduinoで作ってみよう。

 

 

というわけで、ニキシー管時計はArduinoを使って作ってみることにしました。

さっそく、これまた自宅から自転車で5分のところにある秋月電子通商さんでお買い上げ。

 

 

さぁ、Arduinoよ、君のことをおしえてくれ。

 

 

 

 

つづく

 

 

 

3月、某日。

 

 

 

ebayで好みのニキシー管を見つけて、喜び勇んでポチってからおよそ10日。

ニキシー管が到着しました。

 

 

おぉ・・・

ふつくしい・・・
 
いいですね。良い!
遠くウクライナからようこそ日本へ。
なぜか、ニキシー管はリレー(と思われる)の箱に入って送られてきました。
 
 
リレー、だよな。
たぶん。
まぁ、こういうところが個人売買の面白いところです。
 
 
 
 
届いたからには、ニキシー管を点灯させてみたくなるのが人情ってものです。
それじゃぁ、早速やってみようじゃないの。
 
前回の記事で書いた様に、まずはACアダプタで12Vの電圧を作って、高圧回路に投入。
出力された高電圧には、電気が流れすぎない様に電流制限抵抗として10kΩのカーボン抵抗をかまして、ニキシー管のアノードピンに接続。
GNDに接続したワイヤを、鰐口クリップを使ってカソードのピンに接続します。
 
 
やってみた。
 
 
 
おぉ!
先生!点きました!
 
 
 
他のピンもいけます!
 
 

 

かなりかっこいいです。
気に入りました!
 
よし。
こいつを必ず時計の形に仕上げるぞ。
 
 
 
 
 
 
 
まぁ、こっからが本番な訳ですけど。
 
 
 
 
 
 
つづく