-
@Gordon what about https://www.mikroe.com/mikrobus/ ?
- open standard, 3.3 & 5V pins, I2C, UART, PWM and SPI
- existing Raspberry expansion board (https://shop.mikroe.com/pi-3-click-shield)
- several "clicks" (sensors, GSM, buttons, displays, lighting detector 😮, ...)
- open standard, 3.3 & 5V pins, I2C, UART, PWM and SPI
-
congrats @Gordon. another example that Espruino/PuckJS is a great product !
ps a thumbs up feature would be nice to have in the forum ;)
-
-
@ancienthero any tips to fix the node-gpy Xcode problems ?
-
imagine adding WiFi to Puck.js :mindblown:
after playing with Nordic Thingy I still go back to my Puck.js – the form factor, the cute silicone case, easy to program makes all the difference.
my dream Espruino device would have:
- Puck.js form factor
- WiFi
- 9 axis motion sensor (eg Bosch BNO055) – for 3D movement projects. also a deep sleep wakeup vector
- expansion board / pins for https://www.adafruit.com/feather like modules
- temp/humidity/air pressure/... (eg Bosch BME280) – like Ruuvitag ;)
- 320 x 240 LCD (my nostalgic resolution)
- Puck.js form factor
-
-
@Gordon not yet on Patreon ;)
I was testing Renesas vs Nordic for a low power project and Nordic win (they are responsive, better docs, first time experience better, ...) I am waiting for my Thingy order to play with mic/speaker combo and implement https://medium.com/planimal-interactive/custom-wireless-interactive-objects-4be6ba9a03fc for my kids ;)
based on https://pd.zhaw.ch/publikation/upload/210180.pdf there is not a big difference to worth porting to a different platform
-
Nodeconf badge by @Gordon
a lovely badge that allows exploration of the Espruino platform
page: http://nodeconfeubadge.org/
hardware: https://github.com/nearform/nceubadge/tree/master/hardware
short video: https://www.youtube.com/watch?v=xAry2SLZ51I
LATER EDIT:
@Gordon presentation - https://m.youtube.com/watch?list=PL0CdgOSSGlBaxNkrUIHrhd1f3ch45f66_&v=y9vySsTnp8M -
There is also Renesas R78/G1D with low power consumption (4.3mA in TX mode) but I don't like their dev setup (manuals on CDs, hard to find info, ... )
-
yes. no need to install anything.
I am looking into adding https://flows.nodered.org/node/node-red-contrib-homekit , but that needs some server side code though (for mDNS and crypto)
-
bought a small speaker ( https://www.anker.com/products/variant/SoundCore-Mini-Bluetooth-Speaker/A3101111 ) and found out that it has BLE, Siri support and battery in status bar.
so it is time for more sniffing :)
-
-
For example, a standard HID command may be mapped to an operating system function that enables/disables the on-screen keyboard (e.g., a standard HID Usage ID may be remapped to the standard AL Keyboard Layout HID Usage Name to toggle the on-screen keyboard of the target device 102).
--- from https://www.google.com/patents/WO2015031736A2?cl=enI think that Android has the same problem when an external keyboard is connected
-
@ClearMemory041063 cool, I want to play with MIDI thingies as well. after I finish the Siri integration first 😄
as I don't want to "mess" with my Puck I will go from Puck to a web page via Web Bluetooth and then via Web MIDI to a device connected via USB. the latency will be "huge", but it is ok for start.
... maybe we can join forces on this journey
-
yes, both "Puck.js and HID Keyboards" tutorials work great on iOS (just that it disabled the OS virtual keyboard and I can only enter aA 😝 )
digging through iOS debug logs to see if there is something interesting. found out that Facebook is active scanning for 10 seconds. maybe for https://placetips.fb.com feature
-
-
@Gordon no, about the icon that shows on the other devices – https://www.bluetooth.com/specifications/gatt/viewer?attributeXmlFile=org.bluetooth.characteristic.gap.appearance.xml
from what I see at https://github.com/espruino/Espruino/blob/4cf66cca663024473005b234d238ad106b6b6343/targets/nrf5x/bluetooth.c#L1475 it is disabled.
-
anyone managed to set the appearance – service: 0x1800 characteristic: 0x2A01 ?
it gets overridden by default Puck.JS (name and appearance in 0x1800).NRF.setServices({ 0x1800: { 0x2A00: { value: 'Appearance Test', readable: true, writable: true, }, 0x2A01: { readable: true, value: [961], // BLE_APPEARANCE_HID_KEYBOARD }, } }, { advertise: ['1800']}); NRF.on('connect', function(addr) { digitalPulse(LED1, 1, 50); }); setWatch(function() { digitalPulse(LED3, 1, 50); }, BTN, { repeat:true, edge:"rising", debounce:50 });
-
@user54159 – tried it. didn't help.
@Adam79 – devzone post was the thing that started all. interesting about Accessibility feature, but the blue rectangle around each UI object is too distracting for me.I am playing now on making it discoverable as a keyboard, maybe that's why iOS is ignoring it.
-
-
nope. the other has report id 3, so 0xA1 0x3 is the report selector. read somewhere that maybe iOS doesn't work on a consumer only report, but it works with 0xEA (volume down) or 0xE9 (volume up), so it is something about the report that doesn't setup properly.
found out that web relay works so I can develop on laptop and upload without the disconnect, unpair, pair on ios, try it :)
-
thanks to Raspberry PI Bluetooth implementation I was able to sniff around my Puck and another device that sends the Home button correctly :
bluetoothctl of my Puck > info F5:BB:1E:D3:CB:34 Device F5:BB:1E:D3:CB:34 Name: Puck.js cb34 Alias: Puck.js cb34 Paired: yes Trusted: no Blocked: no Connected: yes LegacyPairing: no UUID: Generic Access Profile (00001800-0000-1000-8000-00805f9b34fb) UUID: Generic Attribute Profile (00001801-0000-1000-8000-00805f9b34fb) UUID: Human Interface Device (00001812-0000-1000-8000-00805f9b34fb) UUID: Nordic UART Service (6e400001-b5a3-f393-e0a9-e50e24dcca9e)
from command line get the report descriptor > cat /sys/kernel/debug/hid/0005\:0000\:0000.000F/rdesc 05 0c 09 01 a1 01 85 00 15 00 26 80 03 19 00 2a 80 03 75 10 95 01 81 00 c0
btmon sniffing the press of my Puck > ACL Data RX: Handle 64 flags 0x02 dlen 9 ATT: Handle Value Notification (0x1b) len 4 Handle: 0x0015 Data: 2302 > ACL Data RX: Handle 64 flags 0x02 dlen 9 ATT: Handle Value Notification (0x1b) len 4 Handle: 0x0015 Data: 0000
// my code with the report taken from the other device var report = new Uint8Array([ 0x05, 0x0C, // Usage Page (Consumer) 0x09, 0x01, // Usage (Consumer Control) 0xA1, 0x01, // Collection (Application) 0x15, 0x00, // Logical Minimum (0) 0x26, 0x80, 0x03, // Logical Maximum (896) 0x19, 0x00, // Usage Minimum (Unassigned) 0x2A, 0x80, 0x03, // Usage Maximum (0x0380) 0x75, 0x10, // Report Size (16) 0x95, 0x01, // Report Count (1) 0x81, 0x00, // Input (Data,Array,Abs,No Wrap,Linear,Preferred State,No Null Position) 0xC0, // End Collection // 25 bytes ]); NRF.setServices(undefined, { hid : report }); NRF.on('connect', function(addr) { digitalPulse(LED3, 1, 1000); }); NRF.on('disconnect', function(addr) { digitalWrite(LED3, 0); }); function p(c,cb) { NRF.sendHIDReport(c, function() { setTimeout(function(){ NRF.sendHIDReport([0,0], cb); },500); }); } setWatch(function(){ try{ digitalPulse(LED1, 1, 50); p([0x23, 0x02],function(){print('done');}); } catch (e) { print(e); digitalPulse(LED3, 1, [50,50,50,50,50]); } }, BTN, {edge:"rising",repeat:true, debounce:50});
**and the sniff of the other device that works **
> ACL Data RX: Handle 12 flags 0x02 dlen 8 Channel: 65 len 4 [PSM 0 mode 0] {chan 0} a1 03 23 02 ..#. > ACL Data RX: Handle 12 flags 0x02 dlen 8 Channel: 65 len 4 [PSM 0 mode 0] {chan 0} a1 03 00 00 ....
I tried with the ble_hid_controls.js module and it works on iPhone (almost same btmon trace but just 1 byte sent instead of 2).
-
I am trying to add iOS Home button to ble_hid_controls.js module, but as AC Home id
is 0x223 it needs a different report to include it. I tried to add it as an Usage (0x0a, 0x23, 0x2) but it doesn't work :(another approach was to send bytes instead of usage bits, still no lock . maybe I dont set it up properly for Generic GUI Application Controls ?
btw, on a Windows machine 0x223 opens Internet Explorer (or maybe the default browser) ;)
any pointers ? as I am loosing my mind to send a simple command.
ps. puck.js rulz (1 day user here). thanks @Gordon
also a Puck.js Lite would be nice – Espruino on a nRF52810, small factor, some pins for sensors in $5 range