Jump to content
Electronics-Lab.com Community

Search the Community

Showing results for tags 'neopixel'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Electronics Forums
    • Projects Q/A
    • Datasheet/Parts requests
    • Electronic Projects Design/Ideas
    • Power Electronics
    • Service Manuals
    • Theory articles
    • Electronics chit chat
    • Microelectronics
    • Electronic Resources
  • Related to Electronics
    • Spice Simulation - PCB design
    • Inventive/New Ideas
    • Mechanical constructions/Hardware
    • Sell/Buy electronics - Job offer/requests
    • Components trade
    • High Voltage Stuff
    • Electronic Gadgets
  • General
    • Announcements
    • Feedback/Comments
    • General
  • Salvage Area

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Website URL


Yahoo


Skype


Location


Interests

Found 2 results

  1. Hello tech adventurers! 🧑‍🔧👩‍💻 If you're here, you're probably itching to light up the world, or at least your room, with some rainbow colors! And how? By combining a motion sensor (IMU), a tiny powerhouse microcontroller, and some shiny NeoPixels. 🌈 Buckle up—it's going to be fun and flashy (literally)! What You'll Need 🛠️ Let's kick off by grabbing all the cool gear for this project. Make sure your toolbox is stocked with: 1. Seeed Studio Xiao nRF52840 Sense ⚡ This tiny microcontroller is a superstar! It’s Bluetooth-capable, runs on a Cortex-M4 processor, and is small enough to get lost in your pocket! Not that you'd want that... 🙄 Why this one? It's packed with an onboard microphone, IMU (Inertial Measurement Unit), and Bluetooth LE, which means we’re going wireless, baby! 🎤🏃‍♂️ 2. NeoPixel LED Panel 💡 These are individually addressable RGB LEDs that can light up in any color your heart desires. We’ll be using these bad boys to visualize our IMU's data. They’re essentially the party piece of this project! 🎉 3. IMU (Inertial Measurement Unit) 📐 Already built into the Xiao nRF52840 Sense! This sensor detects motion, so you can do cool stuff like control your NeoPixels based on tilts and shakes. Think of it like a magic wand for LEDs. 4. Jumper Wires, Soldering Kit, and USB-C Cable 🧰 You know the drill. We need these to hook up everything without too much of a spaghetti mess on your desk. Get PCBs for Your Projects Manufactured You must check out PCBWAY for ordering PCBs online for cheap! You get 10 good-quality PCBs manufactured and shipped to your doorstep for cheap. You will also get a discount on shipping on your first order. Upload your Gerber files onto PCBWAY to get them manufactured with good quality and quick turnaround time. PCBWay now could provide a complete product solution, from design to enclosure production. Check out their online Gerber viewer function. With reward points, you can get free stuff from their gift shop. Also, check out this useful blog on PCBWay Plugin for KiCad from here. Using this plugin, you can directly order PCBs in just one click after completing your design in KiCad. Step 1: Flashing the Xiao nRF52840 Sense 🚀 Getting it Talking! Start by setting up your development environment. You’ll want to upload the code to your Xiao, but first, you need to flash the microcontroller with the right firmware. Install the necessary tools: Head to Seeed Studio and grab their official setup guide for the Xiao nRF52840 Sense. You’ll need Arduino IDE and Xiao's board libraries. Piece of cake, right? 🍰 Pro Tip: When uploading code, if your microcontroller throws a tantrum and doesn’t show up on your PC, double-tap the reset button to enter bootloader mode. It’s like giving it a calming tea break. 🫖 Step 2: Wiring it up 🧑‍🔧 Time to bring these components together like a superhero team-up! 🦸‍♂️ Connect the NeoPixel to the Xiao: Power: Connect the VCC pin of the NeoPixel to the 3.3V pin of the Xiao. Ground: GND to GND (it’s like their secret handshake 🤝). Data: Hook the DIN (data in) pin from the NeoPixel to Pin D6 on the Xiao. Voilà, you’ve wired up your light show! Now, don’t plug it in just yet. Patience, young padawan. 🧘‍♂️ Step 3: Code Time! ⌨️👾 We’re diving into the fun part—the code! This is where the Xiao's IMU will tell the NeoPixels how to light up depending on the motion. Setting Up Libraries: Make sure you have these libraries installed in your Arduino IDE: Adafruit NeoPixel (to control those flashy lights) 🌈 Wire.h (for I2C communication) Seeed nRF52 board libraries (to work with Xiao) Adafruit Sensor for handling IMU data. #include <Adafruit_NeoPixel.h> #include <LSM6DS3.h> #include <Wire.h> #define PIN 0 #define NUMPIXELS 64 Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); LSM6DS3 myIMU(I2C_MODE, 0x6A); // I2C device address 0x6A float aX, aY, aZ, gX, gY, gZ; const float accelerationThreshold = 2.5; // threshold of significant in G's const int numSamples = 119; int samplesRead = numSamples; void setup() { Serial.begin(9600); while (!Serial); pixels.begin(); pixels.show(); // Initialize all pixels to 'off' // Call .begin() to configure the IMU if (myIMU.begin() != 0) { Serial.println("Device error"); } else { Serial.println("aX,aY,aZ,gX,gY,gZ"); } } void loop() { // wait for significant motion while (samplesRead == numSamples) { // read the acceleration data aX = myIMU.readFloatAccelX(); aY = myIMU.readFloatAccelY(); aZ = myIMU.readFloatAccelZ(); // sum up the absolutes float aSum = fabs(aX) + fabs(aY) + fabs(aZ); // check if it's above the threshold if (aSum >= accelerationThreshold) { // reset the sample read count samplesRead = 0; break; } } // check if all the required samples have been read since // the last time the significant motion was detected while (samplesRead < numSamples) { // read the acceleration and gyroscope data aX = myIMU.readFloatAccelX(); aY = myIMU.readFloatAccelY(); aZ = myIMU.readFloatAccelZ(); gX = myIMU.readFloatGyroX(); gY = myIMU.readFloatGyroY(); gZ = myIMU.readFloatGyroZ(); samplesRead++; // print the data in CSV format Serial.print(aX, 3); Serial.print(','); Serial.print(aY, 3); Serial.print(','); Serial.print(aZ, 3); Serial.print(','); Serial.print(gX, 3); Serial.print(','); Serial.print(gY, 3); Serial.print(','); Serial.print(gZ, 3); Serial.println(); // Visualize the IMU data on the NeoPixel matrix visualizeIMU(aX, aY, aZ, gX, gY, gZ); if (samplesRead == numSamples) { // add an empty line if it's the last sample Serial.println(); } } } void visualizeIMU(float aX, float aY, float aZ, float gX, float gY, float gZ) { // Map the acceleration and gyroscope data to colors uint8_t red = map(fabs(aX) * 100, 0, 250, 0, 255); uint8_t green = map(fabs(aY) * 100, 0, 250, 0, 255); uint8_t blue = map(fabs(aZ) * 100, 0, 250, 0, 255); // Set all pixels to the mapped color for (int i = 0; i < NUMPIXELS; i++) { pixels.setPixelColor(i, pixels.Color(red, green, blue)); } pixels. Show(); } What's Happening in the Code? 🤔 The IMU is your sensor. We’re reading acceleration data on all three axes: X, Y, and Z. The NeoPixels are the output. We map the motion detected by the IMU into a color value (RGB). Mapping Motion to Color: We sum up the absolute values of the accelerations to determine how hard you shake or tilt the Xiao. More movement = crazier colors! 🎨 Step 4: Test, Shake, and Dance! 🕺 Once your code is uploaded, unplug the USB and plug it back in (just to give your Xiao a little reset!). Now the magic begins. 🤹‍♂️ Testing the Tilt: Pick up your Xiao nRF52840 and gently tilt it. You’ll see the NeoPixels lighting up in different colors. Shake it a bit more—see the color change? Now you’re in charge of the show! If everything worked out, congrats, you’re now officially a NeoPixel DJ! 🎧🎶 Want to sync it with music and start a rave? Go ahead! The only limit is your creativity (and the brightness tolerance of your neighbors... 😅). Step 5: Going Wireless with Bluetooth! 📡 Now let’s take it one step further. What if you could control this with your phone? Here’s where the Bluetooth capability of the Xiao nRF52840 Sense comes into play. Using Bluetooth Low Energy (BLE), you can send motion data directly from your Xiao to an app on your phone—or even control the colors remotely! The Xiao makes it super easy to set up BLE communication, and you can find libraries in Arduino to help with this. Conclusion: Welcome to the Sparkle Party! 🎆🎉 Now that you've brought your NeoPixels to life with motion-sensing IMU data, it's time to celebrate! This project opens up a world of possibilities—from creating interactive lighting for your room, and costumes, or even building motion-reactive wearables. The only thing left is to challenge yourself—can you use this setup to control music lights at a party? Sync with game controllers? Make a dancing robot? The world’s your oyster, and the lights are your magic wand! 🧙‍♂️✨ Happy making, and may your LEDs forever shine bright!
  2. Things used in this project Hardware components Raspberry Pi 4 Model B × 1 Adafruit NeoPixel Ring: WS2812 5050 RGB LED × 1 Software apps and online services Node-RED How to Control NeoPixel LEDs with Node-RED and Raspberry Pi NeoPixel LEDs are a popular type of addressable RGB LEDs that can create amazing effects and animations. They are easy to control with a microcontroller like Arduino, but what if you want to use them with a Raspberry Pi? In this article, we’ll show you how to use Node-RED, a graphical programming tool, to control NeoPixel LEDs with a Raspberry Pi. Get PCBs For Your Projects Manufactured You must check out PCBWAY for ordering PCBs online for cheap! You get 10 good-quality PCBs manufactured and shipped to your doorstep for cheap. You will also get a discount on shipping on your first order. Upload your Gerber files onto PCBWAY to get them manufactured with good quality and quick turnaround time. PCBWay now could provide a complete product solution, from design to enclosure production. Check out their online Gerber viewer function. With reward points, you can get free stuff from their gift shop. What You’ll Need To follow this tutorial, you’ll need the following components: A Raspberry Pi board with Raspbian OS installed A WS2812B NeoPixel LED strip Some jumper wires You’ll also need to install Node-RED and the node-red-node-pi-neopixel node on your Raspberry Pi. We’ll explain how to do that later. Wiring the NeoPixel LED Strip The NeoPixel LED strip has three wires: 5V, GND, and DATA. The 5V and GND wires provide power to the LEDs, while the DATA wire carries the signal that controls the color and brightness of each LED. The Raspberry Pi can provide 5V and GND from its GPIO pins and connect the DATA pin to GPIO 18. The reason we use GPIO 18 is because it supports PWM (pulse-width modulation), which is needed by the node-red-node-pi-neopixel node. You can use other PWM-enabled GPIO pins, but you’ll need to change the settings accordingly. Installing Node-RED and node-red-node-pi-neopixel Node-RED is a graphical programming tool that lets you create applications by connecting nodes that perform different functions. You can install Node-RED on your Raspberry Pi by following this guide. To control the NeoPixel LEDs with Node-RED, you need to install a special node called node-red-node-pi-neopixel. This node can drive a strip of NeoPixel or WS2812 LEDs from a Raspberry Pi. You can install it by running the following command. npm install node-red-node-pi-neopixel You also need to install the Neopixel python driver, which is used by the node-red-node-pi-neopixel node. The easiest way to do that is to use the Unicorn HAT drivers install script, which you can run with this command: After installing node-red-node-pi-neopixel, you need to restart Node-RED for the changes to take effect. Creating a Node-RED Flow Now that everything is set up, you can create a Node-RED flow to control the NeoPixel LEDs. A flow is a collection of nodes that are connected by wires. Each node has an input and an output and can perform some action or function. To create a flow, you need to open the Node-RED editor in your web browser. By default, it runs on port 1880 of your Raspberry Pi’s IP address. For example, if your Raspberry Pi’s IP address is 192.168.1.3, you can access the Node-RED editor at http://192.168.1.3:1880. In the editor, you’ll see a palette of nodes on the left side, a workspace in the middle, and an info panel on the right side. You can drag nodes from the palette to the workspace and connect them by dragging wires from one node’s output to another node’s input. Here’s an example of a neo-pixel flow that controls the LEDs based on our user inputs. To create this flow, you need to do the following steps: Drag Copy and import the below JSON node-red flow. Change the LED count JSON Files: [ { "id": "60627e22237dc214", "type": "tab", "label": "Flow 2", "disabled": false, "info": "", "env": [] }, { "id": "f0395033145e84d7", "type": "ui_colour_picker", "z": "60627e22237dc214", "name": "Color Picker", "label": "COLOR PICKER", "group": "cd687a95.00e108", "format": "rgb", "outformat": "string", "showSwatch": true, "showPicker": true, "showValue": true, "showHue": false, "showAlpha": false, "showLightness": true, "square": "false", "order": 1, "width": 0, "height": 0, "passthru": true, "topic": "", "topicType": "str", "x": 490, "y": 380, "wires": [ [ "f6f366218f267026" ] ] }, { "id": "f6f366218f267026", "type": "function", "z": "60627e22237dc214", "name": "Set Color", "func": "var count = global.get('count')||0;\nmsg.payload = msg.payload.replace(/[rgb()\\s]/g,\"\");\nif(count===0){\n msg.payload = msg.payload;\n}\nelse{\n msg.payload = (count-1) + \",\" + msg.payload;\n}\n\nreturn msg;", "outputs": 1, "noerr": 0, "x": 680, "y": 380, "wires": [ [ "b4a4a424433ab3a2" ] ] }, { "id": "cc6b4172d7245dfd", "type": "function", "z": "60627e22237dc214", "name": "Rainbow Effect", "func": "var numberOfLEDs = 8;\nvar i;\nvar j;\n\nif (msg.payload==1)\n{\n for (i = 0; i < 255; i++) {\n\n for (j = 0; j < numberOfLEDs; j++) {\n\n var pos = 0;\n pos = Math.round(((j * 255 / numberOfLEDs) + i)) & 255;\n\n if (pos < 85) {\n var red = pos * 3;\n var green = 255 - pos * 3;\n var blue = 0;\n }\n else if (pos < 170) {\n pos -= 85;\n var red = 255 - pos * 3;\n var green = 0;\n var blue = pos * 3;\n }\n else {\n pos -= 170;\n var red = 0;\n var green = pos * 3;\n var blue = 255 - pos * 3;\n }\n var setColor = j + ',' + red + ',' + green + ',' + blue;\n node.send({ payload: setColor });\n }\n }\n}\nelse { \n msg.payload = \"0,0,0\"\n}\n\nreturn msg;\n\n\n", "outputs": 1, "timeout": "", "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 700, "y": 440, "wires": [ [ "b4a4a424433ab3a2" ] ] }, { "id": "b4a4a424433ab3a2", "type": "rpi-neopixels", "z": "60627e22237dc214", "name": "Neo Pixel", "gpio": "18", "pixels": "8", "bgnd": "", "fgnd": "", "wipe": "60", "mode": "pixels", "rgb": "rgb", "brightness": "100", "gamma": true, "x": 900, "y": 420, "wires": [] }, { "id": "125d1e66ad34b180", "type": "ui_switch", "z": "60627e22237dc214", "name": "", "label": "Rainbow switch", "tooltip": "", "group": "cd687a95.00e108", "order": 3, "width": 0, "height": 0, "passthru": true, "decouple": "false", "topic": "topic", "topicType": "msg", "style": "", "onvalue": "true", "onvalueType": "bool", "onicon": "", "oncolor": "", "offvalue": "false", "offvalueType": "bool", "officon": "", "offcolor": "", "animate": false, "x": 500, "y": 440, "wires": [ [ "cc6b4172d7245dfd" ] ] }, { "id": "cd687a95.00e108", "type": "ui_group", "name": "Neo Pixel Controller", "tab": "aa146f4d.b53ca", "order": 1, "disp": true, "width": "6", "collapse": false }, { "id": "aa146f4d.b53ca", "type": "ui_tab", "name": "Demo Lab", "icon": "dashboard", "order": 1, "disabled": false, "hidden": false } ] Neo Pixel Node Setup: Select the PIN and change the LED count as per your neo-pixel configuration. Deployment Setup: Next hit the deployment button and navigate to the UI page of the Node-red with /ui in the node-red page URL. You can select the LED color via the neo-pixel circle. Also, if you toggle the rainbow switch it will apply the rainbow effect to the ring. Conclusion In this article, I have shown you how to control NeoPixel LEDs with Node-RED and Raspberry Pi.
×
  • Create New...