フォト
2018年10月
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
無料ブログはココログ

2018年10月11日 (木)

Beginning STM32という電子書籍を楽天で購入したのですが..

("楽天kobo糞過ぎ"というお話です^^)

少し前に、「Beginning STM32 Developing with FreeRTOS, libopencm3 and GCC」という
書籍を見つけ、出版元から直接、PDF版を買わずに楽天からkobo版を買ったところ大失敗でした。

出版元の販売ページ
apress Beginning STM32 Developing with FreeRTOS, libopencm3 and GCC

  https://www.apress.com/la/book/9781484236239

02

Windows上で「Rakuten Kobo Desktop」を使って閲覧しているのですが、
PDFみたいな感覚での利用が全くできません(当然ですが)。

書籍記載のサンプルソースをエディターにコピーしたり、図(ピンレイアウト図)を印刷したり等
一切できません。これは技術書・リファレンスマニュアルとして使うにはちょっと辛い。
コピペしてグーグル翻訳が出来ないのも辛い。
kobo糞過ぎる。

スクリーンショットを取り、利用すればと思いやってみると、

表示内容が真っ黒になり画像化出来ません。

01

引用の手段として出来るのは、ディスプレイに映った内容をデジカメで撮影するくらいです。

Dscn8911

こんな面倒なことをするくらいなら、
新たにapress サイトからPDF版を買った方を購入した方がましですね。

技術書で一切の引用禁止は無茶苦茶使いにくいです。

楽天 kobo版の技術書買わない方が良さそうです。

楽天ポイントを使って割引購入したのですが、大失敗でした。

購入レビューにkoboの不満を書いたらいつの間にか、非公開にされていたので、
先ほど書き直しました。また非公開にされるかもしれません。

今回は勉強代として、apress サイトからPDF版を買いなおすかなぁ..
書籍自体は、BluePillボードをターゲットとした内容で良い感じなのですが..

2018年10月 3日 (水)

メインで使っているパソコンの切り替え

ちょと前に、メインで使っていたパソコンを中古で買ったHP Compaq 8300 Elite USに変更しました。

core i5-3470S 2.9GHz、RAM 4Gバイト、HDD 320Gバイトと、まあまあのスペックです。
送料込みで1,6800円にポイントを使って1,3000円くらいで購入した。

ビジネスパソコンのリース流れの製品と思われますが、
かなり状態が良く、新品に近い状態でした。
どこかのお役所であたりで使われていたものと推測出来ます。

コンパクトで、デザインも良くいい感じのPCです。
フロント上部のSDカードスロットがオプションで利用出来ない機種だったのがちょっと残念です。

Dscn8768

拡張性はほとんどないですが、余っていた4Gバイト RAMを追加してメモリは 8Gバイトにしました。

デフォルトの320Gバイト HDDが遅い感があり、
専用mSATAスロットに240GバイトSSDを追加して、OSを移行しました。

ちょっと冒険して下記の製品を利用しました。
Dogfish Msata 240GB 内蔵型 ミニ ハードディスク Msta SSD Disk (240GBK1)

01

中華製でちょっと不安ですが今のところ問題なしです。アクセス速度も速いです。
SSD mSATA SSD(MLC) 240Gバイトでこの値段、激安ですね。

SSDに買えると、かなり快適になりました。

2018年9月26日 (水)

豊四季Tiny BASIC for Arduino STM32 での単音演奏

豊四季Tiny BASIC for Arduino STM32 のV0.86で追加した、
PLAYコマンドで「ハレ晴レユカイ」を演奏してみました。

Dscn8878

演奏の様子


MML文で使用ているデータは「主体性の無いページ」さん公開が公開しているものを利用しました。
・主体性の無いページ(http://astr.me.land.to/
    MML(http://astr.me.land.to/tool/mabi/)
     ハレ晴レユカイ!(http://astr.me.land.to/tool/mabi/mml/hareyukai.htm)


この曲はアニメ 「涼宮ハルヒの憂鬱」のエンディング曲です。
勝手に使わせて頂き申し訳ないので、宣伝を入れておきます。
(バナーをクリックすると、各サイトにジャンプします)

Banner_sp_haruhi

Fanclub

Banner_kyoani_haruhi

Banner_kyoani_haruhimov

MML文はマビノギMMLに対応しています(ただし同時に1音しか出せません)。
MML文中の頭に"?"を付けると音を出す都度MML文を表示するようにしました。

01


豊四季Tiny BASIC for Arduino STM32では、NTSC、OLED、TFT等色々とサポートしていますが、
今回は最小構成+圧電スピーカーのシリアルコンソール画面の構成を使っています。

Serialconsole

MML文の音の大きさ指定のV(ボリューム)命令は、PWMのパルス幅の大きさで簡易的に対応しました。
引数の0~15のうち、0~5くらいは強弱が聞いて分かるのですが、
6~15は違いが判りません。まあ、おまけ機能的なものということで勘弁して下さい。


ちなみに、V0.86では、シリアルコンソール画面上で全角文字(シフトJIS)に対応しました。

02

2018年9月25日 (火)

3Dプリンターでの試行錯誤 その2

3Dプリンタ利用の練習として、
以前製作した下の写真 「I2C接続 16x8ドット LEDマトリックス」のケースを製作してみました。

Dscn4264_2

Dscn4266_2

3D図形の作成はTinkercadにて行いました。
形状は単純なので、割と簡単に作成出来ました。

03

ここで、寸法は実際の寸法よりも、縦横0.4mmほど大きくしています。
試行錯誤の結果、ノズル幅分の約0.4mm小さくなることが分かり、その調整をしています。

データを、STL形式でエクスポートして3Dプリンタに読み込ませて出力開始、
1時間ほどで出力出来ました。

Dscn8857

寸法はドンピシャ、ジャストフィットで収まりました。
いい感じにできました。

Dscn8864

とりあえずIchigoJamで動作、問題無く動作しました。
基板剥き出しから一転して、ちょっとおしゃれな感じになりました。

Dscn8877

動作はこんな感じです。



3Dプリンタ、色々と活用出来そうです。

Google Chromeのデザインをもとに戻す

Google Chromeの新しいバージョン 69のデザインに違和感を感じていたのですが、
前のデザインに戻す方法があるのを知り、試してみました。

参考にしたサイト
orangeitems’s diary - Google Chrome 69 | 新デザインを戻す方法

前のデザインに戻りました。

01

当然、バージョンをレベルダウンした訳ではありません

02

これで、スッキリしました。

2018年9月23日 (日)

3Dプリンターでの試行錯誤 その1

3Dプリンター、購入したものの、右も左も分からない状況です。

困った時の「トラ技頼み」ということで、本棚を見ると
「特集 3Dプリンタでまるごと電子工作」ってな特集号を発見。
トランジスタ技術 2014年6月号」です。

Dscn8853

ちょっと内容が古いですが、今の私には「神号」でした。
必要なデータファイルSTLファイル、g-codeファイルついての解説や、
材料のフェラメントの種類、性質、加工に関する情報等、大変参考になりました。

Dscn8854

Dscn8855

トラ技を参考にして、まずはモデリング、
とりあえず、3Dのデザインはこの号で解説している
PTC Creo Elements /Direct Modeling Express」を使ってみました。

トラ技の解説に従て作図の練習と

06

ツールのビデオ解説付きのドキュメントを使っての作図練習をして、

05

ツールが使えるようになってました。
なかなか、良いツールです。

01_3

しかしこのツール無償なのですが、なんかアカウント登録後のライセンス認証が
上手くいきません。

07

ググってみても同様の症状の方がいるようですし、
利用している方の情報が少なすぎです。あっても最近ではなく数年前の情報。

せっかく使い慣れてきたのですが、このツールを継続して利用するのは無理っぽいです。

仕方がなく別のツールを模索。
トラ技同号に「Autodesk 123D Design」の使い方の解説もあったので、
「Autodesk 123D Design」をググってみると、このツールの公開は終了で、
ブラウザ上で利用出来る「Tinkercad」というツールに置き換わっていました。

とりあえず、「Tinkercad」利用のためのアカウント登録をして、早速利用してみました。

08

データを読み込んで表示

03

ブラウザ上で作成出来るのは結構すごい。

更にこの「Tinkercad」、Windowsアプリ版のあるようです。

09

インストールしてみました。

ブラウザ上で動くものとほとんど同じ見たいです。
データも共有出来るようです。

10

「Tinkercad」をちょっと使い込んでみることにします。

別途、Windows 10にも3D Builderという標準ソフトが入っているようです。
ちょっと使ってみました。

02

STLファイルを読み込んで表示出来ました。
こんなツールが標準で入っているとは知りませんでした。
このツールも使えそうです。

作図の方はなんとかなりそうです。
次に作成した図形から 
  作図 ⇒ STLファイル作成 ⇒ g-codeデータ作成 ⇒ 3Dプリント

の一連の作業をやってみました。

作図データは、CAD用データとして保存するとともに3Dプリンタ出力用に
STLファイルを作成する必要があります。

STLファイルからg-codeへの変換はCADソフトとは別のスライサと呼ばれるソフトで
変換します。

このSTLファイルはStandard Triangulated Languageの略で、
名前からも分かるように、3D図形を三角形だけで定義しています(ポリゴンみたいな感じ?)。

スライサも色々なソフトがあります。
とりあえず、3Dプリンタに添付の「Ultimaker Cura」というのを利用しました。
設定等がまだまだ理解不足です。

11

このソフトで出力品質、壁の厚さ、中身の密度(材料削減のためメッシュにしたり、空洞にしたり)、
転倒防止のためのスカートをつけたり指定できます。
この設定、色々と試してみないと加減がつかめないです。

ツールでは、完成に要する時間を見積もってくれます(この時は31分)。

スライサでは、STLファイルからg-codeファイルを作成します。
g-codeは工作機械用の標準的な定義ファイルのようで、3Dプリンタの場合、
中身を見るとX,Y,Zの座標とノズルからの材料送り出しの命令の羅列です。

とりあえずg-codeに変換して3Dプリンタに出力させてみました。
SDカードにg-codeファイルを保存し、3Dプリンタにセットして読み込ませます。
パソコンなしで自力で印刷してくれます。

Dscn8845

そして完成。
ほぼ見積もり時間の31分で完成しました。

薄いスカートが付いています。
このスカートの出力は、ノズル出力開始直後は先端に垂れた材料を吐き出し等の
出力の慣らし運転にもなるようです。

薄いスカートは簡単に取れます。

Dscn8852

一連の作業が分かりました。
これで、時間をかければ自分の欲しいものが製作できそうです。

しかしこの図形の作成(モデリング)は、結構大変そうです。

2018年9月20日 (木)

3Dプリンター Super Helper SH155を購入しました

先日、FabLab品川さんにて3Dプリンタについて色々と教えて頂き、
入門機 WINBO Super Helper SH155 を購入しました。

Dscn8824

早速、サンプルデータを出力してみました。

動いている様子です。


こんなのが出来ました。
時間は1時間弱かかりました。

Dscn8832

いい感じに出来ています。

Dscn8836

造形は値段の割には良いのではないでしょうか

Dscn8837

ちゃんとネジとして噛み合いました。

Dscn8838

う~ん、これは楽しい♪

Dscn8839

これから、色々と作れそうです。



関連情報

・3Dプリンタメーカー WINBOの公式サイト
https://www.winbo.top/

2018年9月18日 (火)

レーザーカッター初体験

先日、SNSにてお招き頂いたイベントに参加いたしました。
イベントの内容的には、「レーザーカッターで自作ポケコンのケースを作ろう」みたいな感じです。

お世話になった会場は、FabLab品川(ファブラボ品川)さんです。

Dscn8781

ファブラボ品川さんの公式サイト
https://fablab-shinagawa.org/

非会員、一見さんにもかかわらず、FabLab品川の濱中さんは
とても丁寧に解説・対応して頂きました。ありがとうございました。
イベントの製作よりも、現在のレーザーカッターや3Dプリンターの動向について色々と教えて
頂いたことの方が大きな収穫でした。

庶民に手が届く2、3万円の3Dプリンタの実用性には懐疑的だったのですが、
製作した実物(ボルトとナットがきっちと噛み合う)を見て、ホビーレベルでは
十分であることが分かりました。
しかも、ツールも進化していて、かなりお手軽にモデリング出来るこも教えて頂きました。

話を戻して、今回のイベントで作成したケースは
Maker fare Tokyo 2018にて「備中絡繰製造所」さんが展示されていた真ん中の作品です。

Dscn8552

製作の様子をお伝えしたかったのですが、
製作と会話に夢中になり過ぎて、写真と取り忘れてしまいまました^^;
カット後の下の写真しか撮れませんでした。

レーザーカッターで2mmのアクリル板を切断した直後の様子

(保護シートを貼ったままカットしています)

Dscn8784

当初、CAD等で図面を描くのかとおもいきや、illustratorでお絵かき、
プリンターと同じような印刷感覚でパソコンからカットの指示をレーザーカッターに出力します。
こんな、簡単にカット出来るとは思ってもいませんでした。

以前、秋葉原のDMM Makeを見学したことがあるのですが、
その時はレーザーカッター、3Dプリンタも見学したのですが、
「敷居が高すぎ」感が強く、敬遠してしまいました。
今回のイベント参加で、「「敷居の高さ」が解消しました。
3Dプリンター、やってみたくなり購入を検討中です。

自宅に帰った後の組み立て位置等の確認の様子

Dscn8785

これから、組み立てます。
大変、有意義な時間でした。


追記

仮組みしました。いい感じです。

Dscn8790

追記 2018/09/19

完成しました。

Dscn8808

裏はこんな感じです。

Dscn8811

中はこんな感じで、モジュール間をコネクタ形式で脱着出来るようにしています。

Dscn8802








2018年9月17日 (月)

豊四季Tiny BASIC for Arduino STM32 を更新しました

豊四季Tiny BASIC for Arduino STM32 をV0.86に更新しました。

注意:豊四季Tiny BASICのオリジナル版開発は私ではなく、鈴木氏です
オリジナル版 https://github.com/vintagechips/ttbasic_arduino
私は、オリジナル版からSTM32対応と機能拡張をしています。

V0.86の主な追加機能
・音楽演奏機能:PLAYコマンドの追加(MMLはマビノギMMLの文法をまねています)
・シリアルコンソール画面での全角文字対応(シフトJIS)
・TFT画面でのテキスト表示速度の改善(描画速度2倍、スクロール速度10倍)

V0.86からはプロジェクト管理サイトを
・Tamakichi/ttbasic_arduino_stm32
  https://github.com/Tamakichi/ttbasic_arduino_stm32

に変更しました。

01
マニュアル類は整備中です。AsciiDocを使ってリニューアル中です。
定数・コマンド関連のリファレンスマニュアル
https://tamakichi.github.io/ttbasic_arduino_stm32/manual.html

豊四季Tiny BASIC for Arduino STM32 コンパイル環境の構築
https://tamakichi.github.io/ttbasic_arduino_stm32/install.html


今回の修正ですが、
TFT(ILI9341)のフォント描画処理において、LI9341のウィンドウ機能とSTM32の
DMA転送の組合わせ技の効果が絶大で、いい感じに高速化出来ました。
DMA転送処理はオーバーヘッドが大きく、一回当たりのデータ送信量が少ないと、
効果で出ません。

通常、16ビットカラーで1文字(横6x縦8ドットx2バイト =  96バイト)を描画するにおいて、
1ライン目、2ライン目 ... 8ライン目とTFTへの転送アドレスは離散しており、
12バイト単位で8回発生します。オーバーヘッドの大きい、DMA転送において
これは効率が悪いです。

ところが、ウィンドウ機能を使って横6x縦8ドットの領域をウィンドウとして指定すると、
このウィンドウ内のドットは連続したシーケンシャルなデータ(連続したアドレス)とし
扱うことができます。

96バイトバイトを1回のDMA転送で行うことができます。
オーバヘッドが大きい処理が1回で済みます。
これは効果絶大でした。

また、TFT画面のスクロール処理や画面全体の再描画も
ウィンドウ機能を使うことで、DMA転送の一回当たりのデータ送信量を増やし、
DMA転送の回数を減らすことでオーバヘッドの大きい処理回数を減らすことで、
スクロール処理は10倍程度早くなりました。

このテクニックは、DMAを使わなくてもSPIのAPI呼び出し回数の削減にもなるので、
Arduino Unoでの高速化が期待できそうです。

2018年9月12日 (水)

ドキュメント作成にAsciiDocを利用してみる (3)

リファレンスマニュアルを作成していると
(1) 機能一覧での各機能の概要・インタフェースの記載
(2) 個別の機能詳細の記載

の記載が必要となるのですが、この(1)(2)は一部冗長的な部分があります。

冗長部は、仕様変更等に修正を継続的に行っていると、
やがて差異や用語の不統一等が発生したります。

これを、なんとか一元管理しないなぁと思い、

AsciiDocで何とかならないこと調べると、
  「タグを使った部分抽出」
が出来ることが分かりました。

下記のように、テキスト内にコメント文にて、tag:タグ名[] ~ end:タグ名[] で囲むことで、
// tag::タグ名[]
   抽出したい文章
// end::タグ名[]

別のAsciiDoc文書中にて
   include::テキストファイル名[tag=タグ名]
と記述することで、部分抽出して挿入することが出来ます。

次の文書は、別の文書から抽出してリストを作成しています。

[options="autowidth",cols="<,<"]
|===
^|コマンド・書式	^|概要
|
include::WAIT.adoc[tag=summary_1]
|
include::WAIT.adoc[tag=summary_2]

|
include::TICK.adoc[tag=summary_1]
|
include::TICK.adoc[tag=summary_2]

|
include::CLT.adoc[tag=summary_1]
|
include::CLT.adoc[tag=summary_2]

|
include::DATE.adoc[tag=summary_1]
|
include::DATE.adoc[tag=summary_2]

|
include::GETDATE.adoc[tag=summary_1]
|
include::GETDATE.adoc[tag=summary_2]

|
include::GETTIME.adoc[tag=summary_1]
|
include::GETTIME.adoc[tag=summary_2]

|
include::SETDATE.adoc[tag=summary_1]
|
include::SETDATE.adoc[tag=summary_2]

|===

HTMLに変換すると次のような感じになります。

コマンド・書式

概要

WAIT 待ち時間(ミリ秒)

時間待ち

TICK ()
TICK (モード)

経過時間取得

CLT

経過時間カウントのリセット

DATE

現在時刻の表示

GETDATE 年格納変数, 月格納変数, 日格納変数, 曜日格納変数

日付の取得

GETTIME 時格納変数 , 分格納変数 , 秒格納変数

時刻の取得

SETDATE 年,月,日,時,分,秒

時刻の設定

抽出される側のWAITコマンドの文書ファイルは次のように記述しています。

:sectnums:
[[WAIT]]
= WAIT 時間待ち
:sectnums!:

// tag::summary_2[]
時間待ち
// end::summary_2[]

== 【書式】
// tag::summary_1[]
*<<WAIT,WAIT>>* 待ち時間(ミリ秒)

// end::summary_1[] == 【引数】 待ち時間;; 0 ~ 32767 (単位 ミリ秒) == 【説明】 引数で指定した時間(ミリ秒単位)、時間待ち(ウェイト)を行います。 + 最大で32767ミリ秒(32.8秒)の時間待ちが可能です。 + 長い時間待ちを行う必要がある場合は、*<<TICK,TICK>>* 関数や *<<GETTIME,GETTIME>>* コマンドを使った方法を検討してください。 +

[%hardbreaks,icons=None,caption="注意"] WARNING: 時間待ち中はキー操作によるプログラム中断を行うことは出来ません。 短い時間の指定にてループ処理を行う等の対策を行ってください。 == 【エラーメッセージ】 Syntax error;; 文法エラー、書式と異なる利用を行った Illegal value;; 待ち時間に範囲外の値を指定した Overflow;; 指定した数値が-32768 ~ 32767を超えている == 【利用例】 .画面上の指定位置に時刻を1秒間隔で更新表示する ---- 10 SETDATE 2017,4,1,12,0,0 20 CLS 30 LOCATE 5,5 40 DATE 50 WAIT 1000 60 GOTO 30 ----

上記の文書はそのままHTMLに変換すると次のようになります。

1. WAIT 時間待ち

時間待ち

【書式】

WAIT 待ち時間(ミリ秒)

【引数】
待ち時間

0 ~ 32767 (単位 ミリ秒)

【説明】

引数で指定した時間(ミリ秒単位)、時間待ち(ウェイト)を行います。
最大で32767ミリ秒(32.8秒)の時間待ちが可能です。
長い時間待ちを行う必要がある場合は、TICK 関数や GETTIME コマンドを使った方法を検討してください。

注意
時間待ち中はキー操作によるプログラム中断を行うことは出来ません。
短い時間の指定にてループ処理を行う等の対策を行ってください。
【エラーメッセージ】
Syntax error

文法エラー、書式と異なる利用を行った

Illegal value

待ち時間に範囲外の値を指定した

Overflow

指定した数値が-32768 ~ 32767を超えている

【利用例】
画面上の指定位置に時刻を1秒間隔で更新表示する
10 SETDATE 2017,4,1,12,0,0
20 CLS
30 LOCATE 5,5
40 DATE
50 WAIT 1000
60 GOTO 30

こんな感じで、記載するファイル(場所)を一か所にして一元管理出来るので、
タグはとても便利な機能です。

タグの記述は、AsciiDoc文書以外のテキストファイルでも利用出来ます。
C言語等のプログラムソースのコメント内に記述を想定しているようです。
うまく利用すれば、プログラムソースからドキュメント作成できると思います。

«ドキュメント作成にAsciiDocを利用してみる (2)