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

arduino

2025年1月23日 (木)

Arduino IDE+Arduino STM32環境で指定と異なるgccが使われてしまう

Windows 11のArduino IDE 1.8.21/2.3.4ともに発生した現象です。
ここしばらくはまってしまいました。その対策のメモです。
(あくまでも、個人的な調査で保証のないた対応方法です)

Arduino STM32(Roger氏版)では、ツールチェーンの定義があいまいで、
ARM系の別のボート用パッケージ(Arduuino Uno R4など) をインストールしたりすると、
STM32のスケッチのコンパイル時に別のツールチェーンにてコンパイルされてしまうようです。

20250123-181415

上の例ではSTM32環境では、arm-none-eabi-gcc 4.8.3-2014q1を利用していたのですが、
Arduino Uno R4のボード用のパッケージをインストールすると
arm-none-eabi-gcc-7-2017q4(gcc 7.2.1)が使われてしまっています。

調べると、Arduino STM32のボード関連の設定のhardware\Arduino_STM32\STM32F1\platform.txt
ツールチェーンの設定と思われる個所が、
 compiler.path={runtime.tools.arm-none-eabi-gcc.path}/bin/

となっていて、これだと指定があいまいのようです。
  C:\Users\user\AppData\Local\Arduino15\packages\arduino\tools\arm-none-eabi-gcc\
ある複数のツールチェーン環境がある場合(下の画像)には、
20250123-182340

別のツールチェーンが選択されてしまうようです。
arm-none-eabi-gcc フォルダにツールチェーン環境が複数あると、フォルダ名の降順で選択されるのかな?
試しに、7-2017q4フォルダを一時的にゴミ箱に移動してコンパイルしたところ、
4.8.3-2014q1 の方を利用してくれました。

対策として、hardware\Arduino_STM32\STM32F1\platform.txt の compiler.path
 compiler.path={runtime.tools.arm-none-eabi-gcc-4.8.3-2014q1.path}/bin/

とき修正することで、4.8.3-2014q1 の方を利用してくれました。
platform.txtの修正部分(抜粋)

      ・・・・・
# compiler variables
# ----------------------
#compiler.path={runtime.tools.arm-none-eabi-gcc.path}/bin/
compiler.path={runtime.tools.arm-none-eabi-gcc-4.8.3-2014q1.path}/bin/
compiler.c.cmd=arm-none-eabi-gcc
      ・・・・・

 

 






ちなみにArduino Uno R4の場合、
\hardware\renesas_uno\1.3.2\boards.txt にツールチェーンの設定がしてあるようで、

      ・・・・・
minima.name=Arduino UNO R4 Minima
minima.build.core=arduino
minima.build.crossprefix=arm-none-eabi-
minima.build.compiler_path={runtime.tools.arm-none-eabi-gcc-7-2017q4.path}/bin/
      ・・・・・

 

 





となっていて、曖昧なく設定されているようです。
Arduino_Core_STM32の方も見てみましたが、曖昧なく設定されていました。

ArduinoのSTM32環境は、Roger氏版のメンテナンスがいまいちになってきており、
そろそろCore版の方に切り替えた方が良さそうですね。

2025年1月19日 (日)

Zorin OSでArduino Uno互換機(CH340)が認識しない

開発環境として「Linux環境」もほしいと思い、使っていなかったパソコンにZorin OSをインストールしました。

Screenshot-from-20250119-075839

使い勝手は、Office関連が使えない以外、Windowsと遜色ない感じですね〜

Arduino関連の環境を整備で、
純正のArduino UNOボードへのスケッチ書き込みは問題なかったのですが、
シリアルIFにCH340を使っている互換ボードが認識してくれません。

色と調べて、下記のサイトの記事を参考にして解決することが出来ました。情報公開に感謝(_ _)
ServerCan.Net  -  Ubuntu 22.04でCH340 USBシリアルコンバータが使えない

Screenshot-from-20250119-074400

しばらくは、Zorin OS上にて環境整備を行っていきます。

 

2025年1月12日 (日)

Arduino IDE 2.3.4でArduino STM32を利用する

Arduino IDE 2.3.4の環境に Arduino STM32(rogerclarkmelbourne/Arduino_STM32) を導入して
スケッチをコンパイルして書き込もうとすると書き込み時にエラーが発生して書き込みできませんでした(>_<)

Error

エラーメッセージは次のような感じです。

maple_loader v0.1
Resetting to bootloader via DTR pulse
#
# A fatal error has been detected by the Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x000000007110b5db, pid=11628, tid=15548
#
# JRE version: OpenJDK Runtime Environment Corretto-21.0.5.11.1 (21.0.5+11) (build 21.0.5+11-LTS)
# Java VM: OpenJDK 64-Bit Server VM Corretto-21.0.5.11.1 (21.0.5+11-LTS, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, windows-amd64)
# Problematic frame:
# C [jSSC-2.8_x86_64.dll+0xb5db]
#
# No core dump will be written. Minidumps are not enabled by default on client versions of Windows
#
# An error report file with more information is saved as:
# C:\home\Arduino\hardware\Arduino_STM32\tools\win\hs_err_pid11628.log
#
# If you would like to submit a bug report, please visit:
# https://github.com/corretto/corretto-21/issues/
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#

原因を調べると、Arduino STM32に付属しているJavaのWindows環境用シリアル通信モジュールjssc.jar が最新版のjavaに対して、
古すぎて動作しないようです。

Jssc

確認すると11年前のライブラリです(-_-;)

下記のサイトからjsscを入手して、差し替えを行ったところ書き込めるようになりました(*´ω`*)
java-native/jssc https://github.com/java-native/jssc/releases

jssc-2.9.6.jar をダウンロードして、\hardware\Arduino_STM32\tools\win\lib\jssc.jar をjssc-2.9.6.jar に置き換えると
問題なく書き込み出来ました。

20250112-153216

(追記)
Arduino IDE 1.8.X系はで、IDEにjavaが添付されているのでjavaのインストールは不要なのですが、
Arduino IDE 2.X系は添付されていないため、別途Javaのインストールが必要です。

今回の利用では、Open Java Development Kit (OpenJDK)であるAmazon Corretto 21を使っています。
Corretto 8だと、書き込みエラーを起こすことがあったのですが、Corretto 21だと安定しているようです。




2024年12月28日 (土)

Arduino用 SKK日本語変換ライブラリの開発 その1

以前、Micro Pytyhon用の SKK日本語変換ライブラリpyskk を作成したのですが、
Arduino Uno向けに移植してみました。
やっとそこそこ動作するプロトタイプ版が完成しました(*´ω`*)

UTF-8文字列処理、Pythonでは言語レベルでサポートしているので楽ちんでしたが、
C++だと、かなり面倒臭くて、移植に意外と手こずりました。
メモリー容量も制約もシビアで、性能を犠牲にしての実装となりました。

とりあえず、サンプルスケッチではシリアル通信にて対話的にローマ字入力して、
Arduino側にてローマ字=>ひらがな変換、漢字変換を行うことが出来ました。
20241228-160345

漢字変換辞書は、SDカード上に配置しています。
用途は微妙ですが、Tiny BASIC単体での漢字入力が出来るようなったら良いなあと思います。
次のステップとしては、PS/2キーボードでスタンドアロンでの漢字入力と表示をトライしていと思います。

サンプルスケッチ

全ソースはこちら
・arduino_skk
 https://github.com/Tamakichi/arduino_skk

2024年9月15日 (日)

NeoPixel(WS2812B)の制御 その5

NeoPixel(WS2812B)の制御 その4」に関して質問がありました。
流通しているNeoPixelマトリックの配列には様々なタイプがあるようです。

そこで、前回のスケッチをもう少し見直して、 XYtoNo()関数の修正でレイアウトの差異を吸収できるよう、修正しました。
スクロール処理を行うNeoScroll()関数を、処理速度を少々犠牲にしてXYtoNo()を使って処理を行うようにしました。
試した感じでは、処理速度的には問題ないようです。

修正版 

■ 修正の補足
 NeoScroll()関数は、縦x横のドットデータを左に1ドットずらす処理を行っています。
 従来版は速度重視のためmemmove()、memset()を使っていたのですが縦並びのLEDに対応出来ません。
 そこで XYtoNo()を使てのデータ操作に修正しました。

 これにより、XYtoNo()関数にてパネルのレイアウトに対応するだけで差異を吸収できます。

 文字の縦の表示開始位置は、次の定数を変更することで調整出来ます。
  #define Y_OFFSET 0 // フォントの縦先頭位置  

ここで、「NeoPixel(WS2812B)の制御 その4」でZuhiさんがご質問されました、
横32ドットx縦8ドットで「パネルの左上起点に下上になっている」パネルについて対応してみましょう。
256個のLEDが数珠つなぎ(0~255)になっているのですが、並びは次の感じだと思われます。
左上が起点で↓向きでスタート、8個目で↑向きに折り返しで256個がつながっています。
Photo_20240914203101
上記において、任意の(x,y)の位置のLEDを操作するためには、そのLEDの先頭からの番号が必要となります。
計算式としては、次のようになります。

xが偶数の場合:
 no = x * 8 + y
xが偶数の場合:
 no = x * 8 -y + 8 -1

定数を踏まえると..
xが偶数の場合:
 no = x * PXCEL_H + y
xが偶数の場合:
 no = x * PXCEL_H -y + PXCEL_H - 1
となります。

修正版のスケッチをZuhiさんのパネルに対応する場合、以下の修正でいけると思います。
 ①定数の変更

  #define PXCEL_W 32 // 横ピクセル数
  #define PXCEL_H 8  // 縦ピクセル数


 ②XYtoNo()の変更
  noを参考にして修正すると、関数内のreturn文を下記のように修正します

  return x&1 ? x*PXCEL_H-y+PXCEL_H-1: x*PXCEL_H+y; // 左上起点下上方向並び


 (※修正版にコメント化して記述しています)

横32ドットx縦8ドットパネルは所有していないので、動作確認出来ないのですが、たぶん大丈夫でしょう(;^_^
(うまくいかない場合、連絡ください)

2024年3月21日 (木)

Arduino UNO R4 WiFiに関するメモ

遅ればせながらArduino UNO R4 WiFiの調査(-_-;) .. 随時追記します

文献調査
Arduino UNO R4 WiFi
 https://docs.arduino.cc/hardware/uno-r4-wifi/

 まずは、本家のこの資料の参照がスタート地点でしょう..
 ここを起点に、色々と調べることが出来ます

Arduino UNO R4 WiFi - Product Reference Manual 
 https://docs.arduino.cc/resources/datasheets/ABX00087-datasheet.pdf

 「このボードは何ぞや?」を知るために①のリンクからこの最初にこのPDFを読む..

Arduino UNO R4 WiFi Cheat Sheet
 https://docs.arduino.cc/tutorials/uno-r4-wifi/cheat-sheet/
 A reference to all technical features on this board, with pointers to additional documents.

 この資料が一番全体の機能や使いざっと把握できそうです

Arduino Renesas fsp Boards(ArduinoCore-renesas)
 https://github.com/arduino/ArduinoCore-renesas

 Arduino UNO R4 WiFiのCoreおよびライブラリのソースを見るにはここ
 さらにボード依存しない抽象層のAPIは以下
   ArduinoCore-API 
  https://github.com/arduino/ArduinoCore-API

Renesas  Arm® Cortex-M MCU RA4M1
 RA4M1 48MHz Arm® Cortex®-M4とLCDコントローラおよびHMI用静電容量式タッチセンサ搭載 32 ビットマイクロコントローラ
 
 搭載マイコン RAM1の機能知るための公式サイト掲載情報、とりあえず下のマニュアルが日本語なので役立ちそう
  Renesas RA4M1グループ ユーザーズマニュアル ハードウェア編

トランジスタ技術 2024年 1月号 新生!Arduino Uno R4 本格派ルネサス版
 とりあえず購入して積んでいました。今更ながら読んでみます..

・・・

Renesas RA4M1のブロック図
20240322-103131
  「Renesas RA4M1グループ ユーザーズマニュアル ハードウェア編」- 1. 概要 1.2 ブロック図より抜粋


・・・


用語関連
FSP(Flexible Software Package)
 ルネサスのArmマイコンRAファミリを用いた組込みシステム設計向けに、ユーザフレンドリでスケーラブル、
 かつ高品質なソフトウェアを提供するために設計されたソフトウェアパッケージ。
 

Arduino用 美咲フォントライブラリを更新しました

「Arduino用 美咲フォントライブラリ 教育漢字・内部フラッシュメモリ乗せ版」を更新しました。
ここ最近の調査をライブラリに反映しました。
 
・Arduino-misakiUTF16 Arduino用 美咲フォントライブラリ 教育漢字・内部フラッシュメモリ乗せ版
 https://github.com/Tamakichi/Arduino-misakiUTF16

おもな変更点
・ライブラリ形式(library format)をrev. 2.2に変更(以前はrev 1.x)
・美咲フォントの最新版 2021-05-05(美咲ゴシック第2)利用に変更

 (以前は2012-06-03 正式公開初版を利用)
・isZenkaku()の追加
 ⇒ 半角(4ドット)・全角(8ドット)幅判定により半角文字を詰めて表示可能となりました
・いくつかの不具合対応(半角・全角変換ミスなど)


せっかくの機会なので、新Arduino Uno(Arduino Uno R4 WiFi)に搭載されているLEDマトリックスで、デモってみました。

Arduino Uno R4 WiFi搭載 LEDマトリックスで美咲フォント表示
Arduino_uno_r4_led_matrix

動いている様子(Youtube ※BGMあり)


表示器がボート搭載だと、お手軽に利用できて良いですね~

プログラムソース


このサンプルプログラムは、ライブラリのサンプルプログラムとして添付しました。

参考にした文献
・Using the Arduino UNO R4 WiFi LED Matrix
 https://docs.arduino.cc/tutorials/uno-r4-wifi/led-matrix/

 公式サイトのLEDドットマトリックスを利用するための解説です。
 利用するライブラリ及び、LEDドットマトリックスのフレームバッファの構造について説明されています。

今回作成したサンプルプログラムでは、フレームバッファにデータをセットして表示しています(setAt()関数)。
フレームバッファの構造は、横12ドットx縦8ドットの計96ドット分の96ビットをlong整数 32ビットx3個 に単純に詰めている感じです。
フレームバッファを直接いじれば、なんでも表示できそうですね

フレームバッファの左スクロールを実装しているscroll()関数、
汎用性のない、12x8ドット限定の力業実装で少々分かりにくいコードですが、
32ビットx3の配列をビットシフトでビットを左にずらしているのですが、その際に
 ①ビットシフト時の最上位ビットの欠落対策
 ②0~7行の右端ビットクリア、
 ③ワードをまたぐ行の左端ビットの処理
を行って補正してます。
ちょっとエレガントでないのでもう少し良い方法があるかもしれません

新Arduino Uno R4ボード、搭載マイコンがRenesas RA4M1(Arm Cortex-M4)に変更となりました。
このボードも発売直後に購入したものの、放置していました。やっと使い始めた感じです。
まだまだ、使いこなせてないので、ドキュメントをあさりつつ遊んで行きたいと思います。

こんな感じで、ライブラリ更新と少々の動作確認の上、公開いたしました。

2024年3月18日 (月)

Arduino用ライブラリの自作用のメモ

Arduino用の美咲フォントライブラリの更新に伴い、Arduino用ライブラリ作成の再確認メモです。
(久しぶりのライブラリ作成・修正ですっかり忘れてました)

参考文献
・Arduino DOCS - Home/Learn/ Writing a Library for Arduino
 https://docs.arduino.cc/learn/contributions/arduino-creating-library-guide/
 ライブラリ作成の入門編的な資料です。

・Library specification
 https://arduino.github.io/arduino-cli/0.36/library-specification/
 ライブラリ作成に関する仕様です。

・KEI SAKAKI's PAGE. - Arduino開発環境用の「ライブラリ」を作成してみる
 https://kei-sakaki.jp/2015/01/07/making-library-for-arduino-development-environment/
 Arduino IDEのバージョン的に少々古い情報となりますが、大変参考になりました(情報公開に感謝♪

まずは、ディレクトリ構成に規約があります。
■ ライブラリのディレクトリ構成
librarys\
   ライブラリ格納ディレクトリ\
    keywords.txt
    library.properties
    src\
    ライブラリ用ヘッダーファイル
    ライブラリ用ソースファイル
   examples\
    サンプルプログラム\
      サンプルプログラムソースファイル
        ・・・
   extras\ (オプション)
     資料など

例:美咲フォントライブラリの例


librarys\
└─ misakiUTF16\
    │  keywords.txt
    │  library.properties
    ├─ examples\
    │  ├─ aitendo_ht16k33
    │  │      aitendo_ht16k33.ino
    │  ├─ banner\
    │  │      banner.ino
    │  └─ misaki_tvout\
    │          misaki_tvout.ino
    └─ src\
      misakiUTF16.cpp
      misakiUTF16.h
      misakiUTF16FontData.h


keywords.txt の定義


name=misakiUTF16
version=1.2.0
author=Tamakichi
maintainer=Tamakichi
email=tamacat2014@gmail.com
sentence=Japanese font data and driver
paragraph=8x8dots Misaki font driver for Arduino Uno
category=Other
url=https://github.com/Tamakichi/Arduino-misakiUTF16
architectures=*

■library.propertiesの定義

#######################################
# Syntax Coloring Map For misakiUTF16
#######################################

#######################################
# Datatypes (KEYWORD1)
#######################################

#######################################
# Methods and Functions (KEYWORD2)
#######################################
misakiUTF16 KEYWORD2
findcode KEYWORD2
getFontDataByUTF16 KEYWORD2
getFontData KEYWORD2
utf16_HantoZen KEYWORD2
hkana2kana KEYWORD2
HantoZen KEYWORD2
charUFT8toUTF16 KEYWORD2
Utf8ToUtf16 KEYWORD2
getFontTableAddress KEYWORD2
isZenkaku KEYWORD2
LatenS2Zen KEYWORD2
isBasicLatin KEYWORD2
isLatinSupple KEYWORD2

#######################################
# Constants (LITERAL1)
#######################################


■開発者用フラグファイル
ライブラリの開発中、Arduino IDEにてlibrarys\に配置いているサンプルプログラムの上書きは禁止されているのですが、
ライブラリのルートフォルダに.developmentを配置すると上書き可能となる。

これについて検証してみましたが、Arduino IDEでサンプルプログラムを直接開いた分には、この設定無しに上書きできます。
Arduino IDEの「スケッチの例」にてサンプルプログラムを開いた場合は、.developmentの有無に関係なく、上書き出来ません。
う~ん、今一意味不明..


・・・

しかし、ココログ.. htmlのタグ記述とかできるのに、いうこと聞いてくれなくて糞過ぎ..(>_<)
過去の記事は修正するとレイアウトが崩れるので編集不能だし.. 何とかならんですかね..

2020年11月21日 (土)

豊四季Tiny Basic for micro:bit のマニュアルを更新しました

micro:bit(v1.5)で動作する「豊四季Tiny Basic for micro:bit」のマニュアルを更新しました。
今回の更新は、レイアウト不具合の修正のみです。

公開サイト
・豊四季Tiny Basic for micro:bit V0.08
   https://github.com/Tamakichi/ttbasic_microbit

micro:bitといえば、V2.0がリリースされ、日本でもそろそろ販売開始です。
スイッチサイエンスさんのmicro:bitの商品ページでも、バージョンアップによる商品切り替えを掲示しています。
今、micro:bitを購入する場合は、バージョンの注意が必要ですね。

参考情報
・micro:bit のバージョンアップについて(仕様変更点等)
  https://switch-education.com/2020/10/13/

V2.0では、スピーカーとマイクが付いた他、
フラッシュメモリが256kbから512kb、
SRAMが16kbから128kbに大幅に増えたようです。

豊四季Tiny Basicの実装においては、フラッシュメモリ、SRAMの容量不足で
無線通信に未対応でしたが、V2では乗せられるかもしれません。



2020年7月27日 (月)

豊四季タイニーBASIC for Arduino 機能拡張版 V0.08の更新

Arduino(AVR)版用でMega2560でのフルスクリーンエディタ対応中のV0.08を更新しました。

豊四季タイニーBASIC for Arduino機能拡張版 V0.08
https://github.com/Tamakichi/ttbasic_MW25616L/tree/support_fulledit

01_20200727074901

Arduino Uno環境でコンパイルエラーが発生する不具合を修正しました。
開発中のため、ブランチです。完成次第、本流にマージします。




より以前の記事一覧