[HN Gopher] Building an occupancy sensor with a $5 ESP32 and a s...
       ___________________________________________________________________
        
       Building an occupancy sensor with a $5 ESP32 and a serverless DB
        
       Author : sodality2
       Score  : 299 points
       Date   : 2023-11-13 17:17 UTC (5 hours ago)
        
 (HTM) web link (matthew.science)
 (TXT) w3m dump (matthew.science)
        
       | filterfiber wrote:
       | This is an excellent write up!
       | 
       | > Seeed Studio XIAO ESP32S3/C3, WaveShare ESP32S3 Zero, Unbranded
       | ESP32-WROOM with OLED, Orange Pi Zero W (untouched), Raspberry Pi
       | Zero W (L->R, T->D) After testing all of these, the only one
       | reliable to work for long periods of time (one month currently)
       | was the XIAO ESP32C3/S3.
       | 
       | I suspect they may be having power issues? For the ESP32's
       | specifically I highly recommend adding a beefy capacitor over the
       | power rails, as those can be rather sensitive to voltage
       | fluctuations especially when transmitting. Both the RPi and ESP's
       | can be finicky depending on the power supply/cable/cable length
       | too, and the RPi's sdcard does tend to fail from sudden power
       | loss. They should all be capable of at least a month, my pi's and
       | esp's have gone several months.
       | 
       | I'd be curious to see the results from other ESP32's (or even the
       | pi) with a larger capacitor added.
        
         | sodality2 wrote:
         | It's definitely not a reliability issue, with the platform -
         | ESP32 in general is very popular so it's surely an issue with
         | my usage. I'm fairly certain it's just a cheap manufacturer
         | issue I ran into. I bought essentially a no-name ESP32 at first
         | and that's the one that refused to last. Proper manufacturer
         | solved that issue for me and now ESP32 works just fine.
         | 
         | The raspberry pi actually never worked, largely because I tried
         | to shoehorn way too much complexity in and manage too many
         | things. It's just a BT scan and a HTTP call.
         | 
         | I don't think it's a power issue as it's getting 5V1A from a
         | power outlet directly to USB-C into the device. Though that's
         | definitely something I need to look into, as the Xiao ESP32-S3
         | I have also had intermittent issues, and IIRC the XTensa cores
         | are more power-hungry than its RISC-V based sibling, the
         | ESP32-C3.
        
           | filterfiber wrote:
           | > I don't think it's a power issue as it's getting 5V1A from
           | a power outlet directly to USB-C into the device.
           | 
           | It's not the total voltage/wattage the PSU can provide, but
           | the voltage at the processor.
           | 
           | The ESP's varying current draw notoriously causes too much
           | noise and a lot of boards don't have large enough decoupling
           | capacitors so the voltage drops too much and it glitches out.
           | Also a warning that USB PSU's can very MASSIVELY in quality
           | (I'd suggest an apple one for testing if you have one handy).
           | 
           | I think you're right that the RISC-V processor is either
           | better behaved and draws power more consistently, or the
           | board has shorter traces to it's bypass capacitor or a larger
           | bypass capacitor.
        
           | londons_explore wrote:
           | Are you sure that the system isn't still running, but it has
           | just disconnected from wifi and is failing to reconnect? I
           | have a few status LED's flashing to show the main CPU is
           | still running, and it often is, even when the device has
           | fallen off the network.
           | 
           | I find that happens fairly frequently unfortunately, and
           | haven't managed to track down the cause.
        
             | sodality2 wrote:
             | Hm, that's a good call. I have a callback on the connection
             | dropped to reconnect but it's possible it needs a full
             | reboot? I'm going to have to sit in on the serial monitor
             | and wait until something happens and see. Thanks for the
             | tip!
        
               | londons_explore wrote:
               | I live in a very wifi-busy area (hundreds of networks),
               | and I suspect that the wifi logic somehow hangs itself
               | waiting for some packet/message/state which gets lost and
               | never comes.
        
           | sokoloff wrote:
           | I chased a reliability problem with an RPi3 for a while
           | before figuring out it was a poor quality USB cable that I
           | was using for power.
           | 
           | Not saying that's your issue obviously, but I spent a couple
           | more hours than I really should have swapping USB power
           | bricks but not the cable (because it was threaded through the
           | printer enclosure and laziness prevailed).
        
             | sodality2 wrote:
             | I didn't consider that as highly as the outlet adapter
             | since that's what pushes the amperage and wattage, but
             | thanks, I'll definitely be investigating that next!
        
         | jetbalsa wrote:
         | I'm a huge fan of using Alpine with the RPi due to reducing
         | writes to the SDCard. it will only save data to disk with a lbu
         | commit -d and by default boots into a kind of tempfs.
        
       | lesuorac wrote:
       | > Linux Bluetooth is incredibly painful to handle in a headless
       | way. Binding to DBus requires cross-compiler magic and not even
       | Cross was getting me out of it.
       | 
       | That was my experience as well. I was doing something different
       | so ultimately I just decided I'd put both the devices on the same
       | WiFi network and then scan for "pi.local".
       | 
       | Do wish I knew how all those other crates work though where it
       | crashes at runtime if you don't have a library instead of
       | refusing to build.
        
       | Animats wrote:
       | And with more of these, you could track where everyone is all the
       | time!
       | 
       | Here's a camera based video people counter.[1] This is a bit less
       | intrusive.
       | 
       | [1] https://github.com/saimj7/People-Counting-in-Real-Time
        
         | sodality2 wrote:
         | Given manufacturer's trends of enabling the privacy feature of
         | randomizing the MAC address every n minutes, it would take some
         | serious effort and analysis to reverse these general trends
         | into individuals. I've linked a relevant article in the
         | bibliography about these kinds of attacks [1] but in general,
         | at least with user numbers in the hundreds, it would be very
         | difficult.
         | 
         | [1]: https://ieeexplore.ieee.org/document/9369628
        
           | michaelmior wrote:
           | Just skimming that paper, it doesn't look like they made use
           | of any kind of fingerprinting. The paper below shows how BLE
           | devices can be profiled to extract a potentially unique
           | fingerprint. I don't know how well this would scale to large
           | numbers of devices, but I'd imagine if you used such a
           | fingerprint, you could dramatically improve the association
           | between randomized MAC addresses even if the fingerprint is
           | not 100% unique.
           | 
           | https://inria.hal.science/hal-02359914/document
        
       | reidjs wrote:
       | is something like this possible for an outdoor setting like a
       | beach?
        
         | sodality2 wrote:
         | Definitely, if there's a solar panel and a battery hooked up +
         | some sort of internet connection. Though I would worry about
         | durability outdoors, probably needs to be sealed pretty tightly
        
       | dylan604 wrote:
       | I've heard talks of the toll tag companies wanting to be able to
       | detect occupants in a car so they can properly charge the correct
       | amount of fees when the occupancy changes the amount. I never
       | looked into how that might happen, but I'm guessing Bluetooth
       | would not be a solve here as it's too easy to circumvent if
       | passengers disable bluetooth
        
         | kurthr wrote:
         | Or (shudder) have more or less than the requisite single phone.
        
           | dylan604 wrote:
           | Obviously a soccer mom taking her bus load of kids somewhere
           | would ruin the bluetooth use case. I never did hear more
           | about how they would actually do it. I just met someone
           | randomly at a holiday gathering a couple of years ago that
           | said that was something his company was working on. The
           | conversation just didn't allow for follow up.
        
         | HumblyTossed wrote:
         | Cameras work well for front occupants. They're already being
         | used to check if commercial drivers are wearing seat belts.
        
           | dylan604 wrote:
           | if a toll tag required me to power it and allow it to record
           | video of the interior of my car at all times, then FUCK THAT
           | NONSENSE!!!! even if they had it setup so that the camera was
           | only turned on briefly by a signal as you approached and then
           | turned off again as you passed the gates, that's still a hard
           | no from me.
        
         | sodality2 wrote:
         | That's much worse of an automobile usage case than the ones I
         | read about (measuring vehicle travel speeds to improve travel
         | time estimates)!
         | 
         | Occupancy based pricing for vehicles seems too hard to enforce
         | anyway, change the pricing scheme to something more practical
         | IMO
        
       | Dowwie wrote:
       | This would be an interesting way to measure crowds in general--
       | in concerts, attending political rallies, attending protests,
       | etc. A handful of journalists attending an event could spread out
       | and share their max value.
        
         | Smoosh wrote:
         | This makes me wonder if phone companies would have the ability
         | to provide figures for mass gatherings. Would they only be able
         | to count devices on their own network, or do they "see" all
         | phones in range and then filter out the other-network ones?
        
       | SCUSKU wrote:
       | Awesome write up, I liked how accessible the writing is, as well
       | as the fun tone.
       | 
       | I have a problem where I will need to monitor the soil moisture
       | of 20 trees in San Francisco. My current thought is to strap an
       | ESP32, Lora module, battery, and capacitive soil moisture sensor
       | and to send data once every 6 hours or so.
       | 
       | I was wondering if off the cuff you have any suggestions or
       | pointers on how to best approach this. Thanks and once again,
       | thank you for sharing this!
        
         | mwint wrote:
         | Do you need an ESP32 vs an 8266? I believe the 8266's are more
         | energy efficient.
         | 
         | In either case, you can put them in a deep sleep that uses
         | minuscule amounts of energy and can wake back up on a timer.
         | I'd start there.
        
           | SCUSKU wrote:
           | I think I am largely MCU agnostic, although preferably
           | something where I can use Arduino since I am familiar with
           | that. Good to know that ESP8266 is more energy efficient. I
           | have seen this video which demonstrates that the ESP8266 can
           | run off 2 AA batteries for 425 days [1].
           | 
           | Another thought I was having was to write a mobile app that
           | as volunteers walk by the sensor would send data to their
           | phone, which would then forward it to my backend. I suppose
           | this is a mesh network of sorts? Not sure if this is feasible
           | or a good idea though :/
           | 
           | [1] - https://youtu.be/IYuYTfO6iOs?si=oLuJiGxdQ8VHyu29&t=837
        
             | sodality2 wrote:
             | Another option would be LoRa - it's pretty long range. The
             | problem would be that could add a lot to power usage.
             | Though 6h should be plenty of time - wake up, send a small
             | packet, sleep for 6 hours.
             | 
             | You would have a central LoRa receiver in a place that can
             | reach all of the sensors. How far apart are the trees?
             | 
             | Other than that, I would suggest testing out lots of
             | different hardware. I bought several different boards
             | before any decisions were made, and I'm glad I didn't stick
             | to just one. Costed me maybe $30 to buy a gamut of devices
             | and now I've settled on a single one that does what I need.
             | 
             | Also, make sure you're flashing with the largest image size
             | you can, if your code becomes too large. For me I had to
             | enable an option in the board settings to use the full
             | memory space.
             | 
             | Lastly, one thing you should do is the low power option.
             | See which board supports it the best. Then, what I would do
             | at startup is turn on all the sensors, collect and send
             | data right away, then turn all your sensors off. Do ultra
             | deep sleep for 6 hours. then when it wakes up, don't bother
             | doing any kind of loop to the beginning - hard reboot. That
             | avoids any problems with memory allocation becoming too
             | large somehow over the course of the program, since it
             | always starts fresh (which is all you need!). I'm not sure
             | the trade off here but for me, I reboot every 12 hours and
             | it works great. (I would do it after every scan but I don't
             | delay between scans for more constant data, so it would be
             | a lot of set up every single minute).
        
               | SCUSKU wrote:
               | The trees are all pretty close to each other, about 3-4
               | city block radius (map of trees [1]). The issue is that
               | as far as I can tell there is no existing LoraWAN gateway
               | on The Things Network I can tap into [2], which means I
               | will have to setup my own gateway. Which is fine, but it
               | may prove to be difficult to get this onto a tall
               | building since I am just an apartment dweller. At the
               | very least I can put the gateway in my apartment window.
               | 
               | [1] -- https://www.google.com/maps/d/u/0/viewer?mid=1e7K_
               | VdEEYkxuAy... [2] --
               | https://www.thethingsnetwork.org/community/san-francisco/
        
         | filterfiber wrote:
         | There are esp-lora boards including lipo power management you
         | can start with.
         | 
         | The ESP has a few deep sleep modes, and there's a lot you can
         | do to optimize them.
         | 
         | I highly recommend Andreas Spiess on youtube.
         | 
         | EDIT: Heads up that moisture sensors have reliability issues,
         | Andreas's video 463 talks about them.
        
           | SCUSKU wrote:
           | So my thought was to utilize the capacitive soil moisture
           | sensor and then coat the sides of the PCB with a
           | waterproofing epoxy as Andreas recommended. My hope being
           | that even if it craps out, I can just swap out the sensor,
           | and since they are so cheap it won't be a big deal.
           | 
           | Also, great to know that there esp-lora board w/ lipo power
           | included!
        
         | morphle wrote:
         | If it is only 20 trees, you could use off the shelf sensors.
         | 
         | Its much better and cheaper to design from scatch, use an $0.04
         | ultra-low power Arm microcontroller with ADC or a Padauk, add a
         | single layer pcb with two well proportioned pcb traces in a
         | plastic bag as a capacitive moisture censor (better than
         | resistive sensor) and a $0.12 solar cell or rechargable
         | battery. Single sensor cost around $0.41 excluding labor, mass
         | produced $0.08 including labor and sensor network
        
           | SCUSKU wrote:
           | That's a great point. I have experience w/ Arduino and have
           | made a carrier board one time [1], but am not familiar with
           | full custom PCB + MCU designs. Do you have any suggestions on
           | where to get started for someone with my medium level of
           | experience here? And also, how difficult would you anticipate
           | a custom MCU to be?
           | 
           | [1] -- https://zachbellay.com/projects/odaf/#iteration-3-phas
           | e-2-wi...
        
             | morphle wrote:
             | A custom MCU+pcb is at least 3 months work: downloading an
             | design for an FPGA, testing it, using openlane to make an
             | custom chip, taping it out, writting boot code and the main
             | loop ( I would do that in assembly, much simpler than using
             | C and some vendors library). The big issue is taping it out
             | to a chip FAB, around $25K, see my comment below.
             | 
             | I would get started with an off the shelf MCU with good
             | documentation, writing the software on a good development
             | platform with the same assembly as the final
             | microcontroller. For the $0,04 ARM microcontroller I
             | mentioned above as final target with analog to digital
             | controller (ADC) I would first write the program (the main
             | loop) on a Mac on a high level language like Squeak or
             | Python and use the $4 raspberry pi pico as ADC. I would
             | then rewrite the working software in ARM assembly and test
             | it directly on the pi pico. Then I would flash it on the
             | $0.04 arm microcontroller wired on a breadboard to the
             | moisture sensor. Then I would debug it again, with simple
             | flashing leds to see where your software goes wrong.
             | morphle at ziggo dot nl for more questions like how to find
             | a 4 cent arm chip. I would start at lcsc.com , use their
             | sister company and eda tool to design the pcb only with
             | lcsc.com parts and order it fully assembled. Then I would
             | open source it so others can directly order assembled
             | boards
             | 
             | I would avoid Arduino like the plaque, in essence its just
             | a precanned overpriced bloated C library on an overpriced
             | microcontroller. You always get better results writing from
             | scratch. See 'is it complex or did we make it complicated',
             | a lecture by Alan Kay at Quallcom on Vimeo or Youtube, on
             | designing systems from scratch or buy vendor stuff:
             | https://vimeo.com/82301919
        
           | morphle wrote:
           | I designed my own chip for EUR,03 , a 180nm 8 core
           | microcontroller with builtin moisture and other sensors.
           | Minimal volume is 800.000 chips.
        
         | Kevin09210 wrote:
         | check this out
         | 
         | https://dynamax.com/products
        
         | antoniuschan99 wrote:
         | Either a dfrobot: https://www.dfrobot.com/product-1385.html or
         | M5Stack: https://shop.m5stack.com/products/earth-sensor-unit
         | https://shop.m5stack.com/products/watering-unit-with-mositur...
        
         | chasd00 wrote:
         | look at Adafruit's Feather line up. they have lipo support +
         | charging and then an easy connector to use for i2c which you'll
         | probably be using to interface to the sensor. You can probably
         | find one with Lora included.
        
       | mariocesar wrote:
       | Interesting DIY project! It reminds me of a startup called
       | OccuSpace (https://occuspace.io/), which offers a similar
       | occupancy solution but as a service. They may be leveraging
       | similar technologies to provide real-time occupancy data, which
       | is incredibly useful for managing space in offices, public
       | venues, etc. It's a good example of how these concepts are
       | scaling up commercially.
       | 
       | I wonder How well can your DIY sensor or OccuSpace figure out
       | what kind of devices are in the room or who's using them. Can
       | they tell different users or gadgets apart?
        
       | me_again wrote:
       | Cool!
       | 
       | I didn't totally follow the issues with keeping the data in
       | memory, and it sounds like it is solved now - but you could
       | probably use a cardinality estimation algorithm to estimate the
       | number of unique beacon IDs while only using constant space.
       | https://en.wikipedia.org/wiki/Count-distinct_problem
        
         | sodality2 wrote:
         | That's a really good point. I've been meaning to go to a
         | football game recently and bring it, to stress test it with the
         | largest gathering I can quickly access. If it can easily scan a
         | couple thousand without a sweat, I'd consider it pretty solid
         | anyway. But a fixed-size estimating data structure would be
         | really cool to research. I will surely look into it, thank you
         | for the suggestion!
         | 
         | Side note: Definitely one of my favorite parts of this project,
         | that I get to investigate more in-depth and interesting CS
         | concepts without having to worry about doing the easiest
         | solution. I'm scratching an itch, not developing a solution to
         | deliver ASAP.
        
       | lormayna wrote:
       | Can you use the variation of RSSI to track movement? I know thst
       | it's multipath and cannot be really reliable, but maybe it can
       | provide some useful information. Or maybe using 2 tracking
       | devices and correlate the results.
        
         | sodality2 wrote:
         | Instead of triangulation like that, which could get real
         | complicated, you could also simply place enough in the areas
         | you're counting and limit the RSSI cut-off enough to measure
         | those right next to it. That would work for specific areas you
         | want to measure trends in, instead of general 3d spatial
         | triangulation.
         | 
         | though some of the papers I read did this via measuring the
         | time of flight of BT packets and how they were changed when
         | people walked between them, and that really blew my mind!
        
       | fullstop wrote:
       | ESPresence [1] is an interesting project, and it works with the
       | ESP32-C3.
       | 
       | It is more designed to figure out which room you are in.
       | 
       | 1. https://espresense.com/
        
       | summm wrote:
       | Theres this using ESP32 and LoRa, where you can order readymade
       | hardware: https://cyberman54.github.io/ESP32-Paxcounter/
        
       | Havoc wrote:
       | You can also get pretty check 24ghz radar that does reliable
       | sensing till like 3m. Much much more accurate than the IR based
       | stuff
        
       | epcoa wrote:
       | > and heap thrashing since we're allocating and deallocating the
       | result structure every single callback.
       | 
       | This should not an issue. It is entirely possible to write this
       | without any dynamic allocation (other than stack) at all, or it
       | could be done be done with an arena. Consider with something as
       | powerful as an esp32 a hash table is not even strictly necessary,
       | surely for a single purpose use case like this.
        
         | sodality2 wrote:
         | I figure the internal data structure that already exists in the
         | BT library probably uses something similar to a hash table, so
         | I emulated it with less of the data being saved (just a MAC).
         | You're right though, there are smaller choices for data
         | structures. I ended up upgrading to a better board with more
         | memory, and just used the existing structure in the BT library.
         | It fixed a number of other problems at the same time.
        
       | davidw wrote:
       | How do people "productize" their ESP32 projects? (Edit: not
       | talking about mass-producing something, I just want a self-
       | contained unit rather than a board with a bunch of wires sticking
       | out)
       | 
       | I see a lot of pages where they show some bare-looking board, but
       | in the real world you want to package that up.
       | 
       | If you're a software guy like me, you would likely prefer to pay
       | a bit extra to just have that tidied up for you rather than
       | fiddle around with stuff.
        
         | lostapathy wrote:
         | 3d printed enclosure?
        
           | davidw wrote:
           | That sounds like one of those "I have a problem... now I have
           | two problems" jokes.
           | 
           | I wanted something simple and cheap and now I need to go deal
           | with this whole other thing I don't know much about and
           | either rent or buy into it?
        
             | krasin wrote:
             | JLCPCB would 3d print high-quality enclosures from a
             | variety of UV resins: https://3d.jlcpcb.com/ and decently
             | cheap.
             | 
             | The next best option is injection molding with PCBWay (or
             | other similar provider): https://www.pcbway.com/rapid-
             | prototyping/manufacture/?type=4...
             | 
             | An alternative is a sheet metal enclosure:
             | https://www.pcbway.com/rapid-
             | prototyping/manufacture/?type=4...
             | 
             | But 3d printing with JLCPCB is really the most convenient
             | way unless you need a lot of parts (thousands) or the
             | material properties of the UV resins would not be enough
             | (high-temperature, outdoors, etc).
        
             | Zetobal wrote:
             | You can also pay someone to do it.
        
             | lostapathy wrote:
             | As somebody else mentioned, you can hire it out.
             | 
             | There's a lot of files running around with existing models
             | for common projects, so you probably don't need to design
             | your own enclosures a lot of the time unless you want to.
             | 
             | And printers have gotten cheap, like $99 gets you a jumping
             | off point into the hobby.
        
               | davidw wrote:
               | Do people not just sell like "complete package" things?
               | 
               | The board in the article is $13.49 (
               | https://www.amazon.com/dp/B072HBW53G ). If you could get
               | an enclosed, complete thing for $20, including the board
               | and whatever you need for it to run, that'd be much less
               | of a PITA than "brand new hobby" or "find someone to 3D
               | print stuff for me locally and deal with that whole
               | hassle".
        
               | kps wrote:
               | There are things like M5Stack (also ESP32-based) that
               | suit some purposes.
        
               | davidw wrote:
               | Yes! That looks pretty cool and more like what I'm
               | talking about.
        
               | kube-system wrote:
               | The thing about enclosures is that they are pretty design
               | dependent. Nobody knows what you are hooking up to your
               | board or what the intended purpose is. Some boards do
               | have generic type cases, e.g. raspberry pi cases.
        
               | szundi wrote:
               | $99 is just enough to jump into the hobby of fixing your
               | printer all the time - and that's what hobbyists are
               | actually looking for
               | 
               | solving something would be like $700 calibrated out of
               | the box, like the old prusa 3 something or the bambu
               | p1something.
        
               | lostapathy wrote:
               | I'm well aware. I think of the $99 printer as a filter -
               | either it's going to catch your interest enough to
               | justify jumping to a $600+ printer, or 3d printing isn't
               | for you and you aren't out much.
        
             | bluGill wrote:
             | That is why so many amateur projects look ugly: making a
             | pretty package is a whole new skill set. 3d printing is the
             | easiest acceptable solution, but it isn't the best. Best
             | would be a custom designed injection molded housing, but
             | that is even more work to design.
             | 
             | Nothing about making a nice presentation is beyond what
             | amateurs can do. However it is a lot more effort and so
             | most decide it isn't worth it.
        
               | davidw wrote:
               | I don't care if it's "beautiful" or ultra-compact or
               | looks as nice as some Apple device. All I want is to buy
               | one thing without wires and an exposed board.
        
             | fnordpiglet wrote:
             | There are plenty of enclosures available on AliExpress and
             | Amazon. But a cheap reprap 3d printer is a general tool
             | like a screw driver or hammer, albeit more complex for
             | sure. But the learning curve isn't absurd, it's basically
             | buying something plugging it in and loading filament then
             | printing a downloaded STL. It gets harder when it needs
             | calibration and maintaining, but it's not an unknown dark
             | art - there are a billion helpful discord groups.
             | 
             | But once you have it and know how to maintain it, anything
             | where you're like "man wouldn't it be nice if I had a
             | physical object like X" becomes a relatively solvable
             | problem. There are lot of materials with many different
             | properties. When you skip into a zone of material or print
             | you can't afford the equipment for, there are a bazillion
             | print shops.
             | 
             | The harder skill frankly is the 3d modeling. But I find
             | openscad is sufficient for almost everything and then for
             | the rest I use Build123. They're both parametric code
             | driven design tools so fit well inside a software project
             | (better than GUI tools, and more easy to be precise with).
             | Openscad is absurdly easy, build123 is more advanced and
             | requires Python skills as well as effort to learn the
             | conceptual model.
             | 
             | I sort of felt the way you seem to once upon a time until I
             | said screw it and figured it out one day. Now I feel like I
             | lived most my life hobbled for want of this tool.
             | 
             | So, yeah, overkill for printing an esp32 enclosure. But
             | doing so unlocks a lifetime of possibilities.
        
             | Johnny555 wrote:
             | If you're looking for an enclosure for your hobby ESP32
             | project, there are lots of off the shelf, small enclosures
             | available:
             | 
             | https://www.amazon.com/s?k=esp32+enclosure
             | 
             | If you want to sell a more finished commercial quality
             | project and don't want to print your own, there are places
             | that will fabricate one for you (but in low quantities,
             | having them 3d print it probably cheaper)
        
         | bluGill wrote:
         | There are lots of options. Most of what you see they don't:
         | this is a one off project for the hacker and if others find it
         | useful great, but not the goal. As such packaging isn't needed,
         | sometimes you shove it in a box.
         | 
         | If you want something nice, that can be done, now you need to
         | pay someone (could be yourself!) to design a package. ESP32 is
         | designed to be easy to put into your own products, this means
         | design a circuit board and case to fit each other, and so on.
         | Then you buy the ESP32 chips in bulk and assemble them onto the
         | circuit board. The board you buy for a prototype is officially
         | only a reference board and not what they expect you to ship
         | (though shipping the board is common: they are small, cheap,
         | and someone else did the hard board design)
        
           | davidw wrote:
           | I'm not really talking about producing something at scale,
           | just the bare minimum of not having a board with wires coming
           | out of it.
           | 
           | Say I want to do some one-off project and put it outside
           | somewhere, out of the weather, with some batteries to power
           | it.
           | 
           | Or an indoor thing with an AC hookup of some kind.
           | 
           | Doesn't have to be perfect or beautiful or as tiny as
           | possible; just sort of a complete package.
        
             | qwertox wrote:
             | I just buy new small breadboards and jumper wires and make
             | it so that it looks nice. Jumper wires of the proper
             | length, not jumper cables.
        
             | amenghra wrote:
             | You can buy project boxes. Some of them come with
             | breadboards/perfboard that properly fit with screws (e.g. h
             | ttps://discountbloc.ru/archive/products/xwzz1130z33x.html).
             | Alternative is to 3D print a box.
             | 
             | Altoids box is a classic. Food plastic boxes also works
             | depending how hot the components run.
        
               | XorNot wrote:
               | AliExpress has a number of companies selling the "generic
               | black rectangle" that looks a bit like an Apple TV now.
               | I've been meaning to buy a couple and see what they're
               | like to work with, because that's the overall effect I
               | really want - something that looks like a router or
               | generic company product.
        
             | HeyLaughingBoy wrote:
             | I mentioned M5Stack above. An alternative is to buy an off
             | the shelf display, e.g., from Polycase -- an outfit I've
             | used a lot and mount your board inside.
             | 
             | There are literally tens of thousands of off the shelf
             | electronics enclosures for every likely possibility. From
             | massive control panel boxes measured in multiple feet, to
             | watch-sized enclosures with straps for items designed to be
             | worn on your wrist. You'll find something suitable no
             | matter what.
        
         | mikub wrote:
         | I look if if I can find some already assembled things and try
         | to build an project around it. For example I used an
         | pictureframe to build a nice neopixel thing, I also documented
         | it on my website, https://mikub.me/post/(1)/
         | 
         | So what I do is I usually look around what everyday objects
         | could become nice enclosures for microcontrollers and such
         | things.
        
         | morphle wrote:
         | You shouldn't productise anything with ESP32, its just an
         | overprized bloated hobby pcb.
         | 
         | See my comment below on how to productize this: use a 4 cent
         | off the shelf microcontroller on a 10 cent pcb or much better:
         | make a custom chip with all the sensors on board but with $25K
         | minimum Capex but tiny Opex
        
           | chpatrick wrote:
           | There are thousands of ESP32-based IoT devices on AliExpress
           | that would disagree with you. It's an SoC chip not a "pcb".
        
           | morphle wrote:
           | As others point out: you could hire someone to do it. Based
           | on my custom 1 cent ASIC (custom chip) I would design, test
           | and build your (moisture or other) sensor for EUR3000
           | excluding tax and price of all the needed tools. Usually more
           | like $6000 because they want to outsource all the problems
           | (like mass production and sales) to me
           | 
           | morphle@ziggo.nl if you want me to design it
        
             | szundi wrote:
             | Mine would be 0.3 cent per chip and would need $50k
             | investment.
             | 
             | Jokes aside, if you know how to design a custom chip for 3k
             | USD, I would like to know about it.
        
               | morphle wrote:
               | it is not a joke, you can do as low as 1.10870 cent per
               | custom chip or 2 cent per off the shelf chip. 0.03 cent
               | is impossible, the minimum size of a chip is .625 mm2 and
               | that sets the minimum price.
               | 
               | Designing one for $3K is possible because I already have
               | a tested chip design that I just have to modify for you.
               | 
               | A master student project is usually a free design with a
               | free tapeout at Google MPW, Mosys of Europractice.
               | 
               | I also design bigger chips and $500 wafer scale
               | integration with 10000 cores :
               | https://vimeo.com/731037615
        
               | morphle wrote:
               | if you like to know more about it: morphle at ziggo dot
               | nl to make a video conf appointment and get a demo. Or
               | ask email questions, but that takes more effort for us
               | both.
        
         | serial_dev wrote:
         | You get a "product designer" (?) who designs a case. If your
         | product is "standard enough", you might skip this step.
         | 
         | Then, you reach out to local manufacturers and ones from bigger
         | markets. You get some samples, you check if things work like
         | they should. If you like it, order a smaller batch. Design a
         | quality assurance workflow, or find a specialist who can help
         | you with that so that the manufacturer doesn't ship you 20%
         | faulty products.
         | 
         | Get your products onto the shelves of a brick and mortar store,
         | and/or create a website, sell on Amazon and other portals.
         | 
         | Talk to your customers, listen to their feedback, improve every
         | step a little.
         | 
         | It sounds overwhelming.
         | 
         | I worked for a small smart home startup, and I learned that,
         | for example, in Shenzhen, there is a whole industry ready to
         | help entrepreneurs realize their dream products, and at every
         | step of the way, you can contract someone to help you. In our
         | experience, the Chinese service was both much better, cheaper,
         | faster than European offers.
        
         | greggsy wrote:
         | Smaller dev boards and shrink wrap.
        
         | _jal wrote:
         | I like wood. It is pretty much everything you want for
         | something like this - super durable, very easy to work with,
         | and depending on what you pick, cheap and pretty, too.
         | 
         | Plus, woodworking is very satisfying by itself. And also easy
         | to get started with - for small box-like things like this you
         | only need a few cheap hand tools.
        
         | morphle wrote:
         | You shouldn't productise anything with ESP32, its just an
         | overprized bloated hobby pcb, very unprofessional.
         | 
         | See my comment below on how to productize this: use a 4 cent
         | off the shelf microcontroller on a 10 cent pcb or much better:
         | make a custom chip with all the sensors on board but with $25K
         | minimum Capex but tiny Opex
        
           | AnotherGoodName wrote:
           | The esp is a cheap microcontroller.
           | 
           | You shouldn't productionize an esp32 dev kit but you should
           | absolutely productionize an esp32 on a board you've designed
           | that has the specif features to do your thing (whatever that
           | is).
        
             | morphle wrote:
             | no, the ESP32 is a SoC, a bunch of chips in a package on a
             | PCB. not a bare microcontroller chip. It is already a
             | product with several resellers: ip, fab, packaging,
             | exporter, distributor, retailer and a very high profit
             | overhead of at least 2.7 times the costprice
        
               | k0k0 wrote:
               | You're absolutely wrong on a number of points. A SoC
               | stands for "system on a chip", it refers to a single die
               | (if you want to get pedantic, there are multi-die
               | packages but this does not apply here) package, a "bare
               | chip" if you will.
               | 
               | https://www.espressif.com/en/products/socs/esp32
               | 
               | The ESP32 is a SoC. It's available in QFN packaging (Quad
               | Flat Pak No Lead).
               | 
               | The ESP32 is available included with a number of
               | "modules" (and of course devkits). These modules are
               | designed for production use and it can be economical to
               | do so. You clearly don't have the foggiest idea about
               | these product lines so don't seem to be in a good
               | position to comment on the economics.
               | 
               | https://en.wikipedia.org/wiki/ESP32
        
               | morphle wrote:
               | You should call the company, order a few million units,
               | negotiate and sign their NDA and then they will tell you
               | it is not a single bare die
        
               | k0k0 wrote:
               | Why would you need to sign an NDA? There are decaps
               | readily available. Most ESP32 models have a separate die
               | for the flash memory, but everything but the flash (that
               | is uC, WiFi, BLE, and peripherals) is on a single die,
               | which sounds like a SoC to me (The definition of SoC
               | devices have always included devices with off-die RAM and
               | Flash). These aren't "a bunch of components on printed
               | circuit boards" as you initially claimed.
               | 
               | https://electronupdate.blogspot.com/2018/08/espressif-
               | esp32-...
        
           | HeyLaughingBoy wrote:
           | Not everything is going to be sold @ qty 100,000. I deal with
           | the other end of the spectrum: 1 unit to maybe 25/year. At
           | those quantities, speed of development and assembly is the
           | most important criteria. Unit price is not.
        
         | mkingston wrote:
         | I mount the board on some nylon standoffs through a takeaway
         | box lid. The rest of the takeaway box is the enclosure. I drill
         | some holes through the takeaway box for wire ingress and
         | egress.
         | 
         | I use a tupperware container if I'm feeling fancy.
        
         | boustrophedon wrote:
         | There are a lot of companies that make electronics enclosures.
         | Some of them are waterproof. Usually they have a couple pre-
         | drilled mounting flanges to screw in the board as well, and
         | then you'd drill your own external holes for input/output as
         | necessary. Here's a couple manufacturers, and you can usually
         | find stuff on e.g. adafruit and digikey as well to save on
         | shipping if you're buying dev boards or other parts from them
         | already.
         | 
         | https://www.hammfg.com/ https://www.budind.com/ http://takachi-
         | enclosure.com/ https://www.adafruit.com/product/903
        
         | HeyLaughingBoy wrote:
         | I am a huge fan of M5Stack. Take a look at the Tough or Core
         | units. You get an ESP32 with couple of peripherals (speaker,
         | buzzer, real-time clock) and a TFT touchscreen all in a case.
         | Water-resistant in the case of the M5Stack Tough.
         | 
         | I've shipped a couple of consulting products based on them and
         | it really cuts down on the work I need to do in order to build
         | product.
        
           | davidw wrote:
           | That's exactly the kind of thing I'm talking about. You could
           | take those and plug them together and be basically ready to
           | go, rather than "just" investing in a bunch of 3D printing
           | and soldering and lord only knows what else. Maybe it costs a
           | bit more, but that's fine - you get something that you can
           | use somewhere besides sitting on your desk with a bunch of
           | exposed wires.
        
         | jpcfl wrote:
         | You can design both a circuit board and a case with Fusion360,
         | which is free for personal use. Use JLCPCB to assemble the
         | board for you. You can 3D print the case yourself.
         | 
         | It took me about 20hr to learn how to use Fusion360 and make a
         | simple circuit and case this way.
        
         | martinsnow wrote:
         | Usually a black abs box will do
        
       | barkingcat wrote:
       | I like the inclusion of the bibliography. I should do that with
       | all my blog posts too (even if it's links to other posts, etc,
       | the references still help to understand the post)
        
       | post_break wrote:
       | This paired with a TPMS scanner would be great for occupancy for
       | the entire campus. Scan the TPMS at the major traffic zones, then
       | compare with bluetooth signatures.
        
       | fnordpiglet wrote:
       | While I don't discourage learning a new language the immediate
       | toss aside of rust on esp32 was perplexing. It sounds like a lot
       | of the memory issues would have been mitigated by sticking with a
       | language better understood. Rust's esp32c3 support is pretty good
       | IMO, that's all I use. Writing in C++ makes me feel dirty in ways
       | that even COBOL doesn't.
       | 
       | I also think I would have implemented presence by TTL, updating
       | the TTL for each MAC when I see it and purging a TTL heap before
       | updating my remote statistics. I didn't fully grok the approach
       | taken for maintaining the hash map, in a taxi off a long flight,
       | but it didn't seem super robust on my quick read.
        
         | sodality2 wrote:
         | The hash map was definitely not robust enough, that's why I
         | ultimately switched back to the default behavior and increased
         | the memory available on the board!
         | 
         | Also, I am a Rust fanatic. I do nearly everything in it! I gave
         | a talk on it at our last hackathon! I even wear a Rust t-shirt
         | regularly! So rest assured I will be exploring my options with
         | Rust. I would love to get rid of my dependence on Arduino. But
         | C++ was easiest to get off the ground with, believe it or not,
         | just because I have experience flashing Arduino boards.
        
       | j1elo wrote:
       | Always surprised to see people running around with their
       | Bluetooth needlessly enabled.
       | 
       | Maybe I worry to much about battery usage, but I just got used to
       | always enable WiFi, Bluetooth, or NFC, only at the moment of
       | usage, and disabled afterwards.
        
         | szundi wrote:
         | Google/Apple obfuscating these mac addresses do not help
         | anymore?
        
         | ThrowAway1922A wrote:
         | I have a smartwatch and airpods, turning off Bluetooth would
         | cause both not to work.
         | 
         | I'm more surprised that anyone ever turns it off, battery use
         | is negligible compared to the cellular modem as I browse the
         | web/listen to music.
        
           | landemva wrote:
           | I use Bluetooth maybe once or twice a year because I don't
           | want to be tracked everwhere. Wired headphones. Phone in
           | airplane mode much of the day. I suppose I am a privacy
           | outlier, and I'm also not a slave responding to calls/texts.
        
         | greggsy wrote:
         | I feel like you're an extreme outlier. It's not at all
         | surprising, given the convenience in a range of modern day
         | activities like driving a car, listening to music, being in a
         | workplace, or simply being at home.
        
       | gyf304 wrote:
       | Did something very similar years ago -
       | https://blog.yifangu.com/tag/library-occupancy-project/
        
       | qwertox wrote:
       | My alarm clock consists of an ESP32 and has a somewhat big LED-
       | array connected to it (powered by a transistor), a buzzer and a
       | PIR sensor. It doesn't show the time, but buzzes (and flashes)
       | and takes care of slowly brightening the room, or at night slowly
       | dimming it into darkness some time after all the lights have been
       | turned off.
       | 
       | One added benefit I discovered afterwards is that even though the
       | AP is not between me and the ESP, I seem to reflect enough RF so
       | that logging the RSSI provides information not only about when
       | I'm in the bed, but also when I change position at night.
       | 
       | https://imgur.com/a/VixOlu5 (edit: no erotic content despite the
       | warning)
       | 
       | The green one in the middle is the RSSI, the yellow at the bottom
       | the PIR sensor, the top one a mix of the data from my Mi Band 3
       | plus an annotation of when I was in bed (yes I did spend a lot of
       | time reading news before falling asleep and before getting up)
        
         | picture wrote:
         | What was your stack like for data collection and visualization?
        
       | caycep wrote:
       | applications for cities w/ housing availability issues and vacant
       | "investor properties" to apply/enforce a vacancy tax?
        
       | neilv wrote:
       | Since this was done by a student at a university, and at some
       | level this involves tracking people, that's an opportunity to ask
       | a professor about what human subjects protocols you'd need if
       | this was research.
       | 
       | (A professor might be easier to ask than the university human
       | subjects board -- who might refuse to talk with you because this
       | isn't under their jurisdiction, or might get alarmed because you
       | didn't talk with them sooner.)
       | 
       | There might also be campus IT privacy&security policies that
       | apply. Of course people are getting violated much harder by
       | ordinary Web sites, apps, and IoT devices, but sometimes
       | universities aspire to be better than the outer world.
        
         | sodality2 wrote:
         | Yep, I'm talking to a professor about exactly this. Didn't want
         | to include that in case it doesn't work out though!
        
       | UncleEntity wrote:
       | Bluetooth is fun.
       | 
       | A while ago I was playing around with libble++[0] to read the
       | data from some cheap temp/humidity sensors which broadcast their
       | data as an advertising packet. Pretty simple, considering.
       | 
       | Did some other playing to turn my laptop into a BLE beacon (which
       | worked pretty well with some random app on my phone) and also
       | tried (IIRC successfully) to emulate one of those apple airtags
       | though that code is lost somewhere on said laptop.
       | 
       | A quick glance at my temperature reading code and I'd say that
       | counting the number of seen advertisements would be trivial using
       | that library, I'm currently letting it do all the real work and
       | just filtering the results to the devices I'm interested in.
       | 
       | [0] https://github.com/edrosten/libblepp
       | 
       | --edit--
       | 
       | I also seem to have started writing a python C wrapper around
       | libble++ but obviously never followed through so its completeness
       | is doubtful.
        
       | raajg wrote:
       | > not losing momentum in a nerd snipe like this is CRITICAL
       | 
       | This line got me laughing! My nerd brain has tried so many times
       | to convince me to splurge money with this exact line!
        
       | H8crilA wrote:
       | There are some very good frameworks out there for doing things
       | like these:                  - ESPHome        - Home Assistant
       | 
       | You can a build a device like this, often without writing one
       | line of code, with ESP32 firmware updates over the air from a web
       | UI.
       | 
       | I wish those ESP chips/mini boards had Zigbee. You can get much
       | better connectivity on a Zigbee network than on wifi in a typical
       | deployment, where every mains powered Zigbee device also acts as
       | a router.
        
         | sodality2 wrote:
         | I have to say, my manual solution was a lot more fun and hands-
         | on and let me learn a lot more skills (C++, Grafana,
         | serverless) than a one-click solution. Though I will be
         | prioritizing maintainability if I decide to go further with it!
        
           | martinsnow wrote:
           | Agree with you fully. It's also a lot more easy to program
           | behavior into an esp32 rather than rely on home assistant pre
           | defined modules.
        
       | hmottestad wrote:
       | Ultra wide band can be used to detect tiny movements of humans in
       | a room. It can detect a finger twitching from several meters
       | away.
       | 
       | https://www.eenewseurope.com/en/uwb-human-sensor-uses-impuls...
        
       ___________________________________________________________________
       (page generated 2023-11-13 23:00 UTC)