# LORA モジュール(433MHz) {docsify-ignore-all}
***
:memo:**[概要](#概要)** :octocat:**[サンプルコード](#サンプルコード)** :electric_plug:**[回路図](#回路図)** 🛒**[購入リンク](https://www.aliexpress.com/store/product/M5Stack-Official-Stock-Offer-LoRa-Module-for-ESP32-DIY-Development-Kit-Wireless-433MHz-Built-in-Antenna/3226069_32839736315.html?spm=2114.12010615.8148356.22.25e96be7xE1y22.html)**
## 概要
**LORA**モジュールはRa-02と呼ばれる小型のLoRa™モジュールを採用しています。
LoRa™は少ない消費電力で広いエリア(1~2km)をカバーする無線通信方式の一つです。Wi-FiやBluetoothなどとは補完の関係にあります。
## 特徴
- Ai-Thinker製Ra-02採用
- FSK, GFSK, MSK, GMSK, LoRa™, OOK 変調モードをサポート
- 受信感度 -141 dBm
- ビットレート可変 up to 300Kbps
- アンテナ内蔵
## パッケージ内容
- 1x LORA モジュール
## アプリケーション
- 自動検針器
- スマートホーム
- リモート灌漑システム
## 関連リンク
- **[公式ビデオ](https://www.youtube.com/channel/UCozgFVglWYQXbvTmGyS739w)**
- **[フォーラム](http://forum.m5stack.com/)**
- **データシート** - [LoRa](http://wiki.ai-thinker.com/lora)
- **[LoRaWAN 地域パラメータ](https://lora-alliance.org/sites/default/files/2018-04/lorawantm_regional_parameters_v1.1rb_-_final.pdf)**
## サンプルコード
### Arduino IDE
2台以上のLoRaモジュールを用い、長距離通信を行うサンプルコードです。
- メッセージの送信に成功したら、青い文字列が表示されます。
- メッセージの受信に成功したら、黄色い文字列が表示されます。
- 初期化に失敗したら、赤い文字列が表示されます。
*完全なソースコードは[こちら](https://github.com/m5stack/M5-ProductExampleCodes/tree/master/Module/LORA/Arduino)*
```arduino
#include
#include
// 宣言
String outgoing; // 送信メッセージ
byte msgCount = 0; // 送信メッセージ数
byte localAddress = 0xBB; // このデバイスのアドレス
byte destination = 0xFF; // 送信先
// 初期化
M5.begin();
LoRa.setPins(); // CS, reset, IRQピンの設定
LoRa.begin(433E6); // 915 MHzで初期化
// メッセージ送信
void sendMessage(String outgoing) {
LoRa.beginPacket(); // パケット開始
LoRa.write(destination); // 送信先アドレスの追加
LoRa.write(localAddress); // 送信者アドレスの追加
LoRa.write(msgCount); // メッセージIDの追加
LoRa.write(outgoing.length()); // ペイロード長の追加
LoRa.print(outgoing); // ペイロードの追加
LoRa.endPacket(); // パケット送信
msgCount++; // メッセージIDインクリメント
}
// メッセージ受信
void onReceive(int packetSize) {
if (packetSize == 0) return; // パケットが無い場合リターン
int recipient = LoRa.read(); // 受信者アドレス
byte sender = LoRa.read(); // 送信者アドレス
byte incomingMsgId = LoRa.read(); // 受信メッセージID
byte incomingLength = LoRa.read(); // 受信メッセージ長
String incoming = "";
while (LoRa.available()) {
incoming += (char)LoRa.read(); // メッセージ取得
}
}
onReceive(LoRa.parsePacket());
```
## 回路図