Introduction: IoT With NodeMCU and MQTT

About: Freedom and self-management

[En] Once for an industrial application i needed to make a PCB with 8 dry contacts, a little playing with MQTT and decided to adapt it to work using NodeMCU esp-f v4. In order to make it a simple way to make low-cost home automation.

[Pt-Br] Certa vez para uma aplicação industrial eu precisei fazer uma PCB com 8 contatos secos. Brincando um pouco com MQTT resolvi adaptá-la para que funcionasse utilizando a NodeMCU esp-f v4. A fim de torná-la uma forma simples de se fazer automações residenciais de baixo custo.

Supplies

For the core/ Para o processamento:
1- ESP12-F DEVKIT V4 (NodeMCU smaller) but you can adapt the circuit to ESP12-E V3;

For the board / para a PCB:
qty - part

1- 10x10 virgin board for PCB

8- LED 3mm (For signaling)

1- kre-2t connector(Voltage in)

8- kre-3t connector(output dry contacts)

2- 100n ceramic capacitor

1- 10n ceramic capacitor

1- 10u eletrolitc capacitor

2- 100u Eletrolitc capacitor

1- 1N4004 diode (fool proof)

8- 1N4148 diode (free willing)

8- 500 resistor 1/4w (for leds)

8- 680 resistor 1/4w (for optocouplers)

11- 10k resistor 1/4w

1- 7805 (+ voltage regulator for nodeMCU)

8- BC548 npn transistor

8- 12v relay (No-c-Nc)

8- PC817 optocoupler

2- 15x1 female pin header (to nodeMCU)

1- 2pin pin header (for Analog in)

1- push button (for Digital in)

[en]A little knowledge in PCB manufacturing, plus a little knowledge of programming languages and the Arduino IDE interface for NodeMCU. And a little google searches for external knowledge.

[Pt-Br]Um pouco de conhecimento em fabricação de PCB, além de um pequeno conhecimento de linguagens de programação e da interface da IDE do Arduíno para NodeMCU. E um pouco de pesquisas no google para conhecimentos externos.

Step 1: Board

These files were made in cadsoft eagle 7.5, but must be backwards compatible with autodesk eagle. You can edit them to fit esp12-E.

Estes arquivos foram feitos no cadsoft eagle 7.5, mas devem ter retrocompatibilidade com o autodesk eagle. Você pode editá-lo a fim de encaixar esp12-E.

Step 2: Code

link para o projeto no github/ github project link: github

[En] For the code, you must edit some parameters to better suit your projects:
-The internet name of your wi-fi (SSID line 7);

-The password (password line 8);

-The location where your broker is configured, in my case I use a broker inside an orange-pi one running OpenHab2 so it is the IP on line 11, but if you use any free online broker, like the eclipse mosquito (https: // mosquitto.org/), you can put the URL in parentheses instead of the IP, be careful that free online brokers have security problems;

-In line 12 the port through which you access this broker, usually 1883 or 8883;

-After that, the ID_MQTT will remain, which will be the name you will use for your client on line 20;

-In line 21 and 22, the topics where we will send the information respectively pin d8 and An0 (1v max);

-After this we have only the subscription topics that will control the outputs d0 to d7, each topic is inside the char array on line 38. You can change them, but on line 107 we make a comparison between the ID_MQTT and these topics, checking if the ID_MQTT is between the second and seventh character of the topic received.



[Pt-Br] Para o código, você deve editar alguns parâmetros para melhor servir aos seus projetos:

-O o nome da internet do seu wi-fi (SSID linha 7);

-A senha (password linha 8);

-O local onde seu broker está configurado, no meu caso utilizo um broker dentro de uma orange-pi one rodando OpenHab2 por isso é o IP na linha 11, mas se você usar algum broker online como o mosquito da eclipse (https://mosquitto.org/) você pode colocar a URL entre parênteses, tome cuidado que brokers gratuitos online possuem problemas de segurança;

-Na linha 12 a porta pela qual você acessa este broker, geralmente 1883 ou 8883;

-Depois disso sobram o ID_MQTT que será o nome que você usará para o seu cliente na linha 20;

-Na linha 21 e 22, os tópicos onde vamos enviar as informações respectivamente pino d8 e An0(1v max);

-após isto temos apenas os tópicos de subscrição que controlarão as saídas d0 a d7, cada tópico esta dentro do array de char na linha 38. Você pode alterá-los, mas na linha 107 fazemos uma comparação entre o ID_MQTT e estes tópicos, verificando se o ID_MQTT está entre o segundo e o sétimo caractere do tópico recebido.

Step 3: How I Know This Is Ok?

[En] You can configure another MQTT client, to publish the topics that your device will be subscribed to, and vice versa. In the images we have examples, the first is a client configured within OpenHab2, the second a proprietary software called MQTT.FX that you use in the same broker as your device and can publish and receive payloads on configured topics.

[Pt-Br]Você pode configurar outro cliente MQTT, para publicar os tópicos que seu dispositivo irá estar inscrito, e vice versa. Nas imagens temos exemplos, o primeiro é um cliente configurado dentro do OpenHab2, o segundo um software próprio chamado MQTT.FX que você conceta no mesmo broker que seu dispositivo e consegue publicar e receber payloads em tópicos configurados.

Step 4: Ending

I hope it helped, especially those looking to do home automation with IoT and find only small applications and few output switchs, so you can do many automations with low cost. If you have changes, please share them so that more people can perform.
Health and Freedom! (A)

Espero que tenha ajudado, principalmente quem busca fazer automação residencial com IoT e encontra apenas pequenas aplicações e poucos chaves de saída, dessa forma pode-se fazer muitas automações com baixo custo. Se você tem alterações, por favor compartilhe para que mais pessoas possam executar.
Saúde e Liberdade! (A)