コントロールSTEM FまたはIRRIGATION免責事項:これは個人的なプロジェクトであり、私の雇用主と提携していません
Cosyfirはあなたがあなたの植物に水をやるのを助けるでしょう。
ノードソフトウェアは、STM32 ARM皮質マイクロコントローラーで実行されます。サーバーソフトウェアは、DebianのようなUNIXベースのシステムで実行されます。次の写真は、例のセットアップを示しています。
[] / +--+ / o/
[] <-> | <-> | | <-> ( )( ) <-> |
/ LoRa | +--+ MQTT ( ) SSH /
Sensor LoRaWAN TTN RPi User
Node Gateway Server @home
./node/* (Not part of cosyfir) ./server/*
このREADMEは、次のセクションのサーバー(Raspberry Piなど)とセンサーノードソフトウェアの両方を説明しています。
Cosyfirdアプリケーションはデーモンであり、TTNサーバーを介してセンサーノードからメッセージを受信し、最後のメッセージを表示します。
Debianのための次のソフトウェアパッケージをインストールします。
sudo apt install libncurses6 libmosquittopp1 libssl1.1 libyaml-cpp0.6 gcc cmake libjsoncpp1 libb64-0d
C ++ 17コンパイラが必要です。 GCC 8.3.0をお勧めします。
このセクションでは、LORAとTTNに基づいて通信するセンサーノードソフトウェアについて説明します。
LSN50-V2はおそらく同様に機能するはずです。
次のパッケージをインストールします。
sudo apt install stm32flash arm-none-eabi-gcc
バイナリを構築する前に、TTN WebサイトにCosyfirアプリケーションを登録してください。
以下は、CosyFirdのYAML構成ファイルテンプレートです。
MqttConfig :
HostAddress : region.thethings.network
Port : 8883
ClientId : application-id
Password : secret TTNはregion SSLとホストアドレスregion.thethings.network備えたポート8883を使用しますeu
まず、個人ネットワークコンソールの「アプリケーションの追加」をクリックして、TTNサイトにクライアント識別子を作成します。アプリケーションを作成した後、アプリケーションアクセスキーは下部にあります。 MQTT接続のパスワードとして機能します。
これは、ロラの用語の概要です。
| ロラ | 説明 | どこから? | どこに置くのですか? |
|---|---|---|---|
| deveui | 64ビットエンドデバイス識別子(一意) | デバイスボックスに | TTNコンソール( "レジスタデバイス") |
| AppeuiまたはJoinui | 64ビットアプリケーション識別子 | TTNが発行する( "アプリケーションの追加") | 試運転 |
| nwkkeyまたはappkey | データ暗号化キー(TTN <->サーバー) | TTNによって生成( "アプリケーションの追加") | 試運転 |
| devaddr | 32ビットアドレス(非ユニーク) | ノードがTTNに参加するときに割り当てられます | - |
アクティベーション法は、常に空気活性化(OTAA)になります。このファイルは、ヨーロッパで実行されるように事前に設定されています。
Tableで説明されているように、Preprocessorをnode/Commissioning_template.hに入力します。次に、ファイルの名前を変更します。
mv node/common/Commissioning_template.h node/common/Commissioning.h
ルートでビルドスクリプトを実行して、サーバーとノードの両方のバイナリをビルドします。
./build_all.sh
スクリプトへの利用可能なパラメーターは次のとおりです。
clean :クリーンビルドを実行しますdebug :デバッグシンボルを使用してビルドしますフラッシュLSN50は、ISPブートモードを使用して、単純なFTDI UARTケーブルで実行できます。
以下のようにUARTを接続します。
GND (black): JP4 Pin11 GND
TXD (orange): JP3 Pin9 PA3 (USART1)
RXD (yellow): JP3 Pin10 PA2 (USART1)
USBシリアルデバイスがマウントされている場所をご覧ください。
journalctl -k -n 100
フラッシュモードからISPモードへのスイッチを設定してから、次を実行します。
sudo stm32flash -w node/build/sensor-node.hex /dev/ttyUSBx
センサーを接続します:
# DS18B20
GND (blue): JP3 Pin2 GND
DQ (yellow): JP3 Pin4 PA9 (Half-duplex single-wire using only TX)
VDD (red): JP3 Pin1 VDD
# Watermark 200SS (tbd)
JP3 Pin12 PA0
JP3 Pin5 PA4
# 10k resistor between PA4 and PA1
透かしセンサーの詳細。
地元のTTNカバレッジを確認し、ゲートウェイが近くにあることを確認してください。 Boot Switchをフラッシュに設定して、 ./cosyfird --config-file /path/to/cosyfird.yamlとlsn50のパワーを開始します。しばらくして、メッセージが届くのを見る必要があります。デバッグモードでは、メッセージは30秒ごとに送信されます。 30分ごとにリリースモード。
HEXでのメッセージペイロードの例:
| 42 | BE | EF | CA | FE |
^
Battery level
^
Temperature (resolution 0.0625 °C)
^
Soil water tension
(tbd)
開発には、次のパッケージが必要になる場合があります。
sudo apt install clang-format libmosquittopp-dev libssl-dev libyaml-cpp-dev libjsoncpp-dev libb64-dev libncurses-dev
ST-Link V2デバッガーを入手し、これらのパッケージをインストールします。
sudo apt install stmlink-tools gdb-multiarch
インストール後に3つのアプリケーションを利用できます。
以下のように接続します:
GND: JP4 Pin11 GND
SWCLK: JP4 Pin4 PA14
SWDIO: JP4 Pin9 PA13
RST: JP4 Pin1 NRST
ブートスイッチをISPに設定して、次のことを試してください。
st-info --probe
すべてが正しく実行されている場合は、マイクロコントローラーに関するシリアルおよびその他のインフォスが表示されます。 Infosが表示されない場合は、SWDIOとSWCLKを交換してみてください。一部のST-Link V2デバッガーには誤ってラベルが付けられています。
あなたは次のことであなたのコードをフラッシュしてデバッグすることができます:
st-util -p 1234
(gdb-multiarch) set arch arm
(gdb-multiarch) target extended-remote localhost:1234
(gdb-multiarch) load sensor-node
ユーザーコードに戻るには、ブートスイッチをフラッシュに戻します。その後、ブレークポイントを設定して、通常どおりコードを実行できます。
(gdb-multiarch) break foo.c:42
(gdb-multiarch) run
点滅せずに記号をロードするだけで可能です:
(gdb-multiarch) file sensor-node
温かい再起動を行うには、フラッシュの開始にジャンプします。
(gdb-multiarch) jump *0x08000000
Bootloader/ISPブートモードを介してフラッシュする場合と同じピンでPrintfの接続を見ることができるようになります。
screen /dev/ttyUSB3 38400