CC2541 (HM10) HID and programming - bluetooth

AIM: use the processor and bluetooth purely on the cc2541 to read from the free pins on the board but outputting in HID format so it could be used as a keyboard.
I understand that there are a few offical TI hardware components that usually are used to program it (I cannot afford the development kit). Would someone please help me either using arduino and a FTDI board program the cc2541 to do this?

While I have no idea how to use the CC2541, if you're limited by a budget you could get a HC-05 for 4 dollars-ish, and if you so happen to have a (old) PC with a parallel port you can reflash it using RN-42 firmware (need to solder 6 wires and plug em into that port with some resistors), which will allow it do become HID devices like joysticks,keyboards and mice.

Just in case someone stumble on this post later on, the following could help a lot I guess ;)
flashing an HC-05 with another firmware using an FTDI adapter
Enjoy ;)
+

Related

need to send ASCII codes over Bluetooth

Just looking for a "pre-made" device that could get ASCII codes (at the same time power up the device where the codes come from) and send the ASCII string over Bluetooth,
Technically, I want a device where I can connect standard Keyboard with a USB plug, and send the the keystrokes via bluetooth,
Just wondering if there is a device already setup to do this, no time to develop,
thanks
Assuming you want to convert a USB keyboard to Bluetooth, there's a handful of options out there, like the BT-500 from handheldci.com: http://handheldsci.com/kb/
And some similar FOSS arduino version: https://github.com/juancgarcia/HID-Relay
If this is not what you're trying to do, you'll need to specify it a bit better. "send characters over bluetooth" is sadly not that simple, the bluetooth device has to identify as some type of device. That could be a keyboard (HID), however it could also be something like a serial port over bluetooth which something like a HM-05 implements.

How to Disable Hardware SPI Chip Enable/Chip Select on Raspberry Pi?

I'm setting up a Raspberry Pi 4b with a number of Adafruit chips, and thus have used their CircuitPython library to control SPI communication. They've conveniently set up a way to use any GPIO pins as chip selects, but as a result I had no idea that there are two hardware chip selects on the Raspi (CE0 and CE1 on GPIO8 and GPIO7 respectively). I have already wired these pins (GPIO7&8) with the intention of using them as GPIO outputs, but I've noticed I GPIO8/CE0 is connected to the SPI clock.
Adafruit actually mentions that the NO_CS flag doesn't work in their documentation, and I can't seem to find anything useful online.
How can I disable the hardware CS pins? I know the SPI_NO_CS flag in SPI_MODE is already a bug in the spi-bcm library, and I found this patch, but I'm not sure if it would work (I think CircuitPython utilizes a hardware CS?), let alone how to apply it.

Banana Pi not booting (red LED on)

I got some brand new banana Pi's,
these are the "Banana Pi-M2" and the "Banana Pi-M3"
I was trying to install Debian on both of them, but I couldn't get it to work.
I was exactly following this tutorial here (Windows):
http://wiki.lemaker.org/BananaPro/Pi:SD_card_installation
to save Debian on the SD Card.
The Problem is always the same. When pressing the power Button on the "M3", or plugging in the "M2", only the red LED goes on and nothing happens.
The LED for the LAN port stays off, so it comes close that the Pi is not booting up.
The power supply I am using produces 5V and 2100mA which should fit the conditions for the Banana Pi.
The distros I then tried to install were for example Bananian which I got from here:
https://www.bananian.org/download
And several distros like Debian from here:
http://www.banana-pi.org/m3-download.html
http://www.banana-pi.org/m2-download.html
I tested it using 2 different SD Cards, and also only using a USB Stick.
everything was producing the same error.
Is there something I missed?
Thanks in advance.
It sounds like an underpowering situation.
If you have a barrel jack instead of micro usb use the barrel jack.
The pre-production samples of this board had the usual 4.0/1.7mm barrel jack for DC-IN BPi M2/M2+ also use. This has been replaced by a Micro USB jack on the first production batch in Dec 2015 leading to the usual sorts of problems banana-pi.org forums are full of (see also next paragraph for some reasons). Starting in May 2016 Micro USB has been replaced by the 4.0/1.7mm barrel jack again so powering is possible more reliable now. The Micro USB receptacle on the longer board side is USB OTG, also connected to the board's PMIC and while looking like an alternative way to power the board that's not recommended unless you love underpowering situations, reboot loops and the like.
I had the same problems at one point, like #Hagen said, it could be under powered, make sure you have a 5V, 2A rated power supply. The other cause of the red led and no boot is the lack of a micro SD card. Try pushing it in a bit further though not with much force and hit reboot. if you get 3 leds, it works!
This Banana PI M3 device starts up and works normally when power supply connector (4mm/1,7mm) and a micro USB connect put to device of Banana same time from same 5V power supply. I think in the device may have something grounding problems.

PCM voice data on serial port to sound device conversion in linux

I have a telephony modem which gives voice to my interfaced application via a serial USB ttyUSB0 in 16bit PCM 8000hz. I am able to capture this data and play with audacity. I want this port to be detected as a sound device in linux (I am on ubuntu). Is it possible? Are there any other options?
I'm guessing you are using a huawei 3G modem or something similar which gives ttyUSB1 for audio. Make sure you have the serial driver binded to it. Then simply pass the port itself as a "file" for input for any program of your choice.You need root access for that.You figured out the audio settings so it must be enough.I have voice calling working in UBUNTU 11.10 with Huawei. So let me know if i can help any further.
Ok, I see it's very old question but answers helped me to get a right direction so I decided to help others.
The one way to achieve (in addition to below) what are you are
looking for is to write dynamic kernel module.
Have it register as a sound device, and check that it has a GSM
module present (which module is it exactly can be recognized in
dmesg, lsmod, or output).
Then establish communication between user space representation as a
sound card and serial usb module.
The other way is to get module that you recognized by dmesg, lsmod and extend its functionality as a sound card.
All are tricky tasks because:
in the first case you have to resolve intermodule communication at the kernel level...... which is, lets say, a little hard even if programmer has a right background in subject.
the second case is hard in that you have to deal with:
USB stack (which is little unpleasant for human beings) and
sound subsystem (which is a little burdensome because of historical issues).
Without being an experienced kernel programmer there are small chances to succeed.

How would I control the output of the power in USB ports in Linux?

I built a robot from a thin client pc (can run Windows CE or Linux) and two servo motors. I put USB ends on the servo motors, so when they are plugged in to the thin client they continuously run. In Linux, how could I set the amount of current or voltage going from the USB ports to the servo motors? Would I be able to run a shell script to set the power of a certain USB port to slow down a motor or stop one? If this cannot be done through software, what is the easiest way to do this through hardware without having to buy too much?
The USB voltage is fixed at a nominal 5 volts and cannot be controlled.
The behavior of USB devices regarding their current draw is well defined in the USB specifications. USB devices are supposed to draw up to 1 unit load (100mA) unless they have negotiated a higher load from the USB host. It's quite likely that the servo motors that you have are going to need to draw higher currents than that, and wouldn't be able to request it without being a USB device and negotiating with the host.
It's also likely, depending on the servo motor that you are trying to control, that you'll need to either provide a PWM signal or an analogue voltage to control motor position. USB hosts are not intended to provide either of these.
Your best options to drive your motor from your PC are:
Get a dedicated USB controller for your servo motor (if one exists)
Make your own, based on a small microprocessor (eg. using an arduino)
Choose a different port on the PC. If available, PC parallel ports can be controlled to provide control for motor drivers.
The answers here seem to say it is a hardware issue, but I think this is a software issue. ASUS has Ai Charge which more then doubles the volts to charging Apple products from a standard 2.0 usb port.
USB 1.0, 2.0 and 3.0 Specs (All at 5 volts) 4 Wires (2 Data and 2
dedicated power)
Voltage Breakdown: USB 1.0 and USB 2.0 = 0.5A or 500 mA = 2.5 watt
USB 3.0 = 0.9A or 900mA = 4.5 watt Wall wart = 1.5A or 1500 mA = 7.5
watt Ai Charge = 1.2A or 1200mA = 6 watt
Ai Charge works on ASUS and non-ASUS motherboards and is a program you can install in Windows.
Personally I HATE Apple so I want to figure out a way to do this 1.2A usb 2.0 output trick for my netbook while running Linux.
I don't believe it is possible to directly manipulate the USB voltages. They are designed to provide a +5V output at all times unless power is diminised with other hubs.
You might be better served posting this question on http://electronics.stackexchange.com
you need to use PWM to control motors speed, to do that you need a micro controller, PIC18F series supports USB communication, there are plenty of code samples available internet how to use USB in PIC18F series, also you need a transistor array or H-Bridge to control mortors from PIC.
The simplest way to communicate is, program a USB serial in PIC18F micro controller, and when you plug that 18F to your computer, it will detect USB serial port, so you can send the commands to serial port to control speeds.
I dont think its possible, and even if it was, consider this: The USB port is not suposed to power motors because you can burn the USB port. USB is limited to 500mA (or there abouts) and any power device like a motor can potentially require more than that.
Another thing is that servos should be driven with constant voltage, and the speed is controlled by timing impulses on the control wire.
http://en.wikipedia.org/wiki/Pulse-width_modulation
You should use a driver (hardware) to power the motor with an external power source.
This is transistor's purpose, or try with a potentiometer

Resources