2021年3月アーカイブ

Lycheeというツールがあります。

Web上で動くアルバムツールです。天文写真初めて、撮った写真を一覧したいなぁと思って、これを使ってみることにしました。

手順はこのサイトをほぼそのまんまです。(構築してたときはサイト繋がったんですけど、今、繋がりませんね。どーしたんだろ?)

なお、Lycheeでぐぐると、Redmine のプラグインが圧倒的に当たるんですけど、別物です。

そいでまって、私が建てるんだから、とーぜん FreeBSD で建てます。FreeBSD の Ports に www/lychee というのがあるんですが、これも別物です。

ちうわけで、行ってみましょう。

まずは FreeBSD をインストールします。これは猫でもできるので省略。

Ports から必要なパッケージを入れていきます。

  • www/mod_php74
  • lang/php74-extensions
    • GD
    • mbstring
    • mysql
    • EXIF
    • zip
  • graphics/pecl-imagick
  • databases/mysql80-server

MySQL は最近だと10系なんですが、10だとうまく動きませんでした。なんで 8 です。ちなみに、MySQL は 9 系が欠番です。

つぎに php.ini を編集します。

max_execution_time = 200
post_max_size = 200M
upload_max_filesize = 200M
max_file_uploads = 100

httpd.conf も編集します。単にPHPの実行を許可するだけですけど

<IfModule mime_module>
    AddType application/x-httpd-php .php
</IfModule>

my.cnf も編集します。

/var/db/mysql を別ディスクにして、データ領域を分けたんで、ちとへんな設定をしてます。ディレクトリ関連は Default でもいいでしょう。

[mysql]
default-character-set = utf8

[mysqld]
datadir                         = /var/db/mysql/data
tmpdir                          = /var/db/mysql/mysql_tmpdir
slave-load-tmpdir               = /var/db/mysql/mysql_tmpdir
secure-file-priv                = /var/db/mysql/mysql_secure
character-set-server = utf8
skip-character-set-client-handshake

MySQL に初期 DB を登録します。パスワードはてきとーに設定してくださいませ。

create database photo;
CREATE USER photoadmin@'%' IDENTIFIED BY 'password';
GRANT ALL ON photo.* TO photoadmin@'%';
FLUSH PRIVILEGES;
alter user photoadmin@'%' identified with mysql_native_password by 'password';

Lychee 本体を展開します。

cd /root/Lychee/
fetch https://github.com/electerious/Lychee/archive/v2.7.0.zip
unzip v2.7.0.zip
cd /root/Lychee/Lychee-2.7.0/
cp -r favicon.ico index.html php data uploads view.php  plugins dist src /usr/local/www/apache24/data/lychee/
cd /usr/local/www/apache24/data
chown -R www:www lychee/
cd /usr/local/www/apache24/data/lychee
chmod 777 data/

日本語パッチを適用します。

fetch http://www.kurobuti.com/document/lychee/_downloads/Lychee-2.7.0_jp.patch.gz
gunzip -c Lychee-2.7.0_jp.patch.gz > /usr/local/www/apache24/data/lychee/lychee-2.7.0_jp.patch
cd /usr/local/www/apache24/data/lychee
patch -p1 < lychee-2.7.0_jp.patch

以上!!

と言いたいところですが、ここまでは参考サイトそのまんま。んで、実はこれでは動きません。写真ファイルのアップロードに失敗します。

/usr/local/www/apache24/data/lychee/php/modules/Photo.php の修正が必要です。

オリジナルでは変数 $medium に true / false を代入しているのですが、どうやらデータベース上では medium カラムが整数で定義されているらしく、数値を入れないと動きません。

Photo.php.txtを置いときますんで、手元のソースと比較してくださいませ。(Webサイト上に置く都合で、拡張子を変えてます)

さて動きました。

画面はこんな感じです。

Lychee.png

銀河 NGC2336

| コメント(0) | トラックバック(0)

GIZMODEの記事にハッブル宇宙望遠鏡がとらえた、NGC2336 の写真っていう記事が出てました。

ふわぁーっ綺麗やのぉ

引用しておこう

210308_spiralgalaxy_top.jpg引用です。パクリではありません(えー)

さて、こんなん見せられたら、撮ってみたくなるじゃないですか。

NGC2336.pngはい。NGC2336 です。はい。まちがいなく。

ほら、銀河の腕が見えてるでしょ?ハッブルの写真で8本見える腕、よーーーーく見ると、こっちの写真にも8本の腕が・・・・腕が・・・うーん?見えなくもない??

片や、ハッブルが1990年建造で約15憶ドルらしいので、5千億円くらい?($1=340Yenで計算)、もう一方はカメラと望遠鏡、赤道儀合わせて10万円前後。

500万倍の値段さがあると思えば、よく頑張ってるんじゃない・・・ですか?

ステッピングモーターを回したい!

ステッピングモーター関連を触ろうとすると高いんですよね・・・なんで、なんとか秋月で買えるもので。

というわけでFT232HL6470を使ってWindowsからUSB、SPI経由でステッピングモーターを回してみようと思います。

DSCN0276.JPGまずは接続。

なーんも考えることはありません。ピンアサインに従ってSPIをつなぎます。FT232H基板はUSB電源で、L6470基板は独自に12V電源をつなぎます。なんで、2枚の基板間ではGNDはつなぎますが、電源はつなぎません。

写真ではモーターはつないでませんが、動かすときには右側のコネクタにモーターをつなぎます。まぁ、当たり前ですね。

で、次にWindows上での環境セットアップ。Pythonをインストールして、FT232Hを使うための環境を構築します。すでにまとめてくださってる方がいらっしゃるので、こちらを参考にしてもらったほうが早いでしょう。FT232Hのメーカーのページもリンクしておく。

まぁ、簡単に書くと、

こんな感じ。

で、この記事のポイントはここから。

FT232Hで記事を探すと GPIO を使う話がひじょーに多くて、次にI2Cの記事が出てくる。SPIをやってる人がほとんど見つからなかったので、この記事を書いてます。

まずは、ソースをどーん!

from pyftdi.spi import SpiController
spi = SpiController()
spi.configure('ftdi://ftdi:232h:1/1')
dev=spi.get_port(cs=0, freq=12E3, mode=0)

# GetStatus CMD
dev.exchange([0xd0])
val1 = dev.exchange([], 1)
val = 0
val = val1[0] << 8
val1 = dev.exchange([], 1)
val = val | val1[0]
print("Status : %04x" % val)

こんな感じです。

前半4行がFT232HでSPIを使うための初期化部分。後半8行は L6470 の Status レジスターを読みだす処理です。

SPI に関する初期化は FTDI 社のライブラリにお任せです。特に3行目のURLっぽい指定方法は知らなきゃわかんねーよって言いたい書き方ですね。

で、次に L6470 のアクセス処理。ここが割と特殊です。

L6470 は仕様でコマンド 0xd0 を 1Byte 書き込むと、2Byte 使ってステータスレジスターの値を返してきます。

で、その書き方がポイント。

FTDIライブラリのサンプルとかに従って書くと、

val = dev.exchange([0xd0], 2)

と書くはずなんですが、これだと動きません。この時のSPIの波形がこんな感じです。

DSCN0268.JPG上からSPICLK、(FT232Hからみて)SPIOUT、SPIIN、SPICSです。

なぜかSPIOUTで書き込んだコマンド波形がそのままSPIINにエコーバックしてます。なぜなのか分かりませんが、こういう仕様のようです。

上記の正しく動くコードだと、こんな波形になります。

DSCN0267.JPG違いはSPICSの動き。8bit おきにCS が Diassert されてます。まぁ、実はデータシートに「各バイト送信ごとにCSをHにしろ」って書いてあるので、ちゃんと読めっていうだけの話なんですけどね。

最後におまけ。

from pyftdi.spi import SpiController
spi = SpiController()
spi.configure('ftdi://ftdi:232h:1/1')
dev=spi.get_port(cs=0, freq=12E3, mode=0)

speed = 45000
cmd = 0x50
dev.exchange([cmd])
val = (speed & 0xff0000) >> 16
dev.exchange([val])
val = (speed & 0x00ff00) >> 8
dev.exchange([val])
val = (speed & 0x0000ff)
dev.exchange([val])

とりあえずモーターを定速で回転させるスクリプトです。

内容はデータシートみて読み解いてください(を

このスクリプトを実行したときのSPIはこんな感じ。

DSCN0269.JPG

このアーカイブについて

このページには、2021年3月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2021年2月です。

次のアーカイブは2021年4月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。