Bye Bye Moore

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

arduino

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

webIoPiでRasPiのIOにブラウザから簡易的にアクセスする その3:ArduinoとSerial経由で接続する

多少凝ったセンサーやインターフェイスを用意したい場合 Arduinoの力を借りるケースありますよね。 ボタンたくさんつけたりとか。付属のwebiopi.jsとシリアルをつかうと、シリアル経由でArduinoと通信できます。 実際のところ Arduinoは公式サンプルについて…

raspberry PiとArduinoをシェルだけで通信する場合、ちゃんと通信レートは初期化しないとダメ

どうしてもシェルだけで完結させたいアプリがあったものの、今までことごとくシェル単体での初期化に失敗していました。 仕方なくArduino IDEで通信したのですが……これではいつまで経ってもスタンドアローンにならないので調査。 その結果、実に初歩的なミス…

【読書メモ】超特急Web接続!ESPマイコン・プログラム全集

超特急Web接続!ESPマイコン・プログラム全集[CD-ROM付き] (ボード・コンピュータ・シリーズ)作者: 国野亘出版社/メーカー: CQ出版発売日: 2019/01/22メディア: 単行本この商品を含むブログを見るみんな大好きWiFi接続可能な超高性能マイコンESP32の特集ムッ…

Groveシステムのモジュールを使って楽にプロトタイピングする

GroveシステムはMaker系の人がプロトタイピングでよく使うコネクタ規格です。 wiki.seeedstudio.com シンプルな4本線で「アナログ」「デジタル」「UART」「I2C」を扱うという豪快な仕様。 電源電圧や実際に繋ぐ種類はユーザーが判断しろって事のようです……俠…

bitSet/bitClear関数で特定のビットをHigh/Lowする

実際のところ Xという変数のA番目ビットをHighにするbitSet関数、 Aは最下位(右端)ビットを0としてA番目です。 bitSet(X, A); LowにするのはbitClear関数。 bitClear(X, A); 参考もと www.arduino.cc www.arduino.cc

Arduinoの割り込み許可/禁止関数(interrupts/noInterrupts)はそれぞれのボード固有の命令の読み替えをしてくれている

割り込み許可はinterrupts関数、割り込み禁止はnoInterrrupts関数。 というわけで……余計な最適化を阻止したいなら 割り込み禁止と許可の関数でサンドイッチ。 noInterrupts(); //割り込み禁止 // ...ここに割り込み禁止な内容を interrupts(); //用が済んだ…

cuコマンドで簡単にシリアル通信をやる

実際のところ $ cu -s 9600 -l /dev/ttyUSB0やめるときは "~"の後に"." 参考もと 【入門】Linux機にUSB-シリアル変換ボードをつなげてみる【備忘録】 | 團長の小部屋 https://linuxjf.osdn.jp/JFdocs/Remote-Serial-Console-HOWTO/index.html ttyについて tt…

Raspbian Lite系で急遽デスクトップ環境が必要になったとき

Raspbian Liteを入れたけど、退っ引きならない事情……たとえばArduino IDEのようなGUI前提のツールを使う時……などで 急遽デスクトップ環境が必要になった際の手順です。いまどきはPIXILという超格好いいあれがあるのですが……まぁ、導入コストは重いです。 実…

raspi 3b+にarduino ide環境をつくる

ARM用1.8.7系IDEのリンクは以下の通り。 https://downloads.arduino.cc/arduino-1.8.7-r1-linuxarm.tar.xz マグカップやTシャツが御用入りの際は、ぜひロゴ入りのやつを買ってくださいね。 $ #{YOUR_DOWNLOAD_DIR} $ tar -xvf arduino-1.8.7-r1-linuxarm.tar…

【読書メモ】ICT農業の環境制御システム製作: 自分でできる「ハウスの見える化」

ICT農業の環境制御システム製作: 自分でできる「ハウスの見える化」作者: 安東赫,中野明正,栗原弘樹出版社/メーカー: 誠文堂新光社発売日: 2018/08/16メディア: 単行本この商品を含むブログを見る農業系雑誌「農耕と園芸」に掲載されていた連載をもとにした…

【自習メモ】typedefとusing

typedefやusingはc/cppにて独自のデータ型を作るときに使用する予約語です。 マイコンを跨いだ実装でありがちな取り扱いビット数の差も、これらを用いて吸収できます。 基本型の機能を極力使いたいけど、一部振る舞いだけ変えたいとき、 あるいはアーキテク…

avr-libにはrint()がなく、lrint()はある

arduinoのavr系実装ではavr-libが使われています。 実際のところ rint()は浮動小数点をまるめ込んで整数にしてくれる奴です。 いくつか派生関数があるのですが、avr-libにはlong型を返すlrint関数しかありません。 'rint' is not declare in this scope とか…

RobotDyn STM32F103 Dev.Boardのシリアル通信

shuzo-kino.hateblo.jp の続きRobotDyn STM32F103 Dev.Boardは小型でありながら、 シリアル通信用のポートが3個も存在しています。 なので、一つをセンサー、もう一つをPCとの通信に使ってもまだ余るという豪華仕様。 本体が軽く、短時間ならボタン電池でも…

オープンソースな実用ロボットアームTsukArm その5:グリッパー

shuzo-kino.hateblo.jp 皆さんお待ちかね、グリッパーの操作です。 他のサーボとは異なり、確度でなく1.0 ~ 0.0の範囲で設定を行うものになります。 実際のところ // グリップを開く builder.setGripper(1.0); queue->enqueue(builder.build()); // グリップ…