Maker Faire Tokyo 2017 お立ち寄り御礼 (Thank you for coming)

180cmのテーブルいっぱいに「手作りの大型7セグメントフルカラー表示器を使った置き時計」、オガールラボでの電子工作講習会の作品紹介、キッチンスケールをハックしてArduinoとLabVIEW Home版を連携させたリアルタイム重量計測のデモを展示しました。大勢の方々に興味を持って話を聞いていただきました。ありがとうございました。

展示を見て7セグメントフルカラー表示器を作ろうと思ってくださった方が多かったと感じましたので、これまでの記事を整理して電子工作に慣れていない方でも取り組みやすいような構成でまとめたいと考えています。

オガールでの電子工作講習会に興味を持っていただいた方も多くいらっしゃいました。講習会のテキストなどダウンロードできるよう関係者と調整したいと思います。

LabVIEW Home版についても多くの方に興味を持って聞いていただきました。デモで使用したArduinoのシリアル出力を受け取るプログラムについて記事を書きたいと思っています。

Maker Faire Tokyoに海外からこられた方々にも大勢立ち寄っていただきました。ありがとうございます。現物があり、同じ興味を持っている方々でしたから、なんとか内容を伝えることができたのではないかと思います。ほぼ同じ構成で時計を作ったばかりだという方もいて、Web上では何人かの方がシリアルLEDで大型表示器を作られていることは把握していましたが、直接会話ができてとても楽しく感じられました。

At my booth I did the following three types of exhibits at 180 cm wide tables.
(1) Clock using a handmade large 7-segment full color display
(2) Works of electronic work seminar at OGAL Lab
(3) Real time weight measurement created with Arduino and LabVIEW Home version by hacking the kitchen scale
Thank you for seeing a lot of people interested.

I felt that there were more people who thought about making a 7-segment full color display by looking at the exhibition. I plan to write a new article so that even those who are not familiar with electronic work can easily deal with it.

Many people were interested in electronic workshops at OGAL Lab. I would like to be able to download the materials of the course.

Many people were also interested in LabVIEW Home edition. I’d like to write an article about the program that receives the Arduino serial output used in the demo.

People from overseas also came. Thank you very much. I think that I was able to communicate the contents somehow because it was people who have the same interest in front of the work. I was able to talk with someone who was just about making the clock with almost the same composition and felt it was fun.

 

キッチンスケールをHackして デジタル出力の秤を作ろう

MFT2017でデモしたLabVIEWプログラムやスケッチは以下のURLからダウンロードできます。

北東北LabVIEWユーザー会
https://forums.ni.com/t5/北東北-LabVIEWユーザー会/メイカーフェア東京2017でのLabVIEW-Home版のデモの紹介/gpm-p/3674153

 

測定結果が保存できる秤が欲しかったので、市販のキッチンスケールのセンサー(ロードセル)と筐体を利用して作成しました。
シリアル通信で測定結果をPCに伝えますが、PC側のソフトウェアとしてLabVIEW Home Editionを使うとメーターやグラフやデータ保存などのプログラムが簡単なので紹介します。

ロードセル用アンプHX711は小型でデジタルインターフェースなのでロードセルの直近に配置できます。Amzonで150円ぐらいで購入できます。ライブラリも幾つか提供されていますが、スケッチのコメントに書いたライブラリを使いました。

Macで使っていてノイズが少なくて安定していたのですが、Windows PCに置き換えたところノイズが目立ちました。Windows PCではUSBから取っているNanoの5Vがやや高めになっているのが気になって、HX711を3.3V駆動に変えたらOKになりました。

Arduino用スケッチ

 

NI LabVIEW Home Editionは秋月で購入できるようになりました。

LabVIEWプログラム

Maker Faire Tokyo 2017に持っていきます。

手作りの大型7セグメントフルカラー表示器を使った置き時計

夜中に目が覚めた時、もう一寝入りするか、そろそろ起きるか、知りたくなりますね。身動きせずにねぼけた目を開けるだけで時刻がわかる大きなデジタル時計が欲しいと思いました。日中は明るくカラフルで楽しい表示でも、暗くなったらまぶしくない明るさで落ち着いた色で表示してくれる時計があったらいいですね。

アナログの掛け時計は秒まで合っていなくとも気になりませんし、数分違っていてもそのまま放置している人が多いと思います。時刻表示がついている家電製品は身の回りにたくさんありますが、多少時刻がずれていても気にならないものです。でも、大きくて目立つデジタル時計の場合は分単位でキビキビ生活している人でなくとも、テレビの時報や朝の時刻表示とずれていると残念な気持ちになるでしょう。

さて、一般的には数字を表示する方法として7セグメントLEDが使われています。大きな7セグメントLEDも販売されていますが単色でしか光らず高価ですので、手作りで大きな7セグメントLEDを作ってみようというのが私の提案です。
普通のRGBフルカラーLED(例えばOSTA5131A-R/PG/B)を制御するには3本のPWM出力が必要です。1桁分に7個のRGBフルカラーLEDを使うと21本のPWM出力ですから電気回路が大変になります。そこでLEDに制御用マイコンが入っているフルカラーシリアルLEDテープを使用します。NeoPixel Digital RGB LED StripとかWS2812B led strip lightとか色々な名前で販売されています。1セグメントに2個*7セグメント*4桁=56個のLEDを使うと、価格は、例えばスイッチサイエンスで購入したとすると、3000円ぐらいです。AliExpressをうまく使えれば1/5ぐらいの値段で手に入ります。

置き時計のアバウトな仕様
・数字は縦10cmぐらいの大きさ
・時分だけ表示(時刻合わせは秒まで)する
・環境光により夜昼モード切り替えできる
・インターネットや電波(標準電波、GPS)がいらない
・USB給電

ハードウェア
・Arduino (Nano互換機)
(Amazon)HiLetgo Nano V3.0 (380円@170705)
・バッテリーバックアップ付きリアルタイムクロック (DS3231)
(Amazon)HiLetgo DS3231時計モジュール (210円@170705)
・照度センサーと抵抗(22kΩ)
(秋月)照度センサ NJL7502L (100円/2個)
・フルカラーシリアルLEDテープ
・タクトスイッチ2個

配線
Arduino Nano
D2————-Rボタン(他端はGND)
D3————-Lボタン(他端はGND)
D7————-SerialLED信号
5V————-VCC(SerialLED)
GND————-GND(SerialLED)
A0————-NJL7502L(短い足)と抵抗(22kΩ)を通してGND
5V————-NJL7502L(長い足)
A4————-SDA(DS3231モジュール)
A5————-SCL(DS3231モジュール)
5V————-VCC(DS3231モジュール)
GND————-GND(DS3231モジュール)

ソフトウェア
– – – – メイカーフェア東京2017で使用したスケッチ(SimpleClock31)
昼夜モードの判断は照度センサの値を10回測定した平均値で行って、閾値付近でモードの切り替えが頻繁に発生することを防止しています。昼はカラフルなrainbowCycleをベースにしました。rainbowCycleは明度が一定で色相が360度回転する関数でAdafruit_NeoPixelライブラリのサンプルスケッチのstrandtest内で使われています。夜は明度を落としてオレンジ色の光で表示します。

どちらのモードでも時刻の取得、時刻設定ボタンの状態チェック、56個のLEDの点灯設定、点灯、待機(delay)を繰り返します。時刻の取得はRTCライブラリの関数で現在の時刻を調べて、表示している時分と異なる場合は4桁の数値の更新と全てのLEDについて1(ON)か0(OFF)か配列に書き込みます。時刻設定ボタンの状態チェックで、両方のボタンが一定時間押されていれば時刻合わせモードに入ります。

時計合わせがプログラムの半分ぐらいを占めていますのでフローチャートを書いてみました。

(170811)

Makers Faire Tokyo 2017に出展します

8月5日、6日に東京ビックサイトで開催されるMakers Faire Tokyo 2017に出展できることになりました。

私のブースのメインの展示品は「手作りの大型7セグメントフルカラー表示器を使った置き時計」です。

デジタルクロック(RTC:DS3231版)の記事から若干の変更を行いました。1セグメントに1個だったLEDを、1セグメントに2個に増やして視認性を向上しました。LEDの配線が大変な手間でしたので、CNCルーターでプリント基板を作成してハンダ付けを楽にして、信頼性も少しだけ向上したと思います。プログラムも変更が必要でしたので別の記事としてアップしたいと思います。

(2017.06.26)

 

デジタルクロック(RTC:DS3231版)

リアルタイムクロックDS3231を使用したデジタル壁時計を作成します。

DS3231

 

 

Arduino Nano
OLYMPUS DIGITAL CAMERA

 

使う主な部品
Arduino Nano互換機DS3231シリアルRGB LEDで作成した時計表示板照度センサー押しボタンスイッチ2個、22kΩ抵抗1本(照度センサー用)

購入したRTC基板はコイン型リチウムイオン電池(LIR2032)の充電回路が組まれているのですが、購入時に入っているのは充電できないCR2032なので私は充電のパターンをカッターでカットしました。

機能の説明
GPSやNTPサーバーの正確な時計に定期的にアクセスすれば、手動で時刻合わせをする必要がありません。市販の時計のようにボタンで時刻を合わせるのはプログラムを考えるのが大変なので避けてきたのです。以前使ったリアルタイムクロック(RTC)DS1302はひどく精度が悪くて一晩で数分ずれていましたので、RTCは諦めてGPSに頼り切った方が楽だなと考えていました。GPSでも我が家のような木造で窓際ならば問題ありませんが、ビルの中でも使えるかというとさすがに無理な場面も出てくるでしょう。

そんなことを考えながらDS1302よりも高精度と言われているDS3231を試しに購入したところ、カタログ性能は文句のつけようもなく良くて、数日使ってもDS1302とは比べ物にならないほど正確に時を刻んでいます。

しょうがないのでボタン2個で時刻を合わせるプログラムを書くことにしました。ついでに機能も追加して時計としての魅力をUPさせました。部屋の明るさを照度センサーで検知して、暗い時には明かりを抑えたナイトモード、明るい時には華やかなフルカラーモードにしました。表示した数字の色が徐々に変化するようにプログラムしたのですが、AdafruitのシリアルLEDのデモプログラムのRainbowに数字表示のマスクをかけて比較的シンプルに実現させました。アナログの壁時計なら数分ずれていても許せるのですが、デジタルの場合は、朝のテレビ画面の隅で表示している時刻とつい比べてしまうので、秒の表示は無くても同じタイミングで切り替わって欲しいものだと感じます。数字の色の変化はゆっくりなので、時刻表示が切り替わる時にはR→G→Bでフラッシュしてちょっと注意を引くような小細工も入れました。

ボタン2個の同時押しで、時刻合わせモードに入ります。モードが変わったことが直感的に分かるように時刻合わせモードの時は緑です。時→分→秒の順でセットするのですが、ボタンを押さずにいると自動的に時刻合わせモードから抜けます。

時刻合わせモードに入ると”時”だけを緑色で表示します。右ボタンで1アップ、左ボタンで1ダウンします。”時”が合わせ終わったら、ボタン2個の同時押しで、”分”だけを表示します。アップダウンは同様ですが、PCなどの秒まで分かる正確な画面を見て1分先に合わせます。設定したら2個の同時押しで、時分を表示します。PCの秒表示が”00″になる時にどれかボタンを押すとPCの時刻と運動神経レベルで一致させることができます。

回路図
Eagleを勉強中なのでそのうち練習を兼ねて書こうと思います。
照度センサーの短い足を22kΩの抵抗でGNDに落としています。長い足は5Vです。短い足の電圧をA0ピンで測定します。LEDの信号はD7、スイッチはD2とD3、RTCのSDAがA4でSCLがA5です。

プログラム
RTCのライブラリはRTClibを使いました。半分以上は時刻合わせのために書かれています。rainbowCycle()とnightClock()が通常の時計機能でリストの下の端に書かれています。大部分の時間それらの関数の中で動作しているので、時刻合わせモードに入る関数wantAdjust()はそれらの関数の中に置かれていて、”2個の同時押し”を検知するとadjustClock()に入って時刻合わせが始まります。
表示に関してはint ledClock[28]とint ledMask[28]でLEDのON/OFFを行っているので比較的シンプルにできているのではないかと思います。

 

(2017.03.30)

 

Digital Wall Clock (1st trial)

寝室用に明るさを抑えた壁掛けデジタル時計を作りました。

ESP8266(ESPr Developer)でRTCから時刻を読んで、7セグメント表示器風にフルカラーLEDを28個配置して時刻を表示します。せっかくのフルカラーLEDなのでランダムに表示の色を変更します。1日1回NTPサーバーにアクセスして時刻を校正します。照度センサーで室内の明るさをモニターして暗くなったらLEDも暗くします。

ESP8266は時分の表示が終わると、電力削減のため50秒間Deepsleepします。NTPサーバーにアクセスする直前はWiFi ONで起動し、それ以外はWiFi OFFで起動します。

LEDの信号線は15ピン、照度センサーは20kΩと10kΩで分圧してTOUTピン、RTC(DS1302)は3ワイヤーという通信なので CLKを12ピン、DATを13ピン、RSTを14ピンに接続しました。Deepsleep後の起動用に16ピンをRESETに接続します。

筐体は5mm厚のMDFをレーザーカッターで切り抜きます。セグメントの中央にLEDを配置して表面に経木(紙のように薄い板)を貼りました。セグメント内での光の均一性にもう一工夫必要です。

 

 

2017.1.21