tag:blogger.com,1999:blog-59342208824421812622024-03-12T23:27:56.645-04:00Tools for Technology StudentsThis blog explores issues related to the use of information technology in high school as well as the use of microcontrollers and electronics in Technology courses.M Druivenhttp://www.blogger.com/profile/17762726760007479062noreply@blogger.comBlogger63125tag:blogger.com,1999:blog-5934220882442181262.post-33897607946233094352023-01-15T20:22:00.001-05:002023-01-15T20:22:32.296-05:00Balance on a Teeter totter<p><span style="font-family: verdana;"> This year the <a href="https://www.youtube.com/watch?v=0zpflsYc4PA&t=29s" target="_blank">FRC robots</a> need to balance on a teeter-totter affair on the playing field. </span></p><p></p><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/xUniegrUo0A" width="320" youtube-src-id="xUniegrUo0A"></iframe></div><br /><span style="font-family: verdana;"><br /></span><p></p><span style="font-family: verdana;">This video shows an autonomous ESP32 robot attempting to balance itself. I don’t have a gyro at home so I used a 3 axis compass (which gets thrown off when the robot changes direction). I think it will be easier to do with a real gyro. The drive system is cheap continuous rotation servos driven by an ESP32. It is next to impossible to get the servos synced at the same power level and to slow them down, so, again with a real robot that drives straight and slow this enterprise would be improved. Once I sorted out some power issues and a bum servo it was satisfying to see it work.</span><div><span style="font-family: verdana;"><br /></span></div><div><span style="font-family: verdana;">The code is a simple if structure.</span></div><div><span style="font-family: verdana;"><br /></span></div><div><span style="font-family: verdana;">If the x axis is greater than 100 (pointed up) drive forward a bit and wait a bit;</span></div><div><span style="font-family: verdana;">Else If the x axis is less than -100 (pointed down) back up a bit and wait a bit;</span></div><div><span style="font-family: verdana;">Else wait a bit;</span></div>M Druivenhttp://www.blogger.com/profile/17762726760007479062noreply@blogger.com0tag:blogger.com,1999:blog-5934220882442181262.post-53124911288526099022022-03-12T12:57:00.002-05:002022-03-12T12:58:25.018-05:00ESP32 mini home robot for E-learning<p style="text-align: center;"></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjHbb5wLrsZhJ53qyHGjKLEZ1wwqKeghrTLqhAUtFHYGvdtjLP4BhZX2iycl0MaV3FljQh7NrnZ1bDJVNt9BrTSsOPheAsbjoq99_nTwYOmYpD3bjNLnb9fDy9KyQajf_x5NgbASth8ilIL50RcCovaU2RACHN0UPhnBh_1xhB2f2qgF6H0BkEU_OJK=s600" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="400" data-original-width="600" height="213" src="https://blogger.googleusercontent.com/img/a/AVvXsEjHbb5wLrsZhJ53qyHGjKLEZ1wwqKeghrTLqhAUtFHYGvdtjLP4BhZX2iycl0MaV3FljQh7NrnZ1bDJVNt9BrTSsOPheAsbjoq99_nTwYOmYpD3bjNLnb9fDy9KyQajf_x5NgbASth8ilIL50RcCovaU2RACHN0UPhnBh_1xhB2f2qgF6H0BkEU_OJK=s320" width="320" /></a></div><br /><span style="font-family: verdana;"><br /></span><p></p><p><span style="font-family: verdana;">Last school year in Ontario all the classes were on line and clubs and sports teams just weren't happening. The team at CKSS, Sparbotics, Team 4992 continued to meet on line through the fall of 2021 and spring of 2022. Team members entered 3 FIRST Robotics virtual challenges under the <a href="https://www.firstinspires.org/resource-library/frc/infinite-recharge-at-home" target="_blank">Inifinite Recharge at Home</a> banner. 20 team members also took home a desktop robot kit I designed around the <a href="https://www.espressif.com/en/products/socs/esp32" target="_blank">ESP32 chip</a>. The students learned some basic i/o skills (much like the Arduino) and then explored the Wifi capabilities following a <a href="https://sites.google.com/view/sparboticsesp32" target="_blank">set of instructions</a> and meeting online with questions and observations. The school year culminated with the <a href="https://sites.google.com/view/sparboticsesp32/challenge" target="_blank">Mission to Mars</a> challenge which asked the students to move a lego "cargo" brick between 2 stations.</span></p><p><span style="font-family: verdana;">High School students had great difficulty with the online learning environment. Students learn best by doing and the "doing" needs to be in an environment they are accustomed to. They work best with their peers at solving problems and asking questions. They liked working on the Infinite Recharge at Home challenges <u>together</u> but many lost enthusiasm with the ESP32 because they were working <u>alone</u>, unable to see each other and see the other robots. The ESP32 challenges would have worked better in an immersive virtual environment with VR glasses or cameras showing the students, their screens and their hands working on the robots. I can't imagine getting to place where that could happen given the amount of technology required and the privacy concerns it would raise.</span></p><p><span style="font-family: verdana;"><br /><br /></span></p>M Druivenhttp://www.blogger.com/profile/17762726760007479062noreply@blogger.com0tag:blogger.com,1999:blog-5934220882442181262.post-38794779066359166432021-03-30T21:08:00.000-04:002021-03-30T21:08:23.694-04:00Interesting facts and ideas from a People for Education Report titled Technology in Schools.<span style="font-family: Arial, Helvetica, sans-serif;">This <a href="https://peopleforeducation.ca/wp-content/uploads/2020/05/Technology-In-Schools-Final-May-5.pdf?utm_source=E-Newsletter&utm_campaign=b35354ecc3-EMAIL_CAMPAIGN_2020_03_31_09_01_COPY_02&utm_medium=email&utm_term=0_422aeb3dbd-b35354ecc3-7953365" target="_blank">People for Education Report</a> is an important read.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">From the report:</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">"Up to now, future-ready skills and competencies have gone by a variety of
labels including soft skills, 21st century skills, transferable skills, and global
competencies (British Columbia Ministry of Education, 2017; OECD, 2018;
RBC, 2018; Waddell et al., 2018). People for Education refers to them as
The New Basics."</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">1. Thinking Creatively and critically</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">2. Developing a Sense of Self and Society</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">3. Communicating Effectively</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">4. Learning to learn</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">5. Collaborating</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">In Ontario "future ready" skills are referred to by the Ministry of Education as "transferable skills" including, </span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">1. critical thinking</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">2. social-emotional skills</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">3. adaptability</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">4. digital literacy</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">5. collaboration</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">While 1, 2 and 5 in both lists are a match, 3 & 4 are not. Adaptability & Digital Literacy are both open to interpretation more than the other 3 so it remains to be seen how these terms will be used in curriculum documents.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>M Druivenhttp://www.blogger.com/profile/17762726760007479062noreply@blogger.com0tag:blogger.com,1999:blog-5934220882442181262.post-41724043610856681242020-04-09T21:19:00.000-04:002020-04-09T21:27:48.427-04:00Converting a 2418 Desktop CNC to Laser part 2In part 1 I talked about the mechanical and wiring portions of the conversion. In part 2 I will discuss software settings and usage along with operation. Now that the laser is mounted and wired it's time to burn some wood!<br />
<br />
The LaserGrbl software lets you change some of the Grbl firmware settings on the controller board. I left everything as is except $3 which I had to invert so that the X and Y movements on the mill matched the output from the software.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8of4jnEgUCn4sgL7rWgPRn7-4WocVtGEG5J-fTSIopX9CuZ4-j7z_LuJs3vBPACHd-8I96Wsib7Wa8tDeaYAivM9l0vPzQvNBQIehYbr4QzzagKh_IObP0uro0eN5hIYWnWyU9h1KVso/s1600/GrblScreen.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="440" data-original-width="806" height="216" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8of4jnEgUCn4sgL7rWgPRn7-4WocVtGEG5J-fTSIopX9CuZ4-j7z_LuJs3vBPACHd-8I96Wsib7Wa8tDeaYAivM9l0vPzQvNBQIehYbr4QzzagKh_IObP0uro0eN5hIYWnWyU9h1KVso/s400/GrblScreen.png" width="400" /></a></div>
<br />
I started out powering the laser using an old 1 amp variable voltage power supply I built many years ago. I figured 12 volts, 5.5 W, that's less then 1/2 an amp right? Wrong. My initial try with the included griffin example file (<span style="text-align: center;">look for the sample SVG - G Code folder) went well but after that the laser output started becoming erratic and would trail off after a few seconds. A quick test with a multimeter showed the power supply voltage was dropping to just 3 or 4 volts! </span><br />
<span style="text-align: center;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-HHw0SMJs2yXN_aiZeKEbaLRjUnPxLU1oZjqzDeN0ADGmyaVvQ4pawe8vExxqGPC9bErohVNUBJs2HTJ-pwBO-CkojE-RY_SxXrkrUGxhLDMlSkmgYyg9DY-BxcNbj-0LLKmtMsJULhY/s1600/griffen.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="302" data-original-width="349" height="276" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-HHw0SMJs2yXN_aiZeKEbaLRjUnPxLU1oZjqzDeN0ADGmyaVvQ4pawe8vExxqGPC9bErohVNUBJs2HTJ-pwBO-CkojE-RY_SxXrkrUGxhLDMlSkmgYyg9DY-BxcNbj-0LLKmtMsJULhY/s320/griffen.jpg" width="320" /></a></div>
<span style="text-align: center;"><br /></span>
<span style="text-align: center;">A week or so later when I got a fixed 12V 5A power supply I was able to start experimenting again. LaserGRBL lets you make custom buttons. Right click and choose Add Custom Button in the button bar at the bottom. This one turns the laser on at low power (25/255).</span><br />
<span style="text-align: center;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiF-LA2Dc4-YSLKdiLev1U83TjyLhBV_nIkIva-yGtdw6Ec2UduvNYYiP2tIDYvMvhrmvKCoZn2-_FCu49stPfgd2GHQ6X-YzXIL4E1k6IJEQ_zqeIRN8kaolQ5I64W8EyPjcMcF3AEbPk/s1600/customButton.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="369" data-original-width="391" height="301" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiF-LA2Dc4-YSLKdiLev1U83TjyLhBV_nIkIva-yGtdw6Ec2UduvNYYiP2tIDYvMvhrmvKCoZn2-_FCu49stPfgd2GHQ6X-YzXIL4E1k6IJEQ_zqeIRN8kaolQ5I64W8EyPjcMcF3AEbPk/s320/customButton.png" width="320" /></a></div>
<span style="text-align: center;"><br /></span>
<span style="text-align: center;">I do not have limit switches so Grbl uses the XY position at power on as home. I make sure the laser is positioned on the lower left area of the workspace when I power up and then use this low power laser on/off button to give me a low power dot to position the work piece. Getting the laser focused was tough because even at the low power setting the wood begins to burn after a few seconds. Focusing took some patience as I had to keep moving a scrap piece while turning the focusing ring and looking for the smallest dot. It paid off because now it draws very sharp lines. I am using scrap pieces of 1/8" mahogany construction grade plywood.</span><br />
<span style="text-align: center;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOcYZeyKnd0WszuT4C617Sgt4J9WsISFkJMkZAZtHw5XYEWode7Zpl8-69EV9BFAiRHvjTZVAOwt_94LiM7cUe-jX-tvo-smhOd-Ir6NVFgD-FcaaV4BzL4ecH-C1M6pQNjwV9Hg21PZg/s1600/DN.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="404" data-original-width="424" height="304" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOcYZeyKnd0WszuT4C617Sgt4J9WsISFkJMkZAZtHw5XYEWode7Zpl8-69EV9BFAiRHvjTZVAOwt_94LiM7cUe-jX-tvo-smhOd-Ir6NVFgD-FcaaV4BzL4ecH-C1M6pQNjwV9Hg21PZg/s320/DN.jpg" width="320" /></a></div>
<span style="text-align: center;"><br /></span>
<span style="text-align: center;">After experimenting with laser power settings and feed speeds I came up with a combination that gave good clean lines and corners. I drew the iceboat outline by tracing a photo using Aspire and then exporting it in svg format. LaserGrbl generated the CNC code from the .svg file. On import the software asks for the feed speed and laser power settings. The code did not complete the lines in a logical order, often wasting time jogging back and forth. I still need to investigate why this is happening. </span><br />
<span style="text-align: center;"><br /></span>
<span style="text-align: center;">Doing something with grey scale in it like a photo is the next challenge. Wood is either burned or not. LaserGrbl creates grey scale areas by using dots, the more space between the dots, the lighter the shade. The trick seems to be feeding LaserGrbl with a photo that is comprised of a narrow scale from light to medium grey.</span><br />
<span style="text-align: center;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjttAFeQk9Z8yRSsDzdNbrXK0w1wKuy7oSs7pj35oF0TrID1QscmM7SllRQYu-4FpfAYAbbLXJyCqhvTjq508Tq09r9GXRL7JNRBEGJy2otvgwHS16kX22yb9bjU8lfg0aUiXxL_mbk7zw/s1600/scale.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="224" data-original-width="228" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjttAFeQk9Z8yRSsDzdNbrXK0w1wKuy7oSs7pj35oF0TrID1QscmM7SllRQYu-4FpfAYAbbLXJyCqhvTjq508Tq09r9GXRL7JNRBEGJy2otvgwHS16kX22yb9bjU8lfg0aUiXxL_mbk7zw/s1600/scale.jpg" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<span style="text-align: center;">I imported this grey scale file to try some test strips at different feeds and power settings.</span><br />
<span style="text-align: center;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7-lCEjD9UBr1Nztx8CzA2RQdSRk_1RwnpJ4opv6kD_wdHTYxEMbBQpp5VQnkbOlOr_gbhK0Stmwswn9YiWda1pUMxGztYinGFTOdlT815tb5r-GxpjZm99eHVY_fuTExSxQPNW5Ii5TM/s1600/gradient.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="30" data-original-width="900" height="19" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7-lCEjD9UBr1Nztx8CzA2RQdSRk_1RwnpJ4opv6kD_wdHTYxEMbBQpp5VQnkbOlOr_gbhK0Stmwswn9YiWda1pUMxGztYinGFTOdlT815tb5r-GxpjZm99eHVY_fuTExSxQPNW5Ii5TM/s640/gradient.png" width="640" /></a></div>
<span style="text-align: center;"><br /></span>
<span style="text-align: center;">Coming up I'll experiment with photos some more and then move on to cutting paper and wood.</span><br />
<span style="text-align: center;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGoSbTN81ZImj8mJH4CEBE-Fnytlz17xhBOVB2IDxCBYwGUv0UFgXzLoCK-Z_JxZqcNlCDyMoaeDzIfKAIF7MKRMnnWLve4LU5yDBfDGVbFYrvEU_43KfygFPrA35Y8eC5xrmo4c3ixiw/s1600/warning.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="269" data-original-width="284" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGoSbTN81ZImj8mJH4CEBE-Fnytlz17xhBOVB2IDxCBYwGUv0UFgXzLoCK-Z_JxZqcNlCDyMoaeDzIfKAIF7MKRMnnWLve4LU5yDBfDGVbFYrvEU_43KfygFPrA35Y8eC5xrmo4c3ixiw/s1600/warning.jpg" /></a></div>
<span style="text-align: center;"><br /></span>
<span style="text-align: center;"><br /></span>M Druivenhttp://www.blogger.com/profile/17762726760007479062noreply@blogger.com0tag:blogger.com,1999:blog-5934220882442181262.post-82662764588029713172020-03-26T23:51:00.001-04:002021-04-07T16:12:40.246-04:00Converting a 2418 Desktop CNC to Laser part 1<span style="font-family: verdana;"><span face=""arial" , "helvetica" , sans-serif">I had been toying with the idea of swapping the spindle motor for a laser on my 2418 desktop CNC machine. The Woodpecker 2.6 controller has a laser output which is straight ON/OFF but I wanted to use a 5.5 W PWM controlled 450 nm blue laser so that I could adjust the laser power on the fly. The Laser I found on line is made by WonVon and comes with a controller with 12V and TTL (PWM) inputs. The software I found is similar to the GRBL software I used for CNC work and is called <a href="http://lasergrbl.com/" target="_blank">LaserGRBL</a> v3.1.2. I believe what I found out will work for any PWM controller laser running any CNC/Laser type software using the GRBL controller.</span><br />
<span face=""arial" , "helvetica" , sans-serif"><br /></span>
<span face=""arial" , "helvetica" , sans-serif">I discovered that the Atmega 328 that is the brains on the Woodpecker is the same chip used on an Arduino. It had a boot loader called GRBL 0.9 but I needed to upgrade to 1.1 to be able to control a laser. There are a lot of instructions and discussions available showing how to do this on an Arduino but nothing clear for the Woodpecker. Fortunately, there is a utility built into LaserGRBL that flashes the 1.1 firmware (bootloader) with the push of a button. The USB interface to the Woodpecker uses a CH340 chip and LaserGRBL also has a utility to install the driver. Both utilities are in the menu bar under Tools.</span><br />
<span face=""arial" , "helvetica" , sans-serif"><br /></span>
<span face=""arial" , "helvetica" , sans-serif">I thought that the PWM pin that the S command (laser intensity) in G code was available on the 34 pin header. Sadly I was mistaken. The signal originates from the D11 pin on the Atmega 328. On the Woodpecker the 328 is too small to solder directly but D11 connects to the big power MOSFET that controls the spindle. You can see I soldered a short piece of blue solid 22 gauge wire directly to the MOSFET signal pin in the photo below. The brown ground wire is a female 0.1 jumper end. Both of these are spliced to the PWM input. White is PWM + and yellow is ground. The other connector in the photo with yellow and white wires connect to an external 12V DC power supply. On this connector yellow is + and white is ground.</span><br />
<span face=""arial" , "helvetica" , sans-serif"><br /></span>
<br />
</span><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXwRbHiSaG2dfktgQ0zA5QhyoKcJX2Ns9EpWxwRsChNnN6PhVH_kc2t6ezT37JGWWfCKe0nJN0wFW6t-oLM9OnQPghKRph6O0JzohH2vVXj5EKlwYyRErJjLKRcjubbcQJUBTNOFPFmJI/s1600/WPboard.jpg" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: verdana;"><img border="0" data-original-height="533" data-original-width="800" height="426" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXwRbHiSaG2dfktgQ0zA5QhyoKcJX2Ns9EpWxwRsChNnN6PhVH_kc2t6ezT37JGWWfCKe0nJN0wFW6t-oLM9OnQPghKRph6O0JzohH2vVXj5EKlwYyRErJjLKRcjubbcQJUBTNOFPFmJI/s640/WPboard.jpg" width="640" /></span></a></div>
<div class="separator" style="clear: both; text-align: center;">
<span face=""arial" , "helvetica" , sans-serif" style="font-family: verdana;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span face=""arial" , "helvetica" , sans-serif" style="font-family: verdana;">I also thought it would be nice to easily switch between Laser and Spindle mode on the 2418. I hoped the spindle motor clamp was the right size to also hold the laser. Again, sadly I was mistaken. Fortunately I found that <a href="https://hackaday.io/project/35101-cnc-mod-pack" target="_blank">Brandon Piner</a> had published some stl files on <a href="https://hackaday.io/project/35101-cnc-mod-pack" target="_blank">Hackaday</a> that showed promise. His CNC Z Mount allows the easy exchange of tools. Brandon also put his files on <a href="https://www.thingiverse.com/thing:3847455" target="_blank">Thingverse</a> where a remix by <a href="https://www.thingiverse.com/thing:3847455" target="_blank">wb-maker</a> gave me a mount for my laser. Now all I needed was a mount for my spindle motor. I drew this out in Inventor and then got all three parts, the Z Mount, the laser mount and the spindle mount printed.</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqksntMqLPDdTyjde_1DgAL38X806nYmDvXTzMLrdjADZJunIB0UzNf4pyR859hEaH52rxGguAaxBzqLRk5uZzfcBxtdfLmp6CMaiJT7EVn6XdJ3378lGVqwwVxSin4pUn_yGH-GM17Ec/s1600/spindleMotorCollar.png" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: verdana;"><img border="0" data-original-height="563" data-original-width="1149" height="156" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqksntMqLPDdTyjde_1DgAL38X806nYmDvXTzMLrdjADZJunIB0UzNf4pyR859hEaH52rxGguAaxBzqLRk5uZzfcBxtdfLmp6CMaiJT7EVn6XdJ3378lGVqwwVxSin4pUn_yGH-GM17Ec/s320/spindleMotorCollar.png" width="320" /></span></a></div>
<div class="separator" style="clear: both; text-align: left;">
<span face=""arial" , "helvetica" , sans-serif" style="font-family: verdana;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span face=""arial" , "helvetica" , sans-serif" style="font-family: verdana;">The next 3 photos show the Z Mount, the Z mount with the laser attached and the Z mount with the spindle mount attached.</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCueJCKtGu8eTl5FL4_Bor8XtmBRJSollR-5m5NmsGb8FtMRhQyT598zapRa9GUHyXfSOFKKCoaIMclv7Nb7G7amLVjYLNNlpZAPh-ONFE0zEjjH0kD2GWIDuwg3TxtFWNVapKthV698Q/s1600/DSCF0134.jpeg" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: verdana;"><img border="0" data-original-height="400" data-original-width="600" height="213" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCueJCKtGu8eTl5FL4_Bor8XtmBRJSollR-5m5NmsGb8FtMRhQyT598zapRa9GUHyXfSOFKKCoaIMclv7Nb7G7amLVjYLNNlpZAPh-ONFE0zEjjH0kD2GWIDuwg3TxtFWNVapKthV698Q/s320/DSCF0134.jpeg" width="320" /></span></a></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: verdana;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixr_gG1v3DdjpI13jN2nVIpRJsms7Q3Fe9n-vyab9nUJDP4NReZT6ujZbrY7buToqor-cF5bZiARAFxvHNZliB7-MjaAkeDo4EVTaWhBUx5UU9M8_J6tyJhx9Wp8SRGbPEMVeRO_AuIVY/s1600/DSCF0132.jpeg" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: verdana;"><img border="0" data-original-height="400" data-original-width="600" height="213" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixr_gG1v3DdjpI13jN2nVIpRJsms7Q3Fe9n-vyab9nUJDP4NReZT6ujZbrY7buToqor-cF5bZiARAFxvHNZliB7-MjaAkeDo4EVTaWhBUx5UU9M8_J6tyJhx9Wp8SRGbPEMVeRO_AuIVY/s320/DSCF0132.jpeg" width="320" /></span></a></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: verdana;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2Dt3G-CGNzu6ed84eyTSmRRVkWauw7c8vX6h0T4T0JCGulgju4EJk1BvXGVw7n3TkpBNMyRyO3TX0rzozBM_gNkskPFqwgltxK2ZhYLfVxoSdrruJgO8TNKNM6sskAPJrv7jzjtxbB4k/s1600/DSCF0133.jpeg" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: verdana;"><img border="0" data-original-height="400" data-original-width="600" height="213" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2Dt3G-CGNzu6ed84eyTSmRRVkWauw7c8vX6h0T4T0JCGulgju4EJk1BvXGVw7n3TkpBNMyRyO3TX0rzozBM_gNkskPFqwgltxK2ZhYLfVxoSdrruJgO8TNKNM6sskAPJrv7jzjtxbB4k/s320/DSCF0133.jpeg" width="320" /></span></a></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: verdana;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span face=""arial" , "helvetica" , sans-serif" style="font-family: verdana;">In order to use the new Z mount I had to push the 4 bearings and lead screw adapter out of the original spindle mount and then push them back into the new Z mount. I was careful to use objects like bolts that were the same diameter as the bearing or adapter to gently tap them out/in. To push them out I supported the block on a solid surface with a hole large enough to receive the bearing or adapter. To push them in I made sure the parts had a thin coat of oil and were held square to the hole. No excessive force was needed.</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span face=""arial" , "helvetica" , sans-serif" style="font-family: verdana;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span face=""arial" , "helvetica" , sans-serif" style="font-family: verdana;">In part 2 I will talk about getting the software set up and using LaserGRBL to do line art and grey scale bitmaps.</span></div>
<span style="font-family: verdana;"><br />
</span><div class="separator" style="clear: both; text-align: left;">
<span face=""arial" , "helvetica" , sans-serif"><br /></span></div>
<span face=""arial" , "helvetica" , sans-serif"><br /></span>M Druivenhttp://www.blogger.com/profile/17762726760007479062noreply@blogger.com1tag:blogger.com,1999:blog-5934220882442181262.post-55609357117255601572018-07-05T21:43:00.001-04:002021-12-17T19:23:41.397-05:00Tiny Duino board on a desktop CNC<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyD-37KIgXfbGopvm0nM0-BvbcI1JGiAEUbqrgFv0piZlSnSpcXAh2P-Bw8LOWIeoOi0xni7uTaeLoxtm1pxslsKKw9RdUngO_IqjLU96qc9EkXo0yvQeLxqmAo_0J5SkLIMf64HDShaY/s1600/20180624_194835.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyD-37KIgXfbGopvm0nM0-BvbcI1JGiAEUbqrgFv0piZlSnSpcXAh2P-Bw8LOWIeoOi0xni7uTaeLoxtm1pxslsKKw9RdUngO_IqjLU96qc9EkXo0yvQeLxqmAo_0J5SkLIMf64HDShaY/s640/20180624_194835.jpg" width="640" /></a></div>
<br />
<span style="font-family: verdana;"><span face="Arial, Helvetica, sans-serif">This photo shows 3 versions of the Tiny Duino board I first described in <a href="https://toolsfortechnologystudents.blogspot.com/2014/07/" target="_blank">July 2014</a>. The board on the right is laid out in Fritzing and etched using the <a href="https://makezine.com/projects/pcb-etching-using-toner-transfer-method/" target="_blank">toner transfer method</a> to create a mask. The other 2 boards were laid out using <a href="https://www.autodesk.com/products/eagle/overview" target="_blank">Eagle</a> and produced on my little desktop CNC machine seen in my <a href="https://toolsfortechnologystudents.blogspot.com/2017/10/" target="_blank">October 2017 post</a>. The default components in Eagle are good for commercial production but created pads and lines that were too fine for this method.</span><br />
<span face="Arial, Helvetica, sans-serif"><br /></span>
<span face="Arial, Helvetica, sans-serif">The first step was to learn a little about <a href="https://www.autodesk.com/products/eagle/overview" target="_blank">Eagle CAD</a>. Eagle is free for hobbyists making small single sided or double sided circuit boards. You can edit components by opening the library containing the component and then double-clicking the package file for the component. I made the pads bigger and the drill holes smaller. Later when the CNC machine does the drilling the hole size is determined by the physical drill you place in the machine. I used save-as and put "my" in front of the library name to make it easier to find later. You will need to open your new libraries using the Library manager in order to be able to use them. You can find some tutorials online to learn more about this. In Eagle 8.6 the component libraries are in /cache/lbr. I put the libraries I edited into <a href="https://github.com/mdruiven/Eagle-Components" target="_blank">Github</a>. Library files contain large collections of components. I only edited the components used on the TinyDuino.</span><br />
<span face="Arial, Helvetica, sans-serif"><br /></span>
<span face="Arial, Helvetica, sans-serif">Since I had already laid out the TinyDuino board for etching I found it quicker to place the components on a new board in Eagle and then create the traces. This takes 2 steps. Firstly use Signal to join the components and then Route to create the trace. You can move the traces around and create bends. I made the traces 20 to 30 wide. Ground traces that are wider then the rest make it easy to identify ground later on. Make sure they are all on the Bottom since you are making a single-sided board.</span><br />
<span face="Arial, Helvetica, sans-serif"><br /></span>
</span><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgJ2vLErbK18ykxi_6YqNkxyKxNMnsQw4xEg2vg2JOBwUyv1XXuUfWFyR1lw7AoOMuLP9QDbnEMniPaWbcLmjui34pevmvhkEUPNxVL3xNDPe1hWzHPI41ysemTTZIGxPblBEXRAC2K6Y/s1600/TinyInEagle.png" style="margin-left: 1em; margin-right: 1em;"><span face="Arial, Helvetica, sans-serif" style="font-family: verdana;"><img border="0" data-original-height="420" data-original-width="248" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgJ2vLErbK18ykxi_6YqNkxyKxNMnsQw4xEg2vg2JOBwUyv1XXuUfWFyR1lw7AoOMuLP9QDbnEMniPaWbcLmjui34pevmvhkEUPNxVL3xNDPe1hWzHPI41ysemTTZIGxPblBEXRAC2K6Y/s320/TinyInEagle.png" width="188" /></span></a></div>
<div class="separator" style="clear: both; text-align: center;">
<span face="Arial, Helvetica, sans-serif" style="font-family: verdana;">TinyDuino layout</span></div>
<span style="font-family: verdana;"><span face="Arial, Helvetica, sans-serif"><br /></span>
<span face="Arial, Helvetica, sans-serif">The <a href="http://www.instructables.com/id/Make-your-own-PCBs-on-an-inexpensive-desktop-CNC-m/" target="_blank">Make Your Own PCBs on an Inexpensive Desktop CNC machine Instructable article</a> by davr.org helped me figure out how to use EagleCAD to generate the G code for my own desktop cnc mill. The <a href="https://github.com/mdruiven/Eagle-Components" target="_blank">pcb-gcode-EagleCAD plugin file</a> contains a good manual in the docs folder to help you figure out the next steps. The plugin uses Processing and also generates a graphic so that you can double check your G Code. I used the single pass isolation mode and a 0.5mm end mill. Keep the spindle speed high, the feed rate low and run the code with the bit cutting air first to make sure the code works.</span><br />
<span face="Arial, Helvetica, sans-serif"><br /></span>
</span><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLx5yeUZB36AHlNMluK4HBBpR9_c_OYl1lN-qQvl-Q3WFdtQSeQFbFMHInIzYq9YsgxdrTyOYV4JIlDqU809Ld8K1v4Q7pf1kIlFwY88jXfg8HcIMCoh62Sn0Z-C4tjVPmMACJD0vbx-E/s1600/TinyGCodeGraphic.png" style="margin-left: 1em; margin-right: 1em;"><span face="Arial, Helvetica, sans-serif" style="font-family: verdana;"><img border="0" data-original-height="616" data-original-width="812" height="483" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLx5yeUZB36AHlNMluK4HBBpR9_c_OYl1lN-qQvl-Q3WFdtQSeQFbFMHInIzYq9YsgxdrTyOYV4JIlDqU809Ld8K1v4Q7pf1kIlFwY88jXfg8HcIMCoh62Sn0Z-C4tjVPmMACJD0vbx-E/s640/TinyGCodeGraphic.png" width="640" /></span></a></div>
<div style="text-align: center;">
<span face="Arial, Helvetica, sans-serif" style="font-family: verdana;">G code visualizer from the Eagle plugin.</span></div>
<span style="font-family: verdana;"><span face="Arial, Helvetica, sans-serif"><br /></span>
<span face="Arial, Helvetica, sans-serif">Everything about this project required learning, trial and error and time. I was very pleased to see the final TinyDuino boards being cut. There were several trials until I got everything right. I think it really helped to do this with a circuit board that I am already very familiar with. I feel more confident that I can use this method to make a prototype circuit board in the future.</span></span>M Druivenhttp://www.blogger.com/profile/17762726760007479062noreply@blogger.com0tag:blogger.com,1999:blog-5934220882442181262.post-87903422922637328402017-10-27T21:41:00.002-04:002022-03-12T12:13:39.391-05:00Retired!<span style="font-family: verdana;"><span face=""arial" , "helvetica" , sans-serif">Happy Friday . . if you happen to be reading this on a Friday! So I am officially retired from teaching. I sleep in, read books, do errands and wonder where the day went! I still mentor for FRC team 4992 so I'm back in to the school two afternoons a week. I will do some supply work but otherwise my schedule is pretty clear. I planned to spend some more time on this blog and perhaps widen the scope a little but here it is already the end of October and I am finally sitting down to get at it. The first order at hand was to be a comprehensive list of Microntrollers but thanks to ZeusGuy, Graeme Bartlett et al there is now a nice long list on <a href="https://en.wikipedia.org/wiki/Comparison_of_single-board_microcontrollers" target="_blank">Wikipedia</a>. Good job people.</span><br />
<span face=""arial" , "helvetica" , sans-serif"><br /></span>
<span face=""arial" , "helvetica" , sans-serif">The teachers in my department all pitched in and got me this neat little desktop CNC machine for my retirement gift. In the next couple of blog posts I'll talk about using Eagle CAD to generate G code files to make small circuit boards on this machine.</span></span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGUWHW4oyn7AdwkSXzVM1AjmykiiNqWC7KAi50u1TcqFungbSIlY9O7tgLobNP3C_vdk5BIPwgFN_g1WTyPWql4YxY94b-LHCaD_mun4isWT-NjEFRZN4GBkD2i55mGIpVJz7qYZI9zR8/s1600/20171027_210152.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGUWHW4oyn7AdwkSXzVM1AjmykiiNqWC7KAi50u1TcqFungbSIlY9O7tgLobNP3C_vdk5BIPwgFN_g1WTyPWql4YxY94b-LHCaD_mun4isWT-NjEFRZN4GBkD2i55mGIpVJz7qYZI9zR8/s400/20171027_210152.jpg" width="400" /></a></div>
<br />M Druivenhttp://www.blogger.com/profile/17762726760007479062noreply@blogger.com1tag:blogger.com,1999:blog-5934220882442181262.post-82292004445063592372017-08-19T00:00:00.001-04:002019-04-27T21:34:30.507-04:00A First Look at the mBotRecently our school board received some mBots from Makeblock to try out in the classroom. The mBot is a small autonomous Arduino Uno based rover educational platform that can be programmed in Arduino C or a Scratch derivative called mBlock (mBlockly on an iPad).<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCZJ3NE0ya_EyOvVEmUpgTfQEMagSOmsf1gFy8f-cj6JOjumQjCN14rpEqFg-uuxgLaJFLwHrJOFxcQB5_zO_P4TXA5NX_zvi-6WlQBR9CxYcVe12gdxzohyITgL0Y-32nSfqBxi0N9HU/s1600/mBot-V1.1-2.4G.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="800" data-original-width="800" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCZJ3NE0ya_EyOvVEmUpgTfQEMagSOmsf1gFy8f-cj6JOjumQjCN14rpEqFg-uuxgLaJFLwHrJOFxcQB5_zO_P4TXA5NX_zvi-6WlQBR9CxYcVe12gdxzohyITgL0Y-32nSfqBxi0N9HU/s320/mBot-V1.1-2.4G.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
The kit comes with the following:</div>
<div class="separator" style="clear: both; text-align: left;">
mCore main board, DC motors, wheels, chassis, battery holder, hardware</div>
<div class="separator" style="clear: both; text-align: left;">
INPUTs: Light Sensor, Button and IR Receiver on board and an Ultrasonic Sensor module and a Line Follower Sensor Module. The modules plug in via RJ25.</div>
<div class="separator" style="clear: both; text-align: left;">
OUTPUTS: 2 RGB LEDs, Buzzer, IR Transmitter, 2 motor ports on board.</div>
<div class="separator" style="clear: both; text-align: left;">
Each kit comes with either a WiFi or Bluetooth module that sits on mainboard headers.</div>
<div class="separator" style="clear: both; text-align: left;">
POWER: Standard female DC power jack or standard Lithium 2.0 connector.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
The sensors plug in to RJ25 jacks and the motors have 2 pin JST connections. There are 4 available RJ25 jacks. 1 and 2 contain Arduino I/O pins 9 through 12. 3 and 4 contain Arduino A0 through A3 pins. There is an ICSP header. There are no other I/O ports supplied. There are solder points for two 0.1" x 6 headers. On the left is A0, A1, A2, A3, SDA, SCL and on the right is GND, 5V, 9, 10, 11, 12.</div>
<br />
The kit also comes with an IR remote (requires a CR2025 cell), a USB cable and a hex driver for assembly. Putting it together takes no time. The main board needs to be removed to change batteries if you are using AA cells. The main board supports charging Lithium batteries which are not included but might make a wise investment considering the way DC motors use up battery power.<br />
<br />
Straight out of the box I had the mBot running in no time. The default program lets you control the mBot via Bluetooth (or WiFi), or via IR or it can be set to autonomous run around and avoid obstacles mode or line-following mode. I like the mBlock IDE because you can quickly program the mBot using Scratch-like blocks and see the Arduino C code result in the right hand window. This makes for an easy transition for grade 9 or 10 students who have used Scratch and want to start coding in C.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijhvmkTrLRkwF27J6XgVaZKDZ7NnilTDS9XKWFgMW9heg7yTgLxKodgjSuVTkGXXrPmhPQtSmRBp8GOpNLTnb8egcDT_NSv63nZefQ-3ok92GIRmJxQgI3IGIoYQCMfguHoeQGT6kPxRI/s1600/code.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="298" data-original-width="560" height="339" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijhvmkTrLRkwF27J6XgVaZKDZ7NnilTDS9XKWFgMW9heg7yTgLxKodgjSuVTkGXXrPmhPQtSmRBp8GOpNLTnb8egcDT_NSv63nZefQ-3ok92GIRmJxQgI3IGIoYQCMfguHoeQGT6kPxRI/s640/code.png" width="640" /></a></div>
<br />
I think the mBot is a good platform for teaching robotics, interfacing or Arduino to grade 9 and 10 students. The price is very good. We purchased a similar all-in-one platform a few years ago that needs to stay tethered via a USB cable to work. The old platform engages students but can be frustrating because the tether cable limits motion. The mBot should be operated on the floor but drops and kicks will be inevitable. The mBot is very robust. The metal chassis can handle some pain. Parts like wheels and DC motors are easy to replace. The kit comes in a handy reusable box that can hold the mBot after assembly and stack in a cupboard.<br />
<br />
I usually shy away from endorsing products but this unit deserves mention for its competitive price and ease of use. I would recommend these to anyone starting out high school Computer Tech or Robotics classes. A class set might be impossible to budget in one year but as I always recommend - have a plan. Buy 2 or 3 a year. These units will do a great job at covering many of the learning outcomes in TEJ courses.<br />
<br />M Druivenhttp://www.blogger.com/profile/17762726760007479062noreply@blogger.com1tag:blogger.com,1999:blog-5934220882442181262.post-17106242022126740002016-06-05T20:37:00.000-04:002016-06-05T20:37:12.964-04:00The Internet of Things part 1, the YunIn the Internet of Things series I will explore the use of WiFi enabled microprocessors like the Arduino Yun and Digispark Oak as tools that students can use to learn how to connect devices to the Internet. The connection of devices and machines to the Internet to allow man-machine and machine-machine interaction is now embodied in the phrase "the Internet of Things". There has been an explosion of interest in industry and commercial markets as the price of WiFi technology comes down. A corresponding surge in the hobby, DIY field can be seen with an ever growing number of products and online tutorials and projects. The Yun was first released in 2013 with the same form factor and IDE as the original Arduino. Recently we saw the release of the Raspberry Pi 3 which has 802.11n and Bluetooth built in. The Digispark Oak, the Omega Onion and a host of other products aimed at the hobbiest, DIY and developer fields are becoming available.<br />
<br />
In this post I will write about my first few experiments with the Yun. In the next few posts I will describe early experiments with the Oak and other WiFi enabled microcontroller solutions. I hope to be able to conclude with a wish list for enabling students to learn about this technology in a clean and consistent manner. My early experience with the Yun and Oak indicate that the technology is not straight forward nor for the faint of heart. I hope to finally compare and contrast all the solutions that I tried out.<br />
<br />
The first step as it is with any of these things is to follow the <a href="http://www.arduino.org/learning/getting-started/getting-started-with-arduino-yun" target="_blank">Getting Started</a> tutorial that comes with the device. I found that I could connect the Yun easily to my home network (Linksys) or my experiment router (Belkin with no Internet). At school I should be able to connect to our public network since the Yun does not require any special settings at the router. Some familiarity with ip addressing and the Linux OS helps but is not necessary.<br />
<br />
"<span style="background-color: white; color: #676767; font-family: "typoninesans light"; font-size: 16px; line-height: 22px;">The Arduino Yún is a microcontroller board based on the ATmega32u4 </span><span style="background-color: white; color: #676767; font-family: "typoninesans light"; font-size: 16px; line-height: 22px;">and the Atheros AR9331. The Atheros processor supports a Linux distribution based on OpenWrt named Linino OS. The board has built-in Ethernet and WiFi support, a USB-A port, micro-SD card slot, 20 digital input/output pins (7 of them can be used as PWM outputs and 12 as analog inputs), a 16 MHz crystal oscillator, a micro USB connection, an ICSP header, and 3 reset buttons." - from the Arduino.org website.</span><br />
<span style="background-color: white; color: #676767; font-family: "typoninesans light"; font-size: 16px; line-height: 22px;"><br /></span>
The Atheros processor communicates with the ATmega microcontroller using a technology called Ciao Core. This technology is incorporated into the Bridge library which must be included in your sketches.<br />
<br />
Step 2 involved using the Yun just like any other Arduino to verify the correct operation of the following devices:<br />
1. Photoresistor in series with a fixed resistor to measure analog light levels.<br />
<a href="https://www.arduino.cc/en/Tutorial/AnalogInput" target="_blank">Photoresistor wiring from Arduino Tutorial.</a><br />
2. DHT22 to measure temperature and humidity. <a href="https://www.makenation.co.uk/shop/dht22-digital-temperature-and-humidity-sensor/" target="_blank">DHT22 wiring from Make Nation</a>.<br />
<br />
The sketch worked perfectly using the open source DHT22 Arduino library.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLzk5iTNuXmTqG0FhHvSzsHnLDJ1-BV15wbZQ_EQ_uLrVMuOqVFbEHLQ-ppVPJp3_ygIbCwpy6sgDFdw6q1IzFJLj9UMOrOhhF3xUilolvS0RM7pV7XpwEPyRlH_Cx1r4AHFyJF42shnM/s1600/yunWeather.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="252" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLzk5iTNuXmTqG0FhHvSzsHnLDJ1-BV15wbZQ_EQ_uLrVMuOqVFbEHLQ-ppVPJp3_ygIbCwpy6sgDFdw6q1IzFJLj9UMOrOhhF3xUilolvS0RM7pV7XpwEPyRlH_Cx1r4AHFyJF42shnM/s400/yunWeather.jpg" width="400" /></a></div>
<br />
Step 3 used the Weather Station tutorial in Marco Schwartz's book the Internet of Things with the Arduino Yun. The tutorial uses a website/software stack called Temboo as a go-between a Yun and cloud apps like Google docs. You will need to have a Temboo account and a Google account.<br />
<br />
Marco's book is 2 years old and Google has changed the way docs are accessed. Instead of good old username and password Google now uses the oAuth protocol. The Temboo website uses apps they call choreos that enable the flow of data from the Yun to be entered onto a spreadsheet. In order to set up a connection you must now run an initialization oAuth choreo and a Finalize oAuth choreo. As you go through the process you collect a client id, app id and other tokens that have to be copied into your code. You can follow the <a href="https://temboo.com/arduino/yun/update-google-spreadsheet" target="_blank">Temboo tutorial</a> which gives you some Arduino Yun code that works. You can find my code, which integrates the original code from the book and the Temboo tutorial on Github. <a href="https://github.com/mdruiven/Yun-Weather-Station">https://github.com/mdruiven/Yun-Weather-Station</a>. All the account information and tokens are in a separate file called TembooAccount.h. Make sure to change them to your own codes and information.<br />
<br />
I found that I had to use my coding skills to solve a couple of issues. I think the level of complexity was medium to hard and beyond the average high school level. That said, I believe that senior high school students could tackle problems very similar to this one by following these directions and using my code. By similar I mean write some data to a spreadsheet collected from various sensors connected to a Yun. I think this has a very high cool factor and will encourage students, and others, to continue to learn and experiment with this technology.<br />
<br />
<br />M Druivenhttp://www.blogger.com/profile/17762726760007479062noreply@blogger.com2tag:blogger.com,1999:blog-5934220882442181262.post-77993704635929539892015-08-15T17:27:00.000-04:002015-08-15T17:27:23.671-04:00Rare and Cherished part 2Now that the Pan Am and Para Pan Am games are over it is time to reflect on the experience I referred to on April 12, In that post I outlined a plan to allow students to use voluntary IT support work at the games as high school coop hours. Over all this was a positive experience for the students but there were some hitches along the way.<br />
<br />
Throughout May and June the students continued to self organize their on line and in person training and the collection of credentials from North York in Toronto. The students also received their shifts and it quickly became apparent that I had overlooked one important factor. Hours. High school students need to complete 180 hours on the job in order to earn their 2 credits. Most of the students did not have near enough shifts to make up these hours. Furthermore some students were conflicted out of the coop course by the necessity of summer make up credit classes. The students had to make up hours by taking on other coop positions at local IT related businesses or by completing some in school hours doing IT related work.. Some elected to give up their Pan Am shifts and work at local IT shops instead. Lesson learned? I should have asked for direct involvement in the students' scheduling at the games. Did it matter? Not much. The students did an excellent job tracking their own hours and all of them had great experiences at the games and at other placements. The students dealt with the "hours" problem through good problem solving and collaboration.<br />
<br />
During a Pan Am games "test event" at the Milton Velodrome I elected to drop by to see how one of my students was doing. In a normal coop placement the coop teacher visits the students on sight on several occasions to familiarize themselves with the work place, discuss the learning objectives with the placement supervisor and check for student health and safety requirements. At the test event I had no problem locating the student and viewing the workplace. The volunteer that helped me find the right room was a teacher herself and understood my reason for being there. I was not prepared for the increased level of security at the actual Pan Am Games. Without some form of accreditation I was not going to be allowed onto the sight. The security staff were volunteers themselves and were just doing their job according to the rules. I had to be satisfied with brief emails, a couple of phone contacts and one face to face with a Cisco engineer. Bear in mind that the students' supervisors were themselves volunteers. Lesson learned? If it is a world class event you must have accreditation. Did it matter? Not much. The Pan Am games structure was very well organised and we already had a good look into that organization during our webinar sessions during the last 18 months. The students received good feedback from their supervisors at the games.<br />
<br />
After reading the students' reflections and attending some Pan Am events myself I feel confident that the students had memorable and worthwhile experiences. They learned varying amounts about computers and networks but they all gained a good deal of confidence at communication, problem solving and teamwork. I think the Pan Am experience taught us that the GTA can handle any event, no matter the size and it taught me that my students are ready to be leaders in the next big one.M Druivenhttp://www.blogger.com/profile/17762726760007479062noreply@blogger.com0tag:blogger.com,1999:blog-5934220882442181262.post-26722600891997683082015-06-24T21:31:00.000-04:002015-06-24T21:31:03.310-04:00Neopixels and ATTiny 85 Arduino shieldsThis semester the grade 12s had to come up with a unique application of <a href="https://learn.adafruit.com/adafruit-neopixel-uberguide/overview">Neopixels</a> using their own <a href="http://toolsfortechnologystudents.blogspot.ca/2014/07/attiny85-part-1.html">ATTiny 85 Arduinos</a> that they built at the start of the semester. The application is implemented on an ATTiny 85 shield that the students design and etch in the classroom. The shield interconnects the <a href="http://toolsfortechnologystudents.blogspot.ca/2014/07/attiny85-part-1.html">ATTiny 85 Arduino</a>, a strip of 12 Neopixels and a DC Wall adapter type power supply. The shield uses a 9 pin header to connect to the home brew Arduino and screw terminals to connect the power supply and the Neopixel strip.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibetPwg21Sw6GyVwOCWnW6fDlc_3kKCRVevt_uxd980vEyAkA5PVjKzvX606V1WjjQJAh0Op_R1S3jaK-A2tHvt1o3THLiDh6SQpAvc14bQW-zD-KKYTcyrBLLDK-vZUkGwLR1Kpau_Xk/s1600/DSCF9298.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibetPwg21Sw6GyVwOCWnW6fDlc_3kKCRVevt_uxd980vEyAkA5PVjKzvX606V1WjjQJAh0Op_R1S3jaK-A2tHvt1o3THLiDh6SQpAvc14bQW-zD-KKYTcyrBLLDK-vZUkGwLR1Kpau_Xk/s640/DSCF9298.jpg" width="640" /></a></div>
<br />
<br />
In earlier blogs I described the very successful <a href="http://toolsfortechnologystudents.blogspot.ca/2014/07/attiny85-part-1.html">ATTiny 85 home brew Arduino</a> my students build in their high school classroom and some <a href="http://toolsfortechnologystudents.blogspot.ca/2013/01/making-arduino-shields-in-classroom.html">grade 12 challenges</a> involving the design and construction of Arduino shields. Last semester the students built motor driver Arduino shields to operate two stepper motors extracted from surplus CDROM drives. The motors were used to drive a CNC pencil built on a simple wooden frame. Another common challenge I have used in the past is a traffic light simulator built onto a shield. While very successful units were built the students could not work further with their shields unless they purchased their own <a href="http://www.arduino.cc/en/Main/ArduinoBoardUno">Arduino Uno</a>. This year the students could put together their own ATTiny 85 Arduino with a shield to build a project that they can take home.<br />
<br />
The shield needs to<br />
<br />
<ol>
<li>provide 5V power to the Neo pixel strip and the ATTiny 85 Arduino.</li>
<li>provide a connection point for the Neopixel strip data and power</li>
<li>contain a 9 pin header to connect to the ATTiny 85 Arduino.</li>
<li>provide connections or house some kind of input such as a momentary push button, light sensor etc.</li>
</ol>
<div>
1. Power. </div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLQiUAXQfWmNeLSRQ-Z3UceyHza_A5hEk5gf7-DeShBnhaEX9fc3weAJnTrCOz0SDRPuchIUuAE6XiRJl8TeGzwXw_OlCzH3TgWsD1r63ouw_wKKCguOfGU-wxfbnlZY1kR3opKznfgY0/s1600/pwrSupply+copy.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="95" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLQiUAXQfWmNeLSRQ-Z3UceyHza_A5hEk5gf7-DeShBnhaEX9fc3weAJnTrCOz0SDRPuchIUuAE6XiRJl8TeGzwXw_OlCzH3TgWsD1r63ouw_wKKCguOfGU-wxfbnlZY1kR3opKznfgY0/s320/pwrSupply+copy.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
The shield needs to support the large 1000 uF capacitor along with a 7805 regulator that takes anywhere from 5 to 25 volts input and keeps the output pin at 5V. C2 provides rf filtering at 0.1 uF. In the photo above you can clearly see the 7805 in front of the large 1000uF capacitor. 6, 7.5 and 9 volt adapters, 200mA or more worked best. 12 and 15 volt adapters caused the 7805 to reach temperatures of 140 degrees C when all 12 pixels were on at full power - white. A couple of students worked directly from 5 volt adapters and had no problems. 5 V switching power supplies are recommended. 30 Neopixels can draw a whopping 2 A current.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
2. Connection point.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
J1 and J2 are power in and 5V power out. By combining the 2 ground screws into one screw we can use the last unused screw terminal for the data - out to the Neopixel shield. Many of the student designed shields also provide connection points for external sensors. The shield shown above contains 2 push buttons and between the 7805 and the capacitor is a 3 pin header providing power and data to and from any Arduino compatible sensor. This is the layout for the board shown above done in Fritzing. Soldering wires to the Neopixel strip proved to be a little difficult. Too much stress on the connection will cause the copper to delaminate from the plastic and break off. We glued the pixels down with double sided tape to help prevent this from happening.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6h8odwtMuCt7Jy-RYJ6Yu6QHcmtgGMFh31RTH8HfJvuEuwNa0OUir9BhRQTGNmylKLLdB6v9t52kiWldi8ORxrr5s_-YBO88-cfrsvtw2BGRmdGhL2qhfXLk2pHBrSAsX7-2SDGaoXA8/s1600/NeoPixelBoard-parts-placeme.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="227" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6h8odwtMuCt7Jy-RYJ6Yu6QHcmtgGMFh31RTH8HfJvuEuwNa0OUir9BhRQTGNmylKLLdB6v9t52kiWldi8ORxrr5s_-YBO88-cfrsvtw2BGRmdGhL2qhfXLk2pHBrSAsX7-2SDGaoXA8/s640/NeoPixelBoard-parts-placeme.png" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
3. 9 pin header</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
The 9 pin header connects our shield to the ATTiny 85 as shown in the photo above. In the diagram the top pin is 0, ground.</div>
<div class="separator" style="clear: both; text-align: left;">
1 is unused. On the ATTiny 85 Arduino pin 1 is the reset button.</div>
<div class="separator" style="clear: both; text-align: left;">
2 is an extra input for an analog sensor - logical Pin 3.</div>
<div class="separator" style="clear: both; text-align: left;">
3 S1 (pushbutton) - logical Pin 4.</div>
<div class="separator" style="clear: both; text-align: left;">
4 is unused. It is another ground.</div>
<div class="separator" style="clear: both; text-align: left;">
5 Neopixel data - logical Pin 0. In the next revision I will add a 300 ohm resistor in series between the header and the screw terminal to help protect the Neopixels from excessive current on the data line.</div>
<div class="separator" style="clear: both; text-align: left;">
6 is unused.</div>
<div class="separator" style="clear: both; text-align: left;">
7 S2 (pushbutton) - logical Pin 2.</div>
<div class="separator" style="clear: both; text-align: left;">
8 5V power.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
4. I soldered in a small 3 pin female 0.1" header so that I could easily connect a sensor that provides an analog or digital voltage. From top to bottom: data, +5V, gnd.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Here are some examples of the boards and functions the students came up with.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="text-align: center;">A game using counters.</span></div>
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqa8W3kkTfzu6hzq5f53XMPK1VYQGk4r1782y_fey-l-e__io3SwDJF8yH9FS_2F0gz9HA9btq6nYYmcrqt0UPK9vO44NTvByble8I66hwQCMscky7kw-SF1VTruzjyRWHzFnI9HeaMrQ/s1600/DSCF9306.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqa8W3kkTfzu6hzq5f53XMPK1VYQGk4r1782y_fey-l-e__io3SwDJF8yH9FS_2F0gz9HA9btq6nYYmcrqt0UPK9vO44NTvByble8I66hwQCMscky7kw-SF1VTruzjyRWHzFnI9HeaMrQ/s400/DSCF9306.jpg" width="400" /></a> </div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
Light pattern selected by pushbuttons.<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1MqT95-zCbdFip1Mn3ve2taKxcLiFoi1-8DatA_SfoKGLtM4-kvczBLKP5pAqt5OzqZ8Xp6-w8lvk-F1jqXnURrkNrT1GQXMtXXwGNX3xjNDgm5GHsozodR3WTm8sY05OfqvHRmDG2Q0/s1600/DSCF9309.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1MqT95-zCbdFip1Mn3ve2taKxcLiFoi1-8DatA_SfoKGLtM4-kvczBLKP5pAqt5OzqZ8Xp6-w8lvk-F1jqXnURrkNrT1GQXMtXXwGNX3xjNDgm5GHsozodR3WTm8sY05OfqvHRmDG2Q0/s400/DSCF9309.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: right;">
Light pattern controlled by a single push button.</div>
<div class="separator" style="clear: both; text-align: right;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0lL3SSigWRlJETlTHNOcF8f0FqvzWQhnEonE4sCoNDg4FgsBrqfGFjqU05Hb1-P42xXKbicO-dEzThKVR4l-GsuXLbrHtXqq4y_vH56tasdbPYpJK9fgqHQXYMQmm9PHHgLJx1A-lDX4/s1600/DSCF9312.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0lL3SSigWRlJETlTHNOcF8f0FqvzWQhnEonE4sCoNDg4FgsBrqfGFjqU05Hb1-P42xXKbicO-dEzThKVR4l-GsuXLbrHtXqq4y_vH56tasdbPYpJK9fgqHQXYMQmm9PHHgLJx1A-lDX4/s400/DSCF9312.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Other projects included:</div>
<div class="separator" style="clear: both; text-align: left;">
- tic tack toe</div>
<div class="separator" style="clear: both; text-align: left;">
- lights controlled via bluetooth from a smart phone</div>
<div class="separator" style="clear: both; text-align: left;">
- lights controlled via an ultrasound ping detector</div>
<div class="separator" style="clear: both; text-align: left;">
- lights controlled by a temperature sensor</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: right;">
<br /></div>
M Druivenhttp://www.blogger.com/profile/17762726760007479062noreply@blogger.com0tag:blogger.com,1999:blog-5934220882442181262.post-52452291111543218172015-04-12T17:43:00.001-04:002015-08-15T16:39:42.770-04:00Rare and Cherished<div>
<br /></div>
<div>
<div class="p1">
<div class="p1">
<span class="s1">I’ve been a high school technological studies teacher in Ontario for 27 years. Very early in my career I learned that what students enjoy and remember is the extraordinary. Students tackle thousands of math problems during their education but the measuring, cutting and calculating needed to build something physical are the problems they enjoy and remember. Students learn about economics and history but raising money for a team or a cause are events that stand out. Students learn Newton's Laws in Physics class but applying those lessons to build a working trebuchet is an exercise they’ll remember forever.</span></div>
<div class="p2">
<span class="s1"></span><br /></div>
<div class="p1">
<span class="s1">Teaching Computer Technology, I know that students learn more and have more fun by building a video editor computer or by building a robot. More than the curriculum, life lessons of the importance of teamwork and cooperation will put these students on a more solid footing then any textbook.</span></div>
<div class="p2">
<span class="s1"></span><br /></div>
<div class="p1">
<span class="s1">Cisco Canada is the official technology partner of the TORONTO 2015 Pan Am/Parapan Am Games and Cisco Networking Academy students will be taking part in networking the games. I knew immediately that this could be one of those extraordinary experiences; learning that extends and goes beyond the curriculum with life and work meta skills thrown in for good measure. When Wadih Zaatar, Cisco’s Networking Academy lead for Canada, told me about his company’s role in the TORONTO 2015 games and the plan to enroll students through Cisco’s I CAN Develop program, I said yes right away. I started to recruit grade 10 students who would be in between their grade 11 and 12 year during the Games. </span></div>
<div class="p2">
<span class="s1"></span><br /></div>
<div class="p1">
<span class="s1">The idea is simple. High school students enrolled in an ICT Specialist High Skills Major program earn two mandatory Cooperative Education credits by taking on ICT support roles at the TORONTO 2015 Pan Am/Parapan Am Games. The timing doesn’t fit the normal mould of the summer Coop course, but the learning opportunity is incredible. I decided to join my students in the role of summer Coop teacher. Why? Because I’m excited about participating and contributing to the success of the TORONTO 2015 Pan Am/Parapan Am Games.</span></div>
<div class="p2">
<span class="s1"></span><br /></div>
<div class="p1">
<span class="s1">In the spring of 2014 the students were still in grade 10 and hadn’t started the SHSM program. Nevertheless they chose to stay after school once a month for TORONTO 2015 Pan Am/Parapan Am Games webinars where they met key people, heard key messages and learnt about their role in the Games and the I CAN Develop program.</span></div>
<div class="p2">
<span class="s1"></span><br /></div>
<div class="p1">
<span class="s1">But the TORONTO 2015 Games aren’t the only opportunity for my students to learn through the practical application of skills. Many of the students participating in the Games are also on my First Robotics team, 4992, the Spartans. The First challenge is to build a 50 kilogram robot in just six weeks. Every year the tasks the robots perform is new, and therefore an engineering challenge. The robots compete in three day-long events where they work in teams. High scores are awarded for both cooperation as well as task completion.</span></div>
<div class="p2">
<span class="s1"></span><br /></div>
<div class="p1">
<span class="s1">In the midst of our robot build season the students took a day off to attend Cisco’s I CAN Develop kickoff on Saturday, February 7 in Toronto. I’m exceedingly proud of the way the students organized themselves to travel independently and represent Craig Kielburger Secondary School. As I write this piece our second and last robotics competition for 2015 is drawing to a close. The team did well and made it into the playoffs. </span></div>
<div class="p2">
<span class="s1"></span><br /></div>
<br />
<div class="p1">
<span class="s1">Now I will be able to devote more time to getting ready for the TORONTO 2015 Pan Am/Parapan Am Games this summer. My supervisors at the Halton District School Board support this extraordinary summer internship opportunity. They know that experiences like this one are rare and cherished.</span></div>
</div>
</div>
<div>
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoJiP7KtVcuRPgtNTiQrDEkZX_ai9RP1or4rsSJIIRvhZpaGkixz9WY-ba-r3y4fu10MVxR295e4S6RIBOydjz9U07DFONcCoNBbaeqxW10Xfl-TIH2f_eaMFVwqvv8iTTShrKfeNz5_g/s1600/Trebuchet2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoJiP7KtVcuRPgtNTiQrDEkZX_ai9RP1or4rsSJIIRvhZpaGkixz9WY-ba-r3y4fu10MVxR295e4S6RIBOydjz9U07DFONcCoNBbaeqxW10Xfl-TIH2f_eaMFVwqvv8iTTShrKfeNz5_g/s1600/Trebuchet2.png" width="270" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
"Trebuchet2". Licensed under Public Domain via Wikimedia Commons - http://commons.wikimedia.org/wiki/File:Trebuchet2.png#/media/File:Trebuchet2.png<br />
This blog post is repeated at <a href="http://canadablog.cisco.com/2015/04/23/rare-and-cherished/">canadablog.cisco.com</a>.</div>
M Druivenhttp://www.blogger.com/profile/17762726760007479062noreply@blogger.com0tag:blogger.com,1999:blog-5934220882442181262.post-49580085235724567532015-02-16T17:29:00.001-05:002015-02-16T17:29:57.966-05:00FRC 4992 Final week. Introducing Admiral Grace Hopper.We are into the home stretch of the FRC "build season" and all of the planning, testing and pre-assembly came together during the last week as the students finally completed the base and attached the lift, winch and arm mechanisms to complete our entry. The team worked hard throughout January and also learned a great deal about design and engineering. I was gratified to see the team using our own desktop CNC mill to make aluminum parts and our new 3D printer to make plastic parts to help bring it all together.<br />
<br />
The team also decided to draw inspiration from one of the most important people in the history of modern technology and name the robot after her. The well crafted <a href="http://fivethirtyeight.com/features/the-queen-of-code/" target="_blank">autobiography of Admiral Grace Hopper </a>by Gillian Jacobs will help you to see why the team chose this name.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg58rKFz5FIxp4mCdtb8qbVRGkCVH-asmTPRHgrfa9Lj-7Y4FC_AVxmAEcaNHO4929HylM8_N-mkdNDXnm_F-KmEkxxLvHWzn8c4gZfGYhE3ZkBiaiGxKfvn-SjugLLf7JAJq4PQvuqyvo/s1600/220px-Grace_Hopper.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg58rKFz5FIxp4mCdtb8qbVRGkCVH-asmTPRHgrfa9Lj-7Y4FC_AVxmAEcaNHO4929HylM8_N-mkdNDXnm_F-KmEkxxLvHWzn8c4gZfGYhE3ZkBiaiGxKfvn-SjugLLf7JAJq4PQvuqyvo/s1600/220px-Grace_Hopper.jpg" /></a></div>
<br />
Programming the Harvard Mark 2 computer must have been a daunting task. Many of the challenges must have been unanticipated. Building an FRC robot is like that too. Many of our challenges could have been more easily overcome through better planning and better organization and of course some just could not have been anticipated. In our second season I have come to realize that it will be necessary to codify better preparation and organization so that the planning and building will go smooth from year to year. This work is necessary because the team of students will change every year as the younger ones gain more experience and the older ones graduate and leave. At this point, with one day left to work on the robot, I am left thinking about this past fall semester and how to make it all work again from year to year. As a teacher it is easy to dream up a curriculum and start designing lessons but another challenge here is that this is a club. The students attend, or don't, depending on how they feel about the activity. If the pre-build season club meetings are all about lessons and skill development the students may feel it is too much like another class. The organization of the team will need to be such that the learning and skill development is student driven. They must feel the need to learn and practice skills through a will to succeed and perform well at a later date. A tough task with a generation so used to immediate gratification.<br />
<br />
Admiral Grace Hopper is a good name for a robot. Hopefully it will make the students reflect on an era when solutions took methodical planning and months of work to accomplish. And hopefully they will ponder the outright determination it takes to start out being rejected from the navy for being too old and too small and to work your way up to the rank of admiral.M Druivenhttp://www.blogger.com/profile/17762726760007479062noreply@blogger.com0tag:blogger.com,1999:blog-5934220882442181262.post-8498472291135075842015-01-17T19:29:00.000-05:002015-01-17T19:29:28.906-05:00FRC 4992 Learn by doing mock-upIt is week 2 in the FRC 2015 build season and team 4992 has made some great plans for a drive and lift system. We were at school all day today working on plans and looking for parts. Many of the parts we ordered earlier this week will not be in until next week but I wanted to make something happen. I challenged the students to build a mock up lift system so that we could look at the pitfalls and challenges. We took the ball grabber off of last years robot and turned it upside down to use as a winch. Up-rights out of wood and nylon rope from the back of my van completed the build.<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.blogger.com/video.g?token=AD6v5dxqKpVLEXpdFxoza2p9PJPcq9N8mWbP-qpU1cmwLssOAAW8RRs5K2oGtrxN3lYkJndQnioX7G1fqv6ChfkU4A' class='b-hbp-video b-uploaded' frameborder='0'></iframe></div>
I enjoyed watching the students work on this project and it is easy to see that this is the best kind of learning. We could see it work - sort of. We could use the mock-up to discuss and further refine the plans for the competition robot. We could see the students learn about making plans that are accurate and that use materials that can be sourced.<br />
<br />
If you read my posts about the build season last year you will see that I was the lone adult working with this group during the build season. This year there are 2 other adults. What a difference! Thank you team 4992 mentors.M Druivenhttp://www.blogger.com/profile/17762726760007479062noreply@blogger.com0tag:blogger.com,1999:blog-5934220882442181262.post-69060653324271801302014-12-31T22:33:00.001-05:002014-12-31T22:33:57.620-05:00A first look at the Digispark ProThe ATTiny85 Arduino in my last post was based on the <a href="http://paperduino.eu/doku.php" target="_blank">Paperduino</a> - which in turn is based on the <a href="http://digistump.com/" target="_blank">Digispark</a> board from Digistump.com. They had a Kickstarter campaign going for the Digispark Pro kit. You could order these tiny Arduino compatible microcontroller boards along with an impressive array of shields. I ordered a couple of Pro boards along with a few different shield kits and they finally arrived a few weeks ago. I've had a bit of spare time so I was able to put together a couple of shields and try out this board.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3zxhNxTyxUakaZUduZ65vuvxIUlr2eBb1n81lXHtnJAuLI3s6j87RDe2q2OLuIlEeaCzU-N58NnQmwLwa8suPW2wcLXsPvCnLetDiWvxVRxezplydOEbA8gwLLmauZz8tVNClcY-sMlE/s1600/DigisparkPro.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3zxhNxTyxUakaZUduZ65vuvxIUlr2eBb1n81lXHtnJAuLI3s6j87RDe2q2OLuIlEeaCzU-N58NnQmwLwa8suPW2wcLXsPvCnLetDiWvxVRxezplydOEbA8gwLLmauZz8tVNClcY-sMlE/s1600/DigisparkPro.png" height="396" width="640" /></a></div>
Pictured are the Digispark Pro board, DigiLED shield and Charlieplex shield.<br />
<br />
The Digispark Pro board comes ready to use. You can solder on some supplied female headers to do prototyping or to plug in shields. The USB connection is USB Micro-B. Like the ATTiny 85 the board is unplugged when you start uploading and plugged in when the IDE gives the prompt message. And just like the ATTiny 85, some of the i/o lines, pins 3 & 4 in this case, are also used for serial communication which means that some circuits will interfere. When this happens the circuit or shield needs to be disconnected during upload and then reconnected after the software is loaded. This can slow down debugging. This board uses an Atmel Attiny85 MCU with about 6 KB of flash memory.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdlcFR_i6TBekUA0av9cRuw3ounoF556deYvOHwqOaWb1pgXRQPpzzyAtWmN4flbblS7hxScA0dBw3_qtnfOnDjh_0htkewO0_rq88N-JrbPimk5mmTTFdR6hyXCJ6dQe2zgRQGJIXTos/s1600/DigisparkProDiagram.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdlcFR_i6TBekUA0av9cRuw3ounoF556deYvOHwqOaWb1pgXRQPpzzyAtWmN4flbblS7hxScA0dBw3_qtnfOnDjh_0htkewO0_rq88N-JrbPimk5mmTTFdR6hyXCJ6dQe2zgRQGJIXTos/s1600/DigisparkProDiagram.jpg" height="492" width="640" /></a></div>
<br />
The DigiLED shield kit comes with what looks like an RGB LED. In fact the device is a smart RGB LED or WS2812 compatible LED. These LEDs have become very popular with hobbyists because they contain registers and other circuitry that allows them to be daisy chained. A large number of LEDs can be controlled using just 3 wires! Power, Ground and Data. The price of these LEDs is under a dollar. In fact you can buy a NeoPixel ring with 60 LEDs prewired. The provided code is hard on the eyes. Its easy to make loops that fade each colour in and out for a more pleasing demo.<br />
<br />
The Charlieplex shield shows how to control 20 LEDs using just 6 data lines. The Charlieplex trick is to remember that a digital i/o pin can have 2 states in Output, 0 or 1 (ground or +V) and that when set as "Input" the pin really has a third state called Hi Z or high impedence. In the Hi Z input state the pin acts as neither ground or +5 V and more like an open circuit. The Charlieplex LEDS are cleverly wired so that each LED is separately addressable via a combination 1 Hi output and 1 Low output while keeping the rest of the pins at Hi Z.<br />
<br />
The Digispark Pro board looks like it could be used in the classroom as long as the students are careful and patient. The low price means that the odd burn out won't be a major pain to the budget. It will be interesting to see how the unit fairs doing some of the basic Arduino tutorials we use in grade 10 and 11.<br />
<br />M Druivenhttp://www.blogger.com/profile/17762726760007479062noreply@blogger.com0tag:blogger.com,1999:blog-5934220882442181262.post-60136637606705919012014-12-01T20:38:00.000-05:002014-12-03T18:15:31.827-05:00ATTiny85 Arduino part 2, One Potato, Two Potato, Three Potato, moreI put the ATTiny85 Arduino project aside for a few weeks and when I picked up my circuit board again I used another laptop, my trusty Samsung Netbook actually. I followed procedure carefully and sure enough it worked first time and every time! I made a few minor adjustments to the PCB pattern and printed off some copies for my grade 12 Computer Studies class. We etched the boards using the Toner Transfer method and got some good looking PCBs. A few days later the components were soldered onto the boards and the Boot Loader burned into a bunch of ATTiny85 chips. Next thing you know: one potato, two potato, three potato more -<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwRbBv1NpD3nlMVvVEQ9lQgB7GgyreYwHQPAUtHJ7XjeeLPLt7NO0hxdJUjcMqeRJXoAOU9xmIC2QHXO6CeC3qGl9G0yoHJoyH4l84gnJQakeyqpvJXfrKNr0niCUpFQDnmjjjmvnoInI/s1600/onePotat.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwRbBv1NpD3nlMVvVEQ9lQgB7GgyreYwHQPAUtHJ7XjeeLPLt7NO0hxdJUjcMqeRJXoAOU9xmIC2QHXO6CeC3qGl9G0yoHJoyH4l84gnJQakeyqpvJXfrKNr0niCUpFQDnmjjjmvnoInI/s1600/onePotat.JPG" height="360" width="640" /></a></div>
<br />
Congratulations to the grade 12 class that built these. Excellent work.<br />
<br />
Here are the instructions I gave to the class:<br />
<br />
INSTRUCTIONS<br />
<div style="margin-bottom: 0cm;">
<span style="font-family: Arial, sans-serif;">STEP 1</span></div>
<div style="margin-bottom: 0cm;">
<span style="font-family: Arial, sans-serif;">Manufacture
the circuit board using the trace layout given following the
classroom procedure. You may want to add 1/8 inch holes in each
corner so that your board can be mounted using 4/40 screws at a later
date.</span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4VY45nrGB4BBDVslqm9mvH2uoE4mesQ91yIGIc0BD_QSp7F4TLkfIZh2kUYxKYbFiING6jNOBdEUSGv0G_BCTGt5Bi_DDL2F1FsifKS96kzaXc6Pxldc-sCLs_tdEiqz_rkwpD2eGQtU/s1600/ATTiny85Arduino.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4VY45nrGB4BBDVslqm9mvH2uoE4mesQ91yIGIc0BD_QSp7F4TLkfIZh2kUYxKYbFiING6jNOBdEUSGv0G_BCTGt5Bi_DDL2F1FsifKS96kzaXc6Pxldc-sCLs_tdEiqz_rkwpD2eGQtU/s1600/ATTiny85Arduino.gif" height="320" width="212" /></a></div>
<span style="font-family: Arial, sans-serif;"><br /></span></div>
<div style="margin-bottom: 0cm;">
<br /></div>
<div style="margin-bottom: 0cm;">
<span style="font-family: Arial, sans-serif;">STEP 2</span></div>
<div style="margin-bottom: 0cm;">
<span style="font-family: Arial, sans-serif;">Familiarize
yourself with the schematic diagram and parts placement.</span></div>
<div style="margin-bottom: 0cm;">
<span style="font-family: Arial, sans-serif;">Identify
the following parts:</span></div>
<ul>
<li><div style="margin-bottom: 0cm;">
<span style="font-family: Arial, sans-serif;">USB
signal</span></div>
</li>
<li><div style="margin-bottom: 0cm;">
<span style="font-family: Arial, sans-serif;">Power</span></div>
</li>
<li><div style="margin-bottom: 0cm;">
<span style="font-family: Arial, sans-serif;">Reset</span></div>
</li>
<li><div style="margin-bottom: 0cm;">
<span style="font-family: Arial, sans-serif;">i/o</span></div>
</li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXgZWFCJUvjEqLeELETSubYTvotK-Ku9ZMp8X90PzuFhWZJfnmc3wFUnIUvV0PPuXpAkDhy8fFa1kZPmV3UAcxLwSlAp7pRfh1aTh572VbmZvB5YwCyvUVDwtZjkD6DlIyWtMeCXG74X4/s1600/ATiny85+Arduino+Schematic.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXgZWFCJUvjEqLeELETSubYTvotK-Ku9ZMp8X90PzuFhWZJfnmc3wFUnIUvV0PPuXpAkDhy8fFa1kZPmV3UAcxLwSlAp7pRfh1aTh572VbmZvB5YwCyvUVDwtZjkD6DlIyWtMeCXG74X4/s1600/ATiny85+Arduino+Schematic.png" /></a></div>
<div style="margin-bottom: 0cm;">
<br /></div>
<div style="margin-bottom: 0cm;">
<br /></div>
<div style="margin-bottom: 0cm;">
<span style="font-family: Arial, sans-serif;">STEP 3</span></div>
<div style="margin-bottom: 0cm;">
<span style="font-family: Arial, sans-serif;">Place
the components and solder them in place in the following order. Clip
the excess leads after each set of components is soldered.</span></div>
<ul>
<li><div style="margin-bottom: 0cm;">
<span style="font-family: Arial, sans-serif;">Capacitors</span></div>
</li>
<li><div style="margin-bottom: 0cm;">
<span style="font-family: Arial, sans-serif;">8
pin socket</span></div>
</li>
<li><div style="margin-bottom: 0cm;">
<span style="font-family: Arial, sans-serif;">1.5kΩ
resistors</span></div>
</li>
<li><div style="margin-bottom: 0cm;">
<span style="font-family: Arial, sans-serif;">1N4148</span></div>
</li>
<li><div style="margin-bottom: 0cm;">
<span style="font-family: Arial, sans-serif;">22Ω
resistors</span></div>
</li>
<li><div style="margin-bottom: 0cm;">
<span style="font-family: Arial, sans-serif;">3.6V
zener diodes</span></div>
</li>
<li><div style="margin-bottom: 0cm;">
<span style="font-family: Arial, sans-serif;">LEDs</span></div>
</li>
<li><div style="margin-bottom: 0cm;">
<span style="font-family: Arial, sans-serif;">reset
pushbutton</span></div>
</li>
<li><div style="margin-bottom: 0cm;">
<span style="font-family: Arial, sans-serif;">9
pin header</span></div>
</li>
<li><div style="margin-bottom: 0cm;">
<span style="font-family: Arial, sans-serif;">USB
socket</span></div>
</li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdXKwkd0TBn4g3hlxpWGDjJwkFSgThcVeepNfjnWIbbEfsEthvHuYBlOmBnqX7rVfMBGDkGghHa6xQ_ZJxwIDvIXNsjD-TT2Jvfs2um-YyATWz855IKbdl3Vi7ABxKa7ujWNxdEdUZXTw/s1600/ATTiny85+PartsPlace.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdXKwkd0TBn4g3hlxpWGDjJwkFSgThcVeepNfjnWIbbEfsEthvHuYBlOmBnqX7rVfMBGDkGghHa6xQ_ZJxwIDvIXNsjD-TT2Jvfs2um-YyATWz855IKbdl3Vi7ABxKa7ujWNxdEdUZXTw/s1600/ATTiny85+PartsPlace.png" height="198" width="320" /></a></div>
<div style="margin-bottom: 0cm;">
<br /></div>
<div style="margin-bottom: 0cm;">
<br /></div>
<div style="margin-bottom: 0cm;">
<span style="font-family: Arial, sans-serif;">STEP 4</span></div>
<div style="margin-bottom: 0cm;">
<span style="font-family: Arial, sans-serif;">Use a
multimeter to check for shorts between traces. Notice that the USB
power and signal traces are very close together and a USB short could
affect your computer. If there are no shorts connect your Atiny85
Arduino via USB to a laptop for a moment. The green power LED should
glow (and hopefully nothing else will happen).</span></div>
<div style="margin-bottom: 0cm;">
<br /></div>
<div style="margin-bottom: 0cm;">
<br /></div>
<div style="margin-bottom: 0cm;">
<span style="font-family: Arial, sans-serif;">STEP 5</span></div>
<div style="margin-bottom: 0cm;">
<span style="font-family: Arial, sans-serif;">Unzip
the Digispark Arduino IDE and locate the directory in the installs
directory on a school laptop.</span></div>
<div style="margin-bottom: 0cm;">
<br /></div>
<div style="margin-bottom: 0cm;">
<span style="font-family: Arial, sans-serif;">STEP 6</span></div>
<div style="margin-bottom: 0cm;">
<span style="font-family: Arial, sans-serif;">Use the
InstallDriver utility inside
/DigisparkArduino-Win32/DigisparkWindowsDriver to install the driver.</span></div>
<div style="margin-bottom: 0cm;">
<br /></div>
<div style="margin-bottom: 0cm;">
<span style="font-family: Arial, sans-serif;">STEP 7</span></div>
<div style="margin-bottom: 0cm;">
<span style="font-family: Arial, sans-serif;">Run the
Arduino IDE inside of
/DigisparkArduino-Win32/Digispark-Arduino-1.0.4/</span></div>
<ul>
<li><div style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-family: Arial, sans-serif;">Do
not connect your Atiny85 Arduino to the computer yet.</span></div>
</li>
<li><div style="margin-bottom: 0cm;">
<span style="font-family: Arial, sans-serif;">Under
Tools choose Board and choose Digispark (Tiny Core).</span></div>
</li>
<li><div style="margin-bottom: 0cm;">
<span style="font-family: Arial, sans-serif;">Under
Tools choose Programmer and choose Digispark.</span></div>
</li>
<li><div style="margin-bottom: 0cm;">
<span style="font-family: Arial, sans-serif;">Under
File choose Examples and choose Digispark_Examples and choose Start.</span></div>
</li>
<li><div style="margin-bottom: 0cm;">
<span style="font-family: Arial, sans-serif;">Click
the upload button and watch the message area at the bottom of the
IDE.</span></div>
</li>
<li><div style="margin-bottom: 0cm;">
<span style="font-family: Arial, sans-serif;">Plug
in your Atiny85 Arduino when the “Plug in device now . . .”
message appears. Pin1 (sometimes called PB1) is pin 6 on the chip.
Your built in red LED is connected to this pin. The program should
cycle the LED on and off at 1 Hz.</span></div>
</li>
</ul>
<div style="margin-bottom: 0cm;">
<br /></div>
<div style="margin-bottom: 0cm;">
<span style="font-family: Arial, sans-serif;">Handy
Reference Chart</span></div>
<table border="1" bordercolor="#000000" cellpadding="4" cellspacing="0" style="width: 280px;">
<colgroup><col width="61"></col>
<col width="64"></col>
<col width="129"></col>
</colgroup><tbody>
<tr valign="TOP">
<td width="61"><span style="font-family: Arial, sans-serif;">pin</span></td>
<td width="64"><span style="font-family: Arial, sans-serif;">Pin</span></td>
<td width="129"><span style="font-family: Arial, sans-serif;">Analog</span></td>
</tr>
<tr valign="TOP">
<td sdnum="4105;" sdval="1" width="61"><span style="font-family: Arial, sans-serif;">1</span></td>
<td width="64"><span style="font-family: Arial, sans-serif;">Reset</span></td>
<td width="129"><br />
<br /></td>
</tr>
<tr valign="TOP">
<td sdnum="4105;" sdval="2" width="61"><span style="font-family: Arial, sans-serif;">2</span></td>
<td sdnum="4105;" sdval="3" width="64"><span style="font-family: Arial, sans-serif;">3</span></td>
<td width="129"><span style="font-family: Arial, sans-serif;">Input 3</span></td>
</tr>
<tr valign="TOP">
<td sdnum="4105;" sdval="3" width="61"><span style="font-family: Arial, sans-serif;">3</span></td>
<td sdnum="4105;" sdval="4" width="64"><span style="font-family: Arial, sans-serif;">4</span></td>
<td width="129"><span style="font-family: Arial, sans-serif;">Input 2</span></td>
</tr>
<tr valign="TOP">
<td sdnum="4105;" sdval="4" width="61"><span style="font-family: Arial, sans-serif;">4</span></td>
<td width="64"><span style="font-family: Arial, sans-serif;">Gnd</span></td>
<td width="129"><br />
<br /></td>
</tr>
<tr valign="TOP">
<td sdnum="4105;" sdval="5" width="61"><span style="font-family: Arial, sans-serif;">5</span></td>
<td sdnum="4105;" sdval="0" width="64"><span style="font-family: Arial, sans-serif;">0</span></td>
<td width="129"><span style="font-family: Arial, sans-serif;"><span style="font-size: x-small;">PWM,AREF,MOSI</span></span></td>
</tr>
<tr valign="TOP">
<td sdnum="4105;" sdval="6" width="61"><span style="font-family: Arial, sans-serif;">6</span></td>
<td sdnum="4105;" sdval="1" width="64"><span style="font-family: Arial, sans-serif;">1</span></td>
<td width="129"><span style="font-family: Arial, sans-serif;"><span style="font-size: x-small;">PWM, MISO</span></span></td>
</tr>
<tr valign="TOP">
<td sdnum="4105;" sdval="7" width="61"><span style="font-family: Arial, sans-serif;">7</span></td>
<td sdnum="4105;" sdval="2" width="64"><span style="font-family: Arial, sans-serif;">2</span></td>
<td width="129"><span style="font-family: Arial, sans-serif;">Input 1, <span style="font-size: x-small;">SCK</span></span></td>
</tr>
<tr valign="TOP">
<td sdnum="4105;" sdval="8" width="61"><span style="font-family: Arial, sans-serif;">8</span></td>
<td width="64"><span style="font-family: Arial, sans-serif;">VCC</span></td>
<td width="129"><br />
<br /></td>
</tr>
</tbody></table>
<br />
Here is a <a href="https://drive.google.com/file/d/0B1VyY0jfIGA9LUxrQWwzQ2pHZ1k/view?usp=sharing" target="_blank">pdf file</a> containing a sheet of 16 pcb layouts.<br />
<br />
<div style="margin-bottom: 0cm;">
<br /></div>
<br />M Druivenhttp://www.blogger.com/profile/17762726760007479062noreply@blogger.com2tag:blogger.com,1999:blog-5934220882442181262.post-87546280276502015852014-07-21T21:25:00.003-04:002014-12-03T18:15:18.826-05:00ATtiny85 Arduino part 1I was inspired by the <a href="http://www.instructables.com/id/Paperduino-Tiny/" target="_blank">Paperduino Tiny</a> project on <a href="http://www.instructables.com/" target="_blank">Instructables</a> and the <a href="http://www.instructables.com/id/Digispark-DIY-The-smallest-USB-Arduino/?ALLSTEPS" target="_blank">Digispark</a> board from <a href="http://digistump.com/" target="_blank">Digistump</a> to make my own <a href="http://arduino.cc/" target="_blank">Arduino</a> board based on the <a href="http://www.atmel.ca/devices/ATTINY85.aspx" target="_blank">Atmel ATtiny85</a> chip. The Paperduino project might be too hard for high school students with limited soldering and engineering experience but we can make our own circuit boards in the classroom.<br />
<br />
I used the <a href="http://www.adafruit.com/product/46" target="_blank">USBtinyISP AVR programmer</a> to load the <a href="http://www.paperduino.eu/lib/exe/fetch.php?media=micronucleus-1.06-upgrade.hex.zip" target="_blank">micronucleus</a> boot loader onto a couple of ATtiny85 chips purchased from <a href="http://abra-electronics.com/" target="_blank">Abra Electroni</a><u>cs</u>.<br />
NOTE: The High fuse should set to 0xdd. The instructions <a href="http://www.paperduino.eu/doku.php?id=burning_bootloader" target="_blank">here</a> indicate that burning with or without RSTDSBL can be tried but the chip burned with RSTDSBL (<span style="background-color: #fbfaf9; color: #333333; font-family: Consolas, 'Andale Mono WT', 'Andale Mono', 'Bitstream Vera Sans Mono', 'Nimbus Mono L', Monaco, 'Courier New', monospace; font-size: 14px; line-height: 19.600000381469727px;">hfuse:w:0x5d:m) </span>did not function afterwards and AVRDUDE (see below) does not recognize it any more.<br />
AVRDUDE is a DOS based program that comes as a part of <a href="http://sourceforge.net/projects/winavr/files/" target="_blank">WINAVR</a>. The DOS commands are rather long so I copied them into notepad and saved them as .bat files. To run the DOS command just put the .bat file into the same directory as the .hex file and type the name of the .bat file in from DOS in that directory. The complete command also needs to be modified to reflect the ASP used.<br />
<pre class="code" style="background-color: #fbfaf9; border-bottom-left-radius: 2px; border-bottom-right-radius: 2px; border-top-left-radius: 2px; border-top-right-radius: 2px; border: 1px solid rgb(204, 204, 204); box-shadow: rgb(204, 204, 204) 0px 0px 0.5em inset; color: #333333; direction: ltr; font-family: Consolas, 'Andale Mono WT', 'Andale Mono', 'Bitstream Vera Sans Mono', 'Nimbus Mono L', Monaco, 'Courier New', monospace; font-size: 14px; line-height: 19.600000381469727px; margin-bottom: 1.4em; overflow: auto; padding: 0.7em 1em; word-wrap: normal;">avrdude -c usbtiny -p t85 -U flash:w:micronucleus-1.06-upgrade.hex -U lfuse:w:0xe1:m -U hfuse:w:0xdd:m -U efuse:w:0xfe:m</pre>
Here is the breadboarded Paperduino circuit.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCiXo5ajxN4jY68B_kn6k-YULGacvMyIiJsJYnWu2jMTQmhQGvGNNrag3da1n_nWzwyrbrPBjmB_Bx9ZnwqoJKYmuLpm6v662niImXrhs-raDv-h5DLRxWr2UZ9irl7HOEvZUByl4Rg6o/s1600/DSC_0121.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCiXo5ajxN4jY68B_kn6k-YULGacvMyIiJsJYnWu2jMTQmhQGvGNNrag3da1n_nWzwyrbrPBjmB_Bx9ZnwqoJKYmuLpm6v662niImXrhs-raDv-h5DLRxWr2UZ9irl7HOEvZUByl4Rg6o/s1600/DSC_0121.jpg" height="271" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<br />
The circuit board to the right contains the circuitry necessary to connect the USBTINY AVR to the ATtiny85 chip on the bottom half and a USB breakout at the top. USB sockets do not plug in to breadboards so some kind of adaptor was required.<br />
<br />
I used <a href="http://fritzing.org/home/" target="_blank">Fritzing</a> to lay out the circuit board. From Fritzing I export an etchable svg file which I bring into Corel Draw so that I can make the traces thicker and add text.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEje7a0lWzMjaQD_BopuQxAFlrziEPLYCoMqmRY8hNbfqxbPz3lymCbQs_FbPWW-ALGxFkyWVR7dLw6IUT_5wcsUNkL6F3GSUyL4gxFt-FEPA_jHcJHRqGvIS-hcYLeWu3QRaO0OADYrUuE/s1600/DSC_0122.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEje7a0lWzMjaQD_BopuQxAFlrziEPLYCoMqmRY8hNbfqxbPz3lymCbQs_FbPWW-ALGxFkyWVR7dLw6IUT_5wcsUNkL6F3GSUyL4gxFt-FEPA_jHcJHRqGvIS-hcYLeWu3QRaO0OADYrUuE/s1600/DSC_0122.jpg" height="222" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmR2DwN2zPQEKT_j7g_IHrgUXFIoM_YNXWNZ0SpvFJaJYsTsy9WDuQrbpqys4dTK3YwLn4XgeJ-pqxgYBBXbURPjXLnmQPj0JHed4hgfrnR-9HxXDBEODzHNA6SHLRhFt6jgbGu_DZ3qQ/s1600/DSC_0120b.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmR2DwN2zPQEKT_j7g_IHrgUXFIoM_YNXWNZ0SpvFJaJYsTsy9WDuQrbpqys4dTK3YwLn4XgeJ-pqxgYBBXbURPjXLnmQPj0JHed4hgfrnR-9HxXDBEODzHNA6SHLRhFt6jgbGu_DZ3qQ/s1600/DSC_0120b.jpg" height="496" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
I like the way the Paperduino brings out the ATtiny85 pins to a female header so I did the same thing below the chip on my board. 22 gauge hookup wire can be used to connect to a breadboard.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
The <a href="http://sourceforge.net/projects/digistump/files/DigisparkArduino-Win32-1.0.4-May19.zip/download" target="_blank">Digispark Arduino</a> IDE package contains the driver installation. The red LED is on Digital pin 1 so the Blink program with the output set to pin 1 is all that is needed to verify operation. Change the Programmer to Digispark and the Board to Digispark (Tiny Core). You start with the board unplugged and after hitting Upload the IDE tells you to plug in the board. The breadboard version worked once and the circuit board a couple of times. Most of the time I end up with a USB Not Recognized warning from Windows. The computer sees it as an unknown device. Despite this the code has loaded on three occasions. I suspect something is going on in Windows.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Despite having problems with the Windows driver it did work a couple of times and my red LED is happily blinking away as I write this. I think of Blink as a kind of Hello World on my own home-made ATtiny85 based Arduino board. Nice!</div>
<br />M Druivenhttp://www.blogger.com/profile/17762726760007479062noreply@blogger.com0tag:blogger.com,1999:blog-5934220882442181262.post-13864240828084442892014-07-01T21:18:00.002-04:002014-07-01T21:18:48.101-04:008 x 8 LED matrix using 4017 and Arduino<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-CBd4jJE4SausFJ41sDCFw751PCG9r1-iHgMYEr4LmEgOddqE0m1h7f99eg8bK7sRWa_3D-dG0zVkb6Q71YGG_xmLjSIR2eTf0bJozs0v2kYv7GM2LeNd31WfqjHlatKeSKaLZxUXKSY/s1600/cu.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-CBd4jJE4SausFJ41sDCFw751PCG9r1-iHgMYEr4LmEgOddqE0m1h7f99eg8bK7sRWa_3D-dG0zVkb6Q71YGG_xmLjSIR2eTf0bJozs0v2kYv7GM2LeNd31WfqjHlatKeSKaLZxUXKSY/s1600/cu.jpg" /></a></div>
<br />
This years grade 12 Computer Engineering summative challenge asked the students to control an 8 x 8 LED matrix using a 4017 decade counter to "scan" the columns and an Arduino to "sink" the rows. Examine the schematic below and you will see that control of any particular LED in the matrix is a matter of making the 4017 pin high and the Arduino pin low. The 4017 chip counts from one to ten and then resets but setting pin 15 high also causes a reset. Connecting pin 9 to 15 causes the ninth count to reset the 4017 back to 1. Our decade counter ends up counting one to eight. Clock pulses on pin 14 make the 4017 count up. The fastest possible digitalWrite(2, HIGH); digitalWrite(2, LOW) cycle from the Arduino is enough for the 4017 to respond.<br />
The usual logic for LED control is to use the Arduino pins to "source" the LED - to go high or "on". An examination of most Logic and microprocessor circuitry specifications will show that these circuits have a higher capacity to "sink" current. That means you need to connect the LED anode to power and the cathode to the Arduino pin. Making the pin low is the same as ground so a zero on the pin will cause the LED to glow. This is a reversal in our usual logic where one = on and zero = off. In this case we need to keep the Arduino pins high and send them low to turn on the LED.<br />
<br />
<u>Parts</u><br />
<a href="http://arduino.cc/" target="_blank">Arduino UNO</a><br />
Breadboard<br />
<a href="http://www.ti.com/lit/ds/symlink/cd4017b.pdf" target="_blank">4017</a><br />
<a href="http://www.adafruit.com/datasheets/BL-M07C881.PDF" target="_blank">BL-M07C881</a> - 8x8 LED matrix<br />
8 x 300 ohm resistors (I used an 8 x 470 ohm DIP)<br />
jumper wires (I cut most to length to keep it neat)<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSS0216rmdjw4Gf9a1tETZz0noJc8pbAqcfXKv5_RAtqlKOdiuoRipFtct7R4RFKn96Xowy6TXI0Qxi_5VeCsHQNv10GfYhhaL0s2l_ONuMy5JiVArl7okCZcHo82W_wCx5ZzBW8yCt4g/s1600/4017+drives+8+x+8.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSS0216rmdjw4Gf9a1tETZz0noJc8pbAqcfXKv5_RAtqlKOdiuoRipFtct7R4RFKn96Xowy6TXI0Qxi_5VeCsHQNv10GfYhhaL0s2l_ONuMy5JiVArl7okCZcHo82W_wCx5ZzBW8yCt4g/s1600/4017+drives+8+x+8.png" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
Here are the pin-outs for the LED matrix:</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxwo_IRxeYVWI9eQuIQ8M_3tbwX-XVbNcVgcGZWlGwzetbkBzkC1N38kWiJh-7RnmavlU_CySLfh2jfTzwZHEhniGs1enj9j6DOWAj-8wgl4eYiip-XRKos7mCCpY6y8zUmwaJjZUs1Fo/s1600/specs.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxwo_IRxeYVWI9eQuIQ8M_3tbwX-XVbNcVgcGZWlGwzetbkBzkC1N38kWiJh-7RnmavlU_CySLfh2jfTzwZHEhniGs1enj9j6DOWAj-8wgl4eYiip-XRKos7mCCpY6y8zUmwaJjZUs1Fo/s1600/specs.png" height="336" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<u>STEP 1: Wiring</u></div>
<br />
Matrix 4017<br />
5 -----------------> 3<br />
6 -----------------> 2<br />
7 -----------------> 4<br />
8 -----------------> 7<br />
13 ---------------> 6<br />
14 ---------------> 5<br />
15 ---------------> 1<br />
16 ---------------> 10<br />
<br />
Matrix Arduino via a current limiting resistor.<br />
1 -----------------> 6<br />
2 -----------------> 7<br />
3 -----------------> 8<br />
4 -----------------> 9<br />
12 ---------------> 10<br />
11 ---------------> 11<br />
10 ---------------> 12<br />
9 -----------------> 13<br />
<br />
Don't forget to wire Arduino pin 2 to 4017 pin 14 for a clk input and pin 3 on the Arduino to to pin 6 on the 4017 to detect a count of 8. Wire 5V from the Arduino to pin 16 on the 4017 and tie the ground to 4017 pins 8 and 13.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrqx-6o7uSk1KbyLsGRWis6TpUyU7zD9_iMGdIWe711TE0IZdpY3y4nlJr1CPTQ-S8djUAuMehTFMzveE6njXcz7nDGJMrGb6HutZvSDQq8dKoxQtOnKoBlbSwdh0beVK7E2QYeaE8OBw/s1600/overview.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrqx-6o7uSk1KbyLsGRWis6TpUyU7zD9_iMGdIWe711TE0IZdpY3y4nlJr1CPTQ-S8djUAuMehTFMzveE6njXcz7nDGJMrGb6HutZvSDQq8dKoxQtOnKoBlbSwdh0beVK7E2QYeaE8OBw/s1600/overview.jpg" height="640" width="520" /></a></div>
<br />
<br />
<u>Step 2 Testing</u><br />
<br />
Use Blink but change the output pin to 2. Disconnect the wires going to the Arduino pins 6 to 13 . Blink will pulse the 4017 slowly. Connect any one of the 8 disconnected leads to ground. The LEDs on that row should light up one after another. If you reduce the delay the LEDs will light quicker and quicker. A very short delay will make it seem as though the entire row is lit. POV or Persistence of Vision makes it seem as though all 8 LEDs are on at the same time when really only one is on at any given time. You will use this later to minimize the current draw on your circuit.<br />
<br />
<span class="coMULTI" style="background-color: white; box-sizing: border-box; color: #7e7e7e; font-family: monospace; font-size: x-small; font-style: italic; line-height: 12px;">/*<br style="box-sizing: border-box;" /> Blink<br style="box-sizing: border-box;" /> Turns on an LED on for one second, then off for one second, repeatedly.<br style="box-sizing: border-box;" /> <br style="box-sizing: border-box;" /> This example code is in the public domain.<br style="box-sizing: border-box;" /> */</span><br style="background-color: white; box-sizing: border-box; font-family: monospace; font-size: small; line-height: 12px;" /><span style="background-color: white; font-family: monospace; font-size: x-small; line-height: 12px;"> </span><br style="background-color: white; box-sizing: border-box; font-family: monospace; font-size: small; line-height: 12px;" /><span class="co1" style="background-color: white; box-sizing: border-box; color: #7e7e7e; font-family: monospace; font-size: x-small; font-style: italic; line-height: 12px;">// Pin 2 is our 4017 clock.</span><br style="background-color: white; box-sizing: border-box; font-family: monospace; font-size: small; line-height: 12px;" /><span class="kw1" style="background-color: white; box-sizing: border-box; color: #cc6600; font-family: monospace; font-size: x-small; line-height: 12px;">int</span><span style="background-color: white; font-family: monospace; font-size: x-small; line-height: 12px;"> clk </span><span class="sy0" style="background-color: white; box-sizing: border-box; font-family: monospace; font-size: x-small; line-height: 12px;">=</span><span style="background-color: white; font-family: monospace; font-size: x-small; line-height: 12px;"> 2</span><span class="sy0" style="background-color: white; box-sizing: border-box; font-family: monospace; font-size: x-small; line-height: 12px;">;</span><br style="background-color: white; box-sizing: border-box; font-family: monospace; font-size: small; line-height: 12px;" /><br style="background-color: white; box-sizing: border-box; font-family: monospace; font-size: small; line-height: 12px;" /><span class="co1" style="background-color: white; box-sizing: border-box; color: #7e7e7e; font-family: monospace; font-size: x-small; font-style: italic; line-height: 12px;">// the setup routine runs once when you press reset:</span><br style="background-color: white; box-sizing: border-box; font-family: monospace; font-size: small; line-height: 12px;" /><span class="kw1" style="background-color: white; box-sizing: border-box; color: #cc6600; font-family: monospace; font-size: x-small; line-height: 12px;">void</span><span style="background-color: white; font-family: monospace; font-size: x-small; line-height: 12px;"> </span><span class="kw3" style="background-color: white; box-sizing: border-box; color: #cc6600; font-family: monospace; font-size: x-small; font-weight: bold; line-height: 12px;">setup</span><span class="br0" style="background-color: white; box-sizing: border-box; font-family: monospace; font-size: x-small; line-height: 12px;">(</span><span class="br0" style="background-color: white; box-sizing: border-box; font-family: monospace; font-size: x-small; line-height: 12px;">)</span><span style="background-color: white; font-family: monospace; font-size: x-small; line-height: 12px;"> </span><span class="br0" style="background-color: white; box-sizing: border-box; font-family: monospace; font-size: x-small; line-height: 12px;">{</span><span style="background-color: white; font-family: monospace; font-size: x-small; line-height: 12px;"> </span><br style="background-color: white; box-sizing: border-box; font-family: monospace; font-size: small; line-height: 12px;" /><span style="background-color: white; font-family: monospace; font-size: x-small; line-height: 12px;"> </span><span class="co1" style="background-color: white; box-sizing: border-box; color: #7e7e7e; font-family: monospace; font-size: x-small; font-style: italic; line-height: 12px;">// initialize the digital pin as an output.</span><br style="background-color: white; box-sizing: border-box; font-family: monospace; font-size: small; line-height: 12px;" /><span style="background-color: white; font-family: monospace; font-size: x-small; line-height: 12px;"> </span><span class="kw1" style="background-color: white; box-sizing: border-box; color: #cc6600; font-family: monospace; font-size: x-small; line-height: 12px;">pinMode</span><span class="br0" style="background-color: white; box-sizing: border-box; font-family: monospace; font-size: x-small; line-height: 12px;">(clk</span><span class="sy0" style="background-color: white; box-sizing: border-box; font-family: monospace; font-size: x-small; line-height: 12px;">,</span><span style="background-color: white; font-family: monospace; font-size: x-small; line-height: 12px;"> </span><span class="kw2" style="background-color: white; box-sizing: border-box; color: #006699; font-family: monospace; font-size: x-small; line-height: 12px;">OUTPUT</span><span class="br0" style="background-color: white; box-sizing: border-box; font-family: monospace; font-size: x-small; line-height: 12px;">)</span><span class="sy0" style="background-color: white; box-sizing: border-box; font-family: monospace; font-size: x-small; line-height: 12px;">;</span><span style="background-color: white; font-family: monospace; font-size: x-small; line-height: 12px;"> </span><br style="background-color: white; box-sizing: border-box; font-family: monospace; font-size: small; line-height: 12px;" /><span class="br0" style="background-color: white; box-sizing: border-box; font-family: monospace; font-size: x-small; line-height: 12px;">}</span><br style="background-color: white; box-sizing: border-box; font-family: monospace; font-size: small; line-height: 12px;" /><br style="background-color: white; box-sizing: border-box; font-family: monospace; font-size: small; line-height: 12px;" /><span class="co1" style="background-color: white; box-sizing: border-box; color: #7e7e7e; font-family: monospace; font-size: x-small; font-style: italic; line-height: 12px;">// the loop routine runs over and over again forever:</span><br style="background-color: white; box-sizing: border-box; font-family: monospace; font-size: small; line-height: 12px;" /><span class="kw1" style="background-color: white; box-sizing: border-box; color: #cc6600; font-family: monospace; font-size: x-small; line-height: 12px;">void</span><span style="background-color: white; font-family: monospace; font-size: x-small; line-height: 12px;"> </span><span class="kw3" style="background-color: white; box-sizing: border-box; color: #cc6600; font-family: monospace; font-size: x-small; font-weight: bold; line-height: 12px;">loop</span><span class="br0" style="background-color: white; box-sizing: border-box; font-family: monospace; font-size: x-small; line-height: 12px;">(</span><span class="br0" style="background-color: white; box-sizing: border-box; font-family: monospace; font-size: x-small; line-height: 12px;">)</span><span style="background-color: white; font-family: monospace; font-size: x-small; line-height: 12px;"> </span><span class="br0" style="background-color: white; box-sizing: border-box; font-family: monospace; font-size: x-small; line-height: 12px;">{</span><br style="background-color: white; box-sizing: border-box; font-family: monospace; font-size: small; line-height: 12px;" /><span style="background-color: white; font-family: monospace; font-size: x-small; line-height: 12px;"> </span><span class="kw1" style="background-color: white; box-sizing: border-box; color: #cc6600; font-family: monospace; font-size: x-small; line-height: 12px;">digitalWrite</span><span class="br0" style="background-color: white; box-sizing: border-box; font-family: monospace; font-size: x-small; line-height: 12px;">(clk</span><span class="sy0" style="background-color: white; box-sizing: border-box; font-family: monospace; font-size: x-small; line-height: 12px;">,</span><span style="background-color: white; font-family: monospace; font-size: x-small; line-height: 12px;"> </span><span class="kw2" style="background-color: white; box-sizing: border-box; color: #006699; font-family: monospace; font-size: x-small; line-height: 12px;">HIGH</span><span class="br0" style="background-color: white; box-sizing: border-box; font-family: monospace; font-size: x-small; line-height: 12px;">)</span><span class="sy0" style="background-color: white; box-sizing: border-box; font-family: monospace; font-size: x-small; line-height: 12px;">;</span><span style="background-color: white; font-family: monospace; font-size: x-small; line-height: 12px;"> </span><span class="co1" style="background-color: white; box-sizing: border-box; color: #7e7e7e; font-family: monospace; font-size: x-small; font-style: italic; line-height: 12px;">// turn the LED on (HIGH is the voltage level)</span><br style="background-color: white; box-sizing: border-box; font-family: monospace; font-size: small; line-height: 12px;" /><span style="background-color: white; font-family: monospace; font-size: x-small; line-height: 12px;"> </span><span class="kw1" style="background-color: white; box-sizing: border-box; color: #cc6600; font-family: monospace; font-size: x-small; line-height: 12px;">delay</span><span class="br0" style="background-color: white; box-sizing: border-box; font-family: monospace; font-size: x-small; line-height: 12px;">(</span><span class="nu0" style="background-color: white; box-sizing: border-box; font-family: monospace; font-size: x-small; line-height: 12px;">1000</span><span class="br0" style="background-color: white; box-sizing: border-box; font-family: monospace; font-size: x-small; line-height: 12px;">)</span><span class="sy0" style="background-color: white; box-sizing: border-box; font-family: monospace; font-size: x-small; line-height: 12px;">;</span><span style="background-color: white; font-family: monospace; font-size: x-small; line-height: 12px;"> </span><span class="co1" style="background-color: white; box-sizing: border-box; color: #7e7e7e; font-family: monospace; font-size: x-small; font-style: italic; line-height: 12px;">// wait for a second</span><br style="background-color: white; box-sizing: border-box; font-family: monospace; font-size: small; line-height: 12px;" /><span style="background-color: white; font-family: monospace; font-size: x-small; line-height: 12px;"> </span><span class="kw1" style="background-color: white; box-sizing: border-box; color: #cc6600; font-family: monospace; font-size: x-small; line-height: 12px;">digitalWrite</span><span class="br0" style="background-color: white; box-sizing: border-box; font-family: monospace; font-size: x-small; line-height: 12px;">(clk</span><span class="sy0" style="background-color: white; box-sizing: border-box; font-family: monospace; font-size: x-small; line-height: 12px;">,</span><span style="background-color: white; font-family: monospace; font-size: x-small; line-height: 12px;"> </span><span class="kw2" style="background-color: white; box-sizing: border-box; color: #006699; font-family: monospace; font-size: x-small; line-height: 12px;">LOW</span><span class="br0" style="background-color: white; box-sizing: border-box; font-family: monospace; font-size: x-small; line-height: 12px;">)</span><span class="sy0" style="background-color: white; box-sizing: border-box; font-family: monospace; font-size: x-small; line-height: 12px;">;</span><span style="background-color: white; font-family: monospace; font-size: x-small; line-height: 12px;"> </span><span class="co1" style="background-color: white; box-sizing: border-box; color: #7e7e7e; font-family: monospace; font-size: x-small; font-style: italic; line-height: 12px;">// turn the LED off by making the voltage LOW</span><br style="background-color: white; box-sizing: border-box; font-family: monospace; font-size: small; line-height: 12px;" /><span style="background-color: white; font-family: monospace; font-size: x-small; line-height: 12px;"> </span><span class="kw1" style="background-color: white; box-sizing: border-box; color: #cc6600; font-family: monospace; font-size: x-small; line-height: 12px;">delay</span><span class="br0" style="background-color: white; box-sizing: border-box; font-family: monospace; font-size: x-small; line-height: 12px;">(</span><span class="nu0" style="background-color: white; box-sizing: border-box; font-family: monospace; font-size: x-small; line-height: 12px;">1000</span><span class="br0" style="background-color: white; box-sizing: border-box; font-family: monospace; font-size: x-small; line-height: 12px;">)</span><span class="sy0" style="background-color: white; box-sizing: border-box; font-family: monospace; font-size: x-small; line-height: 12px;">;</span><span style="background-color: white; font-family: monospace; font-size: x-small; line-height: 12px;"> </span><span class="co1" style="background-color: white; box-sizing: border-box; color: #7e7e7e; font-family: monospace; font-size: x-small; font-style: italic; line-height: 12px;">// wait for a second</span><br style="background-color: white; box-sizing: border-box; font-family: monospace; font-size: small; line-height: 12px;" /><span class="br0" style="background-color: white; box-sizing: border-box; font-family: monospace; font-size: x-small; line-height: 12px;">}</span><br />
<br />
<u>Step 3 Programming</u><br />
<br />
In the checkmark example below I used an array to 'map' which LEDs I wanted to come on.<br />
<br />
/*<br />
Test 4<br />
Test 4 Checkmark<br />
*/<br />
int del = 0; // clk width<br />
int chk = 0; // check for reset signal<br />
int row = 1; // row<br />
int ct = 0; //array counter<br />
int pattern[] = {0,0,0,0,0,0,0,1,<br />
0,0,0,0,0,0,1,0,<br />
0,0,0,0,0,1,0,0,<br />
1,0,0,0,1,0,0,0,<br />
0,1,0,1,0,0,0,0,<br />
0,0,1,0,0,0,0,0,<br />
0,0,0,0,0,0,0,0,<br />
0,0,0,0,0,0,0,0};<br />
int sensorPin = 3;<br />
void setup() {<br />
Serial.begin(9600);<br />
Serial.println("Start"); <br />
// initialize the digital pins as an output.<br />
pinMode(2, OUTPUT); //clk out<br />
pinMode(3, INPUT); // reset sense<br />
for (int i = 6; i <=13; i++){<br />
pinMode(i, OUTPUT); <br />
}<br />
for (row = 6; row <=13; row++){<br />
digitalWrite(row, HIGH); <br />
}<br />
reset();<br />
} // setup<br />
<br />
void loop() {<br />
for (row = 6; row<=13; row++){<br />
for(int i=1; i<=8; i++){<br />
if(pattern[ct]==1){ <br />
digitalWrite(row, 0);<br />
pulse();<br />
delay(2);<br />
digitalWrite(row, 1);<br />
}<br />
else{<br />
pulse();<br />
}<br />
ct++;<br />
}<br />
}<br />
ct=0;<br />
}<br />
<br />
void pulse(){<br />
digitalWrite(2, HIGH); <br />
delay(del); <br />
digitalWrite(2, LOW); <br />
delay(del); <br />
// 8 pulses for 8 rows<br />
}<br />
<br />
void reset (){<br />
for (int i = 1; i<=9; i++){<br />
pulse();<br />
Serial.println(i);<br />
chk = digitalRead(sensorPin);<br />
Serial.println(chk);<br />
if (chk==1){ <br />
return;<br />
} // if<br />
} // for<br />
} // function<br />
<div>
<br /></div>
If I were to do this again I would reverse the zeros and ones in pattern[] and then instead of using an if statement to check for a 1 I could have simply written the contents of the array out.<br />
for(int i=1; i<=8; i++){ <br />
digitalWrite(row, pattern(ct));<br />
pulse();<br />
delay(2);<br />
digitalWrite(row, 1);<br />
}<br />
ct++;<br />
etc.<br />
<br />
Another interesting experiment would be using <a href="http://www.arduino.cc/en/Reference/PortManipulation" target="_blank">Arduino Port D (pins 0 to 7)</a> to control all 8 rows with one command. I usually avoid using pins 0 and 1 but in this case it seems sensible to use them.<br />
<br />
<u>Step 4 Challenge</u><br />
<br />
The challenge that earned top marks was to make a set of initials scroll across the matrix. In the example below I used a 2 dimensional array to 'map' the LEDs in a way that would make shifting them easier.<br />
/*<br />
Test 5<br />
Scrolling Checkmark<br />
Implements 2 dimensional array<br />
*/<br />
int del = 0; // clk width<br />
int chk = 0; // check for reset signal<br />
int row = 1; // row<br />
int ct = 0; //array counter<br />
<br />
int pattern[8][16] = {<br />
{0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1},<br />
{0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0},<br />
{0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0},<br />
{1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0},<br />
{0,1,0,1,0,0,0,0,0,1,0,1,0,0,0,0},<br />
{0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0},<br />
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},<br />
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}<br />
};<br />
int ab=0;<br />
int sensorPin = 3;<br />
void setup() {<br />
Serial.begin(9600);<br />
Serial.println("Start"); <br />
// initialize the digital pins as an output.<br />
pinMode(2, OUTPUT); //clk out<br />
pinMode(3, INPUT); // reset sense<br />
for (int i = 6; i <=13; i++){<br />
pinMode(i, OUTPUT); <br />
}<br />
for (row = 6; row <=13; row++){<br />
digitalWrite(row, HIGH); <br />
}<br />
reset();<br />
} // setup<br />
<br />
void loop() {<br />
for(ct=0; ct<8 animation="" croll="" ct="" p=""> for (int draw = 0; draw<5 down="" draw="" p="" slow=""> for(int row=0; row<8 p="" row=""> for(int col=0; col<8 col="" p=""> if(pattern[row][col+ct]==1){ <br />
digitalWrite(row+6, 0);<br />
pulse();<br />
delay(2);<br />
digitalWrite(row+6, 1);<br />
}<br />
else{<br />
pulse();<br />
}<br />
}//col<br />
} //row<br />
}//draw<br />
}// ct<br />
} // main loop<br />
<br />
void pulse(){<br />
digitalWrite(2, HIGH); <br />
delay(del); <br />
digitalWrite(2, LOW); <br />
delay(del); <br />
// 8 pulses for 8 rows<br />
}<br />
/* The reset function is called once during setup.<br />
It pulses the 4017 until it detects an output from<br />
pin 6, indicating that the count is at 8 and the next pulse<br />
will be column 1. */<br />
void reset (){<br />
for (int i = 1; i<=9; i++){<br />
pulse();<br />
Serial.println(i);<br />
chk = digitalRead(sensorPin);<br />
Serial.println(chk);<br />
if (chk==1){ // 4017 pin 6 is high<br />
return; // No need to continue<br />
} // if<br />
} // for<br />
} // function<br />
<br />
The array is twice as wide as the matrix to allow a frame 'buffer'. There are probably better ways to manipulate the array to do this.<br />
<br />
<br />
<br /></8></8></5></8>M Druivenhttp://www.blogger.com/profile/17762726760007479062noreply@blogger.com1tag:blogger.com,1999:blog-5934220882442181262.post-68301006625179901472014-03-31T20:19:00.000-04:002014-03-31T20:19:00.100-04:00The First CompetitionsTeam 4992, the Spartans competed at the First Waterloo Competition March 20 - 22 and at the North Bay Competition March 27 - 29. Both competitions provided the students with many opportunities to grow, learn and mature. In their first 2 outings they got to see what happens at a competition both behind the scenes and on the field. The team was able to come together and work to solve problems and strategize through a combination of observation and discussion.<br />
<br />
On Wednesday March 19th one other student and I took the robot along with a toolbox and several boxes of spare parts to the Physical Education building at the University of Waterloo where each team is given a 10 foot by 10 foot "pit" area with a table and power. The next day we set about making the area useful for robot repair and maintenance and discovered we needed a way to stow all of our coats and bags. That night I bought some plastic shelving and a collapsable picnic canopy to help organize and define our space.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7XCMb6D7SsJtF-oMl8JsXA8AGfkH8XzNU1TLVRHiZ7f_IVLYoNZy4SXETuLpuMlw1WOgDDFgzZccTaUbOF7MNeCcqAXbY0gfkz8C60IvbLAaZz7zd1rzPQklTY2RCZOKObAakcHHNxSw/s1600/DSC_0050.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7XCMb6D7SsJtF-oMl8JsXA8AGfkH8XzNU1TLVRHiZ7f_IVLYoNZy4SXETuLpuMlw1WOgDDFgzZccTaUbOF7MNeCcqAXbY0gfkz8C60IvbLAaZz7zd1rzPQklTY2RCZOKObAakcHHNxSw/s1600/DSC_0050.JPG" height="212" width="320" /></a></div>
<div style="text-align: center;">
<br /></div>
Our first inspection revealed a misunderstanding in the pneumatic circuit setup that required a rebuild of the entire high pressure side of the system. With the loan of a couple of parts from 1334, our friends in Oakville, we had the bot up and running in time to do some practice rounds on Thursday.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/oxp4dkMQ1Vo?feature=player_embedded' frameborder='0'></iframe></div>
<br />
Friday saw the robot performing as required while the students quickly developed a deeper understanding of the <a href="https://www.youtube.com/watch?v=oxp4dkMQ1Vo" target="_blank">Aerial Assist</a> game play. Due to the scoring structure of this years game alliances of 3 teams were able to score very high by passing the ball from human to robot to robot then over the truss to human to robot to high goal. Our team quickly found their place as the lead robot, taking the ball from the first human player and passing it quickly to the next bot. Most of the other alliances at Waterloo concentrated on the same cycle and by Saturday morning we saw scores approaching 300 points. The repetitive cycling made for a dramatic and enjoyable show for the audience and relied on driver skill and robot performance.<br />
<br />
4992 finished the round robin with a rank of 20 out of 30 and was picked by the teams from Rick Hansen Secondary in Mississauga and St Davids in Waterloo to form an alliance Saturday afternoon. They continued to play the rapid high score cycling game which saw them through right to the final match where they were defeated. You can imagine the excitement of the team, the parents and the teachers as the alliance progressed through the afternoon. I think we hurt our faces smiling so much and many of us were hoarse and deaf from the shouting.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhovMpJMg6GnlZUrLFT-x6InRc3ulzrIfpct6yk7pUCX8zUmlnN8MiLsog3Td-T7iaRcF9-Fr8GW8IDKuHcfGK3KfhF2Rs3LIJxbD0Erepvf2-FjNvkxoeHMGcOpg-kxIvY104sWdSVLpw/s1600/DSC_0033.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhovMpJMg6GnlZUrLFT-x6InRc3ulzrIfpct6yk7pUCX8zUmlnN8MiLsog3Td-T7iaRcF9-Fr8GW8IDKuHcfGK3KfhF2Rs3LIJxbD0Erepvf2-FjNvkxoeHMGcOpg-kxIvY104sWdSVLpw/s1600/DSC_0033.JPG" height="212" width="320" /></a></div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: left;">
The competition in Waterloo relied on parent volunteers driving several student to and from Waterloo each day. The competition in North Bay was organized centrally by the school board since all 7 Halton teams appeared and we would need buses and hotel rooms. Generous donations from our sponsors made it possible.<br />
<br />
The teams at the North Bay event were much more aggressive about defence and seemed to enjoy brute force pushing and shoving over the finesse and skill seen at Waterloo and so we saw very few high scoring rounds. Many more bots seemed to be plagued with electrical and mechanical malfunctions as well. Our robot made it through to the elimination rounds on Saturday afternoon, forming an alliance with our cross town mentors from Milton District High School and Burlington Central High School making our alliance the "Halton" alliance. Unfortunately the pushing and shoving continued along with the break downs and our alliance lost 0 - 2 while the afternoon was young.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNqoVsXKe3UNgKaW6iNXVhiNAyCPGiUZcV5eQwdYjHWFgUlk-HO8qZh0zsXN26ICnXPOXzAx0aneZ4RY5zV6M70Nba9ed5Z4UYQAtyxAT4nYBGlKJu4IEYmy1dAmw2ToBJdB6wzIgwjdI/s1600/DSC_0003.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNqoVsXKe3UNgKaW6iNXVhiNAyCPGiUZcV5eQwdYjHWFgUlk-HO8qZh0zsXN26ICnXPOXzAx0aneZ4RY5zV6M70Nba9ed5Z4UYQAtyxAT4nYBGlKJu4IEYmy1dAmw2ToBJdB6wzIgwjdI/s1600/DSC_0003.jpg" height="242" width="320" /></a></div>
<div style="text-align: center;">
<br /></div>
<br />
The students should feel proud of what they have achieved and they will certainly have gained many of the skills and much of the knowledge they need to continue with First Robotics next year. We had some help from 2 Stackpole International engineers, Andrew and Kelly and from a Discovery Precision Engineering machinist (team member parent) but keeping the club going will require some more mentors to help with the team organization and teaching. It was a lot of fun doing it all myself but very tiring and the team was often limited by just one adult in the room. We will be able to get a better start next year by revisiting this years challenge and doing some design work around Aerial Assist for practice.</div>
<div style="text-align: left;">
<br /></div>
M Druivenhttp://www.blogger.com/profile/17762726760007479062noreply@blogger.com0tag:blogger.com,1999:blog-5934220882442181262.post-31637258297931893282014-02-23T14:44:00.000-05:002014-02-23T14:44:00.106-05:00First Build SeasonNow that the "Build Season" is over I can reflect on the last 7 weeks with a view to being better prepared for next year. In the First Robotics Challenge or FRC the <a href="http://www.youtube.com/watch?v=oxp4dkMQ1Vo" target="_blank">scope</a> of the challenge is released to the public at the start of January and the teams have just 7 weeks to build a robot that can meet the challenge. Thus the "build season". Now we have a couple of weeks to breathe and prepare for the actual competitions after the March break.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkGmTgX5MYdjHpKZ3O_SC262a3QCtPtXV5N5C69NmrYa_noMPB1_v871it97Tz1VzSFV6i1MQYN560I25gEok378ruq9zrvpyYOwxHSU5utPb-pOjoS2iY9sZpRRIJER_-Qxky8QtgixI/s1600/robot2014.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkGmTgX5MYdjHpKZ3O_SC262a3QCtPtXV5N5C69NmrYa_noMPB1_v871it97Tz1VzSFV6i1MQYN560I25gEok378ruq9zrvpyYOwxHSU5utPb-pOjoS2iY9sZpRRIJER_-Qxky8QtgixI/s1600/robot2014.jpg" height="240" width="320" /></a></div>
The finished robot meets all of the primary goals we set out:<br />
<br />
<ul>
<li>pick up the ball</li>
<li>score a low goal</li>
<li>score a low goal in autonomous mode</li>
<li>catch the ball</li>
<li>use flip-up velcro bumpers to change from red to blue easily</li>
</ul>
<div>
The last few days of building consisted of figuring out how to make things work and stay within the competition constraints. One engineer that helped us out stated that an engineer's job is to understand "function" and "constraints" - what it does and what rules and materials you must work with. This helped me to better understand the preparation necessary going into a challenge like this. As the robot came together I had to ask "What could I have taught them to better prepare the students to face up to a challenge like this. Here is a list of some of the lessons that came to mind.</div>
<div>
<br /></div>
<div>
<ol>
<li>At least some of the students have to be good at 3D modelling on a computer. We wrestled every day with vague ideas and pencil or whiteboard drawings that lacked any sort of precision, testing or detail. The 2 or 3 models we did end up with proved immeasurably important in the final design.</li>
<li>The devil is in the details. The students required a better knowledge of the materials and mechanisms available to make the design work. Early designs for the pickup arm featured the wheels at the top rotating in blank holes with no source of power. Shaft and bearing sizes needed to be interpreted and sometimes guessed at. There are just a handful of companies that supply parts for First robots and many of these parts have associated step files online so integrating these parts into a 3D model is very easy to do.</li>
<li>Once the ideas start to come together on the drawing table the students must be able to model their ideas both on screen and with mock-up models to insure that all of the robot parts interact and act in the way expected.</li>
<li>Get the bumpers on early. The bumpers on the robot interact with the ball as it is picked up and so the bumpers, or a reasonable facsimile, need to be in place. You don't want to be waiting on finished bumpers when it is time to try out some aspects of the robot function.</li>
<li>The students all need practice using hand tools to layout, cut and drill. For many this was their first or second experience with a hacksaw or electric hand drill. Precise measurement, accurate layout and skill with a hacksaw, drill press or portable drill were practiced for just a second or third time on the build.</li>
<li>Knowledge of fasteners and threads:<br />- nut and bolt sizes and types<br />- tap and die use<br />- use of wrenches, nut drivers and torque</li>
<li>Knowledge and experience with pneumatic systems. We had no pneumatic systems experience or materials when we decided to use pneumatics to operate the arm. Students require a better understanding of the constraints and an ability to calculate required and applied forces.</li>
<li>Knowledge of programming. We have some excellent programmers on our team and they handled the challenge of robot control with considerable skill. They were, however, hampered by not having a robot controller/computer to learn with until January 4. Advanced functions such as automatic targeting could not be attempted due to lack of time and experience.</li>
<li>The electrical wiring went pretty well. Most of my students have some classroom experience at this. Review wire and fuse sizes and have some wire labels ready. The robot became a bowl of spaghetti at the last minute when 3 pneumatic solenoids (4 wires each) were added. A last minute glitch was caused when the arm pulled on a wire ever so slightly causing the robot to stall. Wiring needs to be neat and bundled and should not move when other moving parts operate.</li>
</ol>
<div>
I'm sure there are more but I think this is a list of the major lessons and learning that can happen next fall as the students head into their second year at this.</div>
</div>
<div>
<br /></div>
M Druivenhttp://www.blogger.com/profile/17762726760007479062noreply@blogger.com0tag:blogger.com,1999:blog-5934220882442181262.post-25129007747590976742014-02-05T19:50:00.002-05:002014-02-05T19:50:51.018-05:00Second First Robotics postI could have titled this post "White knuckles on a white road - on my way to borrow some robot parts."<br />
<br />
A boat load of snow fell on Ontario today making the roads very slippery and white. I had arranged to visit some other teachers about 20 km away to borrow some parts for our First robot. I had no choice. I had to go today. The team, the students - are counting on me to get them these parts. All season radials on an old minivan. I just had to go and so with my knuckles getting white from gripping the wheel I set out in the middle of the day and slipped and slid my way down the highway.<br />
<br />
The First Robotics organization asks participants to adhere to the tenant of "Gracious Professionalism".<br />
<br />
"<span style="background-color: white; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px;">Gracious Professionalism is part of the ethos of</span><span style="background-color: white; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px;"> </span><em style="background-color: white; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px;">FIRST</em><span style="background-color: white; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px;">. It's a way of doing things that encourages high-quality work, emphasizes the value of others, and respects individuals and the community.</span><br />
<div style="background-color: white; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 15px; padding: 0px;">
<span class="text" style="margin: 0px; padding: 0px;">With Gracious Professionalism, fierce competition and mutual gain are not separate notions. Gracious professionals learn and compete like crazy, but treat one another with respect and kindness in the process. They avoid treating anyone like losers. No chest thumping tough talk, but no sticky-sweet platitudes either. Knowledge, competition, and empathy are comfortably blended.</span></div>
<div style="background-color: white; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 15px; padding: 0px;">
<span class="text" style="margin: 0px; padding: 0px;">In the long run, Gracious Professionalism is part of pursuing a meaningful life. One can add to society and enjoy the satisfaction of knowing one has acted with integrity and sensitivity. - www.usfirst.org.</span></div>
<div style="background-color: white; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 15px; padding: 0px;">
<span style="font-family: Times; font-size: small; line-height: normal;">I received a dose of this ethos today when the teacher I visited loaded me up with more and more parts saying "Here, take another, take two in case one does not work. That looks a little battered, take another." - until my arms were loaded. Thanks David. You are the best.</span></div>
<div style="background-color: white; margin-bottom: 15px; padding: 0px;">
And how is the robot going? Well with just over a week to go we are in gentle panic mode. A couple of planning missteps and a couple of mistakes mean we need to do a lot of work in the next few days. The team is excited and with some help and insights from some sponsor and mentor engineers we have some good ideas about what to do. I'm going to put a copy of the cover of the Hitchhikers Guide to the Galaxy on the cover of our game manual binder.</div>
M Druivenhttp://www.blogger.com/profile/17762726760007479062noreply@blogger.com0tag:blogger.com,1999:blog-5934220882442181262.post-67075889826949538652014-01-22T23:06:00.001-05:002014-01-22T23:06:17.103-05:00First for First<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6dL66pYXy2xHxV5qPJBrqlgLmrDDLQGKNek3pYlCnWosJ76efbe53vu3x4ZNnTRhyphenhyphenBcPKQ2oZbo2u5ZZqXyynMd1drLlyXmbnaTwKOzpF5cYM-vla9-shpUyUon5ntpLGk_gjISnm13Q/s1600/IMGP4177.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6dL66pYXy2xHxV5qPJBrqlgLmrDDLQGKNek3pYlCnWosJ76efbe53vu3x4ZNnTRhyphenhyphenBcPKQ2oZbo2u5ZZqXyynMd1drLlyXmbnaTwKOzpF5cYM-vla9-shpUyUon5ntpLGk_gjISnm13Q/s1600/IMGP4177.JPG" height="240" width="320" /></a></div>
Its been a while since I wrote a post and I can't believe I'm finding a few minutes right now to do this but, well here goes.<br />
<br />
I decided I had to write this after I came across this photo of an RC robot base we built at school several years ago. We had very little money to spend on this project so we bought two cordless drills, on sale at Canadian Tire. We cut the handles off of them and mounted them as seen above to power the bot. We extracted the motors and removed the chucks. We machined custom hubs to attach the motors to the 2 dolly cart wheels. The other 2 wheels are old swivel castors from a derelict cart. The dual DC motor controller was switched to multiplexed mode with 2 channels from the RC receiver. We could make this monster fly around the school with just one stick on the RC remote. It could turn on a dime and by giving it a little reverse from high speed you could stop on a dime. The two black decks were 1/4 inch PVC. The emergency stop button was useful more than once! With 2 sets of NiCd batteries and external chargers we could drive it all day.<br />
<br />
I liked the picture above all the more because it stands in such stark contrast to our current First Robotics base which my team just completed last week.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPyO5sgZkRyQesc3cgOp90ZMG8IuTi3FHnjhVamfcURp8nTXYeDAJskvFVTXxd95QkzmJBoB7cJWOyUo9UFJEo-ADZdv5eR2onmxZsZYfLrTiwF9eJuWoY1G3PeRN_r0NWbvRDRMTZFh4/s1600/kitBot.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPyO5sgZkRyQesc3cgOp90ZMG8IuTi3FHnjhVamfcURp8nTXYeDAJskvFVTXxd95QkzmJBoB7cJWOyUo9UFJEo-ADZdv5eR2onmxZsZYfLrTiwF9eJuWoY1G3PeRN_r0NWbvRDRMTZFh4/s1600/kitBot.jpg" height="165" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
The 2014 Kit Bot pictured here is the standard kit distributed to every team competing in the First Robotics league this year. 200 watt DC motors, gearboxes, belts and pulleys drive all six wheels with both speed and the ability to turn on the spot. Control is established from a driver station laptop via a local network to the onboard bridge and computer. The robot can operate autonimously or via driver input from the laptop using a joystick or game controller. The entrance fee to our first regional competition includes the Kit Bot. It took the students just a few days, following the included instructions, to assemble the base unit and get it running. They will have just 6 weeks to design, build, test and practice with a mechanism to complete <a href="http://www.youtube.com/watch?v=oxp4dkMQ1Vo" target="_blank">this years challenge</a>. </div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Just a few years ago, working on the Skills Canada challenge, we worked on our robot once or twice a week building the base from scratch and building a mechanism on top. We started in September and worked until just after March break. This year, starting on January 4 we have until Feb 17. So today we are about half way done. Six years ago 1/2 way done meant a working base and some ideas and plans for the rest. This year we have a working base, plans and a start on the rest so we're doing OK.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
More to come.</div>
<br />M Druivenhttp://www.blogger.com/profile/17762726760007479062noreply@blogger.com0tag:blogger.com,1999:blog-5934220882442181262.post-34483641215050476862013-08-30T22:47:00.003-04:002013-08-30T22:50:41.280-04:00Building High School Computer LabsMany teachers spent this week organizing classrooms and curriculum or coaching some early Fall sports in preparation for the first day of school next week. I had the unenviable task of converting 2 classrooms into computer labs - with a little help from admin, staff and students. I've lost count of the number of times I've built or upgraded labs during the summer, 7 or 8 I think. It has become routine. The task went very well this week so I thought I'd write about it, about what works and what doesn't, in case you find yourself tackling a similar project.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCSvxuYMKfYJTgU5ZGJq_O55VFIp84Jbk_XUn322BkX1DRZ4Wz9YV61JKQYveq10RT10aUaNCNFMM1b3KjC7QR8N9EetsXFFJXxNOYlDhyphenhyphencNUHxviumjm5A1wl1w5p4jzwFTU5Tjnvi2w/s1600/IMG142.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCSvxuYMKfYJTgU5ZGJq_O55VFIp84Jbk_XUn322BkX1DRZ4Wz9YV61JKQYveq10RT10aUaNCNFMM1b3KjC7QR8N9EetsXFFJXxNOYlDhyphenhyphencNUHxviumjm5A1wl1w5p4jzwFTU5Tjnvi2w/s320/IMG142.jpg" width="320" /></a></div>
The 2 new labs at Craig Kielburger are classrooms so the projector and window blinds were already in place.<br />
<br />
Last Spring after the decision was made to go ahead and use the classrooms the tenders went out to get more electrical circuits and network drops installed. This usually takes 2 or 3 months to complete. We asked for drops and outlets around the room perimeter and on a jiffy pole in the centre of the room. We got outlets and network drops around the perimeter but only electrical in the jiffy pole. So now most of the drops and outlets are not in a good location for any layout that I could see. That leads to rule #1.<br />
<br />
RULE #1: Make a scale drawing of the room and put scale tables, computers and chairs into it. Figure out precisely where you want the outlets and drops and then go into the room and mark those spots with a marker. Leave copies of the layout taped to the walls and in the hands of admin. This could be a summative project for some Tech. Design students.<br />
<br />
Most of the labs I've built in the past had no windows. I was glad to see the blinds in good working order in this classroom and I hope they are enough since those windows face south! In the past the ventilation was a problem in a basement lab and 2 labs at the core of the building. If classrooms are normally a bit too warm then turning them into a computer lab is a bad idea.<br />
<br />
We ordered 50 refurbished computers last spring and they were delivered during the summer and then set up by technicians to be ready to go. We still encountered some minor problems with a few of the computers after they were installed in the new labs so rule #2.<br />
<br />
RULE #2: Ask for an IT technician to be on call on setup day.<br />
<br />
The computer tables were ordered last spring but did not arrive until setup day - phew! Close one.<br />
<br />
RULE #3: Insure that all the materials you might need are in the building before setup day.<br />
<br />
The classrooms still had books and unwanted shelves in them. Fortunately some staff were around in July and agreed to clean out what they could. Our caretaker took care of the rest.<br />
<br />
RULE #4: Work with the caretaker. No one likes surprises or being left out of plans that affect them.<br />
<br />
The admin were supportive and it goes without saying that losing 2 classrooms is going to make timetabling tough. Purchasing all the hardware and wiring takes planning and work by admin and staff so make sure everyone is kept up to date on the projects progress.<br />
<br />
RULE #5: Work with admin.<br />
<br />
Setup day actually spanned 2 days. During day 1 students hauled tables into the room, assembled them and then hauled computers into the room. Day 2 saw several student volunteer their day to position everything and plug everything in. Hopefully the word will get out that students built the lab - giving students the inclination to look after it.<br />
<br />
RULE #6: Work with students. I've done one or two labs on my own. Its boring. This way students earn volunteer hours, I don't get a sore back and everyone has fun playing network games that are normally banned during school!<br />
<br />
There we go. Some of my thoughts. I know I've missed something. Oh yea! Printers!M Druivenhttp://www.blogger.com/profile/17762726760007479062noreply@blogger.com0tag:blogger.com,1999:blog-5934220882442181262.post-4518240010322902012013-04-28T15:45:00.000-04:002013-04-28T15:45:16.474-04:00Geeky weekendThis is a photo post.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkDFz1H-_bpv1lpczE5_wgsnoRp-dMBffQqj5GHPr_xRXPiWYxHvXooplmSI5bIxK12L0oZPP8zSFgeDD1b1IKS8agPjpRBQ7Y1JwB_DGu_kj6CLMt8xdTDsHYazDLPqBJuADsEW4iCP4/s1600/geekWeekend.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkDFz1H-_bpv1lpczE5_wgsnoRp-dMBffQqj5GHPr_xRXPiWYxHvXooplmSI5bIxK12L0oZPP8zSFgeDD1b1IKS8agPjpRBQ7Y1JwB_DGu_kj6CLMt8xdTDsHYazDLPqBJuADsEW4iCP4/s1600/geekWeekend.jpg" /></a></div>
<br />M Druivenhttp://www.blogger.com/profile/17762726760007479062noreply@blogger.com0tag:blogger.com,1999:blog-5934220882442181262.post-56574345223102667712013-04-24T22:17:00.001-04:002013-04-24T22:17:39.192-04:00Raspberry Pi Computers in the classroomOn April 23 I hosted a student conference at Craig Kielburger Secondary School for students enrolled in the ICT SHSM program at my school and TA Blakelock HS in Oakville. In the morning the students enjoyed a <a href="http://careermash.ca/">Career Mash</a> panel where 4 local business volunteers talked to the students about careers in the IT sector. Later the students heard about some of the excellent programs at Conestoga College including some degree programs like <a href="http://www.conestogac.on.ca/fulltime/1094C.jsp">Integrated Telecommunications and Computer Technology Bachelors program</a>. In the afternoon the students had 10 <a href="http://www.raspberrypi.org/">Raspberry Pi</a> computers and had a First Look at this fascinating little computer.<br />
<br />
Here is a quick <a href="http://animoto.com/play/3qWAj0MXuZrVzaDn2dG60g">30 second video</a> showing the students setting them up.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3aOvCZmLFh8gGxI8IWNd6EOrLH8KLkHkn2Dm1azZCvi6t-sDeLlsa1x2rscN09d7CfIw4caONjdxDgJElRdeemEoUXPHoebAhvnba8hps2aieyLBCTSFm1xYwKrebGH5kxM3QEpFtaZE/s1600/DSCF8164.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3aOvCZmLFh8gGxI8IWNd6EOrLH8KLkHkn2Dm1azZCvi6t-sDeLlsa1x2rscN09d7CfIw4caONjdxDgJElRdeemEoUXPHoebAhvnba8hps2aieyLBCTSFm1xYwKrebGH5kxM3QEpFtaZE/s320/DSCF8164.jpg" width="320" /></a></div>
<br />
My August 6, 2012 post talks about my own Raspberry Pi set up. It still works well. The new kits comprise a Raspberry Pi, an Adafruit 1151 HDMI to VGA adapter, a 4 GB SDRAM card with the same version of Wheezy I used last August, mouse and keyboard, VGA monitor and 1A USB power supply. I had to modify the config.txt file and then clone 10 SD RAM cards for the students so that they would be able to boot up and get a graphics output to the VGA screen the first time. One of my students helped me out with this the week before the event and sure enough much head scratching ensued.<br />
<br />
I started with my older version of Wheezy because I knew it worked with an HDMI to VGA adapter. I used a nearby Mac and an SD card adapter to quickly make changes to config.txt to try and find the correct settings for the Adafruit adapter. For the most part it looked to the other students as if we were staring at a black screen all afternoon! We were never able to get the latest version of Wheezy to display anything. That is why I stuck with my old version from last August. <a href="http://forums.adafruit.com/viewtopic.php?f=19&t=38355">Adafruit's own forum </a>was helpful in finally getting us going. These 2 commands will tell you which video modes the adapter supports:<br />
<span style="background-color: white; color: seagreen; font-family: Monaco, 'Andale Mono', 'Courier New', Courier, mono; font-size: 12px; line-height: 15.203125px;">/opt/vc/bin/tvservice -m CEA // to get the CEA modes</span><br />
<span style="background-color: white; color: seagreen; font-family: Monaco, 'Andale Mono', 'Courier New', Courier, mono; font-size: 12px; line-height: 15.203125px;">/opt/vc/bin/tvservice -m DMT // to get the DMT modes</span><br />
It turns out that our brand new adapters only support CEA mode 1 (640 x 480 VGA), or just about the lowest resolution you can imagine. I'm waiting to see what Adafruit says about this.<br />
<br />
Despite being limited to 640 by 480 the students quickly figured out how to make Scratch and Idle work to make Hello World programs. They got into the console and were able to use the command line for directory listing, running nano, ifconfig and ping and use the internet to find answers to their questions. There was much positive response and interest in learning more about this device. I'm going to repeat this exercise in a couple of days with some high school teachers.<br />
<br />
<br />M Druivenhttp://www.blogger.com/profile/17762726760007479062noreply@blogger.com0