HC‐12 WIRELESS RF UART

Başlatan zeus48, 09 Nisan 2020, 10:27:43

zeus48

Arkadaşlar mrb. HC‐12 WIRELESS RF UART   modülü herkes çalıştırmış ama ben beceremedim. 2 ad modül aldım iki ayrı devre kurdum işlemci 16f628a    birbirleriyle haberleştirmeyi denedim olmadı.Anladığım kadarıyla yazdığım kodlar aşağıda. Bilen arkadaşlardan yardım istiyorum. İyi çalışmalar.

zeus48

'****************************************************************
'HC-12 BİRİNCİ MODÜL                                       *
'****************************************************************
@ __config _INTRC_OSC_NOCLKOUT  & _WDT_OFF & _MCLRE_OFF & _LVP_OFF & _CP_ON
 DEFINE OSC 4 
CMCON=7    '16F628 de komparatör pinleri iptal hepsi giriş çıkış
OPTION_REG=7
TRISB=%00001010   'PortB tamamı giriş yapıldı.
TRISA=%00000000   'A portu tamamı çıkış yapıldı. 
PORTA=0
PORTB=0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 INCLUDE "modedefs.bas"
 DEFINE HSER_TXSTA 24h ' Enable transmit, 20h C6=1  10h C6=0
 DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
 DEFINE HSER_SPBRG 51 ' 1200 Baud @ 4MHz, 0,17%
 DEFINE HSER_CLROERR 1 ' Clear overflow automatically
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SYMBOL  SET =PORTA.2 ;MODÜLÜN SET GİRİŞİ
SYMBOL  BUT =PORTB.3 ;BUTON GİRİŞİ 
SYMBOL  KIR =PORTB.4 ;KIRMIZI LED GÇIKIŞI
SYMBOL  YES =PORTB.5 ;YEŞİL LED GÇIKIŞI
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
W VAR BYTE
Z VAR BYTE
Y VAR BYTE
W=0
Z=0
Y=0
A VAR BYTE
A=0
;;;;;;;;;;;;;;;;;;MODÜL YAPILANDIRILMASI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SET=0                  ;ROGRAMA GEÇMEK İÇİN 0 YAPILDI
PAUSE 1000
Hserout["AT+B1200"]    ;İLETİM HIZI
PAUSE 500
Hserout["AT+C001"]     ;KANAL SEÇİMİ
PAUSE 500     
Hserout["AT+FU3"]      ;İLETİM MODU
PAUSE 500
Hserout["AT+P2"]       ;İLETİM GÜCÜ
PAUSE 500
SET=1                  ;PROGRAM BİTTİ
PAUSE 3000
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
BASLA:
Y=5:W=2:Z=1
YES=1                        ;GÖNDERİM SIRASINDA YEŞİL LED YAKILDI
Hserout ["S","O","K",Y,W,Z]
Hserout ["S","O","K",Y,W,Z]
Hserout ["S","O","K",Y,W,Z]
Hserout ["S","O","K",Y,W,Z]
PAUSE 5
Hserout ["S","O","K",Y,W,Z]
Hserout ["S","O","K",Y,W,Z]
Hserout ["S","O","K",Y,W,Z]
Hserout ["S","O","K",Y,W,Z]
PAUSE 5
Hserout ["S","O","K",Y,W,Z]
Hserout ["S","O","K",Y,W,Z]
Hserout ["S","O","K",Y,W,Z]
Hserout ["S","O","K",Y,W,Z]
PAUSE 5
Hserout ["S","O","K",Y,W,Z]
Hserout ["S","O","K",Y,W,Z]
Hserout ["S","O","K",Y,W,Z]
Hserout ["S","O","K",Y,W,Z]
PAUSE 5
YES=0                           ;;GÖNDERİM BİTTİ YEŞİL LED SÖNDÜ
PAUSE 1000

 
HSERIN [WAIT("SOK"),Y,W,Z]
A=W+Z+Y

IF A=8 THEN YES=1:KIR=1:PAUSE 5000
YES=0:KIR=0:PAUSE 1000
GOTO BASLA 
 

 

zeus48

'****************************************************************
''****************************************************************
'HC-12 İKİNCİ  MODÜL                                         *
'****************************************************************
@ __config _INTRC_OSC_NOCLKOUT  & _WDT_OFF & _MCLRE_OFF & _LVP_OFF & _CP_ON
 DEFINE OSC 4 
CMCON=7    '16F628 de komparatör pinleri iptal hepsi giriş çıkış
OPTION_REG=7
TRISB=%00001010   'PortB tamamı giriş yapıldı.
TRISA=%00000000   'A portu tamamı çıkış yapıldı. 
PORTA=0
PORTB=0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 INCLUDE "modedefs.bas"
 DEFINE HSER_TXSTA 24h ' Enable transmit, 20h C6=1  10h C6=0
 DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
 DEFINE HSER_SPBRG 51 ' 1200 Baud @ 4MHz, 0,17%
 DEFINE HSER_CLROERR 1 ' Clear overflow automatically
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SYMBOL  SET =PORTA.2
SYMBOL  BUT =PORTB.3 ;BUTON GİRİŞİ 
SYMBOL  KIR =PORTB.4 ;KIRMIZI LED GÇIKIŞI
SYMBOL  YES =PORTB.5 ;YEŞİL LED GÇIKIŞI
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
W VAR BYTE
Z VAR BYTE
Y VAR BYTE
W=0
Z=0
Y=0
A VAR BYTE
A=0
;;;;;;;;;;;;;;;;;;;;;;;MODÜL YAPILANDIRILMASI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SET=0                  ;ROGRAMA GEÇMEK İÇİN 0 YAPILDI
PAUSE 1000
Hserout["AT+B1200"]    ;İLETİM HIZI
PAUSE 500
Hserout["AT+C001"]     ;KANAL SEÇİMİ
PAUSE 500     
Hserout["AT+FU3"]      ;İLETİM MODU
PAUSE 500
Hserout["AT+P2"]       ;İLETİM GÜCÜ
PAUSE 500
SET=1                  ;PROGRAM BİTTİ
PAUSE 3000
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
BASLA:

HSERIN [WAIT("SOK"),Y,W,Z]
A=W+Z+Y

IF A=8 THEN YES=1:KIR=1:PAUSE 5000
YES=0:KIR=0:PAUSE 1000

YES=1
Hserout ["S","O","K",Y,W,Z]
Hserout ["S","O","K",Y,W,Z]
Hserout ["S","O","K",Y,W,Z]
Hserout ["S","O","K",Y,W,Z]
PAUSE 5
Hserout ["S","O","K",Y,W,Z]
Hserout ["S","O","K",Y,W,Z]
Hserout ["S","O","K",Y,W,Z]
Hserout ["S","O","K",Y,W,Z]
PAUSE 5
Hserout ["S","O","K",Y,W,Z]
Hserout ["S","O","K",Y,W,Z]
Hserout ["S","O","K",Y,W,Z]
Hserout ["S","O","K",Y,W,Z]
PAUSE 5
Hserout ["S","O","K",Y,W,Z]
Hserout ["S","O","K",Y,W,Z]
Hserout ["S","O","K",Y,W,Z]
Hserout ["S","O","K",Y,W,Z]
PAUSE 5
YES=0

GOTO BASLA 

 

Dtmf

Hserout lari ard arda degilde bikere gondersen.

zeus48


Dtmf

hc12-confıg adında bır program var onu atabılırsem ayarlarını oradan yapabılırsın ete hocam bu programı formda nasıl paylasırım.bıde sızce paylasmam guvenlık amacıyla uygun olurmu .

Dtmf

#6
 daha fazla yardım etmek ısterdım ama rf konusu bıraz sıkıntılı hc 12 modulu ben kullanıyorum model ucak projesınde cok guzel calısıyor ıyı bır antenle 1800m gordu,5 servo ıkı esc motor kontrol edıyor.asagıdakılerı dene.nerede kullanacaksınız bu modulu

SerOut DTA,813,["A"]   ;813 1200 BAUD RATE KARSILIGI DEGERI
SerIn PORTC.7,813,1000,SL,[Wait("A")]

zeus48

Endişeni anlıyorum arkadaşım. Bu modülle havuzda aynı ortamda 5 ad maket tekne çalıştıracağım. Daha önce udea nın
fsk modüllerini kullanıyordum ama en küçük hatada bozuluyorlar vede çok pahalı. Diğer bir sorun aynı ortamda çalışması için ektra parayla 5 ayrı frekansta üretiyorlar.Aylarca bekliyorum.


ete

#8
RF konusunda destek vermediğimizi belirtmiştim. Ancak fikir üretebiliriz. Ortam kötü ayrıca forumu zora sokacak programlarda vermeyin. Çok gerekirse link verin.

Her iki programa da şöyle bir baktım. O kadar fazla pause varki bu beklemeleri aşıp da iki programın yada alıcı ile vericinin bir senkron içinde çalışması bence mümkün değil.

RF alış veriş senkron içinde olursa haberleşme sağlanır. Değilse bir verirken diğeride bir şeyler veriyor ise ve verileni almaktan aciz ise nasıl alıpda haberleşmesini tamamlayacak.
Bu tür işlerde bir master-slave ilişkisi olmalıdır. Birisi yönetir diğeri yöneticiye uyar. Bu örneklere bakılırsa herkes yönetici gibi davranıyor. Mantık çalıştırmak gerekiyor.
Önce yönetici bir şey yollayacak diğer üye diyelim onu alacak ve kendisinden bir şey isteniyor ise cevaplayacak yada en azından aldım diye bir bilgi yollayacak. Her ikiside aynı anda verme yapmamalıdır. Biri daima dinleme (bilgi bekleme) konumunda olmalıdır. Sorun bu. Kısaca senkron sorunun var. Daha akıllıca bir mantık yürütmelisin.

Ete

Powered by EzPortal