- Komponente potrebne
- Modul RF odašiljača i prijemnika od 433 MHz)
- Kružna shema RF odašiljača sa STM32F103C8
- Kružni dijagram RF prijemnika s Arduino Uno
- Programiranje STM32F103C8 za bežični RF prijenos
- Programiranje Arduino UNO kao RF prijemnika
- Ispitivanje RF odašiljača i prijamnika na bazi STM 32
Izrada bežičnih projekata u ugrađenoj elektronici postaje vrlo važna i korisna jer nema prepletenih žica što čini uređaj praktičnijim i prijenosnijim. Postoje razne bežične tehnologije kao što su Bluetooth, WiFi, 433 MHz RF (radio frekvencija) itd. Svaka tehnologija ima svoje prednosti i nedostatke kao što su trošak, prijenos udaljenosti ili dometa, brzina ili protok itd. Danas ćemo koristiti RF modul sa STM32 za bežično slanje i primanje podataka. Ako ste novi u mikrokontroleru STM32, započnite s trepćućom LED lampicom sa STM32 pomoću Arduino IDE-a i ovdje provjerite sve ostale STM32 projekte.
Osim toga, također smo koristili RF 433Mhz bežični modul s drugim mikrokontrolerima za izgradnju nekih bežično kontroliranih projekata, kao što su:
- RF uređaji kontrolirani kućanstvom
- RF daljinsko upravljane LED diode pomoću Raspberry Pi
- RF kontrolirani robot
- Povezivanje RF modula s Arduinom
- Komunikacija između PIC-a i PIC-a pomoću RF modula
Ovdje ćemo spojiti RF bežični modul od 433 MHz s mikrokontrolerom STM32F103C8. Projekt je podijeljen u dva dijela. Odašiljač će se povezati s STM32, a prijamnik će se povezati s Arduino UNO. Bit će različiti dijagram sklopa i skice kako za prijenosni, tako i za prihvatni dio.
U ovom vodiču RF odašiljač šalje dvije vrijednosti na stranu prijemnika: udaljenost izmjerena ultrazvučnim senzorom i vrijednost ADC potenciometra (0 do 4096) koja je mapirana brojem od (0 do 100). RF prijemnik za Arduino prima obje vrijednosti i grafike te udaljenosti i broj vrijednosti u 16x2 LCD zaslonu i bežično.
Komponente potrebne
- STM32F103C8 Mikrokontroler
- Arduino UNO
- RF odašiljač i prijemnik od 433 MHz
- Ultrazvučni senzor (HC-SR04)
- LCD zaslon od 16x2
- 10k potenciometar
- Breadboard
- Spajanje žica
Modul RF odašiljača i prijemnika od 433 MHz)

Izlaz RF odašiljača:
|
RF odašiljač od 433 MHz |
Opis pribadače |
|
MRAV |
Za povezivanje antene |
|
GND |
GND |
|
VDD |
3,3 do 5V |
|
PODACI |
Ovdje se daju podaci koji se prenose primatelju |
Pinout RF prijemnika:
|
RF prijemnik od 433 MHz |
KORISTITI |
|
MRAV |
Za povezivanje antene |
|
GND |
GND |
|
VDD |
3,3 do 5V |
|
PODACI |
Podaci koje treba primiti od odašiljača |
|
CE / DO |
To je također Data pin |
Specifikacije modula 433 MHz:
- Radni napon prijemnika: 3V do 5V
- Radni napon odašiljača: 3V do 5V
- Radna frekvencija: 433 MHz
- Udaljenost prijenosa: 3 metra (bez antene) do 100 metara (maksimalno)
- Modulacijska tehnika: ASK (Amplitude shift keying)
- Brzina prijenosa podataka: 10Kbps
Kružna shema RF odašiljača sa STM32F103C8


Kružne veze između RF odašiljača i STM32F103C8:
|
STM32F103C8 |
RF odašiljač |
|
5V |
VDD |
|
GND |
GND |
|
PA10 |
PODACI |
|
NC |
MRAV |
Kružne veze između ultrazvučnog senzora i STM32F103C8:
|
STM32F103C8 |
Ultrazvučni senzor (HC-SR04) |
|
5V |
VCC |
|
PB1 |
Trig |
|
PB0 |
Jeka |
|
GND |
GND |
10k potenciometar povezan s STM32F103C8 pružiti analognog ulaznog vrijednost (0 do 3.3V) na ADC klina za PA0 STM32.
Kružni dijagram RF prijemnika s Arduino Uno


Kružne veze između RF prijamnika i Arduino UNO:
|
Arduino UNO |
RF prijemnik |
|
5V |
VDD |
|
GND |
GND |
|
11 |
PODACI |
|
NC |
MRAV |
Kružne veze između LCD-a 16x2 i Arduino UNO:
|
Naziv LCD ekrana |
Arduino UNO naziv pin-a |
|
Prizemlje (Gnd) |
Uzemljenje (G) |
|
VCC |
5V |
|
VEE |
Pribadača iz središta potenciometra za kontrast |
|
Odaberite registar (RS) |
2 |
|
Čitanje / pisanje (RW) |
Uzemljenje (G) |
|
Omogući (EN) |
3 |
|
Bit podataka 4 (DB4) |
4 |
|
Bit podataka 5 (DB5) |
5 |
|
Bit podataka 6 (DB6) |
6 |
|
Bit podataka 7 (DB7) |
7 |
|
LED pozitivan |
5V |
|
LED negativan |
Uzemljenje (G) |
Kodiranje će u nastavku biti objašnjeno ukratko. Bit će dva dijela skice, gdje će prvi dio biti dio odašiljača, a drugi dio prijamnika. Sve datoteke skica i radni video bit će dati na kraju ovog vodiča. Da biste saznali više o povezivanju RF modula s Arduino Uno, slijedite vezu.
Programiranje STM32F103C8 za bežični RF prijenos
STM32F103C8 može se programirati pomoću Arduino IDE-a. Za prijenos koda na STM32F103C8 nije potreban FTDI programer ili ST-Link. Jednostavno se povežite s računalom putem USB priključka STM32 i započnite programirati s ARDUINO IDE. Programiranje vašeg STM32 u Arduino IDE možete naučiti slijedeći vezu.
U odjeljku odašiljača udaljenost objekta u 'cm' mjeri se pomoću ultrazvučnog senzora, a vrijednost broja od (0 do 100) podešava se pomoću potenciometra koji se prenosi putem RF odašiljača spojenog sa STM32.
Prvo je uključena knjižnica Radiohead, koju možete preuzeti ovdje. Kako ova knjižnica koristi ASK (Amplitude Shift Keying Technique) za prijenos i primanje podataka. To programiranje čini vrlo jednostavnim. Biblioteku možete uključiti u skicu odlaskom u Sketch-> include library-> Add.zip library.
#include
Kao i u ovom vodiču na strani odašiljača, ultrazvučni senzor koristi se za mjerenje udaljenosti, tako da su definirani okidači i okidači.
#define trigPin PB1 #define echoPin PB0
Sljedeće je ime objekta za knjižnicu RH_ASK postavljeno kao rf_driver s parametrima poput brzine (2000), RX pina (PA9) i TX pina (PA10).
RH_ASK rf_driver (2000, PA9, PA10);
Dalje se deklariraju varijable Strings potrebne u ovom programu.
Niz prijenos_broja; Niz prijenosa_distanca; String prijenos;
Sljedeći u void setup (), objekt za RH_ASK rf_driver je inicijaliziran.
rf_driver.init ();
Nakon toga se pin okidača postavlja kao OUTPUT pin, a PA0 (spojen na potenciometar) i echo pin postavljaju se kao INPUT pin. Serijska komunikacija započinje brzinom prijenosa od 9600.
Serial.begin (9600); pinMode (PA0, INPUT); pinMode (echoPin, INPUT); pinMode (trigPin, IZLAZ);
Sljedeće u praznoj petlji (), prva vrijednost potenciometra koja je ulazni analogni napon pretvara se u digitalnu vrijednost (pronađena je vrijednost ADC). Kako ADC STM32 ima 12-bitnu razlučivost. Dakle, digitalna vrijednost varira od (0 do 4096) koja se preslikava (0 do 100).
int analoginput = analogRead (PA0); int pwmvalue = karta (analogni ulaz, 0,4095,0,100);
Zatim se udaljenost mjeri ultrazvučnim senzorom postavljanjem okidača na visoku i nisku razinu s odgodom od 2 mikrosekunde.
digitalWrite (trigPin, LOW); delayMicroseconds (2); digitalWrite (trigPin, HIGH); delayMicroseconds (10); digitalWrite (trigPin, LOW);
Igla odjeka osjeti reflektirani val natrag, tj. Vrijeme trajanja reflektiranog vala koristi se za izračunavanje udaljenosti objekta pomoću formule. Saznajte više kako ultrazvučni senzor izračunava udaljenost slijedeći vezu.
dugo trajanje = pulsIn (echoPin, HIGH); plivajuća udaljenost = trajanje * 0,034 / 2;
Sada se i izmjereni broj podataka i udaljenost pretvaraju u niz podataka i pohranjuju u odgovarajuće varijable niza.
broj_prenosa = Niz (pwmvalue); prijenos_distanca = Niz (udaljenost);
Oba se niza dodaju kao jedan redak i pohranjuju u niz koji se naziva prijenos i zarez “,” koristi se za odvajanje dva niza.
prijenos = prijenos_pwm + "," + prijenos_daljina;
Niz za prijenos pretvara se u niz znakova.
const char * msg = prijenos.c_str ();
Podaci se prenose i pričekajte dok se ne pošalju.
rf_driver.send ((uint8_t *) msg, strlen (msg)); rf_driver.waitPacketSent ();
Poslani podaci niza također se prikazuju u serijskom monitoru.
Serial.println (msg);
Programiranje Arduino UNO kao RF prijemnika
Arduino UNO programiran je pomoću Arduino IDE-a. U odjeljku prijamnika podaci koji se prenose iz odjeljka odašiljača i koje prima RF modul prijemnika, a primljeni niz podataka podijeljeni su u odgovarajuće podatke (udaljenost i broj) i prikazani na LCD zaslonu 16x2.
Pogledajmo ukratko kodiranje prijemnika:
Kao i u odjeljku odašiljača, prvo je uključena knjižnica RadiohHead. Kako ova knjižnica koristi ASK (Amplitude Shift Keying Technique) za prijenos i primanje podataka. To programiranje čini vrlo jednostavnim.
#include
Kako se ovdje koristi LCD zaslon, tako je uključena i knjižnica tekućih kristala.
#include
I igle za LCD zaslon 16x2 povezane s Arduino UNO specificirane su i deklarirane pomoću lcd-a kao objekta.
LCD LiquidCrystal (2,3,4,5,6,7);
Dalje se deklariraju varijable string podataka za pohranu string podataka.
Niz str_receive; Niz str_number; Niz str_distance;
Deklariran je objekt za knjižnicu Radiohead.
RH_ASK rf;
Sada je u void setup (), LCD zaslon postavljen u način 16x2, a poruka dobrodošlice prikazuje se i briše.
lcd.početak (16,2); lcd.print ("DIGEST CIRCUIT"); lcd.setCursor (0,1); lcd.print ("RF sa STM32"); kašnjenje (5000); lcd.clear ();
Nakon toga se rf objekt inicijalizira.
rf.init ();
Sada je u petlji void (), buf niza deklariran s veličinom kao 7. Kako podaci poslani s odašiljača imaju 7, uključujući i „,“. Dakle, promijenite ovo prema podacima koji se prenose.
uint8_t buf; uint8_t buflen = veličina (buf);
Ako je niz dostupan na RF modulu prijemnika, if funkcija provjerava veličinu i izvršava se. Rf.recv () koristi se za primanje podataka.
if (rf.recv (buf, & buflen))
Buf ima primljeni string pa onda dobila niz je pohranjena u str_receive string varijablu.
str_receive = Niz ((char *) buf);
Ova petlja for koristi se za razdvajanje primljenog niza na dva ako otkrije ',' između dva niza.
for (int i = 0; i <str_receive.length (); i ++) { if (str_receive.substring (i, i + 1) == ",") { str_number = str_receive.substring (0, i); str_distance = str_receive.substring (i + 1); pauza; }
Deklariraju se dva niza char za dvije vrijednosti, a niz koji je podijeljen na dva pohranjuje se u poštovani niz pretvaranjem niza u niz znakova.
niz brojeva char; char razmak; str_distance.toCharArray (string udaljenost, 3); str_number.toCharArray (niz niza, 3);
Nakon toga pretvorite niz znakova u cijeli broj pomoću atoi ()
int udaljenost = atoi (niz daljina); int broj = atoi (niz niza);
Nakon pretvorbe u cjelobrojne vrijednosti vrijednosti udaljenost i broj prikazuju se na LCD zaslonu 16x2
lcd.setCursor (0,0); lcd.print ("Broj:"); lcd.print (broj); lcd.setCursor (0,1); lcd.print ("Udaljenost:"); lcd.print (udaljenost); lcd.print ("cm");
Nakon učitavanja i kodova, odnosno odašiljača i prijemnika u STM32 odnosno Arduino UNO, podaci poput broja i udaljenosti objekta izmjerenog pomoću STM32 prenose se na RF prijemnik putem RF odašiljača, a primljene vrijednosti bežično se prikazuju na LCD zaslonu.
Ispitivanje RF odašiljača i prijamnika na bazi STM 32
1. Kada je broj na 0, a udaljenost predmeta 6 cm.

2. Kada je broj 47 i udaljenost objekta 3cm.

