2018年8月19日日曜日

LinuxでTLE自動更新

夏休みの空いた時間を使ってUbuntuをデスクトップに入れてみては、Pythonコードがほぼそのまま動いてくれて感動しているロケット小僧です。
そのまま動かないのは、Windowsでコードを書いているときにソースコードの頭2行に書くおまじないをサボっていたせいですけどね。

メモがわりに、先日の記事で提示したTLEの自動ダウンロードスクリプトで修正版を貼りまする。(先日の記事にも追加しました)

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from spacetrack import SpaceTrackClient

st = SpaceTrackClient('ID', 'password')
TLE = st.tle_latest(favorites='KIT', ordinal=1, epoch='>now-30', format='3le')

print(TLE)

先日の記事と同じく、IDとpasswordをspacetrack.orgで取得したものに置き換えて、favorites='KIT'を実在するリスト名に指定して実行すると、そのリストをダウンロードして表示します。
この表示をリダイレクトでファイルに保存してOrbitronなどで使う方法を取っています。
ソースコードをいじらなくても、出力先は後で変えれたらいいなぐらいの気持ちで変えました。


crontabで毎時呼び出して使っています。

00 * * * * python /home/username/tle/downloadTLE.py > /home/username/tle/satellite.txt

2018年8月21日更新
0時ちょうどにしか更新されないなと思ったら、crontabの設定ミスってました。

自動実行がWindowsより圧倒的に簡単にできて便利だなぁと思う今日この頃でした。


2018年8月11日土曜日

BIRDS2を手持ち八木で受信してみた

2018年8月10日 18時45分に国際宇宙ステーションからBIRDS2プロジェクトの衛星3機が放出されました。


少し前に手持ち八木で435MHz帯の衛星を受信するシステムを構築していたので、受信してみました。
受信システムの詳細は需要がありそうだったら記事にします。
(一応トラ技Jr34号 2018年夏号に記事はあります。)

最初のトライとしては、8月10日17時20分ごろからの日本上空を通過する最初のパスでした。ISSの軌道情報(TLE)を使ってトラッキングしましたが、とりあえず電波は取れるモノの、3機が区別できるほどではありませんでした。


8月11日20時ごろからのパスで再トライしました。
TBA - TO BE ASSIGNEDですが、3機分のTLEも出ていたので真ん中のTLE(カタログ番号43590)を使って追ってみました。


今日はきれいに聞こえてきました。
受信周波数は437.377MHzにドップラー効果を計算して追っています。
発表では437.375MHzだったので、少し高めですね。
ちなみに、同じ西無線の通信機をダウンリンクに使っているAOBA-VeloxIIIは437.373MHz,鳳龍四号は437.374MHz(手持ち八木とIC-R20で受信した実測値)なので、個体差で数kHzぐらいずれるようです。
(BIRDS2についてのPDF)

放出当初はCWが送出される時間がきれいにずれて、重ならずに聞こえていたCWですが、内臓時計のずれやリセットなどによる影響でブータンとフィリピンの衛星はほとんど重なって、マレーシアも間をあけずに聞こえてきました。
今回の受信では、ブータンの衛星の電波が一番強かったように感じました。

AOBA-VeloxIIIや鳳龍四号で使っていたため、CwGetを使っていますが、BIRDS2チームはCW skimmerを導入しているようです。


録音から再生して表示させてみましたが、かなり高性能で使えそうです。ただシェアウエアなので使い続けるには75ドルだそうです。ちょっと高い・・・

久しぶりに衛星受信したら、ちょっといろいろと作りたくなってきたので、夏休みを使っていろいろやってみます。

やりたいこと
ローテーターを作る
ソフトウエア無線を使いこなす(今使っているレシーバーは研究室のを拝借してるので)
自動追尾ソフト&サーバーアップロード機能あたりを作る

NT京都あたりで展示&実演できたらいいな・・・

2018年7月23日月曜日

先日発注した基板が、土曜日に発送されていたようです。


17日発注なので、 今回は5日で発送ですね。はやか~

明日か明後日には受け取れると思うので、楽しみですな。

10枚で発注したけどelecrowガチャ、いくつになってるかな・・・

2018年7月17日火曜日

KiCadの自動配線

今回、ほとんどスルーホール部品の緩い2層基板を作ることになったので、KiCadの自動配線(FreeRouting)で遊んでみました。

今回使用したKiCadはVer4.0.7です。

今回作る基板


前回の基板と機能は同じで、9軸と気圧センサ、TWE-lite、MicroSD、あとサーボモータとGPSとのコネクタあたりが載っています。

Nucleoに乗せて使う予定ですが、GPS、TWE-lite、MicroSDが載っているシールドは重宝しそうなので、レベル変換基板も載せてArduino対応にしています。(図で8ピンと20ピンの3DモデルICになっているのがそれ)

ちなみに、ライブラリについては、秋月の変換モジュールはライブラリを自作し、TWE-liteとMicorSDはネットから落としましたが、その他のライブラリはKiCad付属で済みました。最近のKiCadはライブラリがかなり充実しているようです。

自動配線の手順


1、基板外形の上に部品を配置

白線(配線すべき線)があまり交差しないように配置していきます。


2、適切にデザインルールを設定

今回は、elecrowに発注するので、下の図のようにグローバルデザインルールを設定しました。




3、ネットクラスを設定

elecrowによると、配線幅とクリアランスはそれぞれ6mil(0.1524mm)ですが、8mil(0.2032mm)推奨とのことですので、デフォルトはそれぞれ0.2mmずつにしました。ビア径は最小設定で行きます。
ICの電源線をPowerとして、配線幅を0.5mm、サーボ駆動用の電源を1mm幅に設定しました。




4、FreeRoutingが読み込むファイルの書き出し

自動配線ソフト、FreeRoutingが読み込める形式でファイルを書き出します。
Pcbnew(パターン編集画面)から道路工事しそうなひし形に↑↓が書かれているボタンをクリック、「現在のボードを"Spacctra DSN"ファイルへエクスポート」をクリックすると、DSNファイルが書き出せます。



5、日本語文字の削除

2バイト文字は読み込みエラーになるので、書き出したDSNファイルをテキストエディタで開いて日本語文字を削除します。(今回は、ファイルパスのみ。)



6、GitHubから自動配線ソフト"Freerouting"をダウンロード

「github - freerouting」
https://github.com/freerouting/freerouting

7、Freerouting.exeを起動

ダウンロードして解凍したら"freerouting-master\binaries"にFreeRouting.exeがあるので起動します。



8、"Open Your Own Design"をクリックして、書き出したDSNを読み込む。



9、自動配線開始

Autorouterをクリックして、配線が終わるまで待ちます。



最初の1分ぐらいでほとんどの配線が終わって、そこから2時間ほど進まなかったので、未配線を残したまま止めました。

10、配線が終了したら、File→Export Specctra Session Fileで結果を保存します。



11、KiCadへの書き戻し

Pcbnew(パターン編集画面)に戻ってひし形ボタンをクリック、「スペクトラ セッション ファイル(*.ses)のバックインポート」をクリックして、SESファイルを読み込みます。
結線情報データを再構築しますか?のダイアログは"はい"をクリックします。



12、KiCadに自動配線したパターンが適用される



13、調整




※調整内容

・なんでお前そんな配線したん?って配線の引き直し(↓参照)
・両面にGNDベタパターンを配置
・アンテナパターンになりそうな細いベタの削除(配線禁止ゾーン・ベタのみ)
・GNDビアで両面GNDベタの補強
  参考:「KiCadでベタGNDにたくさんviaを打つ」
  http://idken.net/posts/2017-04-19-kicad_via/
・シルク印刷の調整
・急に機能を追加したくなって、ピンソケット2ピンを追加


なんでお前そんな配線したん?って配線の引き直し作業中



Arduinoシールドは3倍のサイズで印刷すると、ちょうどA4におさまるサイズのようです。画面で見るのと、紙でチェックを入れるのでは作業性がかなり違います。


結果


  • 電源ラインは信号線に比べて太く設定したことにより、長く配線を伸ばすコストが高いのか、かなり最初にほぼ最短ルートで決定していました。デザインルールをうまく使うと、電源ラインを引かなくても欲しい配線で引かれるかもしれません。
  • 今回は、特にケアをする信号線がなかったので、特に何も引かずにFreeRoutingへエクスポートしましたが、高速な信号線やアナログの信号線は先に配線したほうが良いでしょう。
  • 鋭角は回避する自動配線のようです。ただし、直角に曲げるのは容赦なく使ってくるので、その点で修正はけっこうあります。見た目はあまりよくないですが、修正しなくても一応使える配線は出てきます。
  • 今回は、裏面をほとんど使わない配置でしたが、両面が混むような配置では自動配線はきれいに動いてくれないかもしれません。


結論

今回程度の回路規模なら、KiCadの自動配線は結構使える。

2018年7月15日日曜日

KiCadでビアのプロパティを一括で変更する方法

久しぶりにKiCadを開いてプリント基板を作ったら,デザインルールのビアの設定を忘れていて,全部のビアの直径が 0.0048mmだけ大きかったので,テキストエディタで直します.


4層基板であること以外はいつも通りだったのですが,ビアのデザインルールの設定を忘れていました.




elecrowに発注しようと思っていたのですが,ビア径は0.6048mm以上でした.

「PCBサービスのQ&A」, elecrow,
<https://www.elecrow.com/wiki/index.php?title=Q%26A_for_PCB_service>より

6milは0.1524mmですので,6mil + 0.3mm + 6mil = 0.6048mmでビア直径は0.6048mmです.(#ヤードポンド法死すべし慈悲はない
さらに,ドリル直径も0.4mmに設定していますので,0.3mmに変える必要があります.

おそらく,加工誤差の範囲でしょうから,これで出しても,なにも言われないでしょうけど・・・(変えずに作って出した記憶ありますし)
気付いてしまったので,直しておきたい.けど,手作業で変えるにも55個ビアがあるので,めんどくさいな・・・と.

なんか方法がないかなと思って,とりあえずボード図のファイルをテキストファイルで読み込んでみました.


ビアらしき文があったので,一度KiCadを閉じて適当に置き換えてみました.


KiCadで再度開いてみると,ビアがちゃんと変更できてました.


無事にDRCも通ったので問題ないようです.引き直しにならなくて良かった!

以上が,ビアの一括変換の方法です.文字の大きさはKiCadの機能で一括で変更できますが,ビアを打ち間違える機能は無いようです.まぁ,需要ないですしね.

結論:引く前によくよくデザインルールは検討しましょう.

2018年5月20日日曜日

Space-track.orgからのTLEダウンロードPythonスクリプト

衛星運用の時刻を調べるときに,Orbitronなどに読ませるTLEを手動でSpacetrackのWebサイトから更新するのがめんどくさいので,Pythonでスクリプトにしてみました.
Pythonはライブラリがそろってて最近はまっています. 書き方を忘れてしまいそうなのでメモがてら投稿します.(久しぶりの投稿) 

6,7,8行目の引数を適当に変更してください.

6行目の'ID'と'password'
(Space-track.orgのIDとパスワード)

7行目の'KIT'
(Favoriteリスト名)

8行目の'KITsat.txt'
(保存ファイル名)

以上の3行を使いたいように変更すれば使えるはずです.

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from spacetrack import SpaceTrackClient

st = SpaceTrackClient('ID', 'password')
TLE = st.tle_latest(favorites='KIT', ordinal=1, epoch='>now-30', format='3le')
TleFile = open('KITsat.txt', 'w')
TleFile.write(TLE)
TleFile.close()

print('TLE Update Success')

※このソースコードを使用したことによる一切の損害について責任を負いません.

2018/08/18追記
Linuxでもそのまま使えるようにutf-8としてきちんと読むように頭に追加しました。
一番このコードここからコピペしているのは自分自身かもしれない。
2018/12/14追記
久しぶりに確認したら、8月18日にソースコードの頭に追加したのに本文の方を書き換え忘れていて、本文とソースコードが噛み合わなくなっていたのを修正しました。(3,4,5行目→6,7,8行目)
後輩が、「PythonでTLEをダウンロードする方法を調べていたら、このページにたどり着いた」って話をされて、喜んでいたらこのザマだよ!

参考文献
Frazer McLean(2018)「spacetrack Documentation Release 0.13.1」<https://media.readthedocs.org/pdf/spacetrack/latest/spacetrack.pdf > 2018年5月20日アクセス.


2016年3月10日木曜日

ごち缶 解説記事 第二缶 ご注文は回路ですか??

ご注文は缶ですか??の第二回解説記事

今回は回路についてです。

まず、メイン基板の回路図はこちらになります。



プリント基板

プリント基板は、KiCadで設計しています。

ミッション基板や、付属基板を面付けして、elecrow(http://www.elecrow.com/)に発注しています。

基本的に、部品は秋月電子通商(http://akizukidenshi.com/catalog/default.aspx)で手に入るものを使用しています。
以降、部品名に秋月のリンク張っていきます。

電源部

第一缶ですでに出しましたが、電源はLiPo 2セル 7.4V 450mAhです。モーターもロジックも同じものから取り出しています。

ロジック用電源は、LiPoからレギュレータICのNJM2863F33を使って3.3Vを作っています。
3mm四方のICのくせに150mAもはき出せるんで、今回の用途では十分(消費電力数十ミリアンペア)だと考えて採用しました。

レギュレータICの前に置いたLT6106CS5で電流値を電圧値に変換してます。

これと、LiPoの電圧を分圧したものをNJM2732Mで組んだボルテージフォロアでインピーダンス変換して、マイコンのADコンバータに入れています。
ADコンバータの基準電圧としてNJM2825Fを使用して、1.2Vを作っています。

D1は電源投入確認用のチップLEDで、FM(フライトモデル、大会に出したモデル)は青LEDです。

メインマイコン

メインマイコンには、ATmega1284P-AUを使っています。
選定理由は、ハードウエアのUARTが2つついていて、GPSとPCの接続に便利だったからです。
AVRを選んだ理由は、宗教戦争()になりかねないのでやめましょう(だって使いやすいんだもん

動作周波数は、3.3Vで動作保証されている最大の12MHzを採用しました。
三角関数とか少し重めの処理をさせるだろうと思って採用したんだけれど、8MHzぐらいで十分だったかもしれないです。8MHzなら内部発振使えて、部品数減らして信頼性を向上させれたのだけれども。

ニクロム線ドライバ

ニクロム線は、数A流します。(モーターより消費電流大きい)
そのため、スイッチング素子にオン抵抗の小さいMOS-FETを使用しています。
FDS4935は、ON抵抗が19mΩのPchのMOS-FETが2個入っていて、実装面積が小さくでき、都合がよかったので採用しています。(しっぽ展開用とパラシュート切断用)

Nchのほうが安価でON抵抗の小さい素子があるのですが、Pchにした理由はハイサイドでスイッチングしたかったからだったはずです。
(数ヶ月前の設計なんで、あまり覚えてない。たぶん、構体をGNDに落としたかったから、じゃないかな)

PchのMOS-FETのゲートを駆動するためにNchMOS-FETの2N7002DW(こちらもパッケージに2個入り)を使ってます。

この素子が、あほみたいに小さくて、手実装やめようかと思うぐらいでした。
0.65mmピッチなのはまだいいとして、6ピンしかないから、1番ピンがどこにあるの?状態になるし。(一応、点対称に素子が入っているんで、逆に実装しても動くけど・・・)周りの抵抗(1608サイズ)の方がむしろ大きいし、EM(エンジニアリングモデル、開発用)ではフットプリント間違えて、ウレタン線で修正しないと行けないし。もうっ!って感じでした。


モータードライバ

モータドライバは、BD6222HFP-TRを採用しました。
10V以上の耐圧性能を持っていて、2A程度を駆動できるぐらい(去年の教訓、電流容量が足りないと、ちょっとしたことでストールする)の電流駆動性能を持っているまぁまぁ小さな、できるならば表面実装のモータドライバを選んでみたら、これになりました。
ちなみに、タミヤのミニモータは3V定格ですが、7.4Vをそのまま突っ込んでます。PWMで手加減とかほぼせずに(曲がるときに片方をPWMで少し速度落とす程度)
今のところ、煙噴いたりしていないので、たぶん次の大会もこれで行こうかなと思っています。小さくてパワーがあるし。

GPSモジュール

GPSモジュールは、GMS7-CR6です。
小型のモジュールだったので採用しています。開けた場所なら50cmぐらいのところまでこれで誘導できます。
今は売り切れだし、みちびき対応の方が小さいので、次の大会では、基板を起こしてこれを載せようかなと思っています。

EEPROM

EEPROMは、1Mbit記録できるAT24C1024Bを使っています。
小さい表面実装部品(25LC1024T-I/MF)もありますが、ソケットで交換できるのと、さすがにDFNパッケージは手実装できないので、DIP品使っています。

センサー類

センサーとして、距離センサ(SRF02)と方位センサ(HMC5883L)をしっぽに載せています。
距離センサは地面との距離を測って、着地の検知に、方位センサはGPSと組み合わせて誘導するのに使います。
方位センサの高い方を使っているのは、1年前のカンサットで使っていたのを流用しているからです。

コネクタ

コネクタは、書き込みとPCとのUART、フライトピンにピンヘッダ、ミッションとの接続に1列の丸ICソケット、(相方は、丸ピンIC連結ソケット)、残りは、JSTのEHコネクタを使用しています。