I run a chain Self-Serve Audio Recording studios and I've had an issue for years that a friend just told me an Arduino might help with.
I'm completely new to Arduino's and I'm looking for guidance/thoughts on the feasibility of solving this issue with an Arduino. (Honestly, if it's appropriate to offer here, I would be willing to hire someone from the forums to walk me through implementing the right solution proposed here - I'm technically savvy but don't have any experience with Arduino's or hardware beyond building PCs).
Background
Today, AudioHouse users are able to use either their laptop OR our desktop when recording at an AudioHouse studio. This is a key feature to AudioHouse's ability to service both the entry-level amateur market, and the more experienced market of creators. Currently, this feature is implemented by users physically unplugging a USB hub from our Desktop and then plugging it into their laptop. There is a small sign on the desk that points to the USB hub that informs users that they can do this.
Problems
The current implementation causes these problems…
Laptop users frequently do not plug the USB hub back into the desktop. When entry-level amateurs - our most important market - come in to use the studio, this is often something they overlook and it causes significant wasted time and frustration as they try to figure out why the equipment is not working. Even for users who have ran into this issue several times. It appears to be an issue where education, signage, and in-app warnings have low effectiveness.
Having an exposed USB hub creates risk of users unplugging auxiliary devices, adding to the frustrations mentioned above.
The manual effort adds to the education and burden of new users. This adds unnecessary friction, worry, and confusion to the process which decreased customer satisfaction and reduces the likelihood of customer retention.
Summary
As an AudioHouse customer
I want the studio to be preconfigured to my device preference
So that I can start recording from my preferred device without any intervention, education, or manual effort.
Available Resources
Here are some potentially relevant resources to help resolve this issue…
AudioHouse has a web and mobile app and the resources available to alter those apps however necessary to…
Capture the user’s preferred device for each session
Send and receive API calls
Studios are equipped with WiFi (generally through Starlink or cellular networks like T-Mobile), and a locally created LAN.
Budget of $100 per potential solution for equipment costs to resolve this issue.
Requirements
Final solution must be easy to replicate and scalable across multiple studio locations, nationwide.
Final solution must work with at least 90% reliability.
Final solution must be physically inaccessible to users in the studio (able to be hidden in a cabinet)
Possible Solutions…
Don't feel restricted by this. This is just what I've thought of as I've googled around.
Use a USB switcher that's controlled by a IR remote and solder an Arduino to that remote that's completely hidden to users, and is controlled by API.
Low equipment cost
Medium modifications to app
No manual intervention
Reliability: medium?
Resolves core problem: high - if reliable
Program an Arduino to do all the switching for me directly.
Get a USB switch with IR or RF remote functionality, and program the Arduino to "copy" the signal of the remote and use the Arduino as the remote.
I need to provide customers the ability to use either their personal laptop to record in my recording studios, or a PC that I provide. But not both at the same time.
However, this functionality needs to be possible without any manual intervention from the user.
My ideal situation would be to have users select in our mobile app whether they are using their personal laptop or our provided pc. Then make an API call to a USB switch that would switch to either our PC or to a cable that they can plug their laptop into.
My friend told me an Arduino may be able to receive the API call and facilitate the USB switching.
I've tried every search term I could to find an out of the box solution.
When I search for IP controlled USB switches, I find KVM server remote access switches that kind of do the opposite of what I'm hoping for.
I am 100% open to any out of the box product I find. I just haven't been able to find one that will allow me to make an API call to switch between two computers.
I'm fairly sure a system I was connected to in the previous year used something like that. I'll see if I can at least find the software that was installed to control it.
It's certainly possible to do this with an arduino/ESP32 and a remote control hub (or rewire a manual hub to do it), but it's not going to be trivial.
The product I remembered was simpler than what you need, so it won't work in this application. It switches the downstream ports but you need to switch the upstream ones.
That's great insight. I was hoping it would be simple, but it seems that may not be the case. It's a big enough problem for me that I'll keep digging into it. For the sake of contributing to the community, I'll also post updates.
Here's what I've learned so far...
There are USB switches in the $100 range that can switch the upstream ports programmatically with RS485 commands.
The Arduino can send RS485 commands with the right modules. (Still trying to uncover how this works exactly)
The Arduino can definitely be setup to receive Web API calls. I've seen some people display doing this in a basic Make (Integromat) integration, which means it should be possible for me to integrate with the Arduino directly with my API endpoints, or use Integromat as a middle-service if I have to. I do this with smart devices that don't have public API documentation but have built integrations with Integromat...
Actually setting up the Arduino to receive these calls is still a complete mystery to me though. I've seen lots of people show that they've done it, but can't find a guide that makes any sense to me on how to do so.
Sending a message over RS485 only requires an RS485 breakout board. Some of the industrial arduinos/clones, e.g., M5Stack Tough or Industruino come with RS4855 built in but they are overkill for this.
When you say web API, are you talking about exposing the arduino to the Internet or only on your internal network? Either way, using an ESP32 or ESP8266 is probably easier than a "regular" Uno with an Ethernet shield or the like.
TBH, if I was in a situation where there was already a PC available and I needed a web interface, I'd do it on the PC and have that control the USB switch directly, rendering the arduino irrelevant. It would also probably be much easier. Be careful of holding a hammer and seeing nails everywhere!
I'm talking about exposing it to the Internet. These calls would be initiated from an Apple/Android app, not within the LAN.
I'm thankful you bring up using a PC. Yes, there will always be a consistent PC that I can use in these situations. Maybe that will be the best way to go.
My friend had suggested an Arduino, and that's the only reason I turned here in the first place.
No problem.
I was contacted by someone on this forum a couple years ago to build out a very complex User Interface for a control system using Arduino. After we had a few hours of discussion we both realized that a PC was a much better choice since it could have a monitor as large as necessary (his machine was physically very big anyway), and there was nothing that inherently required the arduino: it just seemed like a good fit at first.
Since then, I've always been cautious of falling into the "just use an arduino" trap.