Bye Bye Moore

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

arduino

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>…

Ubuntu22.04LTSにArduino CLI環境 その1:環境構築

実際のところ デフォだと作業直下のbinフォルダに導入されるようです。 パスも通ってるので、home直下に入れる事にします。 $ cd $ curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | sh動作確認にバージョン情報を出…

rclpyでttyUSB0を経由してM5stackにテキストを送り込むserviceを書く

段々内容が入り組んできましたが…… rclpyでttyUSB0を経由してM5stackにテキストを送り込むserviceを書いてみます これが出来たら、もうあとはカメラやサウンドデバイスみたいな事例しかないんでは 実際のところ サービス定義の作成 まずはサービスの定義ファ…

Arduinoで動くCNCコントローラーGRBL

Arduinoで動くCNCコントローラーの有名どころとしてGRBLというのがあります Arduino UNOピン数があれば3軸のCNCが動くので趣味プロジェクトでは中々有効かも ただし、ライセンスはGPLv3なのでよく理解してご利用のこと 実際のところ 導入 Arduino IDE Relea…

esp系ボード(M5stackやPico)の環境をUbuntuにはじめて組んだとき「esptool.pyがない」というエラー

実際のところ Arduino:1.8.19 (Linux), ボード:"STAMP-PICO, Default, 1500000, None" Traceback (most recent call last): File "/home/ubuntu/.arduino15/packages/m5stack/tools/esptool_py/3.3.0/esptool.py", line 27, in <module> import serial ModuleNotFo</module>…

【読書メモ】はじめての自作キーボード

はじめての自作キーボード (I/O BOOKS)作者:小池 俊樹工学社Amazon最近、流行っている自作キーボード周りの本。チャタリングや、小型マイコンでのIO数の制限等々、考える事が多いというボンヤリとした理解はありましたが、 その辺りについて回路と理屈で教え…

M5stackとBluetooth keyboard

M5stackにはBluetoothが内蔵されているので、これを有効利用してちょっとしたキーボード的ガジェットへの転用が可能です。 実際のところ 導入 Releases · T-vK/ESP32-BLE-Keyboard · GitHub からlatestのzipを導入。これを、IDEであれば サンプル Aボタンで…

【読書メモ】アイデアをカタチにする! M5Stack入門&実践ガイド[M5Stack Basic/M5StickC対応]

アイデアをカタチにする! M5Stack入門&実践ガイド[M5Stack Basic/M5StickC対応]作者:大澤 佳樹,aNo研,石川 真也,小池 誠,菅原 のびすけ,田中 正吾,豊田 陽介,necobit,廣瀬 元紀,三木 啓司,ミクミンP,若狹 正生技術評論社Amazon

ROSからM5stackにふれる その4:log

実際のところ #include <ros.h> #include <M5Stack.h> ros::NodeHandle nh; void setup() { // initialize the M5Stack object M5.begin(); M5.Power.begin(); nh.initNode(); } void loop() { //wait until you are actually connected while (!nh.connected()) { nh.spinOnce</m5stack.h></ros.h>…

ROSからM5stackにふれる その3:HelloWorldもといpublisher

実際のところ #include <ros.h> #include <std_msgs/String.h> #include <M5Stack.h> ros::NodeHandle nh; std_msgs::String str_msg; ros::Publisher chatter("chatter", &str_msg); char hello[10] = "hello ROS"; void setup() { // initialize the M5Stack object M5.begin(); M5.Power.begin(</m5stack.h></std_msgs/string.h></ros.h>…

ROSからM5stackにふれる その2:Lチカもといsubscriber

実際のところ #include <ros.h> #include <std_msgs/Empty.h> #include <M5Stack.h> ros::NodeHandle nh; bool flag = true; void messageCb( const std_msgs::Empty& toggle_msg){ if ( flag ) { M5.Lcd.fillScreen(WHITE); flag = false; } else { M5.Lcd.fillScreen(BLACK); flag = true; } } </m5stack.h></std_msgs/empty.h></ros.h>…

ROSからM5stackにふれる その1:環境構築

何やかんやで、即作りたいときには便利なM5stack こいつをROSと連携する方法を考えていきます。 実際のところ ROSにrosserial-arduinoの環境導入 sudo apt install ros-$ROS_DISTRO-rosserial sudo apt install ros-$ROS_DISTRO-rosserial-arduino cd catkin…

M5Cameraにもう少し詳しく潜る

HTMLファイルはバイナリ化されて読めませんが、さすがにレンダリングされればなんとか読めたので部品だけ切り抜けるように少し調べて見ました 実際のところ 動画 var baseHost = document.location.origin var streamUrl = baseHost + ':81' なので前の結果…

M5Camera Bを試してみる その3:mDNSを設定する

M5Cameraが便利なのは分かりましたが、毎回毎回IPアドレスをコンソールで表示、確認するのも面倒です。 連携するサービスも毎回毎回IPアドレス張替えでは不便ですしね。 こういうときは、mDNSの力を借りましょう。 実際のところ まずはライブラリのインクル…

M5Camera Bを試してみる その2:GETで画像を入手する

shuzo-kino.hateblo.jp 実際のところ 接続先のIPアドレスがhttp://192.168.X.Yのとき 国際標準のタイムスタンプをファイル名に採用して $ curl http://192.168.X.Y/capture --output "$(date -Iseconds).jpg" 何が起きている app_httpd.cppの1104行目に http…

M5Camera Bを試してみる

M5stack兄弟のひとつ、M5CameraのBタイプを使ってみました。 実際のところ デフォでM5Camera自身がAPになるサンプルが書き込まれていますが……後々自分でいじる事を考え、配信するタイプをコンパイルして書き込んでみることに。 ボードの用意 M5とかついてる…

Ubuntu20LTSにArduino-cli環境をいれM5stackのスクリプトを構築できるようにする

Raspberry Pi、それもリモート環境だと、お世辞にも便利とはいえないArduino IDEが余計に不便に感じます。 幸い、公式がCLIツールを出してるので、そいつを導入してみます。 実際のところ $ curl -fsSL https://raw.githubusercontent.com/arduino/arduin…

M5stackをweb鯖化してMCP23017への命令を遠隔で行えるようにする

shuzo-kino.hateblo.jp の続き。 M5stackと、それにつないだMCP23017とでLEDをブラウザ越しにいじったりできるようにする。 実際のところ #include <M5Stack.h> #include "Wire.h" #include <WiFi.h> #include <WiFiClient.h> #include <WebServer.h> #include <ESPmDNS.h> const char* ssid = "###"; const char* pass</espmdns.h></webserver.h></wificlient.h></wifi.h></m5stack.h>…

M5stackにMCP23017をつかってIOを拡張する

MCP23017という石があります。 IO拡張系の石なのですが、マイコン側からはI2Cで通信できるので線の分お得。 配線も減るし、上手に分離すればモジュール化も容易なんじゃないかと思い、手元のM5stackで実験してみました。 実際のところ #include <M5Stack.h> #include "W</m5stack.h>…

VSCodeにArduino IDE + M5stackな環境を構築する(書き途中)

前回VSCodeにUnityに構築して威力を痛感したので、この機会にArduino IDEもやってみようと思いたちました。 今の作業環境にM5stackの環境もないのでついでに。 実際のところ 環境 Windows10 Arduino IDE 1.18.4 Visual Studio Code 1.56.1 M5stack系はなし …

arduino INPUT_PULLUP

雑に作って試すプラットフォームとして丁度良い、Arduino。 徹底的に楽するなら、いっそプルアップ抵抗もなくなればいいのになんて思うこともありますが。 AVRの石には、実は内部プルアップが備わってる石があり、Arduino公式ボードはその品種を採用していま…

ATOM 2D/1D Barcode Scanner Development Kitで遊ぶ

公式より引用M5atomにQRコード読み取り機の拡張機能がついたキットです。 調べるまで知らなかったンですが、バーコードリーダーと同じアプローチで二次元バーコードも読み取りできるんですね。バーコードやQRコードのような日本でもお馴染みの様式に加えて、…

RaspberryPiのUSBポートにつないだM5stackをコマンド越しにリセットする

遠隔地にあって、気安く抜き差しできないM5stackを弄りたい場合。 ハードウェアフロー制御がマトモに機能してるデバイスでも再現性がある……かも? 実際のところ 作業ボードはRaspberryPi4B、ターゲットデバイスはM5stackを想定。 pythonでやる リセット回路…