Wearables :: Circuitos iniciais e programas

Nesse fim de semana gastei umas horas rascunhando um circuito, e códigos, para um produto wearable que, usando os materiais que tinha para o projeto, pudesse se comunicar com um computador, e daí gerar alguma interação entre a peça de roupa e um ambiente.

O objetivo do circuito era capturar dados de movimentação, via acelerômetro (MPU-6050), e transmiti-los via bluetooth (HC-05). O resultado ficou assim:

Rascunho de Circuito
Arduino Nano HC-05 MPU-6050

Ficou feio, é verdade. Não usei a protoboard, porque o objetivo é que esse equipamento seja instalado em uma vestimenta feita à mão, logo, tem que ser o menor possível, e preciso treinar como os materiais que tenho se comportam quando manipulados à mão.

Tanto código, como ligações, fiz uma combinação das referências que seguem:

Vale mencionar que, no caso do HC-05, fiz as ligações do modo escravo, e no código, combinei as duas versões contidas no link. Não é porquê o HC-05 está ligado como escravo que ele não pode enviar e receber dados: Não confunda!

Fiz testes de recebimento de dados usando Python, e Processing. Nesse ponto é necessário lembrar de “alinhar” o envio e o recebimento dos dados. Serial.print e Serial.write, enviam dados de formas diferentes, e isso impacta no recebimento do outro lado. Python recebe os dados como bytes, e a decodificação tem seus detalhes a serem observados.

O sistema funcionou bem, quando ligado ao computador. Só na bateria, ele não funcionou. Ainda preciso calcular o porquê. Se foi falta de voltagem, ou amperagem.

 

Boas referências para soluções de problemas:

http://www.freetronics.com.au/pages/bluetooth-pairing-guide#.V2bXiVcUnIo

https://github.com/rwaldron/johnny-five

http://blog.filipeflop.com/wireless/tutorial-arduino-bluetooth-hc-05-mestre.html

http://blog.filipeflop.com/sensores/tutorial-acelerometro-mpu6050-arduino.html

http://www.embarcados.com.br/arduino-acelerometro-giroscopio/

https://github.com/jrowberg/i2cdevlib/tree/master/Arduino/MPU6050

http://www.botched.co.uk/pic-tutorials/mpu6050-setup-data-aquisition/

http://diyhacking.com/arduino-mpu-6050-imu-sensor-tutorial/

http://forum.arduino.cc/index.php?topic=121825.0

Wearables :: Materiais iniciais

Começando uma oficina de criatividade no IED São Paulo, sobre wearables. Já trabalhei nos primeiros scratches, e a idéia é uma peça de roupa para auxiliar as pessoas no mercado de trabalho previsto entre 2026-2030. Conceito em outro post futuro.

Itens adquiridos:

  • Arduino Nano (versão chinesa de baixo custo)
  • Bateria de celular : lítio-ion 3.7V
  • Carregador Universal de bateria de celular
  • Fios de cabos de rede.
  • Chip giroscópio
  • Módulo bluetooth HC-05

O primeiro problema encontrado foi Arduino Nano! Comprei a versão chinesa que é mais barata, mas só funciona depois de instalar um driver específico. Felizmente achei fácil como solucionar o problema. (Links de ajuda abaixo)

Então, veio a bateria! Ela tem apenas 3.7V, e o Arduino precisa de 5V. Após deixar carregando por um tempo, fui medir a potência da bateria, e bateu nos 4.7V. Fiz um teste simples, com o software do blink, e deu certo! Com o andamento do projeto, veremos se uma bateria dessas será o suficiente.

Links para iniciar o uso dos chips especiais de giroscópio e bluetooth, também foram levantados, e estão listados abaixo.

 

CORREÇÃO DE ERROS:

1- O bom e velho Stackoverflow: Arduino Nano para Mac

2- Bom e velho Youtube:

3- Pesquisando na web: http://kig.re/2014/12/31/how-to-use-arduino-nano-mini-pro-with-CH340G-on-mac-osx-yosemite.html

 

MATERIAL DE SUPORTE PARA CHIPS ESPECIAS

Bluetooth

http://blog.filipeflop.com/wireless/tutorial-arduino-bluetooth-hc-05-mestre.html

Bluetooth com windows

http://www.instructables.com/id/Cheap-2-Way-Bluetooth-Connection-Between-Arduino-a/?ALLSTEPS

 

Acelerômetro

http://blog.filipeflop.com/sensores/tutorial-acelerometro-mpu6050-arduino.html

 

 

Blender – script para vídeo

Depois de muito tempo sem postagem…

Estou estudando uso de scripts para uso em vídeos. É um trabalho bem diferente do uso na game engine.

Esses primeiros, são ultra básicos, criam uma esfera, e uma animação, e iniciam a renderização.

teste1

import bpy, bgl, blf, sys
from bpy import data, ops, props, types, context
import math

#pre-settings
#bpy.context.scene.file_format = ‘AVI_JPEG’
#bpy.context.scene.render.resolution_percentage = 20
#bpy.context.scene.render.antialiasing_samples = ‘5’
#bpy.context.scene.render.filepath = ‘//outputs/video_output.avi’

#criar esfera
bpy.ops.mesh.primitive_uv_sphere_add(segments=16, ring_count=16, size=0.25, location=(1,0,0))

#animacao basica
#obj = bpy.context.object
#obj.location[2] = 0.0
#obj.keyframe_insert(data_path=”location”, frame=10.0, index=2)
#obj.location[2] = 1.0
#obj.keyframe_insert(data_path=”location”, frame=20.0, index=2)

#animacao low level
obj = bpy.data.objects[‘Sphere’]
obj = bpy.context.object
obj.animation_data_create()
obj.animation_data.action = bpy.data.actions.new(name=”Spiral”)
fcu_x = obj.animation_data.action.fcurves.new(data_path=”location”, index=0)
fcu_y = obj.animation_data.action.fcurves.new(data_path=”location”, index=1)
fcu_z = obj.animation_data.action.fcurves.new(data_path=”location”, index=2)
#fcu_z.keyframe_points.add(2)
#fcu_z.keyframe_points[0].co = 10.0, 0.0
#fcu_z.keyframe_points[1].co = 20.0, 1.0
fcu_x.keyframe_points.add(9)
fcu_y.keyframe_points.add(9)
fcu_z.keyframe_points.add(9)
deg = 0
it = 0
for point in fcu_x.keyframe_points:
print(“—“)
rad_angle = math.radians(deg)
x = (math.cos(rad_angle)*2)
y = (math.sin(rad_angle)*2)
deg += 45
point.co = deg, x
fcu_y.keyframe_points[it].co = deg, y
fcu_z.keyframe_points[it].co = deg, it*.25
it += 1
#fcu_z.keyframe_points[1].co = 20.0, 1.0

bpy.context.scene.frame_end = deg
bpy.ops.render.render( animation=True )

teste2

#tentativa de script faz tudo 1
# fazer um cubo completar uma volta animada...
# e gerar um video
#
#calculo de seno e coseno, para fazer a volta.
#Tentativa de fazer espiral.

#./blender -b /home/ilcarmo/Paulo/Blender/blender-render/script_02_faztudo.blend -P /home/ilcarmo/Paulo/Blender/blender-render/script_faz_tudo.py

import bpy, bgl, blf, sys
from bpy import data, ops, props, types, context
import math

#pre-settings
#bpy.context.scene.file_format = ‘AVI_JPEG’
#bpy.context.scene.render.resolution_percentage = 20
#bpy.context.scene.render.antialiasing_samples = ‘5’
#bpy.context.scene.render.filepath = ‘//outputs/video_output.avi’

#criar esfera
bpy.ops.mesh.primitive_uv_sphere_add(segments=16, ring_count=16, size=0.25, location=(1,0,0))

#animacao basica
#obj = bpy.context.object
#obj.location[2] = 0.0
#obj.keyframe_insert(data_path=”location”, frame=10.0, index=2)
#obj.location[2] = 1.0
#obj.keyframe_insert(data_path=”location”, frame=20.0, index=2)

#animacao low level
obj = bpy.data.objects[‘Sphere’]
obj = bpy.context.object
obj.animation_data_create()
obj.animation_data.action = bpy.data.actions.new(name=”Spiral”)
fcu_x = obj.animation_data.action.fcurves.new(data_path=”location”, index=0)
fcu_y = obj.animation_data.action.fcurves.new(data_path=”location”, index=1)
fcu_z = obj.animation_data.action.fcurves.new(data_path=”location”, index=2)
#fcu_z.keyframe_points.add(2)
#fcu_z.keyframe_points[0].co = 10.0, 0.0
#fcu_z.keyframe_points[1].co = 20.0, 1.0
fcu_x.keyframe_points.add(360)
fcu_y.keyframe_points.add(360)
fcu_z.keyframe_points.add(360)
deg = 0
it = 0
for point in fcu_x.keyframe_points:
print(“—“)
rad_angle = math.radians(deg)
x = (math.cos(rad_angle)*2)
y = (math.sin(rad_angle)*2)
deg += 1
point.co = deg, x
fcu_y.keyframe_points[it].co = deg, y
fcu_z.keyframe_points[it].co = deg, (2/360)*it #it*.25
it += 1
#fcu_z.keyframe_points[1].co = 20.0, 1.0

bpy.context.scene.frame_end = deg
bpy.ops.render.render( animation=True )

ainda muito a estudar.

Anim-and-play

Anim-and-play é um jogo lúdico com o intuito de apresentar os conceitos de animação para crianças.

Este vídeo mostra o funcionamento do software Anim-and-play. O jogo foi desenvolvido especificamente para as atividades de férias do SESC Carmo (Julho/2010). Este programa encontra-se disponível para download e contribuição de desenvolvimento no Google Code, sob licença GPL, neste endereço:
http://code.google.com/p/anim-and-play/
Não deixe de ler as instruções na página wiki.