Sunday, November 11, 2012

Less Whining, More Trying


Less whining, more trying

I do not want to be one of those people who whines about something that they know nothing about so I bought an Arduino Pro Mini 328 - 5V/16MHz  and a Pro Micro 5V / 16MHz Arduino Compatible Microcontroller on-board USB made by Sparkfun and mounted them on my board, the RAM-B II for a break-out board that I can plug in my sensors and servo motors directly. It turns out that the Pro Micro is pin-for-pin compatible with our motherboard, originally made for the BX-24 which is nice since I manufacture the RAMB II.
Arduino Pro Mini based on theATmega168

As predicted, there are some housekeeping chores that need to be done to get a PC to talk to this thing and I found myself recalling dos commands to get the bootloader working.  It now recognizes the device but I am still getting an error when I try to download a program.  I am confident that I will be resolve my problem later tonight after I post this blog entry so I guess it wasn’t that difficult to get up and running.

 Arduino has some very cool features.  There are lots of ‘Shields’ available that allow users to assemble an Arduino to meet their specific needs.  So far, I am only interested in using it to control the robots that I use to teach my program and I do like the 'DFRobot Nano I / O Shield' (break-out board) - with the Arduino Nano USB Microcontroller.  I do not yet know if Arduino has any advantage over either PIC16F876A or Netmedia’s Atmel based BX-24, the other two platforms I am currently using to teach the kids.  I suspect that I will be able accomplish most, if not all of the tasks Arduino can tackle with either one of those controllers.  Of course we have written the books for PIC Programming for the Impatient and "Basic-X and Robotics - The Art of Making Machines Think and I know these books well but I have been looking at tutorials on Arduino’s home page and on Limor Fried's (Lady Ada's) page .  My student’s learning comes first and I am looking at Arduino with an open mind.

Writing subroutines has been renamed, ‘Hacking’: Please correct me if I am wrong but it seems like the Arduine-ites have added slick subroutines that do cool things and then explain how, but not so much why and call that level of programming ‘Hacking’.  I thought that writing sub-routines was the next logical step after kids learn how to program events to occur line-by-line.  I guess it’s just semantics and marketing – kids want to be ‘Hackers’ so we’ll tell them that ‘Hacking’ means learning to write code.  When I think of ‘Hackers,’ I think of JohnnyPneumonic  or Count Zero,  – but maybe that’s just me.

Simpler is a better way to start out. Arduino can most likely do everything BX-24 can do but in a C-like language – that is the good news for people already know C but for me, teaching 10-12 year old kids, or anyone new to programming for that matter, Basic is, well, basic, more intuitive and easier to make the transition from B(asic) to ‘C’.  I think that giving complex solutions and explaining why they work is backwards.  I prefer to lead my students to what I want them to discover and I am frequently surprised by new solutions they come up with that I hadn’t thought of.   It is better to accept a new, possibly less efficient solution that a student has discovered than to take away the sense of accomplishment and wonder by showing them an elegant solution and explaining why it works.  My criteria are, how well do my students understand the language and how rapidly can they learn to write code to cause their robots to do what they want them to do.

Dueling Platforms: I will continue to program my new Arduino Pro Mini until I can accomplish all of the tasks I currently do with the PIC and the BX-24.  Then I will have the non-destructive robot battles, line following, Sumo and Table-top navigation, between platforms.   It’s kind of like the difference between boomerangs and Frisbees – I can challenge myself to a robot battle, moving each platform ahead as each one gains an advantage over the other .  I will update you on my progress.

Saturday, September 22, 2012

Some of my bots from the last few years.  I am getting ready for Maker Faire in Flushing Queens on September 29-30.  As I always tell my students, 'Robots rarely do what you want them to; I am happy when they do what I tell them to do."  Last night at the robot club meeting, a newcomer picked up a 'PIC-Bot' and asked what it did.  'Probably nothing,' but I was surprised to see that it knew enough to stay on the tabletop.  Robots are a rich context for teaching math and science but they are also really cool and often do unexpected things.

Thursday, September 20, 2012

Central Jersey Robotics Group meeting - Friday, September 21, 6:30 PM - Details - http://cjrobotics.com

Wednesday, September 19, 2012

The role of Teachers and Technology


I think that most of you will agree that we need engineers to solve many of the problems facing our planet today.  Teaching technology to young learners is essential for increasing the number of productive scientists and engineers.  If students do not enter college with the required math and science skills, their chances of completing an engineering degree are greatly reduced.  If students don’t come to high school prepared to enter the math and science classes that they will need in college, they are unlikely to get into those critical classes.  So we need to start before high school.   As soon as kids are able to operate in the most basic computer environment, use a keyboard and focus for a few hours at a time, we need to introduce to them programming logic and algorithms that are common to all programming languages.  Understanding the concepts of programming is important for success in engineering but the application of software - the integration of logic and hardware is both context for learning and skill for success in solving difficult problems.  Teaching software without hardware is like explaining the purpose of The Arc without The Flood. Robotics is a rich context for learning technology and it is a means to an end – a very cool hook on which to hang complex concepts.

Most engineers are not good at introducing the basic concepts, anxious to skip to the beauty of the elegant solution, so there is a need for teachers who understand both engineering and the mechanism for learning technology.  It is easier to educate a teacher to develop student’s learning and troubleshooting skills than it is to teach engineers how to teach.  Students can learn from experts in a given field once they know the process of learning, they have had incremental success with the technology and they have a basic idea of how to troubleshoot a problem.  By the time kids make it to college, we hope that they know how to learn but I teach at the junior college level and I know that very often this is not true. Much of my time is spent explaining the process of learning along with the actual concepts.  There will always be a small number of students who can sit down with a programming manual and learn to program on their own but there are many who, once they have been shown the method of learning and they have a context – a reason that they find relevant, they progress to a level that is above a basic level and are ready to be taught by an expert.   Unfortunately, these skills are often not taught in engineering schools because professors assume that their students should already know how to think logically. 
 
I use practical, intuitive technologies to solve real problems so that students can see the relationship to commonly used systems.  I use MikroBasic and PIC embedded controllers because they are cheap and easy to understand, they are similar to more advanced controllers and software and these skills will help them succeed in engineering school and throughout their careers.  Young children in my programs also learn to read schematics, breadboard and troubleshoot electronic circuits, which is useful for developing analog devices used for sensing.  The Basic language is intuitive and sets the stage for learning programming logic and algorithms that are common to all programming languages.