Arduino+Delphi MobileExiste um mundo lá fora esperando para ser controlado!
[Victory Fernandes]
Victory Fernandes• Eu amo Delphi desde 1998 • Embarcadero MVP; Evangelista Gnostice• CTO da TKS Software• Eng. Eletricista; Pós Docência; MSc. Medicina – Neurociência
@victoryjorge
Já trabalhou com microcontroladores?
mbed NXP LPC1768Equipamento médico portátil para acompanhamento do comprometimento motor em pacientes com doença de parkinson
• Plataformas microcontroladas para prototipagem simples e flexível• Hardware e software open-source• Dimensão física e peso, recursos, consumo, aplicação?• 8bits, 32bits…• 16MHz, 95Mhz…• 32KB-512KB Flash; 2KB-32KB RAM…• 8051, PIC, AtMega, ARM…• Intel, Microchip, Atmel, Freescale, NXP…
Desmistificando Microcontroladores
Digital I/Os
•Pinos numerados de 0 to 13
•0 (zero) = LOW = 0 Volts•1 (um) = HIGH = 5 Volts
•Corrente máxima de saída 20mA
Digital I/Os
Analog Input
• Pinos numerados de A0 a A5
• Tensão de entrada de 0 a 5V é mapeada em um Byte• Valores binário de 0000-0000 a 1111-1111• Valores decimais de 0 a 255
• Permite leitura de sensores analógicos de temperatura, distância, luminosidade e etc...
Analog Input
• RISC• Reduced Instruction Set Computer• 131 instruções Assembler; 1 instrução por ciclo
• A 16MHz quase 16x106 linhas de código por segundo!
ATMega328P
•Memória EEPROM, uma vez gravada não há necessidade de energia para manter o conteúdo.
•Seu código C é armazenado aqui depois de fazer o download para o microcontrolador
Memória Flash - 32KB
•Static Random Access Memory, mantém seu conteúdo desde que haja energia; Não é preciso refresh como no caso da DRAM.
•Aqui o microcontrolador executa seu programa... Sem energia? O status de execução e todas as variáveis é perdido!
Memória SRAM - 2KB
•Electrically-Erasable Programmable Read-Only Memory
•Aqui podemos armazenar informações que não queremos perder após desligar a energia!
Memória EEPROM - 1KB
Existe muito mais…
SPI-Serial Peripherical Interface
I2C-inter-Integrated Circuit
Não é muito?
E o que são shields?
+ +
+ =
www.shieldlist.org
shieldlist.org
GameDuinoSaida VGAAudio Stereo
NTSC e PAL
Video
Joystick
Joystick
MP3
Som
VoiceBoxSerial to Voice
LCD colorido Display 16x2
Display de 7 segmentos
Touch
Display
Controle de MotorPonte H – 1A
Controle de MotorPonte H – 2A
Motores
Ethernet
Wi-Fi
Rede
microSD
SDCard logger
Armazenamento
ZigBee
CanBus
Automação
Saídas a Relé
Protoboard
Monte seu circuito!
Placa perfurada
Tamanho reduzido…
www.arduino.cc Arduino Lilypad
Projetos Wearable…
Funcional Estética Diversão
"Hello world”?
"Hello world”?
"Hello world”?
"Hello world”?
"Hello world”?
Robocore Padawanwww.robocore.net/loja/produtos/arduino-shield-padawan.html
RGB LED
DFRobot accessory boardwww.dfrobot.com/index.php?route=product/product&path=35&product_id=1045
RGB LED
“Hello World”?
LED pin 13
Delphi Android/iOS app
ON
OFF
UDP Server192.168.1.177:8888
’H’ ’H’ ’H’=On’L’ ’L’ ’L’=Off
Vamos construir um proposta de
protocolo genérico de controle?
Demo que acompanha o compilador do Arduino
Código original do demo…Configure aqui seu Arduino na rede!
Código adicionado ao exemplo original!
Código adicionado ao exemplo original!
agora temos um código que aciona um pino quando recebe
a String ‘H’ ou ‘L’
LED demo app…
Que a força esteja com vc!
LED é 5 VDC…
Precisamos de 110/220 VAC…
Interruptor tradicional…
Relés
1
2
3
4 5
1
23
4
5
Embobinamento + Corrente = Campo Magnético
Módulo relé… R$ 15,00www.robocore.net/loja/produtos/modulo-rele.html
Módulo relé… R$ 15,00www.dfrobot.com/index.php?route=product/product&search=relay&description=true&product_id=64
Circuito da lâmpada…
App para acionamento da lâmpada…
Aplicação simples na vida real…
Robocore Padawanwww.robocore.net/loja/produtos/arduino-shield-padawan.html
Sensor Temperatura
Joystick
Potenciômetro
RGB LEDConector genérico suportaEntrada DigitalSaída Digital ou PWM
Display 7 segmentos
Sensor de Luz
DFRobot accessory boardwww.dfrobot.com/index.php?route=product/product&path=35&product_id=1045
RGB LED
Joystick
Potenciômetro
ReléBuzzer
LCD Display
Pressão/Humidade
E para interface com qualquer pino?
para ‘Digital’ ou ‘Analog’?
Strings suportadas…
‘dw04h’ = digital write pino 4 high‘dr02’ = digital read pino 02
‘aw03255’ = analog write pino 3 valor 255
‘ar02’ = analog read pino 2
Código completo em C para Arduino…
@ [email protected]@victoryjorgewww.youtube.com/c/victoryfernandes