Sunday, July 22, 2012

ThingiBrowse Version 1.1 for Android



Today I released ThingiBrowse version 1.1 for Android. The version 1.0 was limited to only two important Thing categories and had several bugs in the image loading process. Nevertheless, the user feedback was very good for version 1.0 and led to the implementation of search and a better Google TV navigation.

Version 1.1 provides browsing through new categories and even enables searching for Things. I fixed several bugs in the image loading process and introduced a third party image loading library for better performance and caching. Another important user interface change I needed to make was to implement a left navigation and action bar for Google TV, because it was hard to navigate from the list to the action bar.







Feature Set:
  • browse through the "Featured Things" section on Thingiverse
  • browse through the "Newest Derivatives" section on Thingiverse
  • search for Things
  • optimized left navigation and action bar for Google TV
  • optimized image loading and caching
  • bug fixes

ThingiBrowse can be downloaded in the Google Play Store:
https://play.google.com/store/apps/details?id=com.blogspot.marioboehmer.thingibrowse

Available on Google Play

ThingiBrowse is licensed under a Creative Commons 3.0 Attribution-NonCommercial-ShareAlike License by Mario Böhmer.

You may obtain a copy of the License at http://creativecommons.org/licenses/by-nc-sa/3.0/.

You can find the project source at https://github.com/MarioBoehmer/ThingiBrowse.

Keep in mind that the ThingiBrowse app and myself are in no way affiliated with Thingiverse or MakerBot® Industries, so problems with the app should be reported to me at feedback.devorama.thingibrowse@googlemail.com. I also have no control over the content which is displayed in ThingiBrowse because I simply display what the web version of Thingiverse delivers. 

Saturday, July 7, 2012

Heartbeat Rev. 2 Assembled

In the previous post I talked about the redesign of my Heartbeat board. I used Fritzing to design and fabricate the second revision of the Heartbeat board, Heartbeat Rev. 2.

Heartbeat Rev. 2 Circuit Diagram

Heartbeat Rev. 2 PCB

The custom shaped redesign was inspired by André Knörig from the Fritzing team who told me that they could fabricate PCBs in custom shapes. I decided to design the board in a custom heart shape with a hole at the top so that it even could be worn as jewelry.

It took approximately a week to fabricate and ship and I'm not going to lie to you, fabricating it with Fritzing Fab wasn't particularly cheap. It came down to 26€ after taxes and shipping. It seems a bit much for such a small board but you have to consider that you get an attractive silky white PCB board with a black finish in a custom shape. The circuit layout is double sided and the PCB is RoHS compliant and made in Germany. You also support the Fritzing project in general. Of course, if you order more units the price gets cheaper.
I could have had the board manufactured in China or somewhere else for a fraction of the price but I liked the fact that I could support the local economy. The easy fabrication service and order process was also a big plus.

The manufactured board looked really awesome as you can see here.

Heartbeat Rev.2 Bare PCB

After assembly, the finished Heartbeat Rev.2 board looks like that.

Heartbeat Rev. 2 Assembled

I thought about providing a complete kit so that anyone could recreate this project but I think it might just be easier to publish the project files and let you guys decide if you want to order and assemble a board on your own. Please respect the license though when you are using the design files. The project is licensed under CC-BY-SA 3.0. In short it means that if you build upon this work you will have to attribute me in any way and share your project designs with the community.

Here you can find the Fritzing project file for the Heartbeat Rev. 2:
https://github.com/MarioBoehmer/Open-Hardware/tree/master/Heartbeat

The board design is pretty self explanatory so I won't provide detailed assembly instructions at that point.

Here are the parts needed to assemble the project:

  • Heartbeat PCB
  • 2 x red LEDs (or any other color you like)
  • 2 x 470 Resistors
  • 2 x 100k Resistors
  • 2 x 100 F Capacitors
  • 2 x NPN Transistors (BC547)
  • Coin Cell Battery Holder
  • 3V Coin Cell Battery
  • Wires to connect Battery Holder to PCB


As I said, there is no plan to provide a complete project kit with detailed instructions right now, but that might change if there is a high demand for it.

Friday, June 8, 2012

Heartbeat Rev. 2

Last Christmas I took part in the Fritzing Fritzmas Challenge and won a special follow up price being the PCB fabrication of my Heartbeat project. The fabricated boards looked really great as you can see below.


They have a unique white finish which makes them look far nicer than the more common colored PCBs.

After I soldered in the required parts for the project I was a bit startled. Unfortunately I made a mistake when I redid the design for fabrication back then. One of the transistors was wired in the wrong way. So instead of an alternating smooth LED pulse I only saw one LED lighting up constantly.


Then, some weeks ago I visited the Fritzing team at IxDS in Berlin and met André and Stefan to give them a copy of my book as a sign of appreciation because without Fritzing the book would not have those great project graphics. André remembered my Heartbeat board from the challenge and gave me the great advice to design a custom heart shaped PCB for a new version of the board. I didn't know about it before but Fritzing Fab can also fabricate PCBs in custom shapes. So if you ever wanted to design a very special shaped PCB, give it a try.

So now I decided to design the Heartbeat Rev. 2 board in a custom heart shape.


The PCB is in fabrication right now and I can't wait to see the result. Once I verify that the board works great, I will publish the design files and if any of you is interested I might even develop a kit for you to build the Heartbeat project yourself.

Saturday, June 2, 2012

Arduino passive IR trigger for Canon EOS

The other day I wanted to experiment with external triggers for my Canon EOS 550D camera. I stumpled upon a nice open source project called Arduino Camera Control from Oleg Mazurov, the creator of the USB Host Shield library for Arduino.

The Arduino Camera Control project depends on the USB Host Shield library and the USB Host Shield from Sparkfun. It supports Canon EOS and Powershot, as well as Nikon DSLRs and P&S cameras. My main objective was sending commands to the camera for capturing images. The library does much more than that but if you want more detailed information about the library, you should read the original article on Circuits@Home.

In this post I want to show you how to use a passive infrared module for triggering the camera to take a picture. First off, the list of things you'll need for this project.



Now let's connect all the parts like shown in the Fritzing schematic.


Before you can upload this project's sketch, you'll need to install some libraries into your Arduino IDE.
Now depending on the USB Host Shield you are using, there are two variants of libraries you can install. If you are using the Sparkfun USB Host Shield then you'll need to install the following two libraries into your Arduino libraries folder (..\arduino-0022\libraries\).


If you are using the USB Host Shield 2.0 from Circuits@Home, then please install the ported versions of the libraries found here.


Now after installing the libraries you can copy the following Arduino sketch in a new sketch window and upload it to the board.

 #include <inttypes.h>  
 #include <avr/pgmspace.h>  
 #include <Max3421e.h>  
 #include <Max3421e_constants.h>  
 #include <Max_LCD.h>  
 #include <Usb.h>  
 #include <ptp.h>  
 #include <canoneos.h>  
 #include <MemoryFree.h>  
 #define DEV_ADDR    1  
 // Canon EOS 400D  
 #define DATA_IN_EP   1  
 #define DATA_OUT_EP   2  
 #define INTERRUPT_EP  3  
 #define CONFIG_NUM   1  
 //PIR definitions and declarations  
 #define SLEEP_MODE_PIN 4  
 #define MOTION_DETECT_PIN 2  
 int val;  
 class CamStateHandlers : public PTPStateHandlers  
 {  
    bool stateConnected;  
 public:  
    CamStateHandlers() : stateConnected(false) {};  
    virtual void OnDeviceDisconnectedState(PTP *ptp);  
    virtual void OnDeviceInitializedState(PTP *ptp);  
 } CamStates;  
 CanonEOS Eos(DEV_ADDR, DATA_IN_EP, DATA_OUT_EP, INTERRUPT_EP, CONFIG_NUM, &CamStates);  
 void CamStateHandlers::OnDeviceDisconnectedState(PTP *ptp)  
 {  
   if (stateConnected)  
   {  
     stateConnected = false;  
     Notify(PSTR("Camera disconnected\r\n"));  
   }  
 }  
 void CamStateHandlers::OnDeviceInitializedState(PTP *ptp)  
 {  
   if (!stateConnected)  
     stateConnected = true;  
   uint16_t rc = Eos.Capture();  
   if (rc != PTP_RC_OK)  
     Message(PSTR("Error: "), rc);  
   delay(1000);  
 }  
 void setup()   
 {  
  Serial.begin( 115200 );  
  Serial.println("Start");  
  Eos.Setup();  
  delay( 200 );  
  //PIR related  
  digitalWrite(SLEEP_MODE_PIN, HIGH);  
 }  
 void loop()   
 {  
  val = digitalRead(MOTION_DETECT_PIN);  
  //the ePIR sensor is active low so if motion is detected the output is low  
  if(val == LOW) {  
   Eos.Task();  
  }   
 }  

The sketch is essentially just an extended version of the EOSCapture example from the Arduino Camera Control library. What it does is to poll the PIR sensor for changes. The PIR sensor used here is active low, so if the PIR sensor is triggered the signal on the motion detect pin becomes low, meaning the voltage on the pin is dropping towards 0V. If that's the case, the Eos.Task() function will be called which sends a control signal to the camera instructing it to take a picture. That's all there is.

Now upload the sketch to the Arduino board and connect your Canon EOS camera to the USB Host Shield. Turn on the camera and try triggering a photo by waving your hand in front of the sensor. If the camera wasn't properly recognized by the USB Host Shield, try to select the M-mode on the camera or try to push the capture button on the camera. The board needs to establish a session with the camera before sending command transactions. If your board is still connected to your computer open up the Serial Monitor within the Arduino IDE to see if a session was opened.

If everything works out your final project should work like shown here.

video

Now you can finally take pictures of animals or people when you are not around. A good use case would probably be wild-life photography.

Wednesday, May 23, 2012

ThingiBrowse for Android


Some days ago, I released the Android version of ThingiBrowse. I first released ThingiBrowse for windows phone as part of a Nokia app promotion program. But since my real passion is Android, I immediately started to develop the Android version of my Thingiverse browsing app. You don't have to fear that this is a terrible try to port an app across platforms. ThingiBrowse for Android was designed from ground up with Android development guidelines in mind and by using the typical Android platform behaviour and look and feel. I don't claim to have followed all the principles in the guidelines, but I tried to incorporate as much as I could in the timeframe.

ThingiBrowse may seem a bit slow when you are browsing on your mobile network, because Thingiverse doesn't provide an API for browsing purposes yet, so I have to parse the web data which is a rather slow approach. Nevertheless, the user experience in my opinion is still pretty good and I personally love to browse the Thingiverse where ever I go.

ThingiBrowse for Android is optimized for phones, tablets and GoogleTV.





Feature Set:
  • browse through the "New Things" section on Thingiverse
  • browse through the "Popular Things" section on Thingiverse
  • check out Thing details (File downloads not supported, yet)
  • view Thing images in the gallery
  • optimized for phones, tablets and GoogleTV
  • language support for english and german

ThingiBrowse can be downloaded in the Google Play Store:
https://play.google.com/store/apps/details?id=com.blogspot.marioboehmer.thingibrowse

Available on Google Play

ThingiBrowse is licensed under a Creative Commons 3.0 Attribution-NonCommercial-ShareAlike License by Mario Böhmer.

You may obtain a copy of the License at http://creativecommons.org/licenses/by-nc-sa/3.0/.

You can find the project source at https://github.com/MarioBoehmer/ThingiBrowse.

Keep in mind that the ThingiBrowse app and myself are in no way affiliated with Thingiverse or MakerBot® Industries, so problems with the app should be reported to me at feedback.devorama.thingibrowse@googlemail.com. I also have no control over the content which is displayed in ThingiBrowse because I simply display what the web version of Thingiverse delivers. 

Friday, April 27, 2012

ThingiBrowse for Windows Phone


As an enthusiastic MakerBot Operator and Thingiverse user, I was keen on checking new 3D printable designs on the go, optimized for my mobile devices.

Since the Thingiverse site is not optimized for mobile browsing I decided to create a native app for the Windows Phone platform to provide users with the possibility to check out the digital designs in their phone's look and feel wherever they go. User's of the Android platform shouldn't be worried as I am already planning the Android version of ThingiBrowse.

Some days ago, I released the first version of my free open source Windows Phone app ThingiBrowse. With ThingiBrowse you can browse through the 3D model database of Thingiverse, a free 3D modelling and DIY fabrication community created by MakerBot® Industries.


Feature Set:
  • browse through the "New Things" section on Thingiverse
  • browse through the "Popular Things" section on Thingiverse
  • check out Thing details (File downloads not supported)

ThingiBrowse can be downloaded in the Windows Phone Marketplace at:
http://windowsphone.com/s?appId=9ce2de77-787e-47fb-bbad-c6b6879273a1

Download for Windows Phone

ThingiBrowse is licensed under a Creative Commons 3.0 Attribution-NonCommercial-ShareAlike License by Mario Böhmer.

You may obtain a copy of the License at http://creativecommons.org/licenses/by-nc-sa/3.0/.

You can find the project source at https://github.com/MarioBoehmer/ThingiBrowse.

Please note that I am not affiliated with Thingiverse or MakerBot® Industries in any way and that you should contact me at feedback.devorama.thingibrowse@googlemail.com if you have any problems with the app.

Sunday, April 22, 2012

3D Printing, MakerBot and 3D Models

Since last year I really wated to get into 3D printing. I can't really remember where I heard about this revolutionary idea for fabricating your own digital designs first, but I remember that I wanted to be part of this movement immediately. At that time however I was really caught up in some projects, the biggest one being writing the book about Android and ADK. Shortly before christmas however I stumbled across an offer I couldn't refuse, but more to that later. With this blog post I wanted to let you know that you will hear more about 3D printing in the future in my blog.

3D Printing

What is 3D printing? The fabrication method of 3D printing is known in the industry for several years now. Companies have huge machines for rapid prototyping of their products. Those machines take digital designs of 3D models and fabricate them as physical objects. Depending on the material used there are several approaches to print those designs. The industrial 3D printers usually print binding material onto layers of powder of the desired material. You can see one of those industrial printers here. The only problem with those printers is that they are very huge in size and that even the cheapest models cost as much as a new car (approx. > $15.000). As you can imagine, you won't find those printers on a normal person's desktop at home. That's the reason why this fabrication technique was exclusive to big companies and generally not known to the public.

MakerBot Industries

But then there was a small company, in Brooklyn, New York, called MakerBot Industries which had the goal to bring 3D printing to the masses. They have build their great products and infrastructure based on the early works of the RepRap project which was already known in the maker community and can be recognized as the pioneer project of 3D printing for the average person. However, the MakerBot team constantly improved their 3D printer designs, tools and their infrastructure up to a point where it got recognized by the mainstream media and broadly across the maker scene. MakerBot Industries offer several types of 3D printers from single extrusion units like the Thing-O-Matic (formerly Cupcake CNC) to bigger multi extrusion units like the Replicator. You can even get extensions which let you not only print with plastics but also let you extrude eatable things like chocolate, dough and so on.

MakerBot Thing-O-Matic

Open Hardware and DIY 3D printers like the MakerBot Thing-O-Matic have the advantage that they are very affordable (usually below $1100) and that they can use cheap printing materials like PLA or ABS. With the help of open source software ReplicatorG, digital designs can be converted into instructions for the 3D printer. What happens then is similar to the industrial printing process. The printer prints layer by layer. The big difference is that there is no binding material printed on powder. They use a extrusion technique for melted plastics. The plastics are heated up to their melting point (usually 225° Celsius) and extruded onto the moving path of the bulding platform.

As I told earlier I wanted to get into 3D printing for quite some time and after I read about several printers and their supporting community, I wanted to call myself a MakerBot Operator. A short video clip of my Thing-O-Matic shows the printing process of the open hardware logo as a 3D object.


Printed Open Hardware Logo

3D Models

So how are 3D designs created and where can you get design files online?

You can use a broad range of 3D modelling programs like Blender, 3D Studio Max and Google SketchUp, just to name a few, to design your models. Google SketchUp is the most beginner friendly program to design simple objects to start with. It has also a good plugin support to convert the designed objects into a file format which ReplicatorG can handle (.stl).

STL view of 3D Tequila Tray

A guide for creating objects using Google SketchUp can be found here.

If you aren't the best 3D model maker or if you just want to see what other's came up with, you definetely need to check out Thingiverse. Thingiverse is a free 3D modelling and DIY fabrication community created by MakerBot Industries. Users share their digital designs, derive their designs from each others work, give feedback and enjoy to build up a community around 3D printing. You can browse through the designs, comment on them and you can download the designs for fabrication. The majority of files can be used for 3D printing, however there are also designs for laser cutting and eggbotting.

There are also commercial fabrication services like Shapeways. They provide the service of fabricating your digital designs in several materials, so you are not only restricted to plastics. Registered users can also sell copies of their designed objects. As convenient as those kinds of services are, nothing beats the concept and the good feeling of DIY and self printing.

Self-printed Tequila Tray