JunkBot Update Notes:
- changed PWM functionality: Originally used 4-PWM pins to accomplish the task at hand. Realized it can be done with 2 PWM signals. ie: PWM on pin 3 and HIGH on opposing pin = Forward. PWM on pin 3 and LOW on opposing pin = reverse. Had to invert the duty cycle of course.
- added SD Card functionality to the JunkBot: Am able to record the movements as directed from the wireless remote control, and play back those movements. The device would probably require stepper-motors to have a chance of cutting the lawn by memory alone. However, the next modification to this will likely be a reverse playback or 'rewind' function. Seems to be slight differences between recorded and actual movements, but likely due to timing.or traction I assume.
*One of the major problems I encountered was the cheap SD Shield purchased did not connect well to the cards, so I actually ended up pressing the card in further while I taped it in place. It worked great after that, but took me quite a while to determine the issue since it would stop working randomly, but work again upon re-insertion. One of the motors also started putting out excessive feedback and causing it to fail during writing, and causing data corruption. Replaced with a motor from broken cd-changer.
- Separated all vehicle actions into separate functions to make it easier to follow as well as for later on if individual customized movements are required. ie: Adjust > Fwd/Rvs > FwdRt/FwdLft/RvsRt/RvsLft
- Modified/modifying code to make remote control and turning smoother and transitions more seamless between wheels moving from forward to reverse etc. Is quite a bit better than before.
- Starting to investigate and experiment with different methods for navigation or spatial memory along with looking at sensors that may be useful when attempting to mow a lawn autonomously. This will be a bit of a process to say the least. Wondering about the level of difficulty in building my own acoustic range finder.
- found it impossible to even barely light an LED from analog pin 6 or 7
on the Arduino Nano, but have not found any reference in the official
documentation or otherwise that would suggest why. This was tested on
both Nanos that I have. Could it have something to do with the fact that
the Uno or Duemilanove have only 5 analog pins??
JunkBotSD source: here
Monday
Wednesday
Ahh.. the junk bot. Built over a weekend, the initial idea is to control a lawn mower from the comfort of my chair, and possibly make it semi or fully autonomous. One of the problems includes it being Febuary with snow outside. Also is the fact that I don't have many of the required mechanical parts, so I went with a prototype using what would eventually be the circuit and logic that drives the lawnmower.
I recently bought an Arduino Duemilanove board and liked it so much, I got myself two Arduino Nano boards to play with. I soon realized I might be buying even more in the future... The two were put to use immediately for this project, one for the controller, and one for the JunkBot.
The Requirements:
Basically, the Junk-Bot must use spare parts for everything I don't have. I plan to use this for a lawnmower, so no need to waste money on prototype or wait for needed parts. I want to get the electronics and logic built and tested, then I can attach some motors to a lawnmower, plug in, and rock out.
The Physical:
Drive Train:
One drive-train is from an old cassette player(Top Picture), with a wheel from some sort of toy car glued on with hot-glue. It uses pulleys. Elastic found in drawer used for one pulley, other was in-tact.
The other side uses a similar drive-train, but I don't know what device it came from. It uses gears and one pulley. The wheel is an orange-juice bottle lid glued onto a plastic object that fits nicely over the last gear on the drive-train. Wheel has rubber glued on. (from what seems to be an old inner-tube)
The poor 'third wheel' is probably from a tape drive too.
Frame/Body:
These are glued together using an old can of mints which can be seen in the under picture.
Used two battery packs I had around, clear in the pictures. Intend to use 12v or 6v in practical application.
Pictures:
The Electronics:
RF Controller:
New Parts:
- 1 Arduino Nano
- 1 RF TX Shield 315Mhz
- 2 Potentiometers
Spare Parts:
- 4 10K Resistors
- 1 Breadboard w/ wires
Junk-Bot:
New Parts:
- 1 Arduino Nano
- 1 RF RX Shield 315Mhz
- 8 Heat-Sinks (for looks)
Spare Parts:
- 4 IRF640 NPN Mosfet
- 4 IRF9640 PNP Mosfet
- 4 555 Timer IC
- 1 Breadboard w/ wires
- 8 Spare Diodes (1A or so maybe?)
- 2 Green LEDs w/510K Resistors (increase for 13v or more)
- 4 10K Resistors
Requires about 7-17v for normal operation, although the Arduino could run on that while the transistors take much more with separate power supplies.
Again, the intent is to remote-control a lawn-mower with the cheapest, most accessible parts I can find.
Controller Schematic
JunkBot Schematic
The code below uses pins A1 and A0 for LEDs. Schematic uses spare pins from 555 timers.
The Logical:
Written using the Arduino IDE, running on Arduino Nano/ATmega328
Functionality:
The JunkBot will sit and wait for commands by default, and check for RF signals. When an RF signal is received, variables are set and the pwm signal starts as the opposite pin(s) go HIGH or LOW respectively, causing a + or - signal with varying duty cycle to be sent through the motor(s). Wheels turn both forward and backwards. Control is fairly precise considering the mechanichal parts invovled.
Right now the JunkBot works fairly well and is easily controlled. It is not the fastest or best looking piece of work, but it functions great. The next step is going to be figuring out a way to build in automation for cutting a lawn on its own.
I wanted to document my projects for my own purposes, mainly because so many of my projects are built for the temporary enjoyment that they provide, while being re-used later for "more important" projects that seem to come along on their own. If I'm going to go through all this time, work, and money, I may as well share it with whoever might be able to use the information, so here it is, my project blog.
I have to finish my start with some good advice from the man who got me started 'playing' with electricity and electronics so many years ago: "Don't take any wooden nickels"
I have to finish my start with some good advice from the man who got me started 'playing' with electricity and electronics so many years ago: "Don't take any wooden nickels"
Subscribe to:
Posts (Atom)
AutoAnalogAudio Library - nRF52 Now supports Successive Approximation Analog-to-Digital Converter for Audio Input
AutoAnalogAudio Library - nRF52 Now supports SAADC Support for Successive Approximation Analog-to-Digital Converter for Audio Input I'v...
-
Arduino: Using the full potential of NRF24L01 radio modules A New, Optimized Fork of the RF24 Radio Library: High speed data transfers an...
-
Automation/IoT with Arduino, RPi, NRF24L01+ and MQTT Control and monitor Arduino remotely with mobile devices Overview: Please se...
-
Arduino Radio/Intercom/Wireless Audio : Streaming Audio in Real Time using Arduino and NRF24L01 In my last blog post, I talked a...