# はじめに
最近teensy4.1というマイコンに出会ったので,teensy4.1の開発のための環境構築について書いてみたいと思います.
teensy 4.1とは
ARM Cortex-M7の高機能・低価格マイコンです.スペックを一部抜粋
- クロック周波数600MHz
- Eathernet 10/100 Mbit
- USB device 480 Mbit/sec & USB host 480 Mbit/sec
- 55 digital input/output pins, 35 PWM output pins
- 18 analog input pins
- 8 serial, 3 SPI, 3 I2C ports
- etc ...
詳しいスペックは公式サイトを参照して下さい.
https://www.pjrc.com/store/teensy41.html
注目すべきはその速度,600MHz.Arduino UNOは16MHzですから,断然早いですね.またESP32よりも120MHz早いです.ただ,ESP32は2コアありますから,処理内容次第でTeensyよりも早いでしょう.
35のPWMピンと18のアナログピンがあり(重複),センサーもサーボモータもブイブイ言わせれます.
価格も4千円でスイッチサイエンスなどで購入できるお手ごろさです.
https://www.switch-science.com/catalog/6377/
環境構築
TeensyはArduino IDEで書き込みができます.全てのマイコンはArduinoで始まりArduinoで終わるんですね(謎).nrf52840もarduino-cli使ってファーム書いてる今日この頃..な筆者です(書き込みはUF2ブート).
また,PlatformIOでも書き込みが出来ますので,こちらにも取り組みました.
僕はノートPCにUbuntu20.04を使っているので本記事はLinuxを対象とします.とはいえ,基本的に設定方法は公式を参照すれば大丈夫だと思います.
Arduino IDEでの設定(Linux)
Arduinoのインストール
次の記事を参考にしました.
https://qiita.com/ma2shita/items/927aa9e55962b4137518
Teensyduinoのインストール
Linuxはruleファイルを置いておく必要があります.公式サイトから「Other Files」の項目にある「Linux udev rules」をダウンロードします.自分は適当にクリックしたらブラウザに表示されてしまったので,全選択してコピーし,nanoで開いてShift+Ctr+Vで貼り付け
て保存しました↓
$ cd /etc/udev/rules.d/
$ sudo nano 00-teensy.rules
次に「Teensyduino Files」をダウンロードしてきます.僕はLinux Installer (X86 64 bit)を選びました.
ダウンロードされたディレクトリに移動し,下記コマンドを入力してインストーラーを起動します.
$ chmod 755 TeensyduinoInstall.linux64
$ ./TeensyduinoInstall.linux64
「Next」を押すと,udev ruluesがあるか判断され,所定の場所にrulesファイルがあれば問題なく顔文字で笑ってくれます
ここから「Next」を押すとArduinoをインストールしているディレクトリを選択する必要があるのですが,ここでつまずきました.
なぜなら僕はArduinoを~/.local/shareに置いてあり,TeensyduinoのGUIでは隠しファイルとなって選択が出来ませんでした.どうすりゃええねん,とググったところ,どうやらコマンドオプションがあるようで,--dirでディレクトリを指定できました.GUIはキャンセルし,下記コマンドをターミナルに打つことで無事設定できました.めでたしめでたし.
これでteensyduinoの設定は終わりです.
$ ./TeensyduinoInstall.linux64 --dir=/home/Nobu/.local/share/arduino-1.8.15
PlatformIOでの設定
Arduino IDEは補完機能がないので,人間には優しくありません(言い過ぎたごめん).
補完機能がついているVSCodeで書きたいです.
VSCodeでマイコンのファームを書く場合,PlatformIOが便利です.PlatformIOでTeensy4.1のファームを書き込んでみましょう.
とは言ったものの,実は特にやることはなく,プロジェクトを作成する際にBoadをTeensy4.1で選べば良いだけです.なお,Teensyduinoはインストールしておく必要があり,Arduinoの設定方法で問題ありません.特にPlatformIOのディレクトリを選ぶ必要はなさそうです.
ただ,ここではまりポイントが一つありました.
普通にアップロードを押すとTeensyduinoのGUIが立ち上がり書き込みを行うのですが,なぜかうまく行かず,下記エラーがでます.
uploading .pio/build/teensy41/firmware.hex
Opening Teensy Loader...
Teensy Loader could not find the file firmware
quitscons: *** [upload] Error 1
どうやらTeensy Loaderがファームウェアのファイルを見つけれないようです.Pathが通ってないのか,なんなのか
ただ,調べてみるとCLIでのアップロードもあるようで,
https://docs.platformio.org/en/latest/boards/teensy/teensy40.html
結局,プロジェクトのplatformio.iniファイルでupload_protocolをCLIにすると無事にアップロードができました.
[env:teensy41]
platform = teensy
board = teensy41
framework = arduino
upload_protocol = teensy-cli
この時の動作確認はビルドインのオレンジLEDを点滅させるプログラムにしました.参考までに
#include <Arduino.h>
void setup() {
// put your setup code here, to run once:
pinMode(13, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13,LOW);
delay(1000);
}
micro-rosを入れて動作させることも行ないましたが,長くなるのでまた別の記事に書きます.