In primul rand avem nevoie de un:
Seamana destul de mult cu Arduino Uno ca format, insa daca ne uitam mai atent, observam ca este total diferit.
Diferit este si modul in care-l integram in Arduino IDE, dar despre asta poate povestesc mai tarziu...
Wemos D1 este boardul din mijloc, in stanga avem un arduino Uno, iar in dreapta lui un arduino nano pentru comparatie.
Mai avem devoie de un display, in acest caz a fost folosit un 1602, cu interfata i2C, ca sa economisim din pini wemos, si sa nu avem o padure de fire intre cele doua componente.
Pentru ca am folosit aceasta interfatam legaturile vor fi extrem de simple de facut.
Am pus fire de culori diferite, ca sa puteti identifica cat mai simplu legaturile.
Deci pe display avem, rosu VCC care vine legat de 5V de pe Wemos,
negru la GROUND pe display, GROUND pe Wemos
verde de pe display la SCL si se leaga de D3 de pe wemos care la randul lui este SCL
galben de pe display la SDA si se leaga de D4 de pe Wemos care la randul lui este inscriptionat cu SDA.
Cu asta am si terminat legaturile, care ar fi fost mult mai complexe in cazul in care nu aveam interfata i2c pe display.
Codul din Arduino Ide este urmatorul:
Code: Select all
#include "NTPClient.h"
#include "ESP8266WiFi.h"
#include "WiFiUdp.h"
#include "Wire.h"
#include "LiquidCrystal_I2C.h"
LiquidCrystal_I2C lcd(0x27,16,2);
const char *ssid = "SSID-ul retelei tale WIFI";
const char *password = "*PAROLA retelei tale WIFI";
const long utcOffsetInSeconds = 10800;
int a = 0;
char daysOfTheWeek[7][12] = {"Duminică", "Luni", "Marți", "Miercuri", "Joi", "Vineri", "Sâmbătă"};
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "pool.ntp.org", utcOffsetInSeconds);
void setup()
{
lcd.init();
lcd.backlight();
lcd.setCursor(0,0);
lcd.print("Conectare WIFI");
lcd.setCursor(0,1);
WiFi.begin(ssid, password);
while ( WiFi.status() != WL_CONNECTED )
{
delay ( 500 );
lcd.setCursor(a,1);
lcd.print(".");
a = a+1;
}
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Conectat la");
lcd.setCursor(0,1);
lcd.print(ssid);
delay(2000);
timeClient.begin();
lcd.clear();
}
void loop()
{
timeClient.update();
lcd.setCursor(0,0);
lcd.print(daysOfTheWeek[timeClient.getDay()]);
lcd.setCursor(8,1);
lcd.print(timeClient.getFormattedTime());
delay(1000);
}
este foarte simplu, se poate bineinteles imbunatatii.
Nu uitati sa declarati Wemos ca ESP Generic 8266 ca si board, iar la board manager sa descarcati librariile ESP8266, altfel va va da doar erori.
Inca ceva la ce trebuie sa fiti atenti daca vreti sa faceti acest mic ceas functional, in codul din IDE sa nu uitati sa treceti SSID-ul retelei WIFI de care o conectati si parola. Altfel nu va putea sa se conecteze de reteaua wireless.
Este un proiect cu dificultate minima, cred ca oricine o poate executa fara probleme.
Dupa ce am incarcat codul, am alimentat totul de pe un powerbank solar, sint curios daca se incarca ziua atat de mult incat sa duca o noapte cu backlight-ul aprins.
In spatele interfetei i2C avem un jumper, in acest caz conectat, pe care daca-l deconectam, afisajul nu va avea lumina aceea albastra din spate, si va fi afisat fara lumina, doar ca un simplu LCD. Banuiesc ca acesta i-i va scadea si consumul total de curent.