Hi,
I am new to the board, great that I found it.
I am planning to create some cool accessoires for th XDA2 but I neet your help.
Do you know how the O2-keyboard (foldable) works? I think it connects to the interface? Is it a "standard" keyboard with an adapter maybe PS2 -> Interface of the XDA2?
It is so expensive that I want to build a homemade one.
Next step would be to create a remote control for the MP3-Player. Pressing one button opens it, then one for play, stop etc. I think you can program the buttons like Winamp, pressing "X" is play and "C" is pause or something else. The buttons for accepting a call/ignore it may not be missed.
Third Idea is an external battery pack. The official backpack is hard to get and again really expensive! My Discman has something like that, put 2 AA-batteries into a box which can be connected to the power-supply-port. I think input is 5V, correct? Are the pins the same like the ones of the XDA1?
Thanks,
David
the problem is that unless you can get all the info here you kinda need to buy the org extre batt and keyboard to see how they work
you might also be prepared to write your own drivers for your own accessoires
making a good quality home made accessoi may end up being more expensive then buying what you can already get, same thing apply to every prototype of an accessoi
good luck though
this page is of cause a good place to start
http://xda-developers.com/connectors/
Maybe...
but I think making an adapter for PS2-Keyboards to the interface of the XDA cannot be such expensive.
We'll see...
David
Hi There
Does anyone know if there is such a thing as a mini-USB to Serial (or parallel) device on the market? Something that would provide PPCs like the K-JAM/WIZARD with a serial/parallel port.
I know they are available for desktop PCs, but what about hand-helds?
Ken
not without USB host. However you can use bluetooth to serial. I got ones of these:-
http://www.merlinbluetooth.co.uk/merlinbluetooth/promi-bluetooth-module-p-33.html
Bluetooth-serial
Thanks for that; it looks great, so I will (I imagine) need to get some software to read/write to that device.
At the device end I should be able to configure some Data Acquisition circuitry.
My problem is that I don't get access to the Vario/K-JAM until Christmas Day - it's a present from my wife - so I have no idea about writing stuff to access the bluetooth system Does it present itself as some sort of I/O?
I've just bought the NSBASIC/CE, so I was hoping to be able to write the necessary stuff with that.
The K-JAM looks a great bit of kit, but I'm never satisfied until I can get two-way interaction with the outside world in both Digital and analogue.
Thanks again,
Ken
It appears as a com port "COM5" on mine. You can open it just like normal using CreateFile / WriteFile etc
Find included a 2.6.27 kernel and corresponding wlan.ko with serial port enabled. This will work with JF, mikhael's build and so on that use the 2.6.27 kernel. Wifi works, bluetooth works, all that stuff works.
Serial port is /dev/ttyMSM2 with default at 9600 baud. I am turning my ADP into the brains of a UAV, so this should let me control servos with it.
Have fun! 2.6.29 (or whatever will be current) coming when I get off my lazy bum and move to it.
Installation is the usual "rename to update.zip, put in sdcard, start the phone in recovery mode" dealie.
BACK UP YOUR BOOT.IMG AND /SYSTEM/LIB/MODULES/WLAN.KO if you want to revert!
Here's a newer version with a terminal program (dterm, recompiled for g1/g2), or just the terminal by itself. If you flash the terminal ends up in /system/sbin and automatically goes to /dev/ttyMSM2 (see source), again it's just dterm with some cleanups.
By the way, does anyone care about this stuff at all?
I couldn't upload the kernel so here it is http://www.spirit-plumber.com/portfolio/robotics/kernel_serial_term.zip
It sounds very promising/interesting but I'm not exactly sure what it does. Does is it enable accessing the baseband via serial or something? This is something that was used on the original iPhone to try to unlock it.
I think if you explain more clearly what it does then more people will seem interested, & remember no contribution here is a bad one, someone will have a use for it.
It gives you a serial port that can be used as a device rather than just for debugging, as shown here
http://www.instructables.com/id/Android_G1_Serial_Cable/ (not by me btw) This software stuff makes it usable for general purpose IO. That allows a G1 and an inexpensive microcontroller, arduino/picaxe/etc to control servos, talk to a second GPS, and so on.
I develop autopilots for RC planes and the G1 would be a great platform for that since it has a gps, compass, accelerometer and camera already integrated in a relatively small/light package.
Also, ROBOTS! http://hackaday.com/2009/01/25/forknife-android-g1-controlled-robot/ This was done using the audio port, but having a serial port on board bypasses all the DTMF stuff and allows for a lot more bandwidth. (Also not by me, if you do want to see stuff by me, search spiritplumber on youtube!)
I'm also very interested in such a kernel as a friend and I are interested in interfacing a phone to a serial robot controller.
However, I am currently running Cyanogen 4.0.4 on a MyTouch and loading this kernel effectively breaks the phone. No radio, GPS, etc. and many apps are missing/broken. The serial port does work and we got it talking with our robot but otherwise it's not much use to me.
So atm it's either a phone or an overly expensive microcontroller but not both.
You could submit the patches to cyanogen to see if he'd be willing to incorporate it in his build.
this is kernel version 2.6.27 and i think the build you use has kernel 2.6.29 which is why everything'd break. i will build 2.6.29 at some point, for now use a build that still use .27? i useJF151 with good results.
Hi, I'm interested in this stuff, I just wonder how can I use this to interface G1 to Arduino? any idea/tips will be helpful. TIA.
You end up with a new device, /dev/ttyMSM2 which is a standard issue serial port that can be used to talk to microcontrollers. The voltage is 2.8V which means it will work with a 5V micro in the phone-->micro direction, but if you want to go the other way you'll need a divider.
(see the other thread i posted in for a schematic)
I should probably get cracking on a donut version
Wow
Interesting stuff. I just wish I had the ability to take advantage of this. I think this would bring it one step closer to being able to use the G1 as an OBD-II car scanner. But I'm afraid that will take way more technical ability than I have.
Not really...
http://www.suntekstore.com/OBD2-16Pin-to-DB9-Serial-Port-Adapter-Cable-.html
http://www.instructables.com/id/Android_G1_Serial_Cable/
+ my kernel
Nice work
spiritplumber said:
...
I develop autopilots for RC planes and the G1 would be a great platform for that since it has a gps, compass, accelerometer and camera already integrated in a relatively small/light package.
Click to expand...
Click to collapse
Genius! Well done for bringing this all together!!!!
I found your thread while trying to investigate the same project you've done already - making an autonomous drone using the G1 !!!
- I'd be very interested to see videos/info/photos of your drone.
I've seen all the bespoke UAV controllers on DIYdrone.com, but was more interested in the challenge of making my G1 with all it's sensors directly control a servo controller board via serial.
I'm a bit worried that the screen must stay on, which will burn through the G1's battery in no time! - is this still necessary?
I'm really impressed and thankful for what you have done, and making it public!!!
I'm currently on Cyanogen 4.0.4. so I guess the first step is to back track to an earlier Kernel version...
Unless you're close to rebuilding 2.6.29 ???
Thanks for the 'instructables' for the cable too, I've ordered the bits and hope to test in the next few days - ironically I found that before this thread!
Hmmm...
I've just studied your cable making instructions and have some questions!
The USB-Serial converter board... is that any use at all other than a PC interface?
I shouldnt actually need this to talk directly to another serial device from my G1?
- I got the impression the USB/Serial board was to convert the G1's USB to Serial...
Could I send a serial TX messages directly from the break-out board to a serial RX pin... (Servo controller) does that sounds correct?
Sorry for the torrent of questions...
If you want to talk to a different device you just need to flip pins 2 and 3 on the serial port and use a male rather than female connector so yes you can definitely do that!
In fact you can do two at the same time: Here's me using the G1 to relay data from a GPS to a servo controller. If you'd like the schematics for that let me know. If you have any sort of work related to this DEFINITELY let me know.
By the way, I'm using a 74HTC14 for doing the level shifting and inverting: it's a very cheap part and also has the advantage of cleaning up the waveform nicely. Or you can use some transistors.
EDIT: Attachment is being stupid so go here for photos: http://spirit-plumber.com/robotseverywhere/gallery/images/other/gphone/
spiritplumber said:
If you want to talk to a different device you just need to flip pins 2 and 3 on the serial port and use a male rather than female connector so yes you can definitely do that!
In fact you can do two at the same time: Here's me using the G1 to relay data from a GPS to a servo controller. If you'd like the schematics for that let me know. If you have any sort of work related to this DEFINITELY let me know.
By the way, I'm using a 74HTC14 for doing the level shifting and inverting: it's a very cheap part and also has the advantage of cleaning up the waveform nicely. Or you can use some transistors.
EDIT: Attachment is being stupid so go here for photos: http://spirit-plumber.com/robotseverywhere/gallery/images/other/gphone/
Click to expand...
Click to collapse
Hi Spiritp,
Thanks for your comments, I'll give that a whirl then!
I'll definitely keep you posted!
My basic plan is:
Use accelerometer for auto-leveling control, use pre-defined GPS routes so I know the take-off / landing site altitude above sea level, and eventually get the G1 to take photo's at GPS waypoints.
Probably ambitious considering my electronics knowledge, but I'll keep you posted with progress.
If you have any pointers of how to send Serial commands from within the Android App layer, I'd really appreciate it.
With so many 'rooted' applications doing kernel based tasks I'm pretty sure it'll be possible... but I'm also fairly green on linux & java, so this will be a challenge for sure. (Time to hack my way through other people's work and understand what's going on!!!)
Thanks for your response,
Andy
spiritplumber said:
By the way, I'm using a 74HTC14 for doing the level shifting and inverting: it's a very cheap part and also has the advantage of cleaning up the waveform nicely. Or you can use some transistors.
Click to expand...
Click to collapse
Question 1:
When you say 'level shifting' is this to bring the TX/RX voltage to the same level? (i.e. 5v --> 5v, rather than 2.8v --> 5v)
Question 2:
If I plugged a 5v serial device into the G1's RX connector, would this damage the G1?
Question 3:
Please help explain how non-printing byte-level data (Servo commands) can be sent from DTerm... I've had a poke around on the internet but with no success...
Question 4:
I have installed your Kernel/DTerm... which runs DTerm ok, but the commands 'ls' return the error 'not found'.
- which worked before adopting your kernel..
Is this normal? How can I fix this?
EDIT:
Ok, I think I'm half way there... I've now bought one of these:
http://www.coolcomponents.co.uk/catalog/product_info.php?products_id=194
//
spiritplumber said:
If you want to talk to a different device you just need to flip pins 2 and 3 on the serial port and use a male rather than female connector so yes you can definitely do that!
Click to expand...
Click to collapse
Reminds me of the HP48 token ring networks. http://www.hpcalc.org/details.php?id=3603 In essence, device 1 would transmit data to device 2. Device 2 would see that the packet was meant for a different device and retransmit the packet to device 3, the intended recipient. If device 2 had been transmitting a packet to device 1, it would have passed through 3 on the way back around. Adding another device to the network was as simple as breaking the chain and adding a new one. Building the cables to do that wouldn't be too difficult.
Level shifting:
Internally the G1 uses 2.8 volts. This is nice if you've a 5V interface because:
On going G1--->other part, 2.8 is high enough to register as "high", you may need a pullup resistor (try 10k).
On going other part--->G1 you just need a voltage divider! That's two resistors of equal value, this makes the other part effectively output at 2.5v which the G1 will happily accept! (If this confuses you, see "voltage divider" on wikipedia..... it's literally just 2 parts). Here's a picture on page 5: http://forum.xda-developers.com/showthread.php?t=496976&page=2
If you need to do stuff in that sense I recommend just having the servo controller take in ascii stuff. Or you can modify dterm. Or I can give you a modified copy of dterm that has that functionality let me know!
If you use a 3.3V microcontroller such as the Parallax Propeller, just slap two 1KOhm resistors on the rx and tx lines and go do stuff: it works.
Controlling servos via G1 is very painless and easy, I already do that, let me know if you want tips.T
spiritplumber said:
Level shifting:
Internally the G1 uses 2.8 volts. This is nice if you've a 5V interface because:
On going G1--->other part, 2.8 is high enough to register as "high", you may need a pullup resistor (try 10k).
On going other part--->G1 you just need a voltage divider! That's two resistors of equal value, this makes the other part effectively output at 2.5v which the G1 will happily accept! (If this confuses you, see "voltage divider" on wikipedia..... it's literally just 2 parts). Here's a picture on page 5: http://forum.xda-developers.com/showthread.php?t=496976&page=2
Click to expand...
Click to collapse
That's excellent, I think I have a solution for the voltage, but thanks a lot for your electronics expertise!!!!!!!
spiritplumber said:
If you need to do stuff in that sense I recommend just having the servo controller take in ascii stuff. Or you can modify dterm. Or I can give you a modified copy of dterm that has that functionality let me know!
Click to expand...
Click to collapse
I'm actually using a Pololu micro serial servo controller (SSC) - I'm fairly sure it doesnt support ASCII characters, the manual only explains how to compile a '3 byte sequence' :
To set the servo position, send a sequence of three bytes. The first byte is a syncronization value that must always be 255. Byte 2 is the servo number, and it can be 0-254. Byte 3 is the position to which you want the servo to move, also 0-254. (sync= 0xFF,servo= 0x00-0xFE,position= 0x00-0xFE)
If you can help / let me know how to modify dterm I would really appreciate it!!
Although I'm still not sure how I'm going to access this from the Android Application layer - making calculations from accelerometer & GPS, then sending the calculated servo movement down to a kernel app?
Any help in this area would be greatly appreciated!
spiritplumber said:
Controlling servos via G1 is very painless and easy, I already do that, let me know if you want tips.T
Click to expand...
Click to collapse
I would find any tips interesting !!!
Thanks again for your comments & help, you're making this project far easier than I could have hoped!!!!! hopefully I will be able offer you help in my areas of expertise some day!
- I'm an application developer by day, using VB.net/Sybase Powerbuilder/Pocketbuilder/SQL/Microsoft-based network admin.
Just a quick final question (for today!!) - my Wlan seems to have been knocked out by your kernel image... the android manager can see AP's but always reports that it was unsuccessful when trying to connect.. and ideas?
- I'm on JF1.51 ADP1, no other mods or changes.
Andy
Hi everyone,
Okay, here is the idea. I have a HTC Touch Diamond 2 and I was thinking that it could be interesting to try to use it as a remote control to pilot a small car or plane (using the Bluetooth frequency).
I found several receivers in the 2.4 GHz frequency band, but I'm not sure whether it could work or not. Here are a few: link 1, link 2, link 3.
So the main questions are:
- Is it possible to program my HTC so that it sends information the receiver will 'understand'?
- Is there by any chance already an app that allows me to do just that (or something close to it that would need minor modifications)?
On top of this, I was also thinking of adding a camera on the car that would send back to my phone what it records. But this more than optional since it probably will make things much more complex... (I found transceivers such as this one and this one, but it looks like a lot of work to install and configure them).
Thank you for your answers and your help in advance!
Anyone to help me?
It won't work, sorry. Not with any store bought RC car. Your only chance is if you engineer the receiver yourself, including the circuitry that translates the radio signals into motor signals.
Thank you for your reply!
Ah, that's quite disappointing
But just to make sure, can you tell me exactly where the problem is? I mean is it a true hardware problem, in relation with the kind of signal that I can transmit with my phone (like a frequency incompatibility or something else)?
I was hoping it was possible to program my HTC to send the appropriate signal corresponding to what the receiver is expecting to get. Why couldn't it work?
Am I at least asking my question on the appropriate section of the forum, or is there another one that I should use rather than this one? Thx again.
Title says it all. I want to build an app that can read and write the pins that the MCU has access to, for example steering wheel, antenna power, etc.
Anyone know how the stock apks do that?
Is the unit an FYT, post Android system information including MCU version
cryptyk said:
Title says it all. I want to build an app that can read and write the pins that the MCU has access to, for example steering wheel, antenna power, etc.
Anyone know how the stock apks do that?
Click to expand...
Click to collapse
@marchnz is completely right: What type of unit are we talking about?
Your request is like: "I have a car. Which wires do I have to connect to a radio I bought".
If it is a FYT unit, you need to decompile the 190000000_com.syu.canbus.apk. That one contains per CANbus decoder the necessary commands.
This is a teyes cc3.
I was expecting that ST (the SOC manufacturer) or FYT used the standard Android library for connecting to the GPIO pins, or provided a library of their own. I didn't suspect that each brand would create their own unique hardware library for something as fundamental as GPIO access.
I tried the standard Android libraries and GetGpioList() doesn't return the pins.
Was hoping someone else had already gone through the effort to decompile this part and see how it works. All good if not; I can definitely do it.
@surfer63 thanks for the lead, but the canbus implementation is done with 3 dedicated bxCAN networks on the SOC which are separate from the GPIO controller.
Thanks for the notes all. I'll just start digging in and let y'all know what I find.
cryptyk said:
This is a teyes cc3.
I was expecting that ST (the SOC manufacturer) or FYT used the standard Android library for connecting to the GPIO pins, or provided a library of their own. I didn't suspect that each brand would create their own unique hardware library for something as fundamental as GPIO access.
I tried the standard Android libraries and GetGpioList() doesn't return the pins.
Was hoping someone else had already gone through the effort to decompile this part and see how it works. All good if not; I can definitely do it.
@surfer63 thanks for the lead, but the canbus implementation is done with 3 dedicated bxCAN networks on the SOC which are separate from the GPIO controller.
Thanks for the notes all. I'll just start digging in and let y'all know what I find.
Click to expand...
Click to collapse
Try this repo: https://github.com/lbdroid/MCUd/
By now very old but it might still contain some useful info.
surfer63 said:
Try this repo: https://github.com/lbdroid/MCUd/
By now very old but it might still contain some useful info.
Click to expand...
Click to collapse
Very very nice! This is a huge headstart. Thank you!