Welcome to the Thornlea NoCO2 Project Site

Welcome to the official website for the Thornlea Secondary School, NoCO2 Launcher Project. For first time visitors, please start from the bottom of the blog and read your way up, doing so will allow you to read "up" to where we are today. There is also a convenient Archive of posts on the right sidebar under "Blog Archive". There are options to subscribe to the blog at the bottom of the page.

Enjoy,
-Calvin

Saturday, September 7, 2013

Project Update September 2, 2013

Coming Down to the wire here! School starts tomorrow! Have Programmer Rico Teamviewer'ing in to help me do the Visual Basic Programming, have an all new background and Thornlea S.S. logo's to go with it. Still no luck on the GPIO32 though.

Lets get updated!

First off,
 
Here we have a modification from the initial design, I realized that if we did a Plexiglas side, it would look great! For the first run anyways, However, due to this unit being stored in a wood shop, it would eventually be COVERED in sawdust, and having a little under 1/4" gap between the track guardrail and the Plexiglas would end up full of sawdust with no way of removing it.
 
To combat this problem, I simply made up the difference in height with a piece of material 5/8" wide (because that's how wide the original oak Plexiglas supports were), and as tall as the track barrier. It just so happens that after I do that, the windows are 3.5" tall, which is the height of a 2x4 standing on it's narrow side.
 
After I Grooved a 1/4" hole into the new Plexiglas supports and made the front pillars/Race Time Bar supports, as well as grooving those 1/4", I made a tongue on the bottom of the front pillars so they would slide in to secure them. The grooves are slightly offset toward the track so that the pillars only fit in one way for ease of re-assembly.
 
You may be wondering why the groove is 1/4" if I'm using 1/8" Plexiglas. The reason for this is safety, I am using two pieces (not laminated), placed side by side in the slot. Should one piece be cracked or penetrated by a object such as an axel shaft or splinter of wood shattering off of a failed model dragster, there is a good chance that it would hit the second piece of glass after losing most of it's momentum in the first piece, therefore either imbedding itself or becoming lodged in between the two pieces.

Here we see how I cut the Plexiglas, I realized after, I could've saved myself the trouble and set-up time by cutting it on the Mitre saw.

Here is the final fitting of the Plexiglas for one wall. The pillar tongue is not glued or nailed in place and is simply friction mounted to the barrier wall. it is held in place from above by a single 3" wood screw going vertically through the top Plexiglas support.
 
 
In the next update, I will have the full unit finally assembled and preparing for the electrical. I look forward to getting that and the program done. If anyone can figure out how to program for this thing, and wants to, I would most certainly be willing to test it. To collaborate, send an e-mail with your intentions to cal920c@gmail.com. Be sure to include Modelcarlauncher.blogspot.ca in the subject line.
 

Monday, September 2, 2013

Project Update August 16, 2013

A couple things have happened since I've posted the Relay16 code.

First, I'm back on track after successfully sourcing a 1/4 x 1/4 shank router bit after the last one broke. therefore I can get back to working on the enclosure.

Secondly, my Alex was unable to get the GPIO32 working. If ANYONE would like to take the RELAY16 code and add a section for the GPIO32 for this project. OR even write a whole new program for it (agreeing to release it open source), I am open to that idea and almost anything you can come up with at this point. You can download the user's manuals for the boards at the following links:

RELAY16 Manual: http://numato.com/productdoc/usbrelay16/usbrelay16.pdf

GPIO32 Manual: http://numato.com/productdoc/usbgpio32/usbio32dv1.pdf

Additional information can be found on these boards at the following web addresses:

RELAY16: http://numato.com/16-channel-usb-relay-module

GPIO32: http://numato.com/32-channel-usb-gpio-module

If you have any questions, you can e-mail me at cal920prod@gmail.com, or message me on Facebook: Facebook.com/cal920c, or Tweet me @cal920c (tag modelcarlauncher.blogspot.com in the tweet, and we'll make a dialogue). I have very limited experience in programming, but anything you send me will be opened and inspected by a trusted (on my end) third party to get a second opinion, and tested before it's posted on the blog.

Tuesday, July 16, 2013

RELAY16 Open Source Code

Using this code means that you adhere to our open source agreement. Is provided as is and we accept no responsibility for damage to your equipment, hardware or software. It has been tested to work with the RELAY16 module from Numato Labs.

https://app.box.com/s/38y1qij2ivma8eo455ia

You may need to rename the file extension to .zip

Once you have the file downloaded, extract it and open it in Visual Basic 2010. Personally I used Visual Basic 2010 Express.

Monday, July 8, 2013

Measuring it up!

Time has come! Final assembly (minus Solenoid valves *insert "Awwhs here", which aren't set to arrive until at least September) is well underway. During the final week in the school workshop, I got the prototype down and learned a few things along the way, including: your math may be impaired by heat (because 11+0.75+0.75 = 14 right?). More lessons learned below.


 Thornlea's existing launch system (the while triangle with all the stickers on it). You can see the Kel-Accel Race timing system as well.

 A view of the Thornlea workshop and the first section of the 64' long modular track, which can be reduced in length down to 16' + an 8' run off. (an apostrophe (') means a measurement in feet)

 Deciding how I am going to mount the race tree. At the beginning I considered doing a flip up unit, however the thought of this being a school environment caused me to re-think that idea.

 A quick measurement of how high the existing unit was before I dismantled it.

 After removing the existing launcher I realized that there was an extra 0.5" spur out the back. (a quotation mark (") means a measurement in inches).

 A quick measurement deemed the existing timing system to sit 12" away from the back of the track. After talking with the teacher, it was deemed a good idea to integrate the mounting of it into the new launcher.

 The Prototype, after much cutting and hot glue, it's finally complete. The top of the unit will hinge upward to allow the cars to be staged.

After cutting out some pieces and seeing how I would do final construction. this mock-up was at a point where I thought I would make the top out of acrylic glass, once again, it was deemed not a good idea in a educational environment to have such a easy to break material in a place where someone could potentially fall on top of it. The frame wood was then re-purposed for the side acrylic glass windows.

 A quick test fit, and seeing where the provisions for the Race timing unit would be.

The final width of the launcher is 13"

A view of the inside of the launcher, the sides will be acrylic glass, that was spectators can see without taking a huge blast of compressed air in the face.

 The 45 degree piece at the back top that will hinge the top. This is where I learned that it helps to pay attention in math class. Luckily my math teacher dropped by right in time for me to ask for help on the calculations. in the end, I missed by a little bit, however another cut on my table saw at home should solve that issue.

 A view of how the 45 degree piece would fit into the final design.

 That's all for the shop folks. It's working at home from here on in.

The box of stuff I took home to build this enclosure. The tools in the top left of the photo are provided by Prime Mechanical Co. (of Toronto, Ontario, Canada). I would like to thank them as well for providing the hard drive space to hold all the drivers and software for this project in addition to providing tools for assembly.

When I got home, I went right to work assembling the pieces I already had. The solenoid plate measures 13"W x 10"H. The 45 degree piece is a little more than 0.75" on the edge... which causes a problem which I will have to solve.

 
 As you can see from this view, I've attached both sides however have not yet cut or attached the acrylic glass.

Replacement GPIO Module

The new Replacement GPIO32 module from Numato has arrived! I must express my sincere gratitude to Numato Labs for providing a replacement via express UPS. I love it when companies stand behind their product.

 Arrived in a mighty brown UPS bag, with the Numato package inside.

 The new module nicely bubble wrapped for protection.

 The new module inside the sealed Anti-static bag.

 After grounding myself, I extracted the GPIO and tested it in HyperTerminal to see that it worked!

Sunday, June 16, 2013

Update 16/06/13 Controllers

UPDATE 16/06/13: The making of the acrylic launch buttons/controllers has been interesting, using a piece of 1" Acrylic rod cut 4" long and drilling a hole vertically through it. I will be using 4-wire Telephone extension cables to connect the controller (2 wires for the switch, 2 for an LED so that users can confirm that the controller is plugged in properly).

As you can see here, I kinda messed up the first one



The trick according to my teacher was to go slower.

The next one I did was essentially almost perfect

and the final one was a pain and I broke the drill press at school in the process.


But in the end, I succeeded

Lessons learned: drill slowly (maybe only a couple cm at a time, and allow 5-10 minutes to cool down, don't rush it), if your going to cool it with water, do it from the beginning or don't do it at all, otherwise it separates (as you can see halfway through the second one), never stop the bit inside the acrylic or thats the end of it unless you can pry/spin it off, lastly, it's important to have an emergency stop, that saved my butt more than 4 times on this project.

Saturday, June 15, 2013

Wrap up of working at school

With Summer Vacation around the corner, I have to face the reality that this is no longer a school project and have taken it under my wing as what is probably the most expensive/advanced personal project I've ever done. I would like to take a moment to post from my facebook: https://www.facebook.com/cal920c/posts/10152952895525512 :

Modelcarlauncher.blogspot.com hit another snag today, the program it seems is incompatible with Windows Xp (SP2 & SP3). Working with the programmer (unsure if he wants to be named) on a solution, or if we should just write it in the manual. With exams right around the corner, I hope this thing moves more smoothly from now on! gotta thank Numato Lab for helping me diagnose problems and for the boards. Without them over 50% of this project would've been impossible. thanks to my consulting teams as well. Hopefully this thing will be ready for final delivery to Thornlea S.S. (my school) by September. Monday and Tuesday I'll have to collect everything I need from school one final time before the summer, as well as send the DOA GPIO32 (which Numato has graciously UPS'd a new one to me) back to Numato for diagnosis.

As mentioned above, I'd like to thank Numato Labs for their ongoing support of this project. I will soon have some more pictures, this time of the launch controllers (the boards haven't done much as the GPIO is DOA). In addition once the code for the Relay is done (without the GPIO), i'll post that separate from the final code for anyone who doesn't wish to use the GPIO with their unit. Right now as stated were having some Operating system compatibility issues.

Tuesday, June 4, 2013

Update on situation

UPDATE 07/06/2013: Hoping to speak with Consulting Team 1 this weekend. Will have to check with the school office on monday to see if Serpac has sent out enclosures to us, Or I'll order the samples through my company email (if you're doing this, check with your employer/administrator first).

Good news summary: Relay tree and solenoid code is almost ready! Final assembly is in progress, pictures coming soon!

Good news detailed: RELAY16 code is just about final with a few glitches, that should be ironed out soon. I'll publish it and the VBL files in a ZIP archive when I receive them from Alex.  I have also begun "Final Assembly" even without the working code for the GPIO module; So far I have drilled out positions for the LED Race Trees for both sides of the track and am soldering resistors to the top "Pre-stage" and "Stage" LED's. Pictures will be up soon. Pieces of the mounting frame are being designed in eMachineShop CAD and will be transferred into VCarve (somehow, have to talk to my teacher and a classmate who's an expert in CNC).

Bad news summary: GPIO32 is DOA (until I figure out otherwise), the semester will end before the project is complete.

Bad news detailed: I'm in talks with Numato labs in diagnosing the GPIO32, so far it's not looking good as I have checked: "Pin set to USB Power" "Green LED is solid, not blinking" & "Cable is functioning correctly". This will delay the project further. On that note, I have approximately just over a week of school before exams, therefore I have talked to my teacher earlier today expressing that I wish to take on the project over the summer, essentially: My in-school project just became my summer project.



Thanks, Calvin

UPDATE 04/06/2013: No new code, and not much progress thus far, Will be speaking to VB Alex on June 5, 2013, he said he has code he wants me to try out,also I have just finished speaking with Consulting team 1 on the Arduino Interrupts. Hopefully a productive week ahead, 11 day's to go before this thing must be working.

Serpac Still has not responded about the Boxes.

Once again, I would like to thank Numato Labs for all their help on this project as well.

Thanks,
Calvin

Monday, May 27, 2013

Installing the GPIO Module and some updates

Much like the Relay, the GPIO module has screw down top terminals, the reason I have a 32 channel unit is because there is supposed to be infrared timing units and LED display boards, however, those will likely not arrive in time for this project. I am unsure and will have to consult with Numato about how to hook the GPIO module up before I power it on. Heres a picture of what I have so far:


Once again, please disregard the messy wires, that will be nice and neat in the final product. As well, I apologize for the delay, the unit was with VB Alex for a couple days so he could try out some code.

Wednesday, May 15, 2013

Relay's in place

Got a little preliminary wiring done, the relay has been rested, just have to wait for Visual Basic programmer Alex to send me some code to test!


As you can see, the wiring is a mess, however I can assure you it works with a little hyperterminal action done in accordance with the Numato manual page 4-5 available at http://numato.com/productdoc/usbrelay16/usbrelay16.pdf
The next step is to add in the GPIO (General Purpose Input Output) module, following that, I'll need to acquire some PCB (Circuit Board, so I can solder the connections permanently), and put it all together forever.

Tuesday, May 7, 2013

The computer Control side of the launch system will commence using 2 Numato labs products. One is a 32 channel GPIO module, which will be used for the buttons, as well as Digital display boards (will integrate if possible/available, otherwise a provision for the future), as well as possible timers, etc.

I have received the 2 products from Numato Labs (http://www.numato.com), the package came a little worse for wear, but it did fly half way around the world. (the white spots were tracking numbers)



The first item, is the Numato 16 channel USB relay, available at: http://numato.com/16-channel-usb-relay-module . This board will be used for controlling the LED's, and Solenoid valves. it will be powered by a 12 V power supply separate from the relay's to ensure we don't have a voltage dip causing any sort of unintended actions. This controller was perfect for our application because it is (on paper), capable of switching the Solenoids we will be using.

Monday, May 6, 2013

I am currently working on the Arduino side of the launcher, so far I have gotten the basic tree, and two buttons. (the captions are below the pictures), by request here are some early pictures (and a more recent one).

 This is an early mock-up

 Quick sketch of how either side will connect to the LED's, this is also the same for the Solenoids (but slightly different in connecting the Arduino to the solenoids. DO NOT USE THIS, there are no resistors, or switches!


 This is a very early mock-up, I couldn't find my breadboards yet. I ended up securing two from school.

 Here is one button working to turn on the red light at the bottom once the tree has counted down.

 A set-up with two buttons


 Re-wired to clean it up a little, disregard the 4016 chip, it's not doing anything. It was planed to use that as a electronic switch to interrupt the firing if the stage or yellow lights were on, however I think I broke it.
A topographic shot of the two button set-up

Monday, April 29, 2013

I have a couple of pieces of preliminary WORKING code for the ARDUINO part of the design:
I'm using an Arduino Uno.


The First is the LED's timed out, there is no working Red in this, as it is just simple mock up with variable times.


void setup() {


// Pin 13 has an LED connected on most Arduino boards:
pinMode(1, OUTPUT); //Prestage Light(s)
pinMode(2, OUTPUT); //Stage Light(s)
pinMode(3, OUTPUT); //Yellow LED 1 (Top Amber)
pinMode(4, OUTPUT); //Yellow LED 2 (Middle Amber)
pinMode(5, OUTPUT); //Yellow LED 3 (Bottom Amber)
pinMode(6, OUTPUT); //Green LED (GO! Light)
pinMode(7, OUTPUT); //Red LED (Fault/ Falsestart Light)
pinMode(13, OUTPUT); //reset Light


 digitalWrite(1, HIGH); // 5 second Pre Stage
delay(5000);
digitalWrite(1, LOW); // PreStage LED turns off
delay(5);
digitalWrite(2, HIGH); // 3 second Stage LED
delay(3000);
digitalWrite(2, LOW); // Stage LED turns off
delay(5);
digitalWrite(3, HIGH); // Yellow led 1 on 0.5 second
delay(1000);
digitalWrite(3, LOW); // Yellow LED 1 turns off
delay(5);
digitalWrite(4, HIGH); // Yellow Led 2 on for 0.5 second
delay(1000);
digitalWrite(4, LOW); // LED turns 2 off
delay(5);
digitalWrite(5, HIGH); // Yellow Led 3 on for 0.5 second
delay(1000);
digitalWrite(5, LOW); // LED turns 3 off
delay(5);
digitalWrite(6, HIGH); // Green Led on for 15 seconds
delay(15000);
digitalWrite(6, LOW); // Green LED turns off for 5 minutes before sequence restart
delay(300);
}

void loop() {
 
  digitalWrite(13, HIGH);
  delay(250);
  digitalWrite(13, LOW);
  delay(250);
  }

NOTES:
The "delay" is the time in milliseconds that the light is active for. then the "digitalWrite (#, LOW)" turns off the LED (with the # being the Arduino pin that the LED (positive leg) is connected to).


------------------------------------------------------------------------------------------------------------

The next is the LED's with buttons which is the same code as above, however with two button 's connected to the 11 & 12 pins as prescribed in: http://arduino.cc/en/Tutorial/Button


//Set pin numbers
const int buttonPinL = 12;     // the number of the pushbutton pin for Track Right
const int buttonPinR = 11;     // the number of the pushbutton pin for Track Left

void setup() {

  {
    // Pin 13 has an LED connected on most Arduino boards:
    pinMode(1, OUTPUT); //Prestage Light(s)
    pinMode(2, OUTPUT); //Stage Light(s)
    pinMode(3, OUTPUT); //Yellow LED 1 (Top Amber)
    pinMode(4, OUTPUT); //Yellow LED 2 (Middle Amber)
    pinMode(5, OUTPUT); //Yellow LED 3 (Bottom Amber)
    pinMode(6, OUTPUT); //Green LED (GO! (L)ight)
    pinMode(8, OUTPUT); //Green LED R
    pinMode(7, OUTPUT); //Red LED Left Lane (Fault/ Falsestart Light)
    pinMode(10, OUTPUT); //Red LED Right Lane
    pinMode(13, OUTPUT); //reset light
    pinMode(buttonPinR, INPUT); //Right Track button input
    pinMode(buttonPinL, INPUT); //Left Track button input

    digitalWrite(1, HIGH); // 5 second Pre Stage
    delay(5000);
    digitalWrite(1, LOW); // PreStage LED turns off
    delay(5);
    digitalWrite(2, HIGH); // 3 second Stage LED
    delay(3000);
    digitalWrite(2, LOW); // Stage LED turns off
    delay(5);
    digitalWrite(3, HIGH); // Yellow led 1 on 0.5 second
    delay(1000);
    digitalWrite(3, LOW); // Yellow LED 1 turns off
    delay(5);
    digitalWrite(4, HIGH); // Yellow Led 2 on for 0.5 second
    delay(1000);
    digitalWrite(4, LOW); // LED turns 2 off
    delay(5);
    digitalWrite(5, HIGH); // Yellow Led 3 on for 0.5 second
    delay(1000);
    digitalWrite(5, LOW); // LED turns 3 off
    delay(5);
   
}
}

// variables will change:
int buttonStateR = 0;         // variable for reading the pushbutton status
int buttonStateL = 0;


void loop() {

  buttonStateR = digitalRead(buttonPinR);
  buttonStateL = digitalRead(buttonPinL);

  {
    // check if the pushbutton is pressed.
    // if it is, the buttonState is HIGH:
    if (buttonStateL == HIGH) {
      // turn LED on:  
      digitalWrite(7, HIGH);
    }
    else {
      // turn LED off:
      digitalWrite(7, LOW);
    }
    {
    // check if the pushbutton is pressed.
    // if it is, the buttonState is HIGH:
    if (buttonStateR == HIGH) {
      // turn LED on:  
      digitalWrite(10, HIGH);
    }
    else {
      // turn LED off:
      digitalWrite(10, LOW);
    }
  }
  {
    digitalWrite(6, HIGH) ; // Green Led on for 15 seconds
    digitalWrite(8, HIGH);
    digitalWrite(13, HIGH);
   }
 
  }


}

NOTES: the times for the tree have been changed, as well, now the buttons work, the next piece of code will move the buttons to the Analog Input's on the arduino board to save precious PWM pins. Keep in mind, Pin 1 can't be used, i've tried.


Wednesday, April 24, 2013

The programs open source nature will follow the Open Source Initiative GPL 3.0 licence available at http://opensource.org/licenses/GPL-3.0

 All Code and programs posted herein will follow these guidelines

As stated in GNU GPL 3.0 Section 15:
Neither I (Calvin Ing) nor my educational facility (Thornlea Secondary School) will support nor provide any warranty for the program released into the public domain. However this should not hamper your ability to comment or engage in conversation about the code or express concern in a public manner.

"THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION."

As well as GNU GPL 3.0 Section 16:
Neither I (Calvin Ing) nor my educational facility (Thornlea Secondary School) will be held liable for any damages caused by our code, or any modified code. You as the end user of the code will bear all liability in the use of the code which is provided "As-Is". However this should not hamper your ability to comment or engage in conversation about the code or express concern in a public manner.

"IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES."

Tuesday, April 23, 2013

Thornlea Secondary School in Thornhill, Ontario, Canada is looking to replace their aging CO2 cartridge launch system attached to their modular (up to 64' maximum in pre assembled sections) Model Drag Racing track. The project calls for a new system to be built that will be powered off of a air compressor to reduce the cost of launching the model drag cars. This change will allow for the testing of the model cars prior to race day, which was previously prohibited due to cost of cartridges. This will make it possible for teams to improve their car designs with working prototypes on the actual track they will be racing on.

The Criteria for the updated launch system are as follows:

-Use Compressed air from portable tank style air compressor
-Safe for students to use
-Durable and Reliable (will withstand many years of abuse from students and thousands of launches, working every time)
-Allow for testing of model cars (Cost factor of the CO2 cartridges, calculated to be approx. $0.78 per cartridge, prevented students from the ability to test their cars prior to race day)
-Ability to launch only one side of the track, or both sides with as little delay as possible
-Must be easy to maintain


More criteria may be added and some removed as the project goes along, for example, one of the requirements added as of recent is that all code must be open source. The racetrack also has a KelAccell race timing unit installed which this project shall not damaged or interfere with the operation of.

Calvin Ing