Bye Bye Moore

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

Iono PiのI/Oをいじる その3:RTCから時刻をとる/設定する

"RTC DS1307"という品種で、CR1220ボタン電池で2年維持できるそうです。
ちょっと違うけど、大体同じもの。
RasPi 3B+でi2c経由のRTCを使いたいなら、今回の手順は流用できるかもです。
www.switch-science.com

実際のところ

モジュールはi2c通信を使っています。
なので、まずraspi-configか手動でi2cを有効にします

$ sudo apt-get update
$ sudo apt-get install i2c-tools

公式からダウンロード用shellを導入。

$ cd #{YOURDIR}
$ wget http://sferalabs.cc/files/strato/rtc-install
$ chmod 755 rtc-install
$ sudo ./rtc-install

終わったら、お好みでお片づけ。

$ rm rtc-install

設定を反映するため、リブートします。

$ sudo reboot

これで有効になっているはず。
読み出しは"-r"オプション

$ sudo hwclock -r 

現状の内部タイマーと同期させるには"-w"オプション

$ sudo hwclock -w 

Iono PiのI/Oをいじる その2:シェルからI/Oに手をつっこむ

iono Piの環境を導入すると、C用のライブラリと一緒にシェルで使えるコマンド群がついてきます。
ちょっとした雑用なら、シェルでゴリゴリ書いた方が楽だったりするので大変助かる昨日ですね。

実際のところ

電源LED以外に動作用LED……Arduinoでいえば13番LEDがついてます。
こいつを店頭させる場合

$ iono led on

オフにするなら

$ iono led off

やばい程簡単で変な笑いがでてきます。

他のインターフェイスとして、出力はRelay、Open Collector
入力はAnalog Inputs、Digital Inputsが用意されています。

【読書メモ】ソフトウェアアーキテクトが知るべき97のこと

ソフトウェアアーキテクトが知るべき97のこと

ソフトウェアアーキテクトが知るべき97のこと

Iono PiのI/Oをいじる その1:環境導入

Iono PiにはI/Oをいじる公式のライブラリが用意されています。

実際のところ

gitのある状態で

$ git clone --recursive https://github.com/sfera-labs/iono-pi-c-lib.git
$ cd iono-pi-c-lib
$ sudo chmod +x build
$ sudo ./build
$ iono
usage: iono <command>

Commands:
   -v              Print the version number of the ionoPi library
   led on          Turn on the green LED
   led off         Turn off the green LED
   o<n> open       Open relay output o<n> (<n>=1..4)
   o<n> close      Close relay output o<n> (<n>=1..4)
   oc<n> open      Open open collector oc<n> (<n>=1..3)
   oc<n> close     Close open collector oc<n> (<n>=1..3)
   di<n>           Print the state ("high" or "low") of digital input di<n> (<n>=1..6)
   di<n> -f        Print the state of digital input di<n> now and on every change
   ai<n>           Print the voltage value (V) read from analog input ai<n> (<n>=1..4)
   ai<n> -r        Print the raw value read from the A/D converter's channel corresponding
                   to analog input ai<n> (<n>=1..4)
   1wire bus       Print the list of device IDs found on the 1-Wire bus
   1wire bus <id>  Print the temperature value (°C) read from 1-Wire device <id>
   1wire ttl<n>    Print temperature (°C) and humidity (%) values read from the
                   MaxDetect 1-Wire sensor on TTL<n> (<n>=1..4)
   wiegand <n>     Wait for data to be available on Wiegand interface <n> (<n>=1|2)
                   and print number of bits and value read
   wiegand <n> -f  Continuously print number of bits and value read from Wiegand
                   interface <n> whenever data is available

つよつよインターフェイス持ちRasPi拡張 Iono Pi

f:id:shuzo_kino:20190214234541p:plain
公式より借用


Raspberry Piは手軽に使えるSBCです。
が、少し凝ったことをしようとするとRTCや強力なI/Oがほしくなったりします。
今回紹介するIono Piはイタリア発のRasPi拡張で、先ほどの問題をクリアしてPLCのように扱う事ができるようになります。

4系統のオープンコレクタ出力 、9~24Vの外部電源入力、GPIOに産業用途に強いRS-485といった拡張のI/Oがつきながら、
かつRasPiのLANやUSBのポートは空いているという素敵仕様!
基本、そのまんま上位互換として採用できます。

そのうえ、公式の方でオープンなPLC開発環境CODESYSの利用法も供給してるので
RasPiをぶん投げてPLCとして使っちゃう事も可能です。
shuzo-kino.hateblo.jp

参考もと

www.sferalabs.cc

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

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

実際のところ

Arduino IDEで初期化したあと、ふとsttyで状況を確認してみたところ、
当然というか以下のような値になってました。

$ sudo stty -F /dev/ttyUSB0
speed 115200 baud; line = 0;
min = 0; time = 0;
-brkint -icrnl -imaxbel
-opost
-isig -icanon -iexten -echo -echoe -echok -echoctl -echoke

今までボーレート位しか設定しなかったのだから、それじゃ動かなくて当然ですね。

というわけで、上のパラメーターに則り初期化コマンドを修正します。

$ stty -F /dev/ttyUSB0 speed 115200 min 0 -brkint -icrnl -imaxbel -opost -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke

これで無事に通信できるようになりました。

読むときは

$ tail -f /dev/ttyUSB0

書くときは開いた状態で

$ echo -n "YOUR MSG" > /dev/ttyUSB0

参考もと

superuser.com

Google Spreadsheet独自のImage関数で画像をセルに流しこむ

Google Spread sheet独自関数として、Image関数というのがあります。
これはその名の通り、インターネット上のオープンアクセス状態にある画像をセルに流し込むという、なかなか豪快なやつです。
報告書自動化なんかで役に立ちますよ(白目

実際のところ

画像はWIkipedia日本語版の「秀逸な画像」からLaitche様の「千代紙による折鶴。」を借用しました。
ja.wikipedia.org

普通に使う

最小構成では、セルに合わせ、アスペクト比が維持された状態で貼り込まれます。

=IMAGE("https://upload.wikimedia.org/wikipedia/commons/f/f8/%E6%8A%98%E9%B6%B4_WUXGA.jpg")

f:id:shuzo_kino:20190212222454p:plain

大きさを指定する。

二番目のオプションに"4"を設定すると、続く二つの変数で大きさを指定できます。

=IMAGE("https://upload.wikimedia.org/wikipedia/commons/f/f8/%E6%8A%98%E9%B6%B4_WUXGA.jpg",4,1200/4,1920/4)

f:id:shuzo_kino:20190212222515p:plain

参考もと

support.google.com