Arduino: întreruperi în clase și funcții callback

 Autor:   Publicat pe:    Niciun comentariu

Arduino este o platformă de dezvoltare cu sursă deschisă, ușor de folosit, datorită limbajului de programare mult simplificat și a hardware-ului flexibil. Mediul de dezvoltare Arduino IDE vine cu biblioteci predefinite cu funcții ușor de înțeles pentru setarea și citirea stării pinilor, dar și pentru comunicarea cu diverse module folosind protocoale standard. Limbajul de programare nu este altceva decât C/C++.

Dacă ai în plan un proiect mai mare sau dacă îți creezi o bibliotecă pentru Arduino, vei ajunge să definești noi clase C/C++. O clasă este o extindere a conceptului de structură, care unește nu numai date și proprietăți, dar și funcții și metode care prelucrează aceste date. Spre deosebire de structuri, nu toți membrii claselor sunt accesibili din afara clasei. Controlul accesului se face folosind specificatorii de acces. Mai multe informații despre clase în programarea C/C++ poți găsi aici.

Arduino: întreruperi în clase și funcții callback

Server web securizat pe NodeMcu ESP8266

 Autor:   Publicat pe:    Niciun comentariu

NodeMcu este o placă de dezvoltare bazată pe platforma ESP8266. Acest microcontroller este destinat utilizării în aplicații IoT, fiind dotat cu conectivitate WiFi. În articolele anterioare am arătat că plăcile de dezvoltare cu acest cip pot fi programate în mediul de dezvoltare Arduino și am creat un server web simplu.

În ziua de astăzi, securitatea este foarte importantă. Poate vei folosi ESP8266 doar în rețeaua locală sau poate vei permite accesul la serverul ce rulează pe acesta din exterior. În ambele situații, utilizarea de conexiuni securizate este importantă. În ultimii ani majoritatea site-urilor web au trecut de la protocolul standard HTTP la cel securizat, HTTPS. Pentru a putea oferi conținut securizat, serverul trebuie să prezinte clientului un certificat semnat de o autoritate emitentă de încredere. Certificatele au valabilitate limitată.

Server web securizat pe NodeMcu ESP8266

Utilizarea testerului de componente GM328A

 Autor:   Publicat pe:    Niciun comentariu

Testerul GM328A este un dispozitiv proiectat pentru identificarea pinilor și măsurarea caracteristicilor tranzistoarelor. Este bazat pe un microcontroller ATmega328. Ideea unui tester de tranzistori a apărut într-un articol publicat de Markus Frejek în 2013 (în Embedded Projects Journal Ausgabe 11, paginile 16-17). Karl-Heinz Kübbler a îmbunătățit software-ul acestui dispozitiv și a adăugat funcții suplimentare pentru măsurarea caracteristicilor altor componente electronice. Dispozitivul a devenit popular, în prezent găsindu-se la magazine sub formă de kit sau deja asamblat. Există mai multe variante comerciale: LCR-T3, LCR-T4, WEI_M8, GM328, GM328A.

Software-ul este foarte versatil și poate rula pe mai multe microcontroller-e din familia ATmega. Îți poți construi și singur acest dispozitiv, folosind o placă de dezvoltare cu procesor ATmega, un afișaj și câteva componente. Totuși, microcontroller-ul testerului rulează la frecvența de 8 MHz față de frecvența 16 MHz utilizată de majoritatea plăcilor Arduino sau similare, deci ar fi nevoie de modificarea plăcii. Așa că am ales versiunea GM328A preasamblată a dispozitivului pentru că folosește un microcontroller cu memorie flash de 32 kbytes (mai multe funcții disponibile) și pentru că poate genera semnale PWM, poate măsura tensiune și frecvență.

Testerul de tranzistori GM328A

Corector de ton stereo cu tranzistori

 Autor:   Publicat pe:    Niciun comentariu

Corectorul de ton este un circuit adăugat înaintea unui amplificator audio de putere. Acesta permite utilizatorului să ajusteze amplificarea specifică a unor frecvențe din spectrul audio. Corectoarele de ton pot fi simple circuite de accentuare a frecvențelor joase sau egalizatoare complexe. Circuitul prezentat aici este unul simplu, cu un potențiometru care acționează pe frecvențele din treimea inferioară a spectrului audio (modificare bass) și unul care acționează pe frecvențe din treimea superioară (modificare treble).

Schema nu conține și potențiometrul de volum, dar acesta poate fi adăugat ușor înaintea intrării corectorului. Se recomandă ca nivelul semnalului la intrare să nu depășească 1 Vp-p (nivelul standard oferit de majoritatea surselor audio). Când ambele potențiometre au cursorul la jumătatea cursei, circuitul atenuează ușor semnalul (-1...-2 dB). Astfel, cu o intrare de 1 Vp-p, ieșirea nu va fi mai mică de 0,8 Vp-p.

Corector de ton stereo cu tranzistori

Corectorul de ton constuit pe placa de circuit

Senzorii de temperatură și umiditate DHT11 și DHT22

 Autor:   Publicat pe:    Niciun comentariu

DHT11 și DHT22 sunt senzori integrați de temperatură și umiditate. Conțin un termistor, un transductor capacitiv și un microcontroller (MCU) care realizează conversia analog - digitală și trimite printr-un protocol serial valoarea parametrilor măsurați. Protocolul este unul specific, dar ușor de implementat în software. Cei doi senzori sunt similari și au aceeași pini. Vom vedea în acest articol cum putem determina acești senzori să trimită date către placa de dezvoltare și cum putem prelucra aceste date.

Totuși, DHT22 (cunoscut ca și AM2302) este versiunea mai performantă. Ambele versiuni se alimentează la tensiuni cuprinse între 3,3 și 5 V, deci nu sunt probleme de conectare la plăcile de dezvoltare uzuale. Spre deosebire de DHT11, care are o acuratețe de 5% RH pentru umiditate, respectiv 2 grade Celsius pentru temperatură, AM2302 este mai performant, cu o acuratețe de 2% RH, respectiv 0,5 grade Celsius. Dezavantajul acestuia din urmă este că citirea parametrilor se poate face o dată la 2 secunde (este mai lent), pe când DHT11 poate fi citit la fiecare secundă. De asemenea, prețul lui DHT22 este mai mare.

Module cu senzor DHT11 (stânga) și AM2302/DHT22 (dreapta)

Module cu senzor DHT11 (stânga) și AM2302/DHT22 (dreapta)

Programare placă STM32 bluepill în Arduino IDE

 Autor:   Publicat pe:    Niciun comentariu

Blue pill este o placă de dezvoltare cu microcontroller STM32F103. Deși nu este la fel de populară ca Arduino, este mai ieftină și mai performantă. STM32F103 conține un procesor ARM Cortex-M3 ce poate lucra la frecvența maximă de 72 MHz. Mai conține 20 kbyți de memorie RAM și 64 sau 128 kbyți de memorie flash. Are port USB nativ, două porturi seriale, generator PWM pe 16 biți și convertor AD pe 12 biți. Față de Arduino, funcționează la 3,3 V. Totuși, câțiva pini tolerează tensiuni de 5 V.

Programarea plăcii folosind kitul de dezvoltare oficial este dificilă pentru începători. Dar, există posibilitatea programării în mediul Arduino. Înainte de toate, suportul pentru această placă trebuie instalat în Arduino IDE. Dacă vei folosi portul micro USB pentru programare, un bootloader trebuie scris înainte în memoria plăcii. Acest lucru se poate face cu programatorul specific ST-Link sau cu un adaptor USB-serial la 3,3 V. Atât scrierea bootloader-ului, cât și încărcarea ulterioară a schițelor se pot face cu ajutorul acestor dispozitive suplimentare.

Set up STM32 "blue pill" for Arduino IDE

Măsurare presiune atmosferică cu senzor BMP280

 Autor:   Publicat pe:    Niciun comentariu

BMP280 este un senzor digital de presiune atmosferică proiectat pentru dispozitive mobile. Senzorul are o capsulă foarte mică, de numai 2 x 2,5 milimetri. Conectarea la o placă de dezvoltare ar fi foarte dificilă, dacă nu ar exista module cu barete de pini standard. O altă problemă este că tensiunea nominală de alimentare a senzorului este de 1,8 V. Totuși, suportă tensiuni de 3,3 V. BMP280 măsoară presiunea atmosferică și temperatura. Știind că există o corelație între presiune și altitudine, pe aceasta din urmă o putem calcula.

Până la urmă am conectat senzorul la o placă de dezvoltare pe 5 V din cauza display-ului. Am trei valori de afișat, așa că am utilizat un afișaj grafic cu controller ST7920, în locul unuia alfanumeric. Deși acesta poate funcționa la 3,3 V, modul în care este configurat din fabricație nu permite setarea contrastului suficient de bună la 3,3 V. Display-ul este conectat prin interfață SPI, deci numai 4 fire sunt folosite (3 pentru SPI și unul pentru reset). BMP280 suportă atât interfață SPI cât și I2C. Deoarece singurul convertor de nivel pe care îl am este unul construit de mine pentru I2C, am ales această interfață pentru senzor.

Senzorul BMP280 pe placa de test

Senzorul BMP280 pe placa de test