Posted by: freesystem | March 1, 2008

ATmega2561 Development Board Schematics

Motor Driver and Xbee Module

I have been working on a development board for the ATmega2561, mainly because this chip has so many features and I could not find a board with it. The board is more of a breakout board then a real development board, because it has very few peripherals built in. It does has a 7805 voltage regulator, a Max232 UART level shifter(for both USARTs) and an ISP Header. The rest of the pins are broken out to headers, each one getting its own +5 and Ground pin, in servo pinout. I figure any other stuff I need on it I can build a separate board for, making this one of the most flexible AVR platforms out there. I have already designed a Motor Driver and a Maxstream Xbee wireless(see pic above) module for it.

The motor driver communicates over serial to an on board ATmega32, which drives the motors. This takes the overhead of driving the motors off of the main CPU and opens up more PWM pins for other uses. The motor driver has six(thats right, you heard six) LMD18200 3 Amp motor drivers with current sense and thermal flag. That means that you can drive six motors, 3 bipolar steppers, or one 18 amp motor. The driver board also had a thermal flag output through an eight input NAND gate, so if one or more of the drivers is overheating the main processor will know. Also hooked up to this pin is a fan driver through a MOSFET, so you can make it turn a fan on when one starts overheating, or override it through the override pin. It also has an ISP header for firmware updates, and serial for communication with the main processor.

The Xbee module isn’t quite as amazing as the motor driver, but it does have some cool features. It has a triple interface system, meaning you can interface it to a robot over USART, a robot or computer over level shifted RS-232, or a computer over USB. It will support a Xbee or Xbee pro, and breaks out every pin on them for further hacking. It also boasts an on board voltage regulator, and transmit/receive LEDs.

Finally, the main board. I already talked a little about the board, so ill focus on the chip itself. It has 256Kb of Flash, 4Kb of EEPROM, and 8Kb of SRAM. It has six timers with a nine channel pulse width modulator. Also, a 10 bit ADC with 8 channels. See here for more information.

I will be posting the final schematics later today. They will be posted under the GPL License.

Advertisements
Posted by: freesystem | March 1, 2008

Conky: The little status monitor that could

I was writing my last post, and realized I had not blogged about Conky! Conky is a status monitor(and oh so much more) that embeds information right into your desktop. But thats not all, it will also support integration with Python applets, which allows you to embed almost any information into your desktop. Here is a screenshot of my configuration:

My Conky Screenshot

Posted by: freesystem | March 1, 2008

11 things missing from Plasma in KDE 4

Plasma Logo

Here are the 11 most important things that I think are missing from KDE4: Plasma.

  1. Ability to open other widget formats: It would be really nice if I could use Apple Dashboard widgets within Plasma, at least until the community can develop some more Plasmoids.
  2. Calculator Plasmoid: Seriously, what kind of Widget suite doesn’t have one!      EDIT: I have been told in the comments that you can find one here.
  3. Unit Converter Plasmoid: Same as the calculator, its a necessity.
  4. Weather Plasmoid: Same as the last two, it should be included by default.
  5. Ability to embed useful information(Terminal Output, Weather, Email, etc) directly on to the desktop: A great way to seamlessly embed small bits of information into the desktop without taking up extra space with the Plasmoid border and such. Should work similar to Conky, but have a GUI so the average person could configure and use it.
  6. Terminal Plasmoid: Have I mentioned yet how much I use terminal? It would be great to have a terminal Plasmoid, though I would still probably use Yakuake more often.
  7. Web Browser Plasmoid: Be able to operate in two modes. A set it and forget it so you can set it to a part of a page and it will automatically update every minute, half hour, hour day, month… Other mode would allow for full browsing with forward and backward buttons and a address bar
  8. RSS Plasmoid: Should also bee included by default
  9. Marble(Maps) Plasmoid: Could be useful in some situations. Would allow you to either see in satellite mode, or street mode, and also get directions.
  10. More Tomboy like Sticky Notes: The sticky note Plasmoid included with extragear-plasma is great, but it would be wonderful is there was a Plasmoid like Tomboy notes from Gnome.
  11. Klipper Plasmoid: Would further polish the integration of KDE
Posted by: freesystem | February 29, 2008

Adobe AIR for Linux!

Adobe AIR Logo

Mozilla Prism

Adobe AIR, for those of you that have not heard of it is an RIA(Rich Internet Application) that will bring the convenience of the internet(transparent updates, instant file syncing) and combine it with the advantages of the desktop(access to file systems, faster). They have version 1.0 released for Windows and Mac OS X. Just recently they announced a version coming for Linux, which is supposedly in closed alpha right now. This does sound like a really great idea, because not only would you have perfect cross platform apps, but there are just so many advantages to a system like this. Personally though, I am leaning towards Mozilla’s Prism, which is doing similar things, but is has several key differences:

  • It supports all operating systems
  • Its free(as in freedom)

As you probably know by now I favor any free software. So, you can check them out at the following URls:

Adobe AIR

Mozilla Prism

Posted by: freesystem | February 27, 2008

BatchPCB: PCB Fabrication for the average hobbyist

I ran across this a while ago while looking for a cheap PCB fabrication place. I was looking at PCBNet with there 25 dollar for two layer deal. Thats kind of a scam, because when I entered my board(which did comply to there requirements), and my board was going to cost 136 dollars. BatchPDB, on the other hand is done my the wonderful people over at SparkFun. Its really cheap even if you only get one board done. There is a ten dollar set up fee(per order) and then an extra $2.50 per square inch. They accept a lot of Gerber formats, most notably Eagle and Protel. They even have a tutorial for exporting the correct gerber from Eagle!

http://www.batchpcb.com

Posted by: freesystem | February 27, 2008

Project Update: Autonomous Search and Rescue Robot

I ran some field tests today for basic object avoidance. The verdict: failure. The concept is good, but this robot was really built for indoor terrain, and was no match for anything like gravel or steep inclines. It really does not make much sense, as I thought the tank tread type things would work better, but sometimes you just never know. Anyway, I’m going to beef up the whole thing a bit. I am getting a real printed circuit board made, so I can can the breadboard. Its going to be based on the ATmega2561 instead of the ATmega32, so there should be some improvements there. Its also going to have a magnetic compass, GPS, CMU Camera and a few more range finders. The CMU Camera is a neat little device. Its a camera capable or object tracking and stuff like that. I have not messed around with mine much, I just got it to track a bright orange ping pong ball. I have not chosen a GPS yet, but I am looking at the Copernicus model that Sparkfun sells. If any of you have recommendations or experience with a specific model please let me know. I am probably going to stick with the Vex servo motors, but have 4 of them in four wheel drive, and larger wheels(5 inch diameter). That way the robot will be further off the ground, and hopefully be able to handle in worse terrain.

Here are some pics of the first robot:

Circuit Board Close UpFront ViewBack ViewAngle View

Posted by: freesystem | February 23, 2008

A look at Linux Package Managers

As you know from the last post i’m making my own Linux distro. I have looked a quite a few Linux Package managers, and I think I am going to go with Debian’s dpkg and apt. Here is a pretty good list of them, quoted from Wikipedia.

So, what do you people think?

Posted by: freesystem | February 23, 2008

New Project: My own Linux Distro

I have tried many other Linux distros, and have finally settled on just compiling one myself. It is going to be very customizable and elegant, but not bloated. I am going to include the following packages, as well as the very basic required ones:

  • KDE3.5, and offer a version with KDE4.0.1
  • An assortment of KDE apps
  • A severely customized version of conky
  • Alien
  • Python
  • GCC
  • Perl
  • Ruby
  • And many more that I think of while compiling

I will offer a disk image to anyone that wants one, but I don’t think it will grow into anything big. Please sound off your suggestions in the comments, any programs or new features you want me to include. Also, if anyone wants to make artwork for it, or has a name please let me know in the comments.

Posted by: freesystem | February 23, 2008

How-To: AVR Development under Linux

Here is a quick little how to for getting any STK500 Clone to work under most Linux systems. I am not going to be specific to any distro, as this has worked in Ubuntu, Gentoo, Debian, and Arch. I have no reason to believe that it would not work in anything else. So, all this guide assumes is that you know how to obtain and install packages for your specific distro. Also, if your STK500 Clone has a built in USB to Serial chip you need to figure out how to get that working, however the most popular ones are supported under the kernel. For instance, the CP2102 on my STK500 clone worked out of the box. I have also heard good things about FTDI’s FT232.

  1. Install, Compile, or in any other way obtain the following packages:
  • gcc-avr: A port of the GNU C Compiler to the AVR Architecture
  • avr-libc: AVR Library for stuff like accessing and manipulating registers
  • binutils-avr: Converts the object code into AVR-readable hex files
  • avrdude: The software that actually drives the programmer

I know these are in the Debian and Ubuntu repositories, so you can just use apt to get them. I don’t know about any other distros, as I needed the latest version of GCC-AVR, so I compiled it from source.

2. I use the following makefile for my development, so I do not need to type in a log cryptic code. You will need to modify it to suite your needs, such as changing the target AVR and main.c name. To get it working simply make a new file called makefile and paste the below makefile into it. Then modify it to your needs. I distribute the makefile under the terms of the GPL License Agreement.

3. To compile and download your code to the AVR all you need to do is have the makefile pointing to the source code, then cd into the directory and type “make”.

4.[OPTIONAL] I have found the SCitE IDE to work very well for AVR development. You just have the makefile correctly configured in the source directly. To compile and download code simply hit F7.

I hope this helps other people get there AVR’s working with Linux, as that was certainly one of the reasons I would have gone back to Windoze. I hope to in the future write a How-To for getting AVR JTAG to work in Linux.

Makefile:

##Location of the compiler. You generally should not have to change this unless you installed to a non-standard directory.
CC=/usr/bin/avr-gcc
##Your specific AVR
MEGA=32
##Arguments to pass on the command line. Do not modify this unless you know what you are doing.
CFLAGS=-g -Os -Wall -mcall-prologues -mmcu=atmega$(MEGA)
##Path to avr-binutils, specifically avr-objcopy. You should not have to change this unless you installed to a non-standard directory.
OBJ2HEX=/usr/bin/avr-objcopy
##Path to AVRdude. You should not have to change this
PROG=/usr/bin/avrdude

##Target Source file, you will probably have to change this for every project you do. Do not include .C or anything.
TARGET=main

program : $(TARGET).hex
$(PROG) -c avrispv2 -p m$(MEGA) -P /dev/ttyUSB0 -e
$(PROG) -c avrispv2 -p m$(MEGA) -P /dev/ttyUSB0 -U flash:w:$(TARGET).hex

setfuse:
avrdude $(AVRDUDE_FLAGS) -u -U lfuse:w:0xA4:m
avrdude $(AVRDUDE_FLAGS) -u -U hfuse:w:0xD1:m

%.obj : %.o
$(CC) $(CFLAGS) $< -o $@

%.hex : %.obj
$(OBJ2HEX) -R .eeprom -O ihex $< $@

clean :
rm -f *.hex *.obj *.o

Posted by: freesystem | February 23, 2008

Idea: [Almost] Fool Proof Backup System

Well, after losing a ton of data from my flash drive dying, I got an idea for a really secure backup scheme. Here is goes:

Each computer has a separate /home partition.  This partition is cloned to a local server every few minutes for speedy backups, then less frequently to a remote server.  My other two computers also sync there /home partitions with the local server.  This allows my data to be very redundant, and perfectly synced.   Ill post some more details when I get it running. The only issues I think it would run into was if more then one person was using my three computers at one time, and modifying the same file. This could be resolved by a simple but annoying diff.

Older Posts »

Categories