Web Browser Pushes Arduino’s Limits

arduino browser

Some projects that we build fulfill a genuine need for a new piece of hardware or software that will make life easier or fix a common problem. Other projects, on the other hand, we do just because it’s possible to do. [Gilchrist] has finished work on a project that fits squarely in the second category: a web browser that runs exclusively on an Arduino Uno with an ethernet shield.

The Arduino can serve plain-text web pages to an attached LCD and can follow hyperlinks. User input is handled by a small joystick, but the impressive part of the build is on the software side. The Arduino only has 2KB of RAM to handle web pages, and the required libraries take up 20KB of memory, leaving only about 12 KB for the HTML parser/renderer and the LCD renderer.

The Arduino browser is a work in progress, and [Gilchrist] mentions that goals for the project include more robustness to handle poor HTML (the Hackaday retro edition loads flawlessly though), a terminal, and WiFi capabilities. To that end, maybe a good solution would be using the new ESP8266 chip to keep things small and inexpensive?

21 thoughts on “Web Browser Pushes Arduino’s Limits

    1. I think they’re just trying to make sure their pages stay up high in Google for esp8266 related terms.

      Or maybe they’re just like me, in love with the idea of a $5 wifi module which could even be an all-in-one solution for some people now that they have GCC for it.

      I can’t really think of much to say about this project. I can’t personally think of any real use for it other than a ‘because I can’ reason.

      I figured I’d download the code and look through it to see how it works but I can’t seem to find any link. So i dunno. I guess all I can say is “Cool”.

    2. Those other HaDvertisments are pushing a certain reseller in HaD & staffs’ circle of “friends” who resell Chinese products at high mark-ups. Those products have more direct sources at a far cheaper price. I for one do not like this type of mentioning.

      The ESP8266 on the other hand have multiple suppliers on Chinese sites who are not likely to be related to HaD.

      1. I had to check the veracity of that out. – Aliexpress apparently has them for very close to half the price of that Seeed’s, and apparently with free shipping.

        Seed does supply a tutorial on their wiki, but perhaps they might want to do more to remain competitive. There is a lot they could do in the paperwork/proprietary scene to add value to their product bundle. E.g. get a type approval for a hardware combo from the US FCC, or write a more comprehensive set of example code for multiple uCs and then say that in order to use the code you have to buy the HW from them.

        Of course there will be people who use their code without paying. Some of those will be companies out to make a quick buck, even. However, then Seeed has a legal leverage on them.

        I’m unable to comment on the circle-of-friends bit aside from likening the accusation to #GamerGate.

    1. Less than 2KB is all there is available to parse and display HTML (in fact I only had about 900 bytes after the Ethernet and SD card libraries took their share). The flash RAM is only for program and static data storage. But yes, the wording is odd.

    2. There’s also 1KB of EEPROM that can be loaded with whatever you like. Also the standard ethernet shield comes with a micro-sd card slot that can be used in conjunction with the tinyfat library (say) to cache up to 2GB. Yes, you’d probably have to overlap the 512-byte sector buffer with other things in memory, but it’s certainly doable.

      If you really want to push the hardware to the limit then modify bootloader to allow the main program to reprogram Flash pages at runtime, like what the Gamebuino bootloader does (http://gamebuino.com), then build your project with a custom make file to strip out all those unnecessary libraries and suddenly you have heaps of available on-chip storage.

      1. If you’re paging code in and out of the AVR’s flash you may hit it’s endurance limit rather quickly. IIRC it’s only guaranteed for 100,000 writes (though a million won’t usually kill it).

  1. I thought this weekend “could I put a simple HTML parser to display text webpages on my microview” and concluded there just wasn’t enough RAM with the frame buffer.

    I assume he has an LCD which doesn’t need a buffer in the micro’s RAM. since its showing colour (which is very impressive)!

  2. I guess I might not be getting the big Picture, or seeing alternatives, but I find this sort of Project to be quite useful. I can think of any number of Projects where I might have a central database and want to offer HTML based info for remote nodes. This would allow exactly that and with the Advantage over *plain text* that it can have Basic Markup and page formatting. Certainly it isn’t ideal for *Surfing the web*, but for example I have a pretty big stash of parts that I’ve been meaning to catalog. Something like this would work great as a *lookup* device as to what the specs are, and more importantly (for me) which Container it is in. Conversely one could type in the number of the Container and see all the (possibly hundreds) of parts contained therein.
    Well done, I say!

  3. Excellent! I look forward to porting it to the olduino (retro computer in arduino form factor). I have up to 64K of flat ram so I hope to avoid caching. How much stuff do you end up spilling to the SD card?

    Because I’m working in C rather than C++ I end up pulling libraries apart to use thee guts. For the SD card I used bits of tinyfat – did you look at that?

    I found that the SD card did not always release MISO unless I reset it, I ended up putting a 1k resistor on its MISO so the ethernet could shout it down. I thought it might be my software butchery but It sounds like your having similar issues.

  4. I didn’t bother reading the comments to see if someone else mentined this but 2kb flash – 20kb of libs = -18 kb. Im sure most ppl know that a “3” was omitted but perhaps we should fix that before any flame ensues

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.