
stakutis
USA
Asked
— Edited

I have yet to buy my first one and am curious about the programming model. I can't tell if you write programs that run on the device, or run on a host that talks to the device, or both.
And I'm not sure what the platform is. It looks like a lot more powerful than an Arduino (which is slow and low memory), but I saw some post that made me think otherwise.
I want to write my own code that runs on the device and that supports my own interface to my own host where I control many other types of devices. How possible is it? Or, to do the more complicated moves do I have to use the GUI tools?
The orientation of the switch is a big deal to me - thanks for the feedback
I'm at my cabin on holidays (yeah right) and we had all the neighbors out here on the beach playing with Six and JD this evening. They loved it! For a bunch of old dudes who have no idea how to use technology, they rocked the robots all evening!
@WBS00001 I have a few ezb4s... Some I have set static IP addresses for and some I have left random.... If I forget an IP for a particular ezb4 I just use the scan tool (you need to be in client mode to do this) until the ezb chimes then select that IP.... which btw automatically gets copied to the connection control....
@WBS00001,
Another way, if you are familiar with your router/Wireless access point is to look at the dhcp leases that have been handed out. I use a class C network structure at my house and assign my EZ-B's to their own range by doing static leases on their IP addresses. What does this mean?
10.0.0.X is my server and network device range 10.0.1.x is my pc/cell phone/whatever range 10.0.2.x is my guest wireless range 10.0.100.x is my EZ-B range.
My robot that has 5 EZ-B's on it uses 10.0.100.1 10.0.100.2 10.0.100.3 10.0.100.4 10.0.100.5
This allows the search through ARC to quickly find these devices if I have to scan for them, but because I use static leases, there isn't a chance that my router will do something silly and change the IP addresses on these devices by issuing a new lease to them.
I have also changed the names of these devices so that I know what they are. Head, right arm, left arm, body and base. This lets me know which one is which when I forget. It would be just as easy to make the JD, Six, Roli or whatever your robot name is.
I say all of this because you are a technical guy. You might already know how to do all of this on your router. If you do, it makes things a bit easier. If not, I wouldn't mess with it until you have an understanding of the workings of your network. Just wanted to throw it out there.
@d.cochran Thanks for the suggestion. Your post got me to thinking about my growing list of net devices,"My Cloud" drive, cell phone, tablet, Wink propane level monitor, TV, Blu ray player, alarm and home control/monitor system, and now JD. Up until now all I've done is some DHCP reservations and having a large number in the Client Lease time. It probably is time I look into static leases and sectioned ranges. Especially since, like you , I plan to have multiple EZ-Bs going simultaneously. Not to mention additional devices in adjunct to the EZ-Bs.
@WBS00001 If you are going to be running multiple EZ-B's, be aware of this bug: https://synthiam.com/Community/Questions/7229
It doesn't seem to impact everyone, so I think if your router is very fast at responding to DHCP requests you won't see it, but if it is a little slow, you will. If you get EZ-Bs powered up after the first one that seem to get different addresses than you have reserved for them, this is why. All the more reason though to give you EZ-Bs their own subnet.
Alan
Ok, I'm trying to use the (custom) http server to see how it talks to the robot over the wifi. I'm confused plus it seems like another layer i'd rather not introduce (although I think it was pointed to me because I could learn how it talks to the robot).
I see the html code has special "EZ" css and calls url's like "/forward.cmd". I suppose that is what I want to look at but I dont know where to find that http server code (i presume that forward.cmd is not a file but rather absorbed by the server).
I really just need a dirt-simple example of all the commands I can send and how to get responses. For motor control it looks pretty simple (send a byte, send another byte with a position). I dont know how to do I2C controls and camera and sound...
@Stakutis
The HTTP server still requires ARC to be running and handling the communication between the PC and the EZ-B. It just provides an easy way to develop a custom UI (among several other methods, .NET SDK, Universal SDK, Mono SDK, Open Bot (no longer supported by its developer, but open source and DJ has said to another Linux developer who needed a very small footprint that he would help to update it, also , since it is open source, you can view the source code and see what it is doing, just be aware it was written for a previous version of EZ-B so handles a few things slightly differently (less digital and I2C ports, no UART, Bluetooth instead of Wifi connectivity).
Since what you seem to want to do it bit bang directly to the EZ-B without using any of the SDKs, the best option is probably to run Wireshark on your computer, filtering on port 23 to capture and analyse the packets when you send a command from ARC to an EZ-B.
Why you want to big bang when there are so many simpler ways to communicate to it I don't really understand. If that is what you want to do, you are probably better off with an arduino or a Raspberry Pie with a GPIO breakout since by eliminating all the software that supports the EZ-B you are losing most of the power of the platform, but to each his own....
Alan
stakutis,
No matter what, you will have to run a machine. This machine will send the commands to the robot as has been stated many times. There is no code that you can write that can run directly on the controller. This is a good thing. Tethered robots are the only way to build advanced functions in a robot.
If you are going to use the ez-b, you have to have a computer running. If you have to have a computer running, why wouldn't you use the tools that are available, even running in the background? Your interface or Web page can be running and sending commands to ARC which can then control the robot. You can spend your time making the robot do amazing things instead of trying to figure out how to make a servo move?
I'm asking all of this seriously. What do you stand to gain from the path you are trying to take? What do you stand to gain from what I just described?