zenitheesc / Toradex

Rep for hardware development and studies using Toradex’s boards.
MIT License
0 stars 0 forks source link

Estudos e Desenvolvimentos com kits da Toradex #1

Open GUUDIN opened 2 years ago

GUUDIN commented 2 years ago

Os kits estão pegando poeira — e isso não é bom.

Atualmente no ~C2~ C1, um dos kits disponibilizados ao zenith pela própria Toradex estão sem uso e seria interessante que alguém começasse a pesquisar e brincar* com eles.

Essa é uma ótima oportunidade para aqueles que curtem ou querem saber mais sobre sistemas embarcados, estudando com o que tem de mais novo por aí. — Sério, aproveitem!

Deixo uns links aqui para quem quiser saber mais sobre a Toradex:

*Não queimem nada pfvvv :3

Grillo-0 commented 2 years ago

Na realidade um dos kits esta com o @artP2 e o outro esta na salinha do C1

alexsantee commented 2 years ago

Dei uma olhada rápida nos recursos de cada plaquinha que a gente tem. No geral elas tem recursos bem avançados de processamento e I/O, deve dar para fazer algo que exige mais recursos computacionais, só não sei se consome muito de energia.

No ecossistema da Toradex as plaquinhas são divididas na categoria de Módulos, que contém o processador, e de Carier Boards, que trazem uma interface para entrada/saída. No nosso caso a Colibri é um Módulo e a Viola e a Aster são Carier Boards.

A Colibri iMX7D 1GB V1.1 A tem dois processadores Cortex-A7 de 1 GHz e um Cortex-M4F de 200 MHz da NXP. Os Cortex-A7 são processadores com MMU e conseguem rodar sistemas operacionais mais complexos, não sei bem a vantagem do Cortex-M4. No site eles indicam que dá para deixar um processador dedicado para dado trabalho para ter mais garantia de tempo e performance. Fora o processador, ela também inclui 1GB de Ram e 4 GB de memória Flash MMC.

A Aster V1.1B é construída com o objetivo de facilitar prototipação, inclusive dá para usar certos Arduinos e Raspberries como "Módulos" e aproveitar as entradas/saídas da Aster. As tecnologias suportadas são: Ethernet 100 Mbps, USB 2.0 host/client, SDIO/SD/eMMC, 2 CAN, RGB, telas de toque capacitiva e resistiva, USB-Serial, 2 UART, I2C, SPI, 4 PWM, 39 GPIO, 4 entradas analógicas, entrada e saída de áudio e LEDs.

A Viola Plus V1.2B é bastante parecida com a Asper, mas tem o enfoque de ser colocada num produto final ao invés de ser útil em prototipação. Nosso modelo é o plus que inclui algumas interfaces extras, em particular chama a atenção o RTC, que permitiria ter timestamps nas medidas da sonda. As interfaces suportadas mesmo no modelo simples são: USB 2.0, Ethernet 100 Mbps, I2C, SPI, UART, PWM, GPIO, Saída analógica, SDIO/SD/MMC, CAN, RGB, telas touch resistivas e capacitivas. A plus traz ainda: USB client, "Extension Conector" (não sei o que é), conector de áudio, conector da fonte tipo "barrel", e RTC.

Em resumo o sistema computacional parece bastante poderoso, mas fico um pouco preocupado com o consumo de energia, já que numa sonda ela ficaria numa bateria. Talvez ela tenha alguma utilidade para algum processamento de dados mais complexo com os dados dos sensores ou talvez tarefas como compressão de vídeo para pegar sinal da GoPro ao longo do próprio voo. E, naturalmente, daria para rodar DOOM nas plaquinhas just for fun.

alexsantee commented 2 years ago

Uma outra ideia que pode ser mais útil é aplicar alguma coisa de visão computacional colocando uma câmera na sonda conectada a Toradex. O pudim deu a ideia de tentar transmitir a imagem por meio do 3G através da Toradex, imagino que ela seria capaz de tratar a compressão do vídeo sem muita dificuldade

alexsantee commented 2 years ago

No datasheet da Viola tem uns desenhos legais para localizar cada conector: https://docs.toradex.com/102879-colibri-arm-viola-carrier-board-datasheet.pdf?v=3#%5B%7B%22num%22%3A46%2C%22gen%22%3A0%7D%2C%7B%22name%22%3A%22XYZ%22%7D%2C82%2C765%2C0%5D.

Nela tem uma Parallel Camera Interface (CIF), que nem toda Colibri tem, mas a nossa iMX7D de 1GB suporta. No datasheet fala que o SoC tem uma interface MIPI/CSI-2, mas ela não é exposta no módulo e está indisponível. Os pinos da câmera estão Essa interface paralela tem os seguintes recursos:

A Viola tem uma interface de vídeo chamada UDI que é compatível com HDMI e DVI, porém foi padrão rapidamente substituído pelo DisplayPort e imagino que pode ser difícil achar recursos. Não suporta áudio. Na toradex serve apenas como saída de vídeo.

alexsantee commented 2 years ago

Consumo de energia: A placa parece consumir bastante energia, mas tem alguns modos que permitem reduzir isso. O que parece mais interessante é o modo LPSR que mantém alguns pinos de IO, mas consome bem pouca energia, permitindo inclusive desativar a DRAM. No datasheet não deixa claro quanta corrente ele continua consumindo, mas imagino que seja significativamente menor que 20 mA (60 mW) (DRAM costuma gastar bastante energia). Com ele seria possível alguma estratégia como capturar, comprimir e transmitir uma imagem a cada minuto ou algo do tipo, assim há um período bem curto de alto consumo e a durabilidade da bateria aumentaria. Com o consumo pessimista de 20 mA uma única bateria de 6800 mAh duraria cerca de 2 semanas, mas creio que pode ser bem mais (fazer medida de energia no LPSR).

Aparentemente todo o circuito opera em 3.3V (importante no cálculo da potência) Em operação comum o processador consome um máximo de 255 mA (841,5 mW) sob carga e 175 mA (577,5 mW) parado Quando sem tarefas ele entra no estado low-power idle que consome um pouco menos, 164 mA (541,2 mW). Nele a resposta a interrupção leva mais tempo O último estado low-power é o suspendido, que consome apenas 22 mA (72,6 mW). Nele o SoC desliga e a RAM entra em self-refresh, mas o tempo de sair do estado é mais alto (não achei quanto no datasheet) Para gasto mínimo tem o modo RTC only, que consome apenas 4 uA do RTC (13,2 uW). Aparentemente ele precisa de um reset externo para voltar desse estado então não parece muito prático Como extensão do RTC-only tem um estado chamado LPSR que permite usar ainda alguns pinos de IO. A RAM pode ficar em self-refresh ou desligada, mas o datasheet não dá informação de consumo O software pode solicitar o modo shutdown, que mantém a tensão na trilha principal mas desliga o processador. Pode ser reiniciado apenas por reset externo então não parece viável

Lista de pinos ativos no modo LPSR: https://docs.toradex.com/103125-colibri-arm-som-imx7-datasheet.pdf#%5B%7B%22num%22%3A52%2C%22gen%22%3A0%7D%2C%7B%22name%22%3A%22XYZ%22%7D%2C82%2C686%2C0%5D Sessão com os diferentes modos de energia https://docs.toradex.com/103125-colibri-arm-som-imx7-datasheet.pdf#%5B%7B%22num%22%3A96%2C%22gen%22%3A0%7D%2C%7B%22name%22%3A%22XYZ%22%7D%2C82%2C760%2C0%5D

alexsantee commented 2 years ago

Algumas ideias que discutimos hoje: A Toradex apresenta apenas um conector de câmera serial, mas através da interface USB também seria possível conectar. Teoricamente o próprio padrão USB permite o uso de HUB/multiplexação, então seria possível conectar mais de uma câmera por meio dessa técnica (verificar se funciona). Para conectar a Toradex no satélite o ideal seria ter uma carier board nossa no formato da stack. O GPS em software que estávamos analisando talvez já utilize todo o processamento de uma Colibri, então talvez seja necessário colocar duas colibris na mesma stack. Uma colibri seria responsável pelo GPS e a outra para gerenciar as câmeras e a comunicação. Também seria interessante ter o HUB USB na própria placa e talvez um conversor do protocolo da câmera para USB. Também ainda falta entender como configura o modo LPSR no lado do software para permitir operação em baixa potência.

alexsantee commented 2 years ago

Algumas ideias que discutimos hoje: A Toradex apresenta apenas um conector de câmera serial, mas através da interface USB também seria possível conectar. Teoricamente o próprio padrão USB permite o uso de HUB/multiplexação, então seria possível conectar mais de uma câmera por meio dessa técnica (verificar se funciona). Para conectar a Toradex no satélite o ideal seria ter uma carier board nossa no formato da stack. O GPS em software que estávamos analisando talvez já utilize todo o processamento de uma Colibri, então talvez seja necessário colocar duas colibris na mesma stack. Uma colibri seria responsável pelo GPS e a outra para gerenciar as câmeras e a comunicação. Também seria interessante ter o HUB USB na própria placa e talvez um conversor do protocolo da câmera para USB. Também ainda falta entender como configura o modo LPSR no lado do software para permitir operação em baixa potência.

alexsantee commented 2 years ago

Na ideia de colocar múltiplas câmeras no USB da Toradex:

A Colibri iMX7D apresenta uma porta USB host e uma USB OTG, que pode ser configurada como host ou client. Com isso deve ser possível conectar facilmente duas câmeras, mas para mais câmeras vai ser necessário um Hub USB. O Hub USB pode ser colocado na própria PCB com algum CI como o FE1.1S. Uma preocupação sobre conectar várias câmeras no mesmo hub é problemas com vazão, porque o modo High-Speed do USB 2.0 tem vazão máxima (teórica) de 480 Mbps, e um sinal de vídeo de webcam típico apresenta (640 largura)(480 altura)(24 bits por píxel)*(30 FPS)=~211 Mbps. Considerando vazão máxima de 80% da teórica, duas câmeras já seriam o suficiente para sobrecarregar o barramento. Estratégias para contornar esse problema podem ser reduzir a resolução/frame-rate, ativar uma câmera de cada vez, e ativar alguma compressão de vídeo (se houver).