バックグラウンド
モノのインターネットが普及している今、loraは避けては通れませんが、STM8S003F3P6を使って周立功のloraモジュールZM470SX-MPを使ってlora通信を実現するプロジェクトもあります。
回路図
くだらない話はやめて、回路図に行きましょう
この回路図を長い間探していましたが、見つかりませんでした。説明書に従ってピン図を見つけました。この回路図は非常に単純です。つまり、スイッチング信号が STM8S003F3P6 双方向で検出されます。 IO、スイッチング値情報は lora を通じて報告されます。
ZM470SX-MPの紹介
取扱説明書の資料もここにあります。その他の資料については、マニュアルを参照してください。これは透明な LORA ではないことに注意してください。使用するのは少し複雑です。Zhou Ligong はいくつかの API 関数を提供していますが、比較しました。これらの透過型 LORA の設計手法を使用すると、制御 MCU が不要になるため、消費電力が若干低くなります。
ZM470SX-MP モジュールは、Guangzhou Zhiyuan Electronics Co., Ltd. が独自に開発した産業グレードの高周波無線製品です。このモジュールは軍事戦術通信システムから派生したLoRa変調技術設計を採用しており、複雑な環境における少ないデータ量での超長距離通信の問題を完全に解決します。ZM470SX-MPモジュールは、従来の変調技術と比較して、同一チャネル干渉を抑制する性能において明らかな利点もあり、従来の設計方式では距離、干渉耐性、消費電力を同時に考慮できないという欠点を解決します。 。さらに、チップには +30dBm 調整可能なパワーアンプが統合されており、-148dBm を超える受信感度を得ることができ、リンクバジェットは業界をリードするレベルに達しています。
周波数範囲: 410~525MHz
動作電圧 2.6~3.6V。
受信電流 14mA、送信電流 800mA@28dBm;
調整可能な送信電力: 23~30dBm;
受信感度は-148dBmに達します。
伝送速度 0.123~300 kbps;
FSK/GFSK/MSK/GMSK/LoRa/OOK およびその他の変調方式をサポートします。
キャリア周波数はプログラム可能。
送信バッファと受信バッファの合計 256 バイト。
複数の低電力動作モードをサポートします。
同一チャネル干渉を効果的に抑制できます。
3.3Vインターフェースレベル;
SPIバス通信インターフェースを使用します。
長さ×幅×高さ:15×15×2.2(mm)
ソフトウェア設計
これは主にZhou LigongのAPI関数を移植するもので、以下のように対応するIOを直接呼び出し、main関数内で初期化を完了させた後、IOスイッチ情報を定期的に送信します。
void main(void)
{
BSP_Initializes();
Init_IO(); //IO口配置
Radio = RadioDriverInit();//注册相关的函数
Radio->Init(); //无线模块初始化
Radio->RFOpModeSet(RFLR_OPMODE_SLEEP);//进入睡眠状态
while(1)
{
LED_ON; //LED亮
SoftwareDelay(0x6000);
LED_OFF; //LED灭
SoftwareDelay(0x6000);
SendHeartbeat();
// Temp = 0;
// if(INTPUT_0 != 0)
// Temp += 1;
// if(INTPUT_1 != 0)
// Temp += 2;
// if(Temp != 0)
// {
// SensorFlag = 0xF0 + Temp;
// Temp = 0;
// SendHeartbeat();
// }
}
}
モジュールインターフェースIOマクロの定義は以下のとおりです。
#define INPUT_0_Port GPIOD
#define INPUT_0_Pin GPIO_PIN_3
#define INPUT_1_Port GPIOD
#define INPUT_1_Pin GPIO_PIN_4
#define RF_RST_Port GPIOC
#define RF_RST_Pin GPIO_PIN_3
#define RF_SEL_Port GPIOC
#define RF_SEL_Pin GPIO_PIN_4
#define RF_MOSI_Port GPIOC
#define RF_MOSI_Pin GPIO_PIN_5
#define RF_MISO_Port GPIOC
#define RF_MISO_Pin GPIO_PIN_6
#define RF_SCK_Port GPIOC
#define RF_SCK_Pin GPIO_PIN_7
#define RF_DIO0_Port GPIOB
#define RF_DIO0_Pin GPIO_PIN_4
#define RF_DIO1_Port GPIOB
#define RF_DIO1_Pin GPIO_PIN_5
#define RF_DIO2_Port GPIOD
#define RF_DIO2_Pin GPIO_PIN_2
//******************************************************************
//**无线模块相关IO口************************************************
#define RF_SEL_L RF_SEL_Port->ODR &=~RF_SEL_Pin //无线模块片选低电平
#define RF_SEL_H RF_SEL_Port->ODR |= RF_SEL_Pin //无线模块片选高电平
#define RF_MOSI_L RF_MOSI_Port->ODR &=~RF_MOSI_Pin
#define RF_MOSI_H RF_MOSI_Port->ODR |= RF_MOSI_Pin
#define RF_SCK_L RF_SCK_Port->ODR &=~RF_SCK_Pin
#define RF_SCK_H RF_SCK_Port->ODR |= RF_SCK_Pin
#define RF_MISO_READ (RF_MISO_Port->IDR&RF_MISO_Pin)
#define RF_RST_L RF_RST_Port->ODR &=~RF_RST_Pin;
#define RF_RST_H RF_RST_Port->ODR |= RF_RST_Pin;
#define RF_IRQ0_READ ((RF_DIO0_Port->IDR&RF_DIO0_Pin) != 0)/*读取模块中断输出引脚状态*/
#define RF_IRQ1_READ ((RF_DIO1_Port->IDR&RF_DIO1_Pin) != 0)/*读取模块中断输出引脚状态*/
/*
#define RF_DIO1 P2IFG & BIT3
#define RF_DIO0 P2IFG & BIT7
#define RF_DIO1_0 P2IFG &= ~BIT3
#define RF_DIO0_0 P2IFG &= ~BIT7
*/
提供されたライブラリの移植
要約すると、実際、lora のコア モジュールは sx1276 チップです。ZM470SX-MP モジュールはこのチップをベースに周辺回路を設計しているだけです。実際の制御と loar プロトコルは STM8 上に配置する必要があります。私のアプリケーションは比較的一部の複雑なアプリケーションの場合、STM8 を使用するのは少し難しいです。結局のところ、STM8 の RAM/ROM スペースは大きくありません。