Dangerous Prototypes

In development => Project logs => Topic started by: scasagrande on February 19, 2014, 04:20:01 am

Title: antiAFK
Post by: scasagrande on February 19, 2014, 04:20:01 am
Hey everyone, back with another project. The antiAFK is something I originally started working on almost a year ago, but its only been since 2014 started that I've been making real progress on all my projects.

Plus, I just finished my MSc the other day so now I've got all the time to work on my OSHW!

The antiAFK is essentially a stripped down Arduino Leonardo with the intention of sending occasional keyboard commands to the attached PC with the intention of preventing the user from being logged out of online games due to inactivity. This can help on high population servers where being kicked back to the login queue can mean that you miss a group event. It randomizes the time between presses (with a min and max), the key from a set of valid keys, and the duration of the key press event. The period, variance, and valid key set are configurable by the user through the CDC serial port.

(http://http://imgur.com/UENa30U)

Here is the video I made today about the antiAFK:

http://www.youtube.com/watch?v=YMG83dEu700 (http://www.youtube.com/watch?v=YMG83dEu700)

All sources can be found at GitHub:
- PCB: https://github.com/Galvant/antiafk-pcb (https://github.com/Galvant/antiafk-pcb)
- Firmware: https://github.com/Galvant/antiAFK_firmware (https://github.com/Galvant/antiAFK_firmware)

I also have the board available on my website at http://galvant.ca/shop/antiafk/ (http://galvant.ca/shop/antiafk/) . I feel bad asking, but I would appreciate any support if you are interested. I'd rather work full time on open source hardware than going out and getting a "proper" job. So any help, even if its just comments/suggestions are helpful.
Title: Re: antiAFK
Post by: joeforker on February 19, 2014, 05:22:27 am
Tell me more about your hand-soldered VQFP, I am impressed.
Title: Re: antiAFK
Post by: scasagrande on February 19, 2014, 02:16:51 pm
[quote author="joeforker"]Tell me more about your hand-soldered VQFP, I am impressed.[/quote]

These were the first boards I soldered together that featured parts without exposed leads. I used my reflow/toaster oven, but I did not use enough paste for several of them. Thankfully, I had left plenty of pad exposed on the PCB. I applied plenty of flux and a small amount of solder to my iron. Just dragging over the pads then sucked up the required amount under the pins to make the connection. It went surprising well. In fact, you could probably do the entire board by hand without the initial reflow step so long as you do not require the center pad to be connected. Just make sure to leave enough exposed on the PCB to give you something to work with.
Title: Re: antiAFK
Post by: Sjaak on February 24, 2014, 08:01:06 pm
The exposed pad is also used to dissipate the heat generated by the small IC. Mostly it is not electrically needed, but just thermocally (?). For prototyping you prolly get a way with it.
Title: Re: antiAFK
Post by: scasagrande on February 26, 2014, 11:23:56 pm
[quote author="Sjaak"]The exposed pad is also used to dissipate the heat generated by the small IC. Mostly it is not electrically needed, but just thermocally (?). For prototyping you prolly get a way with it.[/quote]

True. Thankfully I'm not sinking/sourcing any real amounts on the micro so heat dissipation isn't a problem here.
Title: Re: antiAFK
Post by: joeforker on February 28, 2014, 02:18:50 am
I soldered a small exposed pad IC (with normal leads) successfully using a hot air gun. The data sheet will tell you whether the pad is electrically important, and usually recommends connection to ground.
Title: Re: antiAFK
Post by: dougal on February 28, 2014, 01:59:19 pm
I hate to sound negative, but isn't the ATMEGA32U4 a bit overkill for this?

I did something similar last summer using a Digispark, which uses the ATTiny85. In my case, I used the DigiUSB library to emulate a mouse instead of a keyboard, with a small amount of movement to prevent the screensaver from activating.

http://digistump.com/board/index.php/topic,1018.0.html (http://digistump.com/board/index.php/topic,1018.0.html)
Title: Re: antiAFK
Post by: scasagrande on February 28, 2014, 06:07:26 pm
[quote author="dougal"]I hate to sound negative, but isn't the ATMEGA32U4 a bit overkill for this?

I did something similar last summer using a Digispark, which uses the ATTiny85. In my case, I used the DigiUSB library to emulate a mouse instead of a keyboard, with a small amount of movement to prevent the screensaver from activating.

http://digistump.com/board/index.php/topic,1018.0.html (http://digistump.com/board/index.php/topic,1018.0.html)[/quote]

Normally I would agree, I wanted to make it compatible with the Arduino Leonardo.

[edit] After taking a closer look at the project, I might be able to transition to using their bootloader and libraries for a future revision. Thanks for pointing it out.
Title: Re: antiAFK
Post by: exapod on February 28, 2014, 09:57:03 pm
[quote author="joeforker"]Tell me more about your hand-soldered VQFP, I am impressed.[/quote]
It Is easier and faster to solder qfn/vqfp with an exposed pad than a ssop, just use this method http://www.youtube.com/watch?v=d-f-SBC0GrU (http://www.youtube.com/watch?v=d-f-SBC0GrU) with a good flux and iron.

( ! ) Fatal error: Uncaught exception 'Elk_Exception' with message 'Please try again. If you come back to this error screen, report the error to an administrator.' in /var/www/dangerousprototypes/forum/sources/database/Db-mysql.class.php on line 696
( ! ) Elk_Exception: Please try again. If you come back to this error screen, report the error to an administrator. in /var/www/dangerousprototypes/forum/sources/database/Db-mysql.class.php on line 696
Call Stack
#TimeMemoryFunctionLocation
10.01672081288session_write_close ( )...(null):0
20.01732212880ElkArte\sources\subs\SessionHandler\DatabaseHandler->write( )...(null):0
30.01732213656Database_MySQL->query( ).../DatabaseHandler.php:119
40.09272352392Database_MySQL->error( ).../Db-mysql.class.php:273