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

arduino

2020年5月13日 (水)

SPI接続フラッシュメモリモジュールを入手しました

Aliexpressにて、SPI 接続で利用するフラッシュメモリ W25Q64を見つけ、入手しました。
容量的には64Mビット(8Mバイト)です。3.3Vでの利用します。

 W25Q64 64Mbit 8mbyte Flash Storage Module SPI Interface
01_20200513113001




DIP版は以前から、Arduino用の漢字フォントの格納用に利用していたのですが、

W25q64

ブレッドボード上で使う場合、こんな感じで配線が必要なんですよね。

Demo

今回入手したも―ジュールを使うこと、改善できると思います。


届いた製品


Dscn2645

ちゃんと、梱包されていていい感じです。

Dscn2646

基板に乗っているICは、W25Q64FVでした。使ったことがあるICで、これなら問題なしです。
基板やはんだ付け具合は問題なさそうです。


動作確認

早速、はんだ付けして、3.3V対応の Arduino Uno互換機で動作しました。

Dscn2693

この 3.3V対応のArduino Uno、なかなか重宝しています。

Dscn2694

モジュールには通電が確認出来るLEDが乗っています。

動作確認には、自作のW25Q64ライブラリのサンプルプログラムを利用しました。

  ■ 利用したライブラリ
     Arduino用 SPI接続フラッシュメモリW25Q64ライブラリ
     https://github.com/Tamakichi/Arduino-W25Q64

   03_20200513115801    
   ライブラリにUnique ID取得の際、バイト長にミスがることをあり、修正しました。
  (nopnop2002さん、不具合のご指摘、ありがとうございました)

スケッチを書き込んで、サンプルプログラムにて
フラッシュメモリの種別、ユニークIDの取得、データの読み書き等を行ってみました。

02_20200513120101      
 
正常に認識し、問題無く動作しているようです。

念のため、STM32マイコンでも試して見ましたが、問題なく動作しました。

Dscn2696

3.3V利用には注意が必要ですが、お手軽に大容量(8Mバイト)のメモリが利用出来るようになりました。


2020年2月20日 (木)

豊四季タイニーBASIC for Arduino 機能拡張版 フルスクリーンエディタ対応

継続的に開発を進めている「豊四季タイニーBASIC for Arduino機能拡張版」、
Arduino Mega2560にも対応しているのですが、SRAMが5kバイト無駄に余っています。

SRAMを有効に使おう! ということで、Mega2560限定でフルスクリーンエディタ対応してみました。

まだまだテスト中ですが、とりあえず動いています。
画面操作は「豊四季タイニーBASIC Arduino STM32」と同等です。

01_20200220201001

起動画面(クリックすると拡大表示します)
02_20200220201001
 バージョンは1つ上がってV0.08としています。

内部EEPROMに保存していたプログラムをロードして表示
03_20200220201001

Arduino Mega2560では、プログラム領域が2Kバイトです。
内部EEPROMには、2kバイトのプログラムが2本保存することが出来ます。

LISTコマンドでプログラムを出力し、
フルスクリーンでカーソル移動にてテキスト編集出来ます。
全角文字(シフトJIS)にも対応しています。

04_20200220201001

サンプルとして、組み込んでいる美咲フォントのデータを参照して、
「あ」を表示してみました。

豊四季タイニーBASIC Arduino STM32」版で作成したフルスクリーンエディタ部分のクラスライブラリを
そのまま組み込んだので、意外と楽に実装出来ました。

現時点では、ブランチ版として開発を進めています。
フルスクリーンエディタ対応の他に、Mega2560のもう一本のシリアルポートも使えるようにしたいと思います。

ブランチ版として開発を進めています。下記ブランチ版リンクページから参照&ダウンロード可能です。
https://github.com/Tamakichi/ttbasic_MW25616L/tree/support_fulledit

00_20200220201001

Arduino Mega2560ではまだまだメモリの余裕がありそうです。
豊四季タイニーBASIC Arduino STM32」でやっていたOLED画面+PS/2キーボードも実装出来るかも..
Neopixelの16x16ドットマトリックスにも対応したい..

2020年2月14日 (金)

Arduino IDE 1.8.12が公開されました

Arduino 1.8.12が公開されたため、早速最新版をインストールしました。

・ARDUINO 1.8.12
   https://www.arduino.cc/en/Main/Software

01_20200214172601
  リリースノートを見る限り、特に大きな変更はなさそうです。
 (ただし、Java環境をOracle版からOpenJDK への切り替えを試みているようで、それが難航しているようです)

私の開発環境では、Windows ストア版とzip版の2つの環境を併用しています。

まずは、Windowsストア版のインストール

04_20200214173301
旧版をインストール済みでも、開くとダウンロードを開始して更新してくれます。
インストール後、起動すると1.8.12になりました(タイトルバーにWindows Storeの記載があります)

02_20200214173401

次にzip版のインストール

ダウンロードして解凍して、起動すると1.8.12になりました。
03_20200214173601

とりあえず、最新版のインストール完了です。

2020年2月 4日 (火)

M5Stackで日本語表示(2)

M5Stackでの日本語表示の続きです。
前回とは別の自作ライブラリをM5Stack対応の修正を行いました。

利用ライブラリ
 ・Arduino-KanjiFont-Library-SD
    Arduino用のマルチサイズ漢字フォントを利用するためのライブラリ(SDカード版)
    https://github.com/Tamakichi/Arduino-KanjiFont-Library-SD

ライブラリを使って、「吾輩は猫である」の文書を表示してみました。

    01_20200204162501 

動いている様子
    

8ドットから24ドットのフォントサイズを変えて繰り返し表示しています。

動画を見れば分かると思いますが、表示はあまり速くないです。
逐次、SDカードから読んでいるためかと思われます。
まあ、とりあえずは良しとします。

スケッチ


表示の高速化のため、M5Stackで利用されている液晶パネルILI9341Windows機能を利用してフォントの表示を行っています。
drawPixel()を使うよりもコマンド送信数が少なくて済むので多少は速くなると思います。
ただし、SDカードアクセスが遅いためあまり効果としては現れませんね。

ちょっとハマった..

今回はテキストをスクロールさせるつもりでscrollUp()関数を作成したのですが、
期待通りに動きませんでした。
プログラム的には、指定座標のピクセル色を読んで、1文字分上に表示でスクロールさせようとしたのですが..

「何故だろう..?」と調べると、
なんとMISO(LCDからデータを読む)が使われていません。

02_20200204164501
(回路図は公式サイトより入手し引用)

これでは、物理的にデータの取得は出来ないですね。
ですので用意されている readPixel()readRect() は正常に動きません。
ためしてみると、ピクセルの色は常に 65535の値が返されます。

もう一点、ウィンドウ設定でsetAddrWindow()を使っているのですが、
setWindow()だと正しく表示出来ませんでした。
setAddrWindow()は、内部的にsetWindow()を読んでいるのですが、
SPIの設定を行ってからsetWindow()が呼び出されています。
SPIがSDカードのアクセスと共用のため、SPIの設定が必要だったのだと思われます。

とりあえずは、ウィンドウ設定の関数が用意されているのが分かったのは収穫でした。

追記
  MOSIを双方向にてデータを読む方法があるようです。

  関連情報
   ・M5Stackで画面キャプチャーを取得する
      https://qiita.com/fukuebiz/items/8aff6cad2f6048f02f12

   ・Bodmer/TFT_eSPI
      Arduino and PlatformIO IDE compatible TFT library optimised for the STM32,
      ESP8266 and ESP32 that supports different driver chips
      https://github.com/Bodmer/TFT_eSPI

  M5Stackのライブラリ=v0.2.9)のTFT_eSPIが古いため、現時点で readPixel()readRect() が使えないようです。
  まあ、いずれ、TFT_eSPIの最新版を取り込んで利用可能になると思います。

2020年1月26日 (日)

M5StackでMML単音演奏

以前 Arduino用に作成したMML文演奏ライブラリをM5Stackにて利用してみました。
M5Stackにて、単音演奏をやってみました。
数日前にやった、「M5Stackのビープ音、Tone音の爆音対策」を適用して音量が出来るようにもしました。

01_20200126102101

■ ライブラリ
   MML文演奏ライブラリ  MML_Play
   https://github.com/Tamakichi/MML_Play

   ライブラリ本体は、ESP32ではコンパイルエラーが発生したため修正&更新しました。
   ついでに、M5Stack用のサンプルスケッチ(本記事のスケッチ)を追加しました。

動いている様子
  

スケッチ(ライブラリに添付)

演奏操作は、
  ボタンAで演奏開始(または先頭から演奏しなおし)、
  ボタンBで演奏中断、
  ボタンCで中断した演奏を途中から再開
です。

音量は最低にしているため、小さめです。
音量を上げるには、MML文先頭のv1の値を1~9(爆音)の範囲で調整して下さい。

ノイズ等もなくとりあえずは、まともに演奏出来ているようです。
効果音的な何かには使えると思います。

2020年1月22日 (水)

M5Stackのビープ音、Tone音の爆音対策

M5Stackはスピーカーが搭載されており、
標準のAPIを使ってビープ音やTone音(周波数を指定して鳴らす)を簡単に鳴らすことが出来ます。
ただし、「爆音」です。
これには、ちょっと困りました。鳴らすとやかましいです。

ググってみると、多くの利用者が同様に困っているようです。
何とかならないかなぁ、と思い試行錯誤してみました。
結論としては、とりあえず、何とかなりました。

01_20200122220601

とりあえず、単音440Hz(ラ)の音を音量指定して鳴らしてみました。

サンプルスケッチ
音量指定できる新しいtone関数、toneEx()を作成しました。
音の大きさの制御は、デューティ比を操作で制御しています。

toneEx()の3番目の引数、volに0(無音)、1(最小) ~ 9(最大)の指定にて音量を指定することが出来ます。
サンプルスケッチでは、M5Stackの左ボタンで最小音、真ん中ボタンで3、左ボタンで5を指定して音を鳴らすことが出来ます。

耳で聞いた感じでは、いい感じで音量制御出来ています。
最小の1でも十分聞こえ、ちょうど良いかもしれません。

次の段階として、Arduino用に作成したMML演奏ライブラリを試してみます。

2020年1月18日 (土)

M5stackで日本語表示

Arduino Uno用に作成したフォントライブラリをM5Stackで試してみました。

ライブラリ
  ・Arduino用 美咲フォントライブラリ 教育漢字・内部フラッシュメモリ乗せ版
    https://github.com/Tamakichi/Arduino-misakiUTF16

とりあえず、LCDにライブラリ無修正で利用出来ました。
Dscn2468
ノーマルのサイズでは、文字が小さすぎて読めません。

3倍角にして表示してみました。
Dscn2477

まあ、8ドットフォントなのでこんなもんでしょう。

動いている様子


コントラストの関係で動画が綺麗に取れないため、背景色を青に変更しました。
8ドットフォントを1~4倍にして繰り返し表示しています。

スケッチ

スケッチは、OLED(SSD1306)で美咲フォントを使った漢字表示 のものを修正して作成しました。

フォント表示については、他の自作ライブラリの動作も検証したいと思います。



2020年1月 9日 (木)

NeoPixel(WS2812B)の制御 その4

ArduinoによるNeoPixel(WS2812B)の制御の続きです。質問があり、折角なので
以前作成した、8x8ドットマトリックスタイプのNeoPixelを制御するスケッチを汎用化(任意のサイズ対応)しました。
とりあえず手持ちの16x16ドットモジュールで試してみました。

動いている様子


利用したモジュールは、Aliexpressにて入手しまた。

1 pcs/lot DC5V 16x16 Pixel WS2812B LED Digital Flexible Individually addressable Panel light
04_20200109194301

このモジュールのNeoPixelの並びは次のようになっています。
05_20200109195701

接続
    Arduino:D11   -  NeoPixel:DIN
    Arduino:5V     -  NeoPixel:5V
    Arduino:GND  -  NeoPixel:GND

スケッチ


スケッチは、16x16ドットマトリックスに対応するように作成していますが、
下記の横ピクセル数、縦ピクセル数を変更することで、横8x縦8ドット、横32x縦8ドットにも対応出来ると思います。
  #define PXCEL_W  16    // 横ピクセル数
  #define PXCEL_H   16    // 縦ピクセル数

また、メッセージ表示の縦位置は NeoMsg()関数の最後の引数で指定出来ます。
スケッチは、Githubのgistにて公開しています。スケッチ表示の下部の帯のリンクから参照出来ます。
スケッチのコンパイルには、別途下記のライブラリが必要です。

   ライブラリ
   ・Arduino用 美咲フォントライブラリ 教育漢字・内部フラッシュメモリ乗せ版
     https://github.com/Tamakichi/Arduino-misakiUTF16

関連記事
 NeoPixel(WS2812B)の制御 その4(2020.01.09)  ・・・ 16x16マトリックスの制御(この記事です)  
 
NeoPixel(WS2812B)の制御 その3(2018.05.30)  ・・・ 8x8マトリックスの制御
 NeoPixel(WS2812B)の制御 その2(2018.05.22)   ・・・ SPIを使った制御
 NeoPixel(WS2812B)の制御(2018.05.20)            ・・・ GPIOを使った制御

2019年12月 5日 (木)

M5Stack始めました

M5Stackを購入しました。これからESP32関連もやっていきたいと思います。

Dscn2268

Dscn2269

Dscn2263

2019年10月29日 (火)

豊四季タイニーBASIC for Arduino機能拡張版 のマニュアル完成

「豊四季タイニーBASIC for Arduino機能拡張版 V0.07」のマニュアルがやっと完成しました。

01_20191029115601

マニュアル作成は非常に単調な作業で面白くないのですが、
しっかりと作っておかないと、1年後には全て忘却してしまいます。
全ては1年後の自分のためなのです。

  公開サイト  豊四季タイニーBASIC for Arduino機能拡張版 V0.07
  https://github.com/Tamakichi/ttbasic_MW25616L

これで、やっと電子工作の時間が取れます。


より以前の記事一覧