Sari la conținut
ELFORUM - Forumul electronistilor

PIC cu HC-06 ( modul bluetooth).


Postări Recomandate

Am inceput un proiect pentru un controller RGB bluetooth si azi am zis sa testez o comunicatie simpla prin trimiterea unui text de pe telefon  la PIC si PIC-ul sa-l returneze ( exemplul simplu din libraria UART din MikroC). 

 

Modulul lucrand la 3.3V trebuie sa fac un convertor logic, am ales aceasta schema cu 2N7000 http://www.hobbytronics.co.uk/image/data/tutorial/mosfet_level_converter.jpg , acei 3.3V sunt luati de pe modul lipind un fir pe iesirea regulatorului aflat pe modul. 

 

Problema e in felul urmator, PIC-ul poate trimite date si sunt afisate pe telefon dar nu si invers orice as incerca nu primesc inapoi textul trimis. Din moment ce pot primii mesaje de la PIC partea de hardware / legaturi / etc.. sunt corect facute si functionale. Dupa care am facut un divizor rezistiv de la 5V la 3.3V si am folosit de acolo tensiunea pentru convertorul logic dar nici o schimbare. Suspectand convertorul logic am alimentat si PIC-ul la 3.3V facand legatura directa intre PIC si modul fara convertorul logic si am ajuns la aceeasi poveste, PIC-ul poate trimite si mesajul este primit, dar in momentul in care vreau sa trimit un mesaj catre PIC acesta nu face nimica. 

 

Din pacate inca nu a ajuns Arduino de la vecinii chinezi prin urmare nu pot testa modulul pe un alt microcontroller sa fiu 100% sigur ca nu prezinta defecte, dar dupa ce am stat aproape toata ziua si tot nu merge suspectez ca posibil sa fie modulul defect.  

 

A mai intampinat cineva o problema similara ? 

 

Codul folosit

void main() {  OSCCON = 0x70; // oscilator intern la 8Mhz  UART1_Init(9600);  UART1_Write_Text("Hello");  // Mesajul este primit si afisat pe telefon while (1) {  if (UART1_Data_Ready() == 1) {          // daca modulul semnaleaza date noi    UART1_Read_Text(output, "OK", 10);    // citim pana cand dam de "OK"    UART1_Write_Text(output);             // trimitem mesajul primit inapoi ca confirmare  }  }}

Orice text trimit care se termina cu OK gen 123OK nu este trimis inapoi, cel mai probabil nu intra in Data_Ready() ... 

Link spre comentariu
  • Răspunsuri 4
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

Zile populare

Top autori în acest subiect

HC06 se poate testa fara microcontroller, legi TX cu RX si transmiti un text pe care trebuie sa-l primesti inapoi daca modulul este bun.

 

Multumesc de raspuns, am incercat si intradevar asa este. Am trimis un text pe care l-am primit inapoi deci modulul este functional.  Se pare ca libraria UART din MikroC nu vrea sa functioneze cu modulul HC-06 cel putin nu functia de Ready().

Link spre comentariu

Libraria este buna si nu are legatura cu HC06.Pune un delay dupa initializare UART, incearca sa intelegi fiecare rutina, de exemplu sa stii cand  UART1_Data_Ready() returneaza zero sau unu, eventual testezi asta cu un led pus pe o iesire digitala.

Link spre comentariu

Am reusit sa rezolv problema, am facut o greseala de incepator. Apeland functia  UART1_Init() am zis ca se ocupa libraria de pini TX/RX dar se pare ca nu, pinul RX nu este setat ca pin digital in functia de init. Eu crezand ca se face nu am umblat la registrul ANSELB si pin-ul ramanea ca intrare analogica, dupa ce am setat eu pin-ul ca pin digital problema s-a rezolvat si functioneaza cum trebuie. Sa imi fie invatatura de tinut minte sa initializez eu pinii si sa nu depinda in totalitate de functiile de init().

 

Multumesc de ajutor.

Link spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări