Embedded Angular

screenshot of Embedded Angular

This project is a boilerplate for building angular apps that can interface with hardware on emmbedded devices like raspberry pi's.

Overview

The Embedded Angular project presents a robust boilerplate designed specifically for creating devices that require low-level control while offering a seamless Angular front-end interface. Utilizing a Raspberry Pi Zero, this setup allows users to serve an Angular application through a NodeJS server that communicates with an Arduino via Serial. This innovative approach not only facilitates real-time data transmission through web sockets but also maintains a history of messages by storing them in JSON files, ensuring that all clients reflect the same system state.

This project stands out by combining various components to form a comprehensive end-to-end solution, ideal for developers looking to explore IoT applications. The combination of Raspberry Pi, Arduino, and NodeJS creates a versatile platform for building sophisticated control systems with a user-friendly interface.

Features

  • Raspberry Pi Access Point: Sets up the primary Raspberry Pi WiFi as an access point with a built-in DHCP server, enabling easy device connectivity.
  • WiFi Bridging: Bridges connections between the primary and secondary WiFi networks (if available), ensuring internet access through the access point.
  • Angular Application Serving: Utilizes ExpressJS to serve an Angular application, creating a responsive and dynamic front-end experience.
  • File System Access: Accesses and manipulates the Raspberry Pi file system using Node's fs module, allowing for data management directly from the server.
  • External Device Communication: Employs the NPM package 'serialport' for seamless communication with external devices, such as Arduino.
  • Real-Time Updates: Supports multiple connected devices simultaneously, providing real-time updates across all clients through websockets.

This well-rounded project lays a solid foundation for anyone interested in developing advanced, interactive control systems using modern web technologies.