投稿

7月, 2023の投稿を表示しています

CAN通信開発中RaspberryPiではセルフパワーUSBハブで安定

イメージ
 RaspberryPi 4Bを使ってArduinoIDE動かしています。 ESP32の起動失敗やSDのファイルオープン失敗など不安定な現象が発生していました。 USB延長ケーブルとブレットボード接触甘めで電源電圧低下していたようです。 ブレットボード用ジャンパーワイヤをやめてブレッドボードにピンヘッダを挿してはんだ付け さらにセルフパワーのUSBハブを導入しました。 不安定な挙動は全くなくなりました。

CANバスモジュールを使ってデータ送受信する。(RP2040 受信)

イメージ
 受信側スケッチです。改善の余地あり(ちょっと直しました。) ChatGPT先生にいっぱいヒントを頂きました。 参考:コンパイル途中に次のようなメッセージ表示されていました。 警告:ライブラリAdafruit_CANはアーキテクチャsamdに対応したものであり、 アーキテクチャrp2040で動作するこのボードとは互換性がないかもしれません。 AdafruitのMCP2515ライブラリからのメッセージと思われます。               /*   Adafruit MCP2515_CAN_Receiver_Exampleを改変しています。 一部省略 転記ミスや表示されてない記号があるかも <は半角に直して */ #include<Adafruit_MCP2515.h> #define CS_PIN    20 // Set CAN bus baud rate #define CAN_BAUDRATE (250000) Adafruit_MCP2515 mcp(CS_PIN); byte receivedData[8]; uint32_t id1_value = 0; uint32_t id2_value = 0; uint32_t id3_value = 0; void setup() {   Serial.begin(115200);   while (!Serial) delay(10);   Serial.println("MCP2515 Receiver test!");   if (!mcp.begin(CAN_BAUDRATE)) {     Serial.println("Error initializing MCP2515.");     while (1) delay(10);   }   Serial.println("MCP2515 chip found"); } void loop() { // try to parse packet //このスケッチは受信側Receiver(read) int packetSize ...

CANバスモジュールを使ってデータ送受信する。(RP2040 送信)

イメージ
 数台の機器からデータを送って、受信したデータをまとめて保存するようなものを作るため、 スケッチを書いてテストしています。続編 SPI接続CANバスモジュール(コントローラ:MCP2515、トランシーバ:TJA1050)と 送信AE-RP2040、受信AE-RP2040、送信Arduino-UNO 1台 millis()をそのまま送ってAE-RP2040で受信しています。 ライブラリがRP2040非対応か ArduinoUNO、ESP32で動いていたライブラリがRP2040で動かない Arduino IDEのライブラリマネージャでMCP2515を検索しAdafruit MCP2515をインストール こちらは対応している(?)ようです。 送信データの1バイトに入る数値に制限がある? 0x00〜0xFF(B11111111)のはずが、最上位bitが使えず0x00〜0x7F(B1111111)となっています。 使い方に間違いがあるかもしれません。 送信8バイトをフルに使うことはないのでこれでも目的は 達成できそうです。 ChatGPT先生にいっぱいヒントを頂きました。 動作概要 複数のデータそれぞれにID番号を割り当てて 送信側:数値をばらしてバイト配列に入れて送る。 受信側:バイト配列を組み立ててもとの数値へ戻す。 準備できたら送信、受信スケッチを紹介したいと思います。  2023-07-15 09:32:20#CAN #AE-RP2040 #MCP2515 #TWAI                             送信側スケッチ 変化する送信データサンプルとしてmillis()を読んで使っています。 3つのID(0x11,0x12,0x13)を使っています。 (0x14は使えなかった。0x21〜0x23使えた。) ID毎に1つのデータを送っています。 /*Adafruit MCP2515_CAN_Sender Exampleを改変しています。 一部省略 転記ミスや表示されてない記号があるかも <は半角に直して*/ #include<Adafruit_MCP2515.h> #define CS_PI...

CANバスモジュールを使ってデータ送受信する。(ATmega Arduino)

イメージ
 数台の機器からデータを送って、受信したデータをまとめて保存するようなものを作るため、 スケッチを書いてテストしています。 SPI接続CANバスモジュール(コントローラ:MCP2515、トランシーバ:TJA1050)と Arduino-UNO 2台、AE-ESP32 1台 analogRead値やmillis()をそのまま送ってESP32で受信しています。 ESP32受信で問題発生 約5秒毎に正常データと異常データ(全部0XFF)が受信される問題発生します。 chatGPT先生に色々聞いてみましたが解決に至らず、 送信と受信のマイコンを入れ替えてみると現象が発生しなくなりました。 最終的にはAE-RP2040を使う予定なので交換してテストします。 複数のデータそれぞれにID番号を割り当てて 送信側:数値をばらしてバイト配列に入れて送る。 受信側:バイト配列を組み立ててもとの数値へ戻す。 準備できたら送信、受信スケッチを紹介したいと思います。