First time designing an actual GUI, hopefully it isn't too unintuitive. :'D
seen from China
seen from Argentina
seen from Russia

seen from Australia
seen from China
seen from United States
seen from Brazil
seen from Germany
seen from United States
seen from Japan

seen from United States
seen from Malaysia
seen from Uruguay

seen from United States
seen from Netherlands

seen from United States
seen from United States
seen from United States
seen from Germany
seen from Yemen
First time designing an actual GUI, hopefully it isn't too unintuitive. :'D
After about two weeks of almost non-stop coding, I am finally at the point (again?) where I have something to show that works. Since the last post I made here, I have rewritten all the code for this project, added many new features, and got the project up to a working state. You can find my Github account here to see pretty much every single thing I did software-wise.
In this video I'm demonstrating connecting the device to the computer, having it get the latest tweet, and then displaying new tweets as they are posted. Behind the scenes though, it's doing even more things like applying settings read from a config file, watching for button presses, and managing Twitter communications. I apologize for the clicking sound in the background of the video. The autofocus may have taken a beating when my mom dropped this camera. :'c
Even though everything is in a working state, there are some things that still need to be completed:
Adding notification functionality to the device (when the text scrolling is paused, when rainbow mode is activated, etc)
Error logging
Making a GUI for the host program
Extensive bug testing/fixing
Some other things that I know I have missed
If you have any questions about anything, please feel free to ask me them here. c:
It has been a short while since I last posted an update here, but I did get a ton of work done during that time.
I successfully assembled the PCB. The finished board passed the smoke test, and works perfectly. Hand soldering the SMD components to the board was very straightforward, and did not really create any problems. I also finalized the device's code a couple days ago, and I'm now moving on to developing the host-side application.
I was unable to find any system/native GUI libraries (for better cross-platform support?) for Processing, unlike Python, which does. However, trying to find a USB HID library for Python that was cross-platform, and required no extra drivers proved to be difficult. As a result, I decided to try something completely new.
Last night, I started experimenting with Java in the NetBeans IDE, after seeing some Swing UI examples. Since there also appears to be a good amount of USB HID libraries for Java, I'm sure I will find something that easily and reliably works. Twitter4J, the Twitter library I used in Processing, also works here. And coincidentally, I will be taking a Java class this next semester (which begins in 4 days), which should be helpful. I have a pretty good feeling Java is going to be the platform I will use for the host program.
On another note, if I ever to decide to actually bring this device to "the market" (as in, selling them), I will most likely need to remove "Twitter" from its name. So far I am currently undecided on a final name, but the process did lead me to the idea of adding support for other services. A future version of the TwitterScreen could have support for notifying/reading your latest email, or basic Tumblr support. It all depends on what is possible with my coding abilities, and available API's.
A few days ago, I received the 3 PCBs I ordered for the TwitterScreen. They all came back perfect as expected, and I'll assemble them once I get the device's firmware worked on a bit more.
As of today, I finished getting the USBaspLoader bootloader (the bootloader that USnooBie was based off of) working perfectly. This will allow the user to easily (unplug, place jumper, plug in, upload) update the device's firmware without the requirement of any extra hardware, like an AVR programmer. And since there are still ISP headers in the finished board prototype, both updating methods will still work.
The new white background you're seeing in these pictures is actually this new ESD work mat I received for Christmas. This should hopefully prevent any static problems/help a bit with the assembly of this project, and all further ones. Speaking of Christmas, expect a post detailing a side project I finished soon.
Just got the PCB for the TwitterScreen ordered from OSHPark. Hopefully it will be here before the 23rd of this month, but I'm a little worried. However, if it does end up being late, at least I'll have extra time to get the code for it finalized. (and potentially prevent the rare chance of a problem at airport security (not that it should happen, this is a finished PCB after all (am I seriously using nested parenthesis now)))
I also made a few more changes since I posted the previous update:
I'm attempting surface mount soldering this time around. If hand soldering 1206 sized parts isn't too difficult, I'll probably keep at it.
I re-added the 'sleep' button, but made them both serve as "function buttons" instead. This will allow for the user to easily assign what button they want to do what in the host software, as well as allow for additional software features. (planning to have more than just Twitter updates on this thing)
I changed the status LEDs a bit, a red one will always be on when the device has power, and the green one will be on when it's successfully connected to the host.
I'm trying out using 3 of these 6 pin jumper wires on Sparkfun. They're not the best solution, but should work fine for now.
Expect another update tomorrow, since I should be receiving the laser cut parts in the mail, and I might even have that overdue picture completed by then too. c':
Ponoko (the place where I get my designs laser cut) recently had this 30% off weekend, in "celebration" of Black Friday and Cyber Monday. Since laser cutting can get a little expensive (compared to what you get, anyways), and the Christmas delivery window was closing, I decided to get the enclosure design finalized ASAP. This was going to be done sooner, but I had Kim's picture at the top of my priority list. Don't trust me with deadlines if it involves shading. (it's not actually that bad, it's just me being retarded :c )
To get the designs sent off, I had to make any major hardware changes to the PCB that I needed to, now. The USB HID serial deal from my previous post is something that will require major hardware changes. (usb connector, removal of the old USB thing, etc)
The first part (or what I thought) of getting USB to work was getting the USnooBie bootloader installed. This bootloader would allow the TwitterScreen's user to upload new code to the device, without an external programmer. Unfortunately, getting this bootloader to work was a pain. Even after about a day of working on it, I made no progress at all. Not long after giving up for now (I will be making this thing work some way or another), I realized that this bootloader was not mandatory. Still, having this bootloader would making things a lot simpler hardware-wise. I'll have to deal with including a standard 2x3 ISP header for now.
Fortunately, the HID Serial code library worked right after getting it set up. After a while of messing with it, I noticed I could replace the "sleep" button with a software based solution. However, this proved to also be a pain to get working for now, so I'll save it for the near future. As for the rest of the system, I was able to get the HID Serial library working well enough to finalize the locations of the "important" parts on the PCB.
That reminds me, I am not sure why I didn't start out with Processing for the host-side application. It is based on a programming language I already know a decent amount of, and it was just easier overall. Since that HID Serial code library comes with a library for Processing, as well as Twitter4j, I will be basically moving to that platform.
The next step was adapting the enclosure design to the modified PCB, which didn't take long. After a few painful hours of getting my Sketchup designs to cooperate with Illustrator (never used Illustrator until now), I was able to send the finished enclosure designs out to be laser cut. They should be here in just over a week if things go right. I should also mention that Ponoko did not have any more of the fluorescent green acrylic at the time of ordering, so I had to go with the next best color (I think?) : Translucent Gray
Once again, my top priorty is that picture for Kim, which I am actually making progress on. Once that is completed, I'll get the PCB design finalized and sent off for manufacturing. Then, I'll finish coding the thing. (this is not the most ideal order, but hardware changes should not arise anymore) If everything goes as planned (aka: I stop procrastinating), both of these projects should be completed before Christmas.
Also, here's something related to my upcoming projects. c:
Social Prompter
http://digitaldeepdish.eventbrite.com/
The design part of this project is almost near completion. The PCB design has been finished, with all errors corrected. I used eagleUp to import the finished board design into Google Sketchup (I really should be using something like Solidworks by now :c), added a few of the main components to the board, and made a few small adjustments.
While this thing is still a prototype, everything should line up decently once it is built. And it should also work.
All that is left now is any final adjustments, and getting this thing built.