DevHeads IoT Integration Server

DII

DevHeads IoT Integration Server

The DevHeads IoT Integration Server accelerates technology engineering by helping pro devs learn, share and collaborate.

Join

seeking-collabs

🪲-firmware-and-baremetal

📦-middleware-and-os

📡-edge-networking

🟩-pcb-and-analog

jobs

☁-iot-cloud

✅-code-review

devheads-feed

general-dev-chat

MPLAB VSCode extension! official announcement by Microchip

The VS Code extensions merge the capabilities of MPLAB X IDE with the flexibility of VS Code to create a more seamless and efficient development environment for both new and existing customers. These products are being released under an early access program to provide the essential tools to customers quickly. At the same time, the Microchip team continues to refine the extensions based on user feedback. Some of the benefits of using VS Code are: - speed, - not language or vendor-specific,...
No description

Building a Ground station for LoRa Satellites

The arrival of small satellites that used LoRa for telemetry data has meant that less technically qualified persons, with a very low budget, can receive their signals. Thanks to TinyGS, there is now an open network of distributed ground stations, and more stations can be built to increase their coverage. The project presented here is a reasonably robust, dust-resistant and waterproof implementation of TinyGS ground station, using commercial off-the-shelf components. Ideal for outdoor usage. https://hackernoon.com/building-a-ground-station-for-lora-satellites...

Ultra Compact LiDAR Distance Meter/Range Finder

The Ultra Compact LiDAR Distance Meter/Range Finder is a tiny device with a 0.49-inch OLED display, micro battery, and Xiao ESP32 microcontroller. It uses a VL53L0X TOF-based LiDAR sensor for precise distance measurement. Components: ➡️ Xiao ESP32C3 with battery management ➡️ 0.49-inch OLED display (64x32 pixels)...

LVGL with ESP32 TFT LCD Touchscreen Display –Arduino IDE

In this guide, you'll learn how to use LVGL (Light and Versatile Graphics Library) with a 2.8-inch TFT LCD touchscreen and an ESP32 board in the Arduino IDE. It explains wiring the display to the ESP32, understanding SPI communication, and using the ILI9341 driver. You'll explore LVGL features like creating GUIs with buttons, sliders, images, and animations, and gain skills for developing interactive displays for microcontroller projects. ⛓ More information: https://randomnerdtutorials.com/lvgl-esp32-tft-touchscreen-display-ili9341-arduino/...

How to Write Parallel Multitasking Applications for ESP32 using FreeRTOS & Arduino

The below ublication showd how to take advantage of the multitasking features of FreeRTOS for ESP32 dual-core SoC using your favorite Arduino IDE. Use our examples to learn about mutex, semaphore and critical section code. https://www.circuitstate.com/tutorials/how-to-write-parallel-multitasking-applications-for-esp32-using-freertos-arduino/...

How to use ESP32 Dual Core with Arduino IDE

The ESP32 comes with 2 Xtensa 32-bit LX6 microprocessors: core 0 and core 1. So, it is dual core, the below links demonstrates how to use the two cores in simple blink app using freertos. https://randomnerdtutorials.com/esp32-dual-core-arduino-ide/...

DIY ESP32-Based Smartwatch with LiDAR and Wi-Fi Scanning

This project features the ESP32 microcontroller, integrating advanced environmental monitoring and IoT control. It stands out by interacting with various smart devices, offering practicality and innovation for enthusiasts. Smartwatch Features: ➡️ High precision timekeeping. ➡️ Motion-activated....

Singaporian Researchers developed a flexible battery for smart contact lenses

Smart contact lenses could be powered by a flexible battery as thin as a human cornea that stores electricity when immersed in saline solution. 🇸🇬 ⛓ More information: https://www.theengineer.co.uk/content/news/ntu-singapore-team-develops-flexible-battery-for-smart-contact-lenses/...

Qt vs. Flutter: Which Framework is Right for Your Embedded Project?

Choosing between Qt and Flutter for embedded project development depends on specific project needs: Qt: Based on C++, known for native performance and efficiency, ideal for complex, high-performance applications with advanced functionalities and direct hardware access, such as medical devices and low-end hardware without GPU support. Flutter: Emphasizes rapid development and cost-effectiveness using Dart, with features like hot reload for quick iterations and a single codebase for consistent UI across platforms. ...

New Embedded Programming Language by Apple

Last week at WWDC 2024, Apple unveiled Embedded Swift, a new programming language for resource-limited systems. This variant of Swift is designed for microcontrollers like the ESP32, Raspberry Pi RP2040, and STM32, enabling IoT and low-power device development with Swift's familiar syntax. Key features include: ➡️ Support for value and reference types, closures, optionals, and error handling ➡️ Optimization for microcontroller environments...

DIY haptic SmartKnob: BLDC motor + round LCD

This innovative input device, SmartKnob, is an open-source input device with software-configurable endstops and virtual detents. It includes haptic touch feedback and a round LCD, utilizing a brushless gimbal motor and magnetic encoder for closed-loop torque feedback. Powered by an ESP32, it integrates a TMC6300 BLDC motor driver, HX711 strain gauge ADC, and VEML7700 ambient light sensor. Key Features: ➡️ 240x240 round LCD with 39.5mm watch glass...

Strategies for Handling Padding in C Programming

In C programming, padding refers to extra memory added between structure members to align data for efficient CPU access. The compiler adds padding to align members to their natural boundaries. For example, in a 32-bit system: ```C struct foo { uint32_t i;...

What is the role of a bootloader in embedded systems programming?

A bootloader is a crucial piece of software in embedded systems, responsible for preparing the device to run its main application. This involves initializing hardware, setting up memory, and loading the application code from storage (such as flash memory) into RAM. Beyond these basic functions, bootloaders can also handle firmware updates, debugging, and communication with other devices. Types of Bootloaders There are two primary types of bootloaders: primary and secondary. The primary bootloader is the first code that runs when a device powers on or resets, typically stored in read-only memory (ROM) or a protected flash memory area. Its primary functions include basic hardware initialization and then transferring control either to a secondary bootloader or directly to the application code. Secondary bootloaders come into play after the primary bootloader, residing usually in flash memory or external storage. They are responsible for more complex tasks such as loading the application code into RAM, verifying the integrity and digital signatures of the code, and possibly offering options for different firmware versions to the user....

Apple Intelligence: Apple’s New Generative AI Unveiled

At WWDC 2024, Apple introduced Apple Intelligence, a generative AI integrated across its ecosystem for personalized experiences with a focus on privacy. "Personal intelligence is the next big step for Apple," said Tim Cook. SVP Craig Federighi noted that most processing is local on Apple silicon, with Private Cloud Compute for cloud tasks. Key highlights:...

5 best practices for writing interrupt service routines

Interrupt Service Routines (ISRs) are crucial for embedded systems, but poorly designed ISRs can cause race conditions, slow response times, and high CPU usage. To create effective ISRs, keep them brief and efficient to minimize CPU cycles and avoid timing issues. Avoid calling functions within ISRs to reduce execution time and maintain stability. Use static compilation, preprocessors, and inline functions to optimize ISR code while preserving modularity. Delegate heavy tasks to other threads using flags, queues, and proper synchronization for efficient and responsive ISRs. Declare shared variables as volatile to prevent compiler optimizations that could cause unpredictable behavior. Customize default ISR handlers to set diagnostic flags instead of entering infinite loops to handle unexpected interrupts safely. Following these practices improves the performance and reliability of embedded systems....