robím ročníkový projekt a vopred chcem povedať, že sa v programovaní moc nevyznám. Potreboval by som však vedieť, že ako donútiť komunikovať medzi sebou dosku ESP 8266 a Wemos D1 R1.
Doska esp8266 je na NodeMCU 1.0 a na ňom je displej Liquid Crystal(0x27, 20, 4) a snímač BMP 180. Doska Wemos D1 R1 má ku sebe zase pripojený DHT snímač.
Skúšal som: Zapojil som ich spôsobom: TX-RX, RX-TX, GND-GND. Dokázal som medzi sebou poslať len slovo a nič viac mi nefungovalo.
Chcem docieliť: Chcem aby doska Wemos D1 R1 odosielala informácie z DHT snímača do ESP-čka a odtiaľ rovno na displej.
Tu priložím môj kód prijímateľa:
Kód: Vybrat vše
#include <Arduino.h>
#include <Wire.h>
#include <BMP180I2C.h>
#include <LiquidCrystal_I2C.h>
#define I2C_ADDRESS 0x77
//create an BMP180 object using the I2C interface
BMP180I2C bmp180(I2C_ADDRESS);
LiquidCrystal_I2C lcd(0x27, 20, 4);
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
//wait for serial connection to open (only necessary on some boards)
while (!Serial);
Wire.begin();
lcd.init();
lcd.backlight();
//begin() initializes the interface, checks the sensor ID and reads the calibration parameters.
if (!bmp180.begin())
{
Serial.println("begin() failed. check your BMP180 Interface and I2C Address.");
while (1);
}
//reset sensor to default parameters.
bmp180.resetToDefaults();
//enable ultra high resolution mode for pressure measurements
bmp180.setSamplingMode(BMP180MI::MODE_UHR);
}
void loop() {
// put your main code here, to run repeatedly:
delay(1000);
//start a temperature measurement
if (!bmp180.measureTemperature())
{
Serial.println("could not start temperature measurement, is a measurement already running?");
return;
}
//wait for the measurement to finish. proceed as soon as hasValue() returned true.
do
{
delay(100);
} while (!bmp180.hasValue());
Serial.print("Temperature: ");
Serial.print(bmp180.getTemperature());
Serial.println(" degC");
//start a pressure measurement. pressure measurements depend on temperature measurement, you should only start a pressure
//measurement immediately after a temperature measurement.
if (!bmp180.measurePressure())
{
Serial.println("could not start perssure measurement, is a measurement already running?");
return;
}
//wait for the measurement to finish. proceed as soon as hasValue() returned true.
do
{
delay(100);
} while (!bmp180.hasValue());
Serial.print("Pressure: ");
Serial.print(bmp180.getPressure());
Serial.println(" Pa");
lcd.setCursor(0, 0);
lcd.print("Teplota:");
lcd.setCursor(9, 0);
lcd.print((bmp180.getTemperature() ));
lcd.setCursor(16, 0);
lcd.print("degC");
lcd.setCursor(0, 1);
lcd.print("Tlak:");
lcd.setCursor(6, 1);
lcd.print((bmp180.getPressure()));
lcd.setCursor(16, 1);
lcd.print("Pa");
}
Kód: Vybrat vše
#include "DHTesp.h"
#ifdef ESP32
#pragma message(THIS EXAMPLE IS FOR ESP8266 ONLY!)
#error Select ESP8266 board.
#endif
DHTesp dht;
void setup()
{
Serial.begin(9600);
Serial.println();
Serial.println("Status\tHumidity (%)\tTemperature (C)\t(F)\tHeatIndex (C)\t(F)");
String thisBoard= ARDUINO_BOARD;
Serial.println(thisBoard);
// Autodetect is not working reliable, don't use the following line
// dht.setup(17);
// use this instead:
dht.setup(D13, DHTesp::DHT22); // Connect DHT sensor to GPIO 17
}
void loop()
{
delay(dht.getMinimumSamplingPeriod());
float humidity = dht.getHumidity();
float temperature = dht.getTemperature();
Serial.print(dht.getStatusString());
Serial.print("\t");
Serial.print(humidity, 1);
Serial.print("\t\t");
Serial.print(temperature, 1);
Serial.print("\t\t");
Serial.print(dht.toFahrenheit(temperature), 1);
Serial.print("\t\t");
Serial.print(dht.computeHeatIndex(temperature, humidity, false), 1);
Serial.print("\t\t");
Serial.println(dht.computeHeatIndex(dht.toFahrenheit(temperature), humidity, true), 1);
}