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

日記・コラム・つぶやき

2018年3月29日 (木)

BASIC言語が動くORANGE pico type S(キット)を組み立てました

aitendoにてBASIC言語が動く「ORANGE pico type S」を見つけ、入手しました。
お値段は1,380円と、非常にリーズナブルです。

ORANGE picoに関する情報:
  ・開発元      ピコソフト株式会社
  ・製品情報  手のひらサイズ 教育用に制御用に小さなパソコン ORANGE pico

幾つか種類があるようですが、小さくて必要最低限の機能がそろっている type Sを
購入しました。

到着した製品
Dscn7771

内容
簡単な組み立て手順書が同封されています。

Dscn7773

早速組み立ててみました。

完成したORANGE pico type S

ボード上にI/Oピンの用途が分かる説明・シルク印刷がないのがちょと残念です。

Dscn7779

※黒いストレートのメス端子とスペーサーとは付属していません。
   手持ちのパーツを付けました。

はんだづけは、さほど難しくありませんでしたが、見本と部品が若干違うので、
ちょっと混乱するかもしれません。

電解コンデンサーが積層セラミックコンデンサーに置き換わっています。
写真を見てパーツを乗せて組み立てるにはちょっと混乱を招きそうです。

Dscn7776

組み立て手順も3行だけなのも、子供向けにはちょっと不親切かも。
別途、資料や補助が必要ですね。
仕様等が記載されている説明書も付属して欲しいところです。

動作確認

キーボードはPS/2インタフェース、画面表示はNTSCビデオ出力による表示です。
公式サイトをみると、仕様等の詳細が何処に記載されているか見つかりません。

取りあえず、モニターをつなげてみると画面が縦スクロールしていまいました。
同期がとれていないようです。

Dscn7784

もしかしたら、ファームウェアのバージョンが古いため(V0.96)と思い、
最新版のV1.06に更新することにしました。
更新は、公式HPの「ORANGE pico ファーム更新方法」を参考にしました。

Dscn7786

とりあえず、中華製ぱちもんのPICkit3で更新できました。
ただし、更新方法の説明は初心者にはちょっと厳しいと思います。
「PICkit3とは何ぞや?」等の説明が一切ないです。知識のある人しか出来ない作業です。

純正品PICkit3秋月電子で5,800円。
最新ファームウェアが乗っているマイコンPIC32MX170F256Bが単体販売されているので
そちらを購入するのも良いかもしれません。
(aitendoではなく、公式の通販サイトで購入すれば最新ファームウェアが乗っているのかも)

結局、更新してもスクロールは、改善できませんでした。
別のモニターに変えてみました。今度はスクロールはしないものの、画面の下の方が変。

Dscn7796


次に量販店で購入したDVDプレイヤーで試してみました。

Dscn7797

今度はとりあえず表示出来ました。
他に東芝、パナソニック製液晶テレビでも試してみましたが、問題なく表示出来ました。

2台は激安中華製モニターなのでダメだったのかもしれませんね。
イチゴジャムやTiny BASICでは使えていましたが、たまたま相性が良くて使えたのでしょう。

性能測定

イチゴジャムでやった3万回ループの時間を測定してみました。
(バファロー製ビデオキャプチャーでは綺麗に取り込めました)

20180329182744

結果としては、1.979秒でした。
イチゴジャムの40倍のパフォーマンスと、かなり速いです。
イチゴジャムやTiny BASICとは異なり本格的なBASICインタプリタが搭載されている
割には大変高速ですね。

ちなにみサイズは、イチゴジャムよりちょっと小さめです。

Dscn7782




さて..

キットを組み立てて、このORANGE picoで何かしようと思い、
  「何が出来るのか」、「仕様は..」
と公式サイト上のドキュメントを探しているのですが、
何処に記載されいるのか分かりません。

  ・CPUのクロックは?
  ・画面の縦横の文字数は?
  ・グラフィック描画の解像度は?
  ・I/O入出力・制御機能はどんなのが利用出来るの?


探し方が悪いのかもしれません。  只今、捜索中です。
amazonの商品説明が一番まともかも)

_=> 公式サイト製品ページの概要説明で、ところどころに仕様がちりばめられているので
      だいたいは把握できます。

追記
  ORANGE picoに関しての情報は公式サイトよりも、
  ふうせん Fu-senさんがまとめられている  「オレンジピコにベーシック」が分かり易く
  大変参考になりました。

  イチゴジャムに関する情報も公式サイトよりも、
  ふうせん Fu-senさんの「イチゴジャム レシピ」の方が充実していますね。
 
  両社とも公式サイトは、もうちょっと内容をなんとかして欲しいなぁ..


まとめと感想
・安価で高速なBASICインタプリター搭載で非常に良さげ
・教育目的なら、もうちょっとドキュメント類は充実してほしいと思う
   (良い製品なのにもったいない.. )


製品としては良好です。もうちょっと遊んでみます。

2018年3月 5日 (月)

ノートPCの潰れた(なめた)ねじを外すのに苦戦

手持ちのノートPCのメモリー増設を行う為に、裏ぶたのねじを外していたのですが、
真ん中のねじ穴が潰れてしまい、外すことが出来ない状態になってしまいました。

ねじは、直径2.6ミリの皿ねじです。

Dscn7681

Dscn7672

まずはお手軽な、太めの輪ゴムを被せて摩擦を利用して回す方法を試しましたが、
だめでした。相当固く閉まっているため、ゴムが耐えられず穴空いて回せません。

次に「ネジはずし剤」を試してみました。

Dscn7673

以前も使ったことがあり、試してみたのですが今回はダメでした。
むしろ、悪化してしまいました。滑り止めが研磨剤となり、固いねじを強引に回すと
ネジ穴が研磨されてしまい、+形状がほぼ円系になってしまいました。

もはや、ねじ穴を使うのが不可能な状態に...

仕方がなく、ネットで評判の「ネジザウルスM2」を近所のホームセンターで購入しました。
直径2.5ミリのねじら対応とのことです。

Dscn7674

試してみると、5秒で「これは、ぜんぜん使えない」と判断出来ました。
つかんで回すには、下記の画像の幅とねじの頭の高さが必要です。

Dscn7676

ネジザウルスにはシリーズがあるので、もしかしたら選択を間違ったのかも..

仕方がなく、最後の望みとして「ANEX なめたネジはずしビット」を購入して試してみました。

Dscn7675

2本ビットが入っていますが、M2.5~M3対応の赤い方を使います。
ドリル(右側)で穴をあけ、スクリュー(左)で外す方向に回して潜り込ませて外せます。

Dscn7682

本来は電動ドリルを使うようですが、電動だと力を入れる加減が分からないので、
ハンドドリルを利用しました。

Dscn7679

こんな感じで取り付けられます。

Dscn7680


最終的に、この「ANEX なめたネジはずしビット」で穴をあけて、回すことが出来ました。
ネジ1本はすずのにえらい、出費となりましたが、勉強代ということで良しとします。

2018年1月21日 (日)

アナログ入力を使った16ボタン入力

以前自作したアナログ入力を使ったボタン入力と同様のキーパッドが
Aliexpressで安価に販売されているので入手しました。
GND、VCC、アナログ入力の3ピンで簡単に16ボタン入力が実装出来ます。

Button Keypad module 4x4. One analog out. Simple connection to Compatible for Arduino, Raspberry, STM. Keypad

ついでに3x4タイプも入手

Button Keypad 3x4 module. One analog out. Compatible for Arduino, Raspberry, STM. Keypad

到着した製品

意外としっかりとした製品です。
透明キャップを外してボタンにラベルを付けることが出来ます。

04_2

マニュアルは無いのですが、裏に10ビット解像度時のアナログ入力値が記載されています。

05

この情報を元に、豊四季タイニーBASIC for micro:bitにて動作確認してみました。

動作確認プログラム

10 'Keypad 4x4
20 @(10)=1013,920,840,780,670,630,590,560,502,477,455,435,400,320,267,228
30 G0=G
40 G=GRADE(ANA(1),10,16)
50 IF G>=0 ?"KEY=[";G+1;"]":MSG TOP,0,CHR$(65+G)
60 GOTO 30

ボタンの判定は誤差と揺らぎを考慮し、裏面の値の10を引いた値で判定しています。

GRADE() 関数は配列に格納された値を閾値として等級判定する関数です。
第1引数には、判定する値、第2引数には配列先頭番号、第3引数にはデータ数を指定します。
アナログ入力ANA(1)の値が1013以上の場合は0、920以上の場合は1..と判定します。
範囲外の場合は-1を返します。
比例関係に無い値を等級判定する場合に利用するとプログラムを短く出来ます。

押した番号をコンソールに表示し、ボタン1~16をA~PとしてLEDマトリックスに表示させます。

06

とりあえず、動作しました。

ただし、瞬間的に誤判定し、正常判定の状態になる場合があります。
ログを見ると、ボタン[1]を押したのに、一瞬ボタン[6]と判定されています。

02

この原因は、ボタンを押したときのチャタリングと思うのですが、念のため波形を見てみました。

01

波形はボタンを離した時のものですが、やはりチャタリングが発生しています。
このチャタリングに対する誤動作防止にはいくつか方法があります。

今回は、
  ChaNさんの 「テクニカル ノート チャタリング対策のしかた
が大変参考になりました。

ChaNさんの対策案でプログラムで対応できる「ディレイ方式」が一番簡単そうです。
さっそく試してもました。

対策

まず、測定波形を見ると1回あたりのチャタリングの幅は0.4msec(マス1msec幅)程度です。

そこで、アナログ値の測定のよるボタン判定において、
  「前回の値と今回の値が異なる場合、今回の値を捨て1msec後にもう一度測定する、
   同じなら値として採用する」


という対策を施したところ、誤判定を無くすことが出来ました。
う~ん、なかなかいい感じで利用できるようになりました。

修正対応したプログラム
10 'Keypad 4x4
20 G0=-1
30 @(10)=1013,920,840,780,670,630,590,560,502,477,455,435,400,320,267,228
40 G0=G
50 G=GRADE(ANA(1),10,16)
60 IF G<>G0 WAIT 1 GOTO 40
70 IF G>=0 ?"KEY=[";G+1;"]":MSG TOP,0,CHR$(65+G)
80 GOTO 40

さて、以前自作したキーパッドをIchigoJamで利用した時には、チャタリングによる
誤判定は気になりませんでした。なぜでしょう?

この理由としては、IchigoJamの処理速度が遅いため、チャタリングによる変化を
検知出来なかったのだと思われます。

今回試したmicro:bitの豊四季Tiny BASICは、ARM的にはIchigoJamと同スペックですが、
実装上の工夫により、IchigoJamより余裕で15~30倍の処理能力があります。

Arduino UNOでこのボードの利用する場合も、何らかのチャタリング対策は必要と思います。

2018年1月11日 (木)

ルミちゃんの毛づくろい

最近、=^_^= 成分が少ないというご指摘が各方面からある今日このごろ...

ということで、我が家の愛猫 ルミちゃん(♀)の毛づくろいの様子をご堪能下さい。



ちょっとセクシーかも...

2018年1月10日 (水)

micro:bit用Arduino環境にてrtcの精度が悪い - その対策

micro:bit をArduino環境で利用しています。
時計を実装したいと思い、mbed用の下記のライブラリを参考にしてやってみました。

参考にしたサイト
・Francis Schumacher /  nrf51_rtc
https://os.mbed.com/users/fxschumacher/code/nrf51_rtc/
・Francis Schumacher /  nRF51_rtc_example
https://os.mbed.com/users/fxschumacher/code/nRF51_rtc_example/file/c1f06d0a5e11/main.cpp/

一見、ちゃんと動作していると思いつつ、放置すると徐々に時間が進んでしまいます。
誤差を測定すると私のmicro:bitでは5%も速く時間を刻みます。
(誤差はmicro:bitの個体ごとに異なると思います)

Photo

原因を調べるとArduinoのrtc(リアルタイムクロック)に供給されているクロックソース
LFCLKSRC32.768 kHz RC oscillatorに設定されていました。

micros()、millis()、delay()ではrtc1が利用されており、これらも5%進んでしまいます。
このズレは、micros()、millis()、delay()でパルス幅の生成や測定を行っている場合には
影響を受けるかもしれません。

改善方法として、LFCLKSRCに指定するクロックソースを
16MHz crystal oscillatorをベースにしている LFCLK synthesizerに設定します。
RCオシレータよりクリスタル・オシレータの方が当然精度が良いですね。

具体的には、setup()の頭でLFCLKSRCのクロックソースを次のように設定します。

void setup() {
  NRF_CLOCK->TASKS_LFCLKSTOP = 1;
  NRF_CLOCK->LFCLKSRC = 
    (uint32_t)((CLOCK_LFCLKSRC_SRC_Synth << CLOCK_LFCLKSRC_SRC_Pos) &
    CLOCK_LFCLKSRC_SRC_Msk);
  NRF_CLOCK->TASKS_LFCLKSTART = 1;
   ・・・・

実際に試したところ、当初の5%よりもかなり改善されました。
一晩放置して誤差を調べてみます。

別の方法として、コンパイルオプション -DUSE_LFSYNTを付けることでも対応出来ます。
Arduinoのローカル設定ファイル platform.local.txtを
AppData\Local\Arduino15\packages\sandeepmistry\hardware\nRF5\0.4.0\に作成して
  compiler.c.extra_flags=-DUSE_LFSYNT
  compiler.cpp.extra_flags=-DUSE_LFSYNT

を定義で対応でいけると思います。

2018/01/11 追記


改善を施した場合の誤差は0.6%でした。
24時間で8分ずれます。思ったほど精度が改善できませんでしたが、
まあ、効果はあるのでこれで良しとします。

2018年1月 2日 (火)

Aliexpressで見つけたSTM32F407VGT6ボードを購入

こりもせず、Aliexpressで見つけた良さそうなマイコンボードを購入しました。

STM32F4discovery STM32F407VGT6 ARM Cortex-M4 32bit MCU Core Development Board 02

到着したマイコンボード

BluePillボードの2倍くらいの大きさです。STM32F4が乗っている割には非常にシンプルなボードです。

Dscn7437

使い勝手は良さそうなのですが、資料なし。
色々探してみると、このボードを評価しているサイトがありました(感謝!)。

Visuariddim - DIY More STM32F407VGT6 ボード
http://dubstylee.net/v/diy-more-stm32f407vgt6/

上記サイトの情報により、ユーザー利用可能LED、ボタン利用のポート番号や、
USBの問題点を知ることが出来ました。

とりあえず、Arduino STM32環境にてLチカを行うことが出来ました。
書込みはST-Linkを利用しました。

Dscn7442

USBシリアルの利用は上記サイトで指摘のある通り、問題ありです。
D+、D-がプルアップ抵抗、ダンピング抵抗がなくポートに直結の状態。
とりあず1.5kΩの抵抗でプルアップすることで、USBシリアルを使った通信を行うことが出来ましたが、
USBを認識したり、しなかったりと不安定です。

USB経由でDFUを使った書き込みは、DfuSeDemoでは出来ましたが、Arduino IDEからは
出来ませんでした。

(2018/01/05 補足 Arduino IDE for STM32にてF4ボードでUSB経由(.dfu形式イメージ対応)で
  書き込みを行うには、下記のリンク先のカスタマイズ設定が必要です。
  alternative way to use STM DFU in Arduino 1.8.3 on Black F407VET6
  ただし、このボードでは書き込みは出来ても、動作しませんでした。
)

Dscn7443

ボードとしては、シンプルで好きなタイプなのですが...
とりあえず、実験用に使ていこうとは思います。

2018/01/03 追記

端子名が分かるよう、ラベルを貼り付けました。
これでちょっと使いやすくなりました。

Dscn7455

2018/01/10 追記
Arduino for STM32のフォーラムにこのボードに関する投稿記事を見つけました。
[Solved] Anybody using this F4 board and got the USB working?

結論としては、「外部プルアップ抵抗付けなくてもUSB CDCは利用できる~よん」
とのことです。内部でプルアップ処理を施す対応のようです。

2018年1月 1日 (月)

新年あけまして、おめでこうございます!

明けましておめでとうございます。
今年もマイペースでブログやっていきます。

「正月的な何か」をと思い、そのへんに飾ってあった餅を無理やり猫にあてがいました。
(以前もこんなのやった気が ...)

ルミちゃん、ますます太った感じです。

Dscn7429

たまちゃん(たま吉さん)は、一見スリムなのですが、お腹がすごいことになっています。

Dscn7435

今年も例年通り、家族で墓参りに行ってきました。天気も良く一年の始めに日としては申し分のない1日でした。

2017年12月22日 (金)

STM32関連 「STM32HAL&SW4入門 Kindle版」を読んでみると..

STM32開発環境として最近 SW4STM32を使い始めました。
何か参考になる書籍をと思い、電子書籍「STM32HAL&SW4入門 Kindle版」購入しました。
(実際には、Kindle Unlimited: 読み放題対象の書籍なので、そのサービスにて購入)

03

内容的には、参考になる書籍なのですが、確実に間違っている内容もあります。
ケチをつけるつもりは無いのですが(う~ん、でも有料なので文句も言いたいなぁ..)、
間違った手順が広まると困るので、その点について記載します。

以下、インストールに関しての電子書籍「STM32HAL&SW4入門 Kindle版」 からの引用です。

2-2. 統合開発環境 インストール

 今回 は Windows 7 マシン に インストール する 場合 について 説明 し ます。

2-2-1. JavaSE インストール

  SW 4 STM 32 は Eclipse ベース の 開発環境 の ため、 JavaSE の インストール が 必須 です。 既に JavaSE が インストール さ れ て いる 場合 は 次項 へ 進ん で ください。 先 ほど、 ダウンロード し た SW 4 STM 32 の インストール を 開始 する と、 JavaSE が インストール さ れ て い ない 場合 は 自動的 に インストール が 中止 さ れ、 JavaSE の インストール が 促さ れ ます が、 今回 は 先 に JavaSE を インストール し ます。

実際には、JavaSEの事前インストールは不要ですし、インストールは中止されません。
実際に試してみると、途中でjavaのインストール確認画面が表示され、javaがインストール
されます。

02

インストール後は問題なくSW4STM32が起動出来ました。
インストールしたSW4STM32のフォルダを調べてみると、jreがインストールされてる
ことが分かります。

05

利用しているSW4STM32のEclipdeインストール情報を見てみると、
どのjava環境を利用しているかが分かります。

04_3

公式サイトのインストール手順にjavaを事前にインストールする記載は
ないので、素直に公式サイトの手順に従えばインストールでOKですね。

情報が正確かどうかは、改めて「一次ソース(公式サイト)」の確認が大事ですね。


2017年12月16日 (土)

電子書籍「Mastering STM32」で勉強中 。。。。

先日購入した 電子書籍「Mastering STM32」を熟読中。。。

本日は、「5. Introduction to Debugging」の章に到達(まだまだ先は長いです^^)。

「ARMセミホスティング」等、ARMでは当たり前の作法というか、ノウハウのようですが、
全然知りませんでした。OpenOCDのちょっと突っ込んだ解説、非常に良いです。
このあたりを知っているだけで、デバッグに対するアプローチが全然異なると思います。

個人の趣味ベースで、体系的に幅広く網羅して学んでいくのは限界がありますが、
この書籍は、けん引してくれます。
英文なので、読み進めるとストレスが溜まるのがちょっと難点です。

追記
Mastering STM32の解説では、eclipce+プラグインを対象としていますが、
System Workbench for STM32(SW4STM32)で、セミホスティングやってみました。

デバッグ内でfprint()はもちろんのこと、fopen()、fwrite()で実行中の情報をホスト側の
OSのファイルに保存できます。デバッグでかなり威力を発揮できます。
ホスト側のファイルをロードして、EEPROMへの書込みなんかも出来るかもしれません。

Sw4stm32

設定は、下記の情報を参考にさせていただきました。

SW4STM32でsemihostingが使いたい
Semihosting with OpenSTM32 and STM32F446RE Nucleo
Semihosting on ARM with GCC and OpenOCD

2017年12月15日 (金)

電子書籍「Mastering STM32」を購入 ・・・ かなりの良本

STM32関連の書籍を探していたのですが、国内で市販されている書籍があまりなく、
洋書の電子書籍「Mastering STM32」がお薦めとのことで、購入しました。

https://www.carminenoviello.com/mastering-stm32/

01

価格は$32.99と高い気がしますが、PDF版では848ページもあり高くはないでしょう。

まだ最初の導入部分と開発環境の構築部分までした読み進めていませんが、
STM32をマスタするにおいては、かなりの良本だと思います。

国内で出版されている書籍は古いフレームワークを利用したものばかりの中、
HALベースなのも良いです。記事内で利用しているツール類は、最近のバージョンの
ため、ずれが無いのも良いです。

また、電子出版の利点を生かして、頻繁に更新しているようです。
定期的に情報を取り込んで更新しているようなので、これ一冊持っていれば、
長く使えそうです。サポート専用サイト、フォーラムもあるので情報交換等を出来そうです。

導入部分の「1.2.2 …. And Its Drawbacks(そしてその欠点)」で、
『なんで、STM32は今一、分かりにくのだろうか?』と思っていた疑問に対する答えが
分かりました。

他のメーカーのLPC、AVR、Microchipなんかは、取りあえず無料で使える(制約あり)、
専用の統合環境を用意していますが、ST社は用意していません。
そのため、利用はそれぞれ異なった環境を使っています。
幾つかの書籍なんかも、開発環境がまちまちです。
これだけでも、それそれの環境で初心者は混乱します。ネットで調べても、
自分と異なる環境の情報なので、手順なんかも違ってきます。

また、ライブラリ関係の公開ドキュメントが貧弱です。
ソースコードから生成しているので、簡単なインタフェースレベルの説明しかなく、
サンプルソース付きの解説がほとんどないです。

そのほか、CubeMXの生成コードがバグが多い点にも言及しています。

英語なので、読み進めるスピードが亀ですが、ネット上の断片的な情報を探すよりも
しっかりと理解出来そうです。

去年、スイッチサイエンスで安売りしていた「ST Nucleo Board STM32F401RE」を
やっと活用出来ます。

02_2

Dscn7371

より以前の記事一覧