Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I spent 30 mins reading about this chip and I still don't get it. I get why the ESP8266 was awesome ... MCU + wifi for super cheap. Why is this chip so exciting? Is it because it is supposed to be wifi+ARM (an ARM good enough to emulate a sega mastersystem game as per a youtube video)+other goodies? I saw rumors of other goodies being BLE. Is that confirmed or was that hot air :)


ESP8266 was awesome, but lacked many useful features:

- ADC (Analog to Digital converter)

- IPv6 (IoT-chip without IPv6, come on..)

- Bluetooth BLE

- Enough RAM to pull of talking many of the protocols you might want to use over the internet.

- etc.. etc..

ESP32 supports this.


The big annoyance for me is lack of a wake on GPIO activity capability. The ESP8266 only has "wake on timer" and "wake on reset".

I'm making a home weather station with a tipping rain gauge which pulses a switch whenever it tips, and an anemometer that pulses a switch once per revolution.

To make those pulses wake an ESP8266, I'd have to make them reset it. That can work, and many people have done it, but it is annoying. For the anemometer I can switch to just checking the speed when I wake up to check and report temperature. I'd miss short variations in wind speed that way, but that could be acceptable.

For the rain gauge, though, I need to be aware of every pulse. I considered adding a dedicated non-microcrontoller based counter for the rain gauge to accumulate counts between periodic wake-ups of the ESP8266, but that turns out to be more expensive than using a microcontroller. An ATTiny85 could monitor the rain gauge and count the pulses, and could provide in I2C interface to the ESP8266 to make it easy for the ESP8266 to get the results, and would only take one small chip and socket.

That led to me to consider the ATTiny84, which is like an 85 put has several more GPIO pins. Current plan is to use an 84, have it run all the weather sensors and do all the math, and use the ESP8266 just for reporting results. The ATTiny processors can wake from deep sleep on GPIO activity so can deal with the rain gauge and anemometer directly. The ESP8266 can spend its time in deep sleep, only waking up every N minutes to send a report.


Try a 1-wire counter, e.g. the DS2423 [0] for the rain gauge. It can be powered either from the ESP or via a coin-cell. You read the counters whenever you need to.

You can talk to 1-wire either via I2C (e.g. the DS2482 [1]), or you can easily bit-bang 1-wire via a GPIO or UART [2].

[0] https://www.maximintegrated.com/en/products/digital/one-wire...

[1] https://www.maximintegrated.com/en/products/interface/contro...

[2] https://www.maximintegrated.com/en/app-notes/index.mvp/id/21...


Actually, the v7 and v12 (the most common ones recently) have a single ADC pin.


With a piece of kynar wire same pin can be connected on "old" ESP-01. Little hard to solder though.


ESP8266 has ADC. It does not have DAC, however for some purposes (e.g. low quality audio over WiFi) I2S output can be used with DMA as PWM output. Isn't IPv6 supported for ESP8266 with lwip?


Yeah, IPv6 is pretty important. I only have a few ESP8266 around the house and my DHCP pool is getting rapidly depleted...


You must have a lot of ESP8266 to deplete ~256^3 ips.


My home router can't really do more than about 100ish IPs.


Sounds more like time to get a new router vs changing all of your internal home network to ipv6


How is switching to IPv6 going to fix that problem?


The router won't have to hold a NAT table for ipv6 devices, just relay router announcements.


Maybe ipv6 slaac would help compared to dhcp. Not by much, but maybe a bit


How can a chip support or not support IPv6 in this case? Isn't it a layer below anything which would require direct hardware support? In other words, wouldn't it be implemented in software. I should point out that I know nothing about the ESP chips.

Or do you mean that the ESP8266 has hardware acceleration for IPv4 but not IPv6?


From the docs (but not actually messing with any actual parts), it looks like the 8266 has an IPv4 stack in ROM.


Probably the availability of enough code ROM and runtime RAM to support dual-stack operation, if it simply didn't fit before.


Eh, probably they didn't bother with IPv6 when butchering random BSD code for their hacked-together "SDK".


I missed a key link ... this explains it: https://www.seeedstudio.com/ESP3212-Wifi-Bluetooth-Combo-Mod...


It's not an ARM - it's still a pretty weird Xtensa CPU.

Apparently the toolchain for the CPU is nowhere near as good as those for the ARM.


The ARM Cortex-based RTL8710 seems to sit halfway between the ESP8266 and the ESP32, and perhaps has more toolchain promise. Same library/documentation problems, of course.


The toolchain is as good as for ARM, it is gcc no more no less.

You perhaps mean the original SDK which was based on proprietary blobs and sucked.

See it here, the good one, https://github.com/pfalcon/esp-open-sdk


It's an unofficial fork of an old version of gcc developed by the community. ARM toolchain support is a lot more mature and widespread.


me@yourlaptop $ xtensa-lx106-elf-gcc -v ... gcc version 4.8.5

What is old about this, the 4.8.5 version of GCC was was released June 2015.


The 4.8 series was originally released in March 2013. There have since been three major releases (4.9, 5, 6). GCC 4.8 is old.


I didnt even know, Im happy with the toolchain, what am I missing from the latest gcc releases? Better colorful error output, more optimizations?


The code generation, especially on RISCs, has improved pretty dramatically between 4.8 and 6.2. You can expect to get better code size with a newer toolchain.

That said, there's a good chance it's not too hard to forward port the patches; I'm not aware of any major rearchitecting between 4.8 and 6.2, then again maybe there's been one.


Since when does gcc give out colorful output, and how do I get it to do it all the time?


Add this flag to it -fdiagnostics-color=always

If you dont want to mess with gcc flags in all your projects, add the GCC_COLORS env variable to your shell, like just export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'` to your ~/.bashrc or other shell rc.


Can't run rust on it!


It is actually not ARM based, but rather based on the Cadence Xtenza family of CPUs.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: