Sari la conținut
ELFORUM - Forumul electronistilor

Ceas wifi cu ESP8266


Postări Recomandate

De cand am construit primul meu ceas cu mmc351 (undeva dupa revolutie) de atunci am dorit un ceas care nu trebuie reglat si totusi sa arata tot timpul ora exacta. Prima data am vrut sincronizare radio dar pe la noi nu exista emitator puternic si intr-un bloc slabe sanse sa mearga. Am gandit la gps dar din nou in bloc sa mai trag inca un cablu de antena nu merita. Apoi am gandit poate prin ethernet dar iar cablu utp la ceas..., atunci am gandit la wifi dar pana acum era destul de complicat si costa mult modulele wireless.

Noroc cu chinezi care au gandit la noi si au facut esp8266, cel mai ieftin modul wifi,cand am vazut imediat am cumparat 2 pentru teste.
Saptamana trecuta au ajuns modulele si am apucat sa construiesc ceasul, displayul am gasit intr-o conserva jiji, pic-ul am luat de la un coleg de aici(total cost vreo 30ron),asa am scris repede un program de ceas si am gandit cum pot sa sincronizez. In mod normal se foloseste ntp dar deocamdata modulul asta nu stie decat cateva comenzi tcp documentate, partea udp e inca in experimente, desi deja exista tools-uri gratuite si sursa gratuita pt. a compila firmware prentru modul, dar ca sa fie mai universal am gandit ca daca orice server http trimite ceasul lui la prima accessare de ce sa nu folosesc pe acela.

Asa am facut un paser "Date:" si e sincronizat ceasul. Singura problema e ca ceasul prin convetie este ceasul UTC si nu ceasul local, e bun si e rau, e bun ca e universal deci orice server trimite timpul UTC e rau ca mai trebuie convertit in ceasul local.
Deci la prima incercare doar am facut o corectie de +2 si era deja gata sincronizarea.
Pt. a face o conversie corecta trebuie conversie completa a datei, care deocamdata pare putin complicat deoarece sunt vreo 3 conventii de returnat timp in http si depinde de server, dar nu cred ca e imposibil.

Ca sa fie mai simplu si sa nu ma chinui cu conversii am facut pe un server un mic php care sa returneze timpul local al serverului (al Romaniei) si gata. Cam atat "<?php echo "Datee: ".date('D, d M Y H:i:s ', time());?>"

Bine bine, pana aici totul e bine si frumos dar de ce sa nu mai adaug inca ceva, de exemplu temperatura externa :)
Asa ca am modificat ca ceasul sa afiseze 10 secunde ceasul si 10 secunde altceva, acest altceva e citit de la pagina si e un cod direct afisat de ceas, deci poate fi numar sau orice altceva ce poate fi afisat cu 4x7 segmente.
Astfel dupa ceas mai trimit 8 caractere hexa cam asa: Datee: zzz, XX Nov 2014 18:44:40 FFFF0000  FF reperzinta toate segmente oprite iar 00 toate pornite inclusiv punctele.
De aici cu un pic de fantezie si cateva linii php se poate afisa orice: temperaturi,contori pagini,likeuri fb,curs valutar, etc. :)

Cam asa arata pe breadboard:
Posted Image

Atasez schema si programul in C, in sursa am comentat o mare parte a functiilor sper sa fie la intelesul tuturor, s-ar putea sa fie cateva erori,poate lucruri la care n-am gandit (tot pogramul am scris intr-o dupa amiaza) deci daca gasiti erori sa-mi spuneti si incerc sa corectez.
Inca n-am facut montajul, deocamdata ruleaza de pe breadboard, cand e gata pcb-ul postez si acela.
Atentie montajul se poate alimenta doar cu 3.3V deocamdata este alimentat de pickit.
Intentionat nu atasez hex deoarece trebuie modificat ssid si parola wireless apoi compilat programul.

wclk.zip

Editat de tes2000
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