Blog

ESP8266 - Compilando em C com o SDK Espressif no Eclipse/Linux

Autor: andre_luis • Categoria: Programação C/C++ • Postado em 01 Out 2017 13:39 • Visualizado: 3442x • 2 comentários

Estou disponibilizando o arquivo .OVA do VirtualBox com o snapshot de um ambiente de desenvolvimento em C++ com o Eclipse no Lubuntu:
https://drive.google.com/file/d/0B1Pk4ZxWGXeVQ2M1SDFOT3R6ZHM/view?usp=sharing ( Usuário: user / Senha: andre )

Imagem

Devido á um "bug" do syntax highlighter do Eclipse com codigo C++ de não reconhecer o tipo nativo uint8_t do GCC, não consegui remover esse Warning da IDE, mas que ficou presente apenas no Eclipse, sendo que na compilação do GCC não afetaou em nada. Nos foruns da área, cada um resolveu isso de um modo diferente, mas não quis perder tempo com isso.

Inicialmente utilizei como base o video do AMMAURO #3, que ensina detalhadamente todos os passos necessários para instalação do SDK da Espressif e toolchain de Xtensa para compilação em C para o microcontrolador ESP8266 ( o final do video anterior dele AMMAURO #2 também é util, mostrando como compartilhar arquivos entre Linux/Widows ):...

Ler mais »

Instalando KDE4 no Freebsd 11

Autor: norad58 • Categoria: Linux • Postado em 20 Nov 2016 14:15 • Visualizado: 1696x • 0 comentários

Para quem instalou o PCBSD, o ambiente gráfico já vinha instalado automaticamente, mas no caso do Freebsd, tem que instalar manualmente, pois o dvd de instalação somente instala o ambiente de texto.
Passo uma dica basica de como instalar o ambiente grafico no S.O. Freebsd 11, na internet tem várias dicas, mas algumas obsoletas ou com pouca explicação.
O usuario deve dominar no mínimo o ambiente Linux, Unix e seus comandos.
Montei e testei o procedimento abaixo nas versões 32 e 64 bits do Freebsd 11 em 03 máquinas e funcionou sem problemas, pode haver alguma diferença em outros sistemas.

Verificar:
1) O sistema operacional deve estar ativo e configurado, de preferencia com conexão internet funcional.
Deve estar configurado o usuario Root e um usuario comum, que será utilizado para entrar via ambiente gráfico do Kde.
O teclado que uso padrão brasileiro é o: PT_BR ISO8859_1 ou br275.iso.acc.kbd, deve ser configurado no ato de instalação do Freebsd para não ter problemas de uso no...

Ler mais »

Compilando o Kernel do Freebsd11

Autor: norad58 • Categoria: Linux • Postado em 20 Nov 2016 14:13 • Visualizado: 1563x • 0 comentários

Mais uma dica para quem quer modificar o kernel do sistema Freebsd 11 e compilar.
Lembrando que estas instruções são para usuarios que dominem o ambiente Linux/Unix.
Eu modifiquei, eliminei o que não era necessário e inclui algumas alterações no kernel conforme o hardware de minha máquina.
No final o Kernel, diminuiu de tamanho, de 25mb para 15mb e foi perceptivel o desempenho de minha máquina.
Efetuei a compilação em dois computadores, um instalado com a versão i386 e outro com a versão AMD64 do Freebsd 11.
Recomendo logar via Root e verificar o hardware do seu computador com o comando no terminal: #dmesg | more , o que for reconhecido pelo Freebsd será listado.
Pode acontecer de ter algum hardware não listado porque não foi incluido o modulo no Kernel ou o hardware ainda não está disponivel no sistema.
Durante a instalação do sistema Freebsd, antes de compilar o Kernel, tem que ser instalados os documentos, sources, compiladores, etc. Ou instalar posteriormente via PKG ou via Ports....

Ler mais »

Rotina eficiente para display de 7 segmentos ( mapeado em pinos do uC )

Autor: andre_luis • Categoria: Microchip PIC • Postado em 04 Ago 2016 10:00 • Visualizado: 1901x • 0 comentários

De um modo geral, sempre tentamos mapear os pinos de um display de 7 segmentos em uma porta do microcontrolador bit-a-bit na mesma sequencia do LSB ao MSB, de modo a espelhar o conteúdo do registrador/variável do programa sem necessidade de processamento adicional da CPU. Porém, há casos de projetos onde os pinos disponiveis estão dispersos em diferentes portas, e isso complica a programação.

Por exemplo, no caso do programa abaixo, onde os pinos foram mapeados da seguinte forma:

Code: Selecionar todos
#define DISP7_A       PIN_A7
#define DISP7_B       PIN_A6
#define DISP7_C       PIN_A5
#define DISP7_D       PIN_A4
#define DISP7_E       PIN_B3
#define DISP7_F       PIN_B4
#define DISP7_G       PIN_C6

O primeiro impulso foi implementar algo do tipo:

cpp code
void Display7seg ( char number )
{
switch(number)
{
case 0 : // escreve caracter "0" do display de 7 segmentos
output_HIGH(DISP7_A);...

Ler mais »

Instalação do driver USB p/ SAMSUNG no Windows

Autor: andre_luis • Categoria: Embarcados • Postado em 13 Jul 2015 22:10 • Visualizado: 1753x • 0 comentários

Após muito apanhar com o erro "NO USB DEVICE" no Android Studio, e procurar em tudo que é websites por soluções mirabolantes, encontrei um programa que faz isso de modo automatico;

SAMSUNG_USB_Driver_for_Mobile_Phones.zip

Também disponível aqui na área de downloads do ASM51 (\downloads\celulares\SAMSUNG):

https://server2.asm51.com.br/downloads/

Fica a dica...

Ler mais »

Medindo Distâncias com Ultrasom (US)

Autor: MOR_AL • Categoria: Eletrônica geral • Postado em 01 Ago 2014 19:07 • Visualizado: 1876x • 0 comentários

Este tópico visa a medição de distância, utilizando-se o ultrasom (US).
O ultrasom percorre o ar em determinada velocidade. Esta velocidade não é fixa, ela varia com a temperatura do ar ambiente. A expressão resultante não é linear. Ela foi inicialmente aproximada pela raiz de uma razão. Esta aproximação é aceitável dentro de limites. Estes limites se encontram fora das temperaturas ambientes normais. Ainda considerando-se essa não linearidade, a expressão anterior, com raiz de razão, foi aproximada por uma equação linear. Tal equação é mais apropriada para sua utilização em microcontroladores (uC).
O uso desta equação em microcontroladores (uC) exige que se utilize variáveis do tipo ponto flutuante (PF). Operações com PF exigem muito mais memória do que operações com variáveis inteiras. O trabalho a seguir contém um pouco de teoria, com o objetivo de se chegar à expressão da distância percorrida pela onda de US.
A expressão da distância (h) obtida é função da velocidade da onda de US, em m/s, da temperatura ambiente (Ta), em ºC e do período, em s, que a onda de US percorreu o trajeto (para ir e retornar)....

Ler mais »

Título: EdSim51 display de 7(8) seguimentos

Autor: ahwelp • Categoria: 8051 • Postado em 04 Jul 2014 20:03 • Visualizado: 2251x • 2 comentários

O EdSim51 é um simulador com alguns periféricos já acoplados, nesse tópico vou falar sobre o display de 7(8) seguimentos.
Imagem

1. Selecionando o display

O EdSim52 disponibiliza 4 displays de 7(8) segmentos, o controle de qual display vamos utilizar é feito pelo P3 nas posições 3 e 4. O P3 armazena 8bits de informação, então falando nas posições 3 e 4 significa que em P3 é armazenado valores como "10101010" ou "11100111", cada bit tem alguma função para o controle dos periféricos.

Imagem

Representação do P3

Nesse caso os bits são o 3 e 4 11111111, com esses 2 bits para controle temos 4 possibilidades 00, 01, 10 e 11.
11 para o primeiro display...

Ler mais »

Dimensionamento de transformadores p/ Estabilizador monofasicos topologia série

Autor: andre_luis • Categoria: Eletrônica geral • Postado em 21 Jun 2014 09:05 • Visualizado: 2862x • 2 comentários

O presente artigo destina-se á orientar no calculo dos transformadores utilizados em estabilizadores monofasicos que empregam a topologia série. Esse modelo inclusive é pouco utilizado em baixa potencia, pois o sistema de controle dos dispositivos de comutação é mais complexo, porém para altas potencias, onde o peso de um transformador convencional ( multi-derivações ) seria proibitivo, além do fato de que se alcança uma melhor resolução na saída se comparado ao modelo original.

Um caso de estudo será um estabilizador projetado para lidar com uma variação de ( ±15% ) com uma resolução de 1%. Uma ilustração do circuito é apresentada abaixo, de onde podemos inicialmente notar a presença de 4 transformadores:

Imagem

Basicamente, é realizado uma soma ou subtração da tensão por uma lógica binária, conforme abaixo:

Imagem...

Ler mais »

Inversor senoidal monofásico 110Vac/60Hz/1KVA com PIC16F877A

Autor: andre_luis • Categoria: Microchip PIC • Postado em 19 Jun 2014 22:06 • Visualizado: 4275x • 0 comentários

A seguir, será apresentado o projeto de um inversor senoidal desenvolvido originalmente como um No-break, entretanto com as funcionalidades relacionadas ao sincronismo da comutação rede-inversor ainda não estão operacionais no firmware, o projeto será apresentado compativel como inversor.
Para geração da senoide foi utilizado o seguinte arquivo em EXCEL, que gera os valores da tabela em função dos valores inseridos:

Imagem
Download: http://teprom.eng.br/arquivos/Inversor/seno.zip

A cada interrupção do Timer, é recarregado o valor do Duty-cycle ( calculado na tabela acima ). No total, foram 32 amostras por ¼ de ciclo da senoide. Sempre que atingir os limites de 0o e 90o da senoide, as funções NivelMinimo()...

Ler mais »

MINI2440 + USB BARCODE READER não mapeia /dev/event0 /dev/event1

Autor: Rodrigo_P_A • Categoria: Linux • Postado em 25 Mai 2014 22:06 • Visualizado: 2225x • 0 comentários

Me deparei com um problema, tenho uma placa linux que eu fiz, que o leitor de código de barras funciona.

já em uma mini2440 com kernel 2.32 não funcionava, ele só mapeava o dispositivo em /dev/event0 enquanto que o certo é mapear em /dev/event1 ... não vou entrar em maiores detalhes, em resumo, o leitor lia um código e travava, e eu não consegui ler o código em minha aplicação pois por padrão você tem que abrir o /dev/event1

Depois de quebrar um pouco a cabeça, peguei o VID e o PID e busquei no arquivo fonte do kernel na pasta: /drivers/hid/hid-ids.h

VID/PID do meu BARCODEREADER: 1130 0001

encontrei o VID no arquivo hid-ids.h na linha 390 assim:

cpp code

#define USB_VENDOR_ID_TENX		0x1130
#define USB_DEVICE_ID_TENX_IBUDDY1 0x0001
#define USB_DEVICE_ID_TENX_IBUDDY2 0x0002


Depois abri o arquivo: /drivers/hid/hid-core.c
e encontrei isso:

cpp code
/* a list of devices that shouldn't be handled by HID core at all */
static const struct hid_device_id...

Ler mais »

x