vineri, 20 septembrie 2024

Comanda afisaj led din 7 segmente cu modul i2c cu PCF8574 pentru afisaj alfanumeric LCD 1602/2004

    Pentru un anumit proiect, am vrut sa controlez un afisaj cu un singur digit de 7-segmente folosind comunicatia i2c si am avut la indemana doar un modul folosit, in mod obisnuit, la afisajele alfanumerice LCD 1602 sau 2004.

   Cautand pe internet, am gasit schema modulului la protosupplies.com:

din care se observa ca P3 nu este conectata direct, ci la comanda prin tranzistor a ledului de fundal, asa ca am testat pe un breadboard (2 de fapt) un mic montaj cu niste leduri
   Am facut un test folosind informatiile din articolul 7-Segment LED Display PCF8574 I2C Arduino
 doar ca eu am conectat singurul afisaj led gasit, unul de 1.2" cu catod comun direct, inseriind ledurile cu rezistente de 470Ω tinand cont si de informatiile de aici


  Pentru afisajul cu catod comun, ledurile se aprind cand pe iesirea PCF-ului sunt 5V (iesire in HIGH), asa ca am transformat informatia in numar hexazecimal, folosind un calculator online, pentru a putea transmite informatia cu Arduino:

   Pentru afisaje cu anod comun, alimentat din +5V, ledurile din segmente inseriate cu rezistente de limitare curent se conecteaza la iesirile PCF-ului si se aprind cand iesire corespunzatoare sunt in 0V (iesire in LOW), iar informatia in hexazecimal este
   Dupa cum se constata, am pus iesirea P3 mereu in LOW (0), deoarece nu am acces direct fara o interventie pe placuta si programelul meu de test, este countdown_test1.ino
   Am facut si 2 filmulete:

21.09.2024
   Pentru a depista adresa i2c a intefetei cu PCF8574 am folosit programiorul numit i2c_scanner (puteti gasi mai multe informatii in articolul de pe arduino.cc), gasind adresa 0x27.

   Am facut "punte" (strap) la A0 si acum adresa este 0x26.

si am modificat programul, acesta devenind, countdown_test2.ino in care se defineste adresa la inceput si apoi este ca variabila.
22.09.2024
   Am desenat schema de conectare pentru un afisaj
- cu catod comun (cum am testat eu)
- cu anod comun

Verificare memorii RAM de tip 4164

    Deoarece vreau sa asamblez un calculator Cobra2 (Turbo Spectrum), pe cablaj realizat la JLCPCB 

am achizitionat de la chinezi un pachet de 10 memorii 4164, doar ca erau ambalate intr-o punga de plastic, deci neprotejate ESD, asa ca am construit repede un tester cu Arduino, depistand una defecta.

   Am folosit informatiile de la github.com/randyrossi/arduino_dram4164_tester ce foloseste 2 leduri, unul verde si unul rosu, in timpul testelor clipesc ambele, daca memoria e buna, la final clipeste lent ledul verde, daca memoria e defecta sau apar erori de citire ramane cel putin ledul rosu aprins,

dupa cum se vede in filmuletele urmatoare:

tester memorie RAM 4164

4164 RAM tester

   Schema este ca cea din articolul 4164 Dynamic RAM with Arduino doar ca are ledul verde la pinul D12, nefigurat in schema, si cel rosu la D7.
asa ca l-am adaugat eu

PS: In 2019, am publicat articolul Verificare memorii RAM de tip 4116, util pentru posesorii de calculatoare ZX Spectrum:


duminică, 8 septembrie 2024

Ceas google cu data si termometru cu 2 senzori (DS18B20 si AM2302/DHT22)

    Am revenit la ceasul google cu data si senzori, de data asta am inlocuit al doilea senzor DS18B20 cu un senzor AM2303 (care este un DHT22 cand are rezistenta de 4k7 incorporata pe placuta de cablaj).

   Schema devine

si am considerat ca senzorul de temperatura si umiditate relativa aer este senzorul exterior, asa ca programul modificat, care contine 3 fisiere, este BIG_Clock_ESP8266_DeskClock1L

iar in programul Arduino IDE 1.8.19 (folosit de mine) arata asa
   In prima faza, nu am avut montat sistemul de determinare al intensitatii luminoase (divizorul rezistiv realizat din fotorezistenta si rezistenta de 10kΩ) si am realizat 2 filmulete
apoi am adaugat si fotorezistenta cu rezistenta (rezistorul)
   Temperaturile sunt indicate cu 2 zecimale:
iar umiditatea relativa din aer fara zecimale

marți, 20 august 2024

Ceas cu date meteo (Rpi Pico W si afisaj LCD1602 pe i2c) - MicroPhython (3)

    Dupa ce am tot constatat ca la ceasul cu informatii meteo informatiile de pe ecran  nu se mai actualizau dupa cateva zeci de ore (se bloca sau adormea efectiv microcontrolerul de pe placa Raspberry Pi Pico W), am adaugat functia de autodeblocare (watchdog).

   Nu eram prea incantat de introducerea functiei WDT care nu a functionat multumitor cu limbajul Arduino si a trebuit sa testez un watchdog extern (vezi articolul), am zis totusi sa incerc versiunea software ce implica doar 3 linii

   Programul actualizat este Weatherstatio_clock_RPiW_i2c_LCD1602_v5
   Am facut 2 filmulete:
   Partea frumoasa e ca initial am pus un timp de 2 secunde pana se restarteaza daca e ceva in neregula, dar pana sa se conecteze la retea se reseta in continuu si nu mai reuseam sa ma conectez la placa, asa ca a trebuit sa sterg continutul din memorie.
  Din articolul How to Reset Raspberry Pi Pico & Pico W – 4 Easy Ways am folosit metoda 3, adica am copiat fisierul flash_nuke.uf2 pe unitatea virtuala creata daca tin apasat butonul BOOT in timp ce conectez placa la USB, 
  Acum timpul este aproape de valoare maxim admisa, adica este 8 secunde.
  Intre timp, am reusit sa pozez vreme cu nori, ploaie si chiar furtuna:

miercuri, 14 august 2024

Ceas cu date meteo (Rpi Pico W si afisaj LCD1602 pe i2c) - MicroPhython (continuare)

    Cu pasi mici, am mai imbunatatit ceasul cu informatii meteo primite de la openweathermap.org, in prima faza am facut ca sa am un pic de animatie, adica cele 2 puncte sa "bata" secundele. Pentru a putea realiza usor asta, am schimbat bibliotecile (fisierele) aferente partii de afisare, dupa cum se va constata in programul Weatherstatio_clock_RPiW_i2c_LCD1602_v2

   Am facut 2 filmulete:


   A urmat sincronizarea orei ceasului meu cu ora reala, obtinand, din primul mesaj, secunda la care se preia mesajul si apoi actualizand informatiile dupa diferenta pana la secunda 0, asa ca acum ora si datele meteo se preiau la schimbarea fiecarui minut, nu la 30 secunda ca in versiunile anterioare, iar ceasul e sincronizat la secunda (intarziere pe ecran de maxim 2-3 secunde necesare receptionarii si decodarii mesajului de la server). Noul program, compus din 4 fisiere,  este Weatherstatio_clock_RPiW_i2c_LCD1602_v3
   Am facut. si de data asta, inca 2 filmulete:
ceas cu date meteo - MicroPhython (4)
   Ca in articolul Raspberry Pi Pico Tips and Tricks am facut sa se aprinda si ledul de pe placa, care este controlat de modulul WiFi, nu direct de pinul 25 ca la placile Raspberry Pi Pico.
   Programul modificat este Weatherstatio_clock_RPiW_i2c_LCD1602_v4
si modul de functionare se vede din filmuletele:
  Partea proasta e ca, dupa cateva zeci de ore, placa Raspberry Pi Pico W intr-o intr-un blocaj sau intra intr-un mod de adormire (freeze/sleep) si programata cu limbaj MicroPython, nu doar cu limbaj Arduino, ceea ce ar implica introducerea unui sistem extern de resetare (watchdog extern), cum am prezentat intr-un articol.
   Totusi, o sa incerc intai un watchdog software...
 
 20.08.2024
   Am adaugat partea de watchdog software in program cum am gasit in articolele class WDT – watchdog timer si The Watchdog timer on the Raspberry Pi Pico (Don't forget to feed the dog!) doar ca am pus timpul de detectie la 8s... si au trecut 6 zile si ceasul e "viu", nu am reusit sa surprind vreo restartare, dar functioneaza. Detalii voi posta in curand.

luni, 5 august 2024

Ceas cu date meteo (Rpi Pico W si afisaj LCD1602 pe i2c) - MicroPhython

    Prinzand un pic de timp liber, am zis sa testez un proiect programat cu MicroPython, si am ales un ceas cu niste informatii meteo preluate de pe serverul openweathermap, proiect gasit in articolul https://how2elecRaspberry Pi Pico W IoT Weather Station – OpenWeatherMap.

   Schema de conectare este foarte simpla, de asta am si ales proiectul:

  Dupa ce am instalat programul Thonny IDE cum am gasit in articolul Getting Started with Thonny MicroPython (Python) IDE for ESP32 and ESP8266 am instalat ultima versiune de firmware in placa Raspberry Pi Pico W gasita la Pico W (MicroPython) si am copiat cele trei 3 programele necesare.
  Dupa cum e indicat si in articolul mentionat la inceput, am inlocuit in programul main.py datele de conectare la reteaua locala Wi-Fi (linia 7), codul APIkey de pe serverul openweathermap.org (linia 8) si localitatea (linia 107).
  Am obtinut in programul Thonny IDE urmatoarele informatii:
 
si pe ecran
dupa ce am am facut o mica modificare si am obtinut "^C" in loc de "-C".
   Am facut si 2 filmulete:
   Informatia catre serverul openweathermap.org este solicitata la 30 secunde, afisandsu-se doar starea generala a vremii, ora, temperatura si umiditatea. 
   Ce m-a deranjat cel mai mult a fost ca in loc de simbolul de grad este o linie sau ce am inlocuit eu, asa ca am cautat pe diverse forumuri si am gasit ca pot apela biblioteca afisajului sa imi puna un simbol asemanator gradului, asa ca am modificat programiorul, in special main.py, doar ca le-am pus pe toate intr-un loc: Weatherstatio_clock_RPiW_i2c_LCD1602_v1.
   Dupa modificare, pe afisaj informatia este prezentata astfel:
  Am facut si de data asta 2 filmulete:
apoi am observat ca ora 00:47este prezentata ca 24:47
ulterior si ca ora 01 este 25 si ora 02 este 26.
  Am modificat linia de calcul a orei sa imi arate doar restul modulo 24 (0..23)

joi, 16 mai 2024

Ceas NTP pe 2 matrici de 8x32 leduri adresabile

    Am conectat o a doua matrice la cea existenta si acum am un ceas cu 2 matrici de 8x32 leduri adresabile, eu configurandu-le sa am un ecran de 32 coloane si 16 randuri, schema de conectare este

   Am folosit intial un montaj cu o placa Wemos D1 pe o placa de test (breadboard), ulterior am fixat cele 2 matrici cu banda adeziva si am conectat la montajul realizat pentru Alt ceas NTP pe afisaj din 8x32 leduri adresabile (2)

   Primul program adaptat NTPclock_2x8x32_v2.ino este unul simplu pentru ceasul cu o singura matrice doar cu ceas si data, pastrand partea de Configurare usoara conectare la retea Wi-Fi pentru microcontrolerele ESP8266/ESP32, selectia orei de vara sau de iarna cu comutator, avand acum ceas fix, pe matricea de sus, iar pe a doua de jos, informatiile cu text deplasabil (data).
   Am realizat 2 filmulete:
   Am adaptat apoi un program mai complex ce are si informatii meteo si ceas binar, acesta devenind acum NTPclock_2x8x32_v2_8.ino si am mai facut 2 filmulete: