Need a quick-loader (and downloader) for Hackable Electronic Badge
Ken Gracey
Posts: 7,392
Hey all,
We have a growing need at Parallax for a couple of interesting tools for the Hackable Electronic Badge. I'm not all that sure of the best way to approach this project at the moment, so I'm looking for suggestions since there are many ways to go about both projects. In short, these badges are customizable per event and identity. The badges are going to places where there are anywhere between 300 and 1000 people like art gallery openings, tech conferences and so on. They usually display somebody's name and also store e-mail, Twitter name, and so on. Through the event, the badges are used as a "contact manager" where they store each "introduction" in EEPROM.
Seairth and I already had a trial run at the Open Hardware Summit so he might have something to contribute here. Both of us can use Parallax programming tools of course, but this isn't the case for most of the "installations" where the badges will be sold. At the moment, you can look at the Propeller Spin code https://www.parallax.com/downloads/hackable-electronic-badge-ohs-spin-code to see how we (a) load the person's name and contact info and (b) use a terminal program to download their encountered contacts. You can also watch a short video I made https://www.youtube.com/watch?v=7fXuVUFoAXI.
The big gotcha here is that our badge tools need to be useful by anybody (without starting up Propeller IDE / Propeller Tool / Simple IDE and so on). These people aren't programmers - they might be event organizers, administrative staff, or volunteers.
So I ask a couple of questions:
1. What's the best way to easily load personal contact information into a badge (without a computer)?
The badge has infrared receiver, audio port, and buttons. The badge could be programmed at Parallax for event-specific behavior (logos, graphics, etc) so this tool would only need to load somebody's name and e-mail address. Firmware could have a listening capability for external input. It has a display, so it could show what's being typed if a keyboard were used. What about user-entered names with the touchpads to choose/select each letter? Ideas? Best to make application (2) below serve this same purpose for us? If so, fine!
2. Stand-alone, multi-platform, open-source computer program to download stored contacts?
At the event, people can exchange contact information by pressing the Open Hardware Button. LEDs confirm transmit and receive of the data over infrared (this works amazingly well thanks to JonnyMac's drivers). After the event the badge holder goes home and wants to download all of their new friends. At present, the firmware looks for any key press in a terminal program to start the 115,200 baud data dump back to the computer. Customers need to be able to do this without a terminal program. I believe we need a stand-alone, open, multi-platform program that does this for us (no Propeller programing tools required). It'd allow the contacts to be downloaded and saved as a simple text file on the computer. It would need to install FTDI drivers if not already present. Anybody can download and run the program. It just works.
Seeking any and all input on this issue. Please share your ideas here! My objective here is to determine the best model for this project. I'd like to determine the right development environment (web based? Python, so on) and then find a developer to do the project for us. Or, I might want to do this as a contest with a $2,500 bounty. For now, though, we need to get some discussion going and find the best design approach.
And yes, we will quickly need to write a specification for what we are asking for. That's probably our next task.
Ken Gracey
We have a growing need at Parallax for a couple of interesting tools for the Hackable Electronic Badge. I'm not all that sure of the best way to approach this project at the moment, so I'm looking for suggestions since there are many ways to go about both projects. In short, these badges are customizable per event and identity. The badges are going to places where there are anywhere between 300 and 1000 people like art gallery openings, tech conferences and so on. They usually display somebody's name and also store e-mail, Twitter name, and so on. Through the event, the badges are used as a "contact manager" where they store each "introduction" in EEPROM.
Seairth and I already had a trial run at the Open Hardware Summit so he might have something to contribute here. Both of us can use Parallax programming tools of course, but this isn't the case for most of the "installations" where the badges will be sold. At the moment, you can look at the Propeller Spin code https://www.parallax.com/downloads/hackable-electronic-badge-ohs-spin-code to see how we (a) load the person's name and contact info and (b) use a terminal program to download their encountered contacts. You can also watch a short video I made https://www.youtube.com/watch?v=7fXuVUFoAXI.
The big gotcha here is that our badge tools need to be useful by anybody (without starting up Propeller IDE / Propeller Tool / Simple IDE and so on). These people aren't programmers - they might be event organizers, administrative staff, or volunteers.
So I ask a couple of questions:
1. What's the best way to easily load personal contact information into a badge (without a computer)?
The badge has infrared receiver, audio port, and buttons. The badge could be programmed at Parallax for event-specific behavior (logos, graphics, etc) so this tool would only need to load somebody's name and e-mail address. Firmware could have a listening capability for external input. It has a display, so it could show what's being typed if a keyboard were used. What about user-entered names with the touchpads to choose/select each letter? Ideas? Best to make application (2) below serve this same purpose for us? If so, fine!
2. Stand-alone, multi-platform, open-source computer program to download stored contacts?
At the event, people can exchange contact information by pressing the Open Hardware Button. LEDs confirm transmit and receive of the data over infrared (this works amazingly well thanks to JonnyMac's drivers). After the event the badge holder goes home and wants to download all of their new friends. At present, the firmware looks for any key press in a terminal program to start the 115,200 baud data dump back to the computer. Customers need to be able to do this without a terminal program. I believe we need a stand-alone, open, multi-platform program that does this for us (no Propeller programing tools required). It'd allow the contacts to be downloaded and saved as a simple text file on the computer. It would need to install FTDI drivers if not already present. Anybody can download and run the program. It just works.
Seeking any and all input on this issue. Please share your ideas here! My objective here is to determine the best model for this project. I'd like to determine the right development environment (web based? Python, so on) and then find a developer to do the project for us. Or, I might want to do this as a contest with a $2,500 bounty. For now, though, we need to get some discussion going and find the best design approach.
And yes, we will quickly need to write a specification for what we are asking for. That's probably our next task.
Ken Gracey
Comments
- The badge must be easily configurable without the use of the USB. (I am assuming that Parallax can trivially pre-program the eeproms with stock software.) This was a slow process at the conference. Programming a custom image to 1000 badges just isn't practical. Even if a stock image is pre-installed, it still takes time for the serial port to be installed and configured. And, at least on Windows systems, you will likely get a different COM port for each badge you plug in.
- I would not want to enter initial setup data with the touchpads. However, the ability should still be available. There will inevitably be someone that needs a badge configured when there is no computer to configure it with.
- Organizers also need to be able to do the following:
- Edit the information without resetting the device.
- Transfer all information from one badge to another. (I encountered this need when one of the customers appeared to have a faulty badge. Re-entering their personal information wasn't a big deal, but transferring their collected contacts was near impossible.)
- Pull configuration information from a spreadsheet, database, etc. instead of manually typing it all in (this will dramatically reduce both time and errors).
One thought that occurred to me (and Ken touched on) involved using the IR for programming. Leave one badge connected to a computer, with firmware that basically turns it into an IR serial device. Of course, it might also make sense to make special hardware for this (e.g. a holder that ensures alignment of the IR components and keeps the guest badge's OLED easily visible).To program a badge, you would:
Think of this like the PC's "Press F2 to enter BIOS". Note, of course, that once you have made it through step 6, you could perform any number of administrative tasks.
For a bit of security, once the badge is configured, it would not do the startup routine described above. To enable it again, the user would set the badge to do it on the next startup.
Anyhow, that's about all I've got for the moment. There were a few odds and ends that I noted somewhere during the conference. If I remember where I wrote them down, I'll be sure to put them here.
What I have in mind is a docking station that the badge slides into, prior to inserting in the dock the user enters a badge ID number. This ID number correlates to the attendee info (contained in a list) and when placed in the dock the badge is then programmed via IR with the info.
With this workflow the badges never need to be programmed prior to the event they can be done as an attendee registers, and if there is a PC or standalone programmer (keyboard and serial LCD) it could be done on-demand by manually entering info. The latter would be handy for events where people are able to buy badges day of. A programming kiosk either run by the event staff or attendee would be good for on-demand programming.
As far as getting attendee info onto the badge, I'm thinking a "magic [IR] packet" could be sent to flip the badge into programming mode. From there we can use parts of the existing contacts transfer code to write the attendee info to EEProm and maybe even send a logo which could live on EEProm (a logo would eat up a bunch of space though).
As far as getting the contact info off, why not eliminate the need for a computer and just scroll the contact info on the display. An attendee can use the buttons to advance through the list of contacts gathered. Simple, easy, no additional software to maintain/install and no compatibility concerns.
Thoughts? (I have some thoughts on a stand alone programmer and may start mocking up a prototype)
You don't. Though it would certainly be possible to have a simple pre-loaded bootstrap loader that's programmed at Parallax. From there, you could use IR to program a conference-specific image (with custom images, menus options, etc.).
So what options are there? If I had my way the only info transferred between badges would be attendee ID numbers, attendees then would be provided a list of contact info for that conference. The upside is you can store a lot more contact info to EEProm since you are only storing numbers, the downside is you need the list from the conference organizers either online or in print to get contact info (which could be tricky if badges are made on-demand at the event).
I realize this is a bit off topic, but when thinking about mass production/use security becomes a concern.
Right you would need a base badge image burned on them at the factory by Parallax. I'm only talking about the attendee info.
That said mass programming is another interesting problem and being able to do that via IR would be a huge upgrade. While the Parallax loader works, plugging in 100+ badges and reprogramming isn't much fun. Having them all laid on a table (powered on) and reprogramming in mass via IR would be a lot easier, but arguably very tricky. However reprogramming them as attendee info is loaded seems workable.
Transfer binary to lower part of eeprom via IR, reboot and transfer to upper part...new code loaded. SD loader code I believe works like this doesn't it? This might work: http://obex.parallax.com/object/218
Agreed there is still a need for base code image from the factory.
So the risk in loading an image during attendee info programming is the amount of time it takes. Sending contact info is pretty quick, loading code I suspect wouldn't be. In addition there is a much greater chance of "bricking" the badge if code is loaded. I think having code loading as an option is important but it should be an option that only some would use (like me since I'm writing my own badge code).
So I see three things happening in the dock I described:
64KB
This is true but the first step when the attendee info is added is the DB is cleared which is the upper 32K. So it's available briefly for other purposes.
EDIT:Contacts are store in Upper 32K
From a security perspective, I don't see an advantage of storing IDs instead of full contact information. If one can get the full contact list for a conference, then the IDs will still give you all you need. In fact, storing contact information instead of getting a master list will provide overall better security, since the thief will have only those contacts stored on the badge (and not the entire list).
In reality, many conference organizers are going to be reluctant to give away a contact list like that. A requirement like this could easily prevent an organizer from using the badge at all.
Besides, presumably the information that someone is willing to share via these badges is not going to be all that private in the first place. This information should be not much different than what one would print on a business card.
Pretty much makes IR the main path, but a Master Badge could be possible.
The master badge would manage USB-PGM and also store a full set of attendee details.
Yes, that means a larger FLASH on the master, but flash is cheap.
That then allows a simple menu-list update of any badge, no PC needed
Overall the SW Driver and IR is a challenge, but for general IR links, google finds a very interesting USB IR Toy v2
http://dangerousprototypes.com/docs/USB_IR_Toy_v2
That mentions LIRC and WinLIRC drivers, and also shows what they learned over time.
The v2 has added a faster IrRX for short range, but much faster, links.
The QSE159 they use looks good for 115200+ baud, sub-cm range.
Development could start using USB IR Toy v2, and the drivers, and then port to a Prop.
(so the PC end works with either)
That's a large 50x faster than the IR remote Baud.
There are also SMD versions as OP181-OPL6000 Smart Meter Pair
Those claim 'up to 256 Kbps operation'
How many contact records fit in 32k ?
I think the original code that @JonnyMac wrote was 128 bytes (4 lines, 32 characters each) per record. Therefore 256. Maybe minus a few for other configuration bits.
At one point, you were asking around for jumper wires that could press fit into PCB vias. Did you ever find something suitable? One of the reasons I'm asking is because the EEPROM is directly accessible via the proto area, since I2C is exposed. I was wondering what it would take to create a "connector" or stand-alone programmer (as @jmg suggested) that you would just temporarily press into prototyping vias. This would have potential applications for the above conversation, but it would also allow another interesting idea: plug-in badge extensions. For instance, if a conference badge needs more storage, provide an upgrade board that would press-fit into the badge. If you want to add a low-profile d-pad, provide an upgrade board that would press-fit into the badge. I'm sure you get the gist...
Using IDs abstracts the contact info away from the device, since the device is most likely to be stolen. This concept is similar to how RFIDs are often abstracted from the actual user, ID is given entry privileges not a username/contact.
Understood and maybe a full list isn't the right method and a bad example. Larger conferences provide badges with UPC codes that can be scanned by vendors so that they can follow up with you later. Often this is just a badge number and the organizer provides a list based on the numbers collected. Although QR codes are more popular and I'm not sure if they are doing just numbers or actual contact info.
I realize this and maybe nobody is worried about it, just highlighting a risk so people can make and active choice.
Depends on the size of each record. I can't remember if the code limits length of record or not.