-
HI @AdamSmith, any further updates on this project ?
I was thinking about doing something similar a while back but like most of my ideas they never make it into the psychical world.
-
https://devzone.nordicsemi.com/question/63576/how-to-launch-siri-from-nrf51/ any help ?
Also https://learn.adafruit.com/ios-switch-control-using-ble/configuring-ios-switch-control .... a different way of getting the functionality you need ? possibly.
-
-
-
-
-
A very small javascript BLE board with only the basics is exactly what I've been looking for.
I'd agree self soldering something that small would be a put off for some, including me. I've already tried with a RN4020 had 75% success rate.
Surprised a third party couldn't create these at a competitive price, have you tried http://ragworm.eu/ ? Not used them myself, but seem to be all about open hardware and in the same country.
-
@Gordon just watched your new silk screen video (https://www.youtube.com/watch?v=OWuIbHIiJ6k
), was that a sneak preview of you next hardware release ? tiny board + nRF52832 + espruino ? -
-
-
-
-
All you need should be in this thread http://forum.espruino.com/conversations/297514/#comment13462264
-
-
-
X post from Projects http://forum.espruino.com/conversations/299586/
-
Thought I'd share my progress on my latest project the PuckPad. Currently a breadboard project which I'll hopefully move onto a custom PCB once I've ironed out all the issues ( and found another adafruit joypad pcb available in the UK ).
The puck will read the relevant pins every 750ms ( will be 200ms outside of testing ) and update the custom BLE characteristic.
// Author : Adam // Project: PuckPad // Firmware: 0.10 // BLE Services : Battery, Device and Custom controller // // Battery: 0x180F -> 0x2A19 // Device: 0x180A - > 0x2A29 (Manufactor Name) // - > 0x2A26 (Firmware Version) // Custom: 0x9AD0 -> 0x9AD1 ( Int8 * 4 ) left xy right xy // -> 0x9AD2 ( 0 or 1 ); extra BTN // // // Puckpad has two analog joysticks and two buttons. // The pad will simply send each joysticks XY vlaues to a proxy IOS application to fly a parrot drone. // // GND -> GND // 3V -> 3V // D2 -> X left joypad // D31 -> Y left joypad // D30 -> X right joypad // D29 -> Y right joypad // D28 -> BTN pinMode( D30, "input_pulldown" ); //currently not in use pinMode( D29, "input_pulldown" ); // currnetly not in use var fwVersion = "0.9"; var flashy = [150,200,150,200,150]; var vflashy = [50,50,50]; var connected = false; var refreshRate = 750; var isReading = false; var loopy = null; var xyxy = [0x00,0x00,0x00,0x00]; var padBTN = 'D28'; var pins = [ 'D2','D31','D30','D29']; // joypad LX LY RX RY NRF.on('connect', function(addr) { connected = true; updateBattery(); digitalPulse(LED3,1,flashy); }); NRF.on('disconnect', function(addr) { connected = false; isReading = false; digitalPulse(LED1,1,flashy); } ); NRF.setServices({ 0x180F : { 0x2A19: { readable: true, notify: true, value : [100] } }, 0x9AD0 : { 0x9AD1 : { readable: true, notify: true, value: xyxy }, 0x9AD2 : { readable : true, notify: true, value: [0x00] } }, 0x180A : { 0x2A29 : { readable: true, value: 'PuckPad' }, 0x2A26 : { readable: true, value: fwVersion } } }); function updateBattery () { NRF.updateServices({ 0x180F : { 0x2A19: { notify: true, value : [Puck.getBatteryPercentage()] } } }); } function updateXYXY(){ xyxy.forEach(function(pinData,index) { xyxy[index] = Math.floor(analogRead(pins[index]) * 100); }); // some manual calibration xyxy[0] += 1; xyxy[1] += 2; xyxy[2] += 1; xyxy[3] += 1; NRF.updateServices({ 0x9AD1 : { 0x9AD1 : { notify: true, value: xyxy } } }); } function updateBTN1 (buttonIs) { NRF.updateServices({ 0x9AD0 : { 0x9AD2 : { notify: true, value: buttonIs } } }); } setWatch(function(e){ isReading = !isReading; if (connected) { if (isReading) { digitalPulse(LED3,1,vflashy); updateXYXY(); loopy = setInterval(updateXYXY,refreshRate); } else { clearInterval(loopy); digitalPulse(LED1,1,vflashy); } } else { digitalPulse(LED2,1,flashy); } }, BTN, {repeat:true, debounce:50, edge:"falling"});
TODO
- Add second joystick
- Complete IOS app - pure software controller working just need to connect to the puck and get the values.
- Create custom PCB - adafruit have already created a single PCB file
- Check battery usage
I'll hopefully post back my progress in the coming weeks :)
- Add second joystick
-
@OwenBrotherwood https://www.seeedstudio.com/MDBT42Q-nRF52832-based-BLE-module-p-2736.html
No idea if they can have the firmware uploaded out of the box, which I think Gordon was alluding to.
@Gordon have you thought about doing a https://www.massdrop.com/ to help carry the cost burden.
-
Great thanks for the replies.
I'm thinking about using a couple of these https://www.adafruit.com/products/2765 to fly a parrot minidrone ( all BLE comms). Big pipe dream with lots of coding ahead.
Someone has already done alot of the hard work https://github.com/fetherston/npm-parrot-minidrone/blob/master/lib/MiniDroneBtAdapter.js
-
@Gordon Is there a guide available to add a bigger battery to the puck ? Looking at making a ble joypad and thinking a 2032 will soon drain.
-
UPDATED: think the issue is an xcode caching issue
Yesterday I was developing an IOS app that connects to the puck and was working fine. I then hit the save issues. Now my app is getting null values when querying the services characteristics. Using Ligthblue (ble app) from OSX I can read the values fine.
console output from xcode
Puck.js de81 <CBService: 0x174261d00, isPrimary = YES, UUID = 6E400001-B5A3-F393-E0A9-E50E24DCCA9E> <CBService: 0x174261240, isPrimary = YES, UUID = Health Thermometer> <CBService: 0x17407fe00, isPrimary = YES, UUID = Battery> <CBCharacteristic: 0x1700b66e0, UUID = 2A6E, properties = 0x2, value = (null), notifying = NO> <CBCharacteristic: 0x1740b4c40, UUID = Battery Level, properties = 0x2, value = (null), notifying = NO> Disconnected from <CBPeripheral: 0x1740ff600, identifier = E96AFB2C-C040-4B7D-B7E8-99E5DC5C7614, name = Puck.js de81, state = disconnected>
I believe the issue started when playing with notify: true with the characteristics on the puck side of things, but with the save issue and this bug I lost track a little. So I was going to wait for 1.92 before I fully looked into the issue.
Also is there a function to list the pucks current services/characteristics ? without using external software ? something like NRF.getServices() ?
-
@Gordon do you have an ETA on 1.92 ? I've hit another issue which I'm hoping 1.92 fixes.
Cheers for the update.
I got stuck in the 3v to 4v dc motor google search, then trying to find the right gears and pinions!
Minefield. I did manage to build a track timer using a puck, a few ir sensors and a poorly code html page to record history and best. Ideally the track timer could be built into a car.