The ESP32 has been released
hackaday.com
hackaday.com
[0]https://espressif.com/sites/default/files/documentation/esp3...
[1]http://www.pighixxx.com/test/wp-content/uploads/2015/12/ESP3...
"Embedded Memory – 448 KB Internal ROM – 520 KB Internal SRAM – 8 KB RTC FAST Memory – 8 KB RTC SLOW Memory"
And that's just the system library for a single TLS connection - the programmer will probably want to use some memory too :)
[1] https://github.com/esp8266/Arduino/issues/1375#issuecomment-... https://github.com/esp8266/Arduino/issues/43#issuecomment-16...
See also https://certsimple.com/blog/measuring-ssl-rsa-keys - 2048 bits are enough for TLS for now.
Anyway, for running a real OS you can use PIC32 microcontrollers: are full MIPS32, including memory protection, and there are many cheap implementations with 512KB of RAM and 2MB of ROM (even more). You can run e.g. LiteBSD on Olimex EMZ64 PIC32 board [1].
[1] https://www.olimex.com/Products/PIC/Development/PIC32-EMZ64/... (I'm not related to Olimex, I just love that board)
I'm confused by this, on page 12:
> The capacity of Internal SRAM 1 is 128 KB. Either CPU can read and write this memory at addresses 0x3FFE_0000 ~ 0x3FFF_FFFF of the data bus, and also at addresses 0x400A_0000 ~ 0x400B_FFFF of the instruction bus. The address range accessed via the instruction bus is in reverse order (word-wise) compared to access via the data bus.
That word-reversed mapping seems like a slightly nutty design quirk, but I find it hard to imagine how it could happen by accident. If it's a deliberate feature, is there anything it would actually be useful for?
The original feature is may be, that data access is byte wise, but as it is 32-bit CPU the instruction access is double-word wise. As it is also little endian someone may wanted to make the access easy.
0x3FFE_0000 accesses the least significant byte in the word accessed by 0x400B_FFFC.
0x3FFE_0001 accesses the second least significant byte in the word accessed by 0x400B_FFFC.
0x3FFE_0002 accesses the second most significant byte in the word accessed by 0x400B_FFFC.
0x3FFE_0003 accesses the most significant byte in the word accessed by 0x400B_FFFC.
0x3FFE_0004 accesses the least significant byte in the word accessed by 0x400B_FFF8.
0x3FFE_0005 accesses the second least significant byte in the word accessed by 0x400B_FFF8.
0x3FFE_0006 accesses the second most significant byte in the word accessed by 0x400B_FFF8.
0x3FFE_0007 accesses the most significant byte in the word accessed by 0x400B_FFF8.
……
0x3FFF_FFF8 accesses the least significant byte in the word accessed by 0x400A_0004.
0x3FFF_FFF9 accesses the second least significant byte in the word accessed by 0x400A_0004.
0x3FFF_FFFA accesses the second most significant byte in the word accessed by 0x400A_0004.
0x3FFF_FFFB accesses the most significant byte in the word accessed by 0x400A_0004.
0x3FFF_FFFC accesses the least significant byte in the word accessed by 0x400A_0000.
0x3FFF_FFFD accesses the second most significant byte in the word accessed by 0x400A_0000.
0x3FFF_FFFE accesses the second most significant byte in the word accessed by 0x400A_0000.
0x3FFF_FFFF accesses the most significant byte in the word accessed by 0x400A_0000.I guess you could use it to support rudimentary multi-threading, with two different stacks growing in opposite directions...
Also, if I read this correctly, you can use a non-addressable storage device (like SPI flash) and it'll demand load it via a cache? That's amazing.
In short: I really like it. Sensible processors are so dull.
This is already done like this on the esp8266.
I could imagine a hack like this where the CPU logic came from one vendor that had the opposite byte order than a previous CPU, and yet one wanted to keep some level of compatibility between them.
No, the Huzzah is based on the ESP8266, not the ESP32 ;)
As the name suggests, it's designed to make it easy to handle IR remote control signals, but it could also be used for precisely-timed control of e.g. servomotors.
Is this realistic? A Kickstarter project might be a way to do this...
Update: also see http://hackaday.com/2016/09/05/new-part-day-the-esp32-has-be...
Apparently the toolchain for the CPU is nowhere near as good as those for the ARM.
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
What is old about this, the 4.8.5 version of GCC was was released June 2015.
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.
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.
- 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.
Or do you mean that the ESP8266 has hardware acceleration for IPv4 but not IPv6?
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.
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...
I suppose that's probably going to be easiest way to get things done with it... or at least a really popular way.
https://www.pycom.io/solutions/py-boards/lopy/
is based on ESP32 and is running Micropython; I don't know if their port will be fully open source, though. They've said that they want to contribute as much as possible back to the micropython project, I think?
Edit: here's some info on their contributions to Micropython: https://www.pycom.io/qa-micropython-multi-threading-garbage-...
What would be the upper limit which harvested energy could deliver? Do you mean solar cells or harvesting microwaves from satellites, I could get about 1.5V or so from about a 60cm in diameter disk, have not measured the current available.
It would be really sweet to run something which speaks wifi even for short durations, if it recieves its energy from ephemeral radio.
I failed.
That's why IoT applications tend to use other, simpler and lower power radios and protocols.
https://en.wikipedia.org/wiki/IEEE_802.11ah
Is very interesting but I'm not aware of any SOC that supports it.
> It would be really sweet to run something which speaks wifi even for short durations, if it recieves its energy from ephemeral radio.
One interesting source of power is a simple coil-and-diode to harvest radio waves, do this for a while until you have enough power to boot your device, take a reading and send off a sample.
A few mW for a few seconds every couple of hours or so would be a good target. 100's to 1000's of mWs would take so long to harvest that you'd likely never get there because of leakage.
And 'speaking' is the right term, I don't seen an easy way for such comms to be bi-directional without a lot more power to be consumed.
Edit: I calculated a power flux density of 2.648µW/cm^2 from 3.16mV/m (70 dBµ) which is the 'city-grade contour' in the US. There seem to exist a patent for that, from a company called Freevolt (http://www.getfreevolt.com/).
In NL some clever person figured out that he could power his fluorescent tubes from the broadcasting tower across the street and promptly got sued for theft...
I've found another reference to this(dutch):
http://www.philipsradios.nl/forum/index.php?mode=thread&id=1...
That's because the 11ah standardization work is still in progress... It should be finally approved as a standard by the end of 2016: http://www.ieee802.org/11/Reports/802.11_Timelines.htm
For example, under typical indoor lighting conditions, you ought to be able to get something like a hundred microwatts per square inch. That sounds tiny, but 3 in^2 would be enough for a 0.1% duty cycle, which would let you wake up for a fraction of a second every few minutes and transmit a sensor reading.
Of course, that depends on having a very low sleep current, and on being able to transition between sleep and active WiFi connectivity very, very fast.
That solar power bank weighs 300g and measures 15x15cm (6"x6"). Should be within the spec for most projects.
What Im using esp8266 for, is to control a strip of those ws2812b led lights, the chip will not need much energy, only sporadically to change light colors or on/off, so if I place that solar pad close to it - the led lights will charge the chip which controls them!
Edit: also, I think the ESP8266 draws about 0.2W on average when it's on. If you have a 10 Wh battery, you can run it for 50 hours in theory. Would you then need deep sleep?
The human eye has a huge dynamic range; you might not realize just how well it compensates for differing amounts of illumination. Many indoor environments are 100 or even 1,000 times dimmer than outdoor direct sunlight.
Maybe a digit is missing?
I scanned the linked docs and did not see power specs leading to that number.
(Sorry, I know this is 'noise'.)
https://www.seeedstudio.com/ESP3212-Wifi-Bluetooth-Combo-Mod...
Near the bottom, heading 'hardware parameters'.
[1]: http://www.seeedstudio.com/ESP3212-Wifi-Bluetooth-Combo-Modu...
Some description above the pic:
• The size of ESP-3212 Wifi module is 16mm x 24mm x 3m.
• The ESP-3212 deploys 4MB SPI Flash with WSOP-8 package. It also uses 3DBi PCB antenna on board.
ESP3212 is an module, ESP32 is the chip.The general subject is Micro Controller Units (MCUs) (and to a lesser extent System On Chip (SOC)s) which are becoming cheap ($5) and abundant enough to fuel the so-called Internet of Things (IoT) . There are various tangential topics such as:
* Computer architecture: e.g., "data bus", "SRAM", "Von Neumann architecture", "SPI flash", "Reduced Instruction Set Computing (RISC)", ARM, etc.
* Electrical engineering: e.g., "pulse trains", "servomotors", "Analog to Digital Converter (ADC) & vice versa (DAC)", "milliwatts (mW)", "milli-amp hours (mAh)", etc.
* Software engineering: "address spaces", "multi-threading", "stack", "Rust", "Low-Level Virtual Machine" (LLVM)", "[software build/compiler] toolchain", "Software Development Kit (SDK)", "GNU C Compiler (gcc)", etc.
* Network/Communication protocols: WiFi, "Bluetooth Low Energy (BLE)", "run-length-encoding", "little-endian", "Internet Protocol Version 6 (IPv6)", "Transport Layer Security (TLS)", etc.
Make magazine (especially their electronics and Arduino YouTube channels--see below) might be a good info gateway for you.
Given the low prices already mentioned, I'd say that if you're interested in learning more, a good way to go would be to order something like an AdaFruit Trinket (link below) (or a fully-fledged Arduino or one of the ESP8266 or ESP32 boards in this article) and seeing what you can accomplish with it. Sparkfun also has some good tutorials if you're already confident on the coding side.
https://www.youtube.com/playlist?list=PLwhkA66li5vCOKe4Rx50f...
https://www.youtube.com/playlist?list=PLwhkA66li5vAmrRwrT8fO...
Also, anyone know how to pay more to get one of these ASAP? Or is anyone who has one willing to sell theirs?
Then you have this Realtek-RTL8710 which is ARM 32bit based, little less flash, more memory, and a bit more pricy, http://www.instructables.com/id/Realtek-RTL8710-Alternative-... buy here http://www.aliexpress.com/item/RTL8710-serial-WIFI-model-ESP... but it seems a bit more expensive than esp8266, which for IoT does make a difference.
So Id say, no not really, there isnt an alternative still. I think it is due to ARM requiring license costs which are higher than Xtensas so unit cost doenst reach $1.95 yet. Then it is also really difficult to both design a CPU and integrate the radio on it - with good power-management in such a small form-factor.
On the down side, they cost more that an ESP and I have seen occasionally flakey behavior in some boards that requires a manual reboot every few weeks.
BLE:
* Nordic nRF51/nRF52 - Very good option. Completely documented. You can do custom radio protocols. Very popular. * TI CC2650 - Looks good. Apparently fully documented. Unlike the Nordic chip it has a separate processor for the BLE stacks so your code doesn't get interrupted during connection events. Also supports IEEE 802.15.4. CC2640 is BLE only. * Samsung Artik 1 - BLE only; looks expensive * Intel Curie - I don't know much about this but apparently it isn't well documented.
Wifi and BLE:
* Intel Edison - Powerful but very expensive * Artik 5 - Again, powerful but expensive
I'm not really aware of any other solutions that have:
* Wifi * BLE * Readily available cheap modules
"Also, keep in mind that documentation is very much a work-in-progress! The techdoc as it is is basically the state of the art with regards to what we’ve finished writing, editing etc. There’s still way more coming up, and the basic idea is to document everything very well this time; apart from some sensitive stuff (mostly the WiFi and BT RF interface) we’re trying to not have any secrets." Source: http://hackaday.com/2016/09/05/new-part-day-the-esp32-has-be...
"Sorry, this baby has the shelf temporarily, you can browse other baby"
a) easy for them to interfere with primary 5ghz users Or
b) making multiple boards with an extra ROM chip ($$) telling people not to export them to other countries.
At least with 2.4ghz you can just stick to lower numbered channels.
From my quick scanning, power peaks seems to be lower but if somebody with better knowledge of these things can chip in that would be appreciated.
Mainly wondering if I should add these ESP32 to my collection or not (as I already have 2 CHIP:s and a few ESP8266) :-)
• Video streaming from camera
Can anyone tell me how you'd hook up a camera to this device?> ¥ is a currency sign used by the Chinese yuan (CNY) and the Japanese yen (JPY) currencies. This monetary symbol resembles a Latin letter Y with a double stroke.
It is much more likely that it is 19 Yuan, which is ~$3.
It also wouldn't make much sense to list a Japanese price on a Chinese website.
Still, $3 for a chip that does 'everything' isn't bad. From what I've seen everyone else wants 3x-10x more than that for chips (or, admittedly, sometimes modules) that do less.
With this ESP32, my bet is it can handle stereo without any other dedicated components and fluently.
Read more here https://github.com/espressif/ESP8266_MP3_DECODER
But I do agree that out of the box it's less "plug and play" as an Arduino.
The ESP-01 (which I started with) is quite painful to program, though - it uses a bizarre baud rate (78k?) and shares its GPIO with its programming pins.
Used a raspberry pi to control it, with a button to switch it into programming mode. No soldering, just wires and breadboard.
But now I use a d1 mini since its more comfortable/less breakage from accidentally removing wires when cleaning.
Your stuff is running bare metal though - your code is linked directly into the same binary payload as the RTOS. One of the major selling points of the ESP32 though was that it is dual core, so that you can have one core dedicated to servicing your code and the other to dealing with keeping the radio stack alive and such.