Dear Arsians,
I have developed and patented a product that I am no longer able to use for its originally intended purpose. It works fairly well, but it took us too long to develop, and the market moved on and now prefers newer ways to accomplish what this product was intended to do.
I'm not secretive about this, but I am being intentionally vague because I am hoping that folks will read about this and see the pictures and think "Wow, this is perfect for X application", so I don't want to bias your thinking toward anything related to our original idea. After vigorous discussion, I will be happy to tell everyone the rest of the story!
Instead, I will tell you everything about the product, and hope that you will tell me how your company wants to buy the product and the tools for your own use case.
We own all the source code for the device, the communication servers and the API, and have board schematics, gerber files, BOM, STEP files, etc, so I can provide you with plenty of info if you're interested. We also own the injection mold tooling, so we can make the product in volume or sell you the tooling so you can modify it for your own applications.
High level overview of the product:
API and communication details:
Obviously using WiFi solves this problem, but we wanted the device to work in areas without WiFi and also to not depend on folks breaking/changing the WiFi at the intended remote locations.
I have enough boards to build roughly 450 of these, and enough plastics to build about 1,000. They are currently in my garage, where they threaten my marriage on a regular basis.
Please share your thoughts and insights, and I'll let you know where to send the check.![Big Green :biggreen: :biggreen:](https://cdn.arstechnica.net/civis/data/assets/smilies/big-green-1x.png)
Pictures:
Front of printer with paper, buttons, and tear bar
![front with paper, buttons, and tear bar front with paper, buttons, and tear bar](https://cdn.arstechnica.net/civis/data/attachments/39/39755-e267558348b8330626ad8c247912262d.jpg)
Left of printer with CCD Camera and ESP-32 w/ integrated antenna:
![Left of printer with CCD Camera and ESP-32 w/ integrated antenna Left of printer with CCD Camera and ESP-32 w/ integrated antenna](https://cdn.arstechnica.net/civis/data/attachments/39/39756-1378bc62980fef0a9a65b3a3992fd34a.jpg)
Right of printer with spring-loaded "acknowledge" button, SIM7000A and USB visible:
![Right of printer with spring-loaded acknowledge button, SIM7000A and USB visible: Right of printer with spring-loaded acknowledge button, SIM7000A and USB visible:](https://cdn.arstechnica.net/civis/data/attachments/39/39758-bf14c99d114349419c5551902d622bcf.jpg)
Rear with USB Host port:
![Rear with USB Host port: Rear with USB Host port:](https://cdn.arstechnica.net/civis/data/attachments/39/39760-c79be5eb4fe4eb88cc150bd494ab9a46.jpg)
Bottom with SIM tray, mounting holes, and 12V power port visible:
![Bottom with SIM tray, mounting holes, and 12V power port visible Bottom with SIM tray, mounting holes, and 12V power port visible](https://cdn.arstechnica.net/civis/data/attachments/39/39761-972bdee78d2c05b6acd8209533a546ef.jpg)
I have developed and patented a product that I am no longer able to use for its originally intended purpose. It works fairly well, but it took us too long to develop, and the market moved on and now prefers newer ways to accomplish what this product was intended to do.
I'm not secretive about this, but I am being intentionally vague because I am hoping that folks will read about this and see the pictures and think "Wow, this is perfect for X application", so I don't want to bias your thinking toward anything related to our original idea. After vigorous discussion, I will be happy to tell everyone the rest of the story!
Instead, I will tell you everything about the product, and hope that you will tell me how your company wants to buy the product and the tools for your own use case.
We own all the source code for the device, the communication servers and the API, and have board schematics, gerber files, BOM, STEP files, etc, so I can provide you with plenty of info if you're interested. We also own the injection mold tooling, so we can make the product in volume or sell you the tooling so you can modify it for your own applications.
High level overview of the product:
- it is basically an 80mm thermal printer that receives something to print via the 4G LTE network
- after printing, it flashes and beeps (if desired, volume controllable via API) to get your attention
- pressing large flashing button acknowledges that printing has completed
- the printer can print the "payload" with a QR code or barcode
- the QR code can be scanned by the CCD camera on the other end of the device to send a message back to the API that sent it
- has WiFi and a BLE beacon, but WiFi logic flow is not implemented in software
- all of the logic is controlled by a Microchip PIC32MZ EF processor
- connection to LTE is handled by a Simcom SIM7000A, which is also a full-featured processor with LUA scripting
- standard mini-SIM slot (what most people think of as a "full-sized" SIM)
- uses standard SMA male antenna for LTE
- PIC32 communicates with SIM7000A via UART and simple AT commands
- has an ESP-32 board for connecting to WiFi, Bluetooth, or acting as a BLE beacon
- PIC32 can communicate with ESP-32 via UART, also using simple AT commands
- thermal printer is an APS FM-305HS printer module and an ASIC controller with their custom firmware on our board
- uses standard 80mm (3 1/8") by 120 ft. paper rolls
- CCD camera is an Omnivision/Arducam OV7670 and Lens, mounted in "portrait" orientation, so images are 480x640
- unused USB-B female port on rear so it can act as USB host, no software implemented yet
- powered by a 12V, 5A power brick, overkill, but printer needs some power
- marginal cost to make an entire unit, including BOM, screws, plastics, etc, but NOT any assembly labor, was about $175
- I have datasheets on all of this stuff that I can attach if folks are interested
API and communication details:
- our "firmware" that runs on the PIC32 is written in C and must be compiled with Microchip's MPLABx tools
- things you want to print are sent in JSON format to a REST-ish API written in Perl
- the print payload, along with unique ID, beeper volume, polling interval and other meta instructions, are saved by the API in a DB.
- in order to keep data usage low and eliminate the need for a VPN, the device "polls" the server with small UDP messages
- the UDP server, also in Perl (sorry), checks the DB for an entry to print and logs the poll as a "heartbeat" in the DB and logfile
- if there is nothing to print, the UDP server ignores the request and doesn't respond!
- I'd tell a UDP joke here, but I don't know if you'd get it
- if there is something to print, the UDP server responds that there is something to print
- the device then makes a new request via TCP for the print payload
- the TCP server is written in Go
- after receiving the payload, the device sends a "received" message via UDP in JSON format
- after pressing the flashing "acknowledge" button, the device sends a UDP "acknowledged" message in JSON format
- if you scan a QR code using the camera, depending on the QR, the device can
- send a UDP JSON message of your choice back to the server
- configure it's APN to tell it which LTE network to use
- configure itself to use WiFi
- basically anything else you want based on the QR payload
- the device supports OTA firmware updates for our code on the PIC32. If an update is available:
- the UDP server responds to a poll with a messge saying so
- the device then makes a TCP request to the Go server, and the server responds with the firmware update
- PIC32 has 2 firmware banks in flash in case an update goes awry
- none of this uses encryption (except the REST API), because we don't use it for any sensitive data, so if you need secure messages/printing you'd need to implement a security layer on top of the UDP and TCP messages.
Obviously using WiFi solves this problem, but we wanted the device to work in areas without WiFi and also to not depend on folks breaking/changing the WiFi at the intended remote locations.
I have enough boards to build roughly 450 of these, and enough plastics to build about 1,000. They are currently in my garage, where they threaten my marriage on a regular basis.
Please share your thoughts and insights, and I'll let you know where to send the check.
![Big Green :biggreen: :biggreen:](https://cdn.arstechnica.net/civis/data/assets/smilies/big-green-1x.png)
Pictures:
Front of printer with paper, buttons, and tear bar
![front with paper, buttons, and tear bar front with paper, buttons, and tear bar](https://cdn.arstechnica.net/civis/data/attachments/39/39755-e267558348b8330626ad8c247912262d.jpg)
Left of printer with CCD Camera and ESP-32 w/ integrated antenna:
![Left of printer with CCD Camera and ESP-32 w/ integrated antenna Left of printer with CCD Camera and ESP-32 w/ integrated antenna](https://cdn.arstechnica.net/civis/data/attachments/39/39756-1378bc62980fef0a9a65b3a3992fd34a.jpg)
Right of printer with spring-loaded "acknowledge" button, SIM7000A and USB visible:
![Right of printer with spring-loaded acknowledge button, SIM7000A and USB visible: Right of printer with spring-loaded acknowledge button, SIM7000A and USB visible:](https://cdn.arstechnica.net/civis/data/attachments/39/39758-bf14c99d114349419c5551902d622bcf.jpg)
Rear with USB Host port:
![Rear with USB Host port: Rear with USB Host port:](https://cdn.arstechnica.net/civis/data/attachments/39/39760-c79be5eb4fe4eb88cc150bd494ab9a46.jpg)
Bottom with SIM tray, mounting holes, and 12V power port visible:
![Bottom with SIM tray, mounting holes, and 12V power port visible Bottom with SIM tray, mounting holes, and 12V power port visible](https://cdn.arstechnica.net/civis/data/attachments/39/39761-972bdee78d2c05b6acd8209533a546ef.jpg)
Last edited: