Se afișează postările cu eticheta DHT11. Afișați toate postările
Se afișează postările cu eticheta DHT11. Afișați toate postările

luni, 11 septembrie 2017

Ceas cu arduino, DS1307, TFT 2,2" ILI9225, DHT11, encoder

Am reusit sa gasesc informatille despre un proiect mai vechi :

Este adaptat dupa informatiile lui Nicu de unde am preluat ideea de reglaj cu ajutorul unui encoder. Asta deoarece mi-a fost lene sa adaptez cutia pentru butoane de reglaj, Dupa cum se vede aveam cutia de la o chestie "similara" decedata, si am vrut sa-i scot encoderul in spate.In interior am "inghesuit" toate modulele. Am folosit un Arduino ProMini.
Tot pe spate i-am aplicat o baterie de telefon mobil cu un incarcator chinezesc, toate alimentate dintr-un alimentator ramas tot de la vreun telefon mobil.

Modul de conectare se poate deduce din cod unde este comentat. Codul si bibliotecile folosite sint pe github
Pentru display am folosit UTFT-ul incarcat pe github fiind singura arhiva ce avea suport pentru ILI9225. Daca folositi alt tip de display posibil sa mearga cu o versiune curenta de UTFT
Functionarea encoderul-ului se poate vedea tot din studiul codului, si e relativ simpla, la o apasare lunga intra in modul reglaj, rotire dreapta/stinga incrementeaza/decrementeaza , apoi la fiecare apasare scurta trece la pasul urmator, data, zi, an, ora, .... la finalul ciclului revine in ecranul de afisare curenta.

joi, 31 august 2017

Ceas pe LCD ST7920 CU REGLAJ

Am pornit de la articolul de aici unde mi-a placut realizarea acestuia. Initial am testat codul omului, a functionat insa cercul in realitate arata rau de tot, mai ales daca e privit de aproape, asa ca am renuntat la el. Asta datorita rezolutiei ecranului.
Ulterior m-am hotarit sa fac un ceas mai serios cu cifre cit mai mari si reglaj manual ca sa nu depind de calculator la trecerile ora vara/iarna, eventual alarma daca mai raminea memorie disponibila, si din pacate nu a mai ramas.
Pentru display este folosita o biblioteca U8glib cu care m-am "imprietenit" mai greu (pe link este cea folosita de mine.).
Modul de conectare al display-ului la arduino este descris cu foarte multe detalii de Nicu Florica la el pe blog , si nu voi repeta aici.
I-am adaugat un DS1307, un DS18B20 si trei butoane :
#define meniu 9 
#define minus 10
#define plus 11 
#define ONE_WIRE_BUS 8
La scrierea codului m-am inspirat de aici pentru ca foloseste tot U8GLIB si a iesit ca mai jos:
Am marit atit cit a fost posibil fontul orei iar restul informatiilor le-am incadrat la dimensiunea maxima acceptata de rezolutia ecranului.

 Aici se poate vedea modul de reglaj imediat dupa Duminica  . Am vrut sa sterg ecranul in modul reglaj insa codul depasea marimea maxima a lui Arduino micro (pe asta l-am folosit spre final), si astfel singurul loc liber era cel imediat dupa afisarea zilei.
La rutina de reglaj m-am inspirat tot de la Nicu, ca mi s-a parut foarte simpla de implementat.

(Sketch uses 29814 bytes (97%) of program storage space. Maximum is 30720 bytes.)



Codul final si bibliotecile folosite sint aici:
Consumul este sub 100mA


 Modelul de senzor e temporar pina soseste unul in capsula TO-92
update:34-iul-2018
Dupa varianta lui Nicu realizata cu encoder, am adaptat codul pentru 3 butoane (nu am avut disponibil nici un encoder):
Functionalitatile in mare au ramas cele descrise de Nicu Florica pe blog-ul lui.
Codul pentru poza din stinga este pe github iar pentru cel din dreapta tot pe github. La varianta din dreapta am corectat afisarea secundelor analogice pentru ca era o mica abatere fata de cele numerice.
In plus fata de ce a testat Nicu Florica am adaugat un senzor DS18B20. Fonturile utilizate ocupa foarte multa memorie si am incercat sa fac un compromis pentru o afisare cit mai vizibila.

update 11-aug-2019
A sosit zilele astea display-ul de mai jos pe care am facut citeva teste:


Pentru a functiona a trebuit sa fac upgrade la u8glib, iar driverul a functionat cu:
U8GLIB_DOGM128 u8g(8, 9, 5, 7); // SPI Com: SCK , MOSI, CS, A0
RST-ul LCD-ului l-am legat la pinul reset al lui arduino.
Neajunsul este ca are un offset pe x de -4 puncte.
Codul de test aferent pozelor de mai jos este pe github.
Ecran luminat
Neajunsul cu offset-ul se poate distine usor in partea dreapta unde aprinde pixeli in mod aleatoriu. Mai exact, zona de lucru este de la 4(x=0) la 124, diferenta de 4 pixeli apare aleatoriu in dreapta la pornirea tensiunii de alimentare
Fara lumina de fundal
O alta clona modificata, cod pe github
Update: 22-ian-2022
Cam acelasi cod dar de data asta cu arduino mega si un display 240x64 DG24064 cu T6963




Legaturile se deduc foarte usor din codul postat pe github pentru prima varianta si tot pe github si pentru a doua.

duminică, 27 august 2017

Termometru ATTINY85 Digispark

Aveam mai multe module cu ATTINY85 de la Digispark si m-am hotarit sa fac un termometru cu DHT11 si afisare pe un display cu TM1637
Dupa o scurta documentare descpre placa de dezvoltare am ajuns la tutorialul lor de aici . Am urmat pasii de acolo si am instalat driver-ul de aici .
La Arduino IDE a aparut urmatoarea situatie:
Aici a aparut un alt programator dupa instalarea driver-ului.
 Aici a aparut si placa mea

M-am jucat un pic cu aprins LED-uri ca sa ma obisnuies cu modul de progrmare. Aici ideea este ca dupa editarea codului, se compileaza de test, se da upload fara a conecta placa la USB
Doar dupa ce apare mesajul de mai sus se conecteaza si placa la USB, va apare mesajul de ok cind termina si se mai asteapta cca 10 secunde dupa care se poate deconecta.
Am incercat si programarea cu circuitul realizat, si din 4-5 incercari merge o data. Pinii PB4 si PB3 sint conectati la USB in timpul programarii, iar daca schema utilizata ii foloseste se pare ca ceva nu-i place. In aceasta situatie am preferat sa scot placa din breadboard, s-o programez si apoi s-o atasez la loc in breadboard.

Acum ca am vazut cum se lucreaza, am folosit biblioteca si codul lui Nicu la care am adaptat modul de conectare conform schemei de aici si a rezultat codul de aici. Pentru DHT11 am folosit biblioteca de aici
Am avut placuta surpriza de a se compila fara erori, asa ca am incarcat codul. Dupa conectarea placutei pe breadboard chiar a functionat:

Testat  si cu un simplu  ATTINY85


Stabilizator reglabil 14V/1A de la 50V-300V cu IR2153

 Cu mult timp în urma am testat un stabilizator în comutație, reglabil cu IR2153 conform notei de aplicație din datasheet. Am reluat din nou...