Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

arduino

UARTの受信割り込み設定を明示的にやる

実際のところ 一部のピンは最初から割り込み設定に対応しているものの、そうでない奴は明示的に使い方を示しておかんといけないみたいです。 たとえば、ArduinoUno互換であれば2,3は対応しています。 サンプルコマンド通りに繋いだら動いたけど、ピン替えた…

"GD32E103搭載 CAN BUSモジュール"で5MbpsのCANFDパケットをM5stackBasicで扱う

CAN FDをマイコンで扱った事例がネット上に少なく苦労しましたが……要約疎通したのでメモ 実際のところ 回路接続 M5stack Basic Grove PortA (赤)にコネクタをつなげる 私の環境では不要でしたが、終端の120Ωが必要なときは裏面にある端子をジャンパはんださ…

M5stackで底面にケーブルを出す場合

M5Stack用BUSモジュールArduino (アルドゥイーノ)Amazon 実際のところ M5Stack用BUSモジュールはソケットの引き出し口が横に出てくれています 公式の想定では、横方向へL金具を使って引きだす運用を考えているようです。 今回はこれを使って下にピンを出すよ…

acan2517FD.hでreceiveが動かないとき、直前にpollを入れると動くことがある

なんかバッドノウハウ的ですが……Arduino系でCANFDを実現するときにつかうライブラリ"acan2517FD.h"で、 CAN FDパケットの疎通に失敗するときはpoll関数をブチ込むと、いう事を聞くようになる可能性があります。 実際のところ 初期化サイド const uint32_t er…

acan2517FD.hで初期化時のエラーコードが262144などと訳の分からない値になってたらケーブルが長すぎるのかも

実際のところ 初期化時がこれで const uint32_t errorCode = can.begin(settings, [] { canfd.isr(); }); エラーコードの格納部分をこれ(M5stackに表示) if (errorCode == 0) { M5.Lcd.setCursor(10, 30); M5.Lcd.print("CAN FD OK"); } else { M5.Lcd.set…

M5stamp S3のGPIOでプルアップ設定してるのにうまくいかないとき

実際のところ G9に割り付けたのにいう事を聞かなかったときの対応 #define BUTTON1_PIN 9 pinMode(BUTTON1_PIN, INPUT_PULLUP); // 追加:Button1のプルアップを明示的に有効化 gpio_pullup_en((gpio_num_t)BUTTON1_PIN); gpio_pulldown_dis((gpio_num_t)BUT…

Teensy4.0をPlatformio on VSCodeでつかう その1:環境導入

Teensy 4.0は高性能な32ビットARMボードです。 ロボット系の怖いお兄さんお姉さんたちが好んで使うという偏見がありました。 実際、ロボット用としては豊富なI/O、高速USB、諸々のインターフェース(SPI、I2C、CAN、CAN-FD!!!)を備えています。 更に、ロボ…

M5stack-Avatorで顔出してみる その3:吹き出しにセリフをだす

shuzo-kino.hateblo.jpの続き前回は表情を変えたので、今回はそこに吹き出しを入れてみます。 デバッグなんかでも使えて、少しだけ気分がリッチになるかも。 実際のところ #include <M5Unified.h> #include <Avatar.h> using namespace m5avatar; Avatar avatar; void setup() { M5.</avatar.h></m5unified.h>…

M5stack-Avatorで顔出してみる その2:感情を切り替える

shuzo-kino.hateblo.jpの続き何もしなくても瞬きっぽい感じで若干賑やかになりますが、 それに加えて表情の変更もできます。 実際のところ 参考もと #include <M5Unified.h> #include <Avatar.h> using namespace m5avatar; Avatar avatar; const Expression expressions[] = {Expre</avatar.h></m5unified.h>…

M5stack-Avatorで顔出してみる その1:環境構築

実際のところ 下準備 platformioで構築します 公式がコマンドを用意してくれている素敵 mkdir my-avatar cd my-avatar platformio init -d . -b m5stack-core-esp32platformio lib install M5Unified platformio lib install M5Stack-Avatar サンプルスクリ…

M5stampS3 と Grove Mini CANモジュールでCAN通信 その2:UbuntuからのパケットをM5stampで受信

実際のところ #include <M5Unified.h> #include <FastLED.h> #include "driver/twai.h" //TWAI for CAN // CAN Pins #define TX_GPIO_NUM GPIO_NUM_13 #define RX_GPIO_NUM GPIO_NUM_15 #define CAN_BITRATE TWAI_TIMING_CONFIG_1MBITS() #define BUTTON1_PIN 7 // LED Strip configu</fastled.h></m5unified.h>…

M5stampS3 と Grove Mini CANモジュールでCAN通信 その1:M5stampからUbuntuへ送信

実際のところ GroveからM5stampへの接続 M5stampにはGroveコネクタがないので、片側ピンになってるタイプの線を買ってG13とG15に繋ぎます。 ここで注意しないといけないのが、接続順。 どういうわけか、Groveコネクタの黄色、白とモジュール表記の黄色白色が…

M5stamp S3で BLEビーコンで遊んでみる その3:M5stackで受信してカウントする

shuzo-kino.hateblo.jp シリーズの最後。 発行してばかりではアレなので、受信して遊ぶ方法も考えます。 実際のところ 一秒コールを行い、目的のURL(今回はhttps://example.com)が入っていたらコールバックにて回数をインクリメントするかんじ。 #include <M5Stack.h></m5stack.h>…

M5stamp S3で BLEビーコンで遊んでみる その2:ディープスリープをして消費電力を落とす

shuzo-kino.hateblo.jp ではバリバリおくっており電気をバカ食いします。 これではBLEの利点である低消費電力が全く意味をなさないのでディープスリープをして消費電力を落としてみます。 実際のところ 30秒に一回起動し、一秒だけ窓をあける……みたいな感…

M5stamp S3で BLEビーコンで遊んでみる その1:まずは書いてみる

M5stamp S3にはESP32-S3FN8が搭載されているのでBLEにも対応しています。 別件でBLEビーコンを実験してみたかったので、Google大本営謹製のEDDYstoneという実装をお借りして、色々実験してみようと思います。 実際のところ 実装のうち、Eddystone-URL……名前…

M5stackでBluetoothゲームパッドをつかう

実際のところ #include <Arduino.h> #include <M5Core2.h> #include <BleGamepad.h> BleGamepad bleGamepad; // 円の初期位置と色 int circleX = 160; int circleY = 120; int circleRadius = 20; uint32_t circleColor = WHITE; void setup() { M5.begin(); Serial.begin(115200); Serial.printl</blegamepad.h></m5core2.h></arduino.h>…

ArduinoでBluetoothゲームパッドをつかう

実際のところ #include <Arduino.h> #include <BleGamepad.h> BleGamepad bleGamepad; void setup() { Serial.begin(115200); Serial.println("Starting BLE work!"); bleGamepad.begin(); // The default bleGamepad.begin() above enables 16 buttons, all axes, one hat, and no si</blegamepad.h></arduino.h>…

M5stack CoreInkを使ってみる その2:側面のダイヤルを使ったりカーソルを整えたりする

shuzo-kino.hateblo.jp の続き 実際のところ スクリプト 右側面にあるダイヤルは、 押し込むとG38 上方向がG37 下方向がG39 と割り当てられているので、それに対応する。ついでに、前回のままではボタンを押すたび下にいってたのでカーソル位置をリセットす…

M5stack CoreInkを使ってみる その1:環境構築とテストスクリプト

M5Stack CoreInk 開発キット 1.5インチEinkディスプレイ M5STACK-K048ノーブランド品Amazon 実際のところ platformIO ボード情報はそのまま「M5stack CoreInk」 今後のことも考慮し、M5unified スクリプト #include <M5Unified.h> void setup() { auto cfg = M5.config();</m5unified.h>…

M5stamp S3でNeoPixel対応LEDテープを光らせる

実際のところ レインボーカラーで段階的に色が変わっていくサンプル 後々のため、I2Cでステータスを出すコードもコメントアウトで残しておきます #include <M5Unified.h> #include <FastLED.h> //#include <Wire.h> // LED Strip Configuration #define LED_PIN 3 // GPIO pin for LED data (</wire.h></fastled.h></m5unified.h>…

PlatformIO上m5stamp s3の環境構築メモ

実際のところ ボードは "M5stack-stamps3"、 m5stackのような専用ライブラリはなく、"M5Unified"というのがあるので、これをつかうfastLEDもついでに使うと、platformIO.iniのファイルはこんな感じになる [env:m5stack-stamps3] platform = espressif32 boar…

M5stack basicとA4988ドライバを併用してNEMA17モーターを動かす

shuzo-kino.hateblo.jp の構成*1を踏襲して、M5stack版を作ります。RASBEE 5個セット RepRap A4988 ステッピングモータドライバモジュール HR4988 3Dプリンター 交換チップ 並行輸入品 StepStick HR-A4988 Ramps 1.4用 モーター駆動 コントローラ ラジエータ…

M5stackのEEPROMを消す

の続き。 このままだと電源を再投入しようがファームを書き換えようがEEPROMが消えないので上書きリセットの方法を実装します 実際のところ まずsetup関数より先に二つの関数を追加 // EEPROMをクリアする関数 void clearEEPROM() { for (int i = 0; i < ROM…

M5stackのEEPROMにデバイスIDを書き込み、必要に応じて変更できるようにする

基本ロジックが同じだがデバイスIDが違う場合……というケースの対処方法 実際のところ #include <M5Stack.h> #include <EEPROM.h> // デバイスIDを保存するEEPROMアドレス #define DEVICE_ID_ADDRESS 0 // 書き込みを行うEEPROMの確保サイズ #define ROMSIZE 4 // デバイスID(初期</eeprom.h></m5stack.h>…

M5stack + COMMU ModuleでCAN通信する その3:複数構成での通信

実際のところ 送信側 #include <M5Stack.h> #include <mcp_can.h> #include <SPI.h> const int SPI_CS_PIN = 12; MCP_CAN CAN(SPI_CS_PIN); void setup() { M5.begin(); M5.Power.begin(); M5.Lcd.println("M5Stack wake up!"); if (CAN0.begin(MCP_ANY, CAN_500KBPS, MCP_8MHZ) == CAN_OK</spi.h></mcp_can.h></m5stack.h>…

M5stack + COMMU ModuleでCAN通信する その2:受信側

shuzo-kino.hateblo.jp の続き 今度は受信側です 実際のところ 何も受信できてないとクラッシュするのでバッファに何か入れられるようになるまでヒアします #include <M5Stack.h> #include <mcp_can.h> #include <SPI.h> #define CAN0_INT 15 // 割り込みピンを設定 volatile bool message</spi.h></mcp_can.h></m5stack.h>…

M5stack + COMMU ModuleでCAN通信する その1:送信側

実際のところ VScode上のplatformio環境でやります ライブラリ導入 lib_depsに必要なライブラリ記述を追記 [env:m5stack-core2] platform = espressif32 board = m5stack-core2 framework = arduino lib_deps = m5stack/M5Stack@^0.4.6, coryjfowler/mcp_can…

M5stackのSDカードに書き込む

実際のところ #include <M5Stack.h> #include <SD.h> File myFile; double imuData[3]; // pitch, roll, yaw void setup() { M5.begin(); M5.IMU.Init(); SD.begin(TFCARD_CS_PIN); // SDカードに書き込むファイルを開く myFile = SD.open("/temp.txt", FILE_WRITE); if (myFi</sd.h></m5stack.h>…

M5stackのSDカードを読み込む

実際のところ #include <M5Stack.h> #include <SD.h> File myFile; double imuData[3]; // pitch, roll, yaw void setup() { M5.begin(); M5.Lcd.fillScreen(TFT_BLACK); // 画面をクリア SD.begin(TFCARD_CS_PIN); myFile = SD.open("/temp.txt"); if (myFile) { while (myFi</sd.h></m5stack.h>…

Arduino環境でコールバック的挙動の実験

可読性をあげたりモダナイズな雰囲気を出す意味で、 Arduino環境でコールバック的挙動が実現できるか試してみました 実際のところ ターゲットボードはM5stackとします。 ボタンAの押下を確認し、押されたようであれば内部変数をインクリメントして画面を更新…