Betrouwbare long-range Arduino-netwerken bouwen met de HC-12 module
Overzicht
In deze Arduino-tutorial leer je hoe je de HC-12 draadloze seriële communicatiemodule kunt gebruiken voor long-range communicatie tussen meerdere Arduino-boards, met afstanden tot 1,8 km. We behandelen drie voorbeelden: basiscommunicatie tussen twee Arduino's, kanaalwisseling via drukknoppen, en besturing van een stappenmotor met een accelerometer.
HC-12 draadloze communicatiemodule
De HC-12 is een krachtige module met de volgende specificaties:
- Frequentieband: 433,4 MHz tot 473,0 MHz
- 100 kanalen met 400 kHz tussenruimte
- Zendvermogen: -1 dBm (0,79 mW) tot 20 dBm (100 mW)
- Ontvangersgevoeligheid: -117 dBm tot -100 dBm
Deze waarden hangen af van de geselecteerde seriële en over-the-air baudrate. De module bevat een microcontroller die niet door de gebruiker geprogrammeerd hoeft te worden; configuratie gebeurt via AT-commando's die via de seriële poort worden verstuurd. Door de SET-pin laag te maken, activeer je de AT-commandomodus.
Arduino en HC-12 aansluiten
De module werkt op 3,2 V tot 5,5 V. Voor stabiele werking wordt een decoupling-condensator en externe voeding aanbevolen, maar voor deze tutorial werkt de USB-voeding van de PC prima. Het schema toont de verbinding met een Arduino UNO en een Arduino MEGA, maar elk board is geschikt.
Voorbeeld 1: Basiscommunicatie
Beide Arduino's draaien dezelfde code. Via de Serial Monitor kun je tekst versturen die draadloos naar de andere Arduino wordt gezonden.
/* Arduino Long Range Wireless Communication using HC-12 Example 01 */
#include <SoftwareSerial.h>
SoftwareSerial HC12(10, 11); // HC-12 TX Pin, HC-12 RX Pin
void setup() {
Serial.begin(9600);
HC12.begin(9600);
}
void loop() {
while (HC12.available()) {
Serial.write(HC12.read());
}
while (Serial.available()) {
HC12.write(Serial.read());
}
}
Typ in de Serial Monitor van de ene Arduino en de tekst verschijnt bij de andere. Dezelfde code werkt ook voor het versturen van AT-commando's wanneer de SET-pin laag wordt gemaakt.
Belangrijke AT-commando's
- AT – Testcommando, retourneert "OK"
- AT+Bxxxx – Wijzig baudrate (1200 t/m 115200 bps, standaard 9600)
- AT+Cxxx – Wijzig kanaal (001 t/m 100, standaard 001 = 433,4 MHz)
Voorbeeld 2: Kanaalwisseling met drukknoppen
Hier gebruiken we twee drukknoppen om kanaals te selecteren en een verbeterde methode voor het ontvangen van data via een String-buffer.
Eerste Arduino (zender met knoppen): Leest knoppen, stuurt AT-commando's naar beide modules om kanaal te wijzigen.
Tweede Arduino (ontvanger): Reageert op ontvangen AT-commando's en wijzigt eigen kanaal.
De code gebruikt een readBuffer om binnenkomende bytes te verzamelen en een checkATCommand() functie om AT-commando's te detecteren en uit te voeren.
Voorbeeld 3: Stappenmotor besturing met accelerometer
Een ADXL345 accelerometer op de eerste Arduino meet de hoek en stuurt deze draadloos naar de tweede Arduino die een NEMA 17 stappenmotor (via A4988 driver) aanstuurt. Een microschakelaar bepaalt de 0-graden startpositie.
Zender (accelerometer): Leest X- en Y-as, berekent hoek (0-180°), gemiddelde over 100 metingen voor smoothing, stuurt waarde met startmarker 's' en eindmarker 'e'.
Ontvanger (stappenmotor): Wacht op 's', leest tot 'e', converteert naar integer, mapped naar 0-1600 stappen (16e stap resolutie), roteert motor naar nieuwe positie.
Deze techniek met start/eindmarkers zorgt voor betrouwbare dataoverdracht zonder corruptie.
Productieproces
- Bouw Boeiende LCD Animaties & Games met Arduino UNO
- JX Wave Generator – Arduino-compatibele DDS-oscillator met OLED-display
- u-blox LEA‑6H GPS Module: Arduino & Python Integratie Handleiding
- Draadloze IR-temperatuurscanner – Arduino Nano met Bluetooth & MLX90614
- Python 3 naar Arduino UNO: Eenvoudige Commando Besturing en LED Demo
- Bouw een compacte FM-radio met Arduino Nano en RDA5807M
- Geavanceerd Valdetectiesysteem met Arduino, Windows IoT en Azure Cloud
- ArduRadio Wekker: DIY Arduino-gebaseerde FM-radio & Weeksysteem
- Arduino Ultrasonische Afstandssensor Project: HC‑SR04 Afstandsmeter
- Draadloze communicatiebereik meesteren: Hoe vermogen, datasnelheid en interferentie connectiviteit vormen
- Hoe batterij‑aangedreven lange‑afstand draadloos connectiviteit transformatie