After three months of work, it’s finally done!
Background
About a year and a half ago, I decided that I wanted to branch out from the fairly limited world of low-power 8-bit AVR microcontrollers into something better. Very few consumer products are made with such antiquated technology, and I figured that moving up to something like a 32-bit ARM processor would open a lot of doors for my projects.
I quickly ran out and purchased development kits from three major ARM processor manufacturers.
Judging from the fact that the TI LaunchPad Evaluation kit is still wrapped in plastic, you might guess that I haven’t gotten a lot of use out of these.
All of my projects so far have been either entirely analog or “bare-metal” C compiled with AVRGCC and programmed using AVRDUDE. AVRs are simple processors with a limited number of peripherals. As such, my code usually speaks directly to the special function registers of the part by manually modifying specific bits to turn on the ADC or start a timer.
As processors get more complicated, doing all of this special programming by hand becomes overly cumbersome especially considering that some simple tasks require multiple operations that must be performed in a certain order and in some cases within certain timing constraints. Each development kit came with a whole body of software that contains special functions to manage a lot of these operations for you.
Up to this point, I had been accustomed to keeping my entire project code inside a single main.c file. This is a horrible strategy for software development as it makes code very difficult to maintain, but I’ve never considered myself a software developer and it’s always worked for me. I started my life as a firmware developer by writing assembly code for the 8051; In fact, I didn’t even know what an AVR was until after I started working on my first pre-ch00ftech attempt at a persistence of vision display. What a mess.
Though programming in C has made my life about 1000 times easier, I’ve always liked that with assembly, you have 100% control over of the processor and can predict and account for its every action. As machine code gets covered up with more and more layers of abstraction, I tend to get a little anxious and have thus avoided using other people’s libraries for far longer than I should have.
This “bare-metal” coding strategy was no longer going to work for these more complex ARM processors, but when trying to incorporate their libraries into my little scripts, I got overwhelmed and eventually gave up. Reading a software library is a lot like reading a schematic. There is a general way things are supposed to be, and when you have zero familiarity with these standards, it makes it very easy to get lost.
For example, at one point I might have written:
return GPIO_ReadInputDataBit(GPIOB,4);
When I should have written:
return GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_4);
Which caused some odd behavior since this line is present in stm32f10x_gpio.h
#define GPIO_Pin_4 ((uint16_t)0x0010) /*!< Pin 4 selected */
I generally learn best when a project is 90% stuff I know how to do and 10% new stuff, but this task had the percentages flipped the other way around and even with all of the documentation, I got lost pretty fast. Besides, I’ve never found it easy to just pick up and learn a topic unless there’s a specific reason for learning it. That reason didn’t come for another year.
Thermal Printers and Instant Cameras
While waiting at Nordstrom for my newly hemmed jeans to get rung up, I noticed how fast their thermal receipt printers print. Thermal printers don’t use ink but instead use a special paper that turns black when heated. As the paper is rolled out, a row of tiny heaters “burns” tiny dots in the page that can be organized to make up text. As a result, they have a very small number of moving parts. Usually, it’s just the feed motor and sometimes a paper cutter.
A few years ago, I saw an ad for a internet-connected thermal printer called Little Printer which I still think is a brilliant product if only it had better content for US customers (and cost about 50 on this which I still haven’t even unwrapped:
I think my confidence was still a little inflated from reverse engineering a children’s toy, and I thought that it would be trivial to do the same for a high-speed, full-color, proprietary scan head. Regardless, something must have come up because I never did order a thermal printer.
Fast-forward three years. I’m waiting at Nordstrom and it hits me. I should just make a camera!
Instant-photos managed to stay a part of popular culture from the 50s up until about the mid 2000s when the instant feedback and low-cost of digital cameras made them the new de-facto standard for sharing memories without a trip to the 1-Hour Photo.
The reality is that instant photos have always been terrible and it’s a miracle they lasted as long as they did. Polaroid film was extremely expensive, the printed images were small, the picture quality was terrible, the cameras bulky, and you still had to wait a few minutes to see if your picture came out at all.
In its death-throes, Polaroid released the I-Zone camera which took even crappier, smaller pictures and had an annoying length of tape on either end of the picture that was larger than the image itself.
Regardless, Polaroid was fairly successful for a very long time. I suppose the point is that people are willing to go a long way to get instant photos, and apparently image quality and size is not high on the requirements list.
This theme has persisted into the digital realm as well. The quality of a photo is almost irrelevant to a majority of the point-and-shoot population. Many pictures aren’t meant to adorn the halls of an art museum; they’re just an aid to help unlock a specific memory. The Facebook comments under the picture are almost as important as the image itself. I’ve seen people post phone screenshots to Instagram because it was easier than actually downloading and saving the image they were looking at. That 0.8MP version of that 8MP image is “good enough” so why bother use anything better?
Here’s a Polaroid picture of me on the first day I soloed when I was working on my private pilot’s license:
It’s blurry, the colors are washed out, and the image itself is pretty small. But who cares? A higher resolution picture won’t tell you that I was nervous as hell and sang “Bang on the Drum All Day” the entire time I was in the air while secretly fearing that I was somehow accidentally holding down the transmit button and doing impromptu karaoke to the entire airport.
The real issue with Polaroid has never been image quality, it’s been price. I remember feeling very nervous when using a Polaroid camera as each press of the shutter was another $2-3 spent. It’s almost as if the apprehension associated with the price tag was directly at-odds with the spontaneity of instant images in general.
So while eating a club sandwich in the Nordstrom Grill, I thought it might be cool to take both of these issues to their extremes. Make a camera the produces extremely low quality instant images for an extremely low price. You still get the novelty and benefits of a physical keepsake, and as long as the pictures are somewhat recognizable, they still serve the purpose of helping you catalog and recall memories.
Conveniently, Christmas is coming up, and this is the perfect gift for my sister who has made a hobby of working with novelty toy cameras. They don’t take super amazing pictures, but they have a bunch of really neat lenses that let you do things like extend the image frame to cover the sprocket holes or shoot 120 film. Here’s a roll that we developed together:
It’s some buildings and clouds in Korea.
So the task was to produce a portable camera that can print images instantly using an optical module and a thermal printer. Of course, processing a decent image quickly requires far more processing power than what’s available in an 8-bit AVR, so unless I wanted my instant-pictures to take weeks, this was the perfect project to get me started on ARM.
Pingback: Towards More Interesting Instant Cameras | Hackaday
Pingback: Towards More Interesting Instant Cameras - Tech key | Techzone | Tech data
Pingback: Towards More Interesting Instant Cameras | Ad Pub
Pingback: Towards More Interesting Instant Cameras | Hack The Planet
Pingback: Towards More Interesting Instant Cameras | 0-HACK
Thoughts about heading toward a KS project:
1. Separate the battery/charger from the camera/printer: Support attached and/or detached/cabled power, with standard LiPO standard and the option of a pack with replaceable/rechargeable NiMH cells (dirt cheap). Then, also offer the camera without a battery pack (DIY power is relatively easy if the interface is simple).
2. Personally, I’d want a clear case with all the internals visible, using standoffs and 3D-printed brackets where needed. Hopefully, this would also be the simplest/cheapest case.
3. Kit the custom parts and include a simple “no-solder” BOM for the rest. This permits a “partial gift” for the makers among us. And I certainly don’t mind giving Adafruit some business, especially if a small discount can be negotiated for this project’s BOM.
I think the above can provide a wider range of KS options and price levels with (hopefully) relatively little change to the core device.
Pingback: PrintSnap Wants to Bring Back the Instant Picture Using Dirt Cheap Receipt Paper
Hey there, I think this might interest you: http://www.sciencedaily.com/releases/2014/10/141022143628.htm
Yep, I’m well aware of that problem. I wash my hands compulsively anyway, and I’m sure someone will come around with a BPA-free option soon in response to public outcry. The same thing happened with Nalgene and leaded gasoline.
I want this! I want this soooo bad. Please sell me the first one!
Pingback: PrintSnap Wants to Bring Back the Instant Picture Using Dirt Cheap Receipt Paper - news from Allwebsolutions.net
When this becomes available, make sure it can be sent to Australia!!!!
Pingback: l’appareil photo instantanée le plus économique | news-apple
Hi Ch00f,
Your PA15 pin isn’t busted; the problem is that it is by default mapped as a JTAG debug pin and not to the GPIO block. In the device datasheet (the 100-page thing, NOT the 1000-page reference manual), there will be a “pin definitions” table near the front containing pin numbers for all the different package options, pin names (“PA15”), pin-types (“I/O”) and 5V-tolerance (“FT”), a “Main Function” column (this is the important part) and “Alternate Function” columns.
Note that for most GPIOs, the Main Function is GPIO, i.e. at power-on, PC12 is PC12, etc. However at power-on, PA15 is JTDI (jtag data in). This is necessary so that JTAG can start talking to a device when it boots. If you’re using SWD (and it seems you are) and want to make use of the PA15 pin, you need to disable the JTAG peripheral and its pin remapping.
Note that if you don’t want to be able to debug or maybe ever load code into the device again, you could also free up PA13 and PA14 which are the SWD pins.
Email me if you get stuck and I can send you the specific line of code you need; I just don’t have it here right now.
(I found this one out the hard way while playing with an stm32; I wasted a good 4 hours figuring it out)
THANK YOU
I figured it was something like that. I mentioned that part specifically hoping someone would figure it out for me.
Thanks for the tip!
Pingback: Prints for less than penny
Pingback: PrintSnap: A Home-Built Camera That Prints on Receipt Paper (and Almost for Free)
Pingback: The Quirky PrintSnap Instant Camera Let's You Create Instant Prints On The Cheap - DIY Photography
You are a silly man with silly ideas. As soon as I started the video I thought, “Why is he recreating the GameBoy Camera/Printer?” Your presentation was mockingly beautiful. It’s good to see your personal projects continue to be so whimsical.
What’s nice about the Cortex series is that some of the “peripherals” are standardized by ARM, so no matter the manufacturer, they’ll all behave the same. SysTick, FPU, NVIC, etc.
To enable the FPU, google “cortex m4 enable fpu” and you’ll find the following asm to do so (basically setting a couple bits to turn on the coprocessors in the coprocessor access control register):
; CPACR is located at address 0xE000ED88
LDR.W R0, =0xE000ED88
; Read CPACR
LDR R1, [R0]
; Set bits 20-23 to enable CP10 and CP11 coprocessors
ORR R1, R1, #(0xF << 20)
; Write back the modified value to the CPACR
STR R1, [R0]
I'm actually working on a project right now using a thermal print head, but rather than an all-in-one module like you have, I am using discrete components: a solenoid to push a kyocera print head onto the paper and a stepper motor to drive the paper through. I can print a 1450×672 px image in 3-5 seconds. In my case, going faster actually improves the quality of the print because the print head stays warm.
Pingback: PrintSnap: eine Sofortbildkamera, die Thermopapier statt PolaroidInstant-Film verwendet | Foto[gen]erell
I like this idea, the camera itself is sound for a version 1.0 project. To make it “sellable” you should consider a different housing altogether to make it look like an old school camera. Two ideas I thought are a TLR (like a Rollei) where the user looks down at a mirror to compose the image through a lens, while the camera is in a lens just below it, and the printer goes out the side. Another is a Brownie box camera style with an offset finder and the camera in a central front port. Either way something that looks like an old school film camera from a few feet away would be a winner.
Pingback: Una cámara DIY instantánea
Pingback: Una cámara DIY que hace fotografías instantáneas mas baratas que una Polaroid | Android 3G
Pingback: PrintSnap:用小票做相纸的黑白拍立得相机 | 趣火星
Pingback: PrintSnap Kamera Cetak Instan - Titikfokus
Pingback: Instant Camera Uses Receipt Rolls For Printing Paper - PSFK
Pingback: Instant Camera Uses Receipt Rolls For Printing Paper * The New World
Pingback: This instant camera will print images on a receipt paper roll - Berbit.net
This is fantastic! You basically made a spiritual successor to the King Jim Da Vinci DV55. I really want to see this becoming a real product and hope you go with Kickstarter on this project!
Pingback: This instant camera will print images on a receipt paper roll * The New World
Pingback: This instant camera will print images on a receipt paper roll | xoneta.com - majalah online gadget, komputer dan teknologi terbaru
please keep me posted on all news!
Pingback: PrintSnap, una cámara instantánea con la que imprimir fotografías en el papel de los tickets
Pingback: PrintSnap, una cámara instantánea con la que imprimir fotografías en el papel de los tickets | Fravala.com - Las noticias de tecnología a tu alcance.
Pingback: PrintSnap, una cámara instantánea con la que imprimir fotografías en el papel de los tickets - QuickIdeas
Pingback: PrintSnap, câmera instantânea para imprimir fotos em papel de tickets
Pingback: PrintSnap, una cámara instantánea con la que imprimir fotografías en el papel de los tickets • 25 noticias
Pingback: PrintSnap, a camera which prints the photo instantly | Minionvilla
please add me to your mailing list.
love it!!
i
Pingback: PrintSnap: an Instant Camera, which uses Receipt Paper instead of Polaroid/Instant Film |
I want this. If it’s become product please sell at JAPAN too.
I hope ship to Japan!
I’d like to buy it!
please send me all news about it.
l love it
ほしい!
これは楽しそう!
発売されたら買います 😀
Fantastic ! I love it !
Great! I want to buy one.
Great !!!!!! I want this.
Great!!
It must be goint to be a great tool.
I am really excited about it from now.
I want buy it!
it’s a fantastic invention Really hoping to the real product asap!!
Japan.Yokohama
great‼︎ please add me to your mailing list.
I love it !
Fantastic!
Please let me know your progress of the masterpiece.
soooo geate:)
i want this!!!
PrintSnap is very good.
I like it !
Please add me to your mailing list.
欲しいです!
I like this idea!
It’s fantastic!
Please add me to your mailing list
I remembered a pocket camera of Game Boy!
Wonderful.I wait for a followup!
The thing that is really cool. Commercialization sure if I want to carry one.
コレは面白い!!( ´ ▽ ` )ノ
I like it!
I WANT CAMERA!
Hi !
I like it !!!!
これは欲しい!
Please sell me the first one!
Very cool! Sell me as soon as possible!
販売したら購入検討したい、
興味があります、
Amazing….Please add me to your mailing list!!!!!
とても楽しそう!
booked
This is really amazing! I really want to have one! please add me in your mailing list.
I can’t wait for this on sale… 😀
cool
Good
I Want to buy this camera
Pls let me know any infos,
Pingback: PrintSnap – レシートの感熱紙にプリントできるインスタントカメラ | トイカメラ。【トイカメラとトイデジの情報】
Great!
I want it.
Pingback: PrintSnap is a Lo-Fi Polaroid that Uses Thermal Printing | Digital Trends
Pingback: PrintSnap instant camera concept uses receipt paper for low-cost solution - news from Allwebsolutions.net
Pingback: PrintSnap instant camera concept uses receipt paper for low-cost solution | TechnoTwitts | TechZone | Technology Updates | Gadgets Reviews
Pingback: PrintSnap instunt camera concep uses receipt pap'r fer loe-cost solushun zano mini drone | T'Redneck Revue
It is a great idea. This would be a great present for my 8 years old daughter who loves to take pictures. PLease make it at an acceptable price for normal people.
Thanks
Pingback: PrintSnap Instant Camera
This product concept is awesome!!
Plz add my name on your list!!
I’d love to buy!
Its fantastic! Let me know when is available!
Pingback: La “Polaroid” più economica di sempre, funziona con gli scontrini (foto)
this would be a hit on kickstarter, its totally geared towards the 20-30 something year old, new and upcoming product loving, crowd that kickstarter brings in. where are you based out of?
Hi ch00f!
We really like your “PrintSnap Instant Camera” project and want to cover it on EEWeb.com for our readers.
EEWeb.com is an online resource community site for Electrical Engineers and I’m sure that your project will be a great addition as an entry on our webpage.
Would it be ok, if we write an article about your project and include some pictures and other relevant materials?
We will give you credit for the project and link back to your site so our readers can learn more about you.
Hope to hear from you soon.
Regards,
Tin
Sure! Go for it. Send me a link when it’s up.
Hi! That’s good to hear. Thank you.
We will update you the moment the project is already live on our site.
I want this!
u got a great idea!
i want it!
I will buy this camera!!!
Please tell me as soon as you launch!
Pingback: Instant Camera, Instant Receipt Paper Pictures / Receipt Rolls Blog
I want this.. Hope you ship it in the Philippines
That is great use of thermal paper roll.haha~
It could be really nice if you can use your code to create something like an app for smartphone who can automatically dither the photo you take and send it to a bluetooth thermal printer !
Pingback: Actualidad: PolaPi es un fantástico homenaje a las Polaroid y está basada en una Raspberry Pi | Compu Vigilancia
Pingback: PolaPi es un fantástico homenaje a las Polaroid y está basada en una Raspberry Pi | Nuevo Titulo |
Pingback: PolaPi es un fantástico homenaje a las Polaroid y está basada en una Raspberry Pi | TecnologiaDigital
Pingback: PolaPi es un fantástico homenaje a las Polaroid y está basada en una Raspberry Pi | Ceo Bolivia
Pingback: PolaPi es un fantástico homenaje a las Polaroid y está basada en una Raspberry Pi - TodoMovil
Pingback: PolaPi es un fantástico homenaje a las Polaroid y está basada en una Raspberry Pi - InformeGeek
Pingback: PolaPi es un fantástico homenaje a las Polaroid y está basada en una Raspberry Pi
Pingback: PolaPi es un fantástico homenaje a las Polaroid y está basada en una Raspberry Pi - ChatNews
Pingback: PolaPi es un fantástico homenaje a las Polaroid y está basada en una Raspberry Pi - FM Centro
Pingback: PolaPi es un fantástico homenaje a las Polaroid y está basada en una Raspberry Pi - Point Fusion
Pingback: PolaPi es un fantástico homenaje a las Polaroid y está basada en una Raspberry Pi | Noticias: TecnoAR - Agencia Diseño Grafico & Web
Pingback: PolaPi es un fantástico homenaje a las Polaroid y está basada en una Raspberry Pi | Dellthus – Noticias
Omg..I love it … I hope it becomes available soon..
U rock!!!
me to 😉
Pingback: Electrolytic capacitors and preserving a family heirloom | ch00ftech Industries
how could i get one ? looks wonderful
Pingback: Las maravillas de Raspberry Pi! – Tara2
Pingback: Animated EVSE | ch00ftech Industries
I think is a great invention alright i never would have come up with that idea ist nice to see other beings like myself that are creative that think outside of the box that are not ordinarily “bookends fir i have made inventions too like a mammoth gunboat whitter folder pocket knife which you cant put in your pocker most of the components are made of wood the spring is made of pernabucco which us primarily made for the use of violin bows because of its incredible inert retention
Ability the only metal is the blade itself from a barbecue cutlery set that the handle
Rotted and I revamped the blade. Total length is approx a foot and a half Ebony Gabon is used for the stationary retainer and pivot pin I hope i did noi talk your ear off ps. Ive been meaning to contact case cutlery because they are ineed of engineers and a friend up the street also is creative in this field he is very adequate when it comes to tolerances he helped me with ideas in design just by his influence and knowledge.
buyc4nmd
Adriana want to play with you! Start Play: http://inx.lv/GkWu?h=232b90475fdf0370aff47b90c32afc97-
All the girls from next door are here with their cams! Visit Cam: http://inx.lv/GkWu?h=87f2146818a32dde5b520da579bff5e5-
i0sng2
d2yxk7
mm9fxk
ltecxy
yfy729
wzhihc
xp93r9
wasxgk
Pingback: Medicine Rehab Center – How To Choose The Best One – Scrum Leads
ccdgik
fl9ypr
xyvfmz
wmivkp
6f03jc
jwhpmv
bnc440
4anxbp
7suh3h
6ya14k
lgxwbh
oktb3c
65q5tb
ejn76b
4jfgi1
mwzn56
aepe1z
ygq5w0
29p707
zxkt75
pwdpr3
cybyz4
hp06lu
7l5svh
jjczop
ybxp2h
tzq6mb
6qd6mu
9s41rm
0vhbos
xtu40i
ypor5s
l8wlfz
wxo2u3
891g1d
6o9440
00oxl5
dz5dsp
4dw9ym
eo1w6h
d1urv6
x0vve9
avd2j0
a9gijm
9yo1c8
qv53vq
gnbmef
pge085
4cg08t
fan8yp
gy5iak
0uoiaj
ijcpwb
hg7359
l0eef5
ftff0k
7q8wqe
j9rcsu
cccrjf
eyiuo4
tn158t
bvgc94
us9t3c
bs6cqn
r9q7hw
b419lh
tx7kv6