Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
esp32:esp32_main [2017/12/15 23:40]
admin [Programming the ESP32]
esp32:esp32_main [2020/11/17 16:01] (current)
admin [DAC and ADC]
Line 2: Line 2:
  
 [[https://espressif.com/en/products/hardware/esp32/resources|Dokumentation and Datasheet]]\\ [[https://espressif.com/en/products/hardware/esp32/resources|Dokumentation and Datasheet]]\\
 +
 +[[https://leanpub.com/kolban-ESP32|Kolban's Book on ESP32]]\\
 +
 [[https://github.com/pcbreflux/espressif]]\\ [[https://github.com/pcbreflux/espressif]]\\
 +
 {{:esp32:esp323_pinout_wroom_pinout.png?600|}}\\ {{:esp32:esp323_pinout_wroom_pinout.png?600|}}\\
 +
 +----
 +===== Serial to USB Driver =====
 +
 +- [[https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers| SiLabs CP2104]]\\
 +- [[https://github.com/himalayanelixir/Arduino_USB_Drivers|CH340]]\\
  
 ---- ----
Line 16: Line 26:
 </html> </html>
  
-=== Upload a Scetch ===+=== Upload a Sketch ===
 The Examples for the ESP32 become visible after selecting **ESP32 DEV MODULE** in the Arduino IDE.\\ The Examples for the ESP32 become visible after selecting **ESP32 DEV MODULE** in the Arduino IDE.\\
-Set the flashing speed to 460800 or lower.\\ +Set the flashing speed to 460800 or lower (115200).\\ 
-Upload your scetch.\\+Upload your sketch.\\ 
 +It could be necessary to start the IDE with administrator rights, too.\\ 
 + 
 +---- 
 +=== Special Hardware Configuration ==== 
 + 
 +** The I/O pins are not 5V-tolerant! **\\ 
 +Use 3.3V instead.\\ 
 +\\ 
 +The build in LED is on GPIO 2.\\ 
 +\\ 
 +GPIO 34, 35, 36, 37, 38 and 39 are input only. And don't have a software pull-up or pull-down functions. One has to use an external 10k pull-up resistor.\\ 
 +\\ 
 +GPIO 6, 7, 8, 9, 10 and 11 are used for the SPI flash chip and can't be used  for any other purposes.\\
  
 ---- ----
Line 25: Line 48:
  
 {{:esp32:ita4kni.jpg?600|}}\\ {{:esp32:ita4kni.jpg?600|}}\\
-The OLED is connected to pin5 (SDA) and to pin 4 (SCL).\\+The OLED is connected like that:\\ 
 +    pin5 SDA 
 +    pin4 - SCL 
 +The I2C address of the screen is 0x3c.\\ 
 +    #include "SSD1306.h" 
 +    SSD1306  display(0x3c, 5, 4); 
 Librarie:\\ Librarie:\\
 [[https://github.com/squix78/esp8266-oled-ssd1306]]\\ [[https://github.com/squix78/esp8266-oled-ssd1306]]\\
 Board:  ESP32 Dev Module Board:  ESP32 Dev Module
  
 +Manuals:\\
 [[http://www.instructables.com/id/ESP32-With-Integrated-OLED-WEMOSLolin-Getting-Star/]]\\ [[http://www.instructables.com/id/ESP32-With-Integrated-OLED-WEMOSLolin-Getting-Star/]]\\
 +[[https://techtutorialsx.com/2017/12/02/esp32-arduino-interacting-with-a-ssd1306-oled-display/]]\\
  
 ---- ----
Line 60: Line 90:
 ---- ----
 ==== Programming the ESP32 ==== ==== Programming the ESP32 ====
-IO pin 34 and pin 35 don't work!+IO pin 34 and pin 35 don't work!\\ 
 +**ESP-IDF Programming Guide**\\ 
 +[[https://esp-idf.readthedocs.io/en/v2.0/index.html]]\\
  
-DAC:\\+**the 8bit DAC:**\\
 [[https://esp-idf.readthedocs.io/en/v2.0/api/peripherals/dac.html]]\\ [[https://esp-idf.readthedocs.io/en/v2.0/api/peripherals/dac.html]]\\
 +   #include <driver/dac.h>
 +   void setup() {
 +   }
 +  void loop() {
 +   for (int i=0; i<255; i++){
 +   dac_out_voltage(DAC_CHANNEL_1, i);
 +   }
 +  }
 +Output is a signal between 0 and 3.2V with 76Hz.
  
 ---- ----
 +==== Adafruit HUZZAH32 – ESP32 Feather Board ====
 +
 +[[https://www.adafruit.com/product/3405|Adafruit HUZZAH32 – ESP32 Feather Board]]\\
 +[[https://learn.adafruit.com/adafruit-huzzah32-esp32-feather|Adafruit Learn Guid]]\\
 +
 +----
 +===== DAC and ADC =====
 +
 +**ADC**\\
 +   analogRead(GPIO);
 +   analogReadResolution(resolution) //set the sample bits and resolution in bits, 9 => (0 – 511) and 12 => (0 – 4095), default 12
 +
 +   analogSetWidth(width) //set the sample bits and resolution
 +   analogSetCycles(cycles) //set the number of cycles per sample, range: 1 - 255, default 8 
 +   analogSetSamples(samples) //set the number of samples in the range, default is 1 sample
 +   analogSetClockDiv(attenuation) //set the divider for the ADC clock, range: 1 - 255, default is 1
 +   analogSetAttenuation(attenuation) //sets the input attenuation for all ADC pins. Default is ADC_11db. Accepted values:
 +    ADC_0db: sets no attenuation (1V input = ADC reading of 1088).
 +    ADC_2_5db: sets an attenuation of 1.34 (1V input = ADC reading of 2086).
 +    ADC_6db: sets an attenuation of 1.5 (1V input = ADC reading of 2975).
 +    ADC_11db: sets an attenuation of 3.6 (1V input = ADC reading of 3959).
 +   analogSetPinAttenuation(pin, attenuation) //sets the input attenuation for the pin, default is ADC_11db
 +   adcAttachPin(pin) //attach a pin to ADC, returns TRUE or FALSE
 +   adcStart(pin) //starts an ADC conversion on attached pin’s bus 
 +   adcBusy(pin) //check if conversion on the pin’s ADC bus is running, returns TRUE or FALSE 
 +   adcEnd(pin) //get the result of the conversion: returns 16-bit integer
 +
 +taken from: [[https://www.malabdali.com/esp32-adc-and-dac/]]
 +
 +----
 +**DAC**\\
 +The ESP32 has two DAC pins, GPIO25 and GPIO26. The resolution is 8 bits.\\
 +   dacWrite(25, Value); // 255=3.3V 128=1.65V 0=0.0V
 +For generating a sine wave one finds a good manual here: [[https://www.xtronical.com/basics/audio/dacs-on-esp32/|DAC’s on ESP32]]\\
 +
 +----
 +