Índice:
Vídeo: Usando os 4 pinos do ESP8266-01: 3 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:37
Nota: Este projeto é basicamente uma extensão de um instrutível anterior que usava apenas 2 pinos. O número limitado (4) de pinos GPIO no ESP8266-01 pode parecer um obstáculo, para qualquer aplicação séria. No entanto, se usar os pinos em de forma inteligente, é muito possível fazer muita coisa apenas com esses 4 pinos. Em alguns dos meus instructables recentes, mostrei o uso de um DHT11, um DS18B20, um OLED, um RTC e um BMP180 com o ESP8266-01. Neste instrutível, propus usar 4 sensores e um display, enquanto também carrego os dados adquiridos para Thingspeak. Na verdade, está se expandindo em um projeto de monitoramento da atmosfera dentro e ao redor do meu galinheiro. Sim, você poderia chamar isso de estação meteorológica, mas é apenas para ilustrar o uso dos 4 pinos, você poderia facilmente fazer outra coisa desta forma; estarei usando 2 pinos para I2C (BMP180 e OLED) 1 pino para 2 sensores DS18B20 através do Pino do protocolo OneWire1 para o DHT11Embora o ESP8266-01 agora tenha todos os seus pinos usados, ainda posso adicionar mais sensores (ou atuadores) por meio do protocolo OneWire e / ou via protocolo I2C. Então, o que precisamos: BOM
- ESP8266-01
- 2x DS18B20
- 1x DHT11
- 1x BMP180
- OLED (opcional)
e, claro, uma placa de ensaio, uma fonte de alimentação de 3,3 V e alguns fios da placa de ensaio e uma conta Thingspeak
Apenas algumas observações sobre o BOM:
- ESP8266-01 Obviamente, o projeto é sobre a utilização dos pinos limitados do ESP8266-01, mas se você ainda precisar comprar um, você pode considerar um ESP8266-12 que tem mais pinos
- DHT11A sensor de umidade e temperatura multiuso barato. Não é extremamente preciso, mas servirá. Se ainda precisar comprar um, você pode optar pelo DHT22, que é supostamente mais preciso, mas também pode optar pelo AMS2321. Esse é um tipo de DHT22 que é adequado para I2C, liberando assim outro pino
- O BMP180 mede a temperatura e a pressão do ar. É o sucessor do BMP085, mas agora também possui alguns suvessores. Existe o (mais barato) BMP280, mas você também pode optar pelo BME280 que mede temperatura, pressão do ar E umidade. Dessa forma, você pode economizar no sensor DHT / AMS
- O OLEDI acabou de usar isso para que eu pudesse ver rapidamente se os sensores foram lidos, mas você também poderia verificar no Thingspeak. O OLED é muito pequeno para imprimir todos os valores lidos
Etapa 1: O circuito
Os 4 pinos do ESP8266 não são indicados como tal no PCB, e a maioria das imagens apenas mostra claramente GPIO0 e GPIO2. No entanto, o ESP826-01 tem um pino GPIO1 (o pino Tx) e um pino GPIO3 (o pino Rx).i usará esses pinos da seguinte maneira
- GPIO0 -> pino SDA da porta I2C
- GPIO1 -> DHT11
- GPIO2-> pino SCL da porta I2C
- GPIO3-> OneWire Bus
Como meus módulos I2C já têm resistores pull up, não adicionarei nenhum resistor pullup I2C lá. O DS18B20 ainda precisa de um resistor pull up para o qual usei um 4k7, mas realmente não é tão crítico, um 10k também é bom. Supostamente, o DHT11 também precisa de um resistor pull-up, mas descobri que ele também funcionava sem ele. adicionar um resistor 4k7 não alterou nenhuma das leituras, então eu o deixei de fora. Muitos dos módulos DHT11 de 3 pinos, já têm um 10K soldado no módulo. Acabei de perceber que não desenhei as conexões para o OLED. Isso porque eu o conectei apenas para uma verificação rápida, mas se você quiser adicioná-lo, é apenas uma questão de conectar SDA a SDA e SCL a SCL … e, claro, os pinos de aterramento e Vcc em suas contrapartes
Etapa 2: o programa
O programa é bastante simples. Primeiro, ele configura as bibliotecas e os sensores. Ele conecta o DHT11 ao pino 1 (Tx) e o barramento OnWire do DS18B20 ao pino 3 (Rx). Para usar mais de 1 sensor DS18B20 no barramento OneWire, você precisa saber seu 'endereço exclusivo'. Se você não tiver isso, precisará de um programa para ler esses endereços. Faça isso em um arduino para facilitar. No programa, você ainda precisa fornecer suas credenciais WiFi, bem como a API de gravação para seu canal Thingspeak
/*
Campo 1 temp poleiro (DHT11) Campo 2 poleiro de umidade (DHT11) campo 3 Temperatura Coop (DS18B20) campo 4 temperatura do solo (DS18B20) campo 5 Pressão de ar (bmp180) campo 6 Temperatura externa (bmp180) * * / #include #include // https://www.pjrc.com/teensy/td_libs_OneWire.html #include // https://milesburton.com/Main_Page?title=Dallas_Tem… #include #include #include "SSD1306.h" SSD1306 display (0x3c, 0, 2); #define DHTPIN 1 // GPIO1 (Tx) #define DHTTYPE DHT11 #define ONE_WIRE_BUS 3 // GPIO3 = Rx const char * ssid = "YourSSID"; const char * password = "YourPassword"; const char * host = "api.thingspeak.com"; const char * writeAPIKey = "W367812985"; // use SEU writeApi // DHT11 stuff float temperature_buiten; float temperature_buiten2; DHT dht (DHTPIN, DHTTYPE, 15); // DS18b20 stuff OneWire oneWire (ONE_WIRE_BUS); // instância oneWire para se comunicar com quaisquer dispositivos OneWire Sensores DallasTemperature (& oneWire); // Passe o endereço de nossa instância oneWire para a temperatura Dallas. DeviceAddress Probe01 = {0x28, 0x0F, 0x2A, 0x28, 0x00, 0x00, 0x80, 0x9F}; DeviceAddress Probe02 = {0x28, 0x10, 0xA4, 0x57, 0x04, 0x00, 0x00, 0xA9}; // bmp180 stuff Adafruit_BMP085 bmp; void setup () {// I2C stuff Wire.pins (0, 2); Wire.begin (0, 2); // Inicializar sensores // dht 11 stuff dht.begin (); // ds18b20 stuff sensores.begin (); // ds18b20 // define a resolução para 10 bits (pode ser de 9 a 12 bits. menor é mais rápido) sensores.setResolution (Probe01, 10); sensores.setResolution (Probe02, 10); // bmp180 stuff if (! bmp.begin ()) {// Serial.println ("No BMP180 / BMP085"); // while (1) {}} // material OLED display.init (); display.flipScreenVertically (); display.setFont (ArialMT_Plain_10); atraso (1000); // Conectar à rede WiFi WiFi.begin (ssid, senha); while (WiFi.status ()! = WL_CONNECTED) {delay (500); }} void loop () {// ds18b20stuff ------------------- sensores.requestTemperatures (); // Envie o comando para obter as temperaturas temperature_buiten = sensores.getTempC (Probe01); // temperature_buiten2 = sensores.getTempC (Probe02); // // dht11 stuff ---------------- ---- umidade flutuante = dht.readHumidity (); temperatura flutuante = dht.readTemperature (); if (isnan (umidade) || isnan (temperatura)) {return; } // coisas bmp ------------------------- String t = String (bmp.readTemperature ()); String p = String (bmp.readPressure ()); // Coisas OLED -------------------------- display.clear (); display.drawString (0, 10, p); // pressão bmp display.drawString (0, 24, String (temperature_buiten)); // ds18b20 display.drawString (0, 38, String (umidade)); // display dht11.exibição(); // faz conexões TCP WiFiClient client; const int httpPort = 80; if (! client.connect (host, httpPort)) {return; } String url = "/ update? Key ="; url + = writeAPIKey; url + = "& field1 ="; url + = String (temperatura); // roost (DHT1) url + = "& field2 ="; url + = String (umidade); // roost (DHT11) url + = "& field3 ="; url + = String (temperature_buiten); // temperatura de coop (DS18B20 nr 1) url + = "& field4 ="; url + = String (temperatura_buiten2); // temperatura do solo (DS18B29 nr 2) url + = "& field5 ="; url + = String (bmp.readTemperature ()); Temperatura externa (BMP180) url + = "& field6 ="; url + = String (bmp.readPressure ()); // Airpressure (BMP180) url + = "\ r / n"; // Envie a solicitação para o servidor client.print (String ("GET") + url + "HTTP / 1.1 / r / n" + "Host:" + host + "\ r / n" + "Conexão: fechar / r / n / r / n "); atraso (1000); }
……..
Etapa 3: mais
Atualmente este programa só monitora, mas o que é que impede você de adicionar um sensor de luz BH1750 I2C para medir se é noite ou de manhã ou um RTC para saber a hora do dia e abrir e fechar a porta da gaiola automaticamente com auxílio de uma placa de expansão I / O I2C PCF8574, ou como já está no jardim, adicione um conversor AD PCF8591 ou ADS1115 para medir a umidade do solo e ative uma bomba quando necessário. Ou talvez ligar o aquecedor do tanque de água quando a temperatura cair abaixo de zero; se houver um chip I2 C para ele, o ESP8266 provavelmente poderá usá-lo.
Porém, uma observação importante: o programa como está funciona bem, mas se você adicionar outros sensores a Rx ou Tx, especialmente se você transformá-los em saídas, os pinos podem repentinamente lembrar que não são realmente pinos GPIO. É melhor dizer aos pinos desde o início que eles agora são pinos GPIO. Isso é feito colocando as seguintes instruções na configuração:
pinMode (1, FUNCTION_3);
pinMode (3, FUNCTION_3);
Recomendado:
VISUINO Rolling Dice Usando Módulo OLED de 4 Pinos de 0,96 Polegada: 7 Etapas
VISUINO Rolling Dice usando o módulo OLED de 4 pinos de 0,96 polegadas: Neste tutorial, usaremos OLED Lcd e Visuino para fazer um Rolling Dice quando pressionamos um botão em nosso breadboard. Assista a um vídeo de demonstração
ESP8266 usando pinos GPIO0 / GPIO2 / GPIO15: 4 etapas
ESP8266 usando pinos GPIO0 / GPIO2 / GPIO15: atualização de 1º de julho de 2018 - nota adicionada sobre a reprogramação quando GPIO0 é uma saída Esta é uma nota muito curta sobre como usar os pinos GPIO0 / GPIO2 e GPIO15 no módulo ESP8266.Atualizar: verifique também out How to use the ESP8266-01 pinsIntroductionESP8266 is a low
Desenvolvimento de aplicativos usando pinos GPIO no DragonBoard 410c com sistemas operacionais Android e Linux: 6 etapas
Desenvolvimento de aplicativos usando pinos GPIO no DragonBoard 410c com sistemas operacionais Android e Linux: O objetivo deste tutorial é mostrar as informações necessárias para desenvolver aplicativos usando o pino GPIO na expansão de baixa velocidade DragonBoard 410c. Este tutorial apresenta informações para o desenvolvimento de aplicativos usando os pinos GPIO com SYS no Andr
ESP8266-NODEMCU $ 3 Módulo WiFi nº 2 - Controle de pinos sem fio por meio da PÁGINA DA WEB: 9 etapas (com imagens)
ESP8266-NODEMCU Módulo 2 WiFi de $ 3 - Controle de pinos sem fio por meio da página da web: Um novo mundo desses micro-computadores chegou e essa coisa é o ESP8266 NODEMCU. Esta é a primeira parte que mostra como você pode instalar o ambiente do esp8266 em seu IDE arduino por meio do vídeo de introdução e como as partes em
ISP 6 pinos para soquete de 8 pinos: 4 etapas
Soquete de 6 pinos para 8 pinos do ISP: A razão pela qual eu construí este projeto foi programar o ATTiny45, que tem uma conexão de 8 pinos, enquanto meu USBtinyISP (da Ladyada) tem apenas uma conexão de 10 e 6 pinos. Depois de bisbilhotar a internet por cerca de 3-4 semanas, não encontrei nada o que