tag:blogger.com,1999:blog-28171075652966688952024-03-14T02:09:54.362-04:00Jon's PlaceA place to talk about AI and robotics in the context of the robots that I design and buildAnonymoushttp://www.blogger.com/profile/06146730662727917530noreply@blogger.comBlogger135125tag:blogger.com,1999:blog-2817107565296668895.post-90804692376938621112018-12-30T14:20:00.001-05:002018-12-30T14:20:29.409-05:00MicroDrone, and other stuffWell, its been a long time since I did a real post here - over a year. 2018 is winding down, and I'm working on a couple new robots. I also have some life news.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-aYvtghea2EY/XCkaOQpTGlI/AAAAAAAAFKI/w4zVpAxlfLMURZbDT0erDYwc58FzfuhZwCLcBGAs/s1600/IMG_20180618_083215.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="240" src="https://1.bp.blogspot.com/-aYvtghea2EY/XCkaOQpTGlI/AAAAAAAAFKI/w4zVpAxlfLMURZbDT0erDYwc58FzfuhZwCLcBGAs/s320/IMG_20180618_083215.jpg" width="320" /></a></div>
<br />
<br />
I started working as a Senior Software Engineer at Google in May, working out of the Kitchener (Waterloo) office. I'm working on a nice mix of hardware and software, with a bit of machine learning thrown in. Lots of cool stuff happening at Google, and I'm enjoying it immensely.<br />
<br />
I'm working on a completely new version of Seeker 2x, my newest autonomous mini-sumo robot. I've got a new 4-layer PCB built, and I'm just waiting on a stencil so I can populate one to test it. I had to do another new board because I'm completely re-doing the chassis, and the old one wouldn't fit.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-5WMgRaydD9g/XCkWU5TVaQI/AAAAAAAAFJk/7ESld4ctI5gU3k-hrqY26m8dVacyh-LKwCEwYBhgL/s1600/IMG_20181230_133219.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="240" src="https://2.bp.blogspot.com/-5WMgRaydD9g/XCkWU5TVaQI/AAAAAAAAFJk/7ESld4ctI5gU3k-hrqY26m8dVacyh-LKwCEwYBhgL/s320/IMG_20181230_133219.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<br />
I've also just recently decided to start working on a small autonomous indoor quadcopter drone, which I'm calling MicroDrone. The plan is to use a custom MicroPython board for the flight controller, and a Raspberry Pi Zero W for higher level control. I'm using brushless motors and props from a DJI Spark drone (since MicroDrone is pretty much the same size).<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-xBliXh70t7I/XCkWXc-2JnI/AAAAAAAAFJo/-JPrn1jk_B0G6obqj4XgwA1iSrLyki1tACEwYBhgL/s1600/IMG_20181230_132722.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="240" src="https://2.bp.blogspot.com/-xBliXh70t7I/XCkWXc-2JnI/AAAAAAAAFJo/-JPrn1jk_B0G6obqj4XgwA1iSrLyki1tACEwYBhgL/s320/IMG_20181230_132722.jpg" width="320" /></a></div>
<br />
<br />
I'm 3D printing the entire chassis, using ABS for now. I'm going to order a new nozzle for my printer so I can print carbon-fiber-reinforced ABS material.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-tsjIiUEWRhw/XCkWXezfdmI/AAAAAAAAFJs/d4vs1JVytOQ5mQ_XEksIxGZbhpUAEvLZgCEwYBhgL/s1600/IMG_20181230_132742.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="240" src="https://1.bp.blogspot.com/-tsjIiUEWRhw/XCkWXezfdmI/AAAAAAAAFJs/d4vs1JVytOQ5mQ_XEksIxGZbhpUAEvLZgCEwYBhgL/s320/IMG_20181230_132742.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
I'll be using laser time-of-flight range sensors on all six sides (front, back, left, right, top, bottom), and I'll be using a down-facing camera connected to the pi zero to do stuff like optical flow-based odometry. In the picture above you can see the two large holes in front of the battery at the bottom - the one next to the battery is for one of the <a href="https://www.pololu.com/product/3415">laser sensors</a>, and the one in front is for the <a href="https://www.adafruit.com/product/3508">down-facing camera</a>.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-OLQFDOCrpaA/XCkWXRUDfcI/AAAAAAAAFJw/6QGispUfkRYI9DhW92ElnRklnyLTWQELwCEwYBhgL/s1600/IMG_20181230_132807.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="240" src="https://4.bp.blogspot.com/-OLQFDOCrpaA/XCkWXRUDfcI/AAAAAAAAFJw/6QGispUfkRYI9DhW92ElnRklnyLTWQELwCEwYBhgL/s320/IMG_20181230_132807.jpg" width="320" /></a></div>
<br />
<br />
The flight controller PCB will have a cortex M4 32-bit ARM chip running MicroPython, and a BNO055 9-axis IMU for flight stabilization. The camera and the laser sensors will be connected to the Raspberry Pi Zero, which will be running Tiny Core Linux.<br />
<br />Anonymoushttp://www.blogger.com/profile/06146730662727917530noreply@blogger.com0tag:blogger.com,1999:blog-2817107565296668895.post-19372193156541471292018-03-31T16:07:00.003-04:002018-03-31T16:07:31.099-04:00Moved the blogI've moved the blog to a new domain, since I sold huv.com a short time ago.<br />
<br />
The new domain is:<br />
<br />
<a href="http://blog.huvrobotics.com/">http://blog.huvrobotics.com</a><br />
<br />
Hopefully I'll be posting some new stuff shortly...Anonymoushttp://www.blogger.com/profile/06146730662727917530noreply@blogger.com0tag:blogger.com,1999:blog-2817107565296668895.post-9807425386759575942017-09-07T10:20:00.000-04:002017-09-07T10:20:57.321-04:00Asset Science & RoboticsI got laid off from Mozilla about a year and a half ago (shortly after my last blog post). I ended up going back to the same place I was working before I joined Mozilla, a small start-up called <a href="http://assetscience.com/">Asset Science</a>. They were originally going to (re)-hire me to work on their software, but after seeing my workshop and some of my projects, they decided the time was ripe to build a robotics solution for testing mobile phones.<br />
<br />
So, for the past year and a half, I've been designing and building a simple, low-cost, robotics solution for doing automated testing of mobile phones. The first set of production prototypes will debut at the <a href="https://www.mwcamericas.com/">Mobile World Congress show</a> in San Francisco next week.<br />
<br />
Here's a slick professionally done video showing it off:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe width="320" height="266" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/a7_0bwP9biM/0.jpg" src="https://www.youtube.com/embed/a7_0bwP9biM?feature=player_embedded" frameborder="0" allowfullscreen></iframe></div>
<br />
I'll probably post more details after the show.Anonymoushttp://www.blogger.com/profile/06146730662727917530noreply@blogger.com0tag:blogger.com,1999:blog-2817107565296668895.post-53497658175138981192016-02-14T23:03:00.002-05:002017-02-14T10:23:22.726-05:00Roz - Raspberry PiIts been a while since I posted here - life has been busy. The first revision of the power board had a couple issues, so we ended up doing a second revision. This second revision works great.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://3.bp.blogspot.com/-T8M9Qh5NHuQ/VsFKMcsyVTI/AAAAAAAADVY/hTkDQAZ_52s/s1600/IMG_20160214_224238.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="225" src="https://3.bp.blogspot.com/-T8M9Qh5NHuQ/VsFKMcsyVTI/AAAAAAAADVY/hTkDQAZ_52s/s400/IMG_20160214_224238.jpg" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Power Board Revision 2</td></tr>
</tbody></table>
<br />
I 3D printed a mount for Roz so I could fasten both the power board and a raspberry pi 2. I also picked up a <a href="https://www.adafruit.com/products/2423" target="_blank">2.8" touchscreen LCD</a> from Adafruit, and also a <a href="https://www.adafruit.com/products/1937" target="_blank">spy camera</a> (also from Adafruit). You can see the camera in the picture below - it is on the end of a long gold-colored flat cable, just in front of the head.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://2.bp.blogspot.com/-MYNKpNKxKgo/VsFLtDXncLI/AAAAAAAADVk/oPpiOygR1LM/s1600/IMG_20160214_224048.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="225" src="https://2.bp.blogspot.com/-MYNKpNKxKgo/VsFLtDXncLI/AAAAAAAADVk/oPpiOygR1LM/s400/IMG_20160214_224048.jpg" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Roz</td></tr>
</tbody></table>
<br />
<br />
The raspberry pi 2 has a wifi module, and an <a href="http://www.espruino.com/Pico" target="_blank">Espruino Pico</a>, which has been re-flashed with MicroPython. The pico is acting as a bus forwarder for the Bioloid bus, which contains the 14 servos, and the power board (which is also a device on the bus).<br />
<br />
The screen will allow me to display status, and run debug routines, choose missions, and in general give me visibility into what's happening. The camera (which isn't mounted yet) will allow me to run <a href="http://simplecv.org/" target="_blank">SimpleCV</a>, and thus add vision-based capabilities to Roz. I'll be designing and printing a new head for Roz to include the camera mount.<br />
<br />
The other thing you can see in Roz's head is a <a href="http://www.pulsedlight3d.com/" target="_blank">LIDAR Lite</a>, which is essentially a laser-based range sensor. I backed the company on their original crowd-funding campaign, and this seemed like a reasonable place to use it.<br />
<br />
Having the power board allows me to hot-switch from battery power to wall power and back again, which is essential in my opinion for using an OS-based computer on a robot. I would have liked to incorporate a 3-cell charger into the board as well, but that will have to wait until version 2.<br />
<br />Anonymoushttp://www.blogger.com/profile/06146730662727917530noreply@blogger.com0tag:blogger.com,1999:blog-2817107565296668895.post-85159930126072871102016-01-03T09:00:00.000-05:002016-01-03T09:00:22.581-05:00Roz - Power BoardSo my brother <a href="http://blog.davehylands.com/" target="_blank">Dave</a> and I have been designing a new power management and distribution board for Roz and his walker. Dave bought a <a href="http://www.trossenrobotics.com/phantomx-ax-hexapod.aspx" target="_blank">6-legged bioloid walker</a> from Trossen Robotics, and we'll be sharing code and hardware on our projects.<br />
<br />
Its very close to being sent off to the board house to get made. Here's what the schematic looks like:<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-z_tJFqsYYy0/VokiBIgU0jI/AAAAAAAADUU/XPXWSDy-Wu4/s1600/Roz-Schematic.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="273" src="http://3.bp.blogspot.com/-z_tJFqsYYy0/VokiBIgU0jI/AAAAAAAADUU/XPXWSDy-Wu4/s400/Roz-Schematic.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Roz - Power Board Schematic</td></tr>
</tbody></table>
<br />
And this is the PCB layout:<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-i8tN-P2HaxQ/VokiCpj6I7I/AAAAAAAADUg/JXUW426dnvs/s1600/Roz-PCB.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="210" src="http://4.bp.blogspot.com/-i8tN-P2HaxQ/VokiCpj6I7I/AAAAAAAADUg/JXUW426dnvs/s400/Roz-PCB.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Roz - Power Board PCB</td></tr>
</tbody></table>
<br />
The PCB will be 80mm x 42mm. If you want to take a closer look, you can find the design files in my <a href="https://github.com/JonHylands/roz/tree/master/kicad" target="_blank">github account</a>. We use <a href="http://kicad-pcb.org/" target="_blank">Kicad</a> for all PCB design.<br />
<br />
This board has a number of nice features. You can plug in wall power (12 volts) and it automatically switches to use that to power the robot instead of the battery. When you unplug wall power, it automatically switches back to battery without missing a beat. It will also monitor the voltage in each cell of the battery (we use Lithium Polymer 3-cell battery packs).<br />
<br />
The main power on/off switch is actually a push-button (which can be remotely mounted). Push and hold it for more than 500 milliseconds and the circuit powers up. Push and hold (while powered up) for more than 2 seconds and the circuit powers down. Of course, its all programmable, using the 32-bit ARM Cortex M4 chip onboard, running <a href="http://www.micropython.org/" target="_blank">MicroPython</a> (of course, what else?)<br />
<br />
The board provides a <a href="https://www.pololu.com/product/2851" target="_blank">five amp/five volt regulator</a>, to power a raspberry pi. On Roz, I'll be using a raspberry pi 2, along with a <a href="https://www.adafruit.com/products/2423" target="_blank">320 x 240 touch screen LCD panel display</a>. Both of these were purchased from <a href="http://www.bc-robotics.com/" target="_blank">BC Robotics</a>, and I definitely recommend them as a distributor for Pololu and Adafruit stuff if you live in Canada.<br />
<br />
The microcontroller (an STM32F401) will also be a device on the bioloid bus, and so can be queried from the pi like the AX-12 servos. This will allow the pi to shut down power to the entire system, as well as monitor power. The microcontroller has an extra four general purpose I/O ports (which can be digital or analog), as well as an I2C port, an SPI port, and a UART. All of the ports have <a href="http://dhylands-examples.blogspot.ca/2014/06/example-of-solderable-jumperswitch.html" target="_blank">jumpers</a> to allow either five volts or 3.3 volts to power whatever is plugged in.<br />
<br />
Designing, prototyping, and building this board has been a lot of fun. I'll report back here once I get the actual bare board back from manufacturing.Anonymoushttp://www.blogger.com/profile/06146730662727917530noreply@blogger.com0tag:blogger.com,1999:blog-2817107565296668895.post-67464089723397920352015-12-02T13:55:00.000-05:002015-12-02T13:55:51.331-05:00Roz - Obstacle ScanningI wrote up a simple scanning routine for Roz that does a 120 degree scan using the front-facing GP2D12 sensor, gathering a result every 40 ms (basically the update rate of the sensor). The scan takes one second, so the resolution ended up being five degrees.<br />
<br />
Here's a quick video of the scan itself:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/yjbDkalCxLw/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/yjbDkalCxLw?feature=player_embedded" width="320"></iframe></div>
<br />
Here's the output of the scanning routine:<br />
<br />
<blockquote class="tr_bq">
>>> import sonarTest<br />
Total time: 1000<br />
[6.369501, 6.369501, 6.354494, 6.622461, 7.411738, 8.793456, 10.49099, 12.54209, 12.52528, 15.2174, 19.15718, 23.08899, 29.92357, 38.45215, 49.59524, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50]<br />
<br />
Groups: [(15, 24)]<br />
<br />
Max Group: (15, 24)<br />
Center of Max Group: 618<br />
Center Angle: 31</blockquote>
<br />
The scan routine, after running, analyzes the results, looking for areas where there are no obstacles. Each contiguous area gets grouped together, and it finds the "widest" obstacle free area, and then points the robot's head towards the center of that area at the very end.<br />
<br />
Here's a plot of the scan:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-eiQIpSOZRNo/Vl87wK8Ez3I/AAAAAAAADTk/lCOMAllBK-o/s1600/Roz-Scanning.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="365" src="http://3.bp.blogspot.com/-eiQIpSOZRNo/Vl87wK8Ez3I/AAAAAAAADTk/lCOMAllBK-o/s400/Roz-Scanning.png" width="400" /></a></div>
<br />
I've included scan line numbers in the plot for reference. The wall shows up nicely in the plot.<br />
<br />
In the actual obstacle avoidance routine I've written using this, Roz rotates his body to that final direction, and then continues walking.<br />
<br />
The obstacle scanner code is here:<br />
<br />
<a href="https://github.com/JonHylands/roz/blob/master/roz.py#L125-L170">https://github.com/JonHylands/roz/blob/master/roz.py#L125-L170</a><br />
<br />
and the place where I use it is:<br />
<br />
<a href="https://github.com/JonHylands/roz/blob/master/roz.py#L280-L312">https://github.com/JonHylands/roz/blob/master/roz.py#L280-L312</a><br />
<br />
I use body inverse kinematics to move Roz's body forwards while scanning. This has the effect of turning the main leg servos back, so the legs aren't in the way of the head as it does its scan.<br />
<br />
I'm planning on designing and building a new head eventually, that will replace the front GP2D12 range finder with a <a href="http://pulsedlight3d.com/" target="_blank">LIDAR-lite</a> sensor. I backed their original crowd-funding campaign, so I have one. While that sensor is major overkill in terms of capabilities, the really important thing is it can sample at 250 Hz, which is 10x faster than the GP2D12. This will allow me to get one-degree resolution scans.<br />
<br />
I plan on using this capability for more than just finding the way out of tight corners. I eventually want to use it to help choose which direction is best to walk in, and to do a limited amount of localized mapping.Anonymoushttp://www.blogger.com/profile/06146730662727917530noreply@blogger.com0tag:blogger.com,1999:blog-2817107565296668895.post-43684218197520778172015-11-30T07:55:00.001-05:002015-11-30T07:55:56.905-05:00Roz Walks AgainSo <a href="http://blog.huv.com/2013/12/roz-walking-again.html" target="_blank">two years ago, you might remember</a> I ported Roz to run in Python on a BeagleBone Black. I really like Python, but I figured out that I'm not so happy having a small simple robot running an OS. Basically, its major overkill, and it introduces a lot of problems that aren't really easy to solve, some involving trying to keep it running so you don't have to wait multiple minutes for booting.<br />
<br />
Anyways, over the past couple weeks, my brother Dave got <a href="http://www.micropython.org/" target="_blank">MicroPython</a> talking to Bioloid servos directly, without needing an interface board, much like he did with an AVR way back when.<br />
<br />
This was really a watershed moment for me, since it meant that I could program Roz in Python, but not have to deal with an OS on the robot.<br />
<br />
I quickly designed and 3D printed a new head for Roz, one that was much smaller and simpler than the old one, still containing 3 IR range sensors, but also containing one of my custom <a href="http://blog.huv.com/2014/02/micropython-board-with-crystal-and-new.html" target="_blank">uCee MicroPython boards</a>.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-6qR-n_QkwIs/VlxFnBaB4CI/AAAAAAAADTM/wV42Lh7CXDM/s1600/Roz-Standing.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="225" src="http://1.bp.blogspot.com/-6qR-n_QkwIs/VlxFnBaB4CI/AAAAAAAADTM/wV42Lh7CXDM/s400/Roz-Standing.jpg" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Roz Standing</td></tr>
</tbody></table>
<br />
<br />
<br />
<br />
This works really well, as it turns out. I ported the regular Python code to MicroPython (which wasn't that much work), and got everything working nicely again. Here's a simple video showing Roz walking around again.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe width="320" height="266" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/iL9w-wTjzeM/0.jpg" src="https://www.youtube.com/embed/iL9w-wTjzeM?feature=player_embedded" frameborder="0" allowfullscreen></iframe></div>
<br />
This is just the beginning. Now that I have a robot with reasonably robust hardware, I can start working on the programming side of things to hopefully add some interesting behavior. The current code can be found on my <a href="https://github.com/JonHylands/roz" target="_blank">GitHub account</a>, but of course it is a work in progress.<br />
Anonymoushttp://www.blogger.com/profile/06146730662727917530noreply@blogger.com0tag:blogger.com,1999:blog-2817107565296668895.post-1449449327071877552015-10-23T11:58:00.000-04:002015-10-23T11:58:57.197-04:00CNC MillingAs some of you probably remember, I have a Sherline CNC milling machine. It hasn't had much use in the last five years, but sometimes you really need to make robot parts out of metal instead of 3D printing them in plastic.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-mbFTFWOwuKw/VipUJ6-MWmI/AAAAAAAADR4/oghIf-BLO7o/s1600/IMG_20151023_113650.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="320" src="http://3.bp.blogspot.com/-mbFTFWOwuKw/VipUJ6-MWmI/AAAAAAAADR4/oghIf-BLO7o/s320/IMG_20151023_113650.jpg" width="180" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">My Sherline CNC Mill</td></tr>
</tbody></table>
I needed some new parts machined for <a href="http://www.huv.com/miniSumo/seeker2x" target="_blank">Seeker 2x</a>, so I decided it was time to haul out my mill, and get it running again. The last time I used it, I was controlling it from an old laptop I bought in 2000 (a 1 GHz Pentium 3) using Mach 3 through the parallel port. I decided I wanted something a little more modern, so I started researching options. It turns out that the <a href="http://www.xylotex.com/XS3525V202.pdf" target="_blank">Xylotex control box</a> I used was simply a power supply and a stepper control board to handle 3 axes, using the normal step/dir control pins for each axis.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-mjNJaYRBMgY/VipTVijOCWI/AAAAAAAADRw/4knLXyocWlI/s1600/IMG_20151023_113311.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="225" src="http://1.bp.blogspot.com/-mjNJaYRBMgY/VipTVijOCWI/AAAAAAAADRw/4knLXyocWlI/s400/IMG_20151023_113311.jpg" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Xylotex CNC 3-Axis Control Box</td></tr>
</tbody></table>
So, with a lot of research and discussions with my brother, I ended up installing <a href="https://github.com/grbl/grbl/wiki" target="_blank">GRBL</a> on an Arduino Uno I had in one of my drawers. I wanted to use <a href="http://chilipeppr.com/grbl" target="_blank">ChiliPeppr</a> for my GUI, and since my desktop is on the other side of my office from the mill, I decided to use a Raspberry Pi 2 that I had to run the <a href="https://github.com/johnlauer/serial-port-json-server" target="_blank">serial port json server</a>, so it could sit over on the desk next to the mill, and give access to the mill over the network.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-acV1SXx3RSw/VipVtmb-c1I/AAAAAAAADSE/LM-6ZFaH9HM/s1600/GRBL%2BEasyDriver_big.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://2.bp.blogspot.com/-acV1SXx3RSw/VipVtmb-c1I/AAAAAAAADSE/LM-6ZFaH9HM/s320/GRBL%2BEasyDriver_big.png" width="320" /></a></div>
I soldered together a custom 7-wire cable to connect my Arduino to the stepper board, set up the Rpi with the server, and plugged everything in. Amazingly, it all works seamlessly. Next post will talk about the software I use to get from CAD models to G-Code.<br />
<br />
<br />Anonymoushttp://www.blogger.com/profile/06146730662727917530noreply@blogger.com0tag:blogger.com,1999:blog-2817107565296668895.post-83629269680807324252015-10-14T19:58:00.000-04:002015-10-14T19:58:40.979-04:00Seeker 2x Running MicroPythonMy new boards came in today, ordered from <a href="http://dev.dangerousprototypes.com/store/pcbs" target="_blank">Dangerous Prototypes</a>. I ordered the boards on October 6, and they arrived at my door on October 14, which is amazing. The best part was the cost, the boards (10 copies of one board) were $10, plus $20 for 2-day shipping. Definitely worth it.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-HymnrZSZGM8/Vh7nVb9DXkI/AAAAAAAADRE/pNyUdHVRSqU/s1600/IMG_20151014_184333.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="225" src="http://1.bp.blogspot.com/-HymnrZSZGM8/Vh7nVb9DXkI/AAAAAAAADRE/pNyUdHVRSqU/s400/IMG_20151014_184333.jpg" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Seeker 2x new PCB</td></tr>
</tbody></table>
<br />
The idea is I'm stripping all the old electronics out of Seeker 2x, and I'm going to be replacing the insides with this new board, which contains:<br />
<br />
<br />
<ul>
<li>STM32F405 (32 bit ARM chip running <a href="http://www.micropython.org/" target="_blank">MicroPython</a>)</li>
<li><a href="https://www.bosch-sensortec.com/en/homepage/products_3/sensor_hubs/iot_solutions/bno055_1/bno055_4" target="_blank">BNO055 9-axis IMU with onboard sensor fusion</a></li>
<li>bluetooth module</li>
<li>128 x 64 OLED graphical LCD panel</li>
<li>2 extra edge sensors just in front of the wheels</li>
</ul>
<div>
I always had big software plans for Seeker 2x, but I really don't like programming in C, so I never got around to actually doing more than a bare minimum. Now that I'll be able to use Python to code things, I'm hoping I can do some much more advanced tricks.</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-tAr0NIBdcjg/Vh7pZb40XAI/AAAAAAAADRY/avVSOyVJZDI/s1600/Seeker2x.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="236" src="http://3.bp.blogspot.com/-tAr0NIBdcjg/Vh7pZb40XAI/AAAAAAAADRY/avVSOyVJZDI/s320/Seeker2x.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Seeker 2x</td></tr>
</tbody></table>
<div>
I'm also really excited to play with the new 9-axis IMU chip. For $16, you get a full nine-axis sensor package together with an onboard Cortex M0 ARM chip running real time (100 Hz) sensor fusion. A few years ago, that combination would have come on a big board and cost over $1000.</div>
Anonymoushttp://www.blogger.com/profile/06146730662727917530noreply@blogger.com0tag:blogger.com,1999:blog-2817107565296668895.post-43007573802131264402015-09-22T07:29:00.003-04:002015-09-22T07:29:59.822-04:00Two Old WarriorsI moved to London Ontario this past summer, and one of the perks of moving to a city is having a local hackerspace. <a href="http://www.unlab.ca/" target="_blank">unLab </a>is a neat place, with an interesting cast of regulars who show up every Thursday night. I have more stuff and better tools for the most part at home, but for me a hackerspace is all about the people you get to interact with.<br />
<br />
Anyways, this coming weekend (September 26/27) is <a href="http://www.doorsopenontario.on.ca/Events/London.aspx" target="_blank">Doors Open London</a>, and I'll be at the unLab all day on Saturday, talking to people and showing a couple of my robots.<br />
<br />
Yes, <a href="http://huv.com/miniSumo/seeker2/index.html" target="_blank">Seeker 2</a> and <a href="http://huv.com/miniSumo/seeker2x/index.html" target="_blank">Seeker 2x</a> are coming out of retirement, and will spend the day going head to head.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-Wz75vNoVgg8/VgE7c_14CcI/AAAAAAAADQY/yJE0mbPMC70/s1600/IMG_20150922_072212.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="225" src="http://2.bp.blogspot.com/-Wz75vNoVgg8/VgE7c_14CcI/AAAAAAAADQY/yJE0mbPMC70/s400/IMG_20150922_072212.jpg" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Seeker 2 and Seeker 2x Face Off</td></tr>
</tbody></table>
Should be a lot of fun...Anonymoushttp://www.blogger.com/profile/06146730662727917530noreply@blogger.com0tag:blogger.com,1999:blog-2817107565296668895.post-62040909938034174722015-01-19T15:18:00.000-05:002015-01-19T15:18:15.684-05:00Work StuffSome of you might be interested in the stuff I am doing at my day job (Mozilla - been working for them for two years now).<br />
<br />
In general, I'm building tools for measuring power consumption on FirefoxOS phones. Those tools include hardware and software components. I did a post a little over a year ago, when I first started working on power stuff.<br />
<br />
This year, I'm building a new version of the battery harness, one that is portable. The idea is, you attach it to your phone, and spend the day wandering around, doing whatever it is that you do, and all the while the battery harness is logging power usage data to a micro SD card.<br />
<br />
I assume the people reading this are more interested in how it all works, so I'll dive down into the details now.<br />
<br />
The battery harness basically pulls the battery out of the phone, and provides a secure mechanical adapter to power the phone from the battery, while allowing the positive line to be intercepted, between the battery and the phone. This shunt goes to the ammeter (a custom board that I designed and built), and the ammeter measures voltage drop across a resistor to get instantaneous current.<br />
<br />
Normally, the ammeter is in a small 3D printed box, and is connected to a PC view a USB cable. There is an AVR on the ammeter running some custom C code, and it sends power usage data over this USB cable to a Python application running on the host PC. With this new portable harness, I mounted the ammeter directly to the harness, and mounted a <a href="https://www.sparkfun.com/products/9530" target="_blank">Sparkfun OpenLog</a> board under it, connected to the debug hardware serial port on the ammeter (which normally isn't used). You can see these pieces on the following pictures:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-x6gCb-JaYug/VL1jzojMOhI/AAAAAAAADGE/-8LhV-eQpaE/s1600/IMG_20150118_215737.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://2.bp.blogspot.com/-x6gCb-JaYug/VL1jzojMOhI/AAAAAAAADGE/-8LhV-eQpaE/s1600/IMG_20150118_215737.jpg" height="240" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><i>Portable Harness with Ammeter</i></td></tr>
</tbody></table>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-g3wty3SaWM0/VL1jz0UhRTI/AAAAAAAADGA/ko-jsLWWZAo/s1600/IMG_20150118_215653.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://1.bp.blogspot.com/-g3wty3SaWM0/VL1jz0UhRTI/AAAAAAAADGA/ko-jsLWWZAo/s1600/IMG_20150118_215653.jpg" height="320" width="240" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><i>Bottom of Portable Harness, with OpenLog Board</i></td></tr>
</tbody></table>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
You can also see a small <a href="https://www.pololu.com/product/2119" target="_blank">Pololu Voltage Regulator</a> board tucked in there in the second picture. It is a step-up/step-down regulator, and produces a steady 5 volts from anything between 2.7 and 11.8 volts.<br />
<br />
Normally the ammeter is powered from the host PC over USB, but with this setup there is no host PC. We can't power it from the phone, because that will interfere with the power consumption measurements. So I got another little single cell <a href="https://www.sparkfun.com/products/341" target="_blank">850 mAh Lipo battery from Sparkfun</a>, and mounted it where the phone battery would normally go. It provides 5 volts (using the regulator) to power both the ammeter and the logging board.<br />
<br />
Here's what it looks like together:<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-4VuuOjiA6PM/VL1j0uDt5TI/AAAAAAAADGc/W-1vfwC-ZuI/s1600/IMG_20150119_143440.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://3.bp.blogspot.com/-4VuuOjiA6PM/VL1j0uDt5TI/AAAAAAAADGc/W-1vfwC-ZuI/s1600/IMG_20150119_143440.jpg" height="240" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><i>Portable Battery Harness</i></td></tr>
</tbody></table>
I designed and 3D printed a cover, so you could put the whole assembly into your pocket without electrocuting yourself or damaging the electronics. In the above picture, the cover is on the left, and contains an on/off power switch, a charge port (for the small lipo battery), and a neat little turning catch to hold it in position.<br />
<br />
Here's what it looks like put together:<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-gdJW1IbgjHo/VL1jztKQZLI/AAAAAAAADF8/inV0kXD1BJ4/s1600/IMG_20150118_215505.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://4.bp.blogspot.com/-gdJW1IbgjHo/VL1jztKQZLI/AAAAAAAADF8/inV0kXD1BJ4/s1600/IMG_20150118_215505.jpg" height="240" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><i>Portable Battery Harness with Cover</i></td></tr>
</tbody></table>
It make the phone somewhat thicker of course, but it allows you to still use all the features of the phone (including the camera) while measuring power consumption.<br />
<br />
Here's a picture with the power switch on. The three LEDs are on the ammeter - green is power, red is a flashing heartbeat, and yellow is an indicator for a software switch on the ammeter. The OpenLog board has a small blue LED, but you can't really see it in the picture.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-m-aNbfv5cqs/VL1j0znPIOI/AAAAAAAADGU/zQdlamiP84E/s1600/IMG_20150119_144027.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://2.bp.blogspot.com/-m-aNbfv5cqs/VL1j0znPIOI/AAAAAAAADGU/zQdlamiP84E/s1600/IMG_20150119_144027.jpg" height="320" width="240" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><i>Portable Battery Harness - Powered Up</i></td></tr>
</tbody></table>
There is still a lot of work to do on this - the charging system is not ideal, and I'd like to integrate it better, I also need to write some software on the phone itself, so it logs specific events (like "Took a picture") that can be correlated with the power log. I also need to figure out a way to monitor the voltage on the small LiPo, so I don't accidentally drop its voltage down below 3.0 volts (which can cause permanent damage to these batteries).<br />
<br />
<br />
<br />
<br />Anonymoushttp://www.blogger.com/profile/06146730662727917530noreply@blogger.com4tag:blogger.com,1999:blog-2817107565296668895.post-29641492089713841942015-01-16T12:33:00.000-05:002015-01-16T12:33:21.379-05:00Arduino RobotSo, its been quite a while since I last posted here. Sorry, haven't been working on anything robotics related in a couple months. Today I got a <a href="http://arduino.cc/en/Main/Robot" target="_blank">robot</a> in the mail from a contest I won over at <a href="http://www.ca.diigiit.com/" target="_blank">Diigiit Robotics</a>. This is the first robot I've owned (other than bioloid kits) that I didn't design & build from scratch myself.<br />
<br />
Not sure what I'm going to do with it, but you never know...Anonymoushttp://www.blogger.com/profile/06146730662727917530noreply@blogger.com0tag:blogger.com,1999:blog-2817107565296668895.post-25481800141602882232014-10-15T21:25:00.001-04:002014-10-15T21:27:00.463-04:00NanoSeeker v2.1 Populated BoardSo I built a board tonight, and its working (after removing and rotating one of the h-bridge chips I put on backwards). I've validated that micropython works on it, and I can turn on and off the four LEDs. I've also successfully paired my cell phone with the bluetooth module on the board, so I'm pretty happy about that.<br />
<br />
Tomorrow I'll test more of the functionality, making sure that everything works.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-KqWam1OuKaE/VD8cu7lUvSI/AAAAAAAADEY/HnPmb-xAr4o/s1600/IMG_20141015_210841.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://3.bp.blogspot.com/-KqWam1OuKaE/VD8cu7lUvSI/AAAAAAAADEY/HnPmb-xAr4o/s1600/IMG_20141015_210841.jpg" height="240" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><i>NanoSeeker v2.1 PCB Populated</i></td></tr>
</tbody></table>
<br />
Here's a picture of the entire sub, with the PCB attached.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-cUTMq90FtE4/VD8eSDy9uTI/AAAAAAAADEk/UUF-KsGV6UA/s1600/IMG_20141015_212311.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://4.bp.blogspot.com/-cUTMq90FtE4/VD8eSDy9uTI/AAAAAAAADEk/UUF-KsGV6UA/s1600/IMG_20141015_212311.jpg" height="240" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><i>NanoSeeker v2.1</i></td></tr>
</tbody></table>
The hole in the top of the nosecone is where the pressure/depth sensor will go.Anonymoushttp://www.blogger.com/profile/06146730662727917530noreply@blogger.com6tag:blogger.com,1999:blog-2817107565296668895.post-42305764785761773722014-10-15T10:43:00.000-04:002014-10-15T10:43:07.722-04:00New PCB ArrivedSo the new PCB from <a href="http://dirtypcbs.com/" target="_blank">DirtyPCB's</a> arrived today!<br />
<br />
It looks awesome, and I like the black color. Here's a picture of the top and bottom of the board, followed by a side-by-side of the previous yellow board with this new one. The only real difference is the bluetooth module footprint (and the color).<br />
<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-3RXc5GIuWvg/VD6HnsjP_iI/AAAAAAAADEA/FzHxLVscu2o/s1600/IMG_20141015_102315.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://3.bp.blogspot.com/-3RXc5GIuWvg/VD6HnsjP_iI/AAAAAAAADEA/FzHxLVscu2o/s1600/IMG_20141015_102315.jpg" height="240" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Top and bottom of new PCB</td></tr>
</tbody></table>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-AQtVA0BNkZw/VD6Hn-ANn7I/AAAAAAAADEE/uTPTRYq9gM8/s1600/IMG_20141015_102446.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://2.bp.blogspot.com/-AQtVA0BNkZw/VD6Hn-ANn7I/AAAAAAAADEE/uTPTRYq9gM8/s1600/IMG_20141015_102446.jpg" height="240" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">New PCB next to previous version</td></tr>
</tbody></table>
So I'm pretty happy about this - I'll see about getting this board populated tonight after work.Anonymoushttp://www.blogger.com/profile/06146730662727917530noreply@blogger.com2tag:blogger.com,1999:blog-2817107565296668895.post-51535367311015506302014-09-25T09:26:00.003-04:002014-09-25T09:26:57.246-04:00NanoSeeker v2.0 PCB - Time for a redo!I made a couple mistakes with this new board for NanoSeeker. One mistake was recoverable - I forgot to include a power line on the schematic going to the IMU chip, so I had to solder a wire in place to provide that. Ugly, but it ends up being usable.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-jfBqmeTPfu4/VCQX86pcmxI/AAAAAAAAC0M/fsSIIhBqn5I/s1600/IMG_20140925_092444.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://1.bp.blogspot.com/-jfBqmeTPfu4/VCQX86pcmxI/AAAAAAAAC0M/fsSIIhBqn5I/s1600/IMG_20140925_092444.jpg" height="240" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><i>NanoSeeker v2.0 PCB, with power wire for IMU</i></td></tr>
</tbody></table>
<br />
The second mistake was not recoverable. I chose a bluetooth module strictly based on its size, assuming it would work like other bluetooth modules I've used in the past. The module I chose, the BLE113 from BlueGiga, is a bluetooth 4.0 module, and is pretty much useless out of the box. You have to program it in order for it to be useful, which means you have to have some sort of programming interface designed into your board. Okay for a manufacturer who is going to build thousands of boards - not okay for a hobby-level board that is a one-off.<br />
<br />
I found a nice, small module made by ST (same company that makes the MCU chip I'm using), that is bluetooth 3.0, and supports SPP out of the box. The module part number is SPBT2632C2A. I got a couple of them from Digikey, and I'm going to ensure that it works before I do anything else.<br />
<br />
So, I'm redoing the board, and replacing the old bluetooth module with this new one. I've also made sure to add a power drop to the IMU. I'm going to try a new PCB place (<a href="http://dirtypcbs.com/">http://dirtypcbs.com/</a>) - they have similar prices but much better shipping options that SeeedStudio, who I used for the last board run.Anonymoushttp://www.blogger.com/profile/06146730662727917530noreply@blogger.com2tag:blogger.com,1999:blog-2817107565296668895.post-51005440206778019372014-08-31T21:03:00.004-04:002014-08-31T21:03:44.415-04:00NanoSeeker v2.0 PCB RunningSo, this morning I populated one of my new boards, and hand-soldered a few of the through-hole parts needed for it to run...<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-HQF1Vvs9xs8/VAPEmiwuYkI/AAAAAAAACzg/axmlG6UI29U/s1600/PCB-01.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://2.bp.blogspot.com/-HQF1Vvs9xs8/VAPEmiwuYkI/AAAAAAAACzg/axmlG6UI29U/s1600/PCB-01.jpg" height="103" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><i>NanoSeeker v2.0 PCB, Populated</i></td></tr>
</tbody></table>
Here's a video with a very simple script running, cycling the four LEDs on the board:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="https://i.ytimg.com/s_vi/6JCUt19zGeE/default.jpg?sqp=COSHj6AF&rs=AOn4CLASRlGwAa7G1HVEWq0zx5UZiKMAkQ" height="266" width="320"><param name="movie" value="https://www.youtube.com/v/6JCUt19zGeE?version=3&f=user_uploads&c=google-webdrive-0&app=youtube_gdata" /><param name="bgcolor" value="#FFFFFF" /><param name="allowFullScreen" value="true" /><embed width="320" height="266" src="https://www.youtube.com/v/6JCUt19zGeE?version=3&f=user_uploads&c=google-webdrive-0&app=youtube_gdata" type="application/x-shockwave-flash" allowfullscreen="true"></embed></object></div>
<br />
The script is from this page: <a href="http://micropython.org/doc/tut-leds">http://micropython.org/doc/tut-leds</a><br />
<br />
<pre style="background-color: whitesmoke; border-bottom-left-radius: 3px; border-bottom-right-radius: 3px; border-top-left-radius: 3px; border-top-right-radius: 3px; border: 1px solid rgb(221, 221, 221); font-family: Monaco, 'Andale Mono', 'Courier New', monospace; font-size: 14px; line-height: 17.5px; margin-bottom: 0.8em; margin-left: 3em; padding: 10px; vertical-align: baseline;"><code style="border: 0px; font-family: Monaco, 'Andale Mono', 'Courier New', monospace; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">leds = [pyb.LED(i) for i in range(1,5)]
n = 0
while True:
n = (n + 1) % 4
leds[n].toggle()
pyb.delay(50)</code></pre>
I'll be testing the individual parts on this board over the next little while...Anonymoushttp://www.blogger.com/profile/06146730662727917530noreply@blogger.com3tag:blogger.com,1999:blog-2817107565296668895.post-64752889205480526532014-08-26T16:32:00.000-04:002014-08-26T16:32:20.994-04:00NanoSeeker - PCBSo, its been three and a half weeks, and my new board showed up today. So hopefully in the next few days I'll get a chance to build one, and see if it works.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-LULWQP2q_2g/U_zugusopjI/AAAAAAAACzM/ShG7m7fHWpo/s1600/IMG_20140826_162608.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://1.bp.blogspot.com/-LULWQP2q_2g/U_zugusopjI/AAAAAAAACzM/ShG7m7fHWpo/s1600/IMG_20140826_162608.jpg" height="240" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><i>NanoSeeker v2 PCB</i></td></tr>
</tbody></table>
These boards were ordered from SeeedStudio.Anonymoushttp://www.blogger.com/profile/06146730662727917530noreply@blogger.com0tag:blogger.com,1999:blog-2817107565296668895.post-26611591942322437592014-08-01T14:22:00.001-04:002014-08-01T14:22:43.235-04:00NanoSeeker - New BoardI've been working over the past couple weeks on the design of the new board for NanoSeeker, and its done now, and sent off to <a href="http://www.seeedstudio.com/service/index.php?r=site/pcbService" target="_blank">SeeedStudio</a> for manufacturing.<br />
<br />
Here's the schematic:<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-DBVTq63CZuI/U9vXlAHib3I/AAAAAAAACxc/gvQ1aq5qFAk/s1600/NS-v2-Schematic.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://2.bp.blogspot.com/-DBVTq63CZuI/U9vXlAHib3I/AAAAAAAACxc/gvQ1aq5qFAk/s1600/NS-v2-Schematic.png" height="219" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><i>NanoSeeker v2.0 Schematic</i></td></tr>
</tbody></table>
The layout was difficult, because the board is only 26mm wide:<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-lBYCVV6B_38/U9vXypzDwRI/AAAAAAAACxo/Oi-bckU5UEs/s1600/NS-v2-PCB-both.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://4.bp.blogspot.com/-lBYCVV6B_38/U9vXypzDwRI/AAAAAAAACxo/Oi-bckU5UEs/s1600/NS-v2-PCB-both.png" height="84" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><i>NanoSeeker v2.0 PCB - Top & Bottom</i></td></tr>
</tbody></table>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-lwFa82W_KYs/U9vXyvgb1SI/AAAAAAAACxk/yZqLGefgL7c/s1600/NS-v2-PCB-top.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://2.bp.blogspot.com/-lwFa82W_KYs/U9vXyvgb1SI/AAAAAAAACxk/yZqLGefgL7c/s1600/NS-v2-PCB-top.png" height="84" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><i>NanoSeeker v2.0 PCB - Top Only</i></td></tr>
</tbody></table>
The board is going to be done in yellow, which I think is a nice color for an underwater vehicle. Since the shell is clear, it will all be on display. I'm having a surface mount stencil made by <a href="http://www.oshstencils.com/" target="_blank">OSH Stencils</a>.<br />
<br />
I'm again using one of the awesome <a href="http://www.pololu.com/product/2122" target="_blank">Pololu 3.3 volt switching up/down voltage regulators</a> to provide power for everything, from the <a href="http://www.hobby1.com/180mAh-2S-7.4V-20C-Li-Po-26AW.html" target="_blank">180 mAh 7.4 volt Lipo battery</a>.<br />
<br />
While I'm waiting for the new board to arrive (will be ~4 weeks), I'll work on getting some of the mechanical parts together (dive plane/rudder plus linear actuators), as well as getting started on some of the software that will be needed on the sub.Anonymoushttp://www.blogger.com/profile/06146730662727917530noreply@blogger.com2tag:blogger.com,1999:blog-2817107565296668895.post-86526005906484635882014-07-18T12:48:00.000-04:002014-07-18T12:48:11.266-04:00NanoSeeker Version 2So, its been quite a while since I last posted here. I spent most of April and May traveling, including going to <a href="http://makerfaire.com/" target="_blank">Maker Faire</a> in San Mateo, and <a href="http://2014.jsconf.us/" target="_blank">JSConf</a> in Florida. While I was at JSConf, I ran into some of the guys from OpenROV, and we immediately starting talking about ROVs and AUVs. I had brought NanoSeeker with me, just to show to anyone who was interested, and we found out completely accidentally that the battery holder tubes for an OpenROV are exactly the right size to make a transparent shell for NanoSeeker.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-9PqISeqIZQA/U8lMKvEft2I/AAAAAAAACwI/9Luiu350igE/s1600/IMG_20140718_123128.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://2.bp.blogspot.com/-9PqISeqIZQA/U8lMKvEft2I/AAAAAAAACwI/9Luiu350igE/s1600/IMG_20140718_123128.jpg" height="240" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">NanoSeeker with a clear shell</td></tr>
</tbody></table>
<a href="http://www.linkedin.com/pub/eric-stackpole/13/b5/b71" target="_blank">Eric Stackpole</a>, one of the founders of OpenROV, gave me a spare one they had with them, and I immediately started thinking about what I could do with a new version of NanoSeeker. I built the first version of <a href="http://blog.huv.com/2009/10/nanoseeker-update.html" target="_blank">NanoSeeker in 2009</a>, and a lot has changed in the home-brew electronics space since then.<br />
<br />
I decided right off the bat that it should run <a href="http://www.micropython.org/" target="_blank">MicroPython</a> (and thus use an STM32F405 as the processor), and incorporate a full 9-axis IMU, as well as a depth sensor and a speed sensor. I started working on the CAD model, and got it to the point where it was ready to be printed. I bought my own material cartridge for the 3D printer I use for work, so over the past week I printed the parts I would need.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-Az9qEYkxLqg/U8lNiQKEhiI/AAAAAAAACwU/9TyQ5vUIdlM/s1600/IMG_20140718_122715.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://2.bp.blogspot.com/-Az9qEYkxLqg/U8lNiQKEhiI/AAAAAAAACwU/9TyQ5vUIdlM/s1600/IMG_20140718_122715.jpg" height="240" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">NanoSeeker v2, beside the old v1</td></tr>
</tbody></table>
I need to find another o-ring that is the right size, and of course I need to completely redesign the electronics, but I think this is going to work out nicely. I'm going to include a bluetooth module on the board, which will allow me to update the python scripts driving it while it is on the bench, without having to open it up.<br />
<br />
I'm really looking forward to having a micro AUV that I can program in a reasonable language, without having to go through a lot of crazy hoops.Anonymoushttp://www.blogger.com/profile/06146730662727917530noreply@blogger.com2tag:blogger.com,1999:blog-2817107565296668895.post-21543919567614512932014-02-14T18:33:00.002-05:002014-02-14T18:33:32.691-05:00MicroPython Board With a Crystal, and a New Motor Driver Board<br />
So, I ordered a few of the crystals Damien used on the official MicroPython board, and although physically it isn't a perfect fit, it works, so I now have a nice clean board.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-cOZlXyNtGpY/Uv6lbOzw49I/AAAAAAAACiA/Xd0ShhYaErU/s1600/IMG_20140214_104058.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-cOZlXyNtGpY/Uv6lbOzw49I/AAAAAAAACiA/Xd0ShhYaErU/s1600/IMG_20140214_104058.jpg" height="320" width="240" /></a></div>
<span id="goog_854345488"></span><span id="goog_854345489"></span><br />
I also got rid of the orange LED, and replaced it with a proper blue LED (I didn't have any of those left when I put the board together). So, everything is as it should be, and is working nicely.<br />
<br />
I also ordered a couple new <a href="http://www.pololu.com/product/2135" target="_blank">motor driver boards</a>, and have one hooked up now - it is working great. uCee will be back together again shortly, driving around with my custom MicroPython board (all the videos shown up until now were with the Teensy 3.1 running MicroPython).<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-M7fHCbmBV0I/Uv6nRh3vB3I/AAAAAAAACiM/f5WlKFx14xw/s1600/IMG_20140214_182929.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://1.bp.blogspot.com/-M7fHCbmBV0I/Uv6nRh3vB3I/AAAAAAAACiM/f5WlKFx14xw/s1600/IMG_20140214_182929.jpg" height="240" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><i>New Motor Driver Board</i></td></tr>
</tbody></table>
Things are back to working, which is a good thing. I'll be bringing uCee (along with Roz) to <a href="https://us.pycon.org/2014/" target="_blank">PyCon</a> in April in Montreal, since both robots are powered by Python.Anonymoushttp://www.blogger.com/profile/06146730662727917530noreply@blogger.com2tag:blogger.com,1999:blog-2817107565296668895.post-44208892873461503712014-02-07T07:59:00.000-05:002014-02-07T07:59:02.060-05:00Of H-Bridges and 3.3 VoltsSo, in another twist of this ongoing saga, it turns out the <a href="http://www.pololu.com/product/712" target="_blank">h-bridge</a> I was using for uCee is not designed to work properly with 3.3 volt logic. I had it hooked up, but the motors weren't turning. I took it all apart, hooked up my logic analyzer to the logic pins, and sure enough I was getting a valid signal. I took my multimeter and was going to test the battery voltage to make sure everything was okay, but when I touched the battery probe to the ground pin on my MicroPython board, the motor started running.<br />
<br />
That was weird. So I reset it, and tried again. Same results. I tried it with the tip of a screwdriver, touching one of the +5 volt pins - same results.<br />
<br />
I went and found the (now discontinued) product page on <a href="http://pololu.com/">Pololu.com</a>, and sure enough, the minimum required voltage is around 4.2 volts.<br />
<br />
This is only the second robot I've built with 3.3 volt logic (NanoSeeker was the first), and the ARM chip I'm using (STM32F405) has 5-volt tolerant logic pins, so I haven't had to think about it too much so far. Clearly, I didn't think enough about it. It worked fine with the Teensy 3.1, but it clearly doesn't with my new board.<br />
<br />
Anyways, I found this cool Canadian company called <a href="http://www.ca.diigiit.com/" target="_blank">Diigiit Robotics</a>, that had one of Pololu's <a href="http://www.pololu.com/product/2135" target="_blank">new much cheaper h-bridges</a> in stock, so I ordered it. This h-bridge will work with logic down to 2 volts, so I should be safe.<br />
<br />
I'll have to print a mounting plate to hold this board in place - the board is much smaller than my current h-bridge, and has no mounting holes. I'll design a plate that is in the shape of the old h-bridge, with the middle cut out and some clips to hold the board in place.Anonymoushttp://www.blogger.com/profile/06146730662727917530noreply@blogger.com0tag:blogger.com,1999:blog-2817107565296668895.post-48718176902410918002014-02-03T17:12:00.001-05:002014-02-03T17:12:19.149-05:00MicroPython Board WorkingThings weren't looking that great as of my last update, but I soldered in an 8 MHz ceramic resonator I had in one of my parts bags, and the USB stuff magically started working!<br />
<br />
So, I have a fully functional MicroPython board now. Below is a picture showing my new board on the left, with my Teensy 3.1 carrier board on the right. The new board is a few millimeters longer, but the same width. The connectors are laid out in a much more usable fashion. The four wires you see coming out of the connector go to a couple push buttons, and allow me to reset the board, and also put it into DFU programming mode. Once the MicroPython software gets more stable and complete, I won't be re-flashing the board much, so I can remove the buttons. Its hard to get at the surface of the board while its in the robot, so I didn't want to put push-buttons on the board.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-pwybx1HysTc/UvATOX7nECI/AAAAAAAACgE/tkHTWtRqQm0/s1600/IMG_20140203_170531.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://2.bp.blogspot.com/-pwybx1HysTc/UvATOX7nECI/AAAAAAAACgE/tkHTWtRqQm0/s1600/IMG_20140203_170531.jpg" height="240" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><i>Two Boards Running MicroPython</i></td></tr>
</tbody></table>
<br />Anonymoushttp://www.blogger.com/profile/06146730662727917530noreply@blogger.com0tag:blogger.com,1999:blog-2817107565296668895.post-77582166119234827122014-02-02T10:30:00.000-05:002014-02-02T10:30:06.225-05:00MicroPython Boards, Crystal Trouble, Flashing LEDsSo, its a long and sordid tale. I got my boards back on Friday:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-MigqZ2qfsKo/Uu5hDgaQLLI/AAAAAAAACfg/T7o-7vAJwrk/s1600/IMG_20140131_131110.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-MigqZ2qfsKo/Uu5hDgaQLLI/AAAAAAAACfg/T7o-7vAJwrk/s1600/IMG_20140131_131110.jpg" height="240" width="320" /></a></div>
<br />
They sure look pretty. I soldered up the first board, and found out that I had switched the polarity of my battery connector between the Teensy and this board, so I let out a bunch of magic smoke when I first plugged it in. Fortunately, it was just the 5 volt regulator that smoked, and not the ARM chip, so I replaced the regulator and fixed my battery plug. I hooked everything back up, and...<br />
<br />
Nothing. No response over USB. I did a lot of troubleshooting, and determined that it was probably an oscillator issue.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-OZCF62Aj7BY/Uu5h72_RufI/AAAAAAAACfo/SUYtkKa77Yk/s1600/Troubleshooting-Crystal.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-OZCF62Aj7BY/Uu5h72_RufI/AAAAAAAACfo/SUYtkKa77Yk/s1600/Troubleshooting-Crystal.png" height="119" width="320" /></a></div>
<br />
That picture shows the BOOT0 line (third row), the RESET line (second row), and the oscillator (top row) hooked up to my logic analyzer. So you pull BOOT0 high, and then, while its high, pull RESET low. At that point, the chip is supposed to start up the external oscillator, which clearly isn't happening.<br />
<br />
<a href="http://dhylands.blogspot.ca/" target="_blank">My brother</a> suggested I could use one of the serial interfaces to the bootloader, and he went so far as to put together a blinking LED "Hello World" style application I could flash, along with the serial bootloader programming code from the Espruino project. I re-purposed my IMU port (which uses I2C normally, but the SCL/SDA lines are also Tx/Rx from USART3 on the chip). I removed the I2C pullup resistors, removed the crystal, grounded the USB D+ and D- lines, and plugged in an FT232 USB to TTL converter to my Ubuntu laptop. I was able to program the chip successfully using that setup, so now I know the other issue is a crystal issue, and not something else fundamental wrong with the ARM chip or my board.<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/pHqoPFXSm4E?feature=player_embedded' frameborder='0'></iframe></div>
<br />
So, I'm not sure where to go from here. The math says I should be using 6 pF capacitors with the <a href="http://www.ndk.com/images/products/catalog/c_NX3225GD-STD-CRA-3_e.pdf" target="_blank">crystal</a>, but something clearly isn't working.<br />
<br />
I'm going to code up an 8 MHz signal generator using my Teensy 3.1 board, and see if I can get USB working with an external clock source like that. If that works, then I need to try and figure out why this crystal isn't working.Anonymoushttp://www.blogger.com/profile/06146730662727917530noreply@blogger.com0tag:blogger.com,1999:blog-2817107565296668895.post-74807156061745137292014-01-28T12:40:00.000-05:002014-01-28T12:40:25.142-05:00Custom MicroPython BoardOne of the things I've been working on in my spare time is a new board for uCee. I was originally going to use the actual <a href="https://github.com/micropython" target="_blank">MicroPython </a>board that I will get from the <a href="https://www.kickstarter.com/projects/214379695/micro-python-python-for-microcontrollers" target="_blank">KickStarter</a> campaign, but I decided to build my own instead for a couple reasons:<br />
<br />
<ol>
<li>It will fit better, and be easier to connect everything to</li>
<li>I want to start playing with more advanced micro-controllers, and building your own board is definitely a good way to make that happen</li>
</ol>
The other thing I decided after my work-related adventures with the ammeter board, is I wanted to use a PCB design tool that can generate the PCB with the appropriate connections from a schematic. Most hobbyists use Eagle for that, but I absolutely detest the user interface, so I decided to try a different package, namely <a href="http://www.kicad-pcb.org/" target="_blank">KiCad</a>. The user interface definitely takes some getting used to, but once I figured out most of the idiosyncrasies, it is quite usable.<br />
<br />
Damien George (the guy behind MicroPython) very nicely published the schematic for his latest revision of the MicroPython board, so I shamelessly copied what I needed and added my own parts that uCee needs, and I ended up with something that should work.<br />
<br />
Here's my schematic:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-WeJfPd-QNZU/Uufp-sT9whI/AAAAAAAACe8/NSr1pwD82kc/s1600/Schematic.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-WeJfPd-QNZU/Uufp-sT9whI/AAAAAAAACe8/NSr1pwD82kc/s1600/Schematic.png" height="219" width="320" /></a></div>
<br />
And here's what the PCB looks like, first with the bottom layer hidden (which makes the top much more understandable), and then with the bottom later visible:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-dMiszn5l9ek/Uufp-P3QGII/AAAAAAAACfE/cSySkD8yUQ8/s1600/PCB-Top-Bottom.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-vSzzgtWe-EA/Uufp-JzE3DI/AAAAAAAACfI/w5HiEVokmQU/s1600/PCB-Top.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-vSzzgtWe-EA/Uufp-JzE3DI/AAAAAAAACfI/w5HiEVokmQU/s1600/PCB-Top.png" height="320" width="254" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-dMiszn5l9ek/Uufp-P3QGII/AAAAAAAACfE/cSySkD8yUQ8/s1600/PCB-Top-Bottom.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-dMiszn5l9ek/Uufp-P3QGII/AAAAAAAACfE/cSySkD8yUQ8/s1600/PCB-Top-Bottom.png" height="320" width="254" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
KiCad can also show you a 3D rendering of what your board would look like, but you have to supply 3D models of any custom parts you include. My board has a whole pile of parts that I had to create my own footprint for (usb connector, uSD connector, all the Hirose DF-13 2, 3, 4, and 6-pin connectors, etc). So I went to the manufacturers website, and found CAD files for most of them, and the imported them into Rhino, scaled and positioned them correctly, and then exported them as STL files. Wings 3D, although nowhere near as capable as Rhino, has a WRL exporter that KiCad is designed for, so I imported the STL models into Wings 3D, colored them, and exported them as WRL files. I then applied the 3D model to each component footprint, which allows me to generate this:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-fjKBsiVdssc/Uufp-FNeXSI/AAAAAAAACfA/7hUYLxUZiIc/s1600/PCB_3D.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-fjKBsiVdssc/Uufp-FNeXSI/AAAAAAAACfA/7hUYLxUZiIc/s1600/PCB_3D.png" height="253" width="320" /></a></div>
<br />
All in all, not bad.<br />
<br />
I plan on sending in this board to get made later this week, so hopefully I'll have my own MicroPython board inside uCee within a couple weeks.Anonymoushttp://www.blogger.com/profile/06146730662727917530noreply@blogger.com1tag:blogger.com,1999:blog-2817107565296668895.post-34911599717754822562014-01-25T20:22:00.001-05:002014-01-25T20:22:17.997-05:00uCee With A LidSo, the plan all along has been to print a lid for uCee, i just haven't gotten around to it until today.<br />
<br />
Way back when I first started this project, the very first thing I did was create a CAD model of the robot:<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-Bkb9l8qnTPE/UuRhGg_Xo9I/AAAAAAAACeI/VwnpAd8wXS0/s1600/Micro-Crawler-05.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://2.bp.blogspot.com/-Bkb9l8qnTPE/UuRhGg_Xo9I/AAAAAAAACeI/VwnpAd8wXS0/s1600/Micro-Crawler-05.png" height="180" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><i>uCee - CAD Model</i></td></tr>
</tbody></table>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
Now that the robot finally has its top, you should be able to see the resemblance:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-pIt0jJGqTUM/UuRimm3J_oI/AAAAAAAACeY/0AWWXKpSu_Y/s1600/IMG_20140125_201852.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://3.bp.blogspot.com/-pIt0jJGqTUM/UuRimm3J_oI/AAAAAAAACeY/0AWWXKpSu_Y/s1600/IMG_20140125_201852.jpg" height="240" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><i>uCee - Real Robot</i></td></tr>
</tbody></table>
<br />
So, I think it has turned out pretty good, all in all. I just ordered a new pair of batteries for it, so by next weekend it will hopefully work a little better (the batteries I have now are ones I bought back in 2006 for NanoSeeker, and they are pretty much toast). I also have to put together 3 ProxDot sensors, and mount them.<br />
<br />
For now, I'm going to work on the software, which can be found (in its current simplistic form) in my <a href="https://github.com/JonHylands/uCee-py" target="_blank">GitHub repository</a>.<br />
<br />
Here's another video, this time with the top on:<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/Gln-jAQxop4?feature=player_embedded' frameborder='0'></iframe></div>
<br />Anonymoushttp://www.blogger.com/profile/06146730662727917530noreply@blogger.com0