フォト
2025年3月
            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年7月 | トップページ | 2018年9月 »

2018年8月の12件の記事

2018年8月25日 (土)

中華製ST-LINKをBluePillボード専用に改造

使い勝手が悪いなぁと思っていた、この中華製ST-LINK、

Dscn8739


「そうだ、Blue Pillボード専用に加工しよう」


とのアイデアが浮かび、やってみました。

このピンヘッダ上にユニバーサル基板を乗せて変換し、左側にメスピンソケットを
取り付けて、Blue Pillボードを直結出来るようしたら便利かもというアイデアです。

01_3


当初、上記パーツをメスピンヘッダで脱着出来るように考えていたのですが、
高さがあり、直接はんだ付けすることにしました。

中略

取りあえず、完成です。
(製作に夢中になり、実物基板の写真を取り忘れてしまいました^^; )

Dscn8741

ショート防止に熱収縮チューブ、布テープを装着しました。
こんな感じで、直結出来ます。

Dscn8742

パソコンに接続し、STM32 ST-LINK Utilityにて問題なく接続出来ました。

Dscn8743

接続した様子

02

これは、結構便利で良さそうです。
ジャンパワイヤの接続は意外と面倒でしたが、ちょっと楽になりました。

2018年8月24日 (金)

(メモ) マイクロソフトが公開しているWindows Commands Reference(PDF)

メモ:マイクロソフトが公開している「Windows Commands Reference(PDF形式)」

ダウンロード:https://www.microsoft.com/en-us/download/confirmation.aspx?id=56846

01

02

下記の記事にて知りました。
ITmedia  - Microsoft純正、全948ページ「Windowsコマンドレファレンス」から分かること

ちょうど、こんなリファレンスマニュアルが欲しかったんですよね。

2018年8月20日 (月)

Arduino STM32のUSB HIDインタフェースの新しいブートローダー (2)

記事「Arduino STM32のUSB HIDインタフェースの新しいブートローダー」を書いた時点では
Arduino IDEのメニューにてHIDブートローダ経由書き込み指定が出来なかったのですが、
先日の更新後のArduino STM32パッケージをインストールして確認したところ、
メニューに組み込まれていました。

そこで、実際にHID経由でのスケッチ書き込みを試してみました。

09_2


試してみたボード
  ・Blue Pillボード(写真 左)
  ・Bkack Pillボード(写真 中)
  ・RobotDym Blue Pill互換ボード(写真 右)

  Dscn8723

まずはHID用のブートローダを書き込む必要があります。
HID用ブートローダは、本来は下記のサイトが公式サイトになるのですが、
rogerclarkmelbourne/STM32_HID_Bootloader
まだ、Blue Pill用のものしか置いていないようです。若干古い可能性があります。

当面は、オリジナル版開発者の下記のサイトから入手した方が良さそうです。
https://github.com/Serasidis/STM32_HID_Bootloader

ダウンロードして解凍します。
HIDブートローダは、
  STM32_HID_Bootloader\bootloader_F1\bootloader_only_binaries\の中のファイルを利用します。

  ・Blue Pillボード、RobotDym Blue Pill互換ボード
    hid_generic_pc13.bin を利用
  ・Bkack Pillボード
    hid_generic_pb12.bin を利用

ST-Linkを使ってHIDブートローダを書き込みます。

  Dscn8724

ツールは、ST-LINK Utilityを使いました。   

  14

  HIDブートローダのファイルをロードして書き込みます。
  15


  書き込み後、パソコンにUSB経由で接続します。 
  この時、ボードマイコン(ここではBlue Pill)のBOOT1を1に設定してから、
  パソコンに接続します。  LEDが激しく点滅します。
  (この手順が分からす、なかなか書込み出来ませんでた。試行錯誤のため、
    手順としては間違っている可能性があります。)


  Dscn8725

  つなげると、パソコン(Windows 10)でSTM32F HID Bootlooader が認識されました。
  10

デバイスを調べてみると、次のような感じで登録されています。

11

試しに、Lチカスケッチを書き込んでみます。

17

問題無く書き込めました。
マイコンボードのBOOT1を0側にして、リセットボタンを押します。
これで、書き込んだスケッチが実行されます。

再度スケッチを書き込むには、 マイコンボードのUSB接続を抜き、
BOOT1を1にして、パソコンに接続します。
なぜか、USBの接続を一旦抜いてからでないとダメでした。
このあたりは、ちょっと面倒です。
もしたら、手順として間違っている可能性があるため、もう少し試してみます。

HIDブートローダのメリットとしては、
ブートローダが8Kバイトから4Kバイトに小さくなり、利用出来るフラッシュメモリの領域が
4kバイト増えた点と、ドライバーのインストールが不要な点です。

手順(もし、今回のやり方が正しいとすれば)的には、HIDブートローダ経由は、
BOOTピンの設定変更とボートの抜き差しがちょっと面倒です。

USBはCDC(シリアル通信)としても使うので、
HIDブートローダを有効にするために、BOOT1の設定が必要みたいです。

現時点では、HIDブートローダの書込みはWindowsしか対応していないようです。

関連記事
Arduino STM32のUSB HIDインタフェースの新しいブートローダー

2018年8月19日 (日)

TV出力ライブラリ更新を豊四季Tiny BASIC for Arduino STM32に適用する

先日、修正したArduino STM32用のTV出力ライブラリ
豊四季Tiny BASIC for Arduino STM32に適用し、コマンドにてNTSC信号の
横位置と縦位置を補正出来るようにしました。

以前入手した3.5インチのTFT LCDモジュール(下記の製品)を使った場合、 
  Podofo 3.5" TFT LCD Display RGB LCD Display Module Kit
  01

デフォルトでは、表示画像の上部が欠けてしまい、どうすることも出来ませんでした。

Dscn8698

Dscn8701

修正ライブラリを組み込み、コマンドにて補正出来るようにしました。
  コマンド
    CONFIG 0,垂直同期補正,横位置補正, 縦位置補正


補正後の画面

Dscn8705

補正した値は、SAVECONFIG コマンドにて内部フラッシュメモリに保存することで
再起動しても状態を保ちます。

補正の様子

ついでに、以前試したブラウン管テレビでの補正も試してみました。

補正前は、左側が欠けてしまっていました。

Dscn8709

補正して、ちょうどよいポジションで表示出来るようになりました。

Dscn8716

ブラウン管テレビでの表示は、次のような感じです。
試したのは、パナソニック 2001年製造の14インチのテレビです。


文字等の表示は、綺麗とは言えませんが、実用的レベルです。
思っていたよりも、まともに表示出来ています。
久しぶりにブラウン管テレビで映像を見ましたが、これはこれで良いですね。

この更新分は、もう少しテストを行ってから公開したいと思います。

2018年8月17日 (金)

温湿度センサモジュールAM2320を使ってみる

以前、秋月電子で購入した温湿度センサモジュールAM2320、
改めて仕様等を理解した上で利用してみました。

温湿度センサ モジュール AM2320
02

実際の製品はこんな感じです。

01

端子は左から(VCC、SDA、GND、SCL)となります。

3.1V~5.5Vに対応、I2C またはシングルバス(1-wireライク)に対応
I2C対応のため、以前使ったDHT11よりも使いやすいです。

今回はI2Cインタフェースで使ってみました。

仕様関連

・測定できる情報
    湿度  符号付16ビット  単位 摂氏(℃ )
    温度  符号付16ビット  相対湿度 単位 %

    モジュールから取得する生データは、実際の値に10をかけた値です。
    ですので、小数第一位の単位まで測定できます。

・コマンド
  Photo

・レジスタ
  Photo_2

使い方
   湿度・温度を読み取るだけであれば、
   ファンクションコード0x03(レジスタからの読み込み)の利用だけとなりますが、
   読み取る前にウェイク・アップさせる必要があります。

   手順
    1) スレーブアドレスを送って、モジュールをウェイク・アップさせます
       800μsec 以上待ちが必要、3msec以内に次の要求を送信ですが、
       Arduinoの実行側ででは、待ちは不要でも動作しました。

      補足
         スレーブアドレスを送信した場合、一般的なプロトコルとしては
         スレーブアドレスに該当するスレーブデバイスはACKを返します。
         ところが、このデバイスはスリープ状態のためか、ACKを返せないため
         I2Cバス的には、”該当するデバイス無し”となり、NAKが帰ってきます。

         ウェイク・アップでは、NAKが帰ってきた場合に、デバイス不在として判断せず、
         それ以降のデータ送信のNAKで
”該当するデバイス無し”を判断する必要があります。

    2) ファンクションコード0x03(レジスタからの読み取り)コマンドとその引数を送信する
       次の3バイトを送信します
          0x03(レジスタからの読み取り)
          読み取り開始レジスタ番号(1バイト)
          読み込みデータ数(1バイト)

    3)モジュールからのデータを読み取ります
       読み取りデータは、次の表のように
       指定したデータの他に先頭に2バイト、末尾に2バイトのデータが付加されます。
       4バイト余分にデータを取得する必要があります。
      
       Photo_3

実際にArduino Unoでサンプルスケッチを作成して、動作確認してみました。

  Dscn8695

  結線
   センサー端子    Arduino Uno
    1: VCC               5V
    2: SDA               A4(SDA)
    3: GND               GND
    4: SCL               A5(SCL)

    I2C接続ではプルアップ抵抗が必要ですが、Wireライブラリではマイコン内部にて
    プルアップが行われるためこの構成では不要となります。

1秒間隔でデータを読み取って表示します。
センサーモジュールのウェイク・アップさせるのがミソです。

スケッチ

//
// 湿温度センサー AM2320 I2C接続サンプル
//

#include <Wire.h>
#define DEV_ADR 0x5c  // AM2320スレーブアドレス

uint8_t data[8];

void setup() {
  Wire.begin();            
  Serial.begin(115200);
}

void loop() {
  // AM2320センサーのウェイクアップ
  Wire.beginTransmission(DEV_ADR);
  Wire.endTransmission();

  // 湿度・温度データ取得要求
  Wire.beginTransmission(DEV_ADR);
  Wire.write(0x03);         // レジスタ読み取りコマンド
  Wire.write(0x00);         // 読み取り開始レジスタ番号
  Wire.write(0x04);         // 読み取りデータ数    
  Wire.endTransmission();

  // データの取得
  Wire.requestFrom(DEV_ADR,8); 
  if (Wire.available() >= 8) {
    for (uint8_t i=0; i<8; i++) {
      data[i] = Wire.read();
    }
    
    float rh = ((float)(data[2]*256+data[3]))/10; // 湿度
    float tp = ((float)(data[4]*256+data[5]))/10; // 温度
    
    // 湿度・温度の表示
    Serial.print("T=");
    Serial.print(tp);
    Serial.print("c");
    Serial.print(" H=");
    Serial.print(rh);
    Serial.println("%");
  }
  delay(1000);
}

実行結果

   03

部屋にある室温計と比較すると、まあまあの精度の値が読めています。

折角なので、豊四季タイニーBASIC for Arduino機能拡張版(+ VFD MW25616L対応)
でも試してみました。
使うハードウェア写真の構成のまま、スケッチを書き換えて利用しました。

BASICのプログラム

10 'AM2320
20 CLS
30 A=$5C
40 B=MEM
50 POKE B,$03,$00,$04
60 W=I2CW(A,B,0,B,0)
70 R=I2CR(A,B,3,B+3,8)
80 IF R ?"ERROR":GOTO 60
90 H=PEEK(B+5)*256+PEEK(B+6)
100 T=PEEK(B+7)*256+PEEK(B+8)
110 ?"湿度 ";DMP$(H,1);"% ";
120 ?"温度 ";DMP$(T,1);"℃"
130 WAIT 1000
140 GOTO 60

実際のプログラム

04

実行結果

05

BASICでも問題なく動作しました。
I2Cを使う際の事前にPOKEコマンドでメモリーに値をセットするのが
若干使い勝手が悪いです。
I2CW、I2CRコマンドの引数に直接送信するデータを記述する形式の方が
使いやすかもしれません。ちょっと検討してみます。

2018年8月11日 (土)

Arduino互換機 Ginger BreadでLチカ

先日のMaker Faire TokyoにてGinger Design Studioさんが
Ginger Bread(Arduino互換機)の無料配布を行っており、私も頂きました。

Dscn8655

Dscn8656

折角なのでLチカを試してみました。


なぜかスケッチの書込みに失敗


公式サイトのGetting Started を参考にしてLチカスケッチの書込みを試みたのですが、
書込みが行えませんでした。

USBシリアル変換モジュールにFTDI社製のものではなく、CP2102搭載モジュールを
使ったのですがそれが原因なのでしょうか?

avrdudeコマンドで接続チェックを行うと、通信が出来ないようです。
avrdude -patmega328p -c arduino -b 57600 -PCOM11
stk500_getsync(): not in sync: resp=0x00



このボードは内部RC発振 8MHzで動くタイプなのですが、
何となく、フューズビットの設定または、ブートローダが怪しいと思い
USBTinyにて内部RC発振 8MHz用のブートローダを書き込んだところ、

  avrdude -patmega328p -c arduino -b 57600 -PCOM11
  avrdude: AVR device initialized and ready to accept instructions
  Reading | ################################################## | 100% 0.01s
  avrdude: Device signature = 0x1e950f
  avrdude: safemode: Fuses OK
  avrdude done.  Thank you.


ボードを認識出来るようになりました。
Arduino IDEのバージョンや何かの影響でしょうか? 謎です。
たまたま、私のボードに不具合があったのかもしれません。

取りあえず、これで書き込めるようになりました。

Ide

Lチカも問題なく出来ました。

     2018/09/18 追記
 
    公式サイトに「ブートローダー不良に関してのお詫び」が掲載されています。
      対処方法は、やはりブートローダの書き換えが必要のようです。

気を取り直して、このボードの最大の特徴である
リチウムイオンポリマー電池の充電機能を試してみます。

Dscn8669

オーディオプレイヤーから抜き取った電池を流用したので、
ちゃん充電できるかはちょっと分かりませんが、試してみます。

2018/08/12 追記

充電出来ないため、別の電池に交換したところ、充電出来たみたいです。
最初に使った電池は、過放電で充電不能状態だったようです。

Dscn8671

充電用のコントローラーに、MCP73831というICを使っているようです。
秋月電子でも1個50円で販売されているようです。
  ・超小型単セル用リチウムイオン・リチウムポリマー充電コントローラ MCP73831-2ATI/OT


2018年8月 9日 (木)

以前製作したIchigoJam用EEPROMエミュレーションが動かない

以前Arduino(ATmega328)を使ったIchigoJam用のEEPROMエミュレーション
製作したのですが、IchigoJamのファームウェアを1.2.1から最新版の1.2b59に更新すると
動作しなくなってしまいました。

左写真左がI2C接続EEPROM、右がEEPROMエミュレーションでSDカードにデータを
保存します。右写真が利用のために装着した様子です。

Dscn8649  Dscn8642

公開サイト

  ・IchigoJam用EEPROMエミュレーション
   https://github.com/Tamakichi/Ichigoepprom3

その原因を調査してみました。

Dscn8641

まず、どのバージョンから動かなくなったかを調べてみると、
IchigoJamのファームウェア V1.2.2以降から動かなくなってしまいました。
念のため、IchigoJamの旧版ハードウェア、DIP版等でも調べましたが、
ファームウェアのバージョンが関係するようです。

次にI2Cのパケットをロジックアナライザで調べてみました。
I2C接続EEPROM(Atmel 24C256) モジュールIchigoJamに接続し、
同じハードウェアでIchigojam ファームウェア v1.2.1v1.2b59それぞれの
LOADコマンド実行時の様子を調べてみました。

  ・Ichigojam ファームウェア v1.2.1 の場合
  Ichigojam121

  ・Ichigojam ファームウェア v1.2b59 の場合   
   Ichigojam12b59

両方のファームウェアとも EEPROM(Atmel 24C256) モジュールでは問題なく動作します。
ただし、赤い四角で囲った箇所に差異が見られます。

v1.2.1では、EEPROMのデータシートに記載されているシーケンシャル読み込み通りの
プロトコルにてデータの読み込みが行われています。

一方、v1.2b59のでは、
スタートビット(緑の立下り)の直後にストップビット(赤の立下り)、さらにその直後に
スタートビット(緑の立下り)がIchigoJamから送信されています。
SCLの1クロック内でスタートビットストップビットがあるのも謎です。

私の知識レベルでは、不可解なプロトコルです。

現時点では、分かることは
  ・バージョン更新でEEPROMのアクセス方法に変更が見受けられる。
  ・プロトコル的に怪しい(かもしれない)。
  ・それでもEEPROMは問題なく動作している。

です。

本物が動いて、エミュレーションが動かない状況である以上、
エミュレーション側の実装に問題があるわけですが、
Arduno的にこの対応はちょっと無理そうです。

IchigoJamEEPROMエミューレションの公開サイト(GitHub)の方に、
「IchigoJam 1.2.2以降のバージョンには対応していません。」を追記しました。
一旦、本件はこれでCLOSEとします。

そいういえば、温湿度センサモジュール AM2320がIchigojamv1.2.2 あたりから
動かなくなったようなので、関連性があるのかもしれません。

2018年8月 8日 (水)

きゅうりとトマトの食べ合わせが良く無いって本当?

先日、放送されていた日テレの
「スクール革命! 食べ物2択クイズ!良いのはどっち?目からウロコの問題続々!』
(2018年8月5日(日) 11:45~12:45 日本テレビ)
で、

  ・ きゅうりとトマトの食べ合わせが悪い
  ・ きゅうりに含まれる酵素がトマトのビタミンCを破壊する
  ・ 酢(ドレッシング)をいっしょにとると酵素を壊すので回避できる


Kyuuri_cucumberFood_vegetable_sald


てな内容がありまして、ちょっと疑問に思いました。
この食べ合わせは、優秀な栄養士がついているであろう外食、中食、給食で
普通に出されています。

一方で、「問題無し」とする解説もいくつかあります。
ねとらば
   ・「きゅうりは世界一栄養がない」「食べると逆にビタミンCが壊れる」って本当? “きゅうりダメ野菜伝説”を検証してみた

  野菜等健康食生活協議会事務局
   ・野菜の調理によってビタミンCが壊れると言われていますが、本当にそうでしょうか?


きゅうりに含まれているビタミンCを破壊するとされる酵素は、
アスコルビナーゼ(アスコルビン酸酸化酵素)という物質だそうです。
人参、きゃべつ、かぼちゃ、りんご、バナナなんかにも多く含まれているそうです。

アスコルビナーゼは通常のビタミンC(還元型ビタミンC)酸化型ビタミンCに変化させる
働きがあり、これが破壊と解釈されていたようです。

一方、酸化型ビタミンCは体内で通常のビタミンC(還元型ビタミンC) に変化する(元に戻る)
ので結局は組み合わせて食べても問題なしのようです。

今回は、「問題無し」の方を信用することにします。

まあ、ここで言えるのは、「たとえ公共的なテレビでも鵜呑みで信用してはいけない」
ってことでしょうね。

月は自転しない」とかの例もあり、最近の教養的な番組の製作って、
専門家をやとって裏をとったりしていないのかな?
専門家・監修者の名前が無い場合は、疑った方がよいかも?

2018年8月 7日 (火)

DiskStation DS216jにgcc等のパッケージを導入する

自宅のNAS、DiskStation DS216jにgcc等のパッケージを導入した際のメモです。

Jasminさんの「雑記帳 - JasminInfo - Synology DS216j Entware-ng 導入」を参考に
させて頂きました。有益な情報の公開、ありがとうございます。

具体的に何をしたのかというと、
DiskStation DS216jEntware-ngというパッケージ管理ツールをインストールし、
任意のソフトウェアコンポーネントをインストール出来るようにしました。
これにより、gcc等が利用できる開発環境をDiskStation DS216jに構築することが出来ました。

Entware-ngに関する情報

  ・公式サイト Entware/Entware-ng   https://github.com/Entware/Entware-ng
    - ドキュメント https://github.com/Entware/Entware-ng/wiki
       - Install on Synology NAS
          https://github.com/Entware/Entware-ng/wiki/Install-on-Synology-NAS
       - Using gcc (native compilation)
          https://github.com/Entware/Entware-ng/wiki/Using-gcc-(native-compilation) 

  ・パッケージの内容
    http://pkg.entware.net/binaries/armv7/Packages.html

   ※ コマンド  $sudo opkg list でも確認出来ます。


  ・関連情報
    - Synology Forum - Optware replacement - 1700+ packages (arm & x86)
       https://forum.synology.com/enu/viewtopic.php?f=40&t=95346


Entware-ng導入後、さっそくgccをインストールしてみます。
Entware-ngではopkgコマンドを利用してパッケージの管理を行います。
  $sudo -i
  #opkg update
  #opkg install gcc

gccをインストール後、確認のためFDcloneのソースをコンパイルしてみました。

  参考にした情報
   ・CentOS7 で FDclone https://qiita.com/conan_hdk/items/b3349bd150d6a86f42ab

   $mkdir -p ~/src/FDclone
   $cd ~/src/FDclone/
   $wget http://hp.vector.co.jp/authors/VA012337/soft/fd/FD-3.01g.tar.gz
   $tar -xzf FD-3.01g.tar.gz
   $cd ~/src/FDclone/

   $vi Makefile
   CCの指定をccからgccに変更します。

   インストール
   $sudo make install

   動作確認
   $fd

     FDclone


Entware-ng導入の問題点


  DiskStation DS216jのセキュリティ アドバイザーがこの導入に関して警告を通知します。

  02

  システムの項目に2件ほど警告として通知されます。
  ※高リスクは別のネットワークのSSHのポート開放が原因です。無視して下さい。

  03

  1つは、/etc/rc.localを追加したための警告です。

  04

  もう一つは、Entware-ng を/opt に インストールしたための警告です。
  05

  まあ、この警告は内容を理解した上で無視することにします。

導入後、opkgのupgradeコマンドにて gccを5.3.0 から6.3.0に更新すると、
    $ gcc

だでけを実行すると次の警告が表示されるようになってしまいました。

/volume1/@entware-ng/opt/bin/../lib/gcc/arm-openwrt-linux-gnueabi/6.3.0/crt1.o: In function `_start':
(.text+0x34): undefined reference to `main'
collect2: error: ld returned 1 exit status

取りあえず、ソースのコンパイルは問題なく行えるのですが、原因不明で調査中です。


   

2018年8月 6日 (月)

アクティブマトリクス蛍光表示管の実験用表示モジュールの試用 (3)

前回のアクティブマトリクス蛍光表示管の実験用表示モジュールの改訂版、
MW25616L実験表示モジュールver.2の利用の続きです。

改訂版では、I2C接続用端子が新たに追加さました。

01 03

下からGNDVCCA4(SDA)A5(SCL)D2が割り付けられており、
付属のRTCモジュール(DS3231利用)が直接接続出来ます。

02

前回に引き続き、豊四季タイニーBASIC for Arduino機能拡張版(以降豊四季Tiny BASIC拡張版と略称)にて
動作確認をしてみます。

DATEコマンドで時刻を参照すると、当然正しく無いですが参照できました。

01_2

SETDATEコマンドで正しい時刻を設定します。

02_2


次に、下記のプログラムにてVFDに時刻を表示してみます。
10 VCLS:VBRIGHT 100
20 GETTIME H,M,S
30 VMSG 0,#-2;"現在の時刻は";H;"時";M;"分";S;"秒です"
40 WAIT 1000
50 VSCROLL 256,-1
60 GOTO 20

動かして見ると、表示内容を更新する毎にノイズが乗るような感じで乱れたりします。

04

05

旧バージョンでも試してみましたが、同様の現象が発生しました。
う~ん、BASICインタプリタのバグか?

雰囲気的に「データ転送時のデータ化け」っぽく、
調査していくと、VFDふぁんさんが公開しているサンプルソースのコメントに
ヒントがありました。

どうも、輝度設定(VBRIGHTコマンド)に影響するようです。
輝度を最大輝度の設定(VBRIGHT 255)にすると正常に表示出来ました。

VFDの輝度はディスプレイイネーブル(EN)をPWMを使ってオン・オフ(表示のオンオフ)して
調整しているのですが、これがスイッチングノイズを発生させて影響を及ぼすようです。

VFDの供給元のノリタケの技術サポート公開資料の
「アクティブマトリクス型CL-VFD アプリケーションノート - インターフェースインターフェースについて」

  スイッチングノイズによる誤動作(データ誤取込)を防止するため、
  データ書き込み中はENをH→L、あるいはL→Hに変えないでください。

との記載がありました。

ということで、データ転送中は輝度設定を255(最大輝度)にしなければならないことが
分かりました。利用の際の制約事項ですね。以後気を付けることにします。


問題解決後の実際の動作の様子




プログラムの自動起動の設定

利用の都度、プログラムをRUNコマンドで実行させるのはちょっと面倒です。
電源ON後、時刻表示プログラムをロードして実行するようにしたいですね。

豊四季Tiny BASIC拡張版には保存したプログラムを電源ON時に自動起動する機能があります。
デフォルトでは、自動起動判定用ピンD7HIGHの場合、内部EEPROMに保存されているプログラムを実行します。

RTCモジュール端子のD2RTCモジュールSQW(割り込み通知用の入力)用ですが、
この信号はアクティブLOWなので、RTCモジュールを接続した状態で起動すると
D2は常にHIGHとなります。これは利用出来ますね。

D2を、豊四季Tiny BASIC拡張版の自動起動判定用ピンに利用し、
RTCモジュールが接続されていれば、電源ON時はD2HIGHなので自動起動出来ます。

そこで、スケッチのttconfig.hAutoPinの設定を7から2に変更して書き込みます。

08

書き込み後、現在時刻表示プログラムをコピペしてSAVEコマンドで保存します。
VBRIGHT 255の修正は忘れずに)

09_2

ダイソーの300円 モバイルバッテリーをつなげて動かしてみました。

06

保存してプログラムが自動起動して、時刻を表示してくれました。
いい感じで動いてくれました。
単体で動作出来るのは良いですね。

07

折角ここまで来たので、何か実用的なものを作ってみましょう。
次に、I2C接続の湿度・温度センサーもつなげて時刻・湿度・温度を表示出来るように
したいと思います。


2018年8月 5日 (日)

Arduino STM32用のTV出力ライブラリを更新しました

Arduino STM32用のTV出力ライブラリを更新しました。

01

更新したライブラリ
  ・Arduino STM32 TVoutライブラリ
   https://github.com/Tamakichi/ArduinoSTM32_TVout

   修正内容
     ・横解像度448ドット指定時、ビット・バンディングを使ったドット描画位置がずれる
       不具合の対応を行いました。
       これによりdraw系の関数の描画不具合を解消しました。

      ・draw_rect()、draw_circle()の塗りつぶし指定時に塗りつぶし正しく行えない不具合
       の対応を行いました。

      ・adjust()関数に映像の横表示開始位置補正、縦表示開始位置補正を行うための
       引数を追加し、映像表示位置の調整を行えるようにしました。

  ・Arduino STM32 NTSCビデオ出力ラブラリ
   https://github.com/Tamakichi/ArduinoSTM32_TNTSC

   修正内容
      ・adjust()関数に映像の横表示開始位置補正、縦表示開始位置補正を行うための
       引数を追加し、映像位置の調整を行えるようにしました。

   ※ NTSCビデオ出力ラブラリは、TVoutライブラリの下位レイアのライブラリです。
       NTSCビデオ出力のみを行います。
       TVoutライブラリは、描画等のAPIを提供するライブラリです。

   
従来は利用するモニターによっては、表示する映像が上や左に寄り過ぎて欠けたり
した場合、どうすることも出来なかったのですが、今回の修正で補正を行えるようにしました。

こんな感じで、右側が欠けてしまった場合、

02

関数 adjust(0,8,0) にて、映像を左にずらすことが出来ます。

03

さて、Arduino STM32 TVoutライブラリは、ArduinoのTVoutの描画処理を
ベースにしているのですが、オリジナル版に不具合があり、意外とハマりました。

使い勝手も今一よろしく無いので、ライブラリを2つに分けていたり利点を生かし、
Adafruit_GFXを利用したバージョンを別途用意してそちらを利用しようと考えています。



今年もMaker Faire Tokyo 2018に行ってきました

今年もMaker Faire Tokyo 2018に行ってきました。

Dscn8518

前回と比べると、会場の規模が大きくなった感があります。
展示の全てを回るのに、かなり時間を要しました。
教育用やワークショップが増え、子供も楽しめる展示が目立ちました。

Dscn8522

かなり盛況で、開催開始から暫くは、入場制限が行われていて、
入場に難儀しそうなので、先に昼飯を食べてから巡回しました。

取りあえず、会場の雰囲気を写真でお伝えいたします。

Dscn8524

Dscn8550

Dscn8552

Dscn8558

Dscn8561

Dscn8564

Dscn8565

Dscn8579

Dscn8586

Dscn8547

今回も正当派のおもわずうなってしまうような展示物、
斜め上のアイデアで思わず「くすっ」と笑っていまう展示物など、てんこ盛りでした。

アイデアとエネルギーを充電し、満喫出来た楽しい一日でした。


« 2018年7月 | トップページ | 2018年9月 »