Índice:
- Etapa 1: Criação de um ambiente de construção
- Etapa 2: obter o código-fonte, configurar e construir
- Etapa 3: conectar os componentes de hardware
- Etapa 4: Flash e executar
- Etapa 5: Interagindo
- Etapa 6: detalhes de implementação
Vídeo: Faixa de LED WiFi + Sensor de temperatura com ESP8266: 6 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:38
Este tutorial descreve as etapas para configurar um ESP8266 e fazê-lo se comunicar com um sensor de temperatura e faixa de LED, além de ser capaz de receber entrada e enviar saída com MQTT por WiFi. O projeto foi feito para um curso realizado na Cal Poly San Luis Obispo no outono de 2016- CPE 439: Sistemas Embarcados em Tempo Real. O objetivo geral era demonstrar a facilidade de criar uma "coisa" conectada à Internet com hardware barato.
Suprimentos / equipamentos necessários:
- Placa de desenvolvimento NodeMCU ESP8266
- WS2812B tira LED
- MAX31820 Sensor de temperatura
- Tábua de pão
- Resistor de 4,7 K ohm
- Resistor de 220 ohms
- fios de ligação
- cabo micro usb
- PC (ou VM) executando Linux (por exemplo, Ubuntu)
Premissas / pré-requisitos:
- experiência com o uso de ferramentas de linha de comando e instalação de pacotes em uma distribuição baseada em debian
- compreensão básica da sintaxe do Makefile
- conectando fios
Etapa 1: Criação de um ambiente de construção
Para construir o projeto, você precisará do esp-open-sdk instalado em sua máquina. Siga o link e leia as instruções de construção. Resumindo, você estará executando alguns comandos sudo apt-get para instalar dependências, um clone git --recursive para clonar / baixar esp-open-sdk e, finalmente, um comando make para construir esp-open-sdk.
Me veja
Etapa 2: obter o código-fonte, configurar e construir
Agora que o esp-open-sdk foi construído, clone o repositório do projeto.
git clone
Mude para o diretório do projeto, crie uma pasta.local e copie as configurações de exemplo.
cd esp-rtos-tests
mkdir -p.local cp settings.example.mk.local / settings.mk
Agora abra.local / settings.mk com qualquer editor de texto e altere as seguintes configurações:
- OPENSDK_ROOT: o caminho absoluto para a localização do esp-open-sdk que você construiu na etapa 1
- WIFI_SSID: O SSID da sua rede WiFi
- WIFI_PASS: a senha da sua rede WiFi
- PIXEL_COUNT: O número de pixels em sua faixa de LED WS2812B
Nota: Uma vez que este projeto usa SPI para acionar os LEDs e usa o NodeMCU 3.3v para fornecê-los, você provavelmente não será capaz de acionar mais de ~ 60 LEDs.
Nota: As outras configurações não precisam ser alteradas, mas podem ser, se desejado. Recomenda-se manter a ordem das prioridades das tarefas. Quanto mais baixo for o número da prioridade, menor será a prioridade da tarefa.
Agora construa o projeto:
fazer exemplos -C / cpe439
Se tudo estiver configurado corretamente, ele deve começar a compilar. No final você verá:
Criado com sucesso 'firmware / cpe439.bin'
Me veja
Etapa 3: conectar os componentes de hardware
Agora que o código está compilado, é hora de conectar nossos periféricos.
Primeiro, cole o NodeMCU na placa de ensaio e, em seguida, use os fios de jumper para fazer as conexões conforme mostrado no diagrama.
Algumas coisas a serem observadas:
- Importante: A linha de dados WS2812B não é bidirecional. Se você olhar atentamente para as marcações no lado do LED da faixa, verá pequenas setas apontando em uma direção. A saída do D7 do NodeMCU precisa estar indo para o WS2812B da mesma forma que o marcador de direção, que você pode ver no diagrama se olhar de perto.
- Dependendo de que tipo de conectores vem com seu WS2812B, você pode precisar fazer algumas modificações para que eles se conectem com segurança na placa de ensaio. Você também pode usar clipes jacaré para conectá-los a cabos de jumper compatíveis com breadboard.
- Os pinos do MAX31820 têm um passo menor e são mais finos do que os jumpers padrão de 0,1 "/ 2,54 mm, tornando-os difíceis de conectar. Uma maneira de contornar isso é usar fios de jumper fêmea para macho, retirar a caixa de plástico do lado feminino, em seguida, use um alicate para prender as pontas do jumper fêmea firmemente em torno dos pinos menores do MAX31820.
Verifique novamente as conexões antes de ligar o NodeMCU para não danificar os componentes.
Etapa 4: Flash e executar
Piscando
Com todo o hardware conectado, conecte seu NodeMCU e faça flash com o seguinte comando:
fazer exemplos Flash -C / cpe439 ESPPORT = / dev / ttyUSB0
/ dev / ttyUSB0 é o serial com o NodeMCU deve aparecer. Se você tiver outros dispositivos seriais conectados, ele pode aparecer como / dev / ttyUSB1 ou algum outro número. Para verificar, você pode executar este comando duas vezes, uma com o NodeMCU desconectado e uma vez com ele conectado, e comparar a diferença:
ls / dev / ttyUSB *
Outro problema que você pode encontrar é não ter permissão para acessar o dispositivo. Duas maneiras de corrigir isso são:
-
Adicione seu usuário ao grupo de discagem:
sudo adduser $ (whoami) dialout
- chmod ou chown o dispositivo:
sudo chmod 666 / dev / ttyUSB0 sudo chown $ (whoami): $ (whoami) / dev / ttyUSB0O primeiro método é o preferido porque é uma solução permanente.
Correndo
Depois de executar o comando flash com sucesso, o dispositivo será inicializado imediatamente e começará a executar o código compilado. A qualquer momento após piscar, você pode executar o seguinte comando para observar a saída serial:
python3 -m serial.tools.miniterm --eol CRLF --exit-char 003 / dev / ttyUSB0 500000 --raw -q
Para economizar tempo, você pode adicionar isso ao seu arquivo ~ /.bashrc:
alias nodemcu = 'python3 -m serial.tools.miniterm --eol CRLF --exit-char 003 / dev / ttyUSB0 500000 --raw -q'
..que permite que você simplesmente digite "nodemcu" como um apelido para esse comando.
Se tudo estiver configurado corretamente, sua faixa de LED deve acender em verde e em serial você deve ver a conexão WiFi, obter um endereço IP, conectar-se ao MQTT e mensagens de que os dados de temperatura estão sendo enviados.
conectado com MyWiFiSSID, canal 1dhcp cliente iniciar … wifi_task: status = 1wifi_task: status = 1ip: 192.168.2.23, máscara: 255.255.255.0, gw: 192.168.2.1ws2812_spi_init okRequest temp OKwifi_task: status = 5xQueendSkttt_ttaq_tta_vivido_vit_ttaq:: (Re) conectar ao servidor MQTT test.mosquitto.org… xQueueReceive + 25.50xQueueSend ok doneSend MQTT connect… MQTTv311donexQueueReceive +25,56 xQueueSend ok
Etapa 5: Interagindo
Supondo que seu dispositivo tenha se conectado a WiFi e ao corretor MQTT com sucesso, você poderá enviar e receber dados do NodeMCU com MQTT. Se ainda não o fez, instale o pacote de clientes mosquitto:
sudo apt-get install mosquitto-clients
Agora você deve conseguir usar os programas mosquitto_pub e mosquitto_sub do seu shell.
Recebendo atualizações de temperatura
Para receber dados de temperatura, queremos usar o comando mosquitto_sub para assinar o tópico no qual o NodeMCU está publicando.
mosquitto_sub -h test.mosquitto.org -t / cpe439 / temp
Você deve ver os dados de temperatura (em Celsius), chegando ao terminal.
+25.87+25.93+25.68…
Configurando a cor da faixa de LED remotamente
Um formato de mensagem simples é usado para enviar valores RGB para o NodeMCU sobre MQTT. O formato do comando é parecido com este:
r: RRRg: GGGb: BBB ~
Onde RRR, GGG, BBB correspondem aos valores RGB (0-255) da cor que você deseja enviar. Para enviar nosso comando, usaremos o comando mosquitto_pub. aqui estão alguns exemplos:
mosquitto_pub -h test.mosquitto.org -t / cpe439 / rgb -m 'r: 255g: 0b: 0 ~' # redmosquitto_pub -h test.mosquitto.org -t / cpe439 / rgb -m 'r: 0g: 255b: 0 ~ '# greenmosquitto_pub -h test.mosquitto.org -t / cpe439 / rgb -m' r: 0g: 0b: 255 ~ '# azul
Se você quiser ser criativo, encontre um seletor de cores online como este e edite o comando com qualquer valor RGB que você escolher.
Atenção
Os tópicos neste projeto são definidos como / cpe439 / rgb e / cpe439 / temp em um broker MQTT público, o que significa que não há nada que impeça outra pessoa de publicar ou assinar os mesmos tópicos que você. Para experimentar, usar um corretor público é bom, mas para projetos mais sérios, você vai querer se conectar a um corretor com proteção por senha ou executar seu próprio corretor no servidor.
Etapa 6: detalhes de implementação
Onewire
O ESP8266 tem apenas 1 núcleo, portanto, tarefas de bloqueio como esperar 750ms para o sensor de temperatura realizar uma medição de temperatura normalmente resultaria em WiFi não funcionando bem, e talvez até mesmo uma falha. No paradigma FreeRTOS, você chama vTaskDelay () para lidar com essas longas esperas, mas também há muitas esperas mais curtas necessárias entre leituras e gravações que são mais curtas do que o tique do sistema FreeRTOS e, portanto, não podem ser evitadas com vTaskDelay (). Para também contornar isso, o driver onewire neste projeto foi escrito para funcionar fora de uma máquina de estado que é acionada pelo temporizador de hardware do ESP8266, que pode acionar eventos tão baixos quanto a cada 10 microssegundos, que por acaso é o mais curto tempo necessário entre as operações de leitura / gravação onewire. A maioria das outras implementações usa uma chamada de bloqueio para delay_us () ou similar para lidar com isso, mas se você está constantemente fazendo atualizações de temperatura, todos esses atrasos começam a se somar, resultando em um aplicativo menos responsivo. A fonte para esta parte do código está localizada na pasta extras / onewire.
WS2812B
O ESP8266 não tem nenhuma opção de hardware padrão para PWM rápido o suficiente para acionar faixas de LED a 800KHz. Para contornar isso, este projeto usa o pino SPI MOSI para acionar os LEDs. Ajustando a taxa de clock do SPI e alterando a carga útil do SPI, você pode obter um controle bastante confiável de cada LED individual. Este método tem suas falhas - por exemplo, os LEDs devem ser alimentados com uma fonte de 5 V e um deslocador de nível deve ser adicionado à saída do pino SPI. Mas 3.3V funciona. Em segundo lugar, existem falhas que ocorrem devido ao tempo imperfeito usando o método SPI. E o terceiro é que agora você não pode usar o SPI para mais nada. Informações adicionais sobre este método podem ser encontradas aqui, e a fonte para esta parte do código está localizada na pasta extras / ws2812.
Um método mais confiável para acionar fitas de LED é usar i2s. No entanto, esse método tem muitos hacks específicos de chip, então o SPI parecia ser uma escolha melhor como exercício de aprendizado.
Recomendado:
Luzes LED multicoloridas reativas a música - Sensor de detecção de som Arduino - Faixa de LED RGB: 4 etapas
Luzes LED multicoloridas reativas a música | Sensor de detecção de som Arduino | RGB LED Strip: Projeto de luzes LED multicolores reativas à música. Neste projeto, uma faixa de LED 5050 RGB simples (não o LED endereçável WS2812), sensor de detecção de som Arduino e adaptador de 12 V foram usados
Ponto de acesso (AP) NodeMCU ESP8266 para servidor Web com sensor de temperatura DT11 e impressão de temperatura e umidade no navegador: 5 etapas
ESP8266 NodeMCU Access Point (AP) para servidor Web com sensor de temperatura DT11 e impressão de temperatura e umidade no navegador: Olá pessoal, na maioria dos projetos usamos ESP8266 e na maioria dos projetos usamos ESP8266 como servidor web para que os dados possam ser acessados em qualquer dispositivo por wi-fi acessando o servidor da Web hospedado por ESP8266, mas o único problema é que precisamos de um roteador funcionando para
Sensor de frequência cardíaca responsivo por faixa LED Arduino: 5 etapas
Sensor de frequência cardíaca responsivo de faixa LED Arduino: A primeira coisa que fiz foi conectar meu sensor de frequência cardíaca Grove ao Arduino por meio de um tutorial muito fácil de seguir no YouTube. https://www.youtube.com/watch?v=Dzq4tnJ0LjAhttps://www.kiwi-electronics.nl/grove-finger-clip
Faixa de LED ativada por sensor de movimento com temporizador: 6 etapas (com imagens)
Faixa de LED ativada por sensor de movimento com temporizador: Olá a todos! Estou muito feliz por escrever outro instrutível agora. Este projeto surgiu quando fui contatado por um colega instrutível-er (?!) (David @dducic) vários meses atrás pedindo ajuda para design. Então, aqui estava a especificação original: & q
SENSOR SUHU DENGAN LCD DAN LED (Fazendo sensor de temperatura com LCD e LED): 6 etapas (com imagens)
SENSOR SUHU DENGAN LCD DAN LED (Fazendo sensor de temperatura com LCD e LED): hai, saya Devi Rivaldi mahasiswa UNIVERSITAS NUSA PUTRA da Indonésia, di sini saya akan berbagi cara membuat sensor suhu menggunakan Arduino dengan Output ke LCD e LED. Ini adalah pembaca suhu dengan desain saya sendiri, dengan sensor ini anda