The Huawei E367 OpenWRT tested compatible modem is here, along with some friends. I ended up getting 12 USB modems for $20. That was all I could find on eBay. I am completely over the MR3020, and have no reason to keep these modems except one as a spare.
These have the same setup as my first one, 3G radio, micro-SD slot and large SIM slot, with external antenna connector. I'm not sure if they're locked, I tested one with an AT&T sim card and it works. If one is locked, there are unlocking instructions all over the web.
If you want one of these Huawei E367, let me know. I'll ship them for postage only. If not, back to eBay they go.
Okay so we have a working Pi over 3G, with a reverse SSH tunnel. I was able to boot the Pi, it phoned home, then I could send requests on any port from a dedicated LAN at home. The home based LAN is connected to an SSL VPN, and I can use my laptop to test things in the field before leaving it out there.
It looks like SimpleIDE supports Linux, and Parallax has a nice tutorial on how to setup everything on the Pi. I will install that next. I, or anyone else that wants to, should be able to FTP code, or write it directly on the Pi.
So it looks like I'll be using my PAB + PropC for navigation, and the Prop Protoboard + SPIN as the system that controls the power buses.
I will put the rover back together this weekend. I'm done painting. I'm going to 3D print a waterproof case for steering pots. I plan to use two of them, but ignore one in the code, keeping it as a spare in case something goes wrong. I have a feeling that will take all day to make and test out.
$8 shipped for 8 relays, and all the passives and optos. That left me wondering about quality issues. I figure the relays will be open or closed most of the time and not switching much. I ran this for a couple of cycles and nothing broke.
Next I will load test them, but not turning on and off that fast. I need to figure out what the load will be, not much point in overstressing it.
Good news on the linear actuator. I was able to easily move the limit switch, so it is impossible to stress the steering. A feedback pot would normally be good enough, but not this time. I may use two feedback pots, one on each steering arm. It sure would be nice to have 4 wheel steering. This thing has a big turn radius. I'm going to have to teach it how to do a 300 point turn.
The microswitch leads were stuck through the plastic and bent over. I tried not to melt the plastic but it was impossible. That plastic piece rides inside of a slot, inside of the cover I removed for the photos. There's an o-ring where the shaft exits, so I'm confident this will be somewhere between water resistant, and waterproof.
I was hoping to get it put back together today, but I'm having paint issues again. The Krylon and Rustoleum HATE each other, bigtime. I'll post some pics of that tomorrow.
The paint isn't quite done, but I'm impressed with the durability. I scuffed it and nothing happened. Also, it feels rough, like CARC paint.
I beefed up the steering, there's a little more to do on that. The desert is hot enough to make this plastic weak, so I'm trying to reinforce everything around attachment points.
I need to figure out how to attach the front wheels. They had clips on them that I had to destroy to remove. I don't really want to use them, but I don't want to drill a hole in the axle either.
Well, it's almost time for a test drive. Keep in mind this is temporary, so I can get in some testing. For now, I put down some wooden board and loosely screwed everything to it so it can flex a little. Left to right, fuse block, 7v PSU for Propeller, little battery meter, rear motor controller, Propeller, steering motor controller, and RC receiver. This will probably be the last test with the RC receiver. The rest will be over the modem, or XBee.
The original battery has been on a conditioning charge, and capacity cycle. It checks out, more than enough to run some tests. I've measured around 2.5 A @ 12 V for the rear motors, and 0.5 A for the steering actuator. The battery is rated 9.5 AH, so it should be good for a long drive.
I'll get a good idea of the turning radius and traction.
I have some code from older RC robots using PWM motor controllers. It loaded it and only two motor controllers will respond. All three motor controllers will work, so long as they're plugged into the first 6 pins, the remaining 6 pins for channel 2&3 don't seem to do anything. This is the first time I've used it with 3 channels.
I removed all of the RC stuff for troubleshooting. Duane, have you used this with more than 2 channels?
DAT objectName byte "TwoPwmX131127e", 0
CON ' Parent object constants
_CLKMODE = XTAL1 + PLL16X
_XINFREQ = 5_000_000
TOTAL_ENCODERS = 4 '4 ' This is not user changable. The other constants may
' adjusted by user.
MAX_ENCODER_INDEX = TOTAL_ENCODERS - 1
'SPEED_BUFFER_SIZE = 16
'PULSE_BUFFER_SIZE = SPEED_BUFFER_SIZE
CYCLES_PER_ENCODER_CHECK = 1600 '800
'ENCODER_LOOPS_PER_WRITE = 126 '512
DEFAULT_PWM_FREQUENCY = 10000 'CHANGED FROM 200 to 10k
DEFALUT_PWM_RESOLUTION = 50 'higher = slower rpm
FIRST_RECEIVER_PIN = 20
TITLE_X = 3 ' location for title
TITLE_Y = 3
DISPLAY_X = 3 ' location for pulse info
DISPLAY_Y = 5
READING_X = DISPLAY_X + 13 ' pulse value printed here
VAR
'long speedBuffer[SPEED_BUFFER_SIZE * TOTAL_ENCODERS]
'long debugTime
'long pulseBuffer[PULSE_BUFFER_SIZE * TOTAL_ENCODERS]
long pwmOnTime[TOTAL_ENCODERS], pwmTime
long pwmFrequency, pwmResolution
long targetPtr, negativePinPtr, positivePinPtr
' parent object variables
long targetSpeed[TOTAL_ENCODERS]
long pulseLength[Rc#POSSIBLE_CHANNELS], previousPulseLength[Rc#POSSIBLE_CHANNELS]
OBJ ' parent object
Pst : "Parallax Serial Terminal"
Rc : "RcReceiver121116c"
DAT ' parent object
redPins long 02, 05, 08, 11 'Left, Right. Steer Motor Driver Direction Pins 4,3,2
blackPins long 01, 04, 07, 10 'Left, Right, Steer Motor Driver Direction Pins
enablePins long 00, 03, 06, 09 'Left, Right, Steer Motor Driver PWM Pins
PUB Main | speed ' parent object
StartEncoders(@enablePins, @redPins, @blackPins, @targetSpeed)
waitcnt(clkfreq * 1 + cnt)
speed := 0
repeat
repeat until speed =< -30
targetspeed[0] := speed
targetspeed[1] := speed
targetspeed[2] := speed *10 'actuator multiplier
RefreshSpeed
speed := speed - 1
waitcnt(clkfreq / 10 + cnt)
waitcnt(clkfreq * 5 + cnt) 'observation period
repeat until speed => 30
targetspeed[0] := speed
targetspeed[1] := speed
targetspeed[2] := speed *10 'actuator multiplier
RefreshSpeed
speed := speed + 1
waitcnt(clkfreq / 10 + cnt)
waitcnt(clkfreq * 5 + cnt) 'observation period
Awesome progress, from concept to field testing in a very short time. I'm kind of wondering how well you will do in the sand, is it light and fluffy stuff, or heavy and compacted?
Nice work!
Awesome progress, from concept to field testing in a very short time. I'm kind of wondering how well you will do in the sand, is it light and fluffy stuff, or heavy and compacted?
Nice work!
Thanks. It will be a mix of all kinds of stuff from silt to rocks. You can usually see the bad spots. They look like a snow drift, except it's sand. We will most likely stay in a wash area, which is hard on the surface.
Although there won't be much sand where we're going today, I hope it will be a good test.
Here's the Rover RC Code, since the Rover won't be RC long, this is final. Also we'll be using Prop C anyway.
{{
Rover RC Controller
}}
CON
_CLKMODE = XTAL1 + PLL16X
_XINFREQ = 5_000_000
FIRST_RECEIVER_PIN = 16 'first RC Pin, don't forget 4.7K resistors
OBJ
PWM : "PWM_32_v4.spin" 'used for motor controllers
Rc : "RcReceiver121116c" 'used to decode PWM signals from RC RX
Pst : "Parallax Serial Terminal" 'not used ATM
VAR
long pulseLength[Rc#POSSIBLE_CHANNELS], previousPulseLength[Rc#POSSIBLE_CHANNELS] 'ser
PUB main | throttle_ch, steer_ch, dutycycle
PWM.Start 'initialize PWM cog
waitcnt(clkfreq * 1 + cnt) 'not sure if needed
' pst.start(9600) 'disabled debug
result := Rc.BuildMask(FIRST_RECEIVER_PIN, FIRST_RECEIVER_PIN + 1, FIRST_RECEIVER_PIN + 2, {
} FIRST_RECEIVER_PIN + 3, FIRST_RECEIVER_PIN + 4, FIRST_RECEIVER_PIN + 5)
Rc.Start(result) 'use pins specified above to start RC object
waitcnt(clkfreq * 1 + cnt) 'not sure if needed
dira[7] := 1 ' steering enable pin 4 'set up enable pins on all motor controllers
dira[8] := 1 ' steering enable pin 3
dira[1] := 1 ' steering enable pin 4
dira[2] := 1 ' steering enable pin 3
dira[4] := 1 ' steering enable pin 4
dira[5] := 1 ' steering enable pin 3
repeat
throttle_ch := Rc.GetRc(0) '-512 back + 512 forward
steer_ch := Rc.GetRc(1) '-512 left + 512 right
if steer_ch < 0 'turn left
outa[7] := 0 'swap enable pins
outa[8] := 1
PWM.Duty(6,-steer_ch/6,5000) 'scaled PWM value
if steer_ch => 0 'turn right
outa[7] := 1
outa[8] := 0
PWM.Duty(6,steer_ch/6,5000)
if throttle_ch < 0 'go back
outa[1] := 1
outa[2] := 0
outa[4] := 1
outa[5] := 0
PWM.Duty(0,-throttle_ch/7,2000)
PWM.Duty(3,-throttle_ch/7,2000)
if throttle_ch => 0 'go forward
outa[1] := 0
outa[2] := 1
outa[4] := 0
outa[5] := 1
PWM.Duty(0,throttle_ch/7,2000)
PWM.Duty(3,throttle_ch/7,2000)
I'm bored waiting for batteries to charge, so here's a pic of the first Rover mission. There's some rough terrain down a hill, then along a "dirt like" trail. Then into some concrete ruins. Then back, I hope.
I blew 5 fuses last night, so I've replaced them with higher ratings, and auto-reset breakers. AutoZone has a lot of cool stuff. I had no idea that fuses have LEDs in them to show they're blown. Pretty neat.
I had no idea that fuses have LEDs in them to show they're blown. Pretty neat.
That is cool. Sounds just like my old-school light-up doorbell pushbutton, which is obviously a momentary SPST switch in parallel with a small internal lamp (neon?). The lamp draws a miniscule amount of current, allowing that to flow though the AC(?) doorbell solenoid constantly (power vampire). Of course the lamp goes out when you press the doorbell, which is just like your fuse before it blows.
Kids, don't drive something 20 minutes away for a first test. I could have figured this out in my backyard lol... I didn't make the concrete ruins! I haven't been to this field in a couple years, a lot of trees fell. I must be used to flying copters and not dealing with ground clutter. It's a nice change from drones, and the first time I've drove anything like it FPV.
The steering fell apart making it difficult. The part I built, and the vehicle itself. Duct tape would have been awesome... Besides not being able to steer, the traction was bad, I got stuck a lot, and killed a lot of battery getting unstuck. 55 Ah AGM toasted in less than an hour. It was dropping down to 12 V at full speed.
I will beef up the steering until it's over-beefed. The drive motors are geared a little too high. Traction would help it move, but it will consume a lot more power, and I feel it will still get stuck. When it's in the desert I can stick to flat ground. We can set moving 10' /day as a realistic goal, it's not a race. If it gets stuck, plan on 1-2 days of charging to get unstuck.
Next, I'm going to fix the steering and take it to the beach.
Your shakedown cruise was pretty cool, and I really like your video overlay. I see you have a couple of problems to address. As far as the wheels, I'm thinking they are thick plastic. Could you fasten some metal strips to them to act like paddles, I'm wondering if the trade off for getting through the sand, is a bumpy ride on hard ground.
Also could you just need a little more weight in the back?
BTW: you may have to look into four wheel drive if that sand is too loose.
All in all a very productive first test, you have found the weaknesses, and are formulating a plan to fix them. 100 percent successful IMHO.
Thanks. Yes the wheels are hard plastic, but they aren't thick. Whatever we attach should be mainly friction fit, with a couple screws to hold it in place. I guess I need to find some mountain bike tires.
I will add some dead weight in the back. I picked up some empty sandbags.
The loaner battery was 42 lbs, and only on one side. You can't put the battery in the middle, there's too much plastic there. It's the center console with cupholders, etc. The two batteries I have on order are half the weight each, and can go on either side to distribute the weight a little better. I will also gain 15 Ah.
Steering fix, setup of dual batteries, and add rubber to tires will happen this week. I'll test it on sand this weekend. If that goes well we should be mounting solar panels the week after, if that goes well it should be in the desert by the end of the month.
Adding dead weight seems counter intuitive to me. Better add more or bigger batteries.
Since you want to put solar cells on top, having the center of gravity as low as possible is a goal to go for.
Instead of putting rubber around the tires (or in addition) I would look for the spikes used in motocross-bikes. Cant be so expensive, they are using lots of them on a bike tire.
One side is a thorn the other one a screw. Just drill holes in your tire and screw them in.
Not nice to wood floors in the inside of a house, but in a desert spikes can not damage much, but provide excellent traction.
Dead weight point taken, and I forgot about the weight of the solar panels. So no dead weight needed in the desert, the panels are 24 lbs without framework. For testing I'll use dead weight instead of the solar panels, to keep the panels safe. I've been testing the panels off the rover, and no issues there.
I wanted to do spikes. I plan to stay away from rocks so they would be great. The tire is very thin plastic. It will be in really hot temps, on hot sand. I feel the spikes will work their way out. The other part is you can't get inside of the tire, it's sealed all around.
There's a place called Performance Cycle a couple miles from here. I can get anything out of their recycle bin for free. They said people ask all the time. It's not costing me anything so I'm going to test it.
The reality is, without any suspension we're going to have to stick to flat ground. I feel like the traction we have is enough. Everything revolves around not getting stuck.
As you mentioned previously, I think getting some wide knobby mountain bike tires, and cutting and screwing or pop-riveting those in several places around the slick plastic tire would be a great improvement in traction.
Yes, I'm going to skip the scrap. I ordered 4x 14" mountain bike tires, should be here tomorrow. At $9 ea it was hard not to. I like the idea of the whole tire around the tire. I feel it will help keep it in place.
Most glue would make it stiff. I have some flexible white glue, aka canopy glue, and 4 screws evenly distributed. Maybe some epoxy on the edges?
I hope that works. Batteries will be here Thursday. Things are looking good for this weekend's beach test.
I just saw some MTB tires on clearance at Walmart for $6 IIRC. Be advised that they are WHITE, however, so as a fashionista forumista, you really can't use them after Labor Day.
Yes, I'm going to skip the scrap. I ordered 4x 14" mountain bike tires, should be here tomorrow. At $9 ea it was hard not to. I like the idea of the whole tire around the tire. I feel it will help keep it in place.
Most glue would make it stiff. I have some flexible white glue, aka canopy glue, and 4 screws evenly distributed. Maybe some epoxy on the edges?
I hope that works. Batteries will be here Thursday. Things are looking good for this weekend's beach test.
Don't forget the other choices: contact cement, Liquid Nails, Gorilla Glue, silicone. The canopy cement sounds like a contact cement.
The two different materials may be difficult to join without some high tech adhesive. Plenty rivets?
Comments
Xannie waits!
He did. They got him back and more problems....
By the way erco your robots leave for Oz in two days...
I won't be able to go to work either
You're just doing a different sort of work, telecommuting like these interplanetary rover drivers: https://www.amazon.com/Working-Mars-Scientific-Discovery-Exploration/dp/026201775X
I have that book, it's a good read.
These have the same setup as my first one, 3G radio, micro-SD slot and large SIM slot, with external antenna connector. I'm not sure if they're locked, I tested one with an AT&T sim card and it works. If one is locked, there are unlocking instructions all over the web.
If you want one of these Huawei E367, let me know. I'll ship them for postage only. If not, back to eBay they go.
It looks like SimpleIDE supports Linux, and Parallax has a nice tutorial on how to setup everything on the Pi. I will install that next. I, or anyone else that wants to, should be able to FTP code, or write it directly on the Pi.
So it looks like I'll be using my PAB + PropC for navigation, and the Prop Protoboard + SPIN as the system that controls the power buses.
I will put the rover back together this weekend. I'm done painting. I'm going to 3D print a waterproof case for steering pots. I plan to use two of them, but ignore one in the code, keeping it as a spare in case something goes wrong. I have a feeling that will take all day to make and test out.
Here's the new connectivity block diagram.
Next I will load test them, but not turning on and off that fast. I need to figure out what the load will be, not much point in overstressing it.
Good news on the linear actuator. I was able to easily move the limit switch, so it is impossible to stress the steering. A feedback pot would normally be good enough, but not this time. I may use two feedback pots, one on each steering arm. It sure would be nice to have 4 wheel steering. This thing has a big turn radius. I'm going to have to teach it how to do a 300 point turn.
The microswitch leads were stuck through the plastic and bent over. I tried not to melt the plastic but it was impossible. That plastic piece rides inside of a slot, inside of the cover I removed for the photos. There's an o-ring where the shaft exits, so I'm confident this will be somewhere between water resistant, and waterproof.
I was hoping to get it put back together today, but I'm having paint issues again. The Krylon and Rustoleum HATE each other, bigtime. I'll post some pics of that tomorrow.
Here's an idea of what we're working with.
I beefed up the steering, there's a little more to do on that. The desert is hot enough to make this plastic weak, so I'm trying to reinforce everything around attachment points.
I need to figure out how to attach the front wheels. They had clips on them that I had to destroy to remove. I don't really want to use them, but I don't want to drill a hole in the axle either.
I hope to take it for a test drive this weekend.
The original battery has been on a conditioning charge, and capacity cycle. It checks out, more than enough to run some tests. I've measured around 2.5 A @ 12 V for the rear motors, and 0.5 A for the steering actuator. The battery is rated 9.5 AH, so it should be good for a long drive.
I'll get a good idea of the turning radius and traction.
I removed all of the RC stuff for troubleshooting. Duane, have you used this with more than 2 channels?
I can now drive the rover with my RC controller.
Nice work!
Thanks. It will be a mix of all kinds of stuff from silt to rocks. You can usually see the bad spots. They look like a snow drift, except it's sand. We will most likely stay in a wash area, which is hard on the surface.
Although there won't be much sand where we're going today, I hope it will be a good test.
Here's the Rover RC Code, since the Rover won't be RC long, this is final. Also we'll be using Prop C anyway.
I blew 5 fuses last night, so I've replaced them with higher ratings, and auto-reset breakers. AutoZone has a lot of cool stuff. I had no idea that fuses have LEDs in them to show they're blown. Pretty neat.
That is cool. Sounds just like my old-school light-up doorbell pushbutton, which is obviously a momentary SPST switch in parallel with a small internal lamp (neon?). The lamp draws a miniscule amount of current, allowing that to flow though the AC(?) doorbell solenoid constantly (power vampire). Of course the lamp goes out when you press the doorbell, which is just like your fuse before it blows.
Kids, don't drive something 20 minutes away for a first test. I could have figured this out in my backyard lol... I didn't make the concrete ruins! I haven't been to this field in a couple years, a lot of trees fell. I must be used to flying copters and not dealing with ground clutter. It's a nice change from drones, and the first time I've drove anything like it FPV.
The steering fell apart making it difficult. The part I built, and the vehicle itself. Duct tape would have been awesome... Besides not being able to steer, the traction was bad, I got stuck a lot, and killed a lot of battery getting unstuck. 55 Ah AGM toasted in less than an hour. It was dropping down to 12 V at full speed.
I will beef up the steering until it's over-beefed. The drive motors are geared a little too high. Traction would help it move, but it will consume a lot more power, and I feel it will still get stuck. When it's in the desert I can stick to flat ground. We can set moving 10' /day as a realistic goal, it's not a race. If it gets stuck, plan on 1-2 days of charging to get unstuck.
Next, I'm going to fix the steering and take it to the beach.
Here's some video, enjoy!
What do you think about a motor swap, for something lower RPM?
When I look up the numbers (00968-9015) I found this and it says 12,610 RPM.
First Robotics made an awesome chart here. According to them my motors are 15,600 RPM.
Apparently these things are < $5 ea. If I could find a drop in replacement with half the RPM it would probably be a worthwhile thing.
Also could you just need a little more weight in the back?
BTW: you may have to look into four wheel drive if that sand is too loose.
All in all a very productive first test, you have found the weaknesses, and are formulating a plan to fix them. 100 percent successful IMHO.
I will add some dead weight in the back. I picked up some empty sandbags.
The loaner battery was 42 lbs, and only on one side. You can't put the battery in the middle, there's too much plastic there. It's the center console with cupholders, etc. The two batteries I have on order are half the weight each, and can go on either side to distribute the weight a little better. I will also gain 15 Ah.
Steering fix, setup of dual batteries, and add rubber to tires will happen this week. I'll test it on sand this weekend. If that goes well we should be mounting solar panels the week after, if that goes well it should be in the desert by the end of the month.
<<Insert any old "ex-wife/dead weight/old bag" joke here>>
Since you want to put solar cells on top, having the center of gravity as low as possible is a goal to go for.
Instead of putting rubber around the tires (or in addition) I would look for the spikes used in motocross-bikes. Cant be so expensive, they are using lots of them on a bike tire.
One side is a thorn the other one a screw. Just drill holes in your tire and screw them in.
Not nice to wood floors in the inside of a house, but in a desert spikes can not damage much, but provide excellent traction.
Enjoy!
Mike
I wanted to do spikes. I plan to stay away from rocks so they would be great. The tire is very thin plastic. It will be in really hot temps, on hot sand. I feel the spikes will work their way out. The other part is you can't get inside of the tire, it's sealed all around.
There's a place called Performance Cycle a couple miles from here. I can get anything out of their recycle bin for free. They said people ask all the time. It's not costing me anything so I'm going to test it.
The reality is, without any suspension we're going to have to stick to flat ground. I feel like the traction we have is enough. Everything revolves around not getting stuck.
Most glue would make it stiff. I have some flexible white glue, aka canopy glue, and 4 screws evenly distributed. Maybe some epoxy on the edges?
I hope that works. Batteries will be here Thursday. Things are looking good for this weekend's beach test.
Don't forget the other choices: contact cement, Liquid Nails, Gorilla Glue, silicone. The canopy cement sounds like a contact cement.
The two different materials may be difficult to join without some high tech adhesive. Plenty rivets?