Posts with «esp32» label

BH1750 Sensor: Measuring Lux with Arduino and the GY-302

The BH1750 sensor converts light intensity into a digital value and makes it available on the I2C bus. Its measurement range goes from 1 to 65,535 lux. On the GY-302 breakout the sensor comes ready to use with Arduino, ESP32 and other boards. AdriRobot tried it with an Arduino UNO and writes about it on his blog.

What the BH1750 sensor measures

The lux is the unit of measurement for illuminance: it corresponds to one lumen per square metre. It therefore describes the light falling on a surface, evaluated as the human eye perceives it. For reference, light reflected by a full Moon is about 1 lx, a bright office is about 400 lx, and sunlight ranges between 32,000 and 100,000 lx.

Measurement modes and resolution

The BH1750 works in six modes, divided into two groups: continuous measurement and single measurement. In continuous mode the sensor detects light without stopping. In single mode it takes one measurement and then shuts down, so it must be reconfigured before the next reading. The library used in the article does this automatically.

Each mode offers three levels of precision:

  • low resolution: 4 lx precision and 16 ms measurement time;
  • high resolution: 1 lx and 120 ms;
  • high resolution 2: 0.5 lx and 120 ms.

By default the library selects continuous high resolution. In low and high resolution modes the maximum value is 54,612.5 lx, while in high resolution 2 it stops at 27,306.25 lx. In practice the sensor returns a 16-bit integer, which the library converts into lux by dividing it by 1.2. A result of -1 means no valid data arrived, while -2 signals an unconfigured device.

You can also change the time interval in which the sensor counts light, through the MTreg register. The value ranges from 32 to 254 and the default is 69.

The GY-302 module: power, pinout and address

The GY-302 breakout with the BH1750 sensor and the pins to be soldered (photo: AdriRobot)

On the GY-302 the sensor is joined by a 3.3 V LDO regulator, marked 662K, and its capacitors. The module therefore accepts Arduino’s 5 V on the VCC pin. The regulator supplies up to 250 mA and withstands a maximum of 6.5 V at its input. On the SCL and SDA lines there are also two 4.7 kΩ pull-up resistors. The breakout is sold as a light intensity sensor.

The connector has five pins: VCC, GND, SCL, SDA and ADDR. The last one is used to choose the I2C address and comes into play when several BH1750 sensors share the same bus. With ADDR at a low level the address is 0x23, with ADDR high it becomes 0x5C. On the module tested the pin is tied to ground through a 4.7 kΩ resistor, so the sensor responds at 0x23.

  • measurement range: from 1 to 65,535 lux;
  • supply voltage: from 3 to 5 V;
  • operating temperature: from -40 to +85 °C;
  • dimensions: 18.5 × 13.9 × 2.5 mm, connectors excluded.

Connecting it to an Arduino UNO and an OLED display

Basic connection between Arduino UNO and GY-302 (diagram: AdriRobot)

For the first test you only need an Arduino UNO board, the GY-302 module and a few male-to-female jumper wires. VCC and GND go to the power supply, while SDA and SCL connect to Arduino’s I2C pins. Before uploading the sketch it is worth running the IDE’s i2c_scanner example: if the wiring is correct, the serial monitor reports a device at address 0x23.

The reading uses Christopher Laws’ BH1750 library, which is installed from the Library Manager together with the Wire library, already included in the IDE. The sketch reads the value every second and also writes it to the serial monitor.

The project is then completed with a 0.96-inch OLED display, 128×64 pixels, SSD1306 driver and I2C interface. The display responds at address 0x3C, so it shares the same bus as the sensor. The Adafruit SSD1306 and Adafruit GFX libraries are needed, and the lux meter shows the lux directly on the screen.

The lux meter with GY-302 and OLED display during the measurement (photo: AdriRobot)

Anyone who wants to see the BH1750 at work in a larger project can read the ESP32 weather station with a live web dashboard, which pairs it with a DHT22 and a BMP280.

Source: the original AdriRobot article also contains the complete schematic, the sketches and the test video.

Related products

The post BH1750 Sensor: Measuring Lux with Arduino and the GY-302 appeared first on Open Electronics.

Tiny, Hackable Telepresence Robot for under $100? Meet Goby

[Charmed Labs] are responsible for bringing numerous open-source hardware products to fruition over the years, and their latest device is an adorably small robotic camera platform called Goby, currently crowdfunding for its initial release. Goby has a few really clever design features and delivers a capable (and hackable) platform for under 100 USD.

Goby embraces its small size, delivering what its creators dub “tinypresence” — or the feeling of being there, but on a very small scale. Cardboard courses, LEGO arenas, or even tabletop gaming scenery hits different when experienced from a first-person perspective. Goby is entirely reprogrammable with nothing more than a USB cable and the Arduino IDE, while costing less than most Arduino starter kits.

Recharging happens by driving over the charger, then pivoting down so the connectors (the little blunt vampire fangs under and to each side of the camera) come into contact with the charger.

One of the physical features we really like is the tail-like articulated caster at the rear. Flexing this pivots Goby up or down (and can even flip Goby completely over), allowing one to pan and tilt the view without needing to mount the camera on a gimbal. It also comes into play for recharging; Goby simply moves over the disc-shaped charger and pivots down to make contact.

At Goby‘s heart is an ESP32-S3 and OmniVision OV2640 camera sensor streaming a live video feed (and driving controls) with WebRTC. Fitting the WebRTC stack onto an ESP32 wasn’t easy, but opens up possibilities beyond just media streaming.

Goby is set up to make launching an encrypted connection as easy as sharing a URL or scanning a QR code. The link is negotiated between bot and client with the initial help of an external server, and once a peer-to-peer connection is established, the server’s job is done and it is out of the picture. [Charmed Labs]’s code for this functionality — named BitBang — is in beta and destined for an open release as well. While BitBang is being used here to make it effortless to access Goby remotely, it’s more broadly intended to make web access for any ESP32-based device easier to implement.

As far as tiny remote camera platforms go, it might not be as small as rebuilding a Hot Wheels car into a micro RC platform, but it’s definitely more accessible and probably cheaper, to boot. Check it out at the Kickstarter (see the first link in this post) and watch it in action in the video, embedded just below the page break.

Upgraded Toy Guitar Plays Music

Getting the finishing details on a Halloween costume completed is the key to impressing friends and strangers alike on the trick-or-treat rounds. Especially when it comes to things like props, these details can push a good Halloween costume to great with the right touches. [Jonathan]’s friend’s daughter will be well ahead of the game thanks to these additions to a toy guitar which is part of her costume this year.

The toy guitar as it was when it arrived had the capability to play a few lackluster sound effects. The goal here was to get it to play a much more impressive set of songs instead, and to make a couple upgrades along the way as well. To that end, [Jonathan] started by dismantling the toy and investigating the PCBs for potential reuse. He decided to keep the buttons in the neck of the guitar despite their non-standard wiring configuration, but toss out the main board in favor of an ESP32. The ESP32 is tasked with reading the buttons, playing a corresponding song loaded on an SD card, and handling the digital to analog conversion when sending it out to be played on the speaker.

The project doesn’t stop there, though. [Jonathan] also did some custom mixing for the songs to account for the lack of stereo sound and a working volume knob, plus he used the ESP32’s wireless capabilities to set the guitar up as a local file server so that songs can be sent to and from the device without any wires. He also released the source code on the project’s GitHub page for anyone looking to use any parts of this project. Don’t forget there’s a Halloween contest going on right now, so be sure to submit the final version of projects like these there!

Hack a Day 26 Oct 00:00

Tidy POV Display Using The ESP32

Chinese Youtuber [corebb] presents the second version of his POV display. The earlier version used 5050-sized SMT addressable LEDs, which didn’t give great resolution, so he rev’d the design to use a much higher number (160 to be exact) of APA102 LEDs. These are 2mm on the side, making them a little more difficult to handle, so after some initial solder paste wobbles, he decided to use a contract assembly house to do the tricky bit for him. This failed as they didn’t ‘understand’ the part and placed them the wrong way around! Not to be deterred, he had another go with a modified solder stencil, and eventually got the full strip to light up correctly.

Based on an ESP32 (using the Arduino stack) and SDCard for control, and a LiPo cell charged wirelessly, the build is rather tidy. A couple of hall effect switches are mounted at the start of each of the two arms, presumably lining

Real-time video streaming? Check!

up with a magnet on the case somewhere, although this isn’t clear. The schematic and PCB appear to have been designed with JLCEDA, which is a repackaging of EasyEDA. We can see the attraction with the heavy integration of this with the JLC and LCSC services. It appears that he even managed to get streamed video working — showing a live video from a webcam — which is quite an undertaking to pull off when you think how much processing needs to happen in real-time. As he alludes to in the video, trying to increase the resolution beyond this point is not viable with the processing capability of the ESP32.

A resin-printed case finishes off the build, with a screw-thread mount added to the rear, to allow typical camera mounts to be used to hold the thing down. A smart move we think.

We love POV displays around here, this spherical POV display is especially fabulous, but you don’t need fancy hardware if you have a handy ceiling fan and a bit of protoboard spare.

Thanks to [mrx23dot] for the tip!

Hack a Day 24 Nov 00:00

Trigger Your Home Automation Routines With Home Buttons

Home automation systems are all well and good, so long as the person who built it all is around to drive it. Let’s face it, they’re quite often a complex web of interconnected systems, all tied to the specifics of one’s home — and someone less familiar with it all could get a little irritated if, on a chilly day, the interface to the boiler is via a Python script, and something won’t work. Just saying. Home Buttons by [Matej Planinšek] over on Hackaday.IO is a nicely polished project, which aims to take some of the hackiness out of such automation by providing a sleek front end to those automation routines, enabling anyone to rock on over and set one in action without hassle.

The PCB is based around the ESP32-S2-mini which deals with WiFi connectivity and integration with Home Assistant using the usual MQTT protocol. We expect integration with other flavors of home automation would not be difficult to achieve. The center of the unit holds a simple E-Ink display, for that low-standby power. Specifically, the unit chosen is a Good Display GDEY029T94 2.9″ which this scribe can confirm is easy to interface and pretty cheap to purchase from the usual Chinese online vendors. This was matched up with six clicky Alps SKRB-series low-profile tact switches, which sit on either side of the display, and corresponds to a flexure-type affair on the 3D printed front casing. Neat and simple.

The PCB design was provided in Altium format, which you can find on the project GitHub page. This shows a straightforward design, with a few nice little details here and there. The internally mounted 186550 cell is reportedly good for at least a year of operation, but when time, it can be charged via USB. A Xysemi XB8608AF (PDF) protection chip provides appropriate limiting for the 186550 cell, shielding it from the perils of overcharging, discharging, and whatnot. Not that that is likely in this current setup. A Sensiron SHTC3 humidity and temperature sensor is also in there, hanging off the I2C bus, which makes sense for this application.

Home Automation hacks are plenty on these pages, like this scroll-wheel interface, for instance. If all this stuff is looking quite overbearingly complicated to get into, how about starting with a Pico W?

Tiny Thin Client is Small But Compatible

We were impressed with [moononournation’s] tiny thin client project. It claims to use an Arduino, but as you might guess it is using the Arduino software along with a network-enabled microcontroller like an ESP32. The impressive part is that it is standards-compliant and implements VNC’s RFB protocol.

The original coding for RFB on Arduino is from [Links2004] and armed with that, the thin client is probably easier to create than you would guess. However, this project wanted to use a larger screen and found that it led to certain problems. In particular, the original code had a 320×240 display. This project was to use an 800×480 display, but with the limits on the ESP32, the frame rate possible would be under 7 frames per second. The answer was to combine a 16-bit parallel interface with better compression back to the VNC server.

The little keyboard is probably not very practical, but it is compact. That would be another easy thing to modify. Currently, the keyboard uses I2C, but it would be straightforward to change things up. This would be a worthy base to build a bigger project on top. A 3D printed enclosure would be nice, too.

We’ve seen a number of projects built around commercial thin clients. Some from defunct businesses are good sources for obscure parts, too.

Flip-Dot Oscilloscope is Flippin’ Awesome

Oscilloscope displays have come a long way since the round phosphor-coated CRTs that adorned laboratories of old. Most modern scopes ship with huge, high-definition touch screens that, while beautiful, certainly lack a bit of the character that classic scopes brought to the bench. It’s a good thing that hackers like [bitluni] are around to help remedy this. His contribution takes the form of what may be both the world’s coolest and least useful oscilloscope: one with a flip-dot display.

Yup — a flip-dot display, in all it’s clickedy-clacky, 25×16 pixel glory. The scope can’t trigger, its maximum amplitude is only a couple of volts, and its refresh rate is, well, visible, but it looks incredible. The scope is controlled by an ESP32, which reads the analog signal being measured. It then displays the signal via an array of driver ICs, which allow it to update the dots one column at a time by powering the tiny electromagnets that flip over each colored panel.

Even better, [bitluni] live-streamed the entire build. That’s right, if you want to watch approximately 30 hours of video covering everything from first actuating a pixel on the display to designing and assembling a PCB to drive it, then you’re in luck. For the rest of us, he was kind enough to make a much shorter summary video you can watch below. Of course, this scope doesn’t run Doom like some others, but its probably only a matter of time.

Thank to [Zane Atkins] for the tip!

Hack a Day 09 Nov 12:00

Tiny TV Tells the Temperature Tale

Once upon a time, we would run home from the bus stop to watch Gargoyles and Brady Bunch reruns on the family TV, a late-1970s console Magnavox number that sat on the floor and was about 50% more cabinet than CRT. The old TV, a streamlined white Zenith at least ten years older, had been relegated to the man cave in the basement. It looked so mod compared to the “new” TV, but that’s not the aesthetic my folks were after. They wanted their electronics to double as furniture.

This little TV is a happy medium between the two styles, and for us, it’s all about those feet. But instead of cartoons, it switches between showing the current weather and the top news headlines. Inside that classy oak cabinet is an LCD, an ESP32, and an SD card module. The TV uses OpenWeatherMap and pulls the corresponding weather image from the SD card based on time of day — light images for day, and dark images for night.

We love that it shows the SMPTE color bars, aka the standard American TV test pattern as it switches between weather and news. After showing the top headlines, it automatically switches back to the weather channel. Be sure to check out the short demo video after the break.

Do you like your tiny televisions in strange places? Here’s one you can use to trim your tree this year.

Sparkpad Sparks Joy for Streamers

The best streamers keep their audience constantly engaged. They might be making quips and doing the funny voices that everyone expects them to do, but they’re also busy reading chat messages aloud and responding, managing different scenes and transitions, and so on. Many streamers use a type of macro keyboard called a stream deck to greatly improve the experience of juggling all those broadcasting balls.

Sure, there are dedicated commercial versions, but they’re kind of expensive. And what’s the fun in that, anyway? A stream deck is a great candidate for DIY because you can highly personalize the one you make yourself. Give it clicky switches, if that’s what your ears and fingers want. Or don’t. It’s your macro keyboard, after all.

[Patrick Thomas] and [James Wood] teamed up to build the perfect stream deck for [James]’ Twitch channel. We like the way they went about it, which was to start by assessing a macro pad kit and use what they learned from building and testing it to design their ideal stream deck. The current version supports both the Arduino Pro Micro and the ESP32. It has twelve key switches, a rotary encoder, an LED bar graph, and an OLED screen for choosing between the eight different color schemes.

If you’d rather have dynamic screens instead of cool keycaps, you can do it cheaper by making non-touch screens actuate momentaries.

The HackadayPrize2021 is Sponsored by:

Why Make Coffee When You’re Tired? Let a Robot Do It for You

Like us, [Alberto] doesn’t compromise when it comes to a good cup of coffee. We figure that if he went to an office in the Before Times, he was the type of coworker to bring in their own coffee equipment so as not to suffer the office brew. Or perhaps he volunteered to order the office supplies and therefore got to decide for everyone else. Yep, that’s definitely one way to do it.

But like many of us, he is now operating out of a home office. Even so, he’s got better things to do than stand around pouring the perfect cup of coffee every morning. See, that’s where we differ, [Alberto]. But we do love Cafeino, your automated pour-over machine. It’s so sleek and lovely, and we’re sure it does a much better job than we do by hand — although we enjoy doing the pouring ourselves.

Cafeino is designed to mimic the movements of a trained barista’s hand, because evidently you’re supposed to pour the water in slow, deliberate swirls to evenly cover the grounds. (Our kettle has a chunky spout, so we just sort of wing it.) Cafeino does this by pumping water from an electric kettle and pouring a thin stream of it in circles with the help of two servos.

The three buttons each represent a different recipe setting, which specifies the amount of water, the hand pouring pattern, and the resting times between blooming the grounds and actually pouring the bulk of the water. These recipes are set using the accompanying web app via an ESP32, although the main brain barista is an Arduino Nano. Grab a cup and check out the demo after the break.

Got an old but modern coffee robot lying around? You could turn it into a planter with automated watering.

The HackadayPrize2021 is Sponsored by: