投稿

3月, 2025の投稿を表示しています

ESP32でCAN通信(RTR frameとextended format設定)

イメージ
 RTR frameとextended formatはデフォルトで有効となっています。 CAN送信のスケッチを書く時は気をつけましょう。 "twai_types.h"で指定されているようです。 必要に応じて、CAN IDを指定する"message.identifier =・・・"の前辺りに、 次のコードを書いて設定しましょう。 message.extd = 0;//0:Standard(11bit ID) 無指定:extended format(29bit ID) message.rtr = 0;//0:Data frame 無指定:RTR frame                 忘れてた CAN ID"0xF6"で送っているつもりが、受信側"80000F6"と表示され、 しばらく悩んだので備忘記投稿しました。  

Arduino UNO MINIMAでCAN通信(接点伝送してみる MCP23017出力)

イメージ
 CAN通信の活用方法を考えています。 今回テーマも「接点伝送」です。 CANバスを経由で機器を制御するようなことができると思います。 備忘記なんですが、参考に紹介します。 前回「接点伝送」の出力IOエキスパンダを I2CインターフェースのMCP23017に変更しています。                 スケッチ変更したところだけ // Pins used to connect to CAN bus transceiver: #define RX_PIN 17 //接続ピンをGPIO21から17へ変更 #define TX_PIN 16 //接続ピンをGPIO22から16へ変更 //中略   // uncomment appropriate mcp.begin   if (!mcp.begin_I2C()) { //アンコメントする   //if (!mcp.begin_SPI(CS_PIN)) { //こちらをコメントアウトする     Serial.println("SPI Error.");     while (1);   } //省略 スケッチは少しの変更だけで使えます。  

Arduino UNO R4 MINIMAを使ってみる(解決Raspi OS&ArduinoIDE 1.8.19でuploadできない)

イメージ
RaspiOS(64bit bookworm)でなぜなのか、Arduino UNO R4 MINIMAの書き込みができない。                  エラーメッセージは "dfu-util: No DFU capable USB device available Failed uploading: uploading error: exit status 74" 日本語訳では、 ”dfu-util:DFU対応USBデバイスはありません アップロード失敗: アップロードエラー:終了ステータス 74” 解決策が見つかりました。 Arduino.ccで"Fix udev rules on Linux "キーワード検索してみてください。 出てきたページの、表の下の方に、 UNO R4 WiFi UNO R4 Minima Portenta C33 ボードの所があり、 前述のエラーメッセージと、対応方法へのリンクあります。 対応内容をざっくり言うと、 GitHubで"post_install.sh"というファイルをダウンロードして、 インストールすると改善されるとのことです。 GitHubへのリンクもありました。 インストールで少し悩んだので、備忘記として書いておきます。 1.GitHubで"post_install.sh"をダウンロードする。 2.ファイルマネージャーで"ダウンロード"を開く。 3."post_install.sh"ファイルを右クリックし、メニューから   プロパティを表示して、パーミッションタブを選んで、   実行(E):のところを"なし"から   "所有者のみ"とか"すべて"にしておく。   4.ファイルマネージャーの"ツール"→"現在のフォルダを端末で開く"と   "LXTerminal"が開く。   sudo "/home/pi/ダウンロード/post_install.sh"と入力し"Enter"   "Reload rules..."表示されて...

Arduino UNO MINIMAでCAN通信(接点伝送してみる)

イメージ
 CAN通信の活用方法を考えています。 今回テーマは「接点伝送」です。 CANバスを経由で機器を制御するようなことができると思います。 備忘記なんですが、参考に紹介します。 (更に書き足しました) 送信側(入力側)オリジナルスケッチ"CANWrite.ino"の最後の方に "delay(1000)"(1秒)入っています。 これは、1秒間止まって待っているということですから、もったいないと思います。 かといって、入力が変わらないのに高速に送り続けるのもどうかと思います。 変化したときだけ送るとか、実際に機器に使うときは考えましょう。 (少し書き足しました。) 入出力デバイスはIOエキスパンダを使ってみました。 入力はI2CインターフェースのMCP23017、 出力はSPIインターフェースのMCP23S17です。 なんでインターフェースが違うデバイスを使ったの? ピンリストでI2Cの端子と思われるGPIO21ーWIRE_SCL, GPIO22ーWIRE_SDAが、CAN_TX、CAN_RXが割り当てられていたので、 I2Cは使えないと思い込んで、SPIインターフェースを選択した経緯あり。 ESP32の"IO MUXとGPIOマトリックス"機能があって、GPIOピンに割り当てる 機能を変えられる(合ってる?)、ピンリストに表示されているのは、 デフォルトで接続されるGPIOピンかな? CANトランシーバの接続を、GPIO16,17に変えても動くようなので、 GPIO21ーWIRE_SCL,GPIO22ーWIRE_SDAにI2Cインターフェースの MCP23017を接続してもよいのではないかと思います。 SCL、SDAのGPIOピンを変えることもできると思うが、 CAN_TX、CAN_RXを変えるほうが簡単。 準備 ESP32とArduino UNO R4ボードマネージャ、 "Adafruit MCP23017 Arduino library"をインストールしておく。 動作確認のときはPCが2台あると便利です。 ・CAN受信側(出力)MCP23S17を使用した接続 出力側スケッチ サンプルスケッチTWAIreceive.inoへMCP23x17用を組み合わせただけです。 追加する部分だけ 実際の...