Hello Beaglebone community:
I’ve been working with the Beaglebone for a while now, and though I have some ability and knowledge, I’m not a software guy - just a lowly aero engineer, and my skill is limited. I’ve got a small project I need to be accomplished, I’ve got limited time to commit to it, and I’m willing to offer financial compensation for a solution. This is what I need to do:
I need to have two Beaglebones communicate with each other wireless-ly. My plan was to use a green wireless beagle and another beagle with a wifi dongle, and connect the two via a node-red flow. It should come as no surprise that this hasn’t gone smoothly for me. I couldn’t get my green wifi beagle on-line to load the beagle gpio node-red flows. I imagine its possible to use existing (node-red) tcp/networking tools to eliminate the need for the gpio flows, but my networking skills are limited.
I’m not committed to a particular solution, other than I’d prefer to use beagles (vs. arduino, r pi, etc,) as I’m more familiar with this platform. I just need someone to develop a software pack that they can deploy to me. Alternatively, if it requires finicky loading of 3rd party software, I’m prepare to purchase the hardware from you as well. And then I’ll need a little explanation of how it’s put together so that I can properly manage the system.
So if there’s any talented individuals out there interested in this, please let me know. The first person who has sufficient skills that they can get the job done, and at a reasonable cost to me, gets the job.
Here is some additional info that was requested:
Message size is small (< 20 bits probably no more than 5 – just enough to turn stuff on and off), but with at least 5 updates per second. At this point, I’m only envisioning streaming data. Reliability is not critical (i,e., system can tolerate message loss), however system cannot tolerate inaccurate messages, as we don’t want to turn off/on something incorrectly, but if there is a short delay, that is acceptable. The solution has to be manageable by me which means that the software can’t be wrapped up in highly complex networking algorithms that would be inaccessible by an ‘engineer’. I need to at least manage changes in data (not necessarily data type, but at least what data is sent), and I need to be able to access the data in each beagle with either Python, C#, or some other simple language.
I’d like to point out, that if you want / need reliability. Wireless is probably not the vehicle to get you there.
If I could use a wired connection, I’d simply wire the GPIOs together, and then I’d be all set. But I need a wireless solution.
Without having tried anything in this direction:
Why not use two BBGW, set up one as access point using hostapd and use the other as normal wireless client that accesses this AP?
Why do you plan to use the BBGW? Isn’t this an overkill for just reading or writing some GPIO? You’ll have to deal will long boot time and all the LINUX overhead.
I mean, why don’t you plan to use an ESP 8266 module instead, ie. ESP12E. It’s cheap, comes with WiFi and can handle at least 12 GPIOs, booting fast and can get programmed in Python (but LUA has better support).
True, it is overkill, but the reduced performance is not a problem for me. And BBGs are getting pretty inexpensive. I’ve got a fair amount of experience with the BB and like that I can open up a shell and see what’s going on with it, which is better for my simple engineer’s mind. Wifi systems tend to require some tending to, so it’s best I understand the system as well as possible. And I would prefer not to have to learn about a different platform. I’m not proficient with I2C or even serial comm, whereas BB has a lot of off-the-shelf software that I can easily access. But even at that, I’m currently stuck in Node red trying to tcp from 1 board to the next, but I can’t get the connection made. I just bricked one of my BBs playing with the interfaces file and now I’ve got to reflash it. So… gotta go with what is easiest for me to understand.
Heinz, there are definitely methods that are sure to work. Your suggestion is probably one of them. But I’m not familiar with hostapd, and it doesn’t look like it’s as ‘canned’ a solution as i.e., node-red, which is how I’m trying to do it now. So this isn’t so much a ‘can it be done’ question as much as ‘Exactly how can it be done?’ Thanks for the suggestion.
That’s why I introduced the ESP solution.
It’s plug-and-play when you spend a few further bugs and buy a developers board like nodeMCU. You plug in the USB, start a terminal and you’ll also see what’s going on with it in the Lua interpreter.
For my engineers mind, this solution will provide faster results. You can focus on the necessary features and use a lot of-the-shelf features.
Anyway, it’s your decision. Good luck for your project.
FYI, I ended up implementing the solution exactly as I had hoped – One Beagle Green wireless as client, another Beagle hooked via ethernet to an AP as server, and using Nodered to TCP between the two. It’s working nearly exactly as I want except that I seem to be unable to establish a service on the BBG wireless (needed to execute a .py program to run an IMU. It’s giving me a
The unit files have no installation config (WantedBy, RequiredBy, Also, Alias…
error when I try to enable the service. Not sure why, as I was able to enable the Nodered service, using their code and installation guide. I’ve seen a number of recent similar errors that have been reported in bug reports, so I might be doing the installation correctly, but just can’t figure out what is different in the node-red service.
Anyway thanks for the inputs, offers, and suggestions.
If you’re trying to enable, thus “install” a service with systemctl You need a Wantedby target.
But just google: “how to systemd” + and you’ll probably be greated by way more hits than you’ll ever need.
Yup, been all over searches for systemd, and tried different options. Here is my current script /lib/systemd/system/imuout.service:
with the same error with various options above attempted and commented out
You need something like this:
All the rest of that “garbage” is exactly that - Garbage. Your script can deal with working directory, and not outputting to terminal if that’s what you wish. Then you simply . . .
systemctl enable --now
Making sure that service-name.service exists in /lib/systemd/system/
As far as what target you need, well that I don’t know. I have no clue what an IMU is in the context of Nodered, and no idea what you’re trying to do. However, if you need your service to run, and all it requires is a network to be established. The above should work.