6月のまとめ

進捗 SOEMのchipKIT Max32対応 SOEMのNucleo-F446RE対応 ミニ四駆ラジコンのRumiCar化 / GPduinoによるRumiCar製作 マイRumiCar試走会@大阪 開催 イベント等 6/6 RumiCarハンズオン!自動運転アルゴリズムを楽しく手軽に体感しよう! 6/20 第58回 本町デジ…

RumiCar用簡易コースの壁の作り方

先日のRumiCar試走会の大阪会場で設営した簡易コースの壁の作り方を紹介します。 材料のやすさ 作りやすさ 設営しやすさ 持ち運びやすさ がモットーです。 (1) 材料 工作用紙 100円ショップなどで売ってる30cm×40cmの方眼入りのボール紙です。ダイソーだと5…

マイRumiCar試走会@大阪 レポート

RumiCar試走会東西同時開催 6月20日に関東で開催されたマイRumiCar試走会に合わせ、大阪の本町デジもく会でもRumiCar試走会を開催しました。オンラインで東西両会場の様子をお互いに中継し、とても楽しい試走会となりました。関東会場に比べ小さなコースなが…

PSoC Creatorの .gitignore

*.cywrk.* *.cydsn/codegentemp/ *.cydsn/CortexM0p/ *.cydsn/CortexM3/ *.cydsn/CortexM4/ *.cydsn/Export/ *.cydsn/Generated_Source/ *.cydsn/*.cyprj.* *.cydsn/*.cycdx *.cydsn/*.cyfit *.cydsn/*.rpt *.cydsn/*.svd *.cydsn/*_datasheet.pdf *.cydsn/*…

BLEの最大データサイズ?

今さらですが、BLEの最大データサイズって (BLE4.2以降のデータ長拡張は別として) 何バイトでしょう? 27バイト? 23バイト? 22バイト? 20バイト?資料によってまちまちで混乱しませんか? 中には「20バイト程度」とかボカして書かれてたり。これ、図解す…

5月のまとめ

進捗 SOEMのNucleo-F767ZI対応 SOEMのM5Stack対応 ミニ四駆ラジコンのRumiCar化 イベント等 5/2 Fusion 360による電子回路設計と機械設計の連携ライブ実演!EAGLE連携も! 5/9 第7回デジもくオンライン 5/16 ALGYAN5周年IoT祭2020『リモート×計測・制御・AI…

Mbed OS 5を静的ライブラリとしてビルドする

やりたいこと 背景 開発環境 Mbed OS 5用プロジェクトの作成 Mbed OS 5の静的ライブラリをビルド ユーザープログラムのプロジェクトを作成 ユーザープログラムをビルド 【2020/05/21 追記】 本記事の手順で作成したMbed OS 5の静的ライブラリを使用すると正…

__wrap__free_rが無いと言われたら

MbedのプロジェクトをGCC環境にエクスポートしてビルドすると、リンクの段階で下記のようなエラーが発生する場合があります。(どういう場合に発生するのか不明。) undefined reference to `__wrap__free_r' undefined reference to `__wrap__malloc_r' undef…

WindowsのIPアドレス設定画面どこ行った?

Windows10って、「コントロールパネル」と「設定」とが朝廷と幕府みたいに併存してるの、いいかげんなんとかならんのかな?IPアドレスの設定画面の出しかたなど、Windows XP以来ころころ変更されてる気がする。Windows10 (1809)での出し方を以下にメモする。…

PSoC CreatorでPDLが無いと言われたら

PSoC Creatorをアップデートした場合(?)に、下記のようなエラーが出ることがあります。PDLとは「Peripheral Driver Library」で、PDL v2はFM0+やFM4に、PDL v3はPSoC6に対応しています。(PSoC4やPSoC5はそんなライブラリ要らないってこと?)PDLは C:\Progra…

Androidアプリでのファイル読み書き

※ 今さらな内容のメモです。かなり古い内容を含んでいる可能性があります。Androidアプリで設定データなどを保存するにはSharedPreferencesを用いるのがいちばん簡単である。 しかし、USB接続でデータファイルをPCとやりとりしたい場合もある。その場合、フ…

基板の銅箔厚の「oz」とは?

FusionPCBとかElecrowとかでプリント基板を作るとき、銅箔厚の指定で「oz」という見慣れない単位が出てきます。「oz」というのはオンスのことですが、ここではoz/ft2 (オンス/平方フィート) を意味します。つまり1平方フィートあたり何オンスの重さの銅箔か…

4月のまとめ

進捗 EtherCAT-IPゲートウェイと通信するAndroidアプリ作成 イベント等 4/11 第3回デジもくオンライン 4/18 第4回デジもくオンライン 4/25 第5回デジもくオンライン GitHub公開 github.com 所感 今月はSOEMのNucleo対応が難航したこと、入荷予定だったM5Stac…

UIスレッドで実行させる (雑な話)

UIスレッド(メインスレッド)以外のスレッドからUIを操作したいとき、Windows (.NET)でもAndroid (Java)でも直接操作することは許されない。そういうときはUIスレッドに処理を依頼する形を取る。WindowsならControl.Invoke()またはControl.BeginInvoke()、And…

SW4STM32での謎の不具合

Windows版のSW4STM32でデバッグを実行しようとすると、「OpenOCD Binary not found」というエラーが発生した。いろいろ試行錯誤したところ、デバッグの構成で「OpenOCD Command」の指定に拡張子「.exe」を付ければ解決した。「.exe」が無いとエラーが発生。 …

メモ:追加のボードマネージャのURL

Arduino IDEでサードパーティー製ボードのパッケージをインストールするためのボードマネージャのURLをメモ。ESP32 https://dl.espressif.com/dl/package_esp32_index.json ESP8266 https://arduino.esp8266.com/stable/package_esp8266com_index.json chipK…

メモ:Eclipse CDTでMakefile生成を抑制

Eclipse CDT系のマイコン開発環境であるWS4STM32でMbed OS5のプロジェクトをビルドすると、毎回Makefileの生成が行われ数分を要するということがある。Mbed OS5のソースファイル数が膨大なためである。このMakefile生成を次回から省略するには、プロジェクト…

メモ:MBED_COMPILER_BARRIERでビルドエラー

Mbed OS5 からSW4STM32にエクポートしてビルドすると、mbed_toolchain.hの下記の行で「'asm' undeclared」というエラーが発生する。 #define MBED_COMPILER_BARRIER() asm volatile("" : : : "memory") ビルドに用いるコンパイラの違いによるものである。下…

メモ: 未使用変数の警告を回避するマクロ (C言語)

コンパイル時に未使用変数の警告を出してくれるのは有用であるが、特定の変数が未使用であることを許容したい場合もある。そのような場合に下記のようなマクロを用意しておくと便利である。 #define UNUSED(x) (void)(x) 例えば下記のように使う。これによっ…

Androidアプリのレイアウトを動的に変化

やりたいこと Androidアプリの画面(Activity)のレイアウトの一部を実行時に動的に変化させたい やりかた Activityのレイアウトで、動的に変化させたい部分のLayout要素に名前(id)を付けておく。ここでは hoge とする。 <LinearLayout android:id="@+id/hoge" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:orientation="horizontal"> </LinearLayout>…

メモ:adbでプリファレンスを読み出す方法

Androidアプリで設定データを保存するにはプリファレンス(SharedPreferences)を用いるのが簡単で一般的だが、その実体はXML形式のファイルで保存されており、以下の手順で内容を確認できる。たとえば、net.lipoyang.hoge というパッケージ名のアプリの、Piyo…

3月のまとめ

進捗 SOEMのESP32対応 GR-MANGO(β版)でEtherCAT-IPゲートウェイ作成 ESP32でEtherCAT-IPゲートウェイ作成 EtherCAT-IPゲートウェイと通信するPCアプリ作成 イベント等 3/7~ 技術書典 応援祭 3/14 第1回 デジもくオンライン (実験版) 3/21 第2回デジもくオン…

Madgwickフィルタで姿勢角推定

Madgwickフィルタとは? マドウィックフィルタと読む 3次元の姿勢角推定に用いる 加速度、ジャイロ、(地磁気) でセンサフュージョンする 相補フィルタより精度が良く、カルマンフィルタより計算が軽い 計算にはクォータニオンを用いる Arduinoで使えるMadgw…

メモ:クォータニオンと回転行列

回転とクォータニオン 3次元空間での回転をクォータニオンで表すことを考える。回転軸のベクトルを 、回転角を とすると回転を表すクォータニオンは なら この回転でベクトル が に写像されるとするとベクトル をクォータニオン と読み替えてただし、 は の…

メモ:ESP32でmDNS

mDNSとは? multicast DNSの略 ローカルネットワーク内のホストをマルチキャスト転送で名前解決する DNSサーバーが不要になる 通常のDNSと同様、あらかじめIPアドレスを知らなくてもアクセスできる Windows, Mac, Linuxで統一された規格 (WindowsはWindows10…

MPLAB X IDEのコンパイラバージョン指定

MPLAB X IDEで特定のバージョンのコンパイラを指定する方法まとめ。 コンパイラのインストール 下記ページの「Language Tool Archives」にてXC8、XC16、XC32の各バージョンをダウンロードできるので、所望のバージョンをダウンロードしてインストールする。 …

GR-ROSE本「GR-ROSEでいこう!」出しました

中止となった技術書典8に代わってオンライン開催の技術書典 応援祭に「GR-ROSEでいこう!」を出しました。今回の応援祭では電子版のみですが、紙の本もただいま印刷中です。シリアルサーボ、ROS/ROS2、EtherCAT、Amazon FreeRTOSなど盛りだくさんの内容とな…

2月のまとめ

進捗 GR-PEACHのデバッグ環境構築 GR-MANGOの開発環境構築 GR-ROSEの同人誌の組版 SOEMのMbed LPC1768対応 SOEMのMbed GR-MANGO(β版)対応 イベント等 2/15 GR-MANGO プロデューサーミーティング 2/29 技術書典8 → 新型コロナウイルス感染症の影響により中止 …

マイコンでEthernet

マイコンでEthernetを使いたい場合、ハードウェアの構成に3つのパターンがある。いずれの場合もRJ45ジャックにはパルストランス内蔵のもの(MagJackなど)を使用するものとする。 マイコンがEthernetのMACを持たない場合 この場合、SPI接続等でEthernetのMAC/P…

undefined reference to `typeinfo for クラス名'

C++で「undefined reference to `typeinfo for クラス名'」というよく意味の分からないエラーに遭遇した。 undefined reference to `typeinfo for BMI160Class'どうも仮想関数(virtual が付いてる関数)を持つクラスで、仮想関数の最初の親クラスで実体が定義…