Git Product home page Git Product logo

drivers's Issues

Driver para Rádio

Aplicação: Rádio

O responsável por esse issue deve:

  • Pesquisar sobre essa aplicação
    • Em qual contexto do projeto será utilizada?
    • Qual geralmente é o propósito dessa aplicação?
    • Existe algum dispositivo comum?
  • Pesquisar sobre o dispositivo atual
    • Por que estamos usando ele?
    • Tem algo que torna ele difícil de trabalhar?
    • Onde ele já foi utilizado?
  • Implementar uma biblioteca do dispositivo.
    • Qual informação está associada ao dispositivo?
    • Como se espera que ele seja utilizado?
    • Sua implementação compila sem Warnings?
  • Documentar a Implementação
    • O que cada função faz?
    • O que cada struct e seus campos significam?
    • Quais características do dispositivo afetam o código?
    • Quais partes do datasheet um usuário do driver deve ficar atento?
    • Existe alguma outra documentação externa de interesse para o usuário?

Observações

O driver deve ser capaz de enviar e receber pacotes LoRa e FSK com com tamanhos variando de 27 até 61 bytes.
Também deve ser possível selecionar uma "rede" independente, possivelmente utilizando o parâmetro de syncword, de tal forma que os receptores de uma rede automaticamente descartem pacotes de outra rede.

Tarefas

  • Pesquisa e Leitura do Datasheet
  • Selecionar Features
  • Rascunho da Interface
  • Implementação
  • Documentação
  • Revisão
  • Teste
  • Finalização

Biblioteca de Altitude

Biblioteca de Altitude

Resumo

Criar uma biblioteca contendo pelo menos 1 método de conversão entre pressão e altitude.

Justificativa

Um dos dados mais importantes da sonda é sua altitude. Geralmente temos múltiplos sensores de pressão e temperatura e indiretamente calculamos a altitude. Existem várias maneiras de extrair a informação da altitude, desde o calculo normal, passando por média móvel e filtros FIR até Filtros de Kalman e observadores em geral. Essa biblioteca então deverá conter os métodos disponíveis, começando pela formula padrão.

Especificação

  • Um typedef para as leituras, contendo a medida de pressão e temperatura.
  • Um typedef para o estado atual, representando a altitude estimada e qualquer outro estado inter-medida ou configuração.
  • Uma função para adicionar uma medida.
  • Opcional: Uma função para adicionar N medidas (média móvel)
  • Uma função de inicialização com argumentos associados as configurações
  • Uma função para extrair a altitude estimada mais recente, com validação e retornando erros.

Outros detalhes

  • Não é recomendado uso de double
  • Formate seu código
  • Documente elementos não óbvios do seu código
  • Documente as unidades utilizadas
  • Teste seu código com exemplos incluindo chamados corner cases

Referências

NASA Earth Atmosphere Model - Metric Units

STM32: DS2786 Fuel Gauge

Driver e Documentação do Fuel Gauge DS2786

Sensor usado para monitorar a quantidade de carga presente num conjunto de baterias

Protocolo: I2C
Datasheet: PDF

Documentar

  • Funcionamento básico ( Qual o jeito mais simples de usar o sensor )
  • Funcionalidades adicionais ( Quais são as outras funcionalidades/configurações interessantes )
  • Qual a sequencia de comunicação para o uso básico ( Quais registradores )

Biblioteca

  • Fazer uma struct ds2786_tpara conter o i2c utilizado e configurações
    • Se existem muitas configurações, separar em uma outra struct ds2786_config_t
  • Fazer uma função ds2786_init que inicialize um ds2786_t
  • Fazer uma função para pegar o valor de interesse em bytes "brutos"
  • Fazer uma função para transformar os bytes brutos em valores uteis
  • Lembrar de colocar as constantes, endereço I2C, valores de configuração etc no .h como #define DS2786_<NOME>

Validação

Vish, como não dá pra simular, nem dá para comprar módulos baratos, o melhor jeito é com o 3LT, mas como ainda não está pronto e idealmente são necessárias duas pessoas com conhecimento do funcionamento do sensor (uma para escrever a biblioteca e outra para escrever o mock) é melhor esperar e reavaliar meios de testar futuramente.

Platform Abstraction Layer

Platform.h

Uma interface padronizada que seja capaz de abstrair as funções que são específicas de cada plataforma de hardware:

  • - STM32 (F1,F4,L4,G0 etc...)
  • - Arduino (avr)
  • - ESP32 (esp-idf)

Idealmente cada driver deve precisar apenas #include "platform.h" e a plataforma deve ser automaticamente selecionada. No caso do STM32 que possui HALs que variam por família, ela também deve ser detectada.

A especificação da interface deve estar disponível para novas plataformas serem adicionadas facilmente.

Biblioteca de Termistores

Biblioteca de Termistores

Criar uma biblioteca genérica de termistores para que outros drivers possam utilizar. A biblioteca não deve depender da forma que as medidas foram adquiridas, seja diretamente via ADC, ou um amplificador/conversor externo. Também não deve depender da plataforma.

Construção de Bibliotecas

Primeiro deve ser determinado o estado da biblioteca, ou seja, qual informação é de escopo global, versus local de uma função. Caso haja um estado global, não é recomendado utilizar variáveis globais. É melhor criar uma struct com esse estado e ela pode ser passada em cada chamada de função. Isso evita problemas caso tenhamos mais de um termistor de tipo diferente.

Uma vez sabendo qual informação pertence a qual escopo, já dá pra identificar as funções, geralmente acaba sendo:

  • init
  • measure
  • funções auxiliares

Lembrando que toda função da biblioteca deve começar com o nome dela, sugestão: thermistor_*.
Como estamos lidando com medidas físicas, é importante deixar explicito as unidades.
Idealmente, toda constante não óbvia deve ter um nome com um #define no .h da biblioteca.
Como estamos programando para um microcontrolador, o tamanho em memória das variáveis deve ser ponderado.
É recomendado declarar variáveis no momento que são necessárias, não no inicio da função.

  • Definir interface comum; sugestão: a resistência medida
  • Definir a struct de estado global, caso haja
  • Definir as funções de interface
  • Construir a implementação
  • Documentação
  • Revisão
  • Teste

Driver para Barômetro

Aplicação: Barômetro

O responsável por esse issue deve:

  • Pesquisar sobre essa aplicação
    • Em qual contexto do projeto será utilizada?
    • Qual geralmente é o propósito dessa aplicação?
    • Existe algum dispositivo comum?
  • Pesquisar sobre o dispositivo atual
    • Por que estamos usando ele?
    • Tem algo que torna ele difícil de trabalhar?
    • Onde ele já foi utilizado?
  • Implementar uma biblioteca do dispositivo.
    • Qual informação está associada ao dispositivo?
    • Como se espera que ele seja utilizado?
    • Sua implementação compila sem Warnings?
  • Documentar a Implementação
    • O que cada função faz?
    • O que cada struct e seus campos significam?
    • Quais características do dispositivo afetam o código?
    • Quais partes do datasheet um usuário do driver deve ficar atento?
    • Existe alguma outra documentação externa de interesse para o usuário?

Observações

Tarefas

  • Pesquisa e Leitura do Datasheet
  • Selecionar Features
  • Rascunho da Interface
  • Implementação
  • Documentação
  • Revisão
  • Teste
  • Finalização

Driver para IMU

Aplicação: IMU

O responsável por esse issue deve:

  • Pesquisar sobre essa aplicação
    • Em qual contexto do projeto será utilizada?
    • Qual geralmente é o propósito dessa aplicação?
    • Existe algum dispositivo comum?
  • Pesquisar sobre o dispositivo atual
    • Por que estamos usando ele?
    • Tem algo que torna ele difícil de trabalhar?
    • Onde ele já foi utilizado?
  • Implementar uma biblioteca do dispositivo.
    • Qual informação está associada ao dispositivo?
    • Como se espera que ele seja utilizado?
    • Sua implementação compila sem Warnings?
  • Documentar a Implementação
    • O que cada função faz?
    • O que cada struct e seus campos significam?
    • Quais características do dispositivo afetam o código?
    • Quais partes do datasheet um usuário do driver deve ficar atento?
    • Existe alguma outra documentação externa de interesse para o usuário?

Observações

Aplicar filtros passa baixa do chip, focando em frequência de 10Hz

Tarefas

  • Pesquisa e Leitura do Datasheet
  • Selecionar Features
  • Rascunho da Interface
  • Implementação
  • Documentação
  • Revisão
  • Teste
  • Finalização

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.