O projeto TV-B-Gone foi idealizado pela Adafruit e é vendido como um kit completo para montagem em casa, o objetivo é desligar qualquer TV que esteja atrapalhando seu almoço ou leitura em lugares públicos.
No kit original o processador utilizado é o ATtiny85, mas o projeto foi portado para a IDE arduino e para o processador ATMega 328 por Ken Shirriff em seu blog (informações e códigos no link).
O esquema de montagem é bastante simples e eu fiz um pequeno esquema que está abaixo:
Este fim de semana me diverti bastante perturbando os amigos e o pessoal em casa, o led ir tem que ser forte, usei um de 8 mm (tirado de um controle remoto velho) para ter um alcance maior. No esquema do autor você vai ver que é sugerido o uso de transistors para controlar até uma série de leds em linha e aumentar muito o alcance.
O projeto pode ser montado com uma placa arduino UNO ou outras clones, eu resolvi montar uma arduino na breadboard pequena para fazer um aparelho que pudesse esconder no bolso. A força vem de 3 pilhas AA ligadas diretamente na placa e colocadas em um container com liga e desliga incorporado. Não usei o botão de reset que tem no esquema acima. O bootloader foi carregado no chip usando o esquema arduino ISP.
Estive fazendo alguns experimentos com o processing e a biblioteca TUIO, o tuio é um software que recnhece marcadores e tambem é usado para mesas multitoque. Para conhecer e baixar acesse http://www.tuio.org/.
No vídeo acima eu modifiquei o exemplo que vem com a biblioteca e criei um sketch com um fundo em jpg e duas imagens que são apresentadas na tela dependendo do marcador exibido na webcam.
/* TUIO processing demo - part of the reacTIVision project http://reactivision.sourceforge.net/Modificado por Miklos em 13/03/2011 - www.miklos.blog.br*/// we need to import the TUIO library// and declare a TuioProcessing client variableimport TUIO.*;
TuioProcessing tuioClient;
// these are some helper variables which are used// to create scalable graphical feedbackfloat cursor_size = 15;
float object_size = 120;
float table_size = 760;
float scale_factor = 1;
PFont font;
PImage bg;
PImage p0;
PImage p1;
voidsetup()
{
size(800,600);
bg = loadImage("fundo_teste.gif");
p0 = loadImage("quad_teste.gif");
p1 = loadImage("circ_teste.gif");
//size(screen.width,screen.height);// size(640,480);// noStroke();// fill(0);loop();
frameRate(30);
//noLoop();hint(ENABLE_NATIVE_FONTS);
font = createFont("Arial", 18);
scale_factor = height/table_size;
// we create an instance of the TuioProcessing client// since we add "this" class as an argument the TuioProcessing class expects// an implementation of the TUIO callback methods (see below)
tuioClient = new TuioProcessing(this);
}
// within the draw method we retrieve a Vector (List) of TuioObject and TuioCursor (polling)// from the TuioProcessing client and then loop over both lists to draw the graphical feedback.voiddraw()
{
//background(255);background(bg);
textFont(font,18*scale_factor);
float obj_size = object_size*scale_factor;
float cur_size = cursor_size*scale_factor;
Vector tuioObjectList = tuioClient.getTuioObjects();
for (int i=0;isize();i++) {
TuioObject tobj = (TuioObject)tuioObjectList.elementAt(i);
String simb = "" + tobj.getSymbolID();
if( simb.equals("1") ){
stroke(0);
fill(0);
pushMatrix();
translate(tobj.getScreenX(width),tobj.getScreenY(height));
rotate(tobj.getAngle());
// rect(-obj_size/2,-obj_size/2,obj_size,obj_size);image(p0,-obj_size/2,-obj_size/2,obj_size,obj_size);
popMatrix();
fill(255);
text(""+tobj.getSymbolID(), tobj.getScreenX(width), tobj.getScreenY(height));
}
if( simb.equals("2") ){
stroke(0);
fill(0);
pushMatrix();
translate(tobj.getScreenX(width),tobj.getScreenY(height));
rotate(tobj.getAngle());
// rect(-obj_size/2,-obj_size/2,obj_size,obj_size);image(p1,-obj_size/2,-obj_size/2,obj_size,obj_size);
popMatrix();
fill(255);
text(""+tobj.getSymbolID(), tobj.getScreenX(width), tobj.getScreenY(height));
}
}
/* Vector tuioCursorList = tuioClient.getTuioCursors(); for (int a=0;a TuioCursor tcur = (TuioCursor)tuioCursorList.elementAt(a); Vector pointList = tcur.getPath(); if (pointList.size()>0) { stroke(0,0,255); TuioPoint start_point = (TuioPoint)pointList.firstElement();; for (int j=0;j TuioPoint end_point = (TuioPoint)pointList.elementAt(j); line(start_point.getScreenX(width),start_point.getScreenY(height),end_point.getScreenX(width),end_point.getScreenY(height)); start_point = end_point; } stroke(192,192,192); fill(192,192,192); ellipse( tcur.getScreenX(width), tcur.getScreenY(height),cur_size,cur_size); fill(0); text(""+ tcur.getCursorID(), tcur.getScreenX(width)-5, tcur.getScreenY(height)+5); } }*/
}
// these callback methods are called whenever a TUIO event occurs// called when an object is added to the scenevoid addTuioObject(TuioObject tobj) {
println("add object "+tobj.getSymbolID()+" ("+tobj.getSessionID()+") "+tobj.getX()+" "+tobj.getY()+" "+tobj.getAngle());
}
// called when an object is removed from the scenevoid removeTuioObject(TuioObject tobj) {
println("remove object "+tobj.getSymbolID()+" ("+tobj.getSessionID()+")");
}
// called when an object is movedvoid updateTuioObject (TuioObject tobj) {
println("update object "+tobj.getSymbolID()+" ("+tobj.getSessionID()+") "+tobj.getX()+" "+tobj.getY()+" "+tobj.getAngle()
+" "+tobj.getMotionSpeed()+" "+tobj.getRotationSpeed()+" "+tobj.getMotionAccel()+" "+tobj.getRotationAccel());
}
// called when a cursor is added to the scenevoid addTuioCursor(TuioCursor tcur) {
println("add cursor "+tcur.getCursorID()+" ("+tcur.getSessionID()+ ") " +tcur.getX()+" "+tcur.getY());
}
// called when a cursor is movedvoid updateTuioCursor (TuioCursor tcur) {
println("update cursor "+tcur.getCursorID()+" ("+tcur.getSessionID()+ ") " +tcur.getX()+" "+tcur.getY()
+" "+tcur.getMotionSpeed()+" "+tcur.getMotionAccel());
}
// called when a cursor is removed from the scenevoid removeTuioCursor(TuioCursor tcur) {
println("remove cursor "+tcur.getCursorID()+" ("+tcur.getSessionID()+")");
}
// called after each message bundle// representing the end of an image framevoid refresh(TuioTime bundleTime) {
redraw();
}
Neste post estou iniciando as experiências com os multicópteros baseados na arduino. No vídeo acima e nas fotos está minha primeira tentativa, um tricóptero baseado na duemilenove e nos sensores do wii ( wii motion plus e nunchuck) o código é desenvolvido pela comunidade do site MultiWii e foi iniciado por Alexinparis no rcgroups.com. Foi a primeira tentativa e o primeiro acidente, vamos ver se consigo fazer ele voar de verdade...
FRAME DE MADEIRA E ALUMÍNIO
MECANISMO DE CONTROLE DE YAW
CENTRO COM A PLACA E SENSORES
O frame que eu fiz é bem caseiro mas estou animado pois está funcionando.... no início eu achei que era pesado e não ia voar mas como você pode ver no vídeo até levantou vôo ( e quase saiu pela janela). vou fazer novos vídeos dos testes de vôo e postar depois.
Seeed Fusion PCBA Testing Solutions Are Now Live
-
🎊Good news! Seeed Fusion has launched its PCBA Production Testing
Solutions, providing testing support from
The post Seeed Fusion PCBA Testing Solutions...
Introducing the Bantam Tools EggBot
-
The EggBot is Back, and it’s better than ever. Bantam Tools is spreading
holiday cheer with the launch of the Bantam Tools EggBot™ Ornament Edition,
a dra...
SparkFun IoT Node for LoRaWAN® (WRL-26060)
-
The SparkFun IoT Node for LoRaWAN® development board brings an entirely new
level of usability to the often convoluted and configuration-intensive
effort...
Cabeleireiro robô na quarentena
-
Um youtuber queria cortar o cabelo durante a quarentena, então ele optou
por fazer seu próprio robô cabeleireiro.
Tags:
Teensy
robótica
Free Downloads!
-
Looking for an easy way to remember what's safe for your parrot to eat or
what plants are toxic?
Our new quick guides are here!
These guides are free do...
Fixing a 1990s LEGO Electric Train Speed Regulator
-
Before LEGO train sets moved to battery-powered locomotives with plastic
rails, all of them worked pretty much like any other train set of the era.
This m...
Commencing Fundraising to Purchase our Building
-
We are in discussions with our landlord hashing out the details about
selling the building (to us) at the end of our lease in 18 months, so we
need to get ...
Exporting KiCad PCB w/ silkscreen to Fusion 360
-
Here’s the process I’ve been using to add a silkscreen image to the
exported STEP model from KiCad to Fusion 360. The steps are: In KiCad PCB:
In Fusion 360:
What is ‘Right to Repair’ & Should You Care?
-
The Right to Repair movement and the associated proposed legislation center
around a fairly clear-cut debate with very little gray area. On the one
side ...
Inspecteur Inspection Construire Blainville
-
Oui, en plus d’uneformation universitaire en génie civil,
notreinspecteurdétient aussi lediplôme«Techniques d’inspection en bâtiment»
de l’Institut Grass...
Gootloader infection cleaned up
-
Dear blog owner and visitors, This blog had been infected to serve up
Gootloader malware to Google search victims, via a common tactic known as
SEO (Search...
My Browser Tabs Today
-
Over the course of the last few weeks I’ve collected various links and
references from various discussions. I’m copying them here so as not to…
Continue rea...
John Grouse posted a discussion
-
John Grouse posted a discussion
Using known good compass calibration values on other drones?
Just wondering if it would be safe to do a compass calibration o...
Iridium Satellite Signal Monitoring
-
Project source code at GitHub: iridium-signal-strength-monitor In a
previous article, I wrote all about Iridium satellite communication for IoT
projects us...
How to DIM LED with Arduino & Triac
-
Zero-Cross & Triac Optically Isolated Switch “Tail”:
https://www.powerswitchtail.com/pssr-zc-tail arduino:
https://amzn.to/2P12JaL RealTimeClock (RTC): h...
LIFI – AUDIO TRANSMISSION THROUGH LIGHT
-
Gagan jain has built an interesting rig called the LIFI, it allows a
simple transmission of audio using an LED for sending the audio signal and
a solar c...
Meriwether-X1804
-
Primary image
[image: Meriwether_Lewis-Charles_Willson_Peale.jpg]
What does it do?
*The Explorer*
Meriwether is an experimental explorer. He is intende...
Lynxmotion – MES Power Distribution Board (PDB)
-
Our Lynxmotion MES-PDB (Multirotor Erector Set / Power Distribution Board)
was created based on needs for our Lynxmotion MES frame system that will be
rele...
4 step sequencer
-
Messing with the Axoloti board made me want to bang constantly notes while
I am fiddling with sliders, values and parameters. First I started to bang
MIDI ...
And The Void Mooned Back…
-
I was once sitting in the cafe/bar thing in Brighton, on my own… pretending
not to be an alcoholic, drinking coffee or wine… watching the people go by,
and...
Bovine Backscratcher
-
Apparently, cows have very itchy backs, and that condition makes them
extremely unhappy. Unhappy cows produce less milk, so this is a problem.
Fortunately,...
Presto Burger 1974 revisited
-
Lets go back to 1974 and revisit my childhood making my first home cooked
meal. My mother had gotten a Presto Burger single-patty hamburger cooker
for Chri...
The Sun Sets on Robots.net
-
I made the first post on Robots.net more 15 years ago on 25 February 2001.
Since then, rog-a-matic, The Swirling Brain, and steve have written more
than 3...
Last post . . . .
-
I'm the guy on the right.
I am discontinuing this blog because the format of The Robot Report now
enables long and short articles whereas in the past, lon...
Robot ratunkowy Lego Creator
-
Za pomocą tego zestawu można zbudować 3 różne roboty. Oczywiście nie w tym
samym czasie, gdyż do budowy 1 robota, użyte zostaną wszystkie klocki z
zestawu...