kmaepuの日記

趣味の電子工作もくもくを気ままに記事にしてます(=゚ω゚=)

Node-REDのMQTTブローカノードを使ってみた

概要

enebular上のNode-REDにMQTTブローカを立てて、通信してみました。備忘録として残します。

 

手順

1.MQTTブローカノードをインストール

 

node-red-contrib-mqtt-broker 

 

f:id:kmaepu:20190725091002p:plain

 

2.MQTTテストフロー作成

次に示す4種類のノードを使用しました。

・MQTT inノード

・MQTT outノード

・injectノード

・debugノード

 

ノードを次のように配置し、接続しました。

f:id:kmaepu:20190725091318p:plain

 

MQTT outノードの設定箇所は次の通りです。

・プロパティ

 - トピック:/pub

 - Qos:2

・接続

 - サーバ:localhost

 - ポート:1883

・セキュリティ

 - ユーザ名:任意

 - パスワード:任意

 

MQTT inノードの設定はMQTT outノードと同じです。

デプロイ後、injectボタンを押すとmsg.payloadの内容がデバッグコンソールに表示されます。
 

 

f:id:kmaepu:20190725090953p:plain

 

おわりに

 ここまでやって5分でした。

 Node-REDお手軽ですね!!

FT232HのMPSSEでSPIモード1を使うときの落とし穴(備忘録)

 

FT232HのMPSSE機能を利用し、USB-SPI変換をしました。

接続するSPIスレーブデバイスがSPIモード1で動作します。

 

MPSSEのデータシートを見ると、OPCODE"0x01"が使えそうです。

 

f:id:kmaepu:20190718111037p:plain

しかし、このまま使う事ができませんでした。

原因はsclk初期値を"1"にしていない事でした。

 

流れとしては、

(1) CS :Low、sclk:High

(2)データ送信

(3)CS:HIgh、sclk:Low

 

データシート見ても見当たらなかったような...。

いろいろFT232Hの情報を集めてやっとたどり着いたのが

トランジスタ技術 2006 1月号

 

こちらにはFT2232Hの使い方が細かく掲載されています。

 

トラ技は神!

 

 

Raspberry PiでNode-REDを実行する

 概要

 Raspberry PiでNode-RED実行環境を構築した備忘録です。

 

開発環境

  • ターゲットデバイス : Raspberry Pi 2
  • ターゲットOS :Raspbian Buster Lite
  • Node.js : v10.15.2
  • npm : v6.10.0

手順

1.パッケージのアップデートをしておく

sudo apt-get update 

sudo apt-get upgrade

 

2.Node-REDとnpmをインストール

sudo apt-get install nodered 

update-nodejs-and-nodered

 

3.Node-REDの自動起動設定

sudo systemctl enable nodered.service

 

自動起動したくない場合は、通常の起動コマンドを使用する。

node-red-start

 

4.Node-REDエディタを展開

ブラウザから↓URLにアクセス。

http://raspberrypi.local:1880/

 

↓エディタ画面

 

f:id:kmaepu:20190707132227p:plain

 

メモ

Raspberry PiにおけるNode-RED設定ディレクトリは次のパスです。

 

 /home/pi/.node-red

 

 

 

 

 

 

ZYBOのブートSDカード作成 ~Debian~

概要

ZyboのブートSDカード作成を行った備忘録です。

 

準備

次の作業は完了済みとして、root file sysytemの書き込みについて記述しています。

・ブートファイルは準備済み

・SDカードのパーテション編集

・SDカードにfat32ext4ファイルシステム生成

・ブートパーテションにブートファイルを配置

 

開発環境

SDカード作成はVMware上のUbuntuで行っています。

 

参考 

FPGAといえばこのブログですね(^^)
marsee101.blog19.fc2.com

 


marsee101.blog19.fc2.com 

手順

LinaroからLinux imageをダウンロードします。

Linaro Releases

https://releases.linaro.org/debian/images/installer-armhf/17.08/

 

今回は

 linaro-stretch-installer-20170706-43.tar.gz

を使用します。

 

 ※古いバージョンだとDebianのサポートが終了していることがあり、"apt-get update"でエラーが発生するので新しいバージョンにしました。

 

デスクトップにダウンロードしてきて解凍します。

【ダウンロードコマンド】

 sudo wget https://release.linaro.prg/debian/images/installer-armhf/17.08/linaro-stretch-installer-20170706-43.tar.gz

 

【解凍コマンド】

 sudo tar -zxvf linaro-stretch-installer-20170706-43.tar.gz

 

解凍すると"binary"ディレクトリができます。

SDカードをマウントして、パーテションext4にbinary下のファイルシステムをコピーします。

 

【マウント先ディレクトリ生成コマンド】

 sudo mkdir /mnt/fat32

 sudo mkdir /mnt/ext4

 

【SDカードのマウントコマンド】

sudo mount /dev/sda1 /mnt/fat32

sudo mount /dev/sda2 /mnt/ext4

 注意:sda1 ➡ sda2の順にマウントしないとエラーが発生してマウントできない。

 

Debianファイルシステムをコピーするコマンド】

sudo mv ./binary/* -t /mnt/ext4

 

Debianファイルシステムが書き込まれたことを確認します。

ディレクトリ確認コマンド】

ls /mnt/ext4

 

確認出来たらSDカードをアンマウントします。

【アンマウントコマンド】

sudo umount /dev/sda1

sudo umount /dev/sda2

 

ZYBOにSDカードをセットして、シリアルコンソールで起動確認して終了です。

 

ZYBOで動作するDebianにユーザを追加する(ホームディレクトリ生成)

概要 

ZYBOのSDカードブートでDebianを利用しています。

デフォルトでrootユーザになっているので、新しくユーザを追加した時の備忘録です。

 

手順

1.vimをインストール(デフォルトでインストールさえていなかったため)

【コマンド】

  sudo apt-get install vim

 

2.ユーザ作成

【コマンド】

  adduser ユーザ名

 

対話形式で設定が進みます。"zybo"というユーザを追加した時のログです。

ls /home でホームディレクトリが生成されていることを確認できます。

f:id:kmaepu:20190701092343p:plain

 

注意点

ユーザ追加のコマンドで

 useradd

がありますが、Debianの場合このコマンドだとホームディレクトリが生成されないようです。

Node-RED デスクトップ v0.9.0でカスタムノードを作成する

概要

 Node-REDデスクトップ版のV0.9.0が公開されました!

特徴を見てみましょう。

↓公式サイトから抜粋

Node-RED デスクトップ | Node-RED Desktop

f:id:kmaepu:20190614094355p:plain


Node generator組み込み済み」。これはとてもうれしい機能です。

今まではコマンドプロンプトでコマンドを打っていて面倒でした。

functionノードからカスタムノードを作成

早速、Node-REDデスクトップ版でカスタムノードを作ってみますインストールについては、公式サイトからzipまたはexeをダウンロードしてインストールするだけでとっても簡単でした。

ウイルスバスターがインストールを阻害してくるのが面倒な程度です。

 

次のようなフローを作成しました。

injectノードからtimestampを受け流すだけのfunctionノードです。

f:id:kmaepu:20190614095203p:plain

 

functionノードを展開して、ツールバー「tool」→「Generate a custom node」をクリックするとカスタムノードが生成されます。

f:id:kmaepu:20190614100218p:plain

 

完了するとエクスプローラが立ち上がり、生成されたファイルを確認できます。

生成されたノードファイルは次のパスにあります。

 C:\Users\ユーザ名\.Node-RED-Desktop\

 

f:id:kmaepu:20190614100815p:plain

 

作ったカスタムノードは、ツールバー「tool」→「Add alocal node...」を選択し、追加したいノードフォルダ(今回は"node-red-contrib-test")を選択するとパレットに追加されます。

f:id:kmaepu:20190614101358p:plain

おわりに

 Node-REDのエディタとNode generatorが一体になったので、とても便利になったと思います。

ESP32のデバッグ便利ツール紹介~スタックトレースを解析

1.概要

 ESP32でプログラム開発中、ある事をするとリブートしてしまう問題が発生しました。Arduino IDEで開発しているとブレークポイントデバッグできないので困っていました。そんな時、デバッグの便利ツールを見つけたの紹介します。

 

 スタックトレースを解析する"EspExceptionDecoder"です。

 

 このツールはシリアルコンソールに出力されるトレース情報を解析し、ソースコードのどの部分で問題が起きているか表示してくれます。

 

2.導入

導入方法は以下のサイトを参考にさせていただきました。

qiita.com

 

github.com

 

 

3.使用方法

 

 "EspExceptionDecoder"を導入後にArduino IDEを再起動し、ビルドし直す必要があります。ビルドを忘れてツールを開くとelfファイルの選択画面が表示されます。(ビルド時に現プロジェクトのelfファイルパスがEspExceptionDecoderに通ると思われます)

 

 シリアルコンソールを開いているとリブート時のログが表示されます。その中にスタックトレース情報があります。”Backtrace :” で始まるログです。参考に、私の環境で表示されたログは次の通りです。

f:id:kmaepu:20190603091755p:plain

 

 ツールの導入が正しく行えていれば、Arduino IDEのツール内に"EspExceptionDecoder"があるので起動します。起動すると次のような画面が表示されます。

 

f:id:kmaepu:20190603093049p:plain

 

 シリアルコンソールに表示されているスタックトレースをコピーして貼り付けます。

私の場合では

 Backtrace: 0x400d2248:0x3ffca210 0x4008e559:0x3ffca270

です。

 

 貼り付けると次のように問題の箇所が表示されます。

 

f:id:kmaepu:20190603093422p:plain

 

 この情報のおかげでデバッグできました!