相手がRaspberry PIの時ですが、ラズパイ側のターミナルからMacのファイルを指定するとMacのセキュリティを緩めないといけないから、Mac側のターミナルからアクセスするのが正しいだろうと思う。相手次第ですがね、
こんな感じで、
% scp -r /Users/ファイル or フォルダ指定 pi@raspberrypi.local:~/
本来ならafp使いたかったけど、何故か動かないから代替えでファイル転送使う時に感じたこと。
admin
la vie libre
相手がRaspberry PIの時ですが、ラズパイ側のターミナルからMacのファイルを指定するとMacのセキュリティを緩めないといけないから、Mac側のターミナルからアクセスするのが正しいだろうと思う。相手次第ですがね、
こんな感じで、
% scp -r /Users/ファイル or フォルダ指定 pi@raspberrypi.local:~/
本来ならafp使いたかったけど、何故か動かないから代替えでファイル転送使う時に感じたこと。
admin
今時の言語のGoをしばらく触ってみます。とりあえずのゴールはラズパイでWebサーバー構築してM5Stackとやりとりすること。node.jsと同等の機能が実現できるはずで、コンパイラーであるだけ高速でしょう。
とりあえずM1 Macと初代に限りなく近いRaspberry PIにインストールしてみました。
— M1 Mac環境 —
<install>
% brew install go
するだけ、
% go version
go version go1.19.4 darwin/arm64
が今の最新版数のようです。
VScodeはGoマークの拡張機能を二つインストールしただけでソースコード編集ができます、追加で必要ならばインストールを要求されます。
<directory>
ユーザディレクトリ直下にgoという名前で作成されます。
<初めてのソース>
定番ですが、
package main
import "fmt"
func main(){
fmt.Println("hello Go")
}
WordPressのアドオン古くてGo言語選択できないので近そうなC++にしています。
import “fmt”は他言語のimport “sys”のようなものでしょうか。
<module>
そこそこの規模になるとモジュール化が必要ですが、先ほどのソースディレクトリにモジュール用のディレクトリ作成してモジュールを作成します。
% mkdir mod
% cd mod
% go mod init mod
% cp ../hello_go.go ./
% go mod tidy
% go build
% ./mod
hello Go
全体のディレクトリ構成は以下のようになります@VScode
通常の% go runでは実行ファイルはテンポラリに作成され実行後に削除されるようですが、実行ファイルを残すためには% go buildを使います。
このようにgoコマンドのパラメータ指定で作業をコントロールできるようになっています。
— RaspberryPI 環境 —
https://zenn.dev/ysmtegsr/articles/20d6e0c7159be2
を参考にインストール、
$ wget https://go.dev/dl/go1.19.4.linux-armv6l.tar.gz
$ sudo tar -C /usr/local -xzf go1.19.4.linux-armv6l.tar.gz
/usr/local/go/bin/に移動して、
$ ./go version
go version go1.19.4 linux/arm
まだパスが通っていない、
パスを通す、
$ echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
$ echo 'export PATH=$HOME/go/bin:$PATH' >> ~/.bashrc
$ source ~/.bashrc
Macと同じような簡単なソースファイル(main.go)をgo_prj配下に作る、
package main
import "fmt"
func main() {
fmt.Println("Hello world")
}
$ go mod init go_prj
$ cd go_prj
$ tree ../go_prj
../go_prj
├── go.mod
├── main
└── main.go
$ go run
コンパイル実行だとRaspberryPIでは数秒待つから遅い
$ go build -o main
$ ./main
で実行ファイル呼び出すと高速(当然ですが)、この起動時間待ちの雰囲気はnode.jsの起動でも同じだからRaspberry PiではGoをbuildして使うのが普通になると思います。
Go言語の第一印象
随所に現代的(ビルド環境やソースコードの検証など、まだイントロしか読んでいないからこの程度)なところを見ることができます。既存の言語はバージョンアップでも過去との互換を考えないといけないわけですが、新たな言語はその時点で必要な機能を順位づけして言語仕様や開発環境を決めることが出来るわけですから。
admin
現在は普通にSpiceとして使えるシミレーションソフトも無償なんですね。ただのものはとりあえず入れてみました。
ただ、MacだとU.IがWindowsとは別物で、右クリックで出てくるメニューから機能を設定することになります。従って初期画面は素っ気ない感じです。
使い方は例えば回路CADであるKiCadなどと類似ですね。所詮回路図作成必要だから。
図は、L/C/Rの直列回路に正弦波のバースト信号を入力した時の応答シミレーションです。
電圧源と抵抗とインダクタの接続点の二箇所の波形を表示させています。デバイスのSpiceモデルは潤沢に整備されているから、アナログ回路のシミレーションには使えます。とはいっても道具ですから、基本的なリテラシィがないと結果が無意味なのは他も同じ。
admin
モーターの駆動にはNiH単三4本使っていますが、電池電圧が低下するとトルクも変わってくるのでPIDパラメータもその変化に対応して変えないと安定状態を保てなくなるという当然の結果。
現実的な対応としては、
① 電池電圧を安定化する
少なくともDD-CON必要だし、電圧ドロップ考えると電池電圧足りないだろうからハード作り直しレベル
② 電池電圧の変化に応じてモーターへの最低印加電圧を可変する
float MOTOR_POWER_MIN = 100;
float MOTOR_POWER_MAX = 250;
ここでMOTOR_POWER_MINを変えてやる、今はモーターが回り始めるぐらいの電圧になるように調整していますが、当然電圧低下するとこの値を変えてやらないとダメなのは自明。
理屈ではM5StackのADコンバーター使って可変することはできそうだね、やるやらないは別にして。
admin
SDカードを使うのは、特に書き込み中のデータ保証ができないのがM5Stack、メモリはそこそこ余裕があるのでメモリ上にイメージファイルを展開してそれを表示する関数、