Stránka 1 z 2
[hw] HC-12, 433 MHz, sériový port
Napsal: 14 pro 2024, 10:06
od Pablo74
Modul HC-12 je bezdrátový sériový port, komunikace běží na 433 MHz.
Z hlediska SW jde pro začátečníky asi o nejjednodušší způsob bezdrátové komunikace mezi dvěma jednočipy.
HC-12 nefunguje samostatně, musí se jako komunikační modul připojit k jednočipu (Arduino, ESP8266, ESP32, ...). Zapojení je banální a návodů jak na to je plný internet, česky třeba tady
https://navody.dratek.cz/navody-k-produ ... 3-mhz.html
Já si tyto moduly pořídil na hadexu, konkrétně:
https://www.hadex.cz/m349b-bezdratovy-m ... 12-si4463/
Jako vývojovou desku často používám ideaspark ESP32 s grafickým displejem, viz deska č. 3 v tomto vlákně
viewtopic.php?t=3579
Pro zjištění konfigurace modulu z výroby jsem vyzkoušel tento prográmek:
Kód: Vybrat vše
// Vysílač (sender.ino)
#include <U8g2lib.h>
#include <HardwareSerial.h>
// Inicializace displeje pro ESP32 přes I2C
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE);
HardwareSerial SerialHC12(2); // Použití UART2
void setup() {
Serial.begin(9600); // Konzole pro komunikaci s PC
SerialHC12.begin(9600, SERIAL_8N1, 17, 16); // RX=17, TX=16
u8g2.begin();
u8g2.clearBuffer();
u8g2.setFont(u8g2_font_helvB18_tr);
u8g2.setCursor(0, 36);
u8g2.print("AT comm.");
u8g2.sendBuffer();
}
void loop() {
// Příkazy z PC do HC-12
if (Serial.available()) {
String cmd = Serial.readStringUntil('\n');
SerialHC12.println(cmd);
}
// Odpovědi z HC-12 na PC
if (SerialHC12.available()) {
String response = SerialHC12.readStringUntil('\n');
Serial.println(response);
}
}
Na displeji jsem zobrazil jen statický text "AT comm.", jinak se nezobrazuje nic dalšího; komunikace s modulem HC-12 probíhá přes sériový monitor v prostředí Arduino IDE. Pozor, že pro práci a AT příkazy musí být pin modulu označený SET připojen na zem, GND.
Tučně označím moje příkazy a netučně odpověď od modulu HC-12.
AT
OK
AT+RX
OK+B9600
OK+RC001
OK+RP:+20dBm
OK+FU3
Výchozí nastavení (z výroby) je tedy:
OK+B9600: Přenosová rychlost je nastavena na 9600 baudů
OK+RC001: Kanál je nastaven na číslo 1
OK+RP:+20dBm: Výkon je nastaven na +20 dBm, což je cca 100 mW.
POZOR: Toto je vysoko nad povolený limit pro ČR (10 mW)! Nutno snížit pomocí AT příkazu AT+P4 nebo nižší.
OK+FU3: Komunikační mód FU3 (Full Duplex)
Další info bude následovat.
Re: [hw] HC-12, 433 MHz, sériový port
Napsal: 14 pro 2024, 10:27
od Pablo74
Změna výchozího nastavení modulu na nové hodnoty. Na vývojové desce běží stejný program jako v předchozím příspěvku a příkazy se ručně zapisují do sériového monitoru v Arduino IDE.
Tučně jsou moje příkazy a netučně odpovědi modulu.
Změna komunikačního kanálu na č. 80 (původně kanál č. 1)
AT+C080
OK+C080
Změna vysílacího výkonu na 8 mW (původně 100 mW)
AT+P4
OK+P4
Změna vysílacího režimu na FU4 (původně FU3)
AT+FU4
OK+FU4,B1200
A závěrečná kontrola nastavení:
AT+RX
OK+B1200
OK+RC080
OK+RP:+08dBm
OK+FU4
Re: [hw] HC-12, 433 MHz, sériový port
Napsal: 14 pro 2024, 11:05
od Pablo74
Pro účely testování skutečného dosahu v reálném prostředí města jsem si připravil dva programy, opět pro již zmíněnou vývojovou desku ideaspark ESP32.
Vysílač posílá jedno celé číslo (int) postupně z rozsahu 0 - 99, poté zase od nuly; a to s prodlevou 2.5 s.
Na přijímači se zobrazují současně tři hodnoty, které byly přijaty: vlevo poslední hodnota, uprostřed předchozí a vpravo ještě o jednu předchozí, tj. schématicky (n), (n-1), (n-2).
Interval 2.5 s jsem zvolil experimentálně, je dost dlouhý na to, abych při chůzi a sledování displeje dával pozor a dost krátký na to, abych zjistil hranice dosahu. No a zobrazení tří posledně přijatých hodnot mi umožní nepřehlédnout možný částečný výpadek komunikace.
Program pro vysílač
Kód: Vybrat vše
// Vysílač (sender.ino)
#include <U8g2lib.h>
#include <HardwareSerial.h>
// Inicializace displeje pro ESP32 přes I2C
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE);
HardwareSerial SerialHC12(2); // Použití UART2
int counter = 0;
void setup() {
SerialHC12.begin(1200, SERIAL_8N1, 17, 16); // RX=17, TX=16
u8g2.begin();
u8g2.clearBuffer();
u8g2.setFont(u8g2_font_helvB18_tr);
}
void loop() {
// Odeslání čísla každých 2.5 sekundy
SerialHC12.print(counter);
// Aktualizace displeje
u8g2.clearBuffer();
u8g2.setCursor(0, 36);
u8g2.print("Sending: ");
u8g2.setCursor(90, 63);
u8g2.print(counter);
u8g2.sendBuffer();
counter = (counter + 1) % 100; // Reset na 0 po dosažení 99
delay(2500);
}
Program pro přijímač
Kód: Vybrat vše
#include <U8g2lib.h>
#include <HardwareSerial.h>
// Inicializace displeje pro ESP32 přes I2C
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE);
HardwareSerial SerialHC12(2); // Použití UART2
// Pole pro ukládání posledních tří hodnot
int receivedValues[3] = {-1, -1, -1};
int valueCount = 0;
int receivedValue;
void setup() {
SerialHC12.begin(1200, SERIAL_8N1, 17, 16); // RX=17, TX=16
u8g2.begin();
u8g2.clearBuffer();
u8g2.setFont(u8g2_font_helvB18_tr);
u8g2.setCursor(0, 36);
u8g2.print("HC-12");
u8g2.sendBuffer();
}
void loop() {
if (SerialHC12.available()) {
receivedValue = SerialHC12.parseInt();
// Pokud je přijata validní hodnota (0-99)
if (receivedValue >= 0 && receivedValue <= 99) {
// Posun hodnot v poli
receivedValues[2] = receivedValues[1];
receivedValues[1] = receivedValues[0];
receivedValues[0] = receivedValue;
// Zvýšení počtu přijatých hodnot (max 3)
if (valueCount < 3) {
valueCount++;
}
// Aktualizace displeje
u8g2.clearBuffer();
u8g2.setCursor(0, 36);
u8g2.print("HC-12");
u8g2.setCursor(0, 63);
u8g2.print(receivedValues[0]);
u8g2.setCursor(45, 63);
u8g2.print(receivedValues[1]);
u8g2.setCursor(90, 63);
u8g2.print(receivedValues[2]);
u8g2.sendBuffer();
}
}
}
Re: [hw] HC-12, 433 MHz, sériový port
Napsal: 14 pro 2024, 11:55
od Pablo74
Nastavil jsem tedy oba HC-12 do režimu FU4 (slibuje nejdelší dosah za cenu pomalé přenosové rychlosti) a legální výkon max. 8 mW. Moduly mají spirálovou anténku (viz odkaz na hadex.cz v prvním příspěvku).
V prostředí městské zástavby jsem se dostal jen na desítky metrů, což mi subjektivně přijde dost málo. Vysílač umístěný uprostřed bytu (záměrně ne u okna), přijímač šel se mnou po ulici.
HC-12 má i APEX konektor pro připojení kvalitnější antény, která se musí koupit zvlášť.
Jedna technická zajímavost: modul HC-12 i jednočip s ESP32 napájím ze stejného zdroje ze dvou AA článků v sérii, jsou to Li-Ion články s výstupním napětím 1.5 V (přes interní měnič), změřil jsem na nich za provozu napětí 2.98 V - HW mi tedy pracuje s napájecím napětí 3 V, ačkoli se dle specifikací počítá se 3.3 V.
Zmíněné AA lithiové články jsou tyto:
https://www.aliexpress.com/item/1005003202925252.html
Re: [hw] HC-12, 433 MHz, sériový port
Napsal: 16 pro 2024, 04:42
od Diego
Pěkná práce, tyhle moduly taky používam a taky jsem chtěl zjistit dosah ale ještě jsem se k tomu nedostal. Zajímalo by mě jaký by byl dosah při napájení 5V, určitě se taky zvětší. A píšeš uprostřed bytu ale ne jestli panelák nebo cihla a v jakém patře

Re: [hw] HC-12, 433 MHz, sériový port
Napsal: 16 pro 2024, 17:40
od Pablo74
Napsal jsem několik nepřesností či dokonce chyb, takže náprava:
1. číslo kanálu musí být mezi 1 a 15 (vyšší kanály už nejsou v ČR legální), takže ne kanál 80, ale 8
2. nastavení vysílacího výkonu není na 8 mW, ale 8dBm, tj. asi 6.4 mW
3. konektor pro externí anténu není apex, ale IPEX
Tolik chyb, ach jo.
Testování dosahu: využil jsem možnost, která se mi naskytla: městská zástavba, druhé patro v paneláku. Jak už jsem psal, dosah v desítkách metrů mi přijde dost málo. Jak vysílač, tak i přijímač jsem napájel 3 V.
Re: [hw] HC-12, 433 MHz, sériový port
Napsal: 17 pro 2024, 19:11
od Pablo74
Informace o dalším testu, nastavení; poznatky a spekulace.
Stejná vývojová deska (jednočip), stejné napájení, stejná anténa, ale odlišné nastavení modulů oproti poslednímu testu; aktuální nastavení obou HC-12:
Odpověď modulu na
AT+RX vypadá takhle:
Kód: Vybrat vše
OK+B2400
OK+RC007
OK+RP:+08dBm
OK+FU3
Kanál č. 7, rychlost komunikace 2400 baudů, mód FU3.
Program pro vysílač i přijímač zůstal stejný, s jednou změnou (nastavení přenosové rychlosti):
Kód: Vybrat vše
SerialHC12.begin(2400, SERIAL_8N1, 17, 16);
Vysílač opět uvnitř bytu (ne u okna) ve druhém patře paneláku, stejné místo, stejné město. Vzdálenost měřena odhadem přes mapy.cz, takže je orientační.
Poznatky (P) a spekulace (S):
P: signál projde zdí a je dostupný na ulici, ale další panelák signál zastíní tak, že příjem už není možný.
P: dosah signálu ve směru A - asi 120 m, přímá viditelnost (*)
P: dosah signálu ve směru B - asi 90 m, přímá viditelnost (*)
S: šíření signálu je magie
(*) Ta zmíněná přímá viditelnost je
fiktivní, přes zeď, ale myslím tím, že kromě zdi už není v cestě nic.
Ještě jsem zjistil verzi firmware, AT+V
Re: [hw] HC-12, 433 MHz, sériový port
Napsal: 18 pro 2024, 15:04
od kiRRow
Jakákoliv bezdrátová komunikace je duchařina. Všichni jsme jistě už zažili rádio, které začlo šumět, když někdo prošel kolem. Posunutím wifirouteru o 15cm jsem byl schopen zdegradovat signál z 98% na 10% (chytal ten signál 2x - jednou na přímo a jednou odrazem s fázovým posuvem, takže signál se krásně odečetl). Nejen počasí, ale dokonce i denní doba má vliv na rádiový signál a jeho šíření. A zdi ? ... nikdy nevíš co je ve vnitř. Zažil jsem hotel v celoarmaturované stavbě ... celý prošpikovaný opakovačema mobilního signálu, protože jak jsi nestál u okna, tak jsi ani sms neposlal.
Re: [hw] HC-12, 433 MHz, sériový port
Napsal: 18 pro 2024, 16:19
od Cmrnda
433MHz je stále na panelák moc, sice lepší než 2,4 či 5GHz ale zkus jít co nejníž, dlouhý vlny a tak.
Re: [hw] HC-12, 433 MHz, sériový port
Napsal: 20 pro 2024, 13:21
od Pablo74
Další test dosahu; stejné nastavení HW a SW jako v testu ze dne 17. 12. 2024
Tentokrát starý vesnický dům, kdysi se říkalo stavení; některé zdi z kamene (a pořádná tloušťka), některé z cihel. Vyílač v jedné místnosti, cca 1.5 m nad podlahou (tj. i nad venkovní úrovní, tj. nad zemí), přijímač šel se mnou po venku. Měl jsem ho převážně zvednutý nad hlavu, tj. výškově kolem dvou metrů.
Opět je dosah v desítkách metrů, přitom v prostředí není žádné rušení na 433 MHz a okolo domu je volný prostor, žádné další zděné stavby či domy.
Tak to vypadá, že s tímhle HW a SW nastavením, napájením a hlavně anténami se spolehlivého spojení na delší vzdálenost nedočkám.
V létě jsem na stejném místě zkoušel komunikaci s ESP-NOW, tj. na 2.4 GHz, teď s těmi HC-12 jedu na 433 MHz a dosah je naprosto srovnatelný. To je samo o sobě dost podivný.
Velkou roli zřejmě bude hrát i počasí, zdi, vysílací výkon a antény.
Jako spolehlivou komunikaci uvnitř bytu to doporučit můžu, jako komunikaci z bytu na pár metrů ven taky, ale jinak ne.