2021年6月30日水曜日

Lazurite MJ2001とGrove rotary angleセンサーを接続して、取得した角度データを920MHz無線でRaspberry Pi Zeroに送信する

Lazurite MJ2001は低消費電力で920MHz無線に対応したマイコンモジュールです。Lazurite MJ2001とGrove rotary angleセンサーを接続して、取得した角度データを920MHz無線でRaspberry Pi Zeroに送信するには、以下の手順を実行します。

〇Lazurite MJ2001とGrove rotary angleセンサー・Groveスクリューターミナルを接続した写真

開発手順

1. Lazurite MJ2001とGrove rotary angleセンサーの接続
以下の記事を参照してLazurite MJ2001とGrove rotary angleセンサーを接続します。
Lazurite MJ2001とGrove Rotary Angleセンサーを接続して、ツマミの回転角度を取得する

2. 受信側Raspberry Pi ZeroとLazurite MJ2001の接続
以下の記事を参照して受信側のRaspberry Pi ZeroとLazurite MJ2001を接続して、受信プログラムを実行します。
Raspberry Pi Zero/Raspberry Pi PicoとLazurite MJ2001を接続して、920MHz無線で通信する

4. Lazurite IDEでのプログラミングのコンパイル・書き込み
以下のプログラムのSG_PANID, SG_DAの値を変更してから、Lazurite IDEでコンパイルしてMJ2001に書き込みます。
実行後に、Raspberry Pi ZeroにGroverotary angleセンサーのデータが送信されて表示されることを確認します。
#include "sg_rotary_angle_sensor_ide.h"		// Additional Header

// チャンネル
#define SG_CH 36
// PANID
#define SG_PANID 0x1111
// destination address
#define SG_DA  0xABCD
// 送信時に光らせる青色LED
#define BLUE_LED 26
// 送信用バッファ
char buf[128];

void setup() {
	// シリアル初期化
	Serial.begin(115200);
	Serial.println("welcome");
    // 14ピン=A0を入力モードに設定
	pinMode(A0,INPUT);

	// 青色LED off
	pinMode(BLUE_LED,OUTPUT);
	digitalWrite(BLUE_LED,HIGH);

	// 無線初期化
	SubGHz.init();
	SubGHz.setBroadcastEnb(false);
}

void loop() {
    int wl;
	int val;

    // バッファクリア
    for(wl=0;wl<sizeof(buf);wl++)buf[wl]=0;
    
    // Grove Rotraryセンサーの値を読み取る
	val = analogRead(A0);

    // Grove rotary angleセンサーの値をバッファに書き込み
	Print.init(buf, sizeof(buf));
	Print.p("ra:");
	Print.l(val,DEC);
	Print.p("\r\n");

    // バッファの内容を送信
	digitalWrite(BLUE_LED,LOW); // 青色LEDをON
	SubGHz.begin(SG_CH, SG_PANID, SUBGHZ_100KBPS, SUBGHZ_PWR_20MW);
    SubGHz.send(SG_PANID, SG_DA, buf, strlen(buf,sizeof(buf)),NULL);
	SubGHz.close();
	digitalWrite(BLUE_LED,HIGH); // 青色LEDをOFF
	// コンソールに出力
	Serial.print(buf);

	sleep(2*1000);
}

関連情報

・Lazuriteに関する記事はこちらを参照してください。

Raspberry Pi Zeroと小型ターンテーブルをREST APIで制御する

0 件のコメント:

コメントを投稿