Hackeando o Osciloscópio DSO150 com STM32 Deixe um comentário

Em dois tutoriais passados, “STM32 com IDE Arduino” e “Como programar STM32 em C”, demos uma introdução ao mundo do STM32 e mostramos como é trabalhar com ferramentas da STMicroelectronics. Com este tutorial iremos fechar essa parte introdutória sobre STM32 mostrando o produto Osciloscópio DSO150 baseado no STM32 e como pode ser feito um upgrade de firmware e programação do mesmo. Para realizar os passos deste tutorial é necessário estudar e entender nossos tutoriais anteriores sobre STM32.

Lembrando que a garantia do produto é anulada caso os passos deste tutorial sejam feitos em seu osciloscópio. Não nos responsabilizamos caso o produto apresente mau funcionamento após a realização deste tutorial. Não indicado para iniciantes em eletrônica e programação.

Osciloscópio DSO150 com STM32

O funcionamento do Osciloscópio DSO150 é muito parecido com o DSO138 e sobre este temos um tutorial mostrando cada detalhe do seu funcionamento. O tutorial é válido também para o DSO150 pois o que muda é basicamente a construção e estrutura do produto, e disposição de botões.

Olhando internamente no osciloscópio podemos ver que o processador usado é um STM32F103.

Microcontrolador STM32

Ao processador estão conectados um display TFT com controlador ILI9341, alguns botões e também um encoder dentre outros componentes.

Osciloscópio DSO150 com STM32

No artigo “STM32 com IDE Arduino” citamos o uso da interface SWD(Serial Wire Debug) para gravar o programa na placa Blue Pill e no artigo “Como programar STM32 em C” fizemos uso da mesma interface para fazer o debug do código. Olhando as indicações presentes na placa do Osciloscópio podemos notar que o mesmo também possui a interface SWD, ou seja, podemos utilizar essa interface para gravação de código.

Interface SWD

Firmware Open Source para DSO150

No GitHub sempre encontramos projetos super interessantes. Dentre eles encontramos um firmware open source para o Osciloscópio DSO150 feito pelo desenvolvedor Michael. Esse firmware adiciona várias funções extras ao DSO150 como sobreposição de informações no display, marcadores e outras.

O link para o repositório do projeto está abaixo e contém informações necessárias para colocar o projeto em funcionamento no DSO150.

https://github.com/michar71/Open-DSO-150

Baixe o repositório do projeto e abra o arquivo no TrueStudio.

Compilando e carregando o código no DSO150

Conecte o gravador/debugger no DSO150 através da interface SWD de acordo com o esquema abaixo.

Conexão gravador ST-link

Com o projeto aberto no TrueStudio clique no botão build para compilação e verifique se não há erros.

Compilar projeto

Para carregar o código no osciloscópio é possível utilizar o STM32CubeProgrammer (que já vimos no post anterior) ou clicar no botão de debug e logo em seguida finalizar o debug. Assim o osciloscópio irá resetar e iniciar o programa.

Debug do projeto

Customizando o código

Agora que temos um código completo open source do osciloscópio podemos explorá-lo e modificá-lo da forma que quisermos ou até mesmo desenvolver um programa do zero. As possibilidades são muitas e vai da criatividade de cada um. Agora o osciloscópio pode ser usado até mesmo como uma placa de desenvolvimento e aprendizado de STM32 com diversos componentes como encoder, botões, display TFT, GPIOs e etc.

Eu explorei um pouco o código e decidi fazer duas pequenas modificações. Adicionar uma imagem antes da inicialização do osciloscópio e colocar o texto “FILIPEFLOP” na tela onde é mostrado algumas informações técnicas.

Texto filipeflop

Para mudar esse texto procurei em todo workspace pela string “C++ DSO-150” que é o texto que aparece originalmente. Essa string se encontra no arquivo global.h em um define.

#define FIRMWARE_TARGET "C++ DSO-150"

Esse define então é usado lá no arquivo display.cpp dentro da função void banner() na linha abaixo:

tft_print((char*)FIRMWARE_TARGET);

Basta apenas mudar “C++ DSO-150” para “FILIPEFLOP” ou o texto que você desejar.

Tela hacked

Para exibir a imagem de um hacker eu busquei uma imagem na internet, editei para o tamanho 200x200px e utilizei a ferramenta LittleVGL Image to C Array para converter a imagem em um array de bytes.

No arquivo display.cpp, copiei os bytes e organizei numa constante da seguinte forma resumida:

const uint8_t myImage[] PROGMEM = {
    0x00, 0x00 <continua sequencia de bytes>
};

O vetor completo pode ser encontrado no GithubGist.

E ainda no arquivo display.cpp na função void initDisplay() utilizei a função tft_drawBitmap() para exibir a imagem.

tft_drawBitmap(60, 30, myImage, 200, 200, ILI9341_WHITE);

Conclusão

Com este artigo finalizamos esta série inicial sobre STM32. Mostramos no primeiro artigo como utilizar a placa Blue Pill com IDE Arduino e alguns pontos principais sobre STM32. Depois mostramos como utilizar as ferramentas da STMicroelectronics que são usadas para trabalhar com STM32. FInalmente neste artigo foi mostrado o produto Osciloscópio DSO150 que utiliza STM32 e como fazer sua programação.

Caso queira voltar o firmware origianal, basta baixar o arquivo HEX no site do fabricante no seguinte link: https://jyetech.com/Products/LcdScope/Firmwares_150.php, e gravar utilizando o STM32CubeProgrammer.

Gostou de explorar o Osciloscópio DSO150 com STM32? Ajude-nos a melhorar o blog comentando abaixo sobre este tutorial. Não se esqueça de visitar o Fórum da Filipeflop!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

{"cart_token":"","hash":"","cart_data":""}