O Projeto de Firmware e de Hardware na IoT

A integração de tecnologias para gerar um resultado é uma estratégia comum: toma-se um determinado hardware sensor/atuador, um determinado gateway concentrador, uma determinada plataforma de dados cloud, um determinado aplicativo de dashboard e boom, habemus IoT.

 

Mas como se fazia IoT antes da IoT? E como será feita IoT após a IoT?

 

O que eu quero dizer com isso é que existem problemas e trabalhos que sempre são necessários e fundamentais, mas que são menos visíveis por conta de envolverem tarefas mais próximas à aplicação de engenharia.

 

Uma dessas atividades é o projeto de Firmware, onde a programação é fundamentalmente feita em C.

 

Outra atividade, anterior mesmo à programação, é o projeto do hardware que se tornará o produto final.

 

Neste artigo coloco a minha visão a respeito desses dois tópicos, com ênfase no projeto de hardware que, além de haver demanda no mercado por projetistas de hardware, esse também é tema de um conjunto de cursos ministrados no LiceuTech, uma entidade que está desempenhando um esforço desbravador para nos proporcionar acesso a informações técnica com foco em aplicações reais e emergentes.

 

 

Origem da IoT

 

 

IoT (Internet of Things) começou no início dos anos 1990, sendo o marco histórico uma pesquisa publicada sob o título “The Computer for the 21st Century”, feita por Mark Weiser, cientista chefe (1988) e diretor de tecnologia (1996) da Xerox PARC.

 

Logo no início desse artigo, o autor colocou uma frase que na época era algo relativamente difícil de ser imaginado, mas que agora nós conseguimos entender perfeitamente. Veja:

“Elementos especializados de hardware e de software, conectados por  fios, ondas de rádio e infravermelho, serão tão ubíquos que ninguém perceberá a sua presença”.

Esse termo “ubíquo” foi o primeiro nome da IoT.

 

Ubiquidade significa parecer onipresente, algo que parece estar sempre disponível.

 

A base daquilo que se tornaria a IoT foi, então, definida como sendo uma rede de dispositivos, com capacidade de processamento, que estivessem dispersos nos vários ambientes em que vivemos, de forma que sequer os notaríamos.

 

Por exemplo, não damos importância alguma às paredes: elas existem em inúmeros lugares, cumprem a sua função e na nossa vida nós nem paramos para pensar nelas (a não ser durante uma reforma, talvez...).

 

Um desktop era algo sem dúvida alguma notável antigamente. Um celular hoje em dia é algo “invisível”. Ambos cumprem funções semelhantes, mas o segundo se tornou comum, portátil, acessível, simples de usar e, com isso, ficou “transparente”.

 

Evidentemente, para tudo isso se tornar realidade haviam alguns requisitos:

  • Infra-estrutura de redes (suportando alta velocidade, redes cabeadas e redes wireless);
  • Baterias menores em tamanho e com maior capacidade de corrente;
  • Microcontroladores e Microprocessadores com maior poder de processamento (na época tínhamos um 8051 a 12 MHz, hoje é comum um Cortex-M4F a 120MHz, futuramente redes neurais artificiais se tornarão um periférico embarcado no chip e teremos uma API para treiná-las e usá-las no reconhecimento de padrões).
  • Redução no consumo de energia (algo que atualmente está ao alcance de todos por meio de estratégias como uso dos diferentes modos de energia, interrupções para “acordar” o sistema na ocorrência de eventos importantes e chaveamento de linhas de alimentação de periféricos).

 

Na época desse artigo, esses requisitos eram difíceis de serem atendidos, mas do início dos anos 2000 para cá tudo isso se tornou realidade e o termo “ubiquidade” foi substituído por um nome mais compreensível: Internet das Coisas (Internet of Things – IoT).

 

 

Para que serve a IoT?

 

 

Em essência, para resolver problemas ainda sem solução pronta ou para os quais as soluções existentes não são viáveis.

 

Futuramente, a IoT será um meio para conhecermos mais a respeito não só de nós mesmos, mas também (se não principalmente) para sabermos mais a respeito dos ambientes em que vivemos e objetos que usamos: como eles são usados, o estado de funcionamento das estruturas e máquinas das quais dependemos, usos indevidos e segurança patrimonial.

 

Ao conhecer o comportamento típico de alguma coisa, torna-se possível detectar anomalias e promover ações corretivas, ainda no início das exceções.

 

Conforme a base de conhecimento aumenta, aquilo que inicialmente acreditávamos ser exceções pode se mostrar como uma consequência lógica a certos eventos e, a partir disso, torna-se possível a manutenção preditiva.

 

Para trilhar o caminho da manutenção Preventiva para a Corretiva e a Preditiva é necessário entender como as coisas funcionam, entender o seu comportamento ao longo do tempo e, para isso, inúmeros dispositivos de hardware ainda serão desenvolvidos, milhões de linhas de código serão escritas (arrisco dizer que boa parte em C) e Petabytes de dados serão armazenados e analisados na nuvem.

 

 

 

Problemas relacionados a IoT

 

 

O primeiro, e talvez principal, problema relacionado à IoT é a visão de que ela é barata.

 

Isso faz parte da visão comum e é parcialmente verdade, pois, às vezes, um produto barato é resultado de um grande investimento anterior, em pesquisa e desenvolvimento.

 

Preços em IoT dependem de vários fatores, tais como:

  • Desenvolvimento: os custos com desenvolvimento são relativamente altos (custos com equipes, instrumentos, local de trabalho, licenças de software, protótipos, estudos, provas de conceitos, depuração, desenvolvimento de ferramentas e demais atividades de projeto).
  • Arquitetura: uma série de decisões afetará o seu produto/serviço de IoT, tais como quais elementos farão parte do seu produto? Quais elementos serão de terceiros e quais serão seus? O que você irá adquirir na forma de produto e o que serão serviços contratados?
  • Modelo de negócio: quais serão as empresas parceiras? Como será a divulgação? Você irá vender a sua solução como sendo um produto ou um serviço? Como será a tarifação dos seus serviços?
  • Escalabilidade: sua equipe de desenvolvimento consegue atender altas demandas? A equipe de vendas está pronta para prospecções agressivas? O suporte adequa-se rapidamente a novas features do produto? As chamadas ao suporte superam a capacidade de atendimento? O produto possui ferramentas de auto-diagnóstico?

 

Se você estiver se posicionando no mercado de IoT como um provedor de soluções, como uma empresa, é importante ter em mente que todos estes aspectos afetam o preço e o sucesso, tanto dos projetos como do produto (ou do serviço) final. Estes aspectos precisam ser ponderados com cuidado por você e, sempre que possível, consulte profissionais de sua confiança que possam compartilhar a experiência deles com você. Trace o seu planejamento com base nisso tudo.

 

Por outro lado, caso você quer atuar como um especialista, é enorme a diversidade de áreas envolvidas. Recomendo que você pesquise sobre cada uma, tente exercitar um pouco de cada e descubra qual delas se adéqua melhor a você. Pois é verdadeira esta máxima: faça o que você gosta, para não acabar trabalhando!

 

 

E o desenvolvimento? Como fica?

 

 

Se você me permite, aqui eu coloco o meu ponto de vista pessoal, baseado na minha experiência profissional, pois acho que neste caso esta é a melhor contribuição que posso te dar para você formar a sua visão a respeito da importância do desenvolvimento.

 

Sempre trabalhei com desenvolvimento e, por conta disso, não vejo como dissociar o projeto de sistemas da criação de novos produtos (ou de novos serviços) tecnológicos.

 

Há, sem dúvida, enorme necessidade de pessoas que façam integração de tecnologias, mas a criação de soluções é diretamente dependente do desenvolvimento de sistemas (e, por conta dessa necessidade de proporcionar novas soluções e de resolver novos problemas, estão surgindo diversas startups, resultado de quem sonhou, acreditou e se empenhou por desenvolver uma ideia).

 

Com o passar do tempo, o foco das atividades de desenvolvimento inevitavelmente muda. No desenvolvimento de hardware, por exemplo, já houve um foco importante em sistemas analógicos. Esse foco diminuiu conforme surgiram circuitos integrados analógicos com interfaces digitais para leitura dos dados. Em um futuro próximo acredito que surgirá um foco importante em Inteligência Artificial e Estatística, com a evolução dos microcontroladores e microprocessadores. Mas, de qualquer forma, cada queda de paradigma é sucedida por um novo paradigma que, em algum nível, continua dependente de parte do “conhecimento legado” (o conhecimento não vira “lixo” de uma hora para outra).

 

Ilustro isso com uma visão histórica: desde início dos anos 1990 eu participo de projetos de sistemas de informação que, em diferentes proporções, envolveram:

  • Projeto de hardware sensor, para coleta automatizada de dados;
  • Projeto de hardware atuador, para proporcionar controle e operação de processos físico-químicos;
  • Firmware embarcado para ler entradas, gerar caches de dados, excluir dados anômalos, detectar falhas de funcionamento, gerar alarmes e se comunicar com sistemas externos;
  • Concentradores de dados (geralmente o firmware desses concentradores), que faziam a ponte entre os endpoints e bancos de dados;
  • Configuração e teste dos servidores que rodavam os bancos de dados e demais aplicativos de interesse.;
  • Desenvolvimento de aplicativos que proporcionassem ao usuário as visões, alarmes e sugestões de ação pertinentes ao contexto.

 

Isto tudo já recebeu vários nomes. Já foi chamado de Eletrônica para Automação Industrial, Programação, Informática, Processamento de Dados, Análise de Sistemas, Engenharia de Conhecimento, Modelo Cliente-Servidor, Administração de Bancos de Dados, Criação de Front-End, Desenvolvimento de Sistemas Embarcados e, recentemente, faz parte do Desenvolvimento em IoT.

 

Por conta disso tudo, eu vejo como sendo um movimento natural do mercado a mudança de terminologia e mudança de enfoque, mas, independentemente disso, para que surjam novas soluções alguém precisará desenvolvê-las.

 

Há mais de 20 anos venho trabalhando com desenvolvimento e tenho plena convicção de que agora, não só em função do contexto político-econômico do nosso país, mas por conta de todo investimento sendo feito por inúmeras empresas ao longo do mundo, estamos vivendo um excelente momento para desenvolver sistemas, há uma grande demanda reprimida por desenvolvedores de hardware e de firmware e o mercado irá absorver com facilidade recursos que tenham a finalidade de melhorar a vida das pessoas e de melhorar a administração física dos negócios.

 

 

 

Desenvolvimento de Firmware e Linguagem C

 

 

Aqui eu preciso começar com uma advertência: opinião é o artigo mais barato do mundo, pois você não a pede, a recebe de graça e ela pode te desviar do seu caminho!

 

Ouvi outro dia um colega expressar a seguinte opinião “Vocês usam Linguagem C? Que coisa mais retrógrada!”. Senti profunda tristeza ao ouvir isso, pois percebi que, sobretudo, ele estava tão condicionado a certas ideias e opiniões que não entenderia a minha explicação sobre porque ele estava equivocado...

 

Se você estiver usando microprocessadores e possuir um sistema operacional, o seu leque de possibilidades quanto a linguagens de programação será relativamente grande e você poderá optar por algo além da linguagem C. Mas quando você desenvolve um sistema microcontrolado, de baixo custo, focado em um nicho de mercado e a sua programação envolve no máximo um RTOS (sejamos sinceros: muitas vezes não), você usará o padrão de mercado, que é a programação em C!

 

Usamos C com microcontroladores por conta de ser uma linguagem eficiente, amplamente testada, e por possuir tanto características de baixo nível (podemos facilmente manipular bits de registradores, por exemplo) como de alto nível (conforme você amplia as suas bibliotecas HAL – Hardware Abstraction Layer – e as suas APIs – Application Programming Interfaces – o desenvolvimento de novas aplicações tende a ficar mais simples e mais próximo da regra de negócio do seu cliente).

 

Mas o que seria “saber linguagem C”?

 

O meu ponto de vista é simples: dominar ponteiros e estruturas!

  • Saber o que são ponteiros;
  • Saber o que são structs e union;
  • Ponteiros para estruturas;
  • Ponteiros para Unions;
  • Ponteiros para Ponteiros; e
  • Ponteiros para Funções.

 

Alguém pode perguntar: mas o importante não é a lógica? Não é a tomada de decisão?

 

A minha resposta é: você irá tomar decisões com base no que? Em dados, certo? E esses dados precisam representar um conhecimento sobre um processo, certo? Então, antes de ser projetada a lógica, você precisará:

  • Determinar quais dados do ambiente são importantes e precisam ser coletados;
  • Em que formato eles estarão ao ser coletados;
  • Que transformações você irá realizar sobre eles para adequá-los às operações que serão feitas posteriormente, no restante do programa;
  • E, por fim, as estruturas de dados que efetivamente serão usadas para representar esses dados, na RAM.

 

Uma vez que você possua as estruturas definidas, você terá uma segunda categoria de problema a resolver: alocação de memória e compartilhamento de dados entre funções.

 

Sistemas microcontrolados possuem pouca RAM, alguns kbytes. Por conta disso costumo usar alocação estática (uso arrays unidimensionais como cache de dados) e compartilho esses arrays entre as diversas funções necessitam desses dados, por meio de ponteiros.

 

Eventualmente, ao construir uma biblioteca, eu caio na situação dessa biblioteca precisar notificar o restante do programa a respeito de algum evento, mas essa notificação ser opcional.

 

Para materializar isso, preciso criar o suporte a callbacks (chamadas a funções externas à minha biblioteca, quando ocorrerem eventos de interesse).

 

Eu implemento esse suporte a callbacks com ponteiros para função.

 

Por fim, deixo uma forte recomendação de que você estude e faça muitos exercícios com ponteiros, pois isso facilitará tremendamente o seu trabalho de desenvolvimento, conforme você adquirir proficiência no assunto.

 

A título de curiosidade, experimente compilar e executar o programa abaixo e analise o resultado, apresentado mais adiante:

 

Obtive o resultado abaixo implementando o programa acima no Dev-C++:

 

Desenvolvimento de Hardware e Autodesk Eagle

 

 

O sucesso no desenvolvimento de hardware depende, em parte, de variáveis específicas a esta tarefa, tais como custos de componentes, tamanho do circuito, consumo, logística de fornecimento, processo de montagem, logística de distribuição, dissipação de calor, ... enfim, aspectos físicos, elétricos e comerciais relacionados a projeto e fabricação de hardware.

 

Mas abstraindo esses aspectos particulares, o desenvolvimento de hardware depende da reutilização de circuitos tanto quanto o desenvolvimento de firmware depende da reutilização de código.

 

Para você ter uma ideia, os grandes componentes de uma solução de hardware são:

  • Fonte (buck, boost, buck-boost, linear e combinações destas arquiteturas);
  • Processador (geralmente um microcontrolador Cortex-M);
  • Interfaces de comunicação wireless (Bluetooth, Wi-Fi, LoRa...);
  • Interfaces de comunicação wired (USB, UART, RS232, RS485...);
  • Sensores com saída analógica (que exigem condicionamento de sinal e conversores A/D);
  • Sensores com saída digital (tipicamente I2C e SPI);
  • Entradas analógicas (4-20mA, 0-5V);
  • Saídas digitais;
  • Circuitos de proteção (fusíveis, varistores, diodos TVS, optoacopladores, filtros,...).

 

Ter esta visão é útil, mas para que você chegue ao produto final você deverá materializá-la em bibliotecas de hardware (esquemas e layouts) criadas com uma ferramenta de projeto.

 

Existem várias ferramentas de projeto, mas o Autodesk Eagle se destaca, na minha opinião, pela facilidade com que ele gera resultados (esquemas elétricos, layout, BOM e arquivos gerber): a curva de aprendizado é curta e o domínio da ferramenta depende, em essência, da prática!

 

Com base nisso, na demanda do mercado por profissionais com conhecimento em desenho de circuitos e na iniciativa do LiceuTech em proporcionar ao grande público uma formação profissional rápida, por meio de cursos especializados, nós criamos três cursos para proporcionar a experiência de projeto de hardware aos alunos:

 

Curso PCB 1: Esquema Elétrico no Autodesk Eagle

 

Este curso mantém o foco no desenho de esquemas, envolvendo:

  • Desenho de sub-circuitos de sistemas
  • Padronização tamanhos de caracteres e demais recursos visuais
  • Adição de informações complementar, como links, número de revisão, comentários e partnumbers
  • Produção de arquivos BOM (Bill of Material)

 

 

Curso PCB 2: Layout de Placas no Autodesk Eagle

 

Este curso mantém o foco no layout de placas, envolvendo:

  • Dimensionamento da placa e distribuição de componentes por sub-circuito
  • Revisão de posição de componentes segundo requisitos mecânicos
  • Interligação de componentes, criando efetivamente os sub-circuitos e planos de terra
  • Adição de logotipos e demais marcas de silk-screen
  • Produção dos arquivos GERBER, para fabricação.

 

Curso PCB 3: Desenho de Componentes no Autodesk Eagle

 

Frequentemente precisamos desenhar o footprint e o símbolo de novos componentes. Este curso ensina como fazer isso por meio de:

  • Análise de desenhos mecânicos provenientes de datasheets de componentes
  • Organização de novos componentes em bibliotecas reutilizáveis
  • Acesso a sites de venda de componentes para verificar estoque, prazos, custos e datasheets (aspectos importantes na escolha de componentes)
  • Alteração de partnumbers em projetos prontos, para gerar novos BOMs
  • Desenho de footprints e de símbolos de novos componentes
  • Tratamento do impacto de alterações de componentes (tanto no esquema e como no layout)

 

Em todos estes três cursos, as grandes atividades citadas dividem-se em atividades menores e o aprendizado ocorre por meio de EXERCÍCIOS PRÁTICOS, que reproduzem a realidade do dia-a-dia no trabalho real.

 

LiceuTech: www.liceutech.com.br

 

 

Exemplos de Projetos de Hardware

 

 

A seguir você verá uma série de trechos de esquemas elétricos, layout e fotos de projetos de hardware que realizei nos últimos anos:

 

 

 

 

 

 

Considerações finais

 

 

Espero que este artigo tenha proporcionado a você visão e motivação para embarcar nesta área extraordinária que é a IoT. Será um prazer te receber no LiceuTech, iniciarmos os estudos e, muito provavelmente em breve, atuarmos em conjunto no desenvolvimento de sistemas (hardware e firmware, hein!).

 

 

Sobre o Liceu

 

O Liceu de Artes e Ofícios de São Paulo é uma instituição de ensino privado, sem fins lucrativos e filantrópica. Fundado em 1873, o Liceu tornou-se referência na cidade de São Paulo como uma escola de ensino técnico profissionalizante e de formação geral. Mantido por recursos advindos da LAO Indústria Ltda, empresa líder no mercado nacional de hidrômetros e medidores de gás, o Liceu conta com profissionais altamente qualificados o que garante sua excelência em qualidade. O Liceu sempre esteve aliado ao seu tempo, formando profissionais de acordo com as necessidades de cada momento de nossa sociedade. Hoje, o Liceu que oferece cursos de Ensino Médio, Ensino Médio Integrado ao Técnico e Ensino Técnico Concomitante ao médio (filantrópico).

 

A qualidade de ensino do Liceu é comprovada pelo desempenho de seus alunos. Hoje somos a 1ª. Escola de Ensino Técnico do Brasil e estamos posicionados entre as 4 melhores escolas de São Paulo pelo ranking do ENEM.

 

A mesma qualidade, cuidado, competência e profissionalismo estarão presentes nos cursos de especialização do Liceu Tech.”

 

(*) este post foi patrocinado pelo Liceu Tech

NEWSLETTER

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Wagner Augusto Pires Coimbra
Arquiteto de Sistemas Embarcados na Logicalis BrasilAtuo no mercado de engenharia de software e de hardware desde 1993, com ênfase em IoT nos últimos 10 anos, projetando hardware e desenvolvendo firmware em C para microcontroladores ARM Cortex-M.Iniciei minha carreira no Curso Técnico em Eletrônica para Automação Industrial na Escola SENAI "Anchieta", em 1989. Graduei-me Tecnólogo em Processamento de Dados pela FATEC-SP em 2000, cursei Mestrado em Inteligência Artificial na USP em 2005 e Mestrado em Automação e Controle do Instituto Federal de São Paulo em 2014.De 2005 a 2016 lecionei, tanto presencialmente como à distância (com plataforma Moodle/Wordpress), disciplinas sobre engenharia de sistemas embarcados, destacando-se Robótica, Desenho Técnico Mecânico, Programação C/C++ e Projetos de Sistemas Embarcados com 8051 e PIC na rede SENAI; Programação em C para MSP430 e ARM Cortex-M, Programação C++ em Linux Embarcado com ARM Cortex-A pela TechTraininG e Programação Orientada a Objetos no Desenvolvimento de Sistemas Cliente-Servidor com Delphi e Oracle na antiga Faculdade Leonardo Davinci.De 2017 até o momento, estou diretamente envolvido com o desenvolvimento de uma plataforma de IoT dentro da Logicalis Brasil, chamada Eugenio, e estou particularmente interessado e envolvido com os seguintes assuntos: IoT, Projeto de Hardware, Projeto e Desenvolvimento de Firmware, C/C++, Redes Neurais, Estatística, Big Data e Desenvolvimento para Android e iOS.

10
Deixe um comentário

avatar
 
7 Comment threads
3 Thread replies
7 Followers
 
Most reacted comment
Hottest comment thread
8 Comment authors
jose marquesJúlio Cézar GoulartRenato MachadoMario C G MouraWagner Augusto Pires Coimbra Recent comment authors
  Notificações  
recentes antigos mais votados
Notificar
jose marques
Visitante
jose marques

ola Wagner

muito util e ilustrativo o artigo.
Eu tenho criado alguns dispositivos ( sensor de temperatura, gases, etc) com IOT e penso em comercializa-los. Minha grande duvida: acredito que ser vender 100 ou 200 destes dispositivos estara otimo...mas que servidor Mqtt usar ?? existe algum free? ou para esta quantidade de dispositivos ( que recolherao os dados e graficos..etc...) somente com um servidor pago ( por servidor quero dizer Blynk, losant, thinkspead, virtuino, azure, etc)..

estou bem "perdido" nesta questao.
acredito que muitos pequenos empreendedores teem esta duvida, seria otimo um artigo sobre isto.

abs
marques

Júlio Cézar Goulart
Visitante
Júlio

Olá Wagner, parabéns pela iniciativa.
Sou desenvolvedor em uma empresa e precisamos de terceirizar algumas partes do nossos códigos na parte de IoT, se for de seu interesse por favor entre em contato.

Renato Machado
Visitante
Renato Machado

Parabéns pelo Artigo prof. Wagner. Com certeza vai ajudar a inspirar muita gente a entrar para essa nova onda do IoT. Tive o privilégio de trabalhar contigo no SENAI Anchieta e sei o quão profissional és. Boa sorte e sucesso!

Mario C G Moura
Visitante
Mário Moura

Bom dia....
Primeiramente, parabéns pelo artigo. Permita-me fazer uma observação:
O valor de 1 Pbyte em bytes é 1.125.899.906.842.644, e não 1.000.000.000.000.000 bytes, como o artigo induz a pensar.
Chegamos a esse número "astronômico" elevando 1024 a 5a potência.

Alfonso Favoretti Fonseca
Visitante
Alfonso Favoretti Fonseca

Equipe Embarcados, parabéns pelo excelente artigo motivador aos jovens profissionais e pela descrição do que se espera de um profissional, habilidades e conhecimentos. Tudo ilustrado com dicas e slides práticos, muito pé no chão. Fico feliz com esse tipo de mentalidade tecnológica no Brasil.

Wagner Augusto Pires Coimbra
Visitante
Wagner Coimbra

Alfonsoff

Muito obrigado! O artigo está passando por revisões finais (eu criei um perfil no Embarcados há alguns instantes e amanhã meu nome deverá constar como o autor), mas desde já queria te agradecer e me colocar à disposição para conversarmos sobre assuntos tecnológicos.

Um abraço!
Wagner Coimbra

Alfonso Favoretti Fonseca
Visitante
Alfonso Favoretti Fonseca

Prezado Wagner, é um prazer conhecê-lo, ainda mais fazendo parte da Logicalis, um gigante inglês e parceiro da Promon, empresa na qual tive grandes amigos, alguns possivelmente por lá ainda, isso quando eu atuava na área da engenharia de redes da Oi, por quase 20 anos. Parabéns pelo artigo é pelo grande profissional que você tem demonstrado ser para a engenharia de sistemas e com certeza para a área educacional. Pena que você ainda não tem cursos de EaD, pois moro no Rio e não consigo me deslocar com facilidades ao Liceu em Sampa. Acho que será questão de tempo.… Leia mais »

Rafael
Visitante
Rafael

o curso é de terça e de quinta, mas qual horário?
Não tem horário no site ;(

Alguém poderia me informar? Me interesso.

Luis Felipe Kunzler
Visitante
Luis Felipe Kunzler

Alguma possibilidade de um curso sobre ponteiros (Callbacks, principalmente)?