chose a language

3DWebfier - The OPEN project

3D Webfier v1.0

 

The fact

 

The spreading of 3D printers is giving hint to the creativity of many people, including myself, it's great to draw an object and then send it to to the printer, you will be fascinated to see how a thin wire, like raw material, fluid, materialize your idea.

 

But we realize that time is passing, for a complex object sometimes also needed from 6 to 10 hours before it is completed.

 

Thus we have a new requirement: it would be great if our 3D Printer can be remotely controlled time to time from the office or from our car, check the progress of work and even stop, in case of emergency.

 

Solution available so far

 

Ok, I know that someone has already thought this in many ways, you may decide to use the old laptop connected to the router of your home or office, or the most easy, definitely, take a Raspberry PI as a front-end Internet for your printer 3D. Before start this project, our question was: It’s really cheaper, smart, and let me say “thing of maker”, to take another PC (Raspberry is) to substitute a PC?

 

The Idea

 

Our idea is to use our development board PIC-AP-BOARD (or any board with similar characteristics, a Microchip PiC24 such this one ) connected via USB to the printer 3D and WiFi to home router via a WiFi module with serial interface HLK-RM04  

Firmware will be easy upgradable from a USB Pen drive or WIFI

First of all we need to configure a Virtual Com on our PC, briefly a Virtual Com maps an ip address to a logical Com Port, we use for this work the free software VSPM Virtual Serial Com and we will control our printer with Pronterface, from another room, the office or from another city.

3D Webfier v1.0 

 

 

Likewise we may also use a tablet or a smartphone to get the printer status and if you need to lock it.

See below the solution in both way:

1)      one using Serial Wifi Module (need for connecting from everywhere at the 3d Printer in your home

2)      Using a Serial Bluetooth module (very cheap, useful in case you stay in a range of about 30 ft. Imagine to control the 3D printer progress placed in the garage from an App on your smartphone, while you are dinning with your friend at the first floor of your house.

 

3D Webfier v1.0

To complete the solution we have in mind a wireless IP camera connected  to the Home Router WIFi to provide visual feedback for evaluating the quality of processing and take action in case of problems before the printer have consumed meters of filament.

 

Hardware description

Our goal is to give to the Makers community an Open option making a very cheap board with minimal components and really easy to realize itself. Two option Wifi or Bluetooth                   (very very cheap, more or less 12 Euros for BT solution)

Note: firmware update  is available in USB Key mode, we are planning  also to update directly from WIFI via UART bootloader.

Power required: 5V DC Regulated (take from  the 3D Printer power supply or using a 5Volt/500mA wall power adapter

Power consuming: about 200mA

Processor:                           PIC24FJ64GB002 ,16BIT, USB-OTG 8K Ram,16Mips@32Mhz

Program Memory                  64K Flash

Com Interface version:               

  • HI-LINK HLK-RM04 Serial Port-Ethernet-Wi-Fi Adapter Module (Wireless: IEEE 802.11n, IEEE 802.11g, IEEE 802.11b; Wired: IEEE 802.3, IEEE 802.3u)

           http://www.hlktech.net/product_detail.php?ProId=39

  • Bluetooth serial module HC-05 class2 certified 30ft/10mt coverage

           http://www.seeedstudio.com/wiki/images/4/48/HC-05_datasheet.pdf

 

 

We are finalize on this days the schematic and some board we intend to bring at the Makerfaire event( if approved) , below a preview of the 5by5 cm board:

 

 3D Webfier v1.0

 

 NEWS


First video preview of a test join a Aduino Mega2560 with firmware GRBL.

Demo Video

 

3D Webfier v1.0

 

3D WebFier first prototype

                                                                                        First PCB prototype in WIFI version


                                                                                     First PCB prototype in Bluetooth version
 

Software description

  

MPlab IDE Microchip Programming framework based on C30 Compiler for the 16bit family.

C language programming, the program  software of 3DWebFier is based on USB Microchip Stack and a state  machine algorithm for manage the task USB In/Out, Serial In/Out up to 250000 bps maximum   

 

 

Below the main section of the program (it is released in Open Source)

 

//******************************************************************************
//******************************************************************************
// Main
//******************************************************************************
//******************************************************************************


int main (void)
{


          // Initialize the processor and peripherals.
          if ( InitializeSystem() != TRUE )
              {
              while (1);
              }


              #if defined (__PICAPBOARD__)
                     PrintDisplay((char *)Menu[0],(char *)Menu[1]);
               #endif


                ALTERNATE_Act = VERIFY_QUEUE_IN_UART_DATA;
             

               // Initialize USB layers
              USBInitialize( 0 );

              while(1)
                       {

                       Get_in_uart_data();

                       USBTasks();

                       Get_in_uart_data();

                      if(!USBHostCDC_ApiDeviceDetect()) /* TRUE if device is enumerated without error */

                        {
                        APPL_State = DEVICE_NOT_CONNECTED;

                        }


                   switch(APPL_State)
                      {
                      case INITIALIZE:

                                 APPL_State = DEVICE_NOT_CONNECTED;

                                 break;

                      case DEVICE_NOT_CONNECTED:

                                #if defined (__PICAPBOARD__)
                                              if(displayOnce == FALSE)
                                                 {
                                                 PrintDisplay((char *)DeviceDetached[0],(char *)DeviceDetached[1]);
                                                 displayOnce = TRUE;
                                                 }
                                #endif

                               if(USBHostCDC_ApiDeviceDetect()) /* TRUE if device is enumerated without error */
                                    {
                                    APPL_State = DEVICE_CONNECTED;

                                    #if defined (__PICAPBOARD__)
                                             displayOnce = FALSE;
                                    #endif
                                     }
                               break;

                     case DEVICE_CONNECTED:

                                   #if defined (__PICAPBOARD__)
                                          PrintDisplay((char *)DeviceAttached[0],(char *)DeviceAttached[1]);
                                   #endif

                                   APPL_State = READY_TO_TX_RX;
                                   break;

                    case GET_IN_USB_DATA: //Call Read for USB CDC Data IN

                                   APPL_State = Get_in_usb_data();
                                   break;

                    case GET_IN_USB_DATA_WAIT: //Verify end of Read for USB CDC Data IN

                                  APPL_State = Get_in_usb_data_wait();
                                  break;

                    case SEND_OUT_USB_DATA:

                                 APPL_State = Send_out_usb_data();
                                 break;

                    case SEND_OUT_USB_DATA_WAIT:

                                 APPL_State = Send_out_usb_data_wait();
                                 break;

                     case SEND_OUT_UART_DATA:

                               APPL_State = Send_out_uart_data();
                               break;

                     case READY_TO_TX_RX:

                             switch(ALTERNATE_Act){

                                       case VERIFY_QUEUE_IN_UART_DATA:

                                                     if(CountInUartByte > 0)
                                                                 APPL_State = SEND_OUT_USB_DATA;

                                                      ALTERNATE_Act = REQUEST_READ_IN_USB_DATA;
                                                      break;

                                        case REQUEST_READ_IN_USB_DATA:

                                                   APPL_State = GET_IN_USB_DATA;
                                                   ALTERNATE_Act = VERIFY_QUEUE_IN_USB_DATA;
                                                   break;

                                        case VERIFY_QUEUE_IN_USB_DATA:

                                                   if(CountInUSBByte > 0)
                                                        APPL_State = SEND_OUT_UART_DATA;

                                                   ALTERNATE_Act = VERIFY_QUEUE_IN_UART_DATA;
                                                   break;
                                       }

                            #if defined (__PICAPBOARD__)
                                    ControlButton();
                            #endif

                            break;

                             default :

                              break;
                      } 

    }
}

 

 

Below is a video of the test run with the module 3dWebfier and the printer Falla3D , soon we will test the module 3dWebfier with the Wasp 3D printer.

 Find a detailled tutorial to make your ZUBI (born from 3DWebfier) at this Link, firmware and gerber files  of the PCB project available on the download section (registered users only, its free :-) )   Download Area

 

 

You have no rights to post comments