Si4463 و FHSS چیست؟ (مبتدی)
چیپ Si4463 از Silicon Labs یکی از قابلانعطافترین تراشههای RF در بازار است. فرکانس آن از طریق نرمافزار در بازه 142-1050MHz قابل تنظیم است — یعنی ۴۳۳، ۸۶۸، و ۹۱۵MHz همه با یک چیپ. قیمت ماژولهای Si4463 روی PCB زیر ۱۵ دلار است.
FHSS (Frequency Hopping Spread Spectrum) تکنیکی است که فرکانس ارسال هر چند میلیثانیه تغییر میکند. TX و RX هر دو الگوریتم یکسانی برای انتخاب فرکانس بعدی دارند و همیشه روی یک کانال هستند. نتیجه: مقاومت بالا در برابر تداخل و جمینگ. این همان روشی است که سیستمهای RC حرفهای مثل FrSky استفاده میکنند.
محصولی که میسازید
لینک کنترل RC با FHSS برای UGV — زیر ۱۵ دلار و برد ۲km.
- هزینه (TX+RX): ۲ × ۸ دلار = ۱۶ دلار
- برد: تا ۲km در ۴۳۳MHz
- کانالهای FHSS: ۵۰ کانال
سیمبندی Si4463 به آردوینو
Si4463 → Arduino Uno
VCC → 3.3V (مهم! 5V آسیب میزند)
GND → GND
MOSI → Pin 11 (SPI)
MISO → Pin 12 (SPI)
SCK → Pin 13 (SPI)
NSEL/CS → Pin 10
SDN → Pin 8
IRQ → Pin 3 (Interrupt)
// برای آردوینو 5V، حتماً از Level Shifter 5V→3.3V استفاده کنید
// یا از ESP32 که 3.3V است
کد FHSS TX برای آردوینو
#include <Si446x.h>
// جدول پرش فرکانسی (۵۰ کانال، بازه ۴۳۳-۴۳۴.۸MHz):
uint8_t hopTable[50];
uint8_t hopIndex = 0;
uint32_t lastHop = 0;
const uint32_t HOP_INTERVAL = 10; // ms
void genHopTable(uint8_t seed) {
// PRNG ساده برای تولید ترتیب پرش قابل بازتولید:
uint32_t val = seed;
for(int i=0;i<50;i++) {
val = (val * 1664525 + 1013904223) & 0xFFFF;
hopTable[i] = val % 50;
}
}
void setup() {
Si446x_init();
genHopTable(42); // همین seed در RX هم باید باشد
Si446x_setTxPower(127); // حداکثر توان
}
void loop() {
if(millis() - lastHop > HOP_INTERVAL) {
hopIndex = (hopIndex+1) % 50;
uint32_t freq = 433000000UL + hopTable[hopIndex]*36000UL;
Si446x_setFrequency(freq, 9600);
lastHop = millis();
}
// ارسال فرمان UGV:
char cmd = 'F'; // از Joystick
Si446x_TX((uint8_t*)&cmd, 1);
delay(5);
}
چکلیست FHSS
| بررسی | نتیجه |
|---|---|
| TX و RX یک seed دارند؟ | ☐ genHopTable(42) |
| در ۱۰۰m کار میکند؟ | ☐ |
| در برابر جمر WiFi مقاوم؟ | WiFi روشن کنید و تست کنید |
| Failsafe در ۵۰۰ms؟ | ☐ |