miercuri, 27 septembrie 2023

Ceas RTC cu RP2040-Zero pe afisaj 8x32 cu leduri adresabile

    Dupa ce am facut cateva teste cu placa RP2040-Zero (o versiune mica a placii Raspberry Pi Pico), am zis sa testez si stabilitatea aceasteia asa ca am "portat" ceasul RTC cu Wemos D1 mini (ESP8266) pe afisaj 8x32 cu leduri adresabile

   Schema de conectare la placa RP2040-Zero este simpla si deriva din cea a cu ESP8266 (Wemos D1 Mini):
- modulul de ceas RTC se alimenteaza cu +5V si GND, conectanduse SDA la GP4, iar SCL la GP5,
- modulul cu senzor DS18B20 se alimenteaza la +5V si GND, iar pinul de date la GP14, 
- afisajul cu 8x32 leduri adresabile e alimenteaza la +5V si GND, iar pinul de date la GP15.
   Dupa cum cred ca stiti, modulul de temperatura are senzorul DS18B20 si rezistenta de pull-up de 4,7kΩ dintre pinul de date si +5V, uneori si un led inseriat cu o rezistenta.
   Am facut 4 filmulete, i care am folosit programul RTCclock_Arduino_8x32_v2a1.ino
    Ceasul este in teste de circa 3 saptamani si nu a apaut nici-un blocaj sau eroare, comparativ cu proiectul de ceas NTP cu placa Raspberry Pi Pico W, pe care o sa-l prezint in curand.

marți, 26 septembrie 2023

Ceas NTP simplu cu Raspberry Pi Pico W programat cu mediu Arduino

     Dupa ce a sosit si o placa Raspberry Pi Pico W, am zis sa fac un prim test cu placa (care nu avea pini lipiti), asa ca am adaptat un program de ceas NTP, care arata informatia pe ecranul de monitorizare seriala a programului Arduino IDE.

    Placa Raspberry Pi Pico W este deja instalata (vedeti cum am procedat in articolul Placa de dezvoltare RP2040-Zero programata cu mediu Arduino)

asa ca am adaptat un program de ceas NTP cu ESP8266, ce a fost prezentat in articolul ESP8266 NodeMCU NTP Client-Server: Get Date and Time (Arduino IDE) tinand cont si de informatiile din articolul WiFi (Raspberry Pi Pico W) Support in care am gasit ca multe biblioteci sunt compatibile.
    Am adaugat si clipirea ledului de pe placa, asa ca programul este ntp_test_serial.ino si vom obtine
    Am facut si 2 filmulete
   Ulterior, am lipit si baretele cu pini, urmand sa fac teste pe breadboard.

Sistem/montaj de repornire Raspberry Pico W (Arduino) blocat (inghetat)

    In urma unor teste cu o placa Raspberry Pi Pico W pentru un ceas NTP, am observat ca uneori sistemul se blocheaza (ingheata), asa ca, dupa ce am cautat pe net, si nu am gasit solutie multumitoare, m-am gandit sa aplic o solutie extrema, un sistem care se reseteze placa Raspberry Pi (sau chiar Arduino) cand placa nu mai trimite impulsuri pe un anumit pin.

    De fapt, am folosit 2 pini, dupa cum se vede in schema si simularea, realizata cu programul Micro-Cap

prinul numit INIT (D7) are 5V imediat ce porneste placa Arduino (sau Raspberry Pi Pico), ulterior pe pinul D5 numit in schema PIVIEM se trimite semnal dreptunghiular cu frecventa de cca. 1000Hz (semnal PWM 50%), apoi pinul INIT se aduce in 0V, apoi dupa un timp si semnalul PIVIEM cade in zero. 
    Dupa cum se vede din filmulete si imagini, dupa circa 12ms de la pierderea semnalului, pinul RESET din 5V cade in 0V pentru circa 7ms.
    Primele 2 filmulete au fost multumitoare, urmarind semnalul cu un osciloscop didactic, sa-i zic asa. model DSO-TC3:
apoi am mai conectat in osciloscop-tableta, model ADS1013D, cu 2 canale, de la care avem pretentii cam mari, pentru timpii descrisi mai sus, reprezentarea este multumitoare
   Am modificat putin timpii de reactie, la cateva sute de ms dupa disparitia semnalului dreptunghiular si cateva sute de ms de reset,
   Am gasit, intai, in articolul How to Add a Raspberry Pi Pico Reset Button ca placilor Raspberry Pi Pico (fara sau cu W) li se poate adauga un buton de reset, conectant un buton fara retinere intre pinul 30 (RUN) si GND
asa ca am schimbat si placa, de data asta conectand Raspberry Pi Pico W, pinul INIT este GP21, iar pinul PIVIEM este GP20, semnalul RESET se duce in RUN, montajul se va alimenta din 3V3 (OUT), respectiv GND:
    Osciloscopul-tableta a fost greu de controlat pe modul de captarea a unei imagini statice, unde pot masura timpii, dar nu am insistat, deoarece rezultatele vizuale au fost multumitoare, dupa cum se vede in filmuletele:

02.10.2023 (actualizare 19.01.2024)
   Am realizat ca am o dioda in plus, asa ca am eliminat-o:

vineri, 15 septembrie 2023

Alt ceas NTP pe afisaj din 8x32 leduri adresabile (2)

    Dupa ce am testat cateva luni ceasul NTP pe afisaj 8x32 leduri adresabile, am zis sa adaug si ceasul binar-zecimal testat de curand (vezi articolul), programul rezultat find NTPclock_8x32_v2_8.ino, schema este aceeasi

   In perioada asta am transferat proiectul pe o placa de test, de pe breadboard:

Placa de dezvoltare RP2040-Zero programata cu mediu Arduino

    Dupa ce a sosit o placa RP2040-Zero (o versiune redusa a uneia Raspberry Pi Pico), am instalat-o in programul Arduino IDE ca in articolul Programming Raspberry Pi Pico with Arduino IDE (Pico W compatible)

 si am facut teste cu ledul multicolor adresabil (WS2812) de pe placa, cu sketch-ul RP2040Zero_RGB.ino realizand si 2 filmulete:

test cu placa RP2040-Zero programat cu Arduino IDE

test with RP2040-Zero board flashed with Arduino IDE

   Dupa asta am conectat un afisaj 1602 cu interfata i2c, inspirat de informatiile din filmuletul I2C 16 x 2 LCD Display with Raspberry Pi Pico or W Using Arduino IDE am incarcat sketch-ul RP2040Zero_RGB.ino conectand afisajul la interfata i2c la GP4 (SDA) si GP5 (SCL):
si am realizat si filmuletele:
   Observand ca programele obisnuite sunt compatibile cu placile clasie (ATMega328, ESP8266, etc) am testat si placa RP2040-Zero cu un afisaj i2c cu driver ST7567S, pastrand conectarea GP4 (SDA) si GP5 (SCL) si urmnd ce prezentasem in articolul Ceas NTP pe afisaj monocrom de 2,2" cu rezolutie de 128x64 (ST7567S - i2c)
   Am folosit sketch-ul ST7567S_u8g2_GraphicTest.ino 
si am facut 2 filmulete:

Ceas RTC pe afisaj 8x32 cu leduri adresabile (3)

     Am adaugat ceasului clasic, pe randul 8 al afisajului, un ceas binar-zecimal, care s-ar afisa clasic asa

doar ca la mine este 
asa ca ora 12:28:51 este reprezentata
si in ansamblu:
   Schema folosita este aceeasi
doar programul este modificat, acesta fiind RTCclock_Arduino_8x32_v2.ino.
    Am realizat 4 filmulete:
   Un program imbunatatit este RTCclock_Arduino_8x32_v2a.ino, in sensul ca am scos culoarea albastra la ceasul clasic sa fie vizibila partea de ceas binar-zecimal.

marți, 5 septembrie 2023

Ceas RTC pe afisaj 8x32 cu leduri adresabile (2)

 
   Am modificat ceasul prezentat in articolul anterior, adaugand animatii: secunde miscatoare pe randul de jos si temperatura ca text deplasabil, dupa cum se vede in cele 2 filmulete:
in aceste filmulete a fost folosit programul modificat RTCclock_Arduino_8x32_v1a.ino si aceeasi schema

   Apoi am adaugat si text animat cu data, programul fiind acum RTCclock_Arduino_8x32_v1b0.ino si am realizat filmuletele urmatoare:

ceas RTC pe afisaj din 8x32 leduri adresabile (3)