Eu entendo o Arduino: e agora?
Tudo bem, eu já brinquei o suficiente com o Arduino para me sentir bem à vontade com ele. Tudo o que é feito agora é mais aprender a eletrônica do que o lado do Arduino.
Qual é o próximo passo para o meu aprendizado? O Arduino é um programador / controlador combinado, então, presumivelmente, eu preciso quebrar esse link e começar a trabalhar com um chip controlador separado do controlador, eu acho? Alguém pode me apontar na direção certa?
Você tem um objetivo ou projeto em particular?
Concordo. Para mim, isso é tudo sobre como fazer coisas específicas. O Arduino é apenas uma ferramenta como qualquer outra coisa.
No momento, estou trabalhando em uma matriz de LED multiplexada. Não é tão difícil no Arduino, mas quero me livrar das rodinhas. Quero dizer, finalmente, há um chip ATmega168 na placa Arduino. Se eu pudesse descobrir como trabalhar com isso diretamente, acho que satisfaria o que estou tentando alcançar.
Você é realmente direto ao chip com o Arduino. Ele não possui muitos drivers ou qualquer coisa anexada aos pinos. Os cabeçalhos vão diretamente para lá. Talvez um breadboarduino?
@angryee - Acho que Chris quer dizer, programar o chip ATmega diretamente, sem as bibliotecas Arduino IDE +, que podem ser vistas como rodinhas de treinamento.
Aqui estão algumas dicas para trabalhar com AVRs e C.
Eu concordo com Joby - o Arduino é ótimo, mas sempre me sinto sufocado pela estrutura que me rodeia. Eu usaria o C direto no seu Arduino e criaria muitas das funcionalidades da biblioteca que eles forneciam do zero. Geralmente, prefiro a profundidade antes da amplitude - não comece apenas em outra família de microcontroladores usando estruturas fornecidas. Aprenda um pouco mais sobre como implementar algumas dessas funções você mesmo.
Comece com um programa de trabalho e substitua as chamadas da biblioteca do Arduino pelas suas próprias versões, uma função de cada vez. Você aprenderá muito sobre os registros de controle, tempo, operações de bits, etc., se ainda não o tiver. Leia a folha de dados do ATMega328 em detalhes - tudo o que você precisa está lá.
Experimente um IDE diferente como o AVR Studio ou o Code :: Blocks. Aprenda a cadeia de ferramentas do GCC. Experimente técnicas de codificação mais avançadas - testes de unidade, cobertura, criação de perfil, verificação de fiapos / talas. Coloque um RTOS no Arduino.
Um programador / controlador combinado não é um sinal de fraqueza - é apenas uma opção de design. A única "fraqueza" que poderia surgir é a falta de depuração no circuito. Compre um dragão AVR e você terá isso por US $ 50.
Eu acho que o que aprender a seguir depende do que você quer fazer que o Arduino não pode fazer. Ou seja, não vejo muito sentido em programar um chip semelhante para fazer as mesmas coisas, mas com meios mais difíceis.
Aqui estão algumas fraquezas do Arduino:
Threading, ou seja, executar duas seções do código intercaladas para que pareçam estar sendo executadas ao mesmo tempo
Material de internet de largura de banda média ou alta, como streaming de áudio
Computação séria ou tarefas que requerem computação rápida para resposta rápida
Qualquer coisa que seja facilitada com um sistema de arquivos, como registro de dados ou manipulação de imagens
Eu posso imaginar duas direções a seguir:
Placas embarcadas mais poderosas com pequenos sistemas operacionais, como o Beagleboard ou o Gumstix
Espremendo mais desempenho dos pequenos chips Atmega usando interrupções de hardware.
Posso acrescentar mais detalhes se você comentar sobre qual direção é mais atraente. (O segundo é definitivamente mais barato.)
É engraçado ... programar um chip semelhante para fazer as mesmas coisas, mas com meios mais difíceis é exatamente o que tenho em mente :). Um pouco de experiência - sou arquiteto de software com muitos anos de experiência. O software, a computação, o sistema de arquivos ... isso é tudo fácil para mim. O que eu realmente preciso bater com a cabeça são os eletrônicos. A razão pela qual pretendo ir além do Arduino é simplesmente que desejo produzir dispositivos de uso único que não possuam a sobrecarga física (e preço) de uma placa Arduino. Acho que pelo que você disse, o nº 2 é o que estou procurando.
Uau ... esse comentário parecia realmente egoísta. Eu não quis dizer dessa maneira ... de qualquer maneira, só quis dizer que quero me livrar das rodinhas de treinamento de hardware que o Arduino me fornece. Em particular, estou trabalhando em uma matriz de LEDs, semelhante ao LOLShield, mas acho que vou multiplexá-la. Eu posso fazer isso com o Arduino, mas sem ele, preciso de alguma direção. TIA.
Ah, mais coisas eletrônicas em vez de software ... coisas. Talvez você tenha uma boa experiência fazendo interface / registro de dados de sensores. Não é fascinante, mas para conectar os sensores à sua placa, você precisa aprender mais algumas coisas sobre hardware. O Arduino realmente não tem tantas rodinhas de treinamento de hardware - certamente não tantas quanto o software. Talvez um robô que incorpore vários tipos diferentes de sensores - ultrassons, distância IR, codificador de eixo, etc. Certamente possível apenas com o Arduino e muito mais hardware.
Aprenda I2C, SPI, 1wire e tente fazer a interface de sensores com essas interfaces. Leia muitas folhas de dados desses sensores e tente entender tudo o que há neles. Faça perguntas quando preso. Aprenda o protocolo MODBUS (RTU / ASCII / TCP) ou similar que pode abrir seu dispositivo para o mundo depois que você o incorporar. Aprenda a eletrônica geral e tente fazer interface com relés, triacs, o que é puxado para cima e para baixo, o que é fonte e afundamento, como desenhar esquemas e conectar drivers básicos ao seu MCU.
Para começar, convém passar do Arduino como plataforma para o AVR como plataforma. Ou seja, aprenda como programar / usar um microcontrolador AVR virgem para seus projetos em vez do Arduino. Dessa forma, você não precisará comprar outra placa Arduino para cada projeto que realizar, ou para fazer projetos com amigos. Este é um passo bastante simples (um Arduino é apenas um microcontrolador Atmel AVR convencional, mas com uma placa e um gerenciador de inicialização especiais), mas é importante para vender / dar projetos a amigos. A cadeia de ferramentas também é semelhante: você usa avr-gcc ou avr-g ++ com make em conjunto com um utilitário de programação para instalar seu programa.
É muito simples carregar o gerenciador de inicialização em um chip e soldar sua própria placa, se você deseja doar um projeto. Ou encomende um kit RBBB por US $ 12,50 ( goo.gl/0yqr ), sem a necessidade de comprar uma placa de US $ 30 ou mais para cada projeto do Arduino.