fc2ブログ

SAMD21G18にArduinoのブートローダを書き込む ~Seeeduino xiaoのパチもんを作る~

Arduinoの開発ボード使ってると、自分でICからボード作ってみたくなるよね。

Seeeduino xiaoのパチもん作ったので備忘録です。


①イントロダクション

==事の発端==

1.Seeeduino xiaoサイコー!チッチャカワイイ!

2.xiaoのwikiページに回路図あるやんけ!

3.Seeedのgithubにブートローダファイルあるやんけ!

4.IC買ってパチもん作ったろ!

========

今回はARMマイコン「SAMD21G18」を使ってxiaoのパチもんを作ってみます。

↓こんな感じになります。

パチもんxiao


必要なもの

1. 今回の目玉のARMマイコン「SAMD21G18」 →digikey購入先

2. J-linkデバッカ「j-link edu mini」 →digikey購入先

(注)nucleoのst-linkをj-link化させる方法がありますが、それではSTMマイコンでしか使えないようです。

これを機にj-link買っちゃいましょう。

3. SAMD21G18用の48TQFPブレイクアウト基板 digikey購入先

4. 32.768kHz水晶振動子 →digikey購入先

5. USBコネクタのメス(スケッチ書き込み&給電用)

6. 3.3vレギュレータ

7. 抵抗とコンデンサがいくつか(後述の回路図参照)


digikey購入先は今回自分が使ったものを載せてます。参考までに。

水晶振動子なんか周波数あってりゃ何でもいいと思います。


③ハード部分づくり

xiaoのwikiページの最後に回路図があるので、こちらを参考にブレッドボードにパーツを置いていきます。

https://wiki.seeedstudio.com/jp/Seeeduino-XIAO/

xiao回路図


とりあえず、マイコン部分・リセット部分・3.3V生成部分は回路図通りで大丈夫です。

xiao回路図2


USB_D+、USB_D-、GND、5Vはそれぞれ準備したUSBコネクタのメス(以下パチもん側USB)につなぎます。


j-linkは以下のようにマイコン部分につなぎます。

参考→https://www.embitek.co.jp/product/jlink-edu-mini.html

J-Link_9-pin_Cortex-M_Adapter.png

j-link  <ー> マイコン部分

VTref  <ー> 3.3V

GND   <ー> GND

SWDIO <ー> PA31_SWDIO

SWCLK <ー> PA30_SWCLK


ソフトウェアリセットがあるためResetには配線不要らしいです。


SWD通信って便利だなぁ(*´ω`*)


あとはLチカ用に26ピンにLEDつないでおくといいかも。


④J-linkのセットアップ

J-linkのドライバを持ってくるため、以下のパックをPCにインストールします。

各自のOSに合うものをダウンロードしてください。

J-Link Software and Documentation Pack

J-Link Software and Documentation Pack

⑤Atmel Studioのインストール

このソフトでSAMD21G18にブートローダを書き込んでいきます。

リンク先からダウンロードしてインストールしてください。

https://www.microchip.com/mplab/avr-support/atmel-studio-7

atmel studio1


インストール中、以下の画面では「SMART ARM MCU」を選択してください。

atmel studio2


J-linkにSAMD21G18を認識させる

j-linkデバッカとパチもん側USBをPCにつなぎ、Atmel Studioを起動します。

「Tools」→「Device Programming」を選択します。

atmel studio3


Tool:J-link

Device:ATSAMD21G18A

Interfase:SWD

上記のように選択し、Applyを選びます。

atmel studio4


その後、Device signatureのReadを選択します。

問題なければJ-linkでSAMD21G18が認識されます。atmel studio5png


SAMD21G18のフラッシュ消去&ヒューズチェック

左欄の「Memories」→「Erase now」で内部フラッシュを消去します。

atmel studio6


左欄の「Fuses」を選択して、特にエラーがなければOKらしいです。

atmel studio7


⑧ブートローダの書き込み

以下からxiaoのブートローダファイルをダウンロードしてください。

https://github.com/Seeed-Studio/ArduinoCore-samd/blob/master/bootloaders/XIAOM0/bootloader-XIAO_m0-v3.7.0-33-g90ff611-dirty.bin


Atmel Studioの「Memories」の「Flash」に、ダウンロードしたファイルを選択し、「Program」で書き込みます。

atmel studio8


エラーなく書き込みが終わったら、J-linkとパチもん側USBをPCから外します。

再度パチもん側USBをPCにつないで、Seeeduino xiaoと認識されれば完成\(^o^)/

J-linkはブレッドボートから外して大丈夫です(*^^*)

今後は純正xiaoと同じように使えるはずです。


終わり


参考記事

https://www.instructables.com/id/ATSAMD21g18-Bootloader-With-J-link-Debugger/

https://forum.seeedstudio.com/t/possible-reset-boot-loader-problem/252560

スポンサーサイト



tag : ArduinoSAMD21G18

ICS変換基板の自作

2020.08.16 電子部品の購入先リンクを修正しました。

=======================================

今回は備忘録を兼ねた紹介です。

近藤科学のICS変換基板(https://kondo-robot.com/product/03121)を自作ネタです。
正直なところ製品を買ったほうが楽でサポートがありますので、そこんとこよろしくです。


①イントロダクション(飛ばしていいよ)

近藤サーボをICS通信で動かすにあたり、以下のやり方があるようです。

①ICS変換基板を使う
3ステートバッファを用い、ICS通信の半二重通信を受信用・送信用の2つのICを切り替えて扱うやり方ですね。
制御側ではシリアルのRXとTX、切り替え用のピン(マニュアルだとEN_IN)の3つが必要ですが、arduinoやESP32といった多くのマイコンで利用できるので利便性がいいと思ってます。

②半二重通信が使えるマイコンを使う
マイコンと直結できるので一番手軽ですね。
Nucleoを使った方法は@deveminさんのこちら↓
GR-ROSEを使ったやり方は@lipoyangさんのこちら↓

③近藤サーボをスレーブ設定にして使う(未確認・要検証)

机上論ですが、ICSマネージャーを使えば近藤サーボをサーボの現在地を送信しないスレーブモードにできます。
極論言ってしまえば、ロボットの全サーボをこのスレーブモードにして一方方向の通信にしてしまおうって話です。感覚としては全サーボを一線で繋げられるPWM制御みたいなもんですかね。余裕できたら試してみよう(^^)



②本題

ICS変換基板のマニュアルには回路図が丁寧に記載されています。
https://kondo-robot.com/faq/ics_adapter_manual
こちらから自分が使うようにkicadに起こしたのが以下になります。

回路図のラベルはICS変換基板の表記と合わせてるはずです。

202002232202.png

使っている電子部品は以下の3種類のみ ナンテオテガルゥ
・EN_IN切り替え用NOTゲート
・3ステートバッファ x2
・2.2kΩ抵抗(ICS信号のプルアップ用)

NOTゲートによりENのH/Lによって2つの3ステートバッファのON/OFFが切り替わり、受信と送信が切り替わります。
サーボ→マイコン用3ステートバッファのVCCは使っているマイコンの信号電圧に合わせてください。(マニュアルで言うところのIOREF)
マイコンサーボ用3ステートバッファのVCCは5V固定です。

ここらへんの詳細は以下リファレンスをご参照ください。

③使用例

第2世代ツインズの基板や、
202002232251-1

ちょっとしたテストボードに使ってます。
202002232251-2

おわり

tag : ICS通信ICSライブラリシリアル通信Arduino

ESP32同士をBluetoothシリアルでつないでみる

ESP32 for arduino ide が結構前に1.0.4にアップデートされ、BluetoothSerialのマスターモードがお手軽に使えるようになりました。
今回そのやり方をまとめていきたいと思います。

前提条件として、
・必要なもの
 ①ESP32 2個
  こちらではDevkitCを使いました。M5stackでも行けるはずです。(要検証)
 ②ESP32 for arduino ide が使える環境
  arduino ide は1.8.12を使用。ESP32 for arduino ide は1.0.4。
  セットアップ方法は割愛します。ググってちょ。
 ③楽しむ気持ち
  できるようになったらやりたいことを想像してワクワクしましょう。

大まかなフロー
①スレーブ側のESP32のBluetoothMACアドレスを確認する。
②マスター側のサンプルプログラムを微修正して書き込み
③スレーブ側のサンプルプログラムを修正せずに書き込み
④シリアルモニタで接続確認
おわり

ね。簡単でしょ。んじゃ、いってみよー!

①スレーブ側のESP32のBluetooth用MACアドレスを確認する。

以下のスケッチをESP32に書き込んでください。

void setup(void) {
  Serial.begin(115200);
  Serial.println("-----------------");
  uint8_t macBT[6];
  esp_read_mac(macBT, ESP_MAC_BT);
  Serial.printf("%02X:%02X:%02X:%02X:%02X:%02X\r\n", macBT[0], macBT[1], macBT[2], macBT[3], macBT[4], macBT[5]);
}

void loop() {
  delay(1000);
}

実行すると、ideのシリアルモニタにスケッチを書き込んだESP32のBTMACアドレスが表示されます。
202002221402.png

ここでは1A:2B:3C:4D:5E:6Fを例とします。

②マスター側のサンプルプログラムを微修正して書き込み

202002221410.png

サンプル例のSerialToSerialBTMを以下のように修正します。
・13,14行目に先ほど確認したMACアドレスを入力。
・30行目をコメントアウト
・31行目をアンコメント

//This example code is in the Public Domain (or CC0 licensed, at your option.)
//By Victor Tchistiak - 2019
//
//This example demostrates master mode bluetooth connection and pin 
//it creates a bridge between Serial and Classical Bluetooth (SPP)
//this is an extention of the SerialToSerialBT example by Evandro Copercini - 2018
//

#include "BluetoothSerial.h"

BluetoothSerial SerialBT;

String MACadd = "1A:2B:3C:4D:5E:6F";
uint8_t address[6]  = {0x1A, 0x2B, 0x3C, 0x4D, 0x5E, 0x6F};
//uint8_t address[6]  = {0x00, 0x1D, 0xA5, 0x02, 0xC3, 0x22};
String name = "OBDII";
char *pin = "1234"; //<- standard pin would be provided by default
bool connected;

void setup() {
  Serial.begin(115200);
  //SerialBT.setPin(pin);
  SerialBT.begin("ESP32test", true); 
  //SerialBT.setPin(pin);
  Serial.println("The device started in master mode, make sure remote BT device is on!");
  
  // connect(address) is fast (upto 10 secs max), connect(name) is slow (upto 30 secs max) as it needs
  // to resolve name to address first, but it allows to connect to different devices with the same name.
  // Set CoreDebugLevel to Info to view devices bluetooth address and device names
  //connected = SerialBT.connect(name);
  connected = SerialBT.connect(address);
  
  if(connected) {
    Serial.println("Connected Succesfully!");
  } else {
    while(!SerialBT.connected(10000)) {
      Serial.println("Failed to connect. Make sure remote device is available and in range, then restart app."); 
    }
  }
  // disconnect() may take upto 10 secs max
  if (SerialBT.disconnect()) {
    Serial.println("Disconnected Succesfully!");
  }
  // this would reconnect to the name(will use address, if resolved) or address used with connect(name/address).
  SerialBT.connect();
}

void loop() {
  if (Serial.available()) {
    SerialBT.write(Serial.read());
  }
  if (SerialBT.available()) {
    Serial.write(SerialBT.read());
  }
  delay(20);
}

これをマスター側のESP32に書き込みます。

③スレーブ側のサンプルプログラムを修正せずに書き込み

以下のサンプルスケッチをスレーブ側のESP32に書き込みます。
202002221433.png

これで準備完了です!
いよいよドキドキの動作確認(^^)

④シリアルモニタで接続確認

それぞれのESP32をパソコンに接続して、シリアルモニタを開いてみましょう。
動画のように、マスター側のシリアルモニタに入力した文字がスレーブ側のシリアルモニタに表示されると思います。
①:マスター側 ②:スレーブ側



繋がりましたか?
同様にスレーブ側からマスター側に文字を送ることもできますよ。
皆さんの作業の助けになれば幸いです(^^)

tag : ESP32Bluetoothシリアル通信無線

第17回ROBO-ONE Conference資料 最終版

こちらからダウンロードしてください。
PDFファイル 9.35MB

2019/11/08 リンク修正

HTH4のプロジェクトをクラウドに自動でバックアップする

<はじめに>

ROBO-ONEまで2週間を切りました。

皆さんモーション作成を頑張っていることでしょうが、バックアップできてますか?

自分が日頃お世話になっている、クラウドを使ったやり方をつらつら書いていきます。


※あくまで自己責任でお願いします。データの損失といった責任は負いかねます。


これ書いとかねーと後が怖い(;^ω^)


<クラウドは何を使うか>

onedrive、googledriveなどいろいろクラウドサービスはありますがdropboxをお勧めします。


一番の理由はバージョン履歴の復元が無料版でも使えるからです。

例えばHTH4で歩行モーションを色々試していたら、間違って上書き保存しちゃった!てのはよくあると思います。そんな時にバージョンを辿れたら、上書き保存したけど1時間前のモーション復元しよ~♪ってできるわけです。

<まずは登録・インストール>

上記のリンクからでもいいですが、友達招待用のリンクからだとお互いに500MB容量が追加されます。

(無料版は最初2GB)

よろしければ↓のリンクからどうぞ。

https://db.tt/OjNITYUZ


登録が済んだら、↓のリンクからクライアントソフトをインストールします。

https://www.dropbox.com/ja/downloading


インストールが済めば、下のようにエクスプローラの左枠にDropboxの共有フォルダが生成されていると思います。


dropbox エクスプローラ 


<HTH4のプロジェクトを共有フォルダに移す>

HTH4のプロジェクトファイルは通常、ドキュメントフォルダ内のHeartToHeart4というフォルダに保存されます。
このHeartToHeart4をフォルダを共有フォルダにコピーします。

次はHTH4上での操作です。
HTH4のマニュアルp.17を見てください。
プロジェクトルート変更ボタンってのがあります。
要は新規作成したモーションの保存先・読み込むモーションの参照先を変更するボタンです。

HTH4ユーザーズマニュアル Ver5 p17 

このプロジェクトルートの参照先を、先ほど共有フォルダにコピーしたHeartToHeart4フォルダ内の、Projectsフォルダに指定してOKを押します。
下は自分の参照例です。

HTH4 dropboxにプロジェクト保存 

さすれば、次回からのプロジェクトルートに指定しますか?云々ってダイアログがでるので、これもOKをします。

以上で終了です。
あとはいつも通り、プロジェクト・モーションを保存すれば自動でDropboxにアップロードされていきます。

簡単クラウドバックアップ これにておわり。


分からないところはコメントなどで連絡ください。
検索フォーム
プロフィール

PONDA

Author:PONDA
座右の銘:やってやれないことはない

カテゴリ
最新記事
月別アーカイブ
タグ

ICS通信 Arduino ICSライブラリ シリアル通信 Teensy KRC-5FH ESP32 SAMD21G18 RCB-4HV 無線 Bluetooth 

最新コメント
ツイッター
リンク
RSSリンクの表示
ブロとも申請フォーム

この人とブロともになる