UltrasonicSensor - quicky

Quick peek at some of the new UltrasonicSensor Service stuff ..
Use 1.0.31+
MRLComm.ino version is 15 (I think) - so you'll probably have to reload it.

THIS HAS NON BLOCKING RANGING WHICH DOESNT INTERFERE WITH SERVOS (YAY TO THAT!)

This is copied from Java code .. so I might not have Python-ized it correctly
 
 
sr04 = Runtime.start("sr04", "UltrasonicSensor")
sr04.attach("COM15", 7, 8) # I quick attach - will create an arduino if necessary
 
def publishRange(myRange):
  print myRange # call back - we will now setup the listener
 
# sr04.arduino.setLoadTimingEnabled(true); # < you can look at the load timings of the duino with this
# sr04.arduino.setLoadTimingEnabled(false);
 
sr04.addPublishRangeListener(python);
#  IMPORTANT - I've added my python service as a listener
# SO I BETTER HAVE a def publishRange(data) somewhere
 
sr04.startRanging() # start raging for 10 seconds
sleep(10)
sr04.stopRanging();
 
# blocking range
myRange = sr04.range()
print myRange
 

 


Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
bhouston's picture

Can the Ultrasonic sensor be



Can the Ultrasonic sensor be used in place of the PIR sensor? Wondering if it can be configured to power up the robot when something comes within a set range. Also, can it be used as an override to prevent the robot from hitting something?    

 
GroG's picture

It "could" be .. here are

It "could" be .. here are some differences..

The Ultrasonic Senor has a more narrow field of view.. PIRs are usually designed to have wide field. 
PIR can not do range.. Ultrasonic can
Ultrasonic is effected by sound absorbing materials - e.g. pillows, soft things..  PIR is sensitive to fluctuations in heat..

Yes, obstacle avoidance is a common application

bhouston's picture

Are there any instructions

Are there any instructions somewhere to install one on InMoov? I guess a "pin" would have to be available to connect it to.

GroG's picture

No instructions as of

No instructions as of yet.

Depending on what kind of Ultrasonic sensor you have it might require 2 pins.

1 Trigger pin & 1 Echo pin - this is how the most common SR04 is configured.

kmcgerald's picture

Worky!

I got mine working even though there was no 4.000 MHz crystal soldered on the board.  

 

sr04 = Runtime.start("sr04", "UltrasonicSensor")
sr04.attach("/dev/tty.usbmodem1411", 7, 8) # I quick attach - will create an arduino if necessary (comm dev, trigger pin, echo pin)
 
def publishRange(myRange):
  print myRange # call back - we will now setup the listener
 
# sr04.arduino.setLoadTimingEnabled(true); # < you can look at the load timings of the duino with this
# sr04.arduino.setLoadTimingEnabled(false);
 
sr04.addPublishRangeListener(python);
#  IMPORTANT - I've added my python service as a listener
# SO I BETTER HAVE a def publishRange(data) somewhere
 
sr04.startRanging() # start raging for 10 seconds
sleep(10)
sr04.stopRanging();
 
# blocking range
myRange = sr04.range()
print myRange
I updated the comment for the attach to call out what the args were.  The first was obvious but which pin was which took a leap of faith since I was too lazy to look it up. Well it was a Jedi mind trick leap of faith based on Grog saying "1 Trigger pin & 1 Echo pin - this is how the most common SR04 is configured." I took them to be respective of that order and swapped my jumper wires before firing it up.
 
GroG's picture

Wow .. It's really nice to

Wow ..

It's really nice to hear something is Worky for a change :) 

Thanks KMC .. I appreciate it