Skip to content

Este repositório contém uma aplicação simples com o objetivo de demonstrar uma maneira de monitorar o estado do BIT 5 do regitro PORTB (PB5) do ATmega328P, LED 13 do Arduino UNO R3, via Página Web.

License

Notifications You must be signed in to change notification settings

guilhermerodrigues680/atmega328p-arduino-python-html-websocker-led13

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


ATmega 328P  ANSI Logo  JQuery Logo
ATmega328P , Arduino , Python , HTML , Websocker , Led13

Monitoramento do ATmega328P/Arduino via Página Web usando Websockets no Python 3

Tabela de Conteúdo

  1. Sobre
  2. Instruções
  3. Fluxo da aplicação
  4. Executando a aplicação
  5. Capturas de tela | GIFs
  6. Referências Consultadas
  7. Contributor
  8. License

Monitoramento do ATmega328P/Arduino via Página Web usando Websockets no Python 3

Sobre

Este repositório contém uma aplicação simples com o objetivo de demonstrar uma maneira de monitorar o estado do BIT 5 do regitro PORTB (PB5) do ATmega328P, LED 13 do Arduino UNO R3, via Página Web. O conceito pode ser extendido para outras aplicações similares.

Instruções

O parte embarcada da aplicação foi escrita em ANSI C usando a PlatformIO IDE . Ela foi focada no Atmega328P presente no Arduino Uno R3, trabalhando diretamente com registradores do microcontrolador.
Apesar de ultilizada o PlatformIO IDE, o codigo é portavel para o Atmel Studio 7.

O Back-end da aplicação foi escrito em Python (v3.7.3), e foram ultilizados os modulos pySerial e websockets para leitura de dados na porta serial e comunicação websocket respectivamente.

O Frot-end da aplicação foi escrito em HTML e Javascript e a biblioteca jQuery .

Fluxo da aplicação

O processo se inicia no ATmega328P, o firmware foi programado para alterar o estado do BIT 5 do regitro PORTB (PB5) a cada 1 segundo e logo em seguida imprimir na serial 1 byte contendo o estado do PB5. Este byte é transmitido em base 16 ( hexadecimal). O PB5 está conectado ao Pino 13 do arduino UNO R3 como é descrito no site oficial do Arduino PIN MAPPING ATmega328P - Arduino .
Após o ATmega328P imprimir na serial o byte, o conversor serial do Arduino UNO transmite esse dado pelo USB.
No computador, o algoritmo escrito em python fica lendo constatemente a porta serial USB onde o Arduino está conectado, quando há uma informação ou seja o byte, ele lê este byte que está em hexadecimal e converte para base 10 (decimal). Em seguida coloca esse numero que indica o estado do PB5 no formato JSON que utiliza texto legível a humanos, no formato "atributo": valor e transmite o JSON via websocket.
A página web ao ser carregada pela primeira vez, estabelece a conexão via websocket com o servidor, e quando chega uma mensagem (informação/JSON) ela a lê e altera os elementos da página dinâmicamente seguindo os algoritmos escrito em javascript.

DIAGRAMA-01.png

Executando a aplicação

  1. Plugue o Arduino ao USB do carregador e carregue o código src/main.c para ATmega328P ultilizando o Platform IO IDE ou o Atmel Studio
  2. Abra o terminal na pasta raiza da aplicação
  3. Acesse a pasta do servidor em python websocket/python
cd websocket/python
  1. Instale os modulos necessários para execução do servidor. (Se ultilizar for ultilizar Virtual Environment Virtual Environments and Packages - Python Documentation , execute o procedimento '5.', caso contrário, ou seja ultilizar o python padrão do computador pule para o procedimento '7.')
  2. Crie o ambiente virutal myvenv
python3 -m virtualenv myvenv
  1. Ative o ambiente virtual myvenv
source ./myvenv/bin/activate
  1. Instalação dos modulos necessários para execução do servidor usando o pip Python PIP
pip3 install -r requirements.txt
  1. Inicie a execução do servidor (Não feche o terminal após iniciar o servidor)
python3 main.py
  1. Abra a página web websocket/html/index.html em um navegador. Clique e Arraste o aquivo index.html para dentro do navegador que ele carregará a página. (O link será parecido com file:///.../websocket/html/index.html)
  2. Após executar todos os procedimentos a aplicação estará em execução.
  3. Para encerrar o servidor, abra o terminal que ele está em execução e pressione as teclase Ctrl + C, se a combinação de teclas não for bem sucedida, tente Ctrl + Break (Em alguns teclados a tecla Break é chamada de Pause)

Capturas de tela | GIFs

Aplicacação

GIF-01 SCREENSHOT-01.png SCREENSHOT-02.png

Referências Consultadas

C

The New C Standard An Economic and Cultural Commentary
ATmega328P DATASHEET

Python

pySerial
websockets
Python library Docs

HTML | CSS | JAVASCRIPT

HTML | MDN
CSS | MDN
JavaScript | MDN
W3Schools Online Web Tutorials
JSON - JavaScript | MDN
jQuery

Contributor

LinkedIn: Guilherme Rodrigues

License

This project is licensed under the terms of the MIT license.

About

Este repositório contém uma aplicação simples com o objetivo de demonstrar uma maneira de monitorar o estado do BIT 5 do regitro PORTB (PB5) do ATmega328P, LED 13 do Arduino UNO R3, via Página Web.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published