Arduino and other prototyping toolkits have lowered the burden of creating physical computing devices that utilize microcontrollers (or tiny computers), sensors, and actuators. Increasing numbers of microcontrollers and tiny computers (e.g.Intel Edison) are capable of running dynamically-typed languages such as JavaScript. Meanwhile, in order to create practical IoT applications, software engineers face difficulties inherent to their physical nature. Designing enclosures is one such case.
There are tons of tutorials for creating physical prototypes, but they typically advocate putting microcontrollers on breadboards and connecting them to modules with jumper wires. Such prototypes are too fragile to test the usability in realistic situations. To create more stable and usable prototypes, programmers usually need to learn computer-aided design (CAD) tools and create enclosures from scratch that host microcontrollers and other modules.
f3.js is an integrated development environment with which a JavaScript programmer can write a single codebase for simultaneously controlling microcontrollers and specifying the device enclosure layout. The name f3.js stands for Form follows function() for JavaScript. The single codebase is called IoT content that defines every aspect of physical computing devices. f3.js is a WIDE) that lowers the burden of creating IoT content on the web.
f3.js is designed to work on the latest browser with JavaScript enabled. We test f3.js in the following environments:
In order to transfer applications to microcontrollers and tiny computers, PC (Windows 7, 8.1, 10) and Mac (Mac OS X) are needed.
f3.js can be used to develop JavaScript-based applications for the following microcontrollers and tiny computers:
f3.js supports modules (sensors and actuators) with drivers distributed as npm packages. Currently, 0 modules are supported. (You can add support for more modules!)
f3.js produces PDF files that define layouts of hardware modules. We test printing the PDF files with the following laser cutters:
We are a small team in Japan's national research institute, doing research that enables various kinds of people (e.g. programmers and designers) to create, customize, and utilize IoT content.
f3.js is developed with love, TypeScript, and the following libraries and tools.