さて、さぁソフト編。
1. microSDはSanDisk Extreme Pro UHS-I U3 V30 A2 Rという256GBのものを用意。
2. OSはhttps://tstudioastronomy.blog.fc2.com/blog-entry-281.htmlからAstroberry-J ver2をダウンロード(いつの間にかver3が出てるんだよね・・悲しい・・)。
3. https://www.raspberrypi.org/downloads/からRaspberry Pi ImagerというSDへの書き込みツールを落としてWindowsにインストール。
4. イメージをmicroSDに焼く
5. microSDをraspberry pi4 にさして、ルータから優先イーサネットのケーブルをraspberry pi4 にさして電源ON
6. windows からVNC viewer でraspberry pi4 へ接続(多分 astroberry というホスト名で繋がると思いますが駄目なら IPアドレスを調べましょう)。
7. パーティションのサイズを増やす
・sudo apt-get install gparted
・sudo /usr/sbin/gparted
8. 解像度変更。
・/boot/config.txt 書き換え
hdmi_group=1
hdmi_mode=4
9. WIfi の設定
私はモバイルルータを持っていき、それで利用する予定なので、ホットスポットをオフして、接続ポイントにモバイルルータと、自宅のWifiを入れました。自宅のWifi で繋いだ後は有線接続は基本使っていません。
10. 温度、湿度、圧力
・/boot/config.txtに以下を追加し再起動
dtoverlay = i2c-sensor,bme280,param=0x76
以下を実行
・sudo apt-get install python3
・sudo apt autoremove
・sudo apt-get install i2c-tools
・sudo apt-get install python-smbus
・pip3 install RPi.bme280
python で
import bme280
while 1:
print(bme280.sample(bus,0x76))
time.sleep(3.14)
を実行すると温度湿度気圧が表示されると思います。私はOSが起動されると3分毎に温度湿度気圧を取ってきてcsvファイルに書き出すプログラムを動かしています。
・~/python/bmp280_service.py 書き換え
import argparse
import smbus, time, bme280
import datetime
def main():
parser=argparse.ArgumentParser()
parser.add_argument("--time","-t",help="Interval time(second).",
default=300,type=int) #default 5 minuts
args = parser.parse_args()
tm=args.time
interval=args.time
time.sleep(300)
bus = smbus.SMBus(1)
bme280.load_calibration_params(bus, 0x76)
logname=datetime.datetime.now().strftime("%Y-%m-%d-%H:%M:%S") + ".log"
with open(logname,mode="w") as f:
f.write("time, C, hPa, %rH\n")
while 1:
data=bme280.sample(bus,0x76)
f.write(str(data.timestamp.strftime("%Y/%m/%d %H:%M:%S"))+","+\
str(round(data.temperature,2))+","+\
str(round(data.pressure,2))+","+str(round(data.humidity,2))+"\n" )
f.flush()
time.sleep(tm)
if __name__ == '__main__':
main()
・/etc/systemd/system/bmp280.service
[Unit]
Description=bmp280
After=nginx.service
[Service]
Type=simple
User=astroberry
WorkingDirectory=/home/astroberry/bin/log
ExecStart=/usr/bin/python3 /home/astroberry/python/bmp280_service.py -t 180
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
・sudo systemctl daemon-reload
・sudo systemctl start bmp280
・sudo systemctl enable bmp280
11. GPSの設定
・/boot/cmdline.txt 書き換え
#dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=2924e30a-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
・sudo systemctl stop serial-getty@ttyS0.service
・sudo systemctl disable serial-getty@ttyS0.service
・/boot/config.txt
enable_uart=1
dtoverlay=pps-gpio,gpiopin=18
・/etc/modules (追加)
pps-gpio
・sudo reboot
gpsd のインストールと設定(INDIで利用するため)
・sudo apt-get install gpsd gpsd-clients pps-tools
・/etc/default/gpsd 書き換え
START_DAEMON="true"
DEVICES="/dev/ttyS0 /dev/pps0"
#GPSD_OPTIONS="-n"
・sudo systemctl enable gpsd.socket
・sudo reboot
・gpsmon
・sudo apt-get install indi-gpsd
・sudo apt-get install python-gi-cairo
・INDIでgpsdを追加(後ほど書きます)
同期:
・ 例えば ~/bin/setdatefromgps.sh という名前で
#!/bin/sh
echo start at `/bin/date`
for i in 1m 1m; do
echo sleep $i
/bin/sleep $i
GPSDATE="`/usr/bin/gpspipe -w | /usr/bin/head -10 | /bin/grep TPV | /bin/sed -r 's/.*"time":"([^"]*)".*/\1/' | /usr/bin/head -1`"
echo $GPSDATE
/bin/date -s "$GPSDATE"
done
echo end at `/bin/date`
の様なファイルを作って、
chmod a+x ~/bin/setdatefromgps.sh
して、
crontab -e
で、以下を追加
@reboot /home/astroberry/bin/setdatefromgps.sh > /home/astroberry/bin/log/setdatefromgps.log 2>
あとは、
12. デジタル時計時刻表示フォーマット「%R」を「%Y/%m/%d %R」と書き換え(私の好み)
13. その他 emacs のインストールや画面デザインの変更など。
取り合えず、こんな感じで準備OK!