To moje początki zabawy z mikrokontrolerami. Udało mi się uruchomić ESP8266, zrobiłem też sterownik (termostat) do pieca CO z DS18B20. Termostat będzie miał LCD, ale dobrze byłoby, gdyby dane były wrzucane też do Supli. Czy doposażając Arduino w moduł Eth lub ESP i dopisując "COŚ" do kodu programu będzie można przesyłać dodatkowo dane do Supli. Domyślam sie, że jakąś biblioteke ale czy tylko?
Wklejam kod programu
Code: Select all
#include <VirtualWire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F,16,2);
#include <OneWire.h>
#include <DallasTemperature.h>
int p1 = 7; // przycisk zwiekszajacy nastawe temperatury T1
int p2 = 6; // przycisk zmniejszajacy nastawe temperatury T1
int p1state = 0;
int p2state = 0;
#define ONE_WIRE_BUS A0
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
int nastaw1 = 22; // zadana temperatura T1
int przekaznik1 = 8; // pin przekaznik elektrozaworu z czujnika T1
void setup(void)
{
lcd.init();
lcd.backlight();
vw_set_tx_pin(12); //pin sygnalowy do nadajnika RF
vw_setup(2000); // Bits per sec
pinMode(przekaznik1,OUTPUT);
pinMode (7, INPUT_PULLUP); // przycisk zwiekszajacy nastawe temperatury
pinMode (6, INPUT_PULLUP); // przycisk zmniejszajacy nastawe temperatury
sensors.begin();
Serial.begin(9600);
}
void wys(void)
{
sensors.requestTemperatures();
lcd.setCursor(0, 0);
lcd.print("T1=");
lcd.print(sensors.getTempCByIndex(0));
lcd.print(" ");
lcd.print("NT1=");
lcd.print(nastaw1);
if (sensors.getTempCByIndex(0) < (nastaw1))
{ digitalWrite(8,HIGH); }
if (sensors.getTempCByIndex(0) > (nastaw1+1)) // histereza
{ digitalWrite(8,LOW); }
}
void loop()
{
p1state = digitalRead(p1);
p2state = digitalRead(p2);
if(p1state == LOW){nastaw1=nastaw1+1;}
if(p2state == LOW){nastaw1=nastaw1-1;}
wys();
char *msg;
if (digitalRead(8) == HIGH) {msg="on"; }
else {msg="off"; } ;
vw_send((uint8_t *)msg, strlen(msg));
vw_wait_tx(); // Wait until the whole message is gone
}
