NordicOffGrid´ Logo
Off-grid solcellssystem.
I Nordiskt klimat!
 by Bosse
By AutonomTech.se Frittliv webbplats

 Webbsidan är senast uppdaterad:  

Hårdvara & Böcker

Hårdvara & Böcker för Arduino, ESP32 och FreeRTOS C/C++ utveckling

Webbsidan skapad 2022-04-02
Tar här upp lite hårdvara och böcker jag använder mig av eller planerar använda för min utveckling av Arduino ESP32 mikroprocessor SoC (System On a Chip) enkortsdator projekt.

Några boktips:

  • Developing IoT Projects with ESP32: 2022-04-02
    Automate your home or business with inexpensive Wi-Fi devices.
    Master the technique of using ESP32 as an edge device in any IoT application where wireless communication can make life easier.

    Developing IoT Projects with ESP32
    Developing IoT Projects with ESP32

    Publiceringsdatum: September 2021

  • FreeRTOS for ESP32-Arduino 2022-04-02
    Programming embedded systems is difficult because of resource constraints and limited debugging facilities. Why develop your own Real-Time Operating System (RTOS) as well as your application when the proven FreeRTOS software is freely available? Why not start with a validated foundation?
    Every software developer knows that you must divide a difficult problem into smaller ones to conquer it. Using separate preemptive tasks and FreeRTOS communication mechanisms, a clean separation of functions is achieved within the entire application. This results in safe and maintainable designs.
    The coverage of the FreeRTOS Application Programming Interface (API) is complete for the ESP32 Arduino environment.

    FreeRTOS for ESP32-Arduino
    FreeRTOS for ESP32-Arduino

    Publiceringsdatum: 2020

Några hårdvarutips:

  • ESP32: WeMOS D1 R32 ESPDuino32: 2022-04-02
    Kommer nu använda WeMOS D1 R32 ESPDuino32 4MB Wi-Fi and Bluetooth Board, ett ESP32 Uno, där de flesta Arduino Uno Shields fungerar ihop med, som det Olimex SHIELD-LCD16x2 display-shield jag redan testat.
    ESP32 datasheet och Espressif ESP32 SoC.
    The board can be programmed with the Arduino IDE selecting ESP 32 Dev Module board.
    Kortet kan programmeras från Arduino IDE eller VSCode-PlatformIO, i C/C++ eller MicroPython. Här används C/C++ för bra prestanda!
    USB-omvandlaren är en CH340 och behöver normalt inga extra drivrutiner för att fungera. Kortet kan drivas antingen från USB eller DC-kontakten (5 – 12VDC) med 3,3V internt.
    Har nu kompilerat både med "ESP32 Dev Module" & "WEMOS D1 MINI ESP32" boards och OK med båda, men kör med "ESP32 Dev Module" nu.
    Kodar i C/C++ baserat på FreeRTOS för en bra effektiv grund att bygga realtidssystem på.
    DuckDuckGo-sökning: WeMos® TTgo ESP32 WiFi + Bluetooth Board 4MB Flash UNO D1 R32.
    2022-06-14
    Espressif skriver om ESP32: "Powered by 40 nm technology, ESP32 SoC provides a robust, highly integrated platform, which helps meet the continuous demands for efficient power usage, compact design, security, high performance, and reliability."
    Att jämföra med att många fordonstillverkare fortfarande i juni 2022 förlitar sig på kontrollchip (SoC) från Infieon i storleken 90 nanometer! Så ESP32 är effektivare och strömsnålare än de SoC många biltillverkare använder.
    2022-06-27 New
    Espressif är aktiva med sin CPU / SoC utveckling: :-)
    "Espressif´s ESP32-C5 is the industry´s first RISC-V SoC solution that supports 2.4 and 5 GHz dual-band Wi-Fi 6, along with Bluetooth LE. It is designed for applications that require high-efficiency wireless transmissions [with low-latency]."
    "ESP32-C5 has a 32-bit, RISC-V, single-core processor which can clock up to 240 MHz in speed. It has a 400KB SRAM, 384KB of ROM, and it works with external flash. It has more than 20 programmable GPIOs, while supporting all the commonly-used peripheral and the best-in-class security features. Also included is an SDIO 2.0 Slave interface.": Introducing ESP32-C5
  • Display via I2C: Olimex Shield-LCD 16x2: 2022-04-02, uppdaterad 2022-04-11
    Olimex Shield-LCD 16x2 Har hittat och utvärderat en bra liten LCD-display med 2x16 teckens visning, med bra tillgänglighet hos flera webbshoppar. Med god läsbarhet vid enbart omgivningsljus samt med bakgrundsbelysning vid behov. Vid lcdSetBlacklight(0) har den fortfarande en mikroskopisk belysning aktiverad, så den går att läsa i nattmörker utan att direkt uppfattas som bakgrundsbelyst.
    Olimex Shield-LCD 16x2 med fyra tryck­knappar som styrs via I2C-bussen. Har även 9st GPIO på kortet, också åt­kom­liga via I2C. Samt man kan styra ljus­styrk­an via sin kod inom 0-255, där jag nu använder lcdSetBlacklight(85) för lagom bak­grunds­belys­ning dvs bara 1/3-del av ljus­styrkan. Strömförbrukning släckt lcdSetBlacklight(0) ca 4,5mA.
    När Olimex Shield-LCD 16x2 ska samsas med annan enhet / sensor på I2C kräver den en delay(40) (40ms) mellan den andra I2C-kommunikationen och sin egen I2C-kommunikation för att inte hänga sig, testat mot INA219-strömsensor på ett Arduino Uno R3.
    Olimex Shield-LCD 16x2 kräver Wire.setClock(80000) för I2C-kommunikationen för stabil långvarig drift. Vid prov med Wire.setClock(100000) hängde sig displayen någon enstaka sällsynt gång vid långvarig drift på ett Arduino Uno R3!
    Olimex Shield-LCD 16x2 kan även kommunicera via UART och kommandon typ Serial.println("CLEAR");, Serial.println("GOTOXY:2:1");, etc, vilket aktiveras via lcd.uartEnable(true);.
    Har man behov av att kör annan kommunikaton över I2C med bättre prestanda eller kommer använda multitasking via FreeRTOS kan det kanske bli nödvändigt att använda UART, speciellt på en 2-kärnig ESP32. Kan bli svårt att garantera de delay(40) ms annars kanske! Kan eventuellt lösas med FreeRTOS Mutex / Semaphore? och en global variable för när annan än Olimex Shield-LCD I2C-kommunikation gjordes senast? För dynamisk delay(40).
    Olimex Shield-LCD 16x2 har även en delay(20) ms i sin C++ bibliotekskod efter varje sänt tecken, så har uppenbarligen ingen buffert för sina 16x2 tecken. Ger en svagpresterande långsamma kommunikation över I2C! Kan skapa problem när den ska samsas med annan I2C-kommunikation med mer krav på prestanda. Men är annars smidig att arbeta med!
    SparkFun 20x4 SerLCD nedan verkar då lite mer prestandainriktad över I2C!
  • RHT03 fukt-temp-sensor (DHT22-kompatibel): 2022-04-02
    Olimex Shield-LCD 16x2 RHT03 fukt-temp-sensor har bra arbetsområde, är strömsnåla samt är bra fabrikskalibrerade. Klarar låga temperaturer bättre än DHT22.
    Measure relative humidity and temperature with the RHT03 low cost sensor on a single wire digital interface connected to an Arduino!
    Datasheet: "RHT03 output calibrated digital signal. It applys exclusive digital-signal-collecting-technique and humidity sensing technology, assuring its reliability and stability. Its sensing elements is connected with 8-bit single-chip computer.
    Every sensor of this model is temperature compensated and calibrated in accurate calibration chamber and the calibration-coefficient is saved in type of programme in OTP memory, when the sensor is detecting, it will cite coefficient from memory.
    Small size & low consumption & long transmission distance (100m) enable RHT03 to be suited in all kinds of harsh application occasions. Single-row packaged with four pins, making the connection very convenient
    "
    Power supply: 3.3-6V DC
    Current supply: Measuring <1.5mA; Stand-by <50uA
    Collecting period: every 2 seconds
    Operating range: humidity 0-100%RH; temperature -40~+80°C
    Resolution: ±0.1%RH; ±0.1°C
    Accuracy: humidity ±2%RH (Max ±5%RH); temperature ±0.5°C
    Humidity hysteresis: ±0.3%RH
    Long-term Stability: ±0.5%RH/year
  • Adafruit INA260: 2022-04-02, uppdaterad 2022-04-05
    Olimex Shield-LCD 16x2 Adafruit INA260 Current + Voltage + Power Sensor Breakout. Measure high or low side current, voltage, and power with the integrated shunt resistor! Precisionsmätare för Volt, Ampere och Watt via I2C, ≤+36V vid upp till ±15A kontinuerligt, ≤540W.
    The voltage across the integrated 2 milliohm (.002 ohms!), 0.1% shunt resistor is measured by the internal 16 bit ADC, allowing for measurements over the impressive current range with a resolution of 1.5 mA. Med ±1.5 mA upplösning i strömmätning fås ±1 Ah/30dygn för batterimonitor som bäst.
    Att alla analoga signaler mäts internt i INA260 och sedan skickas digitalt via I2C gör den tålig mot störningar samt ger hög stabil precision.
    This breakout board may well be the last current sensing solution you every need to buy. Not only can it do the work of two multimeters, but it can do it with amazing precision and flexibility. With it you can measure high or low side DC current, the bus voltage, and have it automatically calculate the power. It can do so over impressive voltage, current, and temperature ranges with better than 1% accuracy, all while delivering the data in an easy to use format over I2C.
    Works great with any microcontroller that is CircuitPython or Arduino compatible as well as single board computers such as the Raspberry Pi. It is compatible with 3V or 5V logic and can measure bus voltages up to +36VDC. Not for use with AC voltages.
    Supply current: 310 µA.
    Operating temperature range: -40°C to 125°C.
    Temperature Coefficient: 10 ppm/°C. See datasheet & productpage.

    Adafruit INA260 Arduino Library: Adafruit_INA260 Class Reference
    Skulle önska det även fanns en för ±30A kontinuerligt! Finns då INA226 36V, 16-bit, ±81,9mV, ultra-precise I2C output current / voltage / power monitor w/alert för extern strömshunt.
    Amazone.se INA226 breakout board
    Arduino library for INA226, INA226Lib Arduino, INA226_WE Arduino
    How to properly design a power monitor into a system.
    Integrating the Current Sensing Resistor.
    Finns även den mindre INA219 ≤+26V ±3.2A med lite lägre precision och färre möjligheter: Adafruit_INA219 Class Reference.
    INA219 tar 3250±10µs att läsa av de 4st getShuntVoltage_mV(), getBusVoltage_V(), getCurrent_mA() & getPower_mW() i direkt följd, uppmätt på en Arduino Uno R3.
    Att bara läsa av getCurrent_mA() strömvärdet tar 1060±5µs på en Arduino Uno R3.
    Uppmätt med Wire.setClock(80000) satt för I2C-kommunikationen, vilket Olimex Shield-LCD 16x2 kräver som max för stabil långvarig drift.
  • PCF8574 I2C I/O Expander: 2022-04-07
    Olimex Shield-LCD 16x2 PCF8574 Remote 8-Bit I/O Expander for I2C Bus. PCF8574 är en IO-expander för anslutning via I2C. IO-expandern ger 8st extra GPIO´s med hög drivförmåga och latchande utgångar. Kretsen har interrupthantering för att underlätta sporadisk avläsning. PCF8574 har 3st adressingångar för ett maximalt antal av 8st kretsar per buss. Kompatibel med både Arduino och ESP32 med färdiga bibliotek till.
    * Matningsspänning: 2.5 – 6V
    * Strömförbrukning: 10uA
    * Drivförmåga: 25mA (per port) / max 100mA (hela kretsen)
    * Gränssnitt: I2C ≤100kHz
    För eget bygge av t.ex. 4st tryckknappar och 4st LED till en I2C display, eller motsvarande.
    Eller 4st tryckknappar, 1st LED samt 3x25mA att mata typ en SparkFun 20x4 SerLCD nedan för att kunna styra dess strömförbrukning ON / OFF? Kan så ifall aktivera display via knapptryckning eller automatiskt när systemet är aktivt.
  • SparkFun 20x4 SerLCD: 2022-04-07
    Om Olimex Shield-LCD 16x2 displayen högre upp med sin lite svag­pre­sterande lång­samma kom­muni­kation över I2C skulle vålla mig problem ihop med ESP32-FreeRTOS 2-kärniga multi­tasking är detta ett alternativ att prova - verkar mer prestandainriktad:
    Olimex Shield-LCD 16x2 SparkFun 20x4 SerLCD - RGB Backlight (Qwiic). The SparkFun SerLCD is an AVR-based, serial enabled LCD that provides a simple and cost effective solution for adding a 20x4 Black on RGB Liquid Crystal Display into your project. We´ve overhauled the design to include an ATmega328P that handles all of the screen control, meaning a backpack is no longer needed! This display can now accept three different types of communication protocols: serial, I2C, and SPI. This simplifies the number of wires needed and allows your project to display all kinds of text and numbers.
    The on-board ATmega328P AVR microcontroller utilizes 11.0592 MHz crystal for greater communication accuracy with adjustable baud rates of 1200 through 1000000 but is default set at 9600. Finns även som SparkFun 16x2 SerLCD.
    * Incoming buffer stores up to 80 characters.
    * Pulse width modulation of backlight allows direct control of backlight brightness.
    * Pulse width modulation of contrast allows for software defined contrast amount.
    * Input voltage: 3.3V-9V (3.3V only via Qwiic connector and "+" pin).
    * I/O logic levels: 3.3V.
    * Current consumption @ 3.3V: 4.5mA - 41mA.
  • FireBeetle ESP32 IoT Microcontroller 10µA deep-sleep: 2022-04-02
    Olimex Shield-LCD 16x2 För riktigt strömsnåla projekt och liten formfaktor finns FireBeetle ESP32 IoT Microcontroller från DfRobot, som bara drar 10µA i deep-sleep samt 1.94mA i light-sleep.
    Är nog något jag så småningom kommer prova på i framtiden!
    "DFRobot FireBeetle series is the low-power consumption micro-controller intentionally designed for Internet of Things (IoT) projects. FireBeetle Board - ESP32 integrates a Dual-Core ESP-WROOM-32 module, which supports MCU and Wi-Fi &Bluetooth dual-mode communication. The electric current is just 10µA ultra-low power in the deep-sleep mode. The main controller supports two power supply methods: USB and 3.7V external lithium battery. And both USB and external DC can charge the Lipo battery directly.
    FireBeetle ESP32 has made a special hardware design for Arduino IDE. You can make a download without switching boot-mode manually. It supports Arduino, IDF (linux), micropython etc. Moreover, FireBeetle made a pin mapping for Arduino IDE. It can be configured with Dx transport, compatible with Arduino UNO and reduce the entry barrier.
    "
    DfRobot blog: Deep Sleep Tutorial for ESP32 Using the RTC ULP Co-processor and Two Lines of Code.

    Strömförbrukning hos några olika ESP32 - Guide to Reduce the ESP32 Power Consumption by 95%:
    Olimex Shield-LCD 16x2
    ESP32 WeMOS D1 R32 ESPDuino32 4MB Board liknar ESP32-DevKitC i strömförbrukning.
  • Adafruit Feather HUZZAH32 – ESP32: 2022-04-02
    Olimex Shield-LCD 16x2 En annan ESP32 med bra formfaktor och lätt att få tag på, som också kan var intressant att prova i framtiden där inte låg strömförbrukning är huvudfokus, Adafruit HUZZAH32 - ESP32 Feather med 6,8mA i deep-sleep och 8,4mA i light-sleep.
    The HUZZAH32 is our ESP32-based Feather, made with the official WROOM32 module. We packed everything you love about Feathers: built in USB-to-Serial converter, automatic bootloader reset, Lithium Ion/Polymer charger, and all the GPIO brought out so you can use it with any of our Feather Wings.
    That module nestled in at the end of this Feather contains a dual-core ESP32 chip, 4 MB of SPI Flash, tuned antenna, and all the passives you need to take advantage of this powerful new processor. The ESP32 has both WiFi and Bluetooth Classic/LE support. That means it´s perfect for just about any wireless or Internet-connected project.
Solcellsström vid svagt ljus är ett viktig tillskott!
Webpage: server time: 67.9 ms, (incl. log: 48.6 ms) ||