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
    Boken "FreeRTOS for ESP32-Arduino" tycker jag är riktigt bra och är en stor hjälp för mig att med liten insats komma igång med FreeRTOS! Är väldigt tydligt och lättläst, samt förklarar väldigt fint så man snabbt kommer igång. Jag gör redan nu i mitt första FreeRTOS-projekt i ESP32 ganska avancerade funktioner! Kör då med platformio/framework-arduinoespressif32 som baseras på FreeRTOS och därmed har det inbyggt utan extra overhead kodmässigt.
    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.
    2022-08-03 I ESP32 Arduino 2.0.4 based on ESP-IDF 4.4.2 finns nu Wemos D1 Uno board tillagt med mer info hos GitHub: WEMOS D1 R32.
    Så använder nu - board = wemos_d1_uno32 - i platformio.ini.
    Kodar i C/C++ baserat på FreeRTOS för en bra effektiv grund att bygga realtidssystem på.
    DuckDuckGo: WeMos® TTgo ESP32 WiFi + Bluetooth Board 4MB Flash UNO D1 R32.
    Wemos D1 R32 Uno pinOut
    Wemos D1 R32 Uno pinOut
    Espressif garanterar minst 12års produkt­cykel­livs­längd "longevity commitment" för sina SoC-processor­familjer, så för denna ESP32 minst till 1 Jan 2028! Därefter är nog ESP32-S3 en värdig ersättare, eller tidigare.
    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
    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 som då drar ca 13mA. Strömförbrukning släckt lcdSetBlacklight(0) är ca 6mA.
    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
  • DS18B20 tempgivare OneWire: 2022-07-14
    DS18B20 waterproof DS18B20 är en vanligt använd temperaturgivare inom Arduino / ESP32 projekt, som finns både som lös komponent och som vattantät kapslad med kablage, rostfri- eller plast-kapsling. Sensorn har en programerbar upplösning på 9–12-bitar och ger en noggrann avläsning mellan -50 till +85°C.
    Introducing DS18B20 Temperature Sensor, Arduino, Random­Nerd­Tutorials.
    ESP32 with Multiple DS18B20 Temperature Sensors, Random­Nerd­Tutorials.
    Finns många bibliotek för DS18B20, där det kombinerade OneWire + DS18B20 OneWireHub verkar intressant:
    OneWireHub, Arduino.cc
    OneWireHub, GitHub
    OneWireHub, PlatformIO, detaljerat beskrivet
    Annars är nog DallasTemperature + OneWire den klassiska kombinationen: DallasTemperature, Arduino.cc
    DallasTemperature, GitHub
    OneWire, Arduino.cc
  • 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 - köpte: TECNOIOT 2 st INA226 IIC I2C
    Arduino library for INA226, INA226Lib Arduino, INA226_WE Arduino, GitHub: INA226_WE, INA226_WE: INA226 Current and Power Sensor
    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.
    Finns även INA3221 Triple-Channel, High-Side Measurement som mäter strömmen för tre externa strömshuntar, amazon.se: TECNOIOT-INA3221.
  • 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.
  • OP Rail to rail: 2022-10-14
    Rail-to-rail OP-förstärkare för 3-5V drivspänning (Electrokit):
  • 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.
  • OLED 128x64 I2C SSD1306: 2022-08-19
    OLED 128x64, 0,96", I2C-display, SSD1306 kontroller kompatibel med Arduino / ESP32:
    Olimex Shield-LCD 16x2 En smidig 0,96" (24mm) grafisk monokrom display.
  • 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.
  • Kopplingsdäck / BreadBoard: 2022-11-20
    BreadBoard 400 Kopplingsdäck är väldigt smidiga för experimentell uppkoppling samt när man söker sig fram till en slutlig lösning.
    Data / begränsningar: Strömmar över 1 A och frekvenser över 1 MHz - då ska man leta efter andra lösningar. Kapacitansen mellan stripsen är ca 10 pF.
    Vanligtvis är avståndet mellan kontaktpunkterna 2.54 mm (0.1 tum) vilket gör att många komponenter kan placeras direkt på kopplingsdäcket.
    Synchronous buck converter
    Nordic Clima FanControl under utveckling: Experiment­upp­koppling byggd på kopplings­däck (Bread­board) med banan­anslutning mot labaggregat, samt monterat ihop på en egen DIY-basplatta med hållare för Arduino Uno R3.
  • Elektronikbyggsats Philips EE8 / EE20: 2022-07-25
    Jag fick en Philips EE20 experimentlåda i 8-9 års åldern i mitten av 1960-talet och det var början på elektronik­intresset och lärandet av kunskap om det. Med tiden köpte jag till fler extra komponenter hos JostyKit i Malmö. Och så byggdes det motorstyrning till RC-båt (buck converter) lött på experiment­kretskort, eget konstruerat labbaggregat med smart-laddare för blybatteri, elektroniska ladd­regulatorer till bilarnas generatorer, egenutvecklat avancerat kraftfullt kondensator­tänd­system till bilarna m.m. och nu bygger jag baserat på Arduino och ESP32 med MOSFET kraft­elek­tronik och IC-kretsar. Blev till en skoj hobby!
    Philips Electronic Engineer EE20
    Philips Electronic Engineer EE20
    Philips EE20Philips EE20Philips EE20

    Vilken senare följdes av experimentlådan Philips Mechanical Engineer ME1200:
    Så blev det en del mekatronik (Mechatronics) (elektronik+mekanik) byggt, vilket även blev en del av mitt ingen­jörs­jobbande som maskin­ingenjör under stor del av yrkeslivet.
    Philips Mechanical Engineer ME1200
    Philips Mechanical Engineer ME1200
    Min far som stod bakom detta ska ha all cred för det, R.I.P, då de var både roliga, intressanta samt lärande och haft en positiv inverkan på mitt liv och har så fortfarande!

    Mechatronics: "an approach aiming at the synergistic integration of mechanics, electronics, control theory, and computer science within product design and manufacturing, in order to improve and/or optimize its functionality":
    Mechatronics diagram
    Aerial Euler diagram from RPI´s website describes the fields that make up mechatronics, CC BY-SA 3.0
Solcellsström vid svagt ljus är ett viktig tillskott!
Webpage: server time: 72.2 ms, (incl. log: 53.0 ms) ||