MawaLog

一日一日、楽しく生きる。技術と音楽が好き。

衛星通信と普通のインターネットの回線速度を調べてみた

人工衛星をつくる−設計から打ち上げまで−

人工衛星をつくる−設計から打ち上げまで−

メモ

最近、新たな趣味の衛星開発エンジニアリングというので、いつもWeb触ってるから、回線速度が気になって比較してみた。衛星開発の通信ではモールス信号ができると地上と連絡がとれるということなので、モールス信号は、あんまり知らないけどツー・トンの2種類の信号で文字列処理をするわけだから、これをHTMLデータをバイナリデータにエンコードして送信して、デコードして復元すれば、あとはウェブサーバーにデータを食わせるなど環境を整えればHTTP通信ができるのでは・・・と思うのだが、どのくらいスピードが違うのだろう・・・ということで調べてみた。

調査結果

auのインターネット 

auひかりは通信速度、最大1Gbps (1,000Mbps)でサービス提供を行っています。

引用元
www.hikari-au.net

NURO光ではさらに速い、最大2Gbps(2,000Mbps)でインターネットが利用できます。

引用元
www.hikari-au.net

なるほど。ここでふじ3号というアマチュア衛星をしらべると、

データ通信速度1,200bps(アップリンク:2相PSK、ダウンリンク:FM変調) および9,600bps(アップリンク:FSK(G3RUH方式)、ダウンリンク:FSK(G3RUH方式))

引用元
ふじ3号 - Wikipedia

桁が3桁ずれてるのか・・・

なつかしのISDNを比較対象に調べてみた。あの画像がゆっくりでてきて止まるやつ・・・

ISDNは1回線あたり64Kbpsのスピードです。2回線を使用すれば128Kbps

引用元
www.wanichan.com

最近のインターネット 1,000,000bps~2,000,000bps
ISDN 64,000bps~128,000bps
ふじ3号(FSK) 9,600bps(FSK方式ではない場合1,200bps)
_

なるほど・・・ISDNより遅いのか・・・宇宙との通信の難しさを垣間見えますね・・・動画を送る衛星放送の衛星の通信パワーってすごいんだろうな・・・また機会があったら調べてみよう・・・

人工衛星開発プロジェクト『RymanSat』技術部門参加にあたって今後の目標。KiCadで基盤を起こせるようになる。

人工衛星をつくる−設計から打ち上げまで−

人工衛星をつくる−設計から打ち上げまで−

人工衛星開発プロジェクト『RymanSat』に加入

今年今月に飛ぶのが00号機という初号機で、以降、01号、02号とあるのだが、自分は01号通信機開発班、02号電源開発班の開発チームに加入することにした。最初はソフトウェアで貢献しようと思っていたのだが、いつもの気まぐれ好奇心からほぼ初心者であるハードウェアにチャレンジすることにしてみた。うーん、どこまで行けるかな・・・まあ行けるところまで・・・・・・ソフトウェアの開発は独学で自分が満足できる程度で習熟できたと思っているので、行けるような気もしてる、頑張ろう^^

中期目標

  • KiCADに習熟する

工場で先輩スタッフの方からレクチャーいただいたところ、電子回路を起こす仕事が01号機ではメインになりそうだったのでまずはこのKiCADというものに習熟する必要があるとのことだったのでそこからスタートする。

  • 回路図完成品から基盤を起こせるようになる。

直近の目標

このあたりで簡単な回路を書いて基盤をおこせるようになる

www.slideshare.net

qiita.com

電子工作など関連の電力基礎知識と放熱がどのくらい出るかの目安のための自分用メモ

専門外なので、調べてみた

主にラズパイでの電子工作時にショートとか怖くて、なかなかチュートリアルから外れた配線ができないので、色々電力関係について調べてみた。

(読者の皆様:なんか違うこともあるかもしれないのでご指摘いただければ勉強させていただきます〜。)

電力の基礎知識

  • 電流(A) × 電圧(V) = 電力(W)
  • 一般的なコンセントに流せるアンペア数は15 Aまで
  • 一つのコンセントで合計1500 Wまで使うことができます。

電流、電圧、電力の関係は次の式であらわされます。

電流(A) × 電圧(V) = 電力(W)

コンセントのデフォルト設定

一般的なコンセントに流せるアンペア数は15 Aまでです。一般家庭用の電圧は100 Vです。一つのコンセントで合計1500 Wまで使うことができます。

つまり携帯充電器1Aのものだったら、現実でおきる細かな条件を考えない場合は理論上はタコ足1,500個同時挿しできるということか・・・(やらんけど・・・youtuberでやる人おりそう・・・)

ブレーカーのデフォルト設定

一般的なブレーカーは20Aです。よって、一つの回路で合計 2000Wまで使うことができます。

20A×100V(一般家庭の電圧)=2000W

うちは30Aだから、3000Wまで同時に使える 50Aまで上げると、5000Wまで同時に使えるのか、なるほど。

  • エアコン 660W /100 ==>6.6A
  • 冷蔵庫450リットル 250W /100 ==>2.5A
  • テレビ 210W /100 ==>2.1A
  • デスクトップPC 150W~500W /100 ==>1.5A~5A
  • ノートPC 30W~80W /100 ==>0.3A~0.8A
  • ゲーミングPC (OMEN by HP Desktop 880 ハイパフォーマンスモデル gtx1080)38W~360W /100 ==>0.3A~3.6A
  • Mac mini(Mac mini (Late 2014) 1.4GHz デュアルコア Intel Core i5、4GB 1600MHz LPDDR3、500GB (5400 RPM) HDD、Intel HD Graphics 5000) 6W~85W /100 ==>0.06A~0.85A
  • ラズパイ2B 44W~65W /100 ==>0.44~0.65A
  • ラズパイ3 42W~84W /100 ==>0.42A〜0.84A

だいたい1A以下で小さめの家電、でかいので5A前後って感じだな・・・

引用元 https://enechange.jp/articles/large-consumption-appliances

matome.naver.jp

okiniiripasokon.com

http://d.hatena.ne.jp/naga_sawa/20160803/1470196569

電気料金

電気料金 = 消費電力量(kWh) × 27円 例)1000 Wの電気ストーブを2時間使った場合 1000W×2時間=2000Wh(2kWh) 2kWh×27円=54円

なんかpythonで消費電力モジュールできるな、これ

引用元 電気の基礎知識 - 家電情報ポケット - Panasonic

ワット数と熱さ

  • 11W 白熱電球60W 熱として放出されるのは11W あれも触れないくらい熱いね。。。

  • 15W〜70W はんだごて やけどする程度に熱いよな

  • 500W~600W 電子レンジ 加熱調理出来る時点で熱いわ

白熱電球60W(0.6A)であっつ〜いって感じだから、とにかく家電系のワット数の熱源をちょっと触ると大体体感だと熱いんやな・・・苦笑

参考記事
電気の基礎知識 - 家電情報ポケット - Panasonic

ワットってどれくらいの熱量なの? [物理のかぎしっぽ]

https://zh.nc-net.com/knowledge/morilog/detail/14504/

http://www.tlt.co.jp/tlt/lighting_design/design/basic/data/57_60.pdf

ラズパイ2TypeBのファイアーウォール設定メモ

たまにしかいじらないので忘れる

これ系は、そういう感じですので、ここに使ったコマンドをまとめることにします。

押さえておくポイント

  • ラズパイの型番は、ラズパイ2TypeB

  • OSはRaspbian

  • ファイアーウォールのパッケージは"iptables(インストール時のパッケージ名は"iptables-persistent"(のはず。昔過ぎて記憶が曖昧でごめんなさい))"

  • 設定ファイルの場所→/etc/iptables/rules.v4

手順

0:iptables がインストールされているか確認

$which iptables
/sbin/iptables

こんな感じでインストールされていなければapt-getでゲットします。

1:設定ファイルを書き込む。

$ sudo vim rules.v4

書き込み例

-A INPUT -p tcp --dport 80 -j ACCEPT

↑80番ポートは開けます(HTTP通信のため)(細かいセッティングオプションは省略)

2:書き込んだら保存

3:iptables 再起動 <ハマリポイント>

$ sudo /etc/init.d/netfilter-persistent restart
[ ok ] Restarting netfilter-persistent (via systemctl): netfilter-persistent.service.

以下色々ためしましたが、自分のパッケージではエラーがでました。他のパッケージでは"sudo service iptables restart"で通るっぽい。

sudo service iptables restart
sudo service iptables-persistent restart
sudo /etc/init.d/iptables restart
sudo /etc/init.d/iptables-persistent restart

4:反映されているか確認

$ sudo iptables -L

参考にした記事

qiita.com

開発日誌:ラズパイ+AWS S3でネットワークカメラもどきを作ってみるvol.4[完結編]:cronで定期的に撮影させる

これを使って遊びます。

Raspberry Pi Camera V2

Raspberry Pi Camera V2

今までの経緯

カメラを作動させて・・・ k-mawa.hateblo.jp

pythonで動けるようにして・・・ k-mawa.hateblo.jp

撮影した画像をS3にアップして見えるようにして・・・ k-mawa.hateblo.jp

今回は仕上げで定期的に撮影してS3にアップして遠隔から状況をわかるようにします!

手順

cronです。久しぶりなのでちょっと忘れてます。

この記事が役立ちました。参考にしています。 Saba note

1:crontabを編集します。

cronのスケジュールが書いてあるcrontabを編集します。

$ crontab -e

vimでいじります。

0,10,20,30,40,50 * * * * python3 /home/[ユーザー名]/py3env/capture_and_up.py

10分間に一回撮影にしました。

編集終わったら書かれているかどうか確認。次のコマンドです。

$ crontab -l

OK書かれてます。

2:cron再起動

とりあえず久しぶりにcron触るのでちゃんと動いているか見ます。このコマンドです。

$ /etc/init.d/cron status
● cron.service - Regular background program processing daemon
   Loaded: loaded (/lib/systemd/system/cron.service; enabled)
   Active: active (running) since 土 2018-01-06 11:17:05 JST; 4h 57min ago
     Docs: man:cron(8)
 Main PID: 405 (cron)
   CGroup: /system.slice/cron.service
           └─405 /usr/sbin/cron -f

動いていました。

再起動一応します。しなくても反映されているらしいという書き込みがありましたが、cron自信ないので、念のため。

$ sudo /etc/init.d/cron restart
[ ok ] Restarting cron (via systemctl): cron.service.

これで10分おきにS3に部屋の様子がアップされるようになりました!!

ラズパイデバイスで生活がより豊かになりそうです〜^^v f:id:k_mawa:20180105231444j:plain

開発日誌:ラズパイ+AWS S3でネットワークカメラもどきを作ってみるvol.3:カメラで撮った写真をS3へアップロード

これを使って遊びます。

Raspberry Pi Camera V2

Raspberry Pi Camera V2

今までの経緯

カメラを作動させて・・・ k-mawa.hateblo.jp

pythonで動けるようにして・・・ k-mawa.hateblo.jp

今回は、撮影した画像をS3(Amazon AWSのストレージサービス)にアップして見えるようにします。

手順

1:S3でバケットをつくる。

S3でバケットを作ります。アクセス権限はパブリックにしてください。 f:id:k_mawa:20180106144448p:plain

BUKKET NAMEは "picamerakmawa"にしました。

2:boto3をインストール

AWSを動かす用のモジュールはboto3といいます。

(py3env) [USERNAME]:~/py3env $ pip3 install boto3
Collecting boto3
  Downloading boto3-1.5.9-py2.py3-none-any.whl (128kB)
    100% |████████████████████████████████| 133kB 851kB/s 
Collecting botocore<1.9.0,>=1.8.23 (from boto3)
  Downloading botocore-1.8.23-py2.py3-none-any.whl (4.0MB)
    100% |████████████████████████████████| 4.0MB 44kB/s 
Collecting jmespath<1.0.0,>=0.7.1 (from boto3)
  Downloading jmespath-0.9.3-py2.py3-none-any.whl
Collecting s3transfer<0.2.0,>=0.1.10 (from boto3)
  Downloading s3transfer-0.1.12-py2.py3-none-any.whl (59kB)
    100% |████████████████████████████████| 61kB 779kB/s 
Collecting docutils>=0.10 (from botocore<1.9.0,>=1.8.23->boto3)
  Downloading docutils-0.14-py3-none-any.whl (543kB)
    100% |████████████████████████████████| 552kB 254kB/s 
Collecting python-dateutil<3.0.0,>=2.1 (from botocore<1.9.0,>=1.8.23->boto3)
  Downloading python_dateutil-2.6.1-py2.py3-none-any.whl (194kB)
    100% |████████████████████████████████| 194kB 457kB/s 
Collecting six>=1.5 (from python-dateutil<3.0.0,>=2.1->botocore<1.9.0,>=1.8.23->boto3)
  Downloading six-1.11.0-py2.py3-none-any.whl
Installing collected packages: docutils, jmespath, six, python-dateutil, botocore, s3transfer, boto3
Successfully installed boto3-1.5.9 botocore-1.8.23 docutils-0.14 jmespath-0.9.3 python-dateutil-2.6.1 s3transfer-0.1.12 six-1.11.0

無事ダウンロードできました。

3:awscliインストール

これはアクセスキーとかの管理用モジュールかと思われます。とりあえずアクセスキーをラズパイ内部で機能させるのに必要ですのでインストールします。

(py3env) [USERNAME]:~/py3env $ pip3 install awscli
Collecting awscli
  Downloading awscli-1.14.19-py2.py3-none-any.whl (1.2MB)
    100% |████████████████████████████████| 1.2MB 155kB/s 
Collecting rsa<=3.5.0,>=3.1.2 (from awscli)
  Downloading rsa-3.4.2-py2.py3-none-any.whl (46kB)
    100% |████████████████████████████████| 51kB 1.1MB/s 
Requirement already satisfied: botocore==1.8.23 in ./lib/python3.4/site-packages (from awscli)
Requirement already satisfied: s3transfer<0.2.0,>=0.1.12 in ./lib/python3.4/site-packages (from awscli)
Collecting colorama<=0.3.7,>=0.2.5 (from awscli)
  Downloading colorama-0.3.7-py2.py3-none-any.whl
Requirement already satisfied: docutils>=0.10 in ./lib/python3.4/site-packages (from awscli)
Collecting PyYAML<=3.12,>=3.10 (from awscli)
  Downloading PyYAML-3.12.tar.gz (253kB)
    100% |████████████████████████████████| 256kB 596kB/s 
Collecting pyasn1>=0.1.3 (from rsa<=3.5.0,>=3.1.2->awscli)
  Downloading pyasn1-0.4.2-py2.py3-none-any.whl (71kB)
    100% |████████████████████████████████| 71kB 1.1MB/s 
Requirement already satisfied: jmespath<1.0.0,>=0.7.1 in ./lib/python3.4/site-packages (from botocore==1.8.23->awscli)
Requirement already satisfied: python-dateutil<3.0.0,>=2.1 in ./lib/python3.4/site-packages (from botocore==1.8.23->awscli)
Requirement already satisfied: six>=1.5 in ./lib/python3.4/site-packages (from python-dateutil<3.0.0,>=2.1->botocore==1.8.23->awscli)
Building wheels for collected packages: PyYAML
  Running setup.py bdist_wheel for PyYAML ... done
  Stored in directory: /home/[USERNAME]/.cache/pip/wheels/2c/f7/79/13f3a12cd723892437c0cfbde1230ab4d82947ff7b3839a4fc
Successfully built PyYAML
Installing collected packages: pyasn1, rsa, colorama, PyYAML, awscli
Successfully installed PyYAML-3.12 awscli-1.14.19 colorama-0.3.7 pyasn1-0.4.2 rsa-3.4.2

できた〜

4:AWSアクセスキーなどラズパイ内部に登録

次に実際にawscliを使ってアクセスキーを入れます。

(py3env) [USERNAME]:~/py3env $ aws configure
AWS Access Key ID [None]: ***********
AWS Secret Access Key [None]: ***********
Default region name [None]: ***********
Default output format [None]: json

"Default output format"はjsonと入れとけばとりあえずはOK。(デフォルト設定)

configure fileができてるかなと、ためしに見てみると・・・

(py3env) [USERNAME]:~/py3env $ ls
bin  include  lib  pip-selfcheck.json  test_by_python.jpg
(py3env) [USERNAME]:~/py3env $ ls -a
.  ..  bin  include  lib  pip-selfcheck.json  test_by_python.jpg

ないですね。それで大丈夫です。一番上のディレクトリに隠れフォルダで".aws"というフォルダに格納されています^^

(py3env) [USERNAME]:~/py3env $ cd ../
(py3env) [USERNAME]:~ $ ls -a
.              .config          .python_history                        public_html
..             .dbus            .ssh                                   py3env
.Xauthority    .dmrc            .themes                                ダウンロード
.anthy         .gstreamer-0.10  .thumbnails                            テンプレート
.asoundrc      .idlerc          .viminfo                               デスクトップ
.aws           .ipython         .xsession-errors                       ドキュメント
.bash_history  .local           .xsession-errors.old                   ビデオ
.bash_logout   .minecraft       2018-01-06-114036_1280x1024_scrot.png  音楽
.bashrc        .pip             2018-01-06-114041_1280x1024_scrot.png  画像
.cache         .profile         2018-01-06-114043_1280x1024_scrot.png  公開

なかを見てみると・・・

(py3env) [USERNAME]:~ $ cd .aws
(py3env) [USERNAME]:~/.aws $ ls
config  credentials

ありましたね。打ち間違えたりしたらここから直接書き換えればOKです。

5:Pythonアップローダー実装

ようやくPythonコードが打てます。次のようにします。

>>> import boto3
>>> BUCKET_NAME = 'picamerakmawa'
>>> s3 = boto3.resource('s3')
>>> s3.Object(BUCKET_NAME, 'test_by_python.jpg').upload_file('/home/[ユーザー名]/py3envt_by_python.jpg')

解説をしておくと、

s3.Object(BUCKET_NAME, 'test_by_python.jpg').upload_file('/home/[ユーザー名]/py3envt_by_python.jpg')

BUCKET_NAMEで指定したバケット('picamerakmawa')に'/home/[ユーザー名]/py3envt_by_python.jpg'パスの画像を、'test_by_python.jpg'という名称でアップロードしてね。」という意味です。

バケットを見ると、無事アップロードされていますね! f:id:k_mawa:20180106145854p:plain

ちょっと見てみましょう・・・ f:id:k_mawa:20180106145909p:plain

おや!ダイアログで選択しないと見れないとかなんとか・・・これは不便・・・ f:id:k_mawa:20180106145919p:plain

これを解説するには、オプションのプロパティをくっつけときます。ExtraArgsの部分です。

>>>s3.Object(BUCKET_NAME, 'test_by_python2.jpg').upload_file('/home/[ユーザー名]/py3env/test_by_python.jpg', ExtraArgs={'ContentType': 'image/jpg', 'ACL': 'public-read'})

これでtest_by_python2.jpgはすぐ閲覧できました。 f:id:k_mawa:20180106145930p:plain

まとめたコードがこちら(セキュリティ上パス一部改変)

"""
capture
"""

import picamera
from datetime import datetime #本番では時間も計測してファイル名に埋め込んでいる

cam = picamera.PiCamera()
cam.resolution = (640,480)

image_name = "/home/[ユーザー名]/image_rooms/pycamera.jpg"

cam.capture(image_name)

"""
upload
"""

import boto3

BUCKET_NAME = 'picamerakmawa'
s3 = boto3.resource('s3')

s3.Object(BUCKET_NAME, 'pycamera.jpg').upload_file('/home/[ユーザー名]/image_rooms/pycamera.jpg', ExtraArgs={'ContentType': 'image/jpg', 'ACL': 'public-read'})

開発日誌:ラズパイ+AWS S3でネットワークカメラもどきを作ってみるvol.2:カメラをPythonで制御

これを使って遊びます。

Raspberry Pi Camera V2

Raspberry Pi Camera V2

今までの経緯

k-mawa.hateblo.jp

前回はカメラを機能するようにしたので、今回はPythonコードで制御できるようにしたよ。

手順

1:まずは、python-picameraというモジュールをOSにインストール。

apt-getで行う。

[ユーザー名]:~/py3env $ sudo apt-get install python-picamera
[sudo] password for [ユーザー名]: 
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
python-picamera はすでに最新版です。
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
  libasn1-8-heimdal libgssapi3-heimdal libhcrypto4-heimdal
  libheimbase1-heimdal libheimntlm0-heimdal libhx509-5-heimdal
  libkrb5-26-heimdal libroken18-heimdal libwind0-heimdal libxfce4ui-1-0
  xfce-keyboard-shortcuts
これを削除するには 'apt-get autoremove' を利用してください。
アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 10 個。

なんかすでに入っていた模様・・・問題は特になし。では次。

2:仮想環境に移行

(ラズパイでの仮想環境の構築方法はこちら→ Raspbian(RaspberryPi)でvirtualenvを導入したときのメモ - まわ )

[ユーザー名]:~/py3env $ ls
bin  include  lib  pip-selfcheck.json
[ユーザー名]:~/py3env $ source ./bin/activate
(py3env) [ユーザー名]:~/py3env $ ls
bin  include  lib  pip-selfcheck.json

3:とりあえず動作確認・・・

(py3env) [ユーザー名]:~/py3env $ python
Python 3.4.2 (default, Oct 19 2014, 13:31:11) 
[GCC 4.9.1] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import picamera
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named 'picamera'
>>> exit()

あれ、"picamera"ってモジュールが無いと来た。試しにpip3で入れてみる。

4:picameraをインストール

今度はapt-getでなくpip3で入れる。

(py3env) [ユーザー名]:~/py3env $ pip3 install picamera
Collecting picamera
  Downloading picamera-1.13.tar.gz (143kB)
    100% |████████████████████████████████| 153kB 899kB/s 
Building wheels for collected packages: picamera
  Running setup.py bdist_wheel for picamera ... done
  Stored in directory: /home/[ユーザー名]/.cache/pip/wheels/bd/5f/88/3109bd5aa7e6c5cf62d71d6cbf444d46a9d932df4af35f2071
Successfully built picamera
Installing collected packages: picamera
Successfully installed picamera-1.13

オッ、行けたっぽい。再度pythonシェルへ。

5:カメラをPythonコードで制御

以下のように打つと・・・

(py3env) [ユーザー名]:~/py3env $ python
Python 3.4.2 (default, Oct 19 2014, 13:31:11) 
[GCC 4.9.1] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import picamera
>>> cam = picamera.PiCamera()
>>> cam.resolution = (640,480) 

#↑撮影画像の縦横ピクセルを指定可能

>>> cam.capture(test_by_python.jpg)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'test_by_python' is not defined 
#↑captureするファイル名は""でくくって文字列と明示が必要
>>> cam.capture("test_by_python.jpg")
>>> exit()

撮れてるかファイルを確認すると、

(py3env) [ユーザー名]:~/py3env $ ls
bin  include  lib  pip-selfcheck.json  test_by_python.jpg

できてる。実際に画像も撮れていた。OK。次は、botoでS3にアップだな。