Arduino(sanguino)を使ったNTP時計

去年からarduinoを使ったNTP時計をボチボチと作成中であります。 ようやくある程度の形になってきましたので、メモとして書いておこうと思います。

構成に関しては幾多の変遷を辿りまして最終的には以下の構成になりました。 本当はsanguinoを使う予定は全くなかったのですが、プログラム容量が足りなくなってしまいやむなく変更しました。

使いまわせるように考えて、メイン側構成で7セグ表示するためには不要なはずのStepUpコンバーター回路を入れています。 標準状態ではMC34063Aの上限の40Vまで、外部MOSFETを搭載すれば300V位までは出ます。なぜかと言いますと、 最終的には表示部だけ載せ替えれてニキシー管を駆動したおと思っているからです~。

回路図載せておきますけど、あまり綺麗に書けていません…。 IDEはsanguino対応のため内容書き換えしてライブラリの方も随分中身をいじりました。

せっかくEthernetモジュールを搭載してNTPを取得しているので、 Webクライアントから現在の日時と設定情報の確認と変更が出来るようにしています。(設定画面とかはあとでアップします)

RTC用のライブラリが結構使えそうな予感です。秋月の8564NBにも対応させてBCD変換なしで時刻設定可能になっています。(その分容量ちょっと大きいです)

最終的には基盤を起こしてある程度はちゃんとした形にしてみたいです。

■回路図

■構成

  • メイン構成
    AVR:arduino(sanguino 644P)
    USB-Serial:FT232RL
    RTC:DS1307+BackupCap
    ETH:ENC28J60
    StepUp:MC34063A(NJM2360A)+IRFD220(MOSFET)
    Senser(Temp):DS18B20

 

  • 表示部構成
    Display:7SegmentLED(1inch)
    DisplayDriver:MAX7219
    DriveIC:74HC7066 or 2SA1015+ULN2003
    Senser(Lux):S9648-100
    ※:表示部構成はモジュラー形式で差し替え可能(4インチとかの7セグも駆動できます)

■使用ライブラリ&スケッチ

Arduino開発環境 Arduino 0023-IDE(差分) ※:arduino-0023_diff(Arduino 1.0には未対応)

使用ライブラリ(一部機能追加修正)
MAX7219用ライブラリ(表示用キャラクタ修正):LedControl
RTC用ライブラリ(ゼロリセット機能追加): RTClib(DS1307/8564NB両対応)
ENC28J60用ライブラリ(NTP用機能有効化):EtherShield

DS18B20用ライブラリ:OneWire
SWチャタリング防止ライブラリ:Bounce

使用スケッチ: ※:テスト用のデバッグコードそのまま入っていますのでかなり読みにくい上汚いです。

■参考情報サイト

What Is Sanguino? – Sanguino.cc http://sanguino.cc/

ENC28J60 ≪ Andy’s Life http://blog.thiseldo.co.uk/?tag=enc28j60

DS1307 RTC tutorial http://www.ladyada.net/learn/breakoutplus/ds1307rtc.html

【コラム】愉しみを数ボルト (2) パワーMOS-FETを使おう | パソコン | マイナビニュース http://news.mynavi.jp/series/volt/002/index.html

なんでも作っちゃう、かも。 Arduinoで遊ぼう – フォトICダイオード S9648-100 を使って明るさを求める http://arms22.blog91.fc2.com/blog-entry-416.html

なんでも作っちゃう、かも。 Arduinoで遊ぼう – リアルタイムクロック http://arms22.blog91.fc2.com/blog-entry-232.html

arduino使い方:RGBLEDの色を段々に変化点灯 http://www.geocities.jp/zattouka/GarageHouse/micon/Arduino/RGBLED/RGBLED1.htm

色彩表示温度計シールド (arduino): Modelisme hebdomadaire http://skt48.cocolog-nifty.com/blog/2011/04/post-8fbb.html

Arduino playground – LEDMatrix http://arduino.cc/playground/Main/LEDMatrix

Arduino playground – OneWire http://www.arduino.cc/playground/Learning/OneWire

Arduino playground – Bounce http://www.arduino.cc/playground/Code/Bounce

Arduinoのアナログピン1つで5chのスイッチ

海外製のLCDディスプレイシールドの回路図を眺めていたらアナログピン1つで5chのスイッチを実現しているっぽいのでブレッドボードで作ってみました。試してみた感想としては1品だけで使えるので便利です。何か作るときには応用として使おうと思います。

続きを読む

OpenBlockS266のColsole接続用ケーブルの自作

OpenBlockS266-Console側配列

ピン番号    信号名 信号方向 意味
1 SG Signal Ground
2 CTS in Clear to Send
3 CD in Carrier Direct
4 RD in Recive Data
5 TD out Transmit Data
6 RTS out Request to Send
7 DTR out Data Terminal Ready
8 DSR in Data Set Ready

 

自作ケーブルを以下の表にもとづいて作成すればシリアルケーブルにて接続可能となる。

RJ-45
 <=>  DB-9
1 5
2 8
3 1
4 2
5 3
6 7
7 4
8 6

ArdunioでJJY信号を発信して電波時計を合わせる

40kHz標準電波(JJY)が止まってしまった後、一時的に復旧したのですがまた止まってしました。
復旧したので大丈夫とか思っていたのですが、電波時計もズレが大きくなってきたので合わせられるようにするべく情報法を収集…。やっぱり考える人は多かったみたいで、ArdunioでJJYを送信されている方がいらっしゃいました!!という訳で、コードの方も掲載されていたのでありがたくいただいて使ってみようと思ったのですが…、W5100なんて物はありません!!Orz

そしてなぜかある、ENC28J60のモジュール…。

なんていう状況から始まりまして、色々とコードを継ぎ接ぎして作ってみました。

Ardunio+ENC28J60+電源+アンテナ

アンテナ部分

今回作成したスケッチは、「Ardunio+ENC28J60」で動作します。
必要なライブラリとして、「ENC28J60 Ethernet library」「Timer1」「Time」の3つのライブラリの追加が必要です。

■作成スケッチ:etherShield_NTP_JJYClock.pde

・モジュール接続
LCDモジュール(Ardunio == LCD)
D9 == RS
D8 == enable
D4 == d4
D5 == d5
D6 == d6
D7 == d7
R/W == Ground

ENC28J60モジュール(Ardunio == ENC28J60)
D2 == INT
D10 == CS
D11 == MOSI
D12 == MISO
D13 == SCK

アンテナ部分は余っていたETEF(0.32mm)-5mを15cm位に丸めてループアンテナっぽくしてみました。こんなちゃちな感じでも結構飛びます…。3mぐらい離れたところにある電波時計が合わせられるぐらいです。それ以上離れると合わせられませんでした。

いちようは、内部でms単位まで修正して時間修正を行っています…。(タブン)

コード見てもらえばわかりますが、Webブラウザを使って設定を変更できるようになっています。
http://IPアドレス/config」で設定画面が表示されて設定変更が可能です。

・Arduino NTP/JJY Clock Network-Setting

○IPアドレス
○GWアドレス
○NTPサーバアドレス
○タイムゾーン

・Arduino NTP/JJY Clock JJY-Setting

○JJY送信設定
○送信周波数
○送信時間

・Arduino NTP/JJY Clock NTP-Setting

○NTP問い合わせ間隔設定

※:設定したデータはEEPROMに書き込まれるので次回以降は電源投入時も設定不要です。

電波の発振部分は、「Okiraku Programming-Arduinoで電波時計を合わせよう」さんのコードを一部修正したものを流用させていただきました。

本当は、RTCでも使ってみようかと思ったんですが面倒になって中断しました。
出来れば、時刻設定を手動で設定できるようにするとスタンドアローンでも使えるんですが、それだと手動で合わせるのと変わらないのですよねぇ。

・Ardunioライブラリ
Arduino ENC28J60 Ethernet library
Timer1
Time

・参考情報
Arduinoで電波時計を合わせよう – Okiraku Programming
Arduino Internet Clock « Andy’s Life
Updated Arduino ENC28J60 Ethernet library available « Andy’s Life
Arduino playground – Time
Arduino playground – Timer1

WikipediaのEPWING変換

とりあえずですが、WikipediaのダンプデータをEPWING形式に変換した物をBlog上から参照できるところにアップしてみました。

EPWING形式辞書

どれだけ続けられるか分かりませんが、最新版のアップが出来るようにと思っています。

iPhone4を手に入れてしまいました

えー、何というかiPhone4が手元にある状況です…。

なんだかんだで結局発売日には入手してしまいましたので、なんだかんだで情報を発信していきたいと思います。(^^;)

Wikipedia日本語版のEPWING変換(ServersMan@VPS編)

1.変換のための作業ディレクトリを作成

# mkdir /tmp/wikipedia
# cd /tmp/wikipedia

2.Perlのインストール

# # wget http://ftp.funet.fi/pub/CPAN/src/perl-5.8.8.tar.bz2
# tar xvf perl-5.8.8.tar.bz2
# cd perl-5.8.8
# ./Configure -Duselargefiles -Duse64bitint -des

# make
# make install
# cd ..

# wget ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick.tar.gz
# tar xvf ImageMagick.tar.gz
# cd ImageMagick-6.6.2-7
# ./configure
# make
# make install
# cd PerlMagick
# perl Makefile.PL
# make
# sudo make install
# cd ../../ 続きを読む

iOS4の新機能

iOS 4 Multitasking

ホームボタンの2度押しで起動しているアプリの切替
アプリの終了は切替画面でアイコンを長押後に左上の「-」をタップすると終了
※:アプリ終了時、切り替え時の状態を保存し、次回起動時にその状態で再開する。
  (対応していないアプリの場合には終了状態が保存されず新規起動扱い?)

バックグラウンドで動作する機能
– 音楽再生:音楽アプリやラジオアプリをiPodアプリのようにバックグラウンドで再生可能
– VoIP:Skypeなどのアプリをバックグラウンドで利用できます。Skype通話しながらゲームで遊ぶことも可能
– 位置情報トラッキング:他アプリをメインで利用している時にもナビアプリが現在位置を補足可能
– プッシュ通知の拡張:既存のプッシュ通知機能に加え、とある位置に来たらアラート画面と音再生することが可能

iOS 4 Wallpaper

「設定」→「壁紙」より変更可能
※:ホーム画面(左側)、ロック解除時画面(右側)の2つの壁紙を変更可能

iOS 4 Rotation Lock(画面向きのロック)

ホーム画面2度押し後、左にトレイをフリックすると5つ並んでいる内の一番左側で画面方向のロックが可能

iOS 4 Folder

アイコン長押しで編集モードにしてからアイコンを重ねるだけ。
※:フォルダ名称はアプリの分類的なものから自動的に付けられるので必要に応じて編集モード時に修正する。

iOS 4 UserDic

「設定」→「一般」→「キーボード」→「ユーザー辞書」より追加修正可能

取り敢えず、大きな使い方のみを纏めてみました。

MySQL-DBバックアップ(ServersMan@VPS)

個人サイトだと24H365Dの稼働要件はない…。
ハズなので一時的にオフラインにしてバックアップする方法とちゃんとしたオンラインバックアップ方法

オフラインバックアップ

 1.MySQLサーバを停止させる。

 # /etc/init.d/mysqld stop
 2.MySQLのデータファイルおよびディレクトリをコピーと圧縮
  例えば、MySQLのデータディレクトリ/var/lib/mysqlを/tmp/mysql-backupに保存する場合、以下のようになる。

 # cp -r /var/lib/mysql /tmp/mysql-backup
 # cd /tmp/mysql-backup
 # tar cvf mysql-backup_<日付> mysql-backup

 3.MySQLサーバを起動し直す。

# /etc/init.d/mysqld start

  ・リストア方法
  # /etc/init.d/mysqld stop
  # cd /tmp
  # tar xvf mysql-backup_<日付>
  # cp -r /tmp/mysql-backup /var/lib/mysql

続きを読む

WordPressのインストール(ServersMan@VPS)

 やっと、Wordpressのインストールを始めますです。

1.ソースのダウンロード と 解凍
$wget http://ja.wordpress.org/latest-ja.tar.gz
$tar xvzf latest-ja.tar.gz

2.Wordess 設定
wordpressフォルダ毎、コピー(/var/www/wordpress/ に設置する例)

$cp -r wordpress /var/www
$chown -R daemon:daemon /var/www/wordpress
$chmod 755 /export/user/7/zjp_d3d097/live_19c92f/var/wordpress/wp-content/plugins
$chmod 755 /export/user/7/zjp_d3d097/live_19c92f/var/wordpress/wp-content/themes

3.設定ファイル編集

$cd /var/www/wordpress
$vim wp-config.php
define(‘DB_NAME’, ‘wordpress’);
define(‘DB_USER’, ‘wordpress’);
define(‘DB_PASSWORD’, ‘<DB作成時にWordpressに設定したパスワード>’);