2018年10月20日

Kicadのパワーラインの配線方法

電流を多く流すパワーラインの回路設計は
配線幅を広く配線するということが一般的ですが、
それに加えて下記のように意図的に絶縁層(レジスト)をなくして、
ハンダで基板上の配線の厚みを増やす方法があります。
これによってより大電流を流すことができます。

powerline.png
赤枠部分は意図的にレジストが一部ない

Kicadでも意図的に絶縁層(レジスト)をなくすことができるので
その方法を今回は紹介します。

流れとしては
今まで通り配線を行い、
後から絶縁層(レジスト)を「図形ライン」を使用して、
必要な個所を選択して剥がす
という流れです。


@まず、今まで通り配線を行う
A絶縁層(レジスト)をなくすための配線幅を設定する

fig1.png

fig2.png


A描画する層をF.MaskもしくはB.Maskを選択します。
表面のレジストを剥がす場合はF.Mask、
裏面の場合はB.Maskを選択します。
「図形ラインを追加」をクリックします。

fig3.png

B「図形ラインを追加」からレジストを剥がす箇所を描画します。
「図形ラインを追加」した箇所の色が変わっていることが分かります。

fig4.png

今回は意図的に配線よりも剥がす幅を小さくして、
差を分かりやすくしています。

C3Dビューから絶縁層(レジスト)が
無くなっていることが確認できます。

fig5.png


このようにKicadでも大電流を流す基板を
作ることができました。
posted by Crescent at 00:00| Comment(0) | 電子工作 | このブログの読者になる | 更新情報をチェックする

2018年10月06日

TinkerboardとRaspberryPIタッチディスプレイ接続

TinkerboardはRaspberryPIとポートの位置や
ピンアサインなどの互換性を謳っています。
CPUが異なるため、OSこそ異なるものの、
RaspberryPIとの互換性をかなり意識しています。

今回はTinkerboardにRaspberryPI純正の
タッチディスプレイを接続して使用する方法について紹介します。
RaspberryPI純正ディスプレイは対応ケースもあるため、
見た目や持ち運びが非常に便利です。
もちろん、対応ケースにディスプレイとTinkerboardがピタッと入ります。


基本的にはそのままRaspberryPI同様にDSI端子にフラットケーブルを接続して、
5V、GNDの配線をすればそのままTinkerOSで動作します。

ただ、ケースに入れるとディスプレイの向きが上下逆転します。
下記のコマンドとスクリプトの修正で直すことができます。

@表示の上下逆転
echo "xrandr -o inverted" >> /home/linaro/.config/lxsession/LXDE/autostart


Aタッチパネルの上下逆転
sudo leafpad /usr/share/X11/xorg.conf.d/40-libinput.conf
4つある中でも Identifier "libinput touchscreen catchall"の
タッチスクリーンを修正します。
Option "TransformationMatrix" "-1 0 1 0 -1 1 0 0 1"で
タッチ座標を変換します。

修正後は下記のようになります。

Section "InputClass"
 Identifier "libinput touchscreen catchall"
 MatchIsTouchscreen "on"
 MatchDevicePath "/dev/input/event*"
 Option "TransformationMatrix" "-1 0 1 0 -1 1 0 0 1"
 Driver "libinput"
EndSection



これで再起動するとケースに入れた場合でも上下逆転せずに使用できます。
上記の修正はRasbianでも通用します。
TinkerboardはRaspberryPIのアクセサリが流用できるので非常に便利です。
posted by Crescent at 00:00| Comment(0) | 電子工作 | このブログの読者になる | 更新情報をチェックする

2018年09月29日

シングルボードコンピュータへElasticsearch&Kibanaインストール

今回はシングルボードコンピュータへ
ElasticsearchとKibanaをインストールする方法を紹介します。

対象のシングルボードコンピュータはTinkerboardといった
ARMベースのシングルボードです。
頑張ればraspberryPIでも可能です。
また、単にARMベースのシングルボード上で
ElasticsearchとKibanaをアプリケーションとして動かすのではなく、
サービスとして登録して運用する手順を紹介します。


予めJava8をインストールしておいてください。 
Elastic社のサイトから下記のパッケージをダウンロードします。
elasticsearch-6.X.X.deb
kibana-6.X.X-amd64.deb
※XXはバージョンに依る

また、Nodejsも併せてダウンロードしてください。
Linux Binaries (ARM)のARMv7を使用します。




■Elasticsearchインストール
@Elasticsearchインストール
Javaなので環境によらずそのままインストールできます。
sudo dpkg -i elasticsearch-6.X.X.deb

Aフォルダ権限変更
sudo chmod -vR 755 /etc/elasticsearch/
sudo chmod -vR 755 /var/lib/elasticsearch/
sudo chmod -vR 755 /usr/share/elasticsearch/

Belasticsearch.yml設定変更
amd64専用の機能などを無効化しないと起動に失敗します。
少しおまじないを追加します。
sudo leafpad /etc/elasticsearch/elasticsearch.yml

xpack.ml.enabled: false
bootstrap.system_call_filter: false

※必要に応じて下記も追記する。
network.host: "0.0.0.0"
http.port: 9200
transport.host: localhost
transport.tcp.port: 9300


CJava設定
必要に応じてElasticsearchのメモリ割り当てを変更します。
sudo leafpad /etc/elasticsearch/jvm.options

デフォルトは
-Xms1g
-Xmx1g
-server#追記
でメモリ1GをElasticsearchに割り当てる設定です。
Tinkerboardならメモリ2GBなのでデフォルトでも問題ありませんが、
raspberryPIの場合はメモリ1GBなので
システム領域が全く確保できなくなってしまいます。
設定したメモリ領域+200MBが実際のプロセス上で使用するため、
raspberryPIの場合は
-Xms600m
-Xmx600m
-server#追記
が妥当だと思います。

ガシガシ使うのであれば
メモリ2GBかつeMMCなTinkerboard Sしか選択肢はありません。

Dサービス起動設定変更
デフォルトでは自動再起動の設定が無効のため、
下記のファイルに追記します。
sudo /bin/systemctl enable elasticsearch.service#ファイル生成
sudo leafpad /etc/systemd/system/multi-user.target.wants/elasticsearch.service

[Service]
・・・・
Restart=always
↑1行追加する
・・・・

Eサービス登録
下記のコマンドでサービスを有効化します。
sudo /bin/systemctl daemon-reload
sudo /bin/systemctl enable elasticsearch.service
sudo service elasticsearch start

これでElasticsearchがシステム起動時に自動的に起動します。

sudo service elasticsearch statusでサービス状態を確認できます。
http://localhost:9200へアクセスして確認してもよいと思います。

statusで問題なくても9200へアクセスできない場合は
elasticsearch.ymlかjavaの設定に何か問題があることが多いです。


■Kibanaインストール
Kibanaはamd64用にパッケージされているため、
そのままではインストールできません。

@強制的にARM環境にAMD64を追加するために設定を変更する
sudo dpkg --add-architecture amd64
※逆に削除する場合は dpkg --remove-architecture amd64

AAMD64が追加されているか確認する
sudo dpkg --print-foreign-architectures

BKibanaインストール
sudo dpkg -i kibana-6.X.X-amd64.deb

CARM版Nodejs解凍
tar xfv node-v8.XX.X-linux-armv7l.tar.xz

DARM版Nodejsへ置き換え
sudo cp  node-v8.XX.X-linux-armv7l/bin/node /usr/share/kibana/node/bin
sudo cp  node-v8.XX.X-linux-armv7l/bin/npx /usr/share/kibana/node/bin
sudo cp  node-v8.XX.X-linux-armv7l/bin/npm /usr/share/kibana/node/bin

Dkibana.yml設定変更
sudo leafpad /etc/kibana/kibana.yml
下記を追記する
server.host: "0.0.0.0"

Eサービス登録
下記のコマンドでサービスを有効化します。
sudo /bin/systemctl enable kibana.service
sudo service kibana start
これでKibanaがシステム起動時に自動的に起動します。
sudo service kibana statusでサービス状態を確認できます。
http://localhost:5601へアクセスして確認してもよいと思います。

必要に応じてKibanaのNode側もメモリ制限をしてもよいと思います。
NODE_OPTIONS="--max_old_space_size=256"


以上の手順でシングルボードコンピュータへ
ElasticsearchとKibanaをインストールすることができます。

正直、高性能なシングルボードコンピュータ、
Tinkerboard Sでもメモリ1.8GB状態が続くため、
Elasticスタックを運用するのは厳しい面もあります。
ただ、クラスタリングやkibanaとelasticsearchの別運用など
Elasticスタックの特徴を生かして色々遊べそうです。


posted by Crescent at 00:00| Comment(0) | 電子工作 | このブログの読者になる | 更新情報をチェックする

2018年09月15日

販売製品一覧

販売中のCrescent製品を紹介します。

■ProjectionBall IoT (Version 5)
 ProjectionBallはベクター方式の簡易レーザープロジェクタで、
 簡単な図形や英数字などを描画できます。
 Running Electronics様で販売中です。

■ProjectionBall (Version 3)
 ProjectionBallはベクター方式の簡易レーザープロジェクタで、
 簡単な図形を描画できます。
 クラウドファンディングサイト、
 ※WiFi通信、任意文字列や時計の描画機能に非対応

■磁気エンコーダモジュール
 AMS社製磁気エンコーダAS5048Aを2.54 mmピッチへ変換する基板です。

■磁気エンコーダピッチ変換基板
 AMS社製磁気エンコーダAS5048AやAS5047Dなどを
 2.54 mmピッチへ変換する基板です。
 基板のみでエンコーダIC、磁石は同梱されていません。

■STM32F303CC搭載DIP変換基板
 Nucleo等の評価ボードが発売されていない48ピンIC STM32F303CC
 LQFP48を2.54 mmピッチへ変換した基板です。

■STM32F373CC搭載DIP変換基板
 Nucleo等の評価ボードが発売されていない48ピンIC STM32F303CC
 LQFP48を2.54 mmピッチへ変換した基板です。
 スイッチサイエンスで販売中

■アナログ出力MEMSマイク変換基板
 搭載した、ピッチ変換モジュールです。ピン間隔は2.54 mm。
 可聴音から超音波まで(100 Hz〜80 kHz)の幅広い帯域を
 高感度にセンシングすることが可能です。
 超音波センサや超音波通信などに使用可能です。

■デジタル出力MEMSマイク変換基板
 搭載した、ピッチ変換モジュールです。ピン間隔は2.54 mm。
 可聴音から超音波まで(100 Hz〜80 kHz)の幅広い帯域を
 高感度にセンシングすることが可能です。
 超音波センサや超音波通信などに使用可能です。

■LattepandaArduino変換基板
 LattepandaのLeonardoポートをArduino Leonardoピッチへ
 変換する基板です。Arduinoのシールドが使えるようになります。
 表面実装部品のみ実装済みです。
 ピンヘッダ、ソケット、リセット用のタクトスイッチは別売です。

■PS/2 USB逆変換アダプタ
 USBキーボードをPS/2化する変換アダプタです。
 標準ドライバで動作可能なUSBキーボードをPS/2キーボードとして
 使用できるように変換します。
 プログラミング専用こどもパソコンIchigoJamやサーバマシンなど、
 PS/2キーボードのみをサポートしている場合に本製品を使用して、
 USBキーボードをPS/2化します。

■e-Paper I2Cモジュール
 e-Paper I2CモジュールはWAVESHARE製200x200, 1.54inch
 E-Inkディスプレイを搭載したモジュールです。WAVESHARE製200x200,
 1.54inch E-InkディスプレイはSPI接続ですが、配線の容易性を実現するために
 SPI I2CプロトコルブリッジIC SC18IS602Bを搭載してI2C化しています。

■nanopi neo/neo2 拡張ボード
 FriendlyElec製NanoPi Neo/Neo2の拡張ボードです。
 ピンヘッダ上にあるUSB2ポート、I2Cポート(Grove)のコネクタを
 搭載しています。標準USBの1ポートで足りないという場合やGrove
 で拡張したいという場合に最適です。
 また、I2Cポートには純正NASキットと同じRTC DS1307が搭載しています。


posted by Crescent at 00:00| Comment(0) | 電子工作 | このブログの読者になる | 更新情報をチェックする

2018年09月08日

gcc ARMコンパイラ エラー対処方法

System Workbench toolchain for STM32(SW4STM32) を使用している際、
突然、コンパイルができなくなりました。
その際の対処法について、紹介します。

コンパイルができなくなった際に下記のようなエラーメッセージがでました。


/usr/bin/ld: error: perf_test uses VFP register arguments, perf_test.o does not
/usr/bin/ld: failed to merge target specific data of file perf_test.o
/usr/bin/ld: error: perf_test uses VFP register arguments, util.o does not
/usr/bin/ld: failed to merge target specific data of file util.o
/usr/bin/ld: error: perf_test uses VFP register arguments, ../baseline/lib.a(a.o) does not
/usr/bin/ld: failed to merge target specific data of file ../baseline/lib.a(a.o)
/usr/bin/ld: error: perf_test uses VFP register arguments, ../baseline/lib.a(b.o) does not
/usr/bin/ld: failed to merge target specific data of file ../baseline/lib.a(b.o)
/usr/bin/ld: error: perf_test uses VFP register arguments, ../baseline/lib.a(c.o) does not
/usr/bin/ld: failed to merge target specific data of file ../baseline/lib.a(c.o)
/usr/bin/ld: error: perf_test uses VFP register arguments, ../baseline/lib.a(d.o) does not
/usr/bin/ld: failed to merge target specific data of file ../baseline/lib.a(d.o)
/usr/bin/ld: error: perf_test uses VFP register arguments, ../baseline/lib.a(e.o) does not
/usr/bin/ld: failed to merge target specific data of file ../baseline/lib.a(e.o)
/usr/bin/ld: error: perf_test uses VFP register arguments, ../baseline/lib.a(f.o) does not
/usr/bin/ld: failed to merge target specific data of file ../baseline/lib.a(f.o)
collect2: ld returned 1 exit status
make: *** [perf_test] Error 1


パラメータや設定を見直しても改善しませんでした。
結局、Eclipseのプロジェクトファイルの破損だと判明しました。
再度、.cprojectファイルを削除し、
CubeMXで再度生成すると正常にコンパイルできるようになりました。
posted by Crescent at 00:00| Comment(0) | 組込ソフト | このブログの読者になる | 更新情報をチェックする