marți, 12 septembrie 2017

Ceas cu alarma si reglaj cu arduino micro, DS3231, UTFT

Am gasit un alt proiect mai vechi adaptat dupa articolul lui Nicu Florica.
La acea vreme aveam mai multe display-uri cu ILI9225-240/320, la care nu am gasit un library finalizat. Asa ca am folosit UTFT, care e cumva universala, avind o gama variata de display-uri ce le poate adresa, dar are un mod diferit de programare. Asa ca am adaptat codul la aceasta biblioteca. 

Cerinta era ca orele sa fie afisate cu un font de tipul 7 segmente. Singurele poze din faza de teste sint mai jos.

Acesta foloseste  senzorul intern al lui DS3231, pentru afisarea  temperaturii. 
A  fost casetat intre 2 placi de plastic transparent si avea suficient spatiu de ventilatie pentru a lua o temperatura corecta.
La "caseta" m-am inspirat de aici, dar nu mai am pozele respective.


Codul si biblioteca se afla pe github, iar ideea este ca trebuie copiat fontul SevenSegNumFontPlusPlus.c in acealasi folder cu _9225-alarm-ds3132-nicu-utft.ino si apoi se compileaza. Pe github am arhivat si biblioteca utilizata de mine  fiind singura care a mers cu ILI9225. Ulterior am testat si cu alte display-uri SPI ( cele ce au 5 pini de conectare, DC, CS, RST, MOSI, SCK) si au functionat si cu un UTFT mai nou.

luni, 11 septembrie 2017

Ceas cu reglaj folosind Arduino, DS3131/DS1307, DH11, afisare cu fonturi

Ideea acestui proiect a fost sa scot un ceas cu afisare cit mai mare (nu patratoasa) pe TFT de 2,2" shield pentru Arduino UNO.

M-am inspirat de pe blogul lui Nicu Florica pentru ca avea realizata foarte bine partea de reglaj.

Am taiat pinul RST de la display si l-am legat cu un fir la RST-ul lui Arduino, am mai mai taiat pinii de pe TFT utlizati pentru SDcard. 
RST-ul ma incurca ca aveam nevoie de A5 pentru RTC, iar pinii de la SDcard imi trebuiau pentru butoanele de reglaj si senzorul DHT11
Codul si biblioteca utilizata se afla pe github

Initial am folosit un DS3231, iar ulterior pentru a minimiza costurile am testat si cu DS1307, care a ramas definitiv.
#define meniu 10
#define minus 12 #define plus 11 #define DHTPIN 13 #A4/A5 i2c RTC care poate fi fara nici o modificare la cod DS3231 sau DS1307


 Placa de dezvoltare avea un rind de gauri suplimentare nefolosite, si le-am atasat cite un soclu
pentru a fixa placa ce o facusem cu RTC-ul, DHT11, si butoanele



Ulterior s-au dezvoltat http://nicuflorica.blogspot.ro/2017/02/ceas-cu-termometru-cu-arduino-due-si.html https://plus.google.com/u/0/+VladGheorghe/posts/aayXR7oFVf5 https://plus.google.com/u/0/+VladGheorghe/posts/fmzrS453Y9h https://plus.google.com/u/0/+VladGheorghe/posts/Jzjp3sCHESV https://plus.google.com/u/0/+VladGheorghe/posts/6iZezjbp2CX




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.

vineri, 8 septembrie 2017

Ceas cu alarma si termometru cu Arduino ProMini TFT 2,2"-ILI9163 , DS3231, DS18B20

In articolul anterior am adaptat codul lui Nicu Florica pentru un display de 2" cu ILI9163 care functiona pe STM32. 
M-am gindit sa fac un test si pe un Arduino ProMini avind ca scop sa folosesc un font elegant pentru afisarea orei (fara utilizarea fontului afisarea este foarte "patratoasa" si deranjanta la dimensiuni mari afisate de display mare). Problema e ca aceste fonturi ocupa foarte multa memorie.
Pinul LED al display-ului l-am legat la Vcc printr-o rezistenta de 470Ohm, pentru ca Arduino este alimentat in cazul meu la 5V. Biblioteca este cea folosita in cazul lui STM .
Dupa mai multe teste de fonturi m-am oprit la ceea ce se vede mai jos:
S-au pastrat toate functionalitatile descrise de Nicu la el pe blog, numai ca s-au micsorat dimensiunile proportional cu acest display care are rezolutia de 128/160
Pe viitor intentionez sa-i fac si un cablaj imprimat. Aceste display-uri au un pret decent pentru 1,8", 2", 2,2" si sint suficient de vizibile (mai putin pentru mine care imi trebuie 4").
Schema este aici.




Schema de legaturi se poate deduce foarte usor din cod care este curatat de modificarile anterioare.
Codul ocupa aproape toata memoria disponibila

Deasemenea se poate folosi si display cu ILI9143 cu alimentare la 3,3V cu definirea in cod a noii biblioteci, Arduino alimentindu-se la 3,3V in acest caz.

I-am minimizat costurile inlocuind DS3231 CU DS1307, si am mai facut mici corectii la cod. Am inlocuit LED-ul de la alarma cu un difuzor piezo, si am scos fontul de la afisarea datei care depasea ecranul.
Pregatit de o caseta eleganta.




Update 19-mar-2023
Am refăcut proiectul de mai sus pe un arduino uno și un TFT shield HX8347G. Acestuia i-am izolat pinii pentru SD card, pinul CS pe care l-am conectat la GND și pinul RST pe care l-am legat la RST-ul lui arduino uno. Astfel am eliberat 6 pini, A5 pentru I2C, 4 pini pentru butoane și unul pentru buzer.
Pentru temperatură și umiditate am folosit un senzor GY21 pe interfață I2C, iar pentru clock un DS3231.
Definirea lor se vede foarte ușor în cod care este pe github.
TFT-ul cu pinii îndoiți:
Alarmă oprită:
Alarmă activă:
Alarmă activată:
Datorită utilizării celor două font-uri codul a ocupat aproape toată memoria.








joi, 7 septembrie 2017

Ceas cu alarma si termometru cu STM32, TFT 2"-ILI9163 , DS3231, DS18B20

Pentru cei ce au display-uri cu ILI9341 240/320 am modificat biblioteca originala ca sa afiseze la rezolutia mea si codul din articolul anterior pentru display-ul de mai jos cu rezolutie de 128/160 si chip  ILI9163

Aveti si codul si biblioteca modificata. Modificarea e facuta in fisierul TFT_ILI9163C_settings.h
Schema cu legaturile este comentata in cod.
A iesit ca mai jos:


marți, 5 septembrie 2017

Ceas cu alarma si termometru cu STM32, TFT 2,8-ILI9341" , DS3231, DS18B20

Ca sa eliberez placuta de Arduino Mega ce o aveam blocata am adaptat codul lui Nicu de aici (el a folosit un Arduino Due) pentru functionare cu STM32, si desi am folosit citeva fonturi a incaput codul pe placuta cu STM32:




Legaturile se pot vedea si din cod care este aici impreuna cu bibliotecile folosite
Schema este aici.
#define ONE_WIRE_BUS PB1 senzorul de temperatura DS18B20

#define TFT_CS     PB13
#define TFT_RST    PB14                    
#define TFT_DC     PB12
//SCK   PA5
//SDI/MOSI    PA7

Butoanele le-am legat la plus 3,3V prin cite o rezistenta de 470 Ohm.

meniu= PA0;
 minus=PA1;
 plus=PA4;
 alarma=PB0;

buzzer PC13 --acum doar aprinde led-ul de pe placa de dezvoltare.

In mare parte am pastrat codul original unde am comentat ce nu se potrivea si am aplicat modificarile mele.
S-au pastrat toate functionalitatile descrise de Nicu la el pe blog.

Codul ocupa 87%, asa ca mai este loc si pentru alte idei.


vineri, 1 septembrie 2017

Test STM32 cu TFT 2,8"

Sosind citeva placute de la Andrei Timofte cu STM32 m-am hotarit sa testez aprinderea uui display TFT de 2,8" cu ILI9341 ce urmeaza a fi folosit impreuna cu STM-ul in alt proiect.
Placuta arata ca mai jos:
Dispunerea pinilor este urmatoarea:

Am incercat sa urmez pasii lui Nicu insa nu mi-a iesit, eu folosind UBUNTU 16.04, asa ca dupa ce am mai citit un pic abuzind de Google, am incercat calea de instalare de aici.

In Arduino IDE, click File -> Preferences. Then click on the edit button next to 'Additional Boards Manager URLs'. There, add the URL of the STM32duino boards manager package json file:
 http://dan.drown.org/stm32duino/package_STM32duino_index.json



 Dupa ce am aprins citeva led-uri dupa modelul lui Nicu am reusit sa ma "imprietenesc" si cu aceasta placa.
Testele cu led-ul nu le reiau caci sint relevante pe blog-ul lui Nicu.
Am trecut la aprinderea display-ului TFT de 2,8"
Am ales exemplu urmator:
Display-ul a fost testat pe Arduino si foloseste acelasi chip ILI9341 si am sperat sa se potriveasca si aceasta situatie.

Am modificat liniile de cod ca mai jos:
#define TFT_DC PB9
#define TFT_CS PB7
//RST PB8
//SCK/CLK PA5
//SDI/MOSI PA7
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, PB8);

Am facut upload, am pus jumper-ul in pozitia normala, si am apasat butonul reset de pe placa.
Rezultatul este mai jos:








Amplificator ultra simplu cu MOS 40W/8Ohm la 2x30V

 Am început construcția unui amplificator cu tranzistori MOS după o schemă proiectată de Ionel Epure , care se împacă foarte bine cu boxele ...