terça-feira, 23 de abril de 2013

Build Your Own Z80 Computer

Este é um livro clássico de meados dos anos 80: Build Your Own Z80 Computer, de Steve Ciarcia.


As discussões da época giravem em trono de 2 processadores: o Zilog Z-80 (baseado no Intel 8080, então em decadência) e no 6502 (inicialmente fabricado p/ MOS Technology, e depois por outras indústrias). O Z-80 foi a base do computador da Radio Shack, o TRS-80, e o 6502 era o coração do Apple II, da dupla Steve Jobs e Steve Wozniak.

E a Intel, posteriormente, recuperou o mercado perdido, fabricando a linha 8086, 8088, 80186, 80286, 80386, Pentium e seus sucessores, mas esta história já é mais recente.

Há abundante material na internet sobre o Z-80 e o 6502, mas quero destacar o site Retro Computing, do holandês Hans Otten, que possui cópia em pdf do livro Build Your Own Z80 Computer p/ download. Há também uma mostra das capas de alguns livros sobre o Z-80 em outro site, de Ira Goldklang, bem como descrição dos modelos do TRS-80, revistas e amplo material de consulta.

Quem trabalhou com microprocessadores naquela época dificilmente irá resistir à tentação de dar uma olhada...

segunda-feira, 22 de abril de 2013

Arduino Robot Bonanza

O livro Arduino Robot Bonanza, de Gordon McComb (mesmo autor do livro Robot Builder’s Bonanza) e editado p/ McGraw-Hill, explica com montar uma série de robôs que rolam, caminham, rastejam, falam, esbravejam e assim por diante, usando a plataforma Arduino e toda sorte de sensores, motores, controle remoto e assemelhados.

Claro, não poderia faltar um braço robótico, uma cobra robótica controlada remotamente, sempre com todos os sketches Arduino e também com instruções detalhadas quanto à montagem da parte mecânica.

Livro essencial para quem já conhece alguma coisa do Arduino e deseja ver algum resultado prático.

Disponível em formato eletrônico (compatível com Kindle).


domingo, 21 de abril de 2013

Apollo Guidance Computer (AGC)

Você já se perguntou que recursos computacionais os astronautas das naves Apollo possuíam como suporte à navegação espacial?

O Apollo Guidance Computer (AGC), projetado pelo MIT Instrumentation Laboratory e construído pela Raytheon Corporation, fornecia um controle real-time para as naves Apollo, que levaram o homem à Lua entre 1969 e 1972.

AGC (peso: 32 kg.; dimensões: 61 x 32 x 17 cm; consumo: 55 W) e DSKY

Era um computador digital, instalado a bordo de cada Módulo de Comando (Apollo Command Module - CM) e de cada Módulo Lunar (Lunar Module - LM), e fornecia interfaces para navegação, orientação e controle das espaçonaves.

Comparação entre os módulos CSM (Command/Service Modules) e LM (Lunar Module)

Construído com circuitos integrados (novidade na época), usava uma palavra (word) de 16 bits - 15 de dados e 1 de paridade. O computador possuía um total de 2K palavras em memórias RAM e 36K palavras em memórias Read-Only, ambas de núcleo de ferrite, onde ficavam armazenados seus programas.

Memória de núcleo de ferrite


Os astronautas comunicavam-se com o AGC por meio de um display numérico e de um teclado (conjunto chamado de DSKY).

DSKY (display numérico e teclado)

Além do DSKY, o AGC ainda tinha interfaces com: IMU (Inertial Measurement Unit), RHC (Rotation Hand Controller) , Rendezvous Radar (CM), Landing Radar (LM), Telemetry Receiver, Engine Command, Reaction Control System.

O AGC fazia parte de um sistema maior, o Apollo Primary Guidance, Navigation and Control System (PGNCS) - assunto para outro dia.

Cada missão lunar Apollo tinha ainda 2 computadores adicionais:
Dr. Wernher von Braun inspecionando o LVDC
  • o Abort Guidance System (AGS) do módulo lunar, a ser utilizado na eventualidade de falha catastrófica do PGNCS. O AGS era capaz de decolar o LM da Lua e realizar o acoplamento com o módulo de comando, em órbita lunar.

Fontes:
Construindo uma réplica.
Há material suficiente na internet para que se construa uam réplica do AGC. Por que alguém faria isto? Nas palavras de John Pultorak, que dedicou 4 anos à construção da sua réplica: "Early computers are interesting. Beacuse they're simple, you can (if you like) actually understand the entire computer, from hardware to software. The AGC is the most interesting early computer because: it flew the first men to the moon and has interesting architectural features." Continua o autor: "I built it in my basement. It took me 4 years. If you like, you can build one too. It will take you less time, and yours will be better than mine."

Se você quiser construir a sua réplica:

Free online library on electronics

Toneladas de material gratuito (em inglês, tcheco, francês, polonês, alemão, húngaro e búlgaro) p/ download, inclusive coisas que a nossa mente pequena proíbe reproduzir a título de "direitos autorais". Chega a ser engraçado: se eu reproduzir o material em meu site, posso ser preso. Então me limito a reproduzir o endereço.

Destaque para as revistas Servo, Evil Genius, Nuts And Volts, além de milhares de esquemas de aparelhos de tudo que é tipo e artigos sobre eletrônica, radioamadorismo, microcontroladores e por aí vai.

quarta-feira, 17 de abril de 2013

Teensy USB Development Board

Uma das deficiências clássicas do Arduino é o uso restrito da interface USB (na realidade, uma interface serial convertida para os sinais USB). O Arduino Leonardo veio para sanar um pouco esta deficiência, mas existe uma placa baratíssima que "fala" USB com naturalidade: a Teensy USB Development Board.

Características principais:

  • Compatível com qualquer tipo de dispositivo USB de forma nativa
  • Processador AVR de 16 MHz ou ARM Cortex-M4 48 MHz
  • Software Teensy Loader fácil de usar
  • Ferramentas de desenvolvimento free
  • Trabalha com Mac OS X, Linux e Windows 
  • Dimensões reduzidas (menor que 2" x 1")
  • Custo muito baixo (de US$ 16 a US$ 24)
  • Utiliza linguagem C ou uma extensão para a IDE Arduino (um add-on chamado de Teensyduino).

Existem 3 modelos da placa, a saber:


SpecificationTeensy 2.0Teensy++ 2.0Teensy 3.0
ProcessorATMEGA32U4
8 bit AVR
16 MHz
AT90USB1286
8 bit AVR
16 MHz
MK20DX128
32 bit ARM
Cortex-M4
48 MHz
Flash Memory32256130048131072
RAM Memory2560819216384
EEPROM102440962048
I/O25, 5 Volt46, 5 Volt34, 3.3 Volt
Analog In12812
PWM7910
UART,I2C,SPI1,1,11,1,13,1,1
PriceUS$ 16US$ 24US$ 19

O Teensy pode emular diversos dispositivos USB sem a necessidade de hardware adicional; as bibliotecas disponíveis no site englobam displays, comunicações, entradas e sensores, controles de dispositivos e saídas, temporização e manipulação de dados. O Teensy 3.0 suporta 14 entradas analógicas, 10 saídas PWM e possui interface I2C.


Teensy USB Board, Version 3.0

Numa comparação com o Arduino, o site Techno Gumbo prefere o Teensy, por ser mais barato, permitir comunicação com USB de forma nativa, pelo fato da placa ser bem menor e pela possibilidade de optar pelo uso da linguagem C ao invés da IDE Arduino. Outra comparação: Teague Labs.

Comparação entre Arduino e Teensy


Quem se interessar pode visitar a página de projetos.

terça-feira, 16 de abril de 2013

Arduino Shield List (atualizado)

Você já se perguntou sobre os Shields (no meu tempo de técnico eletrônico, a gente chamava de piggy-back, agora virou shield) do Arduino, se existe algum controle, algum índice, algo ou alguém a quem recorrer? Pois existe: a Arduino Shield List, que atualmente conta com 288 shields de 110 fabricantes. Vale a pena dar uma vasculhada.

Mas cuidado para o seu Arduino não ficar assim:



segunda-feira, 15 de abril de 2013

GoRobotics

"GoRobotics is the perfect blog for everyone looking to learn how to make a robot, gather knowledge about DIY robotics projects, and stay in touch with the latest robotics news."
Em destaque: "How To Make a Robot", já na lição 10 ("Programming a Robot"). Vale a pena uma exploração demorada do site!

Robot Arm Torque Calculator

Qual o torque necessário para cada motor do seu braço robótico? Esta pergunta deixa qualquer um na dúvida, não é verdade? Pois aqui está a resposta:

Robot Arm Torque Calculator

Robot Arm Torque Tutorial

Robot Leg Torque Tutorial

E qual o servo motor que atende à especificação? Também simples: consulte a Servo Database.

domingo, 14 de abril de 2013

Raspberry Pi - Bibliografia

A Amazon disponibiliza, entre outros, os seguintes títulos referentes ao Raspberry Pi, todos em formato eletrônico (compatível com Kindle):

 

sábado, 13 de abril de 2013

A extensa linha de produtos Arduino

Estou retomando o Blog (por estar com mais tempo disponível), então é hora de dar uma atualizada na linha Arduino.

A versão mais recente do software é 1.0.4, disponível para download no site.

Arduino Boards
Arduino Uno Arduino Leonardo Arduino Due
Arduino Esplora Arduino Mega 2560 Arduino Mega ADK
Arduino Ethernet Arduino Mini LilyPad Arduino
LilyPad Arduino USB LilyPad Arduino Simple LilyPad Arduino SimpleSnap
Arduino Micro Arduino Nano Arduino Pro Mini
Arduino Fio Arduino Pro
Arduino Shields
Arduino GSM Shield Arduino Ethernet Shield Arduino WiFi Shield
Arduino Wireless SD Shield Arduino Motor Shield Arduino Wireless Proto Shield
Arduino Proto Shield
Arduino Kits
The Arduino Starter Kit
Accessories
USB/Serial Light Adapter Mini USB/Serial Adapter

sexta-feira, 12 de abril de 2013

Raspberry Pi

Raspberry Pi é um computador do tamanho de um cartão de crédito desenvolvido no Reino Unido pela Fundação Raspberry Pi. Todo o hardware é integrado em uma única placa. O objetivo principal é de estimular o ensino de ciência da computação básica em escolas.

Ficheiro:Raspberry Pi Photo.jpg

O computador é baseado em um system on a chip (SoC) Broadcom BCM2835, que inclui um processador ARM1176JZF-S de 700 MHz, GPU VideoCore IV, e 512 MB de memória RAM em sua última revisão. O projeto não inclui uma memória não-volátil - como um disco rígido - mas possui uma entrada de cartão SD para armazenamento de dados.

Hardware

Existem atualmente dois modelos: Modelo A e Modelo B. A grande diferença entre os dois modelos é que o Modelo B possui um controlador Ethernet e duas portas USB, enquanto que o Modelo A possui apenas uma porta USB e nenhuma porta de Ethernet. Apesar que não possuir a porta Ethernet, o Modelo A pode ser conectado a internet através de um adaptador USB de Ethernet ou Wi-Fi.

O Raspberry Pi não possui um relógio de tempo real (RTC), criando a necessidade do sistema operacional usar um Network Time Protocol (NTP), ou do usuário fornecer a hora ao sistema. Porém, um relógio de tempo real (como o DS1307) pode ser adicionado pela interface I2C.

Software

O Raspberry Pi é compatível com sistemas operacionais baseados em Linux. O Raspbian é a distribuição linux oficial do Raspberry Pi. As distribuições Arch Linux e Debian são também oficialmente suportadas e disponíveis para download. O sistema operacional é normalmente armazenado no cartão SD.

Qualquer linguagem que possa ser compilada na arquitetura ARMv6 pode ser usada para o desenvolvimento de software. O projeto tem como objetivo usar Python como linguagem de referência com suporte à BBC_BASIC.

A suite de escritório livre, LibreOffice, da The Document Foundation, que possui os aplicativos Writer, Calc, Impress, Draw, Math e Base, funciona no Rapberry Pi.

Fontes:

Raspberry Pi

Wikipedia: Raspberry Pi


quinta-feira, 11 de abril de 2013

OpenBuilds Part Store

Mais do uma loja virtual de produtos como trilhos, rodas polias, motores e outros, é um projeto de Open Source e aderente à licença Creative Commons.


quarta-feira, 4 de abril de 2012

O protocolo I2C no Arduino

O protocolo I2C é implementado no Arduino, embora receba outro nome: TWI (Two-Wire Interface), por questões de direitos autorais. No Arduino Diecimila/Duemilanove/Uno, são utilizados os pinos A4 para o sinal SDA (dados) e A5 para o sinal SCL (clock); no Arduino Mega, são utilizados os pinos 20 para o sinal SDA (dados) e 21 para o sinal SCL (clock). Note-se que estes pinos não estão na mesma posição que os pinos I2C no Diecimila/Duemilanove/Uno, o que provoca incompatibilidade entre shields que utilizam o protocolo I2C e que tenham sido desenvolvidos para uma ou outra placa. A biblioteca que implementa o protocolo I2C no ambiente Arduino é denominada Wire.

O microcontrolador do Arduino implementa internamente os resistores pull-up requeridos pelo protocolo I2C (normalmente de 1,5 Kohms); no entanto, é interessante colocar 2 resistores de 10 Kohms; o comprimento máximo dos cabos que levam os sinais I2C para as placas periféricas é de 1 metro, em função da capacitância (embora existam chips reforçadores de sinal I2C, como o Philips P82B715, que permite uma distância de até 50 metros).

A idéia básica é um Arduino funcionando como mestre, e um ou mais slaves.


Conforme o site Arduino.cc, pode ser utilizado o código abaixo para o Master:

Code for Master Reader - Program for Arduino 1
// Wire Master Reader
// by Nicholas Zambetti

// Demonstrates use of the Wire library
// Reads data from an I2C/TWI slave device
// Refer to the "Wire Slave Sender" example for use with this

// Created 29 March 2006

// This example code is in the public domain.


#include

void setup()
{
  Wire.begin();        // join i2c bus (address optional for master)
  Serial.begin(9600);  // start serial for output
}

void loop()
{
  Wire.requestFrom(2, 6);    // request 6 bytes from slave device #2

  while(Wire.available())    // slave may send less than requested
  {
    char c = Wire.read(); // receive a byte as character
    Serial.print(c);         // print the character
  }

  delay(500);
}
O Slave deve ter o seguinte código:
Code for Slave Sender - Program for Arduino 2
// Wire Slave Sender
// by Nicholas Zambetti

// Demonstrates use of the Wire library
// Sends data as an I2C/TWI slave device
// Refer to the "Wire Master Reader" example for use with this

// Created 29 March 2006

// This example code is in the public domain.


#include

void setup()
{
  Wire.begin(2);                // join i2c bus with address #2
  Wire.onRequest(requestEvent); // register event
}

void loop()
{
  delay(100);
}

// function that executes whenever data is requested by master
// this function is registered as an event, see setup()
void requestEvent()
{
  Wire.write("hello "); // respond with message of 6 bytes
                       // as expected by master
}
No caso, o dispositivo slave se identifica como periférico 2 (Wire.begin(2);).

quarta-feira, 7 de março de 2012

Electronics Projects for Students and Hobbyists (by Lewis Loflin)

Mais um site interessantíssimo para o estudante e o hobbysta, com alguma teoria e dezenas de projetos, envolvendo Arduino, PICAXE e assim por diante.

Copio a introdução: "The purpose of these pages is to introduce the student and hobbyist to electronics projects. My hope is generate interest for those thinking about entering a high tech field, or simply to have fun. I've done this since the 1960s and having to overcome a low income household means we have to work smart and use what is available."

terça-feira, 6 de março de 2012

O protocolo I2C (I)

O protocolo I2C (“Inter Integrated Circuit bus”) é um padrão de interface serial de 2 fios; foi criado pela Philips Semiconductors no início da década de 1980, e visava facilitar a comunicação das CPUs de aparelhos de TV digital com seus chips periféricos.

Fisicamente, o protocolo é constituído por 2 sinais (clock e dados) mais o terra comum. Os dois sinais (SDA - Serial DAta line e SCL - Serial CLock line) são bidirecionais e permitem a comunicação em full duplex entre diversos dispositivos. O barramento I2C é multi-master, ou seja, qualquer dispositivo conectado pode ser o master e comandar os demais, com a restrição (óbvia) de que haja um dispositivo master de cada vez. A freqüência de transferência de dados é baixa - tipicamente 100kHz a 400kHz.

Cada dispositivo requer um endereço único (que era fixo nos dispositivos da Phillips - mas as implementações do protocolo, por exemplo a biblioteca Wire do Arduino, permitem que cada dispositivo conectado determine seu próprio endereço). Uma rede I2C pode comportar no máximo 127 dispositivos (existem alguns endereços reservados); no entanto, há uma restrição mais concreta: a capacitância máxima da rede I2C é de 400 pF; caso contrário, atrasos e deformações no sinal tornam a comunicação inviável. Cada dispositivo a ser conectado tem uma capacitância interna de no mínimo 10 pF, e há de se considerar ainda a capacitância do cabeamento que conecta os chips ou periféricos. Na prática, algumas poucas placas funcionarão com um cabeamento de no máximo 2 ou 3 metros, o que é mais que suficiente para estudantes e hobbystas.

O dispositivo master é o que (naquele momento) controla as comunicações, ou seja, controla a transferência dos dados e emite o sinal de clock; o dispositivo controlado é o slave. O master pode transmitir ou receber sinais de um slave selecionado, ou coordenar a transferência de sinais entre dois slaves, onde um é o emissor e o outro é o receptor.

O protocolo exige que cada uma das 2 linhas (SDA e SCL) sejam conectadas à alimentação por um resistor (normalmente 1.5 Kohms).

Revisões recentes do I2C podem manipular velocidades maiores (400 kbit/S Fast mode, 1 Mbit/S Fast mode plus ou Fm+, e 3.4 Mbit/S High Speed mode), além de outras novidades, como endereçamento de 10 bits.