フォト
2017年12月
          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年12月15日 (金)

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

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

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

01

$32.99とちょっと高いです。
まだ最初の導入部分と開発環境の構築部分までした読み進めていませんが、
STM32をマスタするにおいては、かなりの良本だと思います。
国内で出版されている書籍は古いフレームワークを利用したものばかりの中、
HALベースなのも良いです。記事内で利用しているツール類は、最近のバージョンの
ため、ずれが無いのも良いです。

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

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

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


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

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

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

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

02_2

Dscn7371

2017年11月26日 (日)

microbitのエディタをブログに表示するテスト

micro:bitのエディタをブログに表示するテストです。
ココログでもできるみたいです。

2017年11月16日 (木)

Visual Studio 2017 でArduinoを利用する

マイクロソフトの統合開発環境 「Visual Studio 2017 Community 2017」で
Arduino向けプログラムの開発が出来ると聞き、試してみました。

最近のVsual Studioは個人レベルの利用であれば、無償版の範囲でも
かなりの機能が利用できるようです。

プラグイン的な「Arduino IDE for Visual Studio」をインストールすると、
Arduinoのプラグイン的に利用していたArduino STM32もコンパイルと書き込みまで出来ました。

Vs

他に、Androidアプリ開発、マークダウンドキュメント対応と充実しています。
最近のマイクロソフトは個人開発・オープンソース開発者に優しくなった感があります^^

2017年11月15日 (水)

豊四季Tiny BASICでHC-SR04を使った距離計測

豊四季Tiny BASIC for Arduino STM32
超音波距離センサHC-SR04を使った距離計測を試してみました。

HC-SR04は、秋月電子でも販売されていますが、amazonで探すと、200円程度で入手出来るようです。

1000

プログラム

 1 'キョリケイソク
 10 CLS
 20 P1=PB8:P2=PB3:T=180
 30 K=(3315+T*6)/20
 40 GPIO P1,OUTPUT
 50 GPIO P2,INPUT_FL
 60 "loop"
 70 OUT P1,LOW
 80 OUT P1,HIGH
 90 OUT P1,LOW
 100 D=PULSEIN(P2,HIGH,200,1)
 110 ?DMP$(D/100*K,2)
 120 WAIT 300
 130 GOTO "loop" 

PUKSEIN()関数を使って、超音波が反射して帰ってくるパスル幅を調べ、
その時間から距離を求めています。
小数が使えないため、DMP$()という、指定位置に小数点を挿入する文字列関数で
見かけ上、小数表示しています。


接続
HC-SR04 Trig端子 :PB8(5Vトレラントピン)
HC-SR04 Echo端子 :PB3(5Vトレラントピン)
HC-SR04 GND端子 :GND
HC-SR04 VCC端子 :5V
HC-SR04は5V動作のため、Blue Pillボードの5V入力可能(5Vトレラント)ピンを利用します。

動作の様子

正確な計測値とは言えませんが、そこそこ目安となる数字はでていますね。

参考にしたサイト
【Arduino】超音波距離センサ(HC-SR04)の測定精度を向上(気温考慮)

こちらのサイトにもまとめました
超音波距離センサ(HC-SR04)を使った距離計測

2017年11月12日 (日)

シリアル接続 赤外線送受信モジュールの調査

Aliexpressでシリアル接続で利用出来る赤外線送受信モジュールを見つけ、入手しました。

Photo

製品はこんな感じです。

04

06

いつものAliexpressクオリティでマニュアルが無いので、
裏のシルク印刷「YS-IRTM」で情報を探すと ズバリの情報がありました。
  ・Arduino フォーラム Topic: Infrared interface
   https://forum.arduino.cc/index.php?topic=359707.0

上記の情報から、通販サイト「UCTronics Store」の商品情報のページに詳しい情報があります。
  ・Infrared Remote IR Decoder Encoding Transmitter & receiver Wireless Module NEC
  08

  このページにマニュアルのリンクがあります。
  http://www.uctronics.com/download/U3107_Infrared_decoding_module.zip

マニュアルは中国語ですが、使い方が分かりました。
(以下、使い方のメモ)

結線

05

シリアル(UART)はクロス接続です。電源は3.3Vでは動きません。5Vを供給します。
3.3Vマイコンを使う場合は、5Vトレラント対応を確認して利用します。
IchigoJamやSTM32(Blue Pillボード)のSerial1は、5Vトレラントなので直結出来ます。

シリアル通信条件
デフォルトでは、9600bpsで、8ビット長、パリティなし、ストップビット1、フロー制御無し

とりあえず、データの受信はこれで出来ます。
NECフォーマットなので、赤外線リモコンを押したときに、受信するデータは
次の3バイトとなります。
  [カスタマーコード上位] [カスタマーコード下位] [ボタンコード]

試しに、豊四季Tiny BASICを使って、受信してみます。

01

プログラムソース

10 CLS
20 SOPEN "9600"
30 D=SREAD()
40 IF D>=0 ?HEX$(D,2)
50 GOTO 30

プログラムは、シリアルをオープンして、データを受信したら16進数で表示します。

02

ボタンを押すと3バイト受信出来ました。
3バイトのうち、最初の2バイトがカスタマーコードで、どの赤外線リモコンから送信されたか識別できます。
3バイト目が押されるボタン毎に異なる値となります。

こういった実験は、単独稼働できるボードだとお手軽に出来ますね。
インタープリターでコンパイル不要なのも良いです。

モジュールには幾つかのコマンドが利用出来ます。
コマンドは次の5バイト構成となっています(16進コード)。

     [アドレス]  [コマンド] [引数1] [引数2] [引数3]

アドレス:送信先モジュールを指定するアドレス
    0xA1(デフォルトアドレス、変更可能)
    0xFA(ユニバーサルアドレス、変更不可)

コマンド: モジュールに対する指示
   0xF1  赤外線信号送信
           引数1~引数3に送信するデータを指定します。
              引数 1: カスタマーコード上位
              引数 2: カスタマーコード下位
              引数 3: データ(ボタン識別コード)

   0xF2  アドレスの変更
           引数1~引数3に送信するデータを指定します。
              引数 1: 新しいアドレス
              引数 2: 0x00
              引数 3: 0x00

   0xF3  シリアル通信速度の設定
           引数1~引数3に送信するデータを指定します。
              引数 1: 0x01~0x04(0x01:4800、0x02:9600、0x03:19200、0x04:57600bps)
              引数 2: 0x00
              引数 3: 0x00

ここで、アドレスとはモジュールを個体識別するコードのようです。
やろうと思えばシリアル通信でも1対多送信出来るので、同時に複数のモジュールを
接続してる場合にでも利用するのかもしれません。

上記のコマンドを送信し、正しく処理が行われた場合は、コマンドのコード1バイトが
応答として送られてきます。

  0xF1  送信に成功した
  0xF2  シリアルポートアドレスが正常に変更されました
  0xF3  ボーレートが正常に設定されました

応答が帰ってこない場合、エラーを意味します。

資料を読むと、アドレス、通信速度のリセット方法の説明があるので、
アドレス、通信速度の変更は保持さるっぽいです(試していません)。

モジュールをもう一つ使って送信も試してみました。

10

もう一方はUSB-シリアル変換にてパソコン(Windows 10)に接続しています。

09

Real Time Serial Captureというソフトを使って、データ送信コマンドとして
0xA1 0xF1 0x12 0x34 0x56 をモジュールに送信します。

相手側にて受信され、画面に 12、34、56が表示されました。
パソコン側は応答としてF1を受信しています。

2、3メートル離して送信を試してみましたが、問題なく送信出来ました。
NECフォーマットの都合上、一度に3バイトしか送れませんが、色々と使えそうです。


さて、このモジュール、回路図を見るとこのモジュールにはSTC11F02Eというマイコンが
使われているようです。STCは中国で良く使われているマイコンのようです。

ちょっと消費電力が気になり、測定してみると15mA(5V)でした。
まあこの程度なら利用には問題ないでしょう。

2017年11月 3日 (金)

micro:bitはじめました

micro:bitは、子供向けのスクラッチみたいなプログラム環境と思い込んで様子見だった
のですが、MicroPython、mbed、Arduinoも利用可能とうことを知り、入手しました。

02

まずは、ハードウェアスペック
MPU:Nordic nRF51822 ARM Cortex-M0 16MHz RAM 16kバイト Flash 256kバイト
BLE搭載、5x5ドットマトリックスLED、ユーザー利用可能ボタン 2個
加速度センサ、磁気センサ

これだけあれば、そこそこのサイズのプログラムが作成できます。

利用可能開発環境

下記は、公式サポートしている開発環境です。
ブラウザ(クラウド)で利用出来ます。
  ・Javascript(JavaScriptブロックエディターでスクラッチのようにプログラミング可能)
  ・MicroPython(Pythonエディターでプログラム開発)

次が本命の利用したい環境
  ・mbed(BBC micro:bit
  ・Arduoino

早速、Arduinoの開発環境を利用してみました。
開発環境の構築は、adafruit - Micro:bit with Arduinoを参考にしました。
BLE、加速度センサ、磁気センサ、5x5ドットマトリックスLED用ライブラリは、
上記解説サイトの内容に従って別途インストールしました。

試しに、豊四季Tiny BASICのターミナルスクリーン版を動かしてみました。

03

Arduino対応版は取りあえず、無修正で動きました。

01

開発環境周りのドキュメントを調べていくと、
micro:bit runtimeという解説を見つけました。
・micro:bit runtime https://lancaster-university.github.io/microbit-docs/

このサイトのconseptの解説に次の階層図があります。
(画像は、https://lancaster-university.github.io/microbit-docs/concepts/ より引用)

04

プログラム環境はmbedベースであることが分かります。
NordicのSDKがベースになっていて、その上にmbed、 runtimeが乗っています。

ランタイムはmicro:bit DALという名称のようです。
このmicro:bit DALは、mbedの他に、Yotta という環境で利用可能なようです。

Arduinoよりも、mbed、Yottaに手を出した方が良さそうです。

micro:bit DALにはmessageBusというイベント駆動をサポートしているようです。
かなり洗練されたデザイン(設計)がなされています。

 

#include "MicroBit.h"

MicroBit    uBit;

void onButtonA(MicroBitEvent e)
{
    if (e.value == MICROBIT_BUTTON_EVT_CLICK)
        uBit.display.scroll("CLICK");

    if (e.value == MICROBIT_BUTTON_EVT_DOWN)
        uBit.display.scroll("DOWN");
}

int main()
{
    uBit.init();
    uBit.messageBus.listen(MICROBIT_ID_BUTTON_A, MICROBIT_EVT_ANY, onButtonA);

    // We don't want to drop out of main!
    while(1)
        uBit.sleep(100);
}

2017年10月22日 (日)

Arduino STM32 リファレンスマニュアル 日本語版

Arduino STM32に関するリファレンスマニュアル的なドキュメントが無いので
自分で作成することにしました^^;

作成中のドキュメント:
 ・Arduino STM32 リファレンス 日本語版
  ・Arduino STM32関連情報

現状では、Arduino STM32を使ってプログラムを作成する場合、
リファレンスマニュアルとしては、Arduino STM32のベースとなっている、
LeafLabs, LLCの「Maple Language Reference」を参照しつつ、Adsuino STM32のソースや
フォーラムの投稿を読んで追加・修正をくみ取って利用していました。
これは、かなり効率悪いです。そこで、
Maple Language Reference」をベースに、プログラム作成の過程で調べたことを、
追記し少しずつドキュメントをまとめることにしました。

「せっかくまとめるなら、何か新しいやり方・ツールを使ってみよう」
と思い、Scrapboxを使ってみました。

Scrapbox、なかなか使いやすいです。文章入力中に勝手に自動保存してくれるし、
リンクやプログラムコードの記述がやり易いです。

2017年10月14日 (土)

豊四季 Tiny BASIC for Arduino STM32 V0.85βの公開

「豊四季 Tiny BASIC for Arduino STM32」を V0.85βに更新しました。
公開サイト: https://github.com/Tamakichi/ttbasic_arduino/tree/ttbasic_arduino_lcd_plus

まだまだテスト不十分のため、β版としています。

OLED(SSD1306、SSD1309、SH1106)、TFT(ILI9341)ディスプレイに対応しました。
グラフィック描画にも対応しています。
TFTディスプレイでは、16ビットカラーに対応しています。

01

写真はSDカードからビットマップファイルをロードして表示している例です。

利用環境としては、次の構成をサポートしました。

04_1

最小構成は①ターミナルコンソール利用となります。
目的に応じて、②~④の表示機器を用意し、オプションのSDカード等を追加します。

04

2017年10月 9日 (月)

CEATEC JAPAN 2017に行ってきました

今年もCEATECに行ってきました。

今年のCEATECは「脱家電」が鮮明となっています。
「デバイス・ソフトウェア」エリアは去年と同じ感じでしたが、家電・総合電機メーカーが
展示する「家・ライフスタイル」エリアは去年に比べると内容が変わった感があります。

まずは、一番驚いたのがパナソニックの展示

Dscn7183

展示がインフラや要素技術がメインの内容で、今までと全く異なる内容。
ブースに入って、「あれ、ここ、パナソニックでいいんだよなぁ」と、回りを見渡して
パナソニックのロゴを確認するほどでした。
「こんなこともやっているんだ」とちょっと関心しました。

シャープはいつもと同じく、液晶テレビがメイン、これはこれで良いとして、

Dscn7160


富士通、三菱電機、NEC、日立、沖電気は、ソリューションの紹介でパネル展示がメイン。

富士通も要素技術よりもソリューションや提案的な内容がメインでした。

Dscn7166

それでも、見ごたえのある展示があったのでよいのですが、

Dscn7200

(写真は都市の航空写真にプロジェクションマッピング技術を使って様々な情報表示を
を行う技術を公開)

NEC、三菱電機、日立、沖電気、入口から覗く程度で見学終了でした。
形ある製品の展示ではなく、パネル説明がメインで内容的に抽象的で面白味無し。

この展示内容ならわざわざここに来る必要なしで、
インターネット上のコンテンツ閲覧とあまり変わらない内容です。

ホンダは、今年もテーマを絞りその象徴のオブジェを展示。

Dscn7167

水素ステーションとポータブルバッテリーの展示

Dscn7173

Dscn7169_2

シンプルな展示で分かり易です。

ニチコンもテーマ絞った展示で良い展示でした。

Dscn7204

急速充電。一般的なEV車だと4時間で充電できるそうです。

Dscn7206

今回、一番面白いと思ったのがKino-mo社の「HYPERVSN」。

Dscn7145

高速に回っているプロペラに映像を投影しているようですが、
空中に映像が浮いているような感じに見えて、ちょっとすごいです。



デジカメで動画のため、映像が今一です。生で見るともっと鮮明で綺麗です。

一方、オムロン、村田製作所は一昨年、去年の展示を使いまわしている感があり、
今回は素通りしました。

Dscn7174

Dscn7098

対応誘電、ローム、アルプル電気は安定した展示です。

Dscn7088

Dscn7079

Dscn7118

今回、今まで出展していなかったファナックがブースを設けていました。

Dscn7153

産業ロボットが稼働している様子を見たかったのですが、それがなくちょっと残念。

今回の展示会は全体的にインパクトのある展示が少なく、
このブログ記事もやっつけ感漂う内容になってしまいました。

ワクワク感のある展示が少なくなってきたなぁ
以前のような、行列が出来るような展示が無いのはちょっと寂しい。

2017年9月25日 (月)

注文していたスイッチが到着

キーボード作成のために注文していた、未到着スイッチが到着しました。

Dscn7071

ボタン部がシリコン製のスイッチは、タッチ感抜群で、タクトスイッチがゴミのように思えます。
連打を要するゲーム機の作成にはこのスイッチがおすすめです。

一方、2ピン省スペース角形スイッチ、タッチ感は通常のタクトスイッチを同じですが、
面積を取らず、これはこれで使い勝手良好です。

キーボード製作(完成版)はシリコン製のスイッチを利用、
試作では前回到着した激安タクトスイッチ利用で作業を進めていきます^^

より以前の記事一覧