はじめに
- @matsujirushi さんのだれか書いてくれないかなー(過疎ってる をみてしまいまして、
- 一種の義侠心です
- Grove Base HAT for RasPiは真っ直ぐグイっとさすのだということを書いておきます
そんな当たり前のことをなぜ書いたの?
- 経緯を書きます
- ここからが長いです
- Seeed UG Advent Calendar 2020に参加していらっしゃる方にとっては、そしていまこの記事を書いている時点の私にとっても当たり前のことになりましたが、
-
このセットが手元に届いたとき私は固まりました
- RasPi4
- Grove Base HAT for RasPi
- Grove Button(P)
- Grove Green LED
- Grove AHT20 I2C (温湿度センサ)
- AC-DCアダプタ(Type-C, 5V3A)
- microSDカード(16 GB)
- かろうじて、
RasPi4
、AC-DCアダプタ
、microSDカード
はわかります- 令和2年なのにいまだにRaspberry Pi 2を使っているからです
- そのくらいの経験はあるのですが他のものはさっぱりわかりませんでした
- 話が前後しますが私がこのセットをいただいたのは
-
【オンライン】豪華プレゼント付!Elixir/Nerves(ナーブス)体験ハンズオン!でハンズオンのお手伝いをしているからです
- Seeed株式会社様からのクリスマスプレゼントとのことありがとうございます!!!
- で、いろいろあって図入りの説明書(イベントの台本みたいなもの)をいただいたのですが、Grove Base HAT for RasPiを
RasPi4
にどこまで差し込んでいいものやらはじめわかりませんでした- あんまり力まかせにやるとピンを曲げやしないか
- ふわっと乗せるだけでいいんかなあ?
- どうして思い切る気になったのかは忘れました(画像検索した!?)
- とにかくドキドキ、ヒヤヒヤしながら差し込みました
- スピード・スリル・サスペンス 飯塚オートです
- 素人は躊躇しがちなんです
- 長々と書きましたが無事、組み立てられました
- この記事のタイトルからするとここまでで終わりです
- それではちょっと寂しいので、
- ハードウェア的なことよりはやや私の得意なNervesの話を以下書きます
Nerves
-
NervesはElixirのIoTでナウでヤングなcoolなすごいヤツです です
- Nervesを作っているJustin Schneckさんが、 しているので間違いないです
-
Grove Green LEDとGrove Button(P)を差し込んで、
IEx
(Elixir's interactive shell)から光らせたり、ボタンの状態を取得してみます - 軽くできる
環境構築
以下ご参考にされてください。
- 公式のGetting Started
- @takasehideki先生のElixirでIoT#4.1:Nerves開発環境の準備
- @takasehideki先生のElixirでIoT#4.1.2:[使い方篇] Docker(とVS Code)だけ!でNerves開発環境を整備する
- @kentaroさんのウェブチカでElixir/Nervesに入門する
mix nerves.new
$ export MIX_TARGET=rpi4
$ mix nerves.new good_evening_nerves
$ cd good_evening_nerves
mix.exs
defp deps do
[
# Dependencies for all targets
{:nerves, "~> 1.7.0", runtime: false},
{:shoehorn, "~> 0.7.0"},
{:ring_logger, "~> 0.8.1"},
{:toolshed, "~> 0.2.13"},
# Dependencies for all targets except :host
{:nerves_runtime, "~> 0.11.3", targets: @all_targets},
{:nerves_pack, "~> 0.4.0", targets: @all_targets},
# Dependencies for specific targets
{:nerves_system_rpi, "~> 1.13", runtime: false, targets: :rpi},
{:nerves_system_rpi0, "~> 1.13", runtime: false, targets: :rpi0},
{:nerves_system_rpi2, "~> 1.13", runtime: false, targets: :rpi2},
{:nerves_system_rpi3, "~> 1.13", runtime: false, targets: :rpi3},
{:nerves_system_rpi3a, "~> 1.13", runtime: false, targets: :rpi3a},
{:nerves_system_rpi4, "~> 1.13", runtime: false, targets: :rpi4},
{:nerves_system_bbb, "~> 2.8", runtime: false, targets: :bbb},
{:nerves_system_osd32mp1, "~> 0.4", runtime: false, targets: :osd32mp1},
{:nerves_system_x86_64, "~> 1.13", runtime: false, targets: :x86_64},
{:circuits_gpio, "~> 0.4"} # add
]
end
$ mix deps.get
- Wi-Fiの設定
- 必要に応じて(
ssh
接続して便利なので私はいつも設定している) - https://hexdocs.pm/vintage_net/cookbook.html#wifi
- 必要に応じて(
config/target.exs
config :vintage_net,
regulatory_domain: "US",
config: [
{"usb0", %{type: VintageNetDirect}},
{"eth0",
%{
type: VintageNetEthernet,
ipv4: %{method: :dhcp}
}},
{"wlan0",
%{
type: VintageNetWiFi,
vintage_net_wifi: %{
networks: [
%{
key_mgmt: :wpa_psk,
ssid: System.get_env("MY_NETWORK_SSID"),
psk: System.get_env("MY_NETWORK_PSK"),
}
]
},
ipv4: %{method: :dhcp}
}}
]
$ mix firmware
- microSDカードをパソコンに挿しまして
$ mix burn
- こんがり焼き上がりましたら、RasPi4に挿して、そうですね〜 1分くらい瞑想でもしながら待ちますか
- ポクポクちーん
$ ssh nerves.local
IEx
でLEDつけよう
-
ssh
するとIEx
(Elixir's interactive shell)が立ち上がるのでそこにElixirのプログラム書きます
iex> {:ok, gpio} = Circuits.GPIO.open(16, :output)
{:ok, #Reference<0.4009724731.268566546.204049>}
iex> Circuits.GPIO.write(gpio, 1)
:ok
-
D16
っちゆうところに挿しているので、16
をCircuits.GPIO.open/3しています -
ついた
- 消すときは
iex> Circuits.GPIO.write(gpio, 0)
:ok
ボタン押したときの入力を受け取ろう
iex> {:ok, gpio} = Circuits.GPIO.open(5, :input)
{:ok, #Reference<0.4009724731.268566546.204050>}
iex> Circuits.GPIO.read(gpio)
0
- ボタンは、
D5
っちゆうところに挿しているので、5
をCircuits.GPIO.open/3しています - 押していないときは0が返ります
iex> Circuits.GPIO.read(gpio)
1
- 押しながらCircuits.GPIO.read/1すると、
1
が返ります!!! - ボタン押したら、光らせるとかももちろんできるのですが、Grove Base HAT for RasPiは真っ直ぐグイっとさすことだけが言いたい記事で、それだと寂しいのでNervesを引っ張りだしてきて、長々書きましたが、だんだん1明後日の方向に行き始めたのでここらへんで筆を置きます
- 真っ直ぐグイっと挿したGrove Base HAT for RasPiのおかげで簡単にボタンとかLEDとか取り付けることができて、手先が不器用な私でもいろいろなものをつけたり外したりができそうで、いろいろやってみよう! という気になってきました
- 私と同じように、ハードウェアに自信がなかったり、手先が不器用な方は、モジュール(っていえばいいんですかね)を探しにhttps://www.seeedstudio.com/へGo!!!
- 私の不器用具合をご紹介
- 抵抗だなんだといろいろ不器用につなげたもの
- サイコロをつくる(Elixir, Nerves)
Wrapping Up
- Grove Base HAT for RasPiは真っ直ぐグイっとさす
- Seeed株式会社様ありがとうございます!!!
- Enjoy Elixir!!!
-
はじめから!? ↩