Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

arduino

【地獄のバッドノウハウ】シリアル通信でコマンド送るタイプの装置が急制動するような場合、「tail -f」で監視し続けると動くことがある

shuzo-kino.hateblo.jp でやった事ですが、今日周辺で似たことがあったので。シリアル通信でコマンド送るタイプの装置……たとえばシリアルサーボなんかがあります。 それまでArduino IDEやminicomではちゃんと動いてくれたのに、 echoで単発のコマンド叩いた…

【読書メモ】予算1万円でつくる二足歩行ロボット (I/O BOOKS)

予算1万円でつくる二足歩行ロボット (I/O BOOKS)作者:俊幸, 中村発売日: 2020/06/24メディア: 単行本Fusion360、KiCADなどMaker界隈で人気のツールをつかって、12自由度の小型の人型ロボットを作ろう、という中々攻めた本です。こういう本だとプラ加工はつき…

ArduinoIDEが「パッケージを初期化中…」といって固まったら、ArduinoDataを消すと何とかなるかも

ArduinoIDEが「ライブラリを初期化中…」といって固まったら、ArduinoDataをけすどこかしらのプロセスが半端に止まっているのか、あるいはライブラリの読み込みに失敗している可能性があります。 一個一個追跡していってもいいのですが……当時の私のように急ぎ…

systemdでRasPiにつないだArduinoのデータをシリアルからとる。

RasPiとArduinoをつないで、Arduinoのシリアルから情報を取得します。 Arduino側には、GPSロガー的なものを付けています。 shuzo-kino.hateblo.jp 実際のところ ハードウェア 特に工夫もなく、USBコネクタにArduinoのUSBをつなぐだけ。 通常の電力供給だとギ…

Arduinoで簡易的GPSロガー(三軸加速度つき)をつくる

GPSのF9P、三軸加速度、そしてOpenLogをつかって、GPSロガーを作ってみます。 実際のところ 回路構成 Arduino UNO R3 + SparkFun F9P + SparkFun ADXL335 + SparkFun OpenLog + 電源用モバイルルーター動作クロックが16MHzですが、今回の用途では問題なく動…

Arduinoでsprintfを使い文字列を生成する

Arduinoで文字列を作るときはStringクラスが使えますが 速度を高速化したい、既成のsprintfを利用したC言語プロジェクトを流用したいなどのケースでは 標準でsprintf関数を利用することができます。 実際のところ GPSと加速度を模したデータを一つの文字列と…

OpenLogで手間なくロギングを行う

F9Pと同様、QWIICシステムをつかいます。 公式より引用 実際のところ 試してみる 簡易的に、ディレクトリ直下のAppendMe,txtに値を書いてみます。 #include <Wire.h> #include "SparkFun_Qwiic_OpenLog_Arduino_Library.h" OpenLog myLog; //Create instance const b</wire.h>…

三軸加速度センサADXL335をArduinoで使う

画像はsparkfun公式より引用先日のGPSに続いて、今度は三軸加速度を使っていきます。 今回選定したsparkfun社のADXL335は出力がアナログで出てくるタイプのボードです。 ピンは喰いますが、あとで回路的に細工ができるメリットがあります。 実際のところ int…

STEM教育まわりでネタがないなら、Arduino公式のProjectHubをみるとネタがあるかも?

公式にそういうサイトがあるのは把握してたのですが、 なんか見ないうちにかなり充実してたのでメモ。 create.arduino.ccArduino公式にあるProjectHubはMakers*1が作った作例が集積されており、 特にmotors-roboticsの項目は小型ロボット事例の宝庫です。 エ…

高機能なGPSモジュールZED F9Pをつかう その4:ArduinoのNEMAで出力させる

今書いてまs

高機能なGPSモジュールZED F9Pをつかう その3:Arduinoでつかう

RasPiでPythonという方法のほかに、Arduinoでやる手もあります。 実際のところ Qwiicコネクタを経由した構成はこんな感じ。 導入はIDEなら楽々。 SparkFun_Ublox_Arduino_Library/Example1_GetPositionAccuracy.ino at master · sparkfun/SparkFun_Ublox_Ard…

OpenWrtで自前ネットワークをつくる その2:シリアルでつないだ子機を操作する

shuzo-kino.hateblo.jp の続き。 OpenWrt環境構築済みデバイスにarduinoをつないで、TCP越しでデータのやり取りができるようになります。 実際のところ 9600番ポートで、ttyACM0のデバイスで受信待機したい場合、こんな感じに。 $ socat tcp-l:9600,reuseadd…

【読書メモ】マイコンボードで学ぶ楽しい電子工作 Arduinoで始めるハードウェア制御入門

マイコンボードで学ぶ楽しい電子工作 Arduinoで始めるハードウェア制御入門 (NextPublishing)作者:榊 正憲発売日: 2018/08/10メディア: Kindle版

【備忘録】ATコマンドとHayesコマンド

今まで漠然とATコマンドというものを使ってたのですが……この業界入って10年以上経って、 成立経緯とそれなりに統一された規格であることを知りました……。 たとえば AT+RSTとやるとリセットがかかります。大抵のモジュールで同じようなコマンドなので統一性…

Arduino用の超速CRCチェッカー

CRC(Cyclic Redundancy Check / 巡回冗長符号)は、自前でパケットを作るなら必須の項目です。 これがないと、ダメパケットも受け取ってデータがゴミだらけになったりします。 非力な軽量無線やシリアル線直付けな構成なんかだと、特に。 実際のところ ただ一…

arduino-xmodemで簡易的にArduinoと端末間のファイル送受信をする その2:Arduino to Guest

#include <SD.h> #include <XModem.h> Xmodem xmodem(&Serial, ModeXmodem); void setup() { Serial.begin(115200); delay(1000); //待ち File file = SD.open("/1.log"); xmodem.sendFile(file, "datalog.log"); } void loop() { } 参考もと Google Code Archive - Long-ter</xmodem.h></sd.h>…

arduino-xmodemで簡易的にArduinoと端末間のファイル送受信をする その1:環境の構築

arduino みたいな非力なボードにあるログデータを引っ張り出すのは一苦労です。 scp載せるわけにもいかないし。 そんな時にxmodemプロトコル。 昔ながらの規格ですが、その分非力なモンでも動きます。 さらにteratermからも送受信できるので、古臭い環境との…

switch文では文字列や小数点の値は使えない

あまりに初歩的なポカミスで詰まったのでメモ…… switch構文での比較は整数あるいは文字が対象です。 文字列や小数点は使えません!! 実際のところ var: a variable whose value to compare with various cases. Allowed data types: int, char. label1, lab…

bsearch関数

整列済みの配列や構造体をバイナリサーチできる関数です。 ただ、結構使い方が面倒なのでメモ。 今書いてまs

Arduino/C言語環境でスッカスカな配列を作りたい場合……構造体を使った方が軽くなることもある

shuzo-kino.hateblo.jp でも扱った構造体ですが、これをスッカスカな構造体の代わりに使う手があります。 実際のところ typedef struct { uint16_t key; char* value; } data; const data myDataArr[] { {123, "AB"}, {1023, "CD"}, {5011, "FE"} };

【読書メモ】みんなのM5Stack入門

メディア: この商品を含むブログを見るみんな大好きスタック型つよつよマイコンボードM5Stackの本です。 一部の大きなお友達に大人気のM5StickCに言及した章もあります。他のみんなの〜系と同様、そこまで突っ込んだ記述はないのですが その分、人に勧めやす…

Arduinoで辞書型風のデータを使いたい場合、構造体を使う

考えてみりゃ当たり前なのですが……Arduinoで辞書型やハッシュ型風のデータを使いたい場合、 Typedefをつかった構造体を定義すればつかえます。 実際のところ typedef struct { uint8_t lang; char* sound; char* value; } dataDictionary; const dataDiction…

ROSと相性がよいArduino互換ボードOpenCR その2:環境構築

実際のところ 環境 導入 macのインストール手順https://raw.githubusercontent.com/ROBOTIS-GIT/OpenCR/master/arduino/opencr_release/package_opencr_index.json のURLをボード設定に追加 ボードを追加 最新版をインストール。結構重いので、のんびりと。 …

ROSと相性がよいArduino互換ボードOpenCR

Robotis社がだしているArduino互換のオープンソースボードです。 コアはSTM32系の216MHzでArduino系としては相当パワフル。github.comROSというロボットを動かすミドルウェアとの相性が良いので

Arduino UNO系でも動くLISP実装 uLISP その2:Digital/Analog Pinを扱う

Arduinoの上で動いているので、DigitalやAnalogも使えます。 公式リファレンスによると以下のような関数があります。 Arduino interface millis, for-millis, with-i2c, restart-i2c, with-serial, with-spi, with-sd-card, pinmode, digitalread, digitalwr…

Arduino UNO系でも動くLISP実装 uLISP その1:説明と導入

Arduino UNO系でも動く軽いLISP実装として、 uLISPというのがあります。www.ulisp.com 暫定的目標として、これでロボットアームを動かせるようにしつつ obnizとのシリアル通信連動で遠隔制御できるようにまで持っていきたいと思います。 実際のところ なんと…

つよつよIoTボードobnizがヤバい その3:UARTで通信

軽いボード間の通信なら、UART。 今回はそのUARTをobnizで扱う方法について。 実際のところ 初期設定 デフォの通信レートは公式から情報を拝借すると…… 速度 115200bps 非同期 フローコントロールなし 8bit パリティなし 1 ストップビット 電気的には 5v pus…

【読書メモ】 Arduinoでロボット工作をたのしもう!

Arduinoでロボット工作をたのしもう!作者: 鈴木美朗志出版社/メーカー: 秀和システム発売日: 2014/09/29メディア: 単行本この商品を含むブログ (2件) を見るタイトルまんまの、Arduinoをコントローラーとしたロボットをつくってみようって本です。 ロボット…

プリプロセッサifで入り組んだ内容を記述

実際のところ ifdefと違い、if-else構文に落とし込む事ができます。 やれる事の幅が広がりますね。 #if defined(CREDIT) credit(); #elif defined(DEBIT) debit(); #else printerror(); #endif 参考もと docs.microsoft.com e-words.jp

ifdefの使い方

//#define DEBUG_MODE //... #ifdef DEBUG_MODE Serial.print("Set Patlite: 0x"); Serial.println(state, HEX); #endif defineをコメントアウトしたままだと、ifdef~endifの部分は読み飛ばされます。 参考元 stackoverflow.com docs.microsoft.com