工作と競馬

電子工作、プログラミング、木工といった工作の記録記事、競馬に関する考察記事を掲載するブログ

Raspberry piで、scipyをインストールしたとき、

sudo apt-get install scipy

だと、0.18.1がインストールされる。

しかし、バージョンが古いので、

sudo pip install scipy --upgrade

をやるが、途中で止まる???

と思ったが、単に時間がかかっているだけで、1.5時間後くらいに、以下の表示が出て終了した模様。

Successfully built scipy
Installing collected packages: scipy
  Found existing installation: scipy 0.18.1
    Uninstalling scipy-0.18.1:
      Successfully uninstalled scipy-0.18.1
Successfully installed scipy-1.1.0

念のため、バージョンを確認のため、

import scipy
scipy.__version__

をすると 、無事1.1がインストールされていた。

ちなみに、pandasについても同様で、

sudo pip install pandas --upgrade

で時間はかかるが、ちゃんとインストールされた。

  • 自身のディレクトリ
cd /d %~dp0

概要

AWSのGreengrassを使い、遠隔でGPIOを操作しLEDの点滅ができた。


背景と目的

先日のGreengrass使い始めに続き、ドキュメントに沿っていろいろ試したところ、遠隔でエッジのLambda関数をトリガする方法もわかった。また、エッジのローカルリソース(ドライブや、シリアルポート、GPIOなど)にもアクセスできるとの記述がある。そこで、Raspberry PiのGPIOを遠隔で操作してみることにした。


詳細

0.参考資料

AWSドキュメント内の以下URLを参考にした。GPIOにアクセスできるとの旨が書いてある。

https://docs.aws.amazon.com/ja_jp/greengrass/latest/developerguide/access-local-resources.html


1.Lambda関数

Lambda関数は、基本的にRaspberry Pi上でGPIOをいじるときと同じコード。

# coding:utf-8
import sys
import greengrasssdk
import RPi.GPIO as GPIO
import time
import platform
import os
import logging

# Create a Greengrass Core SDK client.
client = greengrasssdk.client('iot-data')

# GPIOの設定
GPIO_NUM = 4
GPIO.cleanup()
GPIO.setmode(GPIO.BCM)
GPIO.setup(GPIO_NUM, GPIO.OUT)

def function_handler(event, context):
    try:
        client.publish(topic='LRA/test', payload="Sent from AWS Greengrass Core.")
        GPIO.output(GPIO_NUM, GPIO.HIGH)
        time.sleep(1)
        GPIO.output(GPIO_NUM, GPIO.LOW)
        time.sleep(1)
    except Exception as e:
        logging.error("Experiencing error :{}".format(e))
        client.publish(topic='LRA/test', payload="Experiencing error")
    return


2.リソースの設定

Greengrass>グループ>リソースで、/dev/gpionumというリソースに対して、Lambda関数がアクセスできるように設定した。

リソース


3.サブスクリプションの設定

以下2つを設定した。IoT Cloud側からLRA/test/triggerトピックに、送信することで、Lambdaが呼び出せる。

  • "LRA/test/trigger"トピックをIoT Cloud ⇒ Lambda関数で設定
  • "LRA/test"トピックをLambda関数 ⇒ IoTCloudで設定


4.テスト

以上の設定で、Greengrass CoreにLambdaをデプロイし、IoT Cloud側からLRA/test/triggerトピックにメッセージを送信した。ところ、GPIO4に接続したLEDが1秒間光り、"LRA/test"トピックに、Lambdaからのメッセージが来た。正しく、Lambdaが呼び出せている。


まとめ

AWSのGreengrassを使い、遠隔でGPIOを操作しLEDの点滅ができた。

概要

AWSのGreengrassを使ってエッジにLambdaをデプロイし、実行させてみた。


背景と目的

AWSのGreengrassを使ってみようと思っていながらしばらく時間がなくトライしていなかった。少し時間ができたので使ってみる。


詳細

0.参考

https://aws.amazon.com/jp/greengrass/features/

https://aws.amazon.com/jp/greengrass/faqs/

https://docs.aws.amazon.com/ja_jp/greengrass/latest/developerguide/what-is-gg.html

基本的なやり方は、上記のURLを参考に進めた。


1.Raspberry Piの設定

https://docs.aws.amazon.com/ja_jp/greengrass/latest/developerguide/module1.html

上記URLにある手順に従って実施したのだが、私の環境の場合、Memory cgroupという項目でDisabledが出た。そこで、

https://www.raspberrypi.org/forums/viewtopic.php?t=203128

に従って、/boot/cmdline.txtに以下を追記して再起動。

cgroup_enable=cpuset cgroup_enable=memory cgroup_memory=1


2.Greengrass Core SDKのインストール

https://docs.aws.amazon.com/ja_jp/greengrass/latest/developerguide/module2.html

上記URLに従って、作業を実施。

ただし、以下を追加で実施した。なぜかというと、はじめgreengrassdの起動がうまくいかず、トラブルシューティングを見ながら、権限の問題がありそうだったから。(ただし、これは本当に要るのか?はわからない。)

sudo chmod 755 /greengrass -R


3.Lambdaのデプロイ

https://docs.aws.amazon.com/ja_jp/greengrass/latest/developerguide/module3-I.html

次に、Lambda関数をデバイスにデプロイした。作業手順は上記URLに従っている。

コンソールのGreengrass groupで、正常に完了しましたという表示になればOK.


4.テスト

AWS IoTのコンソールで、テスト。

hello/worldトピックをサブスクライブした結果、定期的にエッジで実行されたLambda関数から、MQTTメッセージがパブリッシュされている。


b8b280c8

まとめ

AWSのGreengrassを使ってエッジにLambdaをデプロイし、実行させた。

概要

フルカラーのLEDアレイを作ることにした。今回は、設計を行った。


背景と目的

とある事情で、LEDアレイを作成することになった。まず、仕様を決め、設計する。


詳細

1.仕様

LEDアレイは、各種製品が電子部品屋で売っているのでそれを使えばいいはずなのだが、

  • 5Vのモバイルバッテリーで駆動
  • 取り付け先の寸法にきっちり合わせる必要がある
  • 安く

という仕様を満たす必要があるため、いちいち自作が必要になってしまった。


2.設計

いろいろ悩んだ挙句、

を使うことにした。回路図は以下。5Vで各LEDに約15mAが流れるように抵抗を設定。各色のLEDをスイッチングするトランジスタを用意。

回路図

基板上の実装パターンは、以下。これを12個分繰り返す。基板上に、角型フルカラーLEDを配列して実装する。はんだ付け箇所が多くてめんどくさそうだが、仕方ない・・・。

橙が5V、R、G、Bがそれぞれ信号線で、トランジスタのコレクタに接続する。トランジスタはArduinoなどで駆動する予定。そちらの設計はこれから。

配線図

まとめ

フルカラーLEDアレイの設計ができた。次は実装する。

このページのトップヘ