06/08/2016 at 15:36 •
I put together a quick project with the MoonLander for the OSHPark #BringAHack dinner after Maker Faire, which I called the BICORDER. All the code is up on Github. It was a good chance to test out the board - the one annoying thing was not having a base board to adapt it to a 0.1" header for easy breadboarding, so I ended up soldering temporary wires for prototyping then had to remove those to wire it up in the case. I'm still happy with the 2mm pitch for the I/O, I just need to make up an adapter board (I actually have a board already, I just gotta sort out getting the right height headers and standoffs).
01/30/2016 at 15:58 •
So, here's my thoughts for the PC side software:
- Convert API to C++
- Use Boost.Thread to implement a receive thread that fills an RX buffer on the stack (it seems the hidapi interrupt buffer is pretty limited and I keep dropping data, I think I need to read from it pretty frequently)
- Create a simple QT GUI that can:
- Upload/download firmware
- Read/write the EEPROM (? - would need to backup fw, flash EEPROM reading fw, then restore?)
- Serial terminal (?)
- Create some APIs and templates for use in LPCXpresso, for example:
- Data logging template where user sets the wake up interval with a define then fills in user code to execute on wakeup
- Simple APIs for peripherals, including EEPROM
- A library for a serial command interface compatible with the GUI (? - which could include EEPROM read/write commands)
The idea is to make something cross-platform and easy to use - it would be possible for anyone to download a firmware binary, plug in the board and upload.
Another possibility would be to hack it into the Arduino IDE, which is something JeeLabs worked on a bit: http://jeelabs.org/2015/10/14/arduino-ide-w-lpc824/ - they ran into a problem with using the RTS & DTR signals to trigger the bootloader using an FTDI converter, but I think it should be doable with the CP2110 and some custom bootloader code? I don't know, I've never looked into adding new platforms to Arduino (and I'd rather not use Arduino anyways - ultimately I want this to be a platform for simple, very-low-power applications, and Arduino is far from ideal for that).
Now I just need to learn QT...
- Convert API to C++
01/20/2016 at 23:18 •
I think I've just about finished rev B of the PCB - the main changes I've made are:
- I routed a couple of the CP2110 GPIO outputs to the LPC824 reset and ISP entry pins so the ROM bootloader can be entered without the user pressing a button
- I added an I2C EEPROM, which can be used for data logging and it's contents can be dumped over the USB-UART bridge
I was originally planning on including some sensors on board for a sort of all-in-one "IoT" platform, but I think it's more important to keep the cost down. The EEPROM is a fairly inexpensive part, and I think it's worth the $0.20 or so to add data logging as a core functionality.
I've pushed the latest changes to Github.
01/13/2016 at 18:59 •
One of the big reasons I made this board was to check out the CP2110 HID USB-UART IC. At $1.85 in single quantity (CP2110 from Digi-Key), it pretty much blows the ~$4.50 FT232 out of the water price-wise. Also cool is that it is HID based, and therefore doesn't actually require any drivers to communicate with it (Silicon Labs also make the $1.80 CP2104 USB-UART bridge that requires a driver and would be a more direct competitor for the FT232).
Being HID based, the CP2110 doesn't just show up as a serial port when you plug it into your computer, so I've been working on a quick and dirty C library to control it here (using hidapi). My next step will be to use that API to implement the serial ROM bootloader in the LCP824 to program it over USB. In the next hardware revision I'll probably have the reset and ISP entry pins controlled directly by a couple CP2110 GPIO pins, which will allow the programming software to reset the LPC824 into the bootloader itself.