フォト
2017年7月
            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          
無料ブログはココログ

2017年7月19日 (水)

次はSTM32ボードを積極的に使ていきたい(19) - シリアルポートの調査(2)

2017/07/13 訂正
Serial.setTimeout()は接続待ちのタイムアウトには関与しないようです。
私の勘違いでした。内容を修正しました。

STM32F103C8T6搭載ボードをArduino STM32環境下にて利用する場合の
シリアルポートの利用について以前調査し、下記にまとめたのですが、

 関連記事 : 「次はSTM32ボードを積極的に使ていきたい(2) - シリアルポートの調査」


起動直後のUSB-シリアル接続待ち処理において若干、推奨する作法が変わったようです。

従来
Serial.isConnected() で接続確認
void setup(void){
  Serial.begin(115200);
  while (!Serial.isConnected()) delay(100);
}

現時点
Serial で 接続確認

#define timeoutPeriod 2147483647    // Long time... about 25 days
void setup(void){
  Serial.begin(115200);
  while (!Serial) delay(100);     
}

この変更はUSBをサポートしている Arduino Leonardo、Micro、DueとAPIを
同じにするためのようです。

関連情報: https://github.com/rogerclarkmelbourne/Arduino_STM32/pull/270

Serial.isConnected()も現時点でも利用出来ますが、
Arduino STM32(ベースのmapleを含む)固有ですので今後は使わない方がようでしょう。
Arduino STM32のサンプルスケッチも全てSerial.isConnected()を廃止して
Serialの値で判定するように修正されています。

現在手掛けている、豊四季Tiny BASICでは次ようにしました。
無限ループだと、1.5秒だけまって接続をスルーします。
こうしないと、接続済みの時にリセットした場合、接続直後の通信データの取りこぼし
が発生します。

void setup() {
  for(uint8_t tm=0; tm <15 && !Serial; tm++) 
    delay(100);
    ・・・


2017年7月15日 (土)

Windows 10でCH340を標準サポートになったっぽい?

先日購入した中古のWindows 10ノートパソコンにてArduino IDE 1.8.3インストールしました。

激安Arduino Uno互換機を接続するとUSB-シリアルCH340用のドライバーを
インストールすることなく、スケッチの書き込みができました。

以前は、ドライバーを入手して別途インストールが必要でした。

02

デバイスのプロパティを見ると、接続したタイミングでインストールされたようです。

01


それならばと思い、Silicon LabsのCP2102搭載のUSB-シリアルモジュールを繋げてみると、
やはりドライバーのインストール不要で利用出来ました。

02_2

デバイス マネージャーでの確認

03

いつから、標準対応になったのだろう..
それとも、夜中に小人さんさんがドライバーインストールしてくれたん?

2017/07/18 追記
念のため、他のWindows 10機で試してみました。
Arduino IDE等の開発環境をインストールしたことのないタブレットです。
Windows 10は最新版にアップデートしています。

04

CH340、CP2102搭載の搭載のUSBシリアル変換モジュールをUSBハブ経由で接続。
タブレットでもUSBに刺しただけで、ドライバーがインストールされました。
デバイスマネージャーで見てもちゃんとCOMポートとして認識しています。

05

やはり、わざわざドライバーを入手する必要はないみたいです。

 

2017年7月14日 (金)

SDライブラリのマルチメディアカード(MMC)対応

Arduino IDEのSDライブラリを修正してマルチメディアカード(MMC)が利用可能にしました。
ライブラリを下記のサイトにて公開します。
https://github.com/Tamakichi/SD

オリジナル版と名前がかぶりますが、libralbyの下に配置するとこちらを優先して
スケッチで利用されます。

修正については、Elias Zacariasさん、ChaNさんの記事を参考にしました。
ソースはほぼElias Zacariasさんの差分を利用しています。感謝!
・A BIT of Mystery - ARDUINO SD LIBRARY SUPPORT FOR MMC CARDS
   http://blog.damnsoft.org/arduino-sd-library-support-for-mmc-cards/
・MMC/SDCの使いかた
   http://elm-chan.org/docs/mmc/mmc.html

マルチメディアカード(MMC)にはいくつかのタイプがありますが、
とりあえず、下記の端子が7つあるタイプでの動作を確認しました。

06

SDカードと形状は同じですが、端子が2つ少ないです。

07

SDライブラリのサンプルスケッチで読み書き出来ました。

03

01

02


ところで、

なぜ、マルチメディアカード(MMC) 対応?

と思われますが、大人の事情です。

ArduinoでSDカードを利用する場合、
お手軽な方法としてはArduino IDEのSDライブラリ利用します。
ところがこのSDカードの利用、個人利用でも厳密にはライセンス(有料)が必要なようです。

参考情報

     ・ねむいさんのぶろぐ - いろいろ試す25(今回はSDカード関連中心です)

これを回避する手段としては、SDカードの下位互換でかつライセンス不要の
マルチメディアカード(MMC)に対応することで、
  「MMCまたは互換カード対応」
と主張するしかないようです。

悲しいことに、Arduino IDEのSDライブラリはMMC対応されていません。
そこでこの修正版を作成しました。
現在手掛けている豊四季Tiny BASIC for STM32のSDカード利用で問題となります。
ほかに過去に色々とSDカードを利用したスケッチ等を公開しています。

といあえず、これで
  「MMCまたは互換カード対応」
と主張出来ます。

2017年7月 5日 (水)

amazonで中古のノートパソコンを購入

Linuxが動く環境が欲しいと思い、中古のノートパソコンを購入しました。
「店長お任せ 中古 パソコン ノートパソコン 高速Corei5 搭載 メモリ4GB HDD250GB
DVDマルチドライブ 無線LAN付 キングソフトOffice Windows10 Home64bit A4 ワイド大画面」

という製品です。この名目では複数の販売業者がついているようですが、
ワジュンPCから購入しました。送料・税込で14,500円でした。

01

んで、到着したパソコンがこちら。

Dscn6708

中身は、ACアダプターとPC本体、納入書だけでマニュアル類はなしでした。

Dscn6709

製品としてはNECのノートパソコンで、
VersaPro VY24G/D-9という製品の中古です。
スペックは、CPU Intel Core i5 520M、RAM 4Gバイト、HDD 320Gバイトです。
2010年1月頃販売された製品のようです。

起動してみると、Windows 10 Pro 64ビット版がインストールされていました。
意外とサクサク動きます。
PCMICAカードスロットがついていたので試してみると利用出来ました。
他に利用できるポート類は、
USB2.0 x 5、VGA、DHMI、RS232C、パラレルプリンターポート、DVDドライブ
です。

問題点としては、
SDカードスロット無し、無線LANは内蔵ではなくUSB接続のドングルが刺さって
いました。画面解像度が1280X800とやや狭い。
まあ、これくらいはよいでしょう。
バッテリーはさすがにへたれていますが、充電は出来き1時間程度なら稼働出来ました。UPS代わりには使えます。

また、ECOボタン利用のためのドライバー類がインストールされていないので
NECのサイトからダウンロードしてインストールしました。

Dscn6728

中古で、7前の製品にしては状態が良いです。ディスプレイ、キーボードはきれいです。

Dscn6745

ただし、天板が少々傷があります。まあ、これくらいならOKでしょう。

Dscn6739

とりあず、ダイソーのひっかき傷防止シートを貼って傷を目立たなくしてみます。
ざらざらの半透明色なので傷がある程度隠せます。
このシート、ラベルシール上に張って剥がれ防止、汚れ防止等、いろいろ使えて便利です。

Dscn6742

天板に貼り付けた後の状態(シート自体は全然目立たないです)

Dscn6749

写真ではわかりにくいですが、
傷が目立たなくなり、安っぽいプラスチックからメタリックっぽい感じにグレードアップしました。
手触りもざらざら感でしいていい感じです。

さて、結論としてはこのPC、意外と使えます。
Mini PCI-Eスロットが2つあり、試しに余っていた64GバイトのeMMCを指してみたら
認識して利用出来ました。

HDDのOSをeMMCに移行して利用したところ、ちょっと快適になりました。
メモリの上限が製品仕様的には4Gバイトまでのようで、これ以上の増設はダメ見たいです。

試しに、刺さっていた2Gバイトのメモリーカードの1枚を4Gバイトに変えて試してみると、
BIOSレベルでは6Gバイトと認識したものの、Windowsの起動途中でOSが落ちていまいました。残念。

Windows 10を潰すのももったいないので、Ubuntuとのデュアルブートで使うかと思います。

細かい点で製品説明と異なる(無線マウスが付いていない、DVDドライブがDVD-ROMだった)ので、

ワジュンPCさんに連絡すると、追加で無線マウスと交換用のDVDマルチドライブを送ってくれました。

この値段でここまで使えれば、お得ですね。

 

 

2017年6月27日 (火)

豊四季タイニーBASIC for Arduino STM32、ボード実装

「豊四季タイニーBASIC for Arduino STM32」
開発環境をブレッドボードからユニバーサル基板に移行しました。

Dscn6689

ジャンパーワイヤーから解放されてすっきりしました。

Dscn6693

現在、スクリーンエディタ部のクラスを再設計して汎用化し、差分実装にて
色々なデバイス(シリアルコンソール、液晶モジュール等)への対応を行っています。

スクリーンエディタ部分はライブラリ化して、Tiny BASIC以外のユーザーインタフェース
に利用出来るよう、思案中です^^

2017年6月15日 (木)

「豊四季 Tiny BASIC for Arduino STM32」 、v0.83に更新

現在手掛けている、Blue Pillを使った「豊四季 Tiny BASIC for Arduino STM32」、
SDカード対応してv0.83としました。

SDカードにプログラムのセーブ、ロード出来るようになりました。
やはり、名前を付けてファイルとして保存出来るのはいいですね。

03

動いている様子
FILESコマンドで、ワイルドカードが使えます。

amazonで入手出来る安価なSDカードモジュール3点は問題なく利用出来ました。

Dscn6664

06


トップの写真の画面表示は次のプログラムで行っています。

10 CLS
20 LDBMP "TT.BMP",MEM,0,0,32,32,1
30 LDBMP "TT.BMP",MEM+128,32,0,32,32
40 LDBMP "TT.BMP",MEM+256,64,0,32,32
50 LDBMP "TT.BMP",MEM+384,0,32,96,32
60 BITMAP 10,30,MEM,0,32,32,2
70 BITMAP 74,40,MEM,1,32,32,2
80 BITMAP 138,50,MEM,2,32,32,2
90 BITMAP 10,120,MEM+384,0,96,32,2

動作検証用なので、ちょっと面倒なことをやっています。
(最初から1つの画像にしておけば1行で表示できるのですが..)

次の画像ファイル"TT.BMP"から任意の部分を切り出してロードし、
2倍にして表示しています。

Tt

面白そうな機能、と思い実装してみたのですが
あまり使い道がなさそう...




2017年6月12日 (月)

Windows 10 のCreators Update 1703に失敗する..

自宅のWindows 10セカンドPCのアップデートを行ったところ、
起動しなくなってしまいました。

アップデートは、大型アップデート 「Creators Update 1703」というやつです。

なんとか、復旧してアップデート前に戻せたのですが、
何が問題か調査中...
う~ん、この現象、もはや家電と化したパソコンで発生するのは、
ちょと問題ですねぇ。Windows 10は今一好きになれない..

2017年6月 4日 (日)

豊四季Tiny BASIC、ビットマップファイルの利用を可能に..

安価なBlue Pillボードを使った豊四季Tiny BASIC、SDカードからビットマップファイルを
ロード出来るようになりました。



224x312のビットマップファイルから224x216サイズを
部分ロードして表示している様子です。
縦の切り出し位置を逐次変更することでスクロールしているように見えます。

ここで言っているビットマップファイルは
Windowsのモノクロビットマップ形式の画像ファイルです。

動画のプログラムソース

10 CLS
20 FOR Y=0 TO 312-216
30 LDBMP "CAT.BMP",GRAM,0,Y,GW,GH
40 NEXT Y
50 GOTO 20
画像はHelm42さんの猫絵を利用させて頂いています。
エラー処理等をもうちょっと、強化してからGitHubにて更新版を公開します。

2017年6月 3日 (土)

Arduino IDE添付のSDライブラリの修正

Arduio IDE 1.8.2に含まれているSDライブラリ、リソースの開放と再獲得が出来ない。
これでは、利用しているSDカードの抜き差しが自由に行えません。

そこでオリジナルのSDライブラリ
https://github.com/arduino-libraries/SD

をフォークして、自分で修正を施しました。
SD Library for Arduino
https://github.com/Tamakichi/SD

修正内容
1)SD.end()の追加
2)SD.begin()で直前に利用していたリソース開放を行うように修正
3)ファイル名に半角カタカタの利用が可能

大した修正ではないのですが、効果絶大SDカード使い勝手が良くなります。
これで抜き差ししても、SD.begin()を実行すればSDカードを再認識してくれます。

SDライブラリは豊四季Tiny BASICでも利用しています。
この修正で、ファイル名に半角カタカナが使えるようになりました。
抜き差ししても、SDカードを再認識出来ました。

01

IchigoJamに関しての不満

FacebookのIchigoJam-FANにて、
開発者さんが「IchigoJamの拡張版にほしいもの大募集!」とのことで、

RENUMコマンドの不具合の対応をお願いしたのですが、
「ラベルを使え!」との回答。
この回答にはちょと「カチン」ときました。たま吉さん的には..
RENUMコマンドは、行番号の付け替えを行うコマンドで、
N-BASIC、MSX-BASIC等のBASIC言語では古くからあるコマンドです。
IchigoJamのコマンドでは、次のプログラムを

1 CLS
5 A=0
6 PRINT "Hello!"
10 A=A+1
20 IF A<10 GOTO 6
30 END

RENUMコマンドで
RENUM  100, 10

と実行して行番号の付け替えを行うと、
結果は
100 CLS
110 A=0
120 PRINT "Hello!"
130 A=A+1
140 IF A<10 GOTO 6
150 END

となり、GOTO文の飛び先が元のままのため、
プログラムを実行すると動かなくなります。
これは、明らかに問題(欠陥)なのです。

なぜ対応して頂け無いのかを質問すると、
「優先度が低い、実装方式が中間コードを使っていないため、難しい」との回答でした。
さらに、
「ラベルを使わない理由がなんかあるのか!」
とのなんか、角の立つような嫌な回答..
まあ、「つまらんことに突っ込むな」的な意味の回答なんだろうなぁ
不具合の対応よりも、機能拡張の方が優先度が高いらしい..

利用者、お金を払って企業が販売している製品を購入した私からすると、
中身の実装方法なんて全然関係ないし、
昔のBASICのGOTO文といったら、行番号指定が定番、
利用者としては当然、行番号を使おうが、ラベルを使おうが自由ななず..

なんか一気に使う気が無くなった。
荒探しをすると、色々とありそれ含めて見守ってきたですが、
今まで更新のたびに不具合等を見つけて連絡してきたがそれもやめよう..

«豊四季 Tiny BASIC for Arduino STM32の動作テスト(4) - 文字の拡大表示