duminică, 24 decembrie 2017

Programator simplu pentru modulele ESP-01

           Cu ceva timp in urma am inceput sa dezvolt aplicatii simple pentru modulele din familia ESP8266. Primul modul cu care m-am familiarizat a fost modulul NodeMCU. Am optat pentru acesta versiune deoarece prezinta urmatoarele avantaje:
- dezvoltarea programelor este foarte simpla. Initial am utilizat limbajul LUA, dar l-am inlocuit rapid cu Arduino, datorita numarului mare de biblioteci si aplicatii open source
- este dotat cu o multime de pini GPIO cu functii multiple, cum ar fi: SPI, I2C, CAN, etc
- are port serial incorporat, astfel ,depanarea programelor devine foarte simpla
- este dotat cu un programator incorporat, compatibil cu portul USB al calculatorului
- alimentarea acestuia se poate face atit din portul USB cit si prin intermediul pinilor specializati
            Tot din familia ESP8266 folosesc pentru aplicatiile mele si modulul ESP-01. Acesta este o bijuterie in miniatura, prezinta dimensiunile 25 x 15 mm, are 8 pini si,in functie de versiune, este dotat cu capacitati diferite de memorie. Este conceput in mai multe variante, nu cunosc exact numarul acestora, personal intilnind doar varianta standard AI Cloud si versiunea ESP-01S. Miniaturizarea modulului prezinta si unele dezavantaje. Astfel, au fost eliminati o parte din pinii GPIO, stabilizatorul de tensiune si etajul de programare al modulului. Prin eliminarea etajului de programare, am fost pus in situatia neplacuta de a construi un programator compatibil cu acesta. Din fericire pentru mine, pe internet sint o multime de pagini care descriu constructia unui astfel de programator. Eu am folosit circuitul urmator:


           Aceast circuit functioneaza foarte bine atit timp cit cele doua butoane sint apasate in ordinea corecta si mentinute pe timpul programarii. Nu voi descrie acest proces, el regasindu-se descris pe foarte multe pagini de internet.
           Deoarece la programare greseam ordinea corecta de apasare a butoanelor, sau pur si simplu uitam sa le apas, aveam erori. Din dorinta de a inlatura aceste neajunsuri am inceput sa studiez circuitul electronic din descrierea modulului NodeMCU. Astfel, am constatat ca cele doua butoane sint inlocuite cu doi tranzistori care prin intermediul pinilor de comanda DTR si RTS, din convertorul USB la Serial, seteaza automat trecerea in modul de programare. Schema de principiu a programatorului din descrierea modulului NodeMCU este urmatoarea:


            Avind ca inspiratie circuitul electronic de mai sus, mi-a venit ideea sa utilizez programatorul de pe modulul NodeMCU, pentru programarea modulelor mele. Deoarece semnalele de comanda, nRST si GPIO0, TxD si RxD, folosite la programare, se regaseasc pe pinii de conexiune ai modulului, folosirea acestuia ca programator pentru modulele ESP-01, devine realitate. In aceasta situatie singura problema care mai trebuie rezolvata este dezactivarea modulului ESP-12 din componenta modulului NodeMCU. Pentru rezolvarea acestei probleme sint posibile doua solutii: inlaturarea definitiva a acestuia sau dezactivarea hardware. A doua varianta este cea mai simpla si comoda. Astfel daca pinul ENABLE este trecut din nivelul HIGH in LOW, functionarea modulului ESP-12 este intrerupta. Iata circuitul electronic propus de mine:


            Toate testele realizate cu acest circuit au dat rezultate pozitive. Am testat modulul folosind programele: Arduino, NodeMCU Firmware Uploader, LUA Loader si ESplorer. Acestea au functionat fara erori. Programarea este simpla, automata si fara a se apasa vreun buton din componenta modulului NodeMCU. Iata cablajul imprimat si realizarea practica a programatorului:

       



            De mentionat este faptul ca pentru programator eu am folosit modulul NodeMCU V3 de la firma LoLin cu dimensiunile 60 x 31 mm. Pe piata se gasesc si alte versiuni ale acestui modul, personal mai posed unul de la Amica cu dimensiunile 50 x 25 mm. Cind am proiectat cablajul nu am tinut cont de acest aspect si imi pare rau. Puteam realiza cablajul astfel incit sa fie folosit cu ambele versiuni. Am testat functionarea modulului Amica prin conectori flexibili cu fir si nu au fost probleme, acesta a functionat perfect. Iata versiunea 2 a cablajului in care pot fi conectate ambele versiuni de module NodeMCU:

         

Aceasta versiune nu a fost construita !


            Acestea sint setarile corecte, la programare, cind se foloseste platforma Arduino IDE:


            Montajul este realizat pe o bucata de cablaj imprimat cu dimensiunile 35 x 78 mm. Desi nu recomand, cine nu are rabdare sa confectioneze cablajul, poate folosi conectori flexibili cu fir, astfel am realizat si eu primele mele teste. Personal cred ca aceasta este cea mai simpla si eleganta solutie pentru programarea modulelor ESP-01. Succes!



Descarca cablajul imprimat programator: 

Pentru realizarea proiectului m-am inspirat din:


---  73's   YO7FWS  ---

miercuri, 15 noiembrie 2017

RTL-SDR, o noua provocare pentru mine ( partea 2 )

           Experimentele mele in domeniul RTL-SDR continua. Dupa finalizarea primei variante a programului au urmat ore intregi de teste si comparatii cu alte programe. Am urmarit, in mod deosebit, care este nivelul minim al semnalelor receptionate ce pot fi afisate si identificate pe ecranul waterfall. Deoarece experienta mea in domeniul DSP este mica, am crezut ca nivelele afisate sint puternic dependente de algoritmii ce stau la baza calculului FFT. Astfel, am testat mai multi algoritmi, iar rezultatele au fost absolut identice. Am continuat sa experimentez si am analizat cu atentie rezultatele, iar la final am ajuns la concluzia urmatoare: nivelul minim afisat este dependent de numarul esantioanelor analizate in FFT. Astfel, cu cit este mai mare, cu atit mai bine. Pentru afisarea unor semnale foarte slabe este necesar folosirea unui numar de 128 x 1024 esantioane. La o asemenea valoare am constatat ca toate semnalele radio ce se aud in difuzorul statiei mele, indiferent cit de slabe sint, se disting si pe ecranul waterfall. Datorita incarcarii procesorului, marirea numarului de esantioane are ca rezultat intirzieri in afisarea spectrului. Dupa testarea vitezei de calcul al tuturor alogoritmilor disponibili, cel mai rapid a fost, algoritmul FFTW. Toate testele au fost facute in aceleasi conditii, fara afisarea spectrului in ecranul waterfall. 
            Cine doreste sa testeze algoritmii FFT, are la dispozitie programul si codul sursa al acestora.


Descarca codul sursa si executabilul.

Pentru realizarea proiectului m-am inspirat din:
http://raxp2.blogspot.ro/2016/04/rtl-sdr.html
http://www.fftw.org/install/windows.html
http://www.ibiblio.org/pub/academic/computer-science/history/pdp-11/rt/misc/mega/fft.pas


---  73's   YO7FWS  ---

marți, 7 noiembrie 2017

RTL-SDR, o noua provocare pentru mine ( partea 1 )

            Cu ceva timp in urma am intrat in posesia unui stick dedicat receptiilor TV si adaptat de catre radioamatori receptiilor SDR, avind in componenta sa cipul RTL2832U. Dupa citeva experimente reusite am trecut la montarea acestuia in interiorul transceiverului meu, un FT897D, pe post de panoramic adapter. Pentru a vizualiza semnalele radio am folosit mai multe programe, dintre acestea evidentiindu-se HDSDR si SDR Console. HDSDR este cel mai apropiat nevoilor mele, dar SDR Console mi se pare mult mai deosebit. Desi ambele programe imi plac foarte mult, acestea nu sint complete si prezinta anumite dezavantaje functionale. Datorita acestor aspecte, am luat hotarirea de a incerca sa imi dezvolt o aplicatie proprie, care sa se apropie cit mai mult cerintelor mele. 
            Din fericire pentru mine, pe internet exista o multime de aplicatii Open Source care le-am folosit ca sursa de inspiratie si care m-au ajutat sa dezvolt prima mea aplicatie simpla. Pentru inceput am invatat cum pot seta si afisa un anumit segment din spectrul radio. Deorece vizualizarea emisiunilor radio foarte slabe este greoaie, am hotarit sa afisez spectrul radio numai printr-un ecran waterfall. Acesta afiseaza amplitudinea semnalelor pe diferite nivele de culoare, usurind diferentierea emisiunilor radio de zgomotul de fond. Desi fiecare comanda trimisa receptorului este urmata de un raspuns din partea acestuia, in aceasta etapa a programului, am ales sa nu tratez acest raspuns, considerindu-l intotdeauna ca fiind OK.


            Programul a fost scris in mediul de dezvoltare Borland Delphi 6 si o mica parte a fost inspirat din sursele programelor lui Sergey G. Badlo. Pentru afisarea ecranului waterfall am testat mai multe Fast Furier Transform (FFT) cu rezultate foarte asemanatoare. In aceasta versiune a programului am folosit FFT din codul sursa al autorului sus mentionat, la care am adus usoare modificari. Pentru afisarea culorilor din waterfall am creat o paleta proprie de 64 de nivele de culoarea in spectrul Albastru - Galben - Rosu.
            Deoarece programul este in teste, afisez numai segmente mici din spectrul radio, doar pentru a evidentia rezutatele codului scris de mine. Proiectul este destul de captivant si cere multa pregatire din partea celui care il abordeaza. Personal sper sa il duc la bun sfirsit.

Descarca codul sursa si executabilul.

Pentru realizarea proiectului m-am inspirat din:
http://delphiexamples.com/application/appsynchthread.html
http://ajoo.blog/intro-to-rtl-sdr-part-ii-software.html
http://raxp2.blogspot.ro/2016/04/rtl-sdr.html
http://www.m0dts.co.uk/files/simple_rtlsdr_fft.c


---  73's   YO7FWS  ---

joi, 2 noiembrie 2017

Alarma SMS in Arduino cu ESP8266


            Sint multe situatii cind doresti sa monitorizezi un eveniment, iar daca acesta se intimpla, sa fii anuntat in timp real. La ideea unui coleg de serviciu am incercat sa gasesc o solutie pentru monitorizarea unei usi aflata intr-o anumita locatie si anuntarea proprietarului la momentul deschiderii ei. Am luat in calcul toate posibilitatile si cea mai simpla solutie a fost monitorizarea deschiderii usii printr-un senzor Reed si anuntarea proprietarului printr-un mesaj SMS. Iata cum arata aceasta solutie.
            In magazine, pentru monitorizarea usilor si ferestrelor se gasesc niste dipozitive de alarma foarte ieftine care emit un sunet puternic cind acestea sint deschise. Dispozitivul are in componenta sa doua module, respectiv un circuit electronic si un magnet. Acestea trebuiesc montate unul in apropierea celuilalt pe elemente diferite, respectiv usa si tocul usii. Momentul deschiderii sau inchiderii usii este sesizat de un senzor Reed si apoi anuntat acustic intr-un difuzor piezoelectric. Montajul se alimenteaza cu doua baterii de 1,5V si poate fi pornit sau oprit dintr-un comutator basculant. Datorita constructiei sale, acest dispozitiv se preteaza perfect proiectului meu.


            Momentul cind usa este deschisa este semnalizat prin expedierea unui mesaj SMS. Dar cum este posibila aceasta? O metoda ar putea fi conectarea dispozitivul nostru prin wireless sau bluetooth la un telefon mobil si prin comenzi AT sa trimita un mesaj SMS. Desi aceasta solutie este perfect posibila, personal, nu o agreez. Cea mai simpla solutie pentru expedierea mesajelor SMS, este transmiterea lor din internet. Pentru aceasta dispozitivul nostru trebuie sa se conecteze la internet si apoi sa transmita mesajul. Conectarea la internet se face cu ajutorul unui modul din familia ESP8266, respectiv ESP - 01, care permite conectarea wireless. Pentru trimiterea mesajelor SMS am ales un provider local, care prin intermediul unei platforme API permite acest serviciu. Astfel am cumparat un pachet de mesaje SMS la un pret foarte convenabil cu o perioada de valabilitate de 6 luni. 
            Pentru realizarea proiectului, am eliminat circuitul electronic si difuzorul piezoelectric, pastrind in continuarea carcasa. Circuitul electronic a fost inlocuit cu altul construit de mine. Schema de principiu este foarte simpla si poate fi vazuta in imaginea urmatoare.


           Modulul ESP - 01 este alimentat de la baterii prin intermediul unui senzor Reed si un comutator basculant. Comutatorul este folosit pentru pornirea si oprirea functionari sistemului, iar senzorul Reed pentru activarea alarmei cind usa este deschisa. Senzorul original a fost inlocuit cu un senzor care contine un contact Normal Inchis (NC). Principiul de functionare este simplu: 
      - daca comutatorul se gaseste in pozitia Pornit (ON) si usa este inchisa, contactul Reed este basculat in pozitia Normal Deschis (NO) si astfel modulul ESP - 01 ramine fara alimentare.
      - cind usa este deschisa, contactul Reed basculeaza in pozitia Normal Inchis (NC), pornind alimentarea modulului ESP - 01 si alarmarea proprietarului prin conectarea la internet si transmiterea mesajului SMS.
            In acest moment proiectul prezinta si un dezavantaj. Ori de cite ori este pornit sau oprit sistemul de catre proprietar, acesta va trimite un mesaj SMS. Acest dezavantaj ar putea fi inlaturat prin introducerea unei intirzieri intre momentul deschiderii usii si momentul transmiterii mesajului SMS, interval de timp in care se poate opri sistemul. Personal, nu agreez aceasta varianta, scopul urmarit de catre mine fiind scurtarea intervalului de timp dintre activarea alarmei la deschiderea usii si trimiterea mesajului SMS.


           Montajul electronic a fost realizat pe o placuta de cablaj imprimat cu dimensiunile de 27 x 27 mm. Deoarece pe viitor este posibila upgradarea acestei versiuni, am luat decizia montarii modulului ESP - 01 prin intermediul unui conector autoconstruit. Am ales aceasta varianta deoarece spatiul nu permitea conectori clasici. Astfel am folosit pini terminali de 0.6 mm folositi la cablurile electrice la care am indepartat portiunea PVC colorata si i-am montat prin cositorire pe cablajul imprimat.


            Montarea celor doua module componente ale sistemului trebuie facuta cu atentie, astfel incit in momentul inchiderii usii, senzorul Reed trebuie sa se gaseasca in pozitia Normal Deschis (NO). 
            Pentru conectarea wireless la routerul de internet si transmiterea mesajului SMS in interiorul modulului ESP - 01 trebuie incarcat un program. Acest program l-am scris cu ajutorul mediului de dezvoltare Arduino. Datorita simplitatii sale nu voi descrie functionarea programului.
            De remarcat la acest proiect este faptul ca timpul de conectare la router si transmiterea mesajului SMS este puternic influentat de starea de incarcare a bateriilor. Scaderea tensiunii de alimentare sub 3V va avea ca efect marirea intervalului de timp intre momentul activarii alarmei si momentul transmiterii mesajului SMS. Pe viitor voi incerca sa inlatur acest neajuns prin folosirea unei baterii de 12V. Sistemul functioneaza perfect si este deja montat pe usi si ferestre.
            


Descarca:

La executarea proiectului m-am inspirat din:

Pentru trimiterea mesajelor SMS folosesc serviciile:

---  73's   YO7FWS  ---

marți, 25 aprilie 2017

Reflectometru pentru statia radio

                In anul 2008 am achizitionat un transceiver FT897D. Datorita costurilor suplimentare, am renuntat la achizitionarea unui antena tuner si am luat hotararea construirii lui. La putin timp dupa aceea am reusit sa imi definitivez unul, schema folosita fiind a clasicului Z - Match. Acesta a functionat din prima, fara probleme. Deoarece la momentul respectiv nu mi-am construit si un reflectometru, am luat decizia sa imi completez echipamentul cu unul. Cu ani in urma, amicul Neo YO7FJK, a experimentat cu succes un reflectometru cu toruri de ferita si a fost incantat de rezultatele obtinute. Cunoscand experienta sa in domeniu si rezultatele sale, m-am decis ca schema folosita de mine, sa fie aceeasi. Din lipsa de spatiu, am hotarat ca in interiorul carcasei antena tuner sa montez doar modulul detector, instrumentele de masura urmand sa fie montate intr-o alta carcasa in exteriorul acestuia. Decizia am luat-o in incercarea de a folosi cat mai putine conexiuni externe cu cablu coaxial. Iata schema de principiu:


            La realizarea acestuia am folosit doua toruri de ferita, T1 si T2, recuperate din niste echipamente radio, pe care am bobinat 12 spire cu sarma de 0.5 mm din cablul folosit la retelele de telefonie fixa. Liniile L1 si L2 sint realizate din bucati de cablu coaxial de 50 ohmi, respectiv RG58, cu lungimea de 50 mm. O atentie deosebita trebuie acordata conectarii acestora, deoarece masa este conectata doar la unul din capete, iar la cealalta linie, invers, la celalalt capat. Diodele redresoare folosite sint 1N4148, dar pot fi folosite cu performante mai bune diode Schottky, eu personal nu am avut la dispozitie. Celelalte componente sint SMD, model 1206, iar potentiometrul este dublu. Intregul montaj a fost realizat pe o bucata de cablaj imprimat cu dimensiunile de 65 x 50 mm. O precizare trebuie facuta aici: cablajul imprimat cu o parte din dispunerea pieselor l-am gasit descris pe forumul CQHAM.RU si a fost proiectat de catre radiomatorul ucrainean Serghei UT0IS.  Eu am intervenit foarte putin asupra acestuia si componentelor folosite. Iata rezultatul:





                Partea de afisare a nivelelor semnalelor este asigurata de doua instrumente de masura identice, recuperate din aparatura audio. Acestea impreuna cu potentiometrul dublu au fost montate intr-o carcasa construita din cablaj imprimat, sticlotextolit, cu dimensiunile 140 x 57 x 50 mm. Panoul frontal este din PVC si a fost decupat laser la o firma de articole publicitare, iar scalele instrumentelor de masura au fost descarcate din internet, redimensionate si tiparite. Conexiunea intre cele doua module se face cu un cablu trifilar si conectori mama - tata, audio stereo, de 3.5 mm. Iata cum arata definitivat montajul:






            Deoarece in locatia mea de baza nu mai pot instala o antena exterioara, testele le-am facut intr-o alta locatie a familiei mele pe doua antene dipol de lungimi diferite. Ambele antene au fost acordate foarte bine in benzile superioare si satisfacator in benzile inferioare. Reflectometrul a functionat fara nicio problema indicand corect acordul antena tuner. Pe viitor intentionez sa incerc si o varianta de afisare cu microcontroler si afisaj LCD. 
            Cateva concluzii personale: reflectometrul functioneaza foarte bine, este usor de construit si nu pune probleme deosebite. Este un accesoriu util si necesar in completarea echipamentelor proprii.

Descarca:

La executarea proiectului m-am inspirat din:


---  73's   YO7FWS  ---

joi, 2 martie 2017

PanAdapter pentru YAESU FT897D

            Aparitia pe piata a stick-urilor TV care folosesc chipset-ul RTL2832U, mi-a atras atentia asupra facilitatilor si posibilitatilor acestuia.  Am fost deosebit de incintat sa descopar ca poate receptiona aproape orice tip de emisiune intr-o gama larga de frecvente ce se intinde de la citiva zeci de megahertzi pina la cca 2GHz. O alta facilitate, destul de interesanta pentru zilele noastre, este aceea  prin care acesta permite inregistrarea unui spectru radio, de 2MHz, permitind ascultarea ulterioara a acesteia, pe fiecare emisiune sau frecventa in parte. Acest stick este o adevarata bijuterie, foarte ieftin, care in functie de imaginatia fiecaruia permite o varietate de functii. Dintre toate mi-a atras atentia posibilitatea lui de a fi folosit pe post de Panoramic Adapter la transceivere de generatie veche sau mai recenta. Acest adaptor permite vizualizarea pe calculator a unui segment de banda radio si posibilitatea de schimbare rapida a frecventei in transceiver, printr-un simplu click. Personal, nu sint fan al acestui adaptor in unde scurte, deoarece gradul de incarcare al benzii este destul de mare. In schimb, in unde ultrascurte, unde mai aproape tot timpul este zgomot de fond, acesta devine destul de util prin descoperirea la timp a unor emisiuni radio noi aparute. Primele teste le-am facut in vara anului trecut si au avut ca rezultat, identificarea in timp real ale unor statii noi aparute, urmat de legatura radio cu acestea. Aceste experiente reusite m-au convins asupra utilitatii lui si astfel am inceput sa ma gindesc tot mai serios la modul de adaptare al acestuia la echipamentul pe care il folosesc eu, un FT897D. Pe internet este sugerat a se conecta in statia radio la prima frecventa intermediara, inainte de filtru. Desi exista doua puncte de conectare, cel mai convenabil este punctul B, deoarece aici influenta stick-ului asupra receptiei este minima, aproape insesizabila. In punctul A, datorita cuplajului strins din filtru, acesta influenteaza in mod negativ caracteristica acestuia, producind o atenuare semnificativa a semnalului.


           Pentru a micsora la maxim influenta stick-ului asupra statiei si invers, am hotarit sa il cuplez la frecventa intermediara printr-un etaj amplificator separator. Un simplu amplificator cu FET am considerat ca este deajuns si astfel am trecut la treaba. Eu folosesc pentru receptia emisiunilor un stick de la firma TerraTec model Cinergy TStickRC Rev. 3. 


            Schema de principiu folosita este prezentata mai jos. Alimentarea etajului amplificator separator se face cu tensiune de 3.3V care se ia direct din stick. Singurele modificari efectuate acestuia au fost eliminarea conectorului USB si a senzorului IR pentru telecomanda. Astfel pinul folosit pentru alimentarea senzorului a fost utilizat pentru alimentarea etajului amplificator.


            Pentru punerea in practica a celor descrise aici, am proiectat un cablaj imprimat cu dimensiunile 59 x 97 mm, in care am dispus convenabil amplificatorul separator si modulul stick. Pentru conectarea externa cu calculatorul personal am dispus folosirea unui conector USB tip B.



          Din motive ergonomice, mi-am dorit ca acest modul sa fie montat in interiorul statiei. Astfel am hotarit sa il montez in cutia de acumulatori, deoarece exista disponibil foarte mult spatiu si nu intentionez sa folosesc vreodata echipamentul pe acumulatori. Pentru fixarea modulului am dat doua gauri in suportul de metal, fara sa afectez in vreun fel functionarea sau stabilitatea mecanica a statiei. Astfel dupa montare, conectorul USB trebuie sa se afle pozitionat in dreptul conectorului CHG - B de la acumulatori. Iata citeva detalii constructive:







          Realizarea practica a modulului nu prezinta nicio problema. Trebuie acordata putina atentie fixarii acestuia si a modului cum sint alesi distantierii, acestia fiind inegali. Recomand fixarea mai intii a modulului in gaurile deja existente, marcarea si apoi gaurirea celorlalte. Cea mai mare atentie trebuie acordata conectarii cablului coaxial care face legatura dintre modul si frecventa intermediara. Firele trebuiesc cositorite inainte de lipire, identificat corect punctul de conexiune si apoi cu putin profesionalism se executa lipitura. Nu au fost probleme deosebite.
            Astfel, cu modulul gata montat am trecut la teste. Eu folosesc pentru a vizualiza semnalele programul HDSDR setat pe frecventa 68339000 Hz si un offset de 9000 Hz, iar pentru acordul automat prin functia CAT, folosesc Omnirig. Setupul complet este descris de catre K4AX in videoclipul sau. In urma testelor facute prin conectarea si deconectarea la frecventa intermediara a modulului, variatia semnalelor la receptie,  in difuzorul statiei, este insesizabila. 


           La final as dori sa precizez ca nimic din ceea ce am descris aici nu este nou, original. Este doar o solutie, un mod de rezolvare a problemelor propuse, conform cerintelor proprii si sugestiilor din internet. 

La executarea proiectului m-am inspirat din:


luni, 6 februarie 2017

Microfon cu Bluetooth pentru conectare CAT la Yaesu FT897

            Nu sint fan CAT si nici nu-mi place sa comand transceiverul din calculator. Ma simt bine cind rotesc vernierul, cind simt cu adevarat acordul, cind sunetul este asa cum il doresc eu. Si totusi exista momente cind avantajele CAT sint de neinlocuit. Nu ma voi apuca sa descriu aici avantajele si dezavantajele folosirii acestuia dar voi spune ca am luat decizia folosirii CAT pentru comanda statiei dupa ce am facut primele teste ale unui Pan Adapter cu RTL2832U la transceiverul meu FT897D. Este minunat cind esti in 2m sa poti vizualiza banda sau un segment de banda si sa poti descoperii la timp aparitia unui corespondent pe o alta frecventa apropiata tie. Dar cum aceasta nu este deajuns, observind si principalele neajunsuri, am luat hotarirea sa completez cu CAT receptia mea panoramica. Initial luasem hotarirea folosirii unui cablu intre transceiver si calculator pe care era intercalat un convertor USB la RS232 si o adaptare optoizolata conform schemei de aici. Navigind pe internet am descoperit o idee mult mai simpla, moderna si eleganta: conectarea statiei printr-un modul bluetooth. Ideea nu era noua si a fost descrisa pentru intiia data, dupa cunostintele mele, de catre Dan YO3GGX, pe pagina personala. Dar cum nici aceasta nu era deajuns, pe pagina personala a lui SP3SWJ, apare descrisa montarea si conectarea bluetooth-ului in interiorul microfonului MH31A8J cu care sint inzetrate transceiverele FT857 si FT897.


            Deoarece aveam prin casa disponibil un modul GW-040, care este suportul de baza al modulului bluetooth HC-06, pe care il achizitionasem pentru diferite teste, am luat hotarirea sa il sacrific acestui proiect. Si cum descrierea nu parea prea complicata in scurt timp am trecut la treaba.


1. Am demontat capacul microfonului, placuta cu componente si am indepartat armatura de plastic care sustine microfonul dinamic. Prin indepartare am facut loc montarii modulului intre placuta cu componente si carcasa. Aceasta armatura nu a afectat in mod negativ stablitatea sau functionarea microfonului.


2. Am pregatit modulul bluetooth prin conectarea unor fire de culori diferite pentru conectarea acestuia la microfon. 


3. Folosindu-ma de schema originala a microfonului MH31A8J dupa scurtare am conectat firele la placuta cu componente conform schemei alaturate.



4. Am introdus cu atentie modulul in microfon si am montat placuta cu componente si capacul de la microfon.




5. Cu ajutorul menu-ului 59 din FT897D am activat functionarea modulului prin selectarea functiei
' CAT '. Modulul este descoperit in retea cu ID-ul 'HC-06' si parola este '1234'.

La testarea acestuia am folosit un telefon mobil cu Android pe care am instalat programul lui Dan YO3GGX, respectiv PocketRxTx Free. Modulul a functionat de prima data fara nicio problema. Nu l-am testat pe adaptorul panoramic, dar aceasta va fi subiectul unor experimente viitoare.

La executarea proiectului m-am inspirat din:


---  73's   YO7FWS  ---

sâmbătă, 31 decembrie 2016

Retea privata Dynamic DNS cu ESP8266 ( partea 2 )

Client si Server Dyn DNS - versiunea Arduino


            Cind am hotarit pentru prima oara sa scriu programe pentru NodeMCU, am avut de ales intre limbajele eLua si Arduino. Cistigator a fost eLua deoarece era mult mai apropiat de limbajele pe care le cunosc eu. Cu timpul am descoperit ca datorita simplitatii, limbajul eLua este foarte limitat. Atunci, de voie-de nevoie, am decis sa invat limbajul Arduino. Cu ajutorul unui tutorial simplu, aproape totul intr-o singura pagina, am inceput, incet-incet, sa il invat. La scurt timp au aparut si primele rezultate. Dar cea mai mare provocare a fost cind am luat hotarirea sa-mi traduc propriile programe din eLua, in Arduino. Desi rezultatele nu se aseamana cu sursele lor, am reusit sa implementez majoritatea functiilor si facilitatilor din programele sursa. Personal, cred ca am reusit. Azi fac public sursele programelor Server si Client Dyn DNS versiunea Arduino. Nu ma astept sa fie perfecte si probabil pe alocuri mai pot fi cosmetizate, dar garantez ca sint perfect functionale. Cel mai greu a fost implementarea agendei in care se memoreaza numele clientilor si IP-urile acestora. Sincer, in eLua era chiar mai simplu. Sper ca cineva, cu mult mai multa experienta, sa corecteze codul meu. 
Deoarece 2016 este la final si 2017 bate la usa, urez tuturor, 
La multi ani cu multa sanatate si prosperitate !

luni, 19 decembrie 2016

Retea privata Dynamic DNS cu ESP8266 ( partea 1 )

            Intotdeauna cind vei dori sa accesezi de la distanta prin internet un dispozitiv, o camera IP, un mic server sau un simplu senzor, te vei lovi mereu de aceeasi problema: unde si la ce adresa din internet se gaseste dispozitivul tau? Asa am patit si eu, la inceput, cind m-am hotarat sa accesez informatia de pe un mic server cu NodeMCU dispus la mine acasa. Dar problema expusa nu este noua, ea fiind rezolvata de multi altii inaintea mea. Solutia adoptata de catre acestia consta in apelarea la serviciile de redirectionare IP ale unor site-uri precum DynDNS, No-IP, FreeDNS, etc. La inceput am fost tentat si eu, sa folosesc un astfel de serviciu dar studiind bine oferta providerului meu de internet, RCS RDS, am constatat ca nu mai era necesar. Acesta ofera serviciul gratuit de redirectionare IP pentru clientii sai. Astfel, setand un domeniu pe site-ul lor si un port forward pe routerul meu am facut posibila aparitia mea pe internet la adresa ywar2.go.ro:9876. Dar lucrurile nu stau intotdeauna asa bine. Cind m-am hotarat sa fac aceeasi setare intr-o alta locatie a familiei mele, aceasta nu mai era posibila. Providerul local nu ofera servicii de redirectionare. Astfel, cautand solutii pe internet, mi-a venit ideea: de ce nu mi-as face propria mea retea privata de redirectionare IP? Oare ar fi posibil? De ce as avea nevoie?
            Fara sa intru in amanunte si descriind aspecte la care nu ma pricep, am constatat ca majoritatea retelelor sint constituite dintr-un server dispus la un IP fix, unul sau mai multi clienti care au IP-urile dinamice si un protocol de comunicatie intre acestia. Protocolul este simplu si consta dintr-un mesaj prin care clientul isi face cunoscuta identitatea si apartenenta la retea, iar serverul memoreaza identitatea si IP-ul la care se afla acesta. La aparitia unui vizitator care doreste sa ia legatura cu clientul, serverul trimite adresa IP unde se afla acesta, astfel stabilindu-se legatura intre vizitator si client. Daca asa stau lucrurile, atunci de ce as avea nevoie? In primul rand de un IP fix sau relativ fix, de un server, un client si un protocol de comunicatie intre acestia. IP fix sau relativ fix am de la providerul meu de internet. El este relativ fix deoarece in realitate este dinamic, dar adresa la care acesta este gasit, respectiv ywar2.go.ro, este fixa. Pentru server si client m-am hotarit sa folosesc modulele cu ESP8266, respectiv NodeMCU. Sint simplu de folosit, mici si ieftine, si se conecteaza usor la internet. In privinta protocolului de comunicatie m-am inspirat din mesajele pe care le trimit furnizorii de astfel de servicii pe care datorita simplitatii retelei le-am adaptat cerintelor minime de functionare. Iata cum arata in realitate reteaua mea privata !



Protocolul de comunicatie


           Pentru functionarea corecta a retelei periodic, la un anumit interval de timp, clientul trebuie sa comunice cu serverul. Acesta trebuie sa anunte de existenta si apartenenta sa la retea. Personal, datorita simplitatii retelei, dar si datorita faptului ca este privata, am renuntat la partea de mesaj cu apartenenta acestuia. Aceasta consta intr-o parola prin care isi confirma autenticitatea. Nu am si nu intentionez sa am asa multi clienti incat sa apara conflicte la nivelul serverului. Serverul confirma receptia mesajului, detecteaza IP-ul clientului si il memoreaza alaturi de identitatea acestuia. Cind un vizitator interogheaza serverul despre un client, serverul trimite vizitatorului o pagina HTML de redirectionare a acestuia catre adresa IP la care se gaseste clientul cautat. In continutul paginii HTML se gaseste un script care se executa automat si care directioneaza browserul clientului la adresa IP solicitata. Continutul paginii HTML este inspirat exact de aici. Iata mai exact schimbul de mesaje intre client, server si vizitator.


Serverul


            Gestionarea retelei, mai precis evidenta clientilor, detectarea IP-urilor si redirectionarea vizitatorilor catre destinatari este deservita de catre server. Desi, la prima vedere, pare ca acesta are destul de mult de lucru, in realitate nu este asa. Cea mai mare parte din timpul functionarii sale este ocupata cu traficul si evidenta clientilor, iar cea mai mica parte din timp, cu raspunsul la interogarea vizitatorilor. Ce face concret acesta ? Ori de cate ori un client trimite un mesaj de improspatare a datelor, continutul acestora este analizat, este extras numele clientului, detectat IP-ul acestuia si apoi memorate impreuna. Daca toate acestea sint realizate, serverul confirma clientului receptia corecta a mesajului. Desi nu am prevazut explicit acest caz, cind continutul mesajului este alterat, severul raspunde clientului cu pagina de redirectionare catre o pagina WEB care avertizeaza eroarea. La aparitia unui vizitator serverul poate raspunde in mai multe moduri. Daca vizitatorul interogheaza doar adresa serverului, fara numele unui client, acesta raspunde cu o pagina WEB prin care se identifica. Atunci cind interogarea contine si numele unui client, serverul verifica clientii din memoria sa si daca acesta exista, trimite pagina de redirectionare cu IP-ul clientului cautat. Daca clientul nu exista sau continutul este alterat, este redirectionat catre o pagina WEB care avertizeaza eroarea. Acestea sint pe scurt toate procesele pe care le desfasoara serverul. 

Clientul


            Rolul clientilor in aceasta retea este acela de a comunica serverului numele clientilor care beneficiaza de serviciul de redirectionare. Numele clientilor alaturi de IP-urile lor vor fi memorate de catre server pentru a fi furnizate ulterior vizitatorilor. Pentru a nu aglomera inutil serverul si pentru prevenirea aparitiei de coliziuni, este indicat ca rata de reimprospatare a datelor din server sa se faca o data la 10..15 minute. Astfel serverul poate gestiona un numar mare de clienti si utilizatori. Orice conectare corecta la server, dar si deconectarea, sint indicate de aprinderea sau stingerea LED-ului de pe placa. Desi nu este indicat, temporar, pana la resetarea IP-ului sau chiar a serverului, update-ul se poate face si manual, respectand regulile din imaginea de mai sus, dintr-o pagina WEB, fara a fi necesara existenta unui modul client. Acesta este un caz particular, posibil ca o  facilitate a acestui sistem.

Realizarea practica


            Pentru crearea serverului si clientului, m-am orientat catre modulele NodeMCU. Acestea beneficiaza de o gramada de facilitati care le fac perfecte realizarii proiectului. Pentru scrierea programelor care gestioneaza serviciile acestora am folosit limbajul eLua. Nu voi intra in amanunte legat de ceea ce am scris, dar voi da lamuriri daca mi se vor cere. Programele sint open source si pot fi modificate dupa bunul plac. Ambele variante, server si client sint versiuni Lite care asigura minimul de functii necesare functionarii corecte a retelei. Toate imbunatarile de care vor beneficia acestea, vor fi publicate pe viitor. Experimentele continua !

Online Dynamic DNS Server: ywar2.go.ro:9876.
Descarca codul sursa.

Pentru realizarea proiectului m-am inspirat din:


---  73's   YO7FWS  ---

vineri, 14 octombrie 2016

Interconectare GPS - ESP8266

      Intentionez sa ma apuc de un nou proiect. Vreau sa im construiesc o baliza radio WSPR. Din schemele publicate pe internet reiese necesitatea folosirii unui GPS, pentru sincronizarea corecta a balizei radio si detectarea pozitiei acesteia. Cu ajutorul site-urilor specializate in vinzari - cumparari, am gasit la un pret destul de modic un Mouse GPS model Fortuna U2 folosit la extinderea functiilor pocket-urilor. Prima operatie pe care am facut-o a fost demontarea acestuia, inlaturarea cablurilor de legatura si conectarea unor fire subtiri necesare testelor ce vor urma. Conectarea firelor am facut-o conform figurii de mai jos. Am cautat prin seratarele mele si am gasit un modul convertor USB2Serial care dupa instalarea driverelor in Windows am constatat ca nu functiona corect, fiind compatibil cu versiuni mai vechi. Ce este de facut?  Cum pot vizualiza semnalele NMEA receptionate de GPS daca nu am niciun adaptor de port serial? Astfel mi-a venit ideea: il conectez pe serialul lui NodeMCU. La treaba, urmeaza experimente !

Schema conectare GPS - NodeMCU V3

      Pentru a vizualiza semnalele NMEA care sint transmise prin intermediul portului serial cu ajutorul modulului NodeMCU imi era necesar realizarea unui bridge de date intre portul serial al acestuia si internet. Pentru aceasta am scris un mic program care transfera datele astfel incit ele pot fi vizualizate cu ajutorul unui client TCP din internet. Dupa citeva teste programul a fost gata si am trecut la experimente. Dupa conectarea iesirii de date de la GPS la modulul NodeMCU si alimentarea acestuia am inceput a vizualiza pe internet datele transmise de acesta. Nu mica mi-a fost mirarea sa constat ca erau caractere alfanumerice aleatoare, nimic din ce mai vazuzesem pe internet. M-am intors dinou la browser si dupa citeva cautari descopar in descrierea unui videoclip recomandarea: Baud rate: 4800, inverted signal levels. Desii am incercat software sa inversez semnalele inainte de a le transmite pe internet, rezultatele au fost un esec total.  Daca nu am reusit software atunci sa incercam hardware. Am luat un tranzistor BC171  si cu o rezistenta de 10K si cu ajutorul lor am construit o poarta inversoare pe care am conectat-o intre iesirea de date GPS si intrarea modulului NodeMCU. Am pornit montajul si satisfactie maxima: au aparut datele mult asteptate. Concluzie: GPS-ul functioneaza. Pozitionat in dreptul ferestrei a receptionat cu destula intirziere patru sateliti si mi-am putut vedea coordonatele pozitie mele.

Semnalele NMEA receptionate de GPS

      Pentru cine este interesat pun la dispozitie schema de interconectare GPS cu NodeMCU si softul pe care l-am folosit pentru a viziona datele din internet.
      Concluzie: inca un experiment reusit!

            GPS2Internet Bridge.lua

            Pentru realizarea experimentului m-am inspirat din:
            https://www.youtube.com/watch?v=NrUjZwZolA4
            http://www.blitzortung.org/Documents/TOA_Blitzortung.pdf


---  73's   YO7FWS  ---