- Important Change from v1.7.0
- Why do we need this MySQL_MariaDB_Generic library
- Changelog
- Prerequisites
- Installation
- HOWTO Fix
Multiple Definitions
Linker Error - Packages' Patches
- 1. For Adafruit nRF52840 and nRF52832 boards
- 2. For Teensy boards
- 3. For Arduino SAM DUE boards
- 4. For Arduino SAMD boards
- 5. For Adafruit SAMD boards
- 6. For Seeeduino SAMD boards
- 7. For STM32 boards
- 8. For RP2040-based boards using Earle Philhower arduino-pico core
- 9. For Portenta_H7 boards using Arduino IDE in Linux
- 10. For RTL8720DN boards using AmebaD core
- 11. For SAMD21 and SAMD51 boards using ArduinoCore-fab-sam core
- 12. For Seeeduino RP2040 boards
- Libraries' Patches
- HOWTO Use analogRead() with ESP32 running WiFi and/or BlueTooth (BT/BLE)
- Important Notes
- Basic Usage
- Examples
- Example Basic_Select
- Debug Terminal Output Samples
- 1. Query_Progmem on NRF52840_FEATHER using W5x00/Ethernet_Generic Library
- 2. Complex_Select on NUCLEO_F767ZI using LAN8742A/STM32Ethernet Library
- 3. Query_Results_WiFi on ITSYBITSY_M4
- 4. Basic_Select_WiFi on SEEED_XIAO_M0
- 5. Query_Results_WiFiNINA on SAMD_NANO_33_IOT
- 6. Connect_By_Hostname on SAM DUE using W5x00/Ethernet_Generic Library
- 7. Complex_Select on NRF52840_FEATHER using ENC28J60/UIPEthernet Library
- 8. Complex_Select on NRF52840_FEATHER using ENC28J60/EthernetENC Library
- 9. Query_Progmem on NRF52840_FEATHER using ENC28J60/EthernetENC Library
- 10. Basic_Insert_ESP on ESP8266_NODEMCU_ESP12E
- 11. Basic_Insert_ESP on ESP32S2_DEV
- 12. Basic_Select_WiFiNINA on MBED NANO_RP2040_CONNECT
- 13. Complex_Select on MBED RASPBERRY_PI_PICO using W5x00/Ethernet_Generic Library
- 14. Complex_Select on RASPBERRY_PI_PICO using W5x00/Ethernet_Generic Library
- 15. Complex_Select_WT32_ETH01 on WT32-ETH01
- 16. Complex_Select on Teensy 4.1 with NativeEthernet
- 17. Complex_Select on Teensy 4.1 with QNEthernet
- 18. Complex_Insert on PORTENTA_H7_M7 using Portenta_Ethernet
- 19. Complex_Select_WiFi on PORTENTA_H7_M7
- Debug
- Troubleshooting
- Issues
- TO DO
- DONE
- Contributions and Thanks
- Contributing
- License
- Copyright
Please have a look at HOWTO Fix Multiple Definitions
Linker Error
Why do we need this MySQL_MariaDB_Generic library
Have you ever wanted to connect your Arduino project to a database to either store the data you've collected or retrieve data saved to trigger events in your sketch?
Well, now you can connect your Arduino project directly to a MySQL / MariaDB server without using an intermediate computer or a web-based or cloud-based service. Having direct access to a MySQL / MariaDB database server means you can store data acquired from your project as well as check values stored in tables on the server.
This also means you can setup your own, local MySQL server to store your data further removing the need for Internet connectivity. If that is not an issue, you can still connect to and store data on a MySQL server via your network, Internet, or even in the cloud!
This MySQL_MariaDB_Generic library will let you to do exactly that and more!
This MySQL_MariaDB_Generic library is based on and modified from Dr. Charles Bell's MySQL_Connector_Arduino Library, to provide support to many more boards and shields, such as Arduino SAMD21, Adafruit SAMD21/SAMD51, Seeeduino SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1, Teensy, SAM DUE, AVR Mega, RP2040-based (Nano RP2040 Connect, RASPBERRY_PI_PICO, ADAFRUIT_FEATHER_RP2040 and GENERIC_RP2040), Portenta_H7, etc. boards. Those supported boards can be used with ESP8266/ESP32’s WiFi, WiFiNINA, W5x00/ENC28J60/LAN8742A Ethernet, ESP8266/ESP32-AT, NativeEthernet/QNEthernet modules/shields, Portenta_H7 WiFi/Ethernet.
This MySQL_MariaDB_Generic library currently supports these following boards:
-
nRF52 boards, such as AdaFruit Feather nRF52832, nRF52840 Express, BlueFruit Sense, Itsy-Bitsy nRF52840 Express, Metro nRF52840 Express, NINA_B302_ublox, NINA_B112_ublox, etc.
-
SAMD21
- Arduino SAMD21: ZERO, MKRs, NANO_33_IOT, etc.
- Adafruit SAMD21 (M0): ItsyBitsy M0, Feather M0, Feather M0 Express, Metro M0 Express, Circuit Playground Express, Trinket M0, PIRkey, Hallowing M0, Crickit M0, etc.
- Seeeduino: LoRaWAN, Zero, Femto M0, XIAO M0, Wio GPS Board, etc.
- SAMD51
- Adafruit SAMD51 (M4): Metro M4, Grand Central M4, ItsyBitsy M4, Feather M4 Express, Trellis M4, Metro M4 AirLift Lite, MONSTER M4SK Express, Hallowing M4, etc.
- Seeeduino: Wio Terminal, Grove UI Wireless
- SAM DUE
- Teensy (4.1, 4.0, 3.6, 3.5, 3,2, 3.1, 3.0) using either Ethernet, WiFi, or for Teensy 4.1 NativeEthernet/QNEthernet
- STM32F/L/H/G/WB/MP1 boards (with 32+K Flash)
- Nucleo-144
- Nucleo-64
- Discovery
- Generic STM32F0, STM32F1, STM32F2, STM32F3, STM32F4, STM32F7 (with 64+K Flash): x8 and up
- STM32L0, STM32L1, STM32L4, STM32L5
- STM32G0, STM32G4
- STM32H7
- STM32WB
- STM32MP1
- LoRa boards
- 3-D printer boards
- Generic Flight Controllers
- Midatronics boards
-
ESP32
-
ESP8266
-
RP2040-based boards, such as Nano_RP2040_Connect, using Arduino mbed OS for Nano boards.
-
RP2040-based boards, such as RASPBERRY_PI_PICO, ADAFRUIT_FEATHER_RP2040 and GENERIC_RP2040, using Arduino-mbed RP2040 core or Earle Philhower's arduino-pico core.
-
RP2040-based boards, such as Seeed XIAO RP2040, using Seeeduino RP2040 core
-
WT32_ETH01 (ESP32 + LAN8720A)
-
Portenta_H7 using either
Murata WiFi
orVision-shield Ethernet
- WiFiNINA using
WiFiNINA_Generic library
- WiFi101 using
WiFi101 library
- u-blox W101, W102 using
WiFiNINA_Generic library
- ESP8266-AT command using
WiFiEspAT library
- ESP8266/ESP32-AT command using
ESP_AT_Lib library
- Portenta_H7 built-in Murata WiFi
- W5x00 using
Ethernet_Generic
library - W5x00 using
Ethernet
,EthernetLarge
,Ethernet2
orEthernet3
library - ENC28J60 using
EthernetENC
orUIPEthernet
library - Teensy 4.1 built-in Ethernet using
NativeEthernet
library - Teensy 4.1 built-in Ethernet using
QNEthernet
library - Portenta_H7 Ethernet using
Portenta_Ethernet
library
-
ESP32 Core 2.0.2+
for ESP32-based boards. -
ESP8266 Core 3.0.2+
for ESP8266-based boards. . -
Arduino AVR core 1.8.5+
for Arduino (Use Arduino Board Manager) for AVR boards. -
Teensy core v1.56+
for Teensy (4.1, 4.0, 3.6, 3.5, 3,2, 3.1, 3.0) boards. -
Arduino SAM DUE core v1.6.12+
for SAM DUE ARM Cortex-M3 boards. -
Arduino SAMD core 1.8.13+
for SAMD ARM Cortex-M0+ boards. -
Adafruit SAMD core 1.7.10+
for SAMD ARM Cortex-M0+ and M4 boards (Nano 33 IoT, etc.). -
Fab_SAM_Arduino core v1.16.18-alpha2+
for SAMD21/SAMD51 boards. -
Seeeduino SAMD core 1.8.2+
for SAMD21/SAMD51 boards (XIAO M0, Wio Terminal, etc.). -
Seeeduino RP2040 core 2.7.2+
for XIAO RP2040 boards. -
Adafruit nRF52 v1.3.0+
for nRF52 boards such as Adafruit NRF52840_FEATHER, NRF52832_FEATHER, NRF52840_FEATHER_SENSE, NRF52840_ITSYBITSY, NRF52840_CIRCUITPLAY, NRF52840_CLUE, NRF52840_METRO, NRF52840_PCA10056, PARTICLE_XENON, NINA_B302_ublox, etc. -
Arduino Core for STM32 v2.2.0+
for STM32F/L/H/G/WB/MP1 boards. -
Earle Philhower's arduino-pico core v1.13.1+
for RP2040-based boards such as RASPBERRY_PI_PICO, ADAFRUIT_FEATHER_RP2040 and GENERIC_RP2040, etc. -
Arduino mbed_rp2040 core 3.0.1+
for Arduino (Use Arduino Board Manager) RP2040-based boards, such as RASPBERRY_PI_PICO. -
WiFiNINA_Generic library v1.8.14-3+
for WiFiNINA. To install. check . -
Depending on which Ethernet module/shield you're using :
Ethernet_Generic library v2.0.1+
for W5100, W5200 and W5500/WIZ550io/WIZ850io/USR-ES1 with Wiznet W5500 chip.EthernetENC library v2.0.2+
for ENC28J60. . New and BetterUIPEthernet library v2.0.11+
for ENC28J60.STM32Ethernet library v1.2.0+
for built-in LAN8742A Ethernet on (Nucleo-144, Discovery). . To be used withLwIP library v2.1.2+
.NativeEthernetLarge library stable111+
for Teensy 4.1 built-in Ethernet.QNEthernet Library version v0.14.0+
for Teensy 4.1 built-in Ethernet. New
WiFiEspAT library v1.3.2+
if necessary to use ESP8288/ESP32-AT shields. To install, check .ESP8266_AT_WebServer library v1.5.3+
if necessary to use ESP8288/ESP32-AT shields. To install, check .ESP_AT_Lib library v1.4.1+
if necessary to use ESP8288/ESP32-AT shields. To install, check .WebServer_WT32_ETH01 library v1.4.1+
to use WT32_ETH01 (ESP32 + LAN8720). To install, check .
The best and easiest way is to use Arduino Library Manager
. Search for MySQL_MariaDB_Generic
, then select / install the latest version.
You can also use this link for more detailed instructions.
Another way to install is to:
- Navigate to MySQL_MariaDB_Generic page.
- Download the latest release
MySQL_MariaDB_Generic-master.zip
. - Extract the zip file to
MySQL_MariaDB_Generic-master
directory - Copy whole
MySQL_MariaDB_Generic-master
folder to Arduino libraries' directory such as~/Arduino/libraries/
.
- Install VS Code
- Install PlatformIO
- Install MySQL_MariaDB_Generic library by using Library Manager. Search for MySQL_MariaDB_Generic in Platform.io Author's Libraries
- Use included platformio.ini file from examples to ensure that all dependent libraries will installed automatically. Please visit documentation for the other options and examples at Project Configuration File
The current library implementation, using xyz-Impl.h
instead of standard xyz.cpp
, possibly creates certain Multiple Definitions
Linker error in certain use cases.
You can include this .hpp
file
// Can be included as many times as necessary, without `Multiple Definitions` Linker Error
#include "MySQL_Generic.hpp" //https://github.com/khoih-prog/MySQL_Generic
in many files. But be sure to use the following .h
file in just 1 .h
, .cpp
or .ino
file, which must not be included in any other file, to avoid Multiple Definitions
Linker Error
// To be included only in main(), .ino with setup() to avoid `Multiple Definitions` Linker Error
#include "MySQL_Generic.h" //https://github.com/khoih-prog/MySQL_Generic
Check the new multiFileProject_Ethernet example for a HOWTO
demo.
Have a look at the discussion in Different behaviour using the src_cpp or src_h lib #80
To be able to compile, run and automatically detect and display BOARD_NAME on nRF52840/nRF52832 boards, you have to copy the whole nRF52 Packages_Patches directory into Adafruit nRF52 directory (~/.arduino15/packages/adafruit/hardware/nrf52/1.3.0).
Supposing the Adafruit nRF52 version is 1.3.0. These files must be copied into the directory:
~/.arduino15/packages/adafruit/hardware/nrf52/1.3.0/platform.txt
~/.arduino15/packages/adafruit/hardware/nrf52/1.3.0/boards.txt
~/.arduino15/packages/adafruit/hardware/nrf52/1.3.0/cores/nRF5/Udp.h
~/.arduino15/packages/adafruit/hardware/nrf52/1.3.0/cores/nRF5/Print.h
~/.arduino15/packages/adafruit/hardware/nrf52/1.3.0/cores/nRF5/Print.cpp
~/.arduino15/packages/adafruit/hardware/nrf52/1.3.0/variants/NINA_B302_ublox/variant.h
~/.arduino15/packages/adafruit/hardware/nrf52/1.3.0/variants/NINA_B302_ublox/variant.cpp
~/.arduino15/packages/adafruit/hardware/nrf52/1.3.0/variants/NINA_B112_ublox/variant.h
~/.arduino15/packages/adafruit/hardware/nrf52/1.3.0/variants/NINA_B112_ublox/variant.cpp
~/.arduino15/packages/adafruit/hardware/nrf52/1.3.0/cores/nRF5/Udp.h
Whenever a new version is installed, remember to copy these files into the new version directory. For example, new version is x.yy.z These files must be copied into the directory:
~/.arduino15/packages/adafruit/hardware/nrf52/x.yy.z/platform.txt
~/.arduino15/packages/adafruit/hardware/nrf52/x.yy.z/boards.txt
~/.arduino15/packages/adafruit/hardware/nrf52/x.yy.z/cores/nRF5/Udp.h
~/.arduino15/packages/adafruit/hardware/nrf52/x.yy.z/cores/nRF5/Print.h
~/.arduino15/packages/adafruit/hardware/nrf52/x.yy.z/cores/nRF5/Print.cpp
~/.arduino15/packages/adafruit/hardware/nrf52/x.yy.z/variants/NINA_B302_ublox/variant.h
~/.arduino15/packages/adafruit/hardware/nrf52/x.yy.z/variants/NINA_B302_ublox/variant.cpp
~/.arduino15/packages/adafruit/hardware/nrf52/x.yy.z/variants/NINA_B112_ublox/variant.h
~/.arduino15/packages/adafruit/hardware/nrf52/x.yy.z/variants/NINA_B112_ublox/variant.cpp
~/.arduino15/packages/adafruit/hardware/nrf52/x.yy.z/cores/nRF5/Udp.h
To be able to compile and run on Teensy boards, you have to copy the files in Packages_Patches for Teensy directory into Teensy hardware directory (./arduino-1.8.19/hardware/teensy/avr/boards.txt).
Supposing the Arduino version is 1.8.19. These files must be copied into the directory:
./arduino-1.8.19/hardware/teensy/avr/boards.txt
./arduino-1.8.19/hardware/teensy/avr/cores/teensy/Stream.h
./arduino-1.8.19/hardware/teensy/avr/cores/teensy3/Stream.h
./arduino-1.8.19/hardware/teensy/avr/cores/teensy4/Stream.h
Whenever a new version is installed, remember to copy this file into the new version directory. For example, new version is x.yy.zz These files must be copied into the directory:
./arduino-x.yy.zz/hardware/teensy/avr/boards.txt
./arduino-x.yy.zz/hardware/teensy/avr/cores/teensy/Stream.h
./arduino-x.yy.zz/hardware/teensy/avr/cores/teensy3/Stream.h
./arduino-x.yy.zz/hardware/teensy/avr/cores/teensy4/Stream.h
To be able to compile and run on SAM DUE boards, you have to copy the whole SAM DUE directory into Arduino sam directory (~/.arduino15/packages/arduino/hardware/sam/1.6.12).
Supposing the Arduino SAM core version is 1.6.12. This file must be copied into the directory:
~/.arduino15/packages/arduino/hardware/sam/1.6.12/platform.txt
Whenever a new version is installed, remember to copy this file into the new version directory. For example, new version is x.yy.zz This file must be copied into the directory:
~/.arduino15/packages/arduino/hardware/sam/x.yy.zz/platform.txt
To be able to compile, run and automatically detect and display BOARD_NAME on Arduino SAMD (Nano-33-IoT, etc) boards, you have to copy the whole Arduino SAMD Packages_Patches directory into Arduino SAMD directory (~/.arduino15/packages/arduino/hardware/samd/1.8.13).
Supposing the Arduino SAMD version is 1.8.13. Now only one file must be copied into the directory:
~/.arduino15/packages/arduino/hardware/samd/1.8.13/platform.txt
Whenever a new version is installed, remember to copy this files into the new version directory. For example, new version is x.yy.zz
This file must be copied into the directory:
~/.arduino15/packages/arduino/hardware/samd/x.yy.zz/platform.txt
Supposing the Arduino SAMD version is 1.8.9. These files must be copied into the directory:
~/.arduino15/packages/arduino/hardware/samd/1.8.9/platform.txt
~/.arduino15/packages/arduino/hardware/samd/1.8.9/cores/arduino/Arduino.h
Whenever a new version is installed, remember to copy these files into the new version directory. For example, new version is x.yy.z
These files must be copied into the directory:
~/.arduino15/packages/arduino/hardware/samd/x.yy.z/platform.txt
~/.arduino15/packages/arduino/hardware/samd/x.yy.z/cores/arduino/Arduino.h
This is mandatory to fix the notorious Arduino SAMD compiler error. See Improve Arduino compatibility with the STL (min and max macro)
...\arm-none-eabi\include\c++\7.2.1\bits\stl_algobase.h:243:56: error: macro "min" passed 3 arguments, but takes just 2
min(const _Tp& __a, const _Tp& __b, _Compare __comp)
Whenever the above-mentioned compiler error issue is fixed with the new Arduino SAMD release, you don't need to copy the Arduino.h
file anymore.
To be able to compile, run and automatically detect and display BOARD_NAME on Adafruit SAMD (Itsy-Bitsy M4, etc) boards, you have to copy the whole Adafruit SAMD Packages_Patches directory into Adafruit samd directory (~/.arduino15/packages/adafruit/hardware/samd/1.7.9).
Supposing the Adafruit SAMD core version is 1.7.9. This file must be copied into the directory:
~/.arduino15/packages/adafruit/hardware/samd/1.7.9/platform.txt
~/.arduino15/packages/adafruit/hardware/samd/1.7.9/cores/arduino/Print.h
~/.arduino15/packages/adafruit/hardware/samd/1.7.9/cores/arduino/Print.cpp
Whenever a new version is installed, remember to copy this file into the new version directory. For example, new version is x.yy.zz This file must be copied into the directory:
~/.arduino15/packages/adafruit/hardware/samd/x.yy.zz/platform.txt
~/.arduino15/packages/adafruit/hardware/samd/x.yy.zz/cores/arduino/Print.h
~/.arduino15/packages/adafruit/hardware/samd/x.yy.zz/cores/arduino/Print.cpp
To be able to compile, run and automatically detect and display BOARD_NAME on Seeeduino SAMD (XIAO M0, Wio Terminal, etc) boards, you have to copy the whole Seeeduino SAMD Packages_Patches directory into Seeeduino samd directory (~/.arduino15/packages/Seeeduino/hardware/samd/1.8.2).
Supposing the Seeeduino SAMD core version is 1.8.2. This file must be copied into the directory:
~/.arduino15/packages/Seeeduino/hardware/samd/1.8.2/platform.txt
~/.arduino15/packages/Seeeduino/hardware/samd/1.8.2/cores/arduino/Arduino.h
~/.arduino15/packages/Seeeduino/hardware/samd/1.8.2/cores/arduino/Print.h
~/.arduino15/packages/Seeeduino/hardware/samd/1.8.2/cores/arduino/Print.cpp
Whenever a new version is installed, remember to copy this file into the new version directory. For example, new version is x.yy.zz This file must be copied into the directory:
~/.arduino15/packages/Seeeduino/hardware/samd/x.yy.zz/platform.txt
~/.arduino15/packages/Seeeduino/hardware/samd/x.yy.zz/cores/arduino/Arduino.h
~/.arduino15/packages/Seeeduino/hardware/samd/x.yy.zz/cores/arduino/Print.h
~/.arduino15/packages/Seeeduino/hardware/samd/x.yy.zz/cores/arduino/Print.cpp
To use LAN8720 on some STM32 boards
- Nucleo-144 (F429ZI, NUCLEO_F746NG, NUCLEO_F746ZG, NUCLEO_F756ZG)
- Discovery (DISCO_F746NG)
- STM32F4 boards (BLACK_F407VE, BLACK_F407VG, BLACK_F407ZE, BLACK_F407ZG, BLACK_F407VE_Mini, DIYMORE_F407VGT, FK407M1)
you have to copy the files stm32f4xx_hal_conf_default.h and stm32f7xx_hal_conf_default.h into STM32 stm32 directory (~/.arduino15/packages/STM32/hardware/stm32/2.2.0/system) to overwrite the old files.
Supposing the STM32 stm32 core version is 2.2.0. These files must be copied into the directory:
~/.arduino15/packages/STM32/hardware/stm32/2.2.0/system/STM32F4xx/stm32f4xx_hal_conf_default.h
for STM32F4.~/.arduino15/packages/STM32/hardware/stm32/2.2.0/system/STM32F7xx/stm32f7xx_hal_conf_default.h
for Nucleo-144 STM32F7.
Whenever a new version is installed, remember to copy this file into the new version directory. For example, new version is x.yy.zz, these files must be copied into the corresponding directory:
~/.arduino15/packages/STM32/hardware/stm32/x.yy.zz/system/STM32F4xx/stm32f4xx_hal_conf_default.h
- `~/.arduino15/packages/STM32/hardware/stm32/x.yy.zz/system/STM32F7xx/stm32f7xx_hal_conf_default.h
To use Serial1 on some STM32 boards without Serial1 definition (Nucleo-144 NUCLEO_F767ZI, Nucleo-64 NUCLEO_L053R8, etc.) boards, you have to copy the files STM32 variant.h into STM32 stm32 directory (~/.arduino15/packages/STM32/hardware/stm32/2.2.0). You have to modify the files corresponding to your boards, this is just an illustration how to do.
Supposing the STM32 stm32 core version is 2.2.0. These files must be copied into the directory:
~/.arduino15/packages/STM32/hardware/stm32/2.2.0/variants/STM32F7xx/F765Z(G-I)T_F767Z(G-I)T_F777ZIT/NUCLEO_F767ZI/variant.h
for Nucleo-144 NUCLEO_F767ZI.~/.arduino15/packages/STM32/hardware/stm32/2.2.0/variants/STM32L0xx/L052R(6-8)T_L053R(6-8)T_L063R8T/NUCLEO_L053R8/variant.h
for Nucleo-64 NUCLEO_L053R8.
Whenever a new version is installed, remember to copy this file into the new version directory. For example, new version is x.yy.zz, these files must be copied into the corresponding directory:
~/.arduino15/packages/STM32/hardware/stm32/x.yy.zz/variants/STM32F7xx/F765Z(G-I)T_F767Z(G-I)T_F777ZIT/NUCLEO_F767ZI/variant.h
~/.arduino15/packages/STM32/hardware/stm32/x.yy.zz/variants/STM32L0xx/L052R(6-8)T_L053R(6-8)T_L063R8T/NUCLEO_L053R8/variant.h
8. For RP2040-based boards using Earle Philhower arduino-pico core
To be able to automatically detect and display BOARD_NAME on RP2040-based boards (RASPBERRY_PI_PICO, ADAFRUIT_FEATHER_RP2040, GENERIC_RP2040, etc) boards, you have to copy the file RP2040 platform.txt into rp2040 directory (~/.arduino15/packages/rp2040/hardware/rp2040/1.4.0).
Supposing the rp2040 core version is 1.4.0. This file must be copied into the directory:
~/.arduino15/packages/rp2040/hardware/rp2040/1.4.0/platform.txt
Whenever a new version is installed, remember to copy this file into the new version directory. For example, new version is x.yy.zz This file must be copied into the directory:
~/.arduino15/packages/rp2040/hardware/rp2040/x.yy.zz/platform.txt
With core after v1.5.0, this step is not necessary anymore thanks to the PR Add -DBOARD_NAME="{build.board}" #136.
Some libraries, such as Adafruit DHT-sensor-library, require the definition of microsecondsToClockCycles(). To be able to compile and run on RP2040-based boards, you have to copy the files in RP2040 Arduino.h into rp2040 directory (~/.arduino15/packages/rp2040/hardware/rp2040/1.4.0).
Supposing the rp2040 core version is 1.4.0. This file must be copied to replace:
~/.arduino15/packages/rp2040/hardware/rp2040/1.4.0/cores/rp2040/Arduino.h
Whenever a new version is installed, remember to copy this file into the new version directory. For example, new version is x.yy.zz This file must be copied to replace:
~/.arduino15/packages/rp2040/hardware/rp2040/x.yy.zz/cores/rp2040/Arduino.h
With core after v1.5.0, this step is not necessary anymore thanks to the PR Add defs for compatibility #142.
To be able to upload firmware to Portenta_H7 using Arduino IDE in Linux (Ubuntu, etc.), you have to copy the file portenta_post_install.sh into mbed_portenta directory (~/.arduino15/packages/arduino/hardware/mbed_portenta/3.0.0/portenta_post_install.sh).
Then run the following command using sudo
$ cd ~/.arduino15/packages/arduino/hardware/mbed_portenta/3.0.0
$ chmod 755 portenta_post_install.sh
$ sudo ./portenta_post_install.sh
This will create the file /etc/udev/rules.d/49-portenta_h7.rules
as follows:
# Portenta H7 bootloader mode UDEV rules
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="035b", GROUP="plugdev", MODE="0666"
Supposing the ArduinoCore-mbed core version is 3.0.0. Now only one file must be copied into the directory:
~/.arduino15/packages/arduino/hardware/mbed_portenta/3.0.0/portenta_post_install.sh
Whenever a new version is installed, remember to copy this files into the new version directory. For example, new version is x.yy.zz
This file must be copied into the directory:
~/.arduino15/packages/arduino/hardware/mbed_portenta/x.yy.zz/portenta_post_install.sh
To avoid compile error relating to PROGMEM, you have to copy the file Realtek AmebaD core pgmspace.h into Realtek AmebaD directory (~/.arduino15/packages/realtek/hardware/AmebaD/3.1.2/cores/arduino/avr/pgmspace.h).
Supposing the Realtek AmebaD core version is 3.1.2. This file must be copied into the directory:
~/.arduino15/packages/realtek/hardware/AmebaD/3.1.2/cores/arduino/avr/pgmspace.h
Whenever a new version is installed, remember to copy this file into the new version directory. For example, new version is x.yy.zz This file must be copied into the directory:
~/.arduino15/packages/realtek/hardware/AmebaD/x.yy.zz/cores/arduino/avr/pgmspace.h
To avoid compile error relating to SAMD21/SAMD51, you have to copy the file ArduinoCore-fab-sam core pgmspace.h into ArduinoCore-fab-sam
samd directory (~/.arduino15/packages/Fab_SAM_Arduino/hardware/samd/1.6.18-alpha2/boards.txt).
Supposing the ArduinoCore-fab-sam
samd core version is 1.6.18-alpha2. This file must be copied into the directory:
~/.arduino15/packages/Fab_SAM_Arduino/hardware/samd/1.6.18-alpha2/boards.txt
Whenever a new version is installed, remember to copy this file into the new version directory. For example, new version is x.yy.zz This file must be copied into the directory:
~/.arduino15/packages/Fab_SAM_Arduino/hardware/samd/x.yy.zz/boards.txt
To be able to compile, run and automatically detect and display BOARD_NAME on Seeeduino RP2040 (XIAO RP2040, Wio RP2040 Mini) boards, you have to copy the whole Seeeduino RP2040 Packages_Patches directory into Seeeduino samd directory (~/.arduino15/packages/Seeeduino/hardware/rp2040/2.7.2).
Supposing the Seeeduino SAMD core version is 2.7.2. This file must be copied into the directory:
~/.arduino15/packages/Seeeduino/hardware/rp2040/2.7.2/boards.txt
~/.arduino15/packages/Seeeduino/hardware/rp2040/2.7.2/variants/Seeed_XIAO_RP2040/pins_arduino.h
Whenever a new version is installed, remember to copy this file into the new version directory. For example, new version is x.yy.zz This file must be copied into the directory:
~/.arduino15/packages/Seeeduino/hardware/samd/x.yy.zz/boards.txt
~/.arduino15/packages/Seeeduino/hardware/samd/x.yy.zz/variants/Seeed_XIAO_RP2040/pins_arduino.h
If your application requires 2K+ HTML page, the current Ethernet library
must be modified if you are using W5200/W5500 Ethernet shields. W5100 is not supported for 2K+ buffer. If you use boards requiring different CS/SS pin for W5x00 Ethernet shield, for example ESP32, ESP8266, nRF52, etc., you also have to modify the following libraries to be able to specify the CS/SS pin correctly.
To fix Ethernet library
, just copy these following files into the Ethernet library
directory to overwrite the old files:
To fix EthernetLarge library
, just copy these following files into the EthernetLarge library
directory to overwrite the old files:
To fix Ethernet2 library
, just copy these following files into the Ethernet2 library
directory to overwrite the old files:
To add UDP Multicast support, necessary for the UPnP_Generic library:
- To fix
Ethernet3 library
, just copy these following files into theEthernet3 library
directory to overwrite the old files:
To be able to compile and run on nRF52 boards with ENC28J60 using UIPEthernet library, you have to copy these following files into the UIPEthernet utility
directory to overwrite the old files:
To fix ESP32 compile error
, just copy the following file into the ESP32
cores/esp32 directory (e.g. ./arduino-1.8.12/hardware/espressif/cores/esp32) to overwrite the old file:
To fix ESP8266 compile error
such as
error: 'class EthernetClass' has no member named 'init'
Ethernet.init (USE_THIS_SS_PIN);
just rename the following file in ./arduino-1.8.13/hardware/esp8266com/esp8266/libraries/Ethernet directory
- From
Ethernet.h
toEthernet_ESP8266.h
Please have a look at ESP_WiFiManager Issue 39: Not able to read analog port when using the autoconnect example to have more detailed description and solution of the issue.
- ADC1 controls ADC function for pins GPIO32-GPIO39
- ADC2 controls ADC function for pins GPIO0, 2, 4, 12-15, 25-27
Look in file adc_common.c
In ADC2, there're two locks used for different cases:
lock shared with app and Wi-Fi: ESP32: When Wi-Fi using the ADC2, we assume it will never stop, so app checks the lock and returns immediately if failed. ESP32S2: The controller's control over the ADC is determined by the arbiter. There is no need to control by lock.
lock shared between tasks: when several tasks sharing the ADC2, we want to guarantee all the requests will be handled. Since conversions are short (about 31us), app returns the lock very soon, we use a spinlock to stand there waiting to do conversions one by one.
adc2_spinlock should be acquired first, then adc2_wifi_lock or rtc_spinlock.
- In order to use ADC2 for other functions, we have to acquire complicated firmware locks and very difficult to do
- So, it's not advisable to use ADC2 with WiFi/BlueTooth (BT/BLE).
- Use ADC1, and pins GPIO32-GPIO39
- If somehow it's a must to use those pins serviced by ADC2 (GPIO0, 2, 4, 12, 13, 14, 15, 25, 26 and 27), use the fix mentioned at the end of ESP_WiFiManager Issue 39: Not able to read analog port when using the autoconnect example to work with ESP32 WiFi/BlueTooth (BT/BLE).
-
From v1.0.0, code is restructured to provide flexibility to make it easy to support many more WiFi/Ethernet modules/shields in the future. Please delete the *.cpp files, replaced by *.hpp files, in the src directory, if *.cpp files still exist after installing new version.
-
For Adafruit nRF52, use the SPI's pins as follows:
- SS/CS = 10
- SPI_MOSI = MO(SI)
- SPI_MISO = MI(SO)
- SPI_SCK = SCK
- For Adafruit SAMD21/SAMD51, use the SPI's CS/SS pin as follows:
- Itsy-Bitsy M0/M4, Feather M0 (Express), Hallowing M0 Express, Zero, Metro M0 => use CS = 16 = pin A2
- Feather M4 (SAMD51) => use SS/CS = 9
- Grand Central M4 => use SS/CS = 53
- Hallowing M4 => use SS/CS = 10
- Metro M4 AirLift => use SS/CS = 36
To know the default CS/SS pins of not listed boards, check the related variant.h
files in
~/.arduino15/packages/adafruit/hardware/samd/x.y.zz/variants/board_name/variant.h
- For Arduino SAM DUE, use the SPI's pins as follows:
- SS/CS = 10
- SPI_MOSI = 75 ( pin 4 @ ICSP connector )
- SPI_MISO = 74 ( pin 1 @ ICSP connector )
- SPI_SCK = 76 ( pin 3 @ ICSP connector )
- For RP2040, use the SPI's pins as follows:
- SS/CS = GP17 default or GP5 by modifying
defines.h
- MOSI = GP19
- MISO = GP16
- SCK = GP18
Please see Dr. Charles Bell's wiki documentation, especially Examples section for the best and detailed explanation.
There are many modifications to facilitate the usage of MySQL_MariaDB_Generic Library. Please have a look at the examples to see the differences.
// Only one of the following to be true.
#define USE_ETHERNET_GENERIC true
#define USE_ETHERNET_ESP8266 false
#define USE_ETHERNET_ENC false
#define USE_ETHERNET_LAN8742A false
#define USE_ETHERNET_LAN8720 false
#define USE_CUSTOM_ETHERNET false
#define USE_UIP_ETHERNET false
#include "defines.h"
#include <MySQL_Generic_Ethernet.h>
...
MySQL_Connection conn((Client *)&client);
MySQL_Query sql_query = MySQL_Query(&conn);
For remaining boards, just select a WiFi module/shield and the corresponding library to use in defines.h:
// Select only one of these libraries, only for boards other than ESP8266/ESP32
#define USING_WIFI_ESP_AT false // Using ESP8266_AT_WebServer lib (https://github.com/khoih-prog/ESP8266_AT_WebServer)
#define USING_WIFININA_GENERIC false // Using WiFiNINA_Generic library (https://github.com/khoih-prog/WiFiNINA_Generic)
#define USING_WIFININA false // Using WiFiNINA library
#define USING_WIFIESPAT_LIB true // Using WiFiEspAT library (https://github.com/jandrassy/WiFiEspAT)
#define USING_WIFI_CUSTOM false
#include "defines.h"
#include "Credentials.h"
#include <MySQL_Generic_WiFi.h>
...
MySQL_Connection conn((Client *)&client);
MySQL_Query sql_query = MySQL_Query(&conn);
// Select only one of these libraries, only for boards other than ESP8266/ESP32
#define USING_WIFININA_GENERIC true
#define USING_WIFININA false
#include "defines.h"
#include "Credentials.h"
#include <MySQL_Generic_WiFiNINA.h>
...
MySQL_Connection conn((Client *)&client);
MySQL_Query sql_query = MySQL_Query(&conn);
- Basic_Insert
- Basic_Select
- Complex_Insert
- Complex_Select
- Connect
- Connect_By_Hostname
- Connect_Default_Database
- Connect_Disconnect
- Query_Progmem
- Query_Results
- multiFileProject_Ethernet New
- Basic_Insert_ESP
- Basic_Insert_WiFi
- Basic_Select_WiFi
- Complex_Insert_WiFi
- Complex_Select_WiFi
- Connect_WiFi
- Connect_Default_Database_WiFi
- Connect_Disconnect_WiFi
- Query_Progmem_WiFi
- Query_Results_WiFi
- Reboot_WiFi
- multiFileProject_WiFi New
- Basic_Insert_WiFiNINA
- Basic_Select_WiFiNINA
- Complex_Insert_WiFiNINA
- Complex_Select_WiFiNINA
- Connect_WiFiNINA
- Connect_Default_Database_WiFiNINA
- Connect_Disconnect_WiFiNINA
- Query_Progmem_WiFiNINA
- Query_Results_WiFiNINA
- Reboot_WiFiNINA
- multiFileProject_WiFiNINA New
- Basic_Insert_WT32_ETH01
- Basic_Select_WT32_ETH01
- Complex_Insert_WT32_ETH01
- Complex_Select_WT32_ETH01
- Connect_WT32_ETH01
- Connect_Default_Database_WT32_ETH01
- Connect_Disconnect_WT32_ETH01
- Query_Progmem_WT32_ETH01
- Query_Results_WT32_ETH01
- Reboot_WT32_ETH01
- multiFileProject_WT32_ETH01 New
- Basic_Insert
- Basic_Select
- Complex_Insert
- Complex_Select
- Connect
- Connect_By_Hostname
- Connect_Default_Database
- Connect_Disconnect
- Query_Progmem
- Query_Results
- multiFileProject_NativeEthernet New
- Basic_Insert
- Basic_Select
- Complex_Insert
- Complex_Select
- Connect
- Connect_By_Hostname
- Connect_Default_Database
- Connect_Disconnect
- Query_Progmem
- Query_Results
- multiFileProject_QNEthernet New
- Basic_Insert
- Basic_Select
- Complex_Insert
- Connect
- Connect_By_Hostname
- Connect_Default_Database
- multiFileProject_Portenta_H7_Ethernet New
- Basic_Insert_WiFi
- Basic_Select_WiFi
- Complex_Insert_WiFi
- Complex_Select_WiFi
- Connect_WiFi
- Connect_Default_Database_WiFi
- Connect_Disconnect_WiFi
- Reboot_WiFi
- multiFileProject_Portenta_H7_WiFi New
Example Basic_Select
Please take a look at other examples, as well.
1. File Basic_Select.ino
MySQL_MariaDB_Generic/examples/Ethernet/Basic_Select/Basic_Select.ino
Lines 50 to 326 in 78ff2db
2. File defines.h
MySQL_MariaDB_Generic/examples/Ethernet/Basic_Select/defines.h
Lines 16 to 463 in 78ff2db
This is terminal debug output when running Query_Progmem on nRF52 Adafruit NRF52840_FEATHER using W5500 Ethernet module and Ethernet_Generic library connecting to MariaDB Server.
Starting Query_Progmem on NRF52840_FEATHER using W5x00/Ethernet_Generic Library
MySQL_MariaDB_Generic v1.7.2
Ethernet_Generic W5500 init, using SPI_CS = 10, number of sockets = 4
Using mac index = 10
Connected! IP address: 192.168.2.145
Connecting to SQL Server @ your_account.ddns.net, Port = 5698
User = invited-guest, PW = the-invited-guest
[SQL] Connecting to Server: your_account.ddns.net , Port = 5698
[SQL] Connected. Server Version = 5.5.5-10.3.34-MariaDB-0+deb10u1
Running SELECT from PROGMEM and printing results
SELECT * FROM world.city LIMIT 12
ID,Name,CountryCode,District,Population
1,Kabul,AFG,Kabol,1780000
2,Qandahar,AFG,Qandahar,237500
3,`Herat`,AFG,`Herat`,186800
4,Mazar-e-Sharif,AFG,Balkh,127800
5,Amsterdam,NLD,Noord-Holland,731200
6,Rotterdam,NLD,Zuid-Holland,593321
7,Haag,NLD,Zuid-Holland,440900
8,Utrecht,NLD,Utrecht,234323
9,Eindhoven,NLD,Noord-Brabant,201843
10,Tilburg,NLD,Noord-Brabant,193238
11,Groningen,NLD,Groningen,172701
12,Breda,NLD,Noord-Brabant,160398
12 rows in result.
This is terminal debug output when running Complex_Select on STM32F7 Nucleo-144 NUCLEO_F767ZI using LAN8742A built-in Ethernet and STM32Ethernet library connecting to MariaDB Server.
Starting Complex_Select on NUCLEO_F767ZI using LAN8742A/STM32Ethernet Library
MySQL_MariaDB_Generic v1.7.2
Using mac index = 0
Connected! IP address: 192.168.2.165
Connecting to SQL Server @ your_account.ddns.net, Port = 5698
User = invited-guest, PW = the-invited-guest, DB = world
[SQL] Connecting to Server: your_account.ddns.net , Port = 5698
[SQL] Connected. Server Version = 5.5.5-10.3.34-MariaDB-0+deb10u1
====================================================
> Running SELECT with dynamically supplied parameter
SELECT name, population FROM world.city WHERE population < 857880 ORDER BY population DESC LIMIT 12;
name,population
Naucalpan de Ju⸮rez,857511
Pikine,855287
Lubumbashi,851381
Monrovia,850000
Freetown,850000
Zaporizzja,848000
Handan,840000
S⸮o Lu⸮s,837588
Wuxi,830000
Ouagadougou,824000
Ciudad de Guatemala,823301
Coimbatore,816321
[SQL] Disconnected
Sleeping...
================================================
Connecting...
[SQL] Connecting to Server: your_account.ddns.net , Port = 5698
[SQL] Connected. Server Version = 5.5.5-10.3.34-MariaDB-0+deb10u1
====================================================
> Running SELECT with dynamically supplied parameter
SELECT name, population FROM world.city WHERE population < 972170 ORDER BY population DESC LIMIT 12;
name,population
Mekka,965700
K⸮ln,962507
Managua,959000
Detroit,951270
Shenzhen,950500
Haora (Howrah),950435
Campinas,950043
Brazzaville,950000
Khartum,947483
Karaj,940968
Taichung,940589
Santa Cruz de la Sierra,935361
[SQL] Disconnected
Sleeping...
================================================
This is terminal debug output when running Query_Results_WiFi on SAMD51 Adafruit ITSYBITSY_M4 using ESP8266-AT WiFi shield and WiFiEspAT library connecting to MySQL Server.
Starting Query_Results_WiFi on ITSYBITSY_M4
MySQL_MariaDB_Generic v1.7.2
Using WiFiEspAT Library
WiFi shield init done
Connecting to HueNet1
Connected to network. My IP address is: 192.168.2.32
Connecting to SQL Server @ your_account.ddns.net, Port = 5698
User = invited-guest, PW = the-invited-guest
Connecting...
[SQL] Connecting to Server: your_account.ddns.net , Port = 5698
[SQL] Connected. Server Version = 5.5.5-10.3.34-MariaDB-0+deb10u1
Running SELECT and printing results
SELECT * FROM world.city LIMIT 6
ID, Name, CountryCode, District, Population
1, Kabul, AFG, Kabol, 1780000
2, Qandahar, AFG, Qandahar, 237500
3, Haag,NLD,Zuid-Holland,440900
4, Mazar-e-Sharif, AFG, Balkh, 127800
5, Amsterdam, NLD, Noord-Holland, 731200
6, Rotterdam, NLD, Zuid-Holland, 593321
[SQL] Disconnected
Sleeping...
================================================
This is terminal debug output when running Basic_Select_WiFi on SAMD21 Seeeduino SEEED_XIAO_M0 using ESP8266-AT WiFi shield and WiFiEspAT library connecting to MariaDB Server.
Starting Basic_Select_WiFi on SEEED_XIAO_M0
MySQL_MariaDB_Generic v1.7.2
Using WiFiEspAT Library
WiFi shield init done
Connecting to HueNet1
Connected to network. My IP address is: 192.168.2.32
Connecting to SQL Server @ your_account.ddns.net, Port = 5698
User = invited-guest, PW = the-invited-guest, DB = world
Connecting...
[SQL] Connecting to Server: your_account.ddns.net , Port = 5698
[SQL] Connected. Server Version = 5.5.5-10.3.34-MariaDB-0+deb10u1
1) Demonstrating using a dynamically allocated query.
SELECT population FROM world.city WHERE name = 'Toronto'
Toronto pop = 688275
2) Demonstrating using a local, global query.
SELECT population FROM world.city WHERE name = 'Toronto'
Toronto pop = 688275
Toronto pop increased by 11725 = 700000
[SQL] Disconnected
Sleeping...
================================================
This is terminal debug output when running Query_Results_WiFiNINA on SAMD21 Arduino SAMD_NANO_33_IOT using built-in WiFiNINA and WiFiNINA_Generic library connecting to MariaDB Server.
Starting Query_Results_WiFiNINA on SAMD_NANO_33_IOT
MySQL_MariaDB_Generic v1.7.2
Attempting to connect to SSID: HueNet1
SSID: HueNet1
IP Address: 192.168.2.118
signal strength (RSSI):-40 dBm
Connecting to SQL Server @ your_account.ddns.net, Port = 5698
User = invited-guest, PW = the-invited-guest
Connecting...
[SQL] Connecting to Server: your_account.ddns.net , Port = 5698
[SQL] Connected. Server Version = 5.5.5-10.3.34-MariaDB-0+deb10u1
Running SELECT and printing results
SELECT * FROM world.city LIMIT 12
ID, Name, CountryCode, District, Population
1, Kabul, AFG, Kabol, 1780000
2, Qandahar, AFG, Qandahar, 237500
3, `Herat`, AFG, `Herat`, 186800
4, Mazar-e-Sharif, AFG, Balkh, 127800
5, Amsterdam, NLD, Noord-Holland, 731200
6, Rotterdam, NLD, Zuid-Holland, 593321
7, Haag, NLD, Zuid-Holland, 440900
8, Utrecht, NLD, Utrecht, 234323
9, Eindhoven, NLD, Noord-Brabant, 201843
10, Tilburg, NLD, Noord-Brabant, 193238
11, Groningen, NLD, Groningen, 172701
12, Breda, NLD, Noord-Brabant, 160398
[SQL] Disconnected
Sleeping...
================================================
This is terminal debug output when running Connect_By_Hostname on Arduino SAM DUE using W5100 Ethernet shield and Ethernet_Generic library connecting to MariaDB Server.
Starting Connect_By_Hostname on SAM DUE using W5x00/Ethernet_Generic Library
MySQL_MariaDB_Generic v1.7.2
_pinCS = 0
W5100 init, using SS_PIN_DEFAULT = 10, new ss_pin = 10, W5100Class::ss_pin = 10
W5100::init: W5100, SSIZE =4096
Using mac index = 2
Connected! IP address: 192.168.2.177
Connecting to SQL Server @ your_account.ddns.net, Port = 5698
User = invited-guest, PW = the-invited-guest
[SQL] Connecting to Server: your_account.ddns.net , Port = 5698
[SQL] Connected. Server Version = 5.5.5-10.3.34-MariaDB-0+deb10u1
[SQL] Disconnected
This is terminal debug output when running Complex_Select on NRF52840_FEATHER using ENC28J60 Ethernet shield and UIPEthernet library connecting to MariaDB Server.
Starting Complex_Select on NRF52840_FEATHER using ENC28J60/UIPEthernet Library
MySQL_MariaDB_Generic v1.7.2
ENC28J60_CONTROL_CS =10
SS =5
SPI_MOSI =25
SPI_MISO =24
SPI_SCK =26
Using mac index = 5
Connected! IP address: 192.168.2.161
Connecting to SQL Server @ your_account.ddns.net, Port = 5698
User = invited-guest, PW = the-invited-guest, DB = world
Connecting...
[SQL] Connecting to Server: your_account.ddns.net , Port = 5698
[SQL] Connected. Server Version = 5.5.5-10.3.34-MariaDB-0+deb10u1
====================================================
> Running SELECT with dynamically supplied parameter
SELECT name, population FROM world.city WHERE population < 885240 ORDER BY population DESC LIMIT 12;
name,population
Port-au-Prince,884472
Mosul,879000
Barquisimeto,877239
Krasnojarsk,875500
Saratov,874000
Shubra al-Khayma,870716
Sao Gonzalo,869254
Songnam,869094
Chiba,863930
Nova Igua⸮u,862225
Naucalpan de Ju⸮rez,857511
Pikine,855287
[SQL] Disconnected
Sleeping...
================================================
Connecting...
[SQL] Connecting to Server: your_account.ddns.net , Port = 5698
[SQL] Connected. Server Version = 5.5.5-10.3.34-MariaDB-0+deb10u1
====================================================
> Running SELECT with dynamically supplied parameter
SELECT name, population FROM world.city WHERE population < 1015280 ORDER BY population DESC LIMIT 12;
name,population
Kalyan,1014557
Birmingham,1013000
Rostov-na-Donu,1012700
Odesa,1011000
Perm,1009700
Napoli,1002619
Zapopan,1002239
Amman,1000000
Mogadishu,997000
Volgograd,993400
Sendai,989975
Peshawar,988005
[SQL] Disconnected
Sleeping...
================================================
Connecting...
[SQL] Connecting to Server: your_account.ddns.net , Port = 5698
[SQL] Connected. Server Version = 5.5.5-10.3.34-MariaDB-0+deb10u1
====================================================
> Running SELECT with dynamically supplied parameter
SELECT name, population FROM world.city WHERE population < 1193330 ORDER BY population DESC LIMIT 12;
name,population
Tabriz,1191043
Dallas,1188580
Bel⸮m,1186926
Multan,1182441
Praha,1181126
Kalookan,1177604
Nanning,1161800
C⸮rdoba,1157507
Samara,1156100
Hyderabad,1151274
Omsk,1148900
Davao,1147116
[SQL] Disconnected
Sleeping...
================================================
This is terminal debug output when running Complex_Select on NRF52840_FEATHER using ENC28J60 Ethernet shield and EthernetENC library connecting to MariaDB Server.
Starting Complex_Select on NRF52840_FEATHER, with ENC28J60 using EthernetENC Library
MySQL_MariaDB_Generic v1.7.2
[SQL] =========================================
[SQL] Default SPI pinout:
[SQL] MOSI: 25
[SQL] MISO: 24
[SQL] SCK: 26
[SQL] SS: 5
[SQL] =========================================
[SQL] Board : NRF52840_FEATHER , setCsPin: 10
[SQL] =========================================
[SQL] Currently Used SPI pinout:
[SQL] MOSI: 25
[SQL] MISO: 24
[SQL] SCK: 26
[SQL] SS: 5
[SQL] =========================================
Using mac index = 15
Connected! IP address: 192.168.2.98
Connecting to SQL Server @ your_account.ddns.net, Port = 5698
User = invited-guest, PW = the-invited-guest, DB = world
Connecting...
[SQL] Connecting to Server: your_account.ddns.net , Port = 5698
[SQL] Connected. Server Version = 5.5.5-10.3.34-MariaDB-0+deb10u1
====================================================
> Running SELECT with dynamically supplied parameter
SELECT name, population FROM world.city WHERE population < 831690 ORDER BY population DESC LIMIT 12;
name,population
Wuxi,830000
Ouagadougou,824000
Ciudad de Guatemala,823301
Coimbatore,816321
Tegucigalpa,813900
Xuzhou,810000
Bamako,809552
Mbuji-Mayi,806475
Cartagena,805757
Ahvaz,804980
Bengasi,804000
Thane (Thana),803389
[SQL] Disconnected
Sleeping...
================================================
This is terminal debug output when running Query_Progmem on NRF52840_FEATHER using ENC28J60 Ethernet shield and EthernetENC library connecting to MariaDB Server.
Starting Query_Progmem on NRF52840_FEATHER, with ENC28J60 using EthernetENC Library
MySQL_MariaDB_Generic v1.7.2
[SQL] =========================================
[SQL] Default SPI pinout:
[SQL] MOSI: 25
[SQL] MISO: 24
[SQL] SCK: 26
[SQL] SS: 5
[SQL] =========================================
[SQL] Board : NRF52840_FEATHER , setCsPin: 10
[SQL] =========================================
[SQL] Currently Used SPI pinout:
[SQL] MOSI: 25
[SQL] MISO: 24
[SQL] SCK: 26
[SQL] SS: 5
[SQL] =========================================
Using mac index = 13
Connected! IP address: 192.168.2.106
Connecting to SQL Server @ your_account.ddns.net, Port = 5698
User = invited-guest, PW = the-invited-guest
Connecting...
[SQL] Connecting to Server: your_account.ddns.net , Port = 5698
[SQL] Connected. Server Version = 5.5.5-10.3.34-MariaDB-0+deb10u1
Running SELECT from PROGMEM and printing results
SELECT * FROM test_arduino.hello_arduino LIMIT 6
num,message,recorded
351,Hello, Arduino!,2020-08-18 13:52:35
352,Hello, Arduino!,2020-08-18 13:53:42
353,Hello, Arduino!,2020-08-18 13:54:57
354,Hello, Arduino!,2020-08-18 13:56:03
355,Hello, Arduino!,2020-08-18 22:37:21
356,Hello, Arduino!,2020-08-18 22:38:28
6 rows in result.
[SQL] Disconnected
Sleeping...
================================================
This is terminal debug output when running Basic_Insert_ESP on ESP8266_NODEMCU_ESP12E using ESP8266 core v3.0.0 connecting to MariaDB Server.
Starting Basic_Insert_ESP on ESP8266_NODEMCU_ESP12E
MySQL_MariaDB_Generic v1.7.2
Connecting to HueNet1
...........Connected to network. My IP address is: 192.168.2.135
Connecting to SQL Server @ your_account.ddns.net , Port = 5698
User = invited-guest , PW = the-invited-guest , DB = test_arduino
Connecting...
[SQL] Connecting to Server: your_account.ddns.net , Port = 5698
[SQL] Connected. Server Version = 5.5.5-10.3.27-MariaDB-0+deb10u1
INSERT INTO test_arduino.hello_arduino (message) VALUES ('Hello, Arduino!')
Data Inserted.
[SQL] Disconnected
Sleeping...
================================================
This is terminal debug output when running Basic_Insert_ESP on ESP32S2_DEV using ESP32 core v1.0.6 connecting to MariaDB Server.
Starting Basic_Insert_ESP on ESP32S2_DEV
MySQL_MariaDB_Generic v1.7.2
Connecting to HueNet1
.......Connected to network. My IP address is: 192.168.2.190
Connecting to SQL Server @ your_account.ddns.net , Port = 5698
User = invited-guest , PW = the-invited-guest , DB = test_arduino
Connecting...
[SQL] Connecting to Server: your_account.ddns.net , Port = 5698
[SQL] Connected. Server Version = 5.5.5-10.3.27-MariaDB-0+deb10u1
INSERT INTO test_arduino.hello_arduino (message) VALUES ('Hello, Arduino!')
Data Inserted.
[SQL] Disconnected
Sleeping...
================================================
This is terminal debug output when running Basic_Select_WiFiNINA on MBED NANO_RP2040_CONNECT connecting to MariaDB Server.
Starting Basic_Select_WiFiNINA on MBED NANO_RP2040_CONNECT
MySQL_MariaDB_Generic v1.7.2
Attempting to connect to SSID: HueNet1
SSID: HueNet1
IP Address: 192.168.2.153
signal strength (RSSI):-44 dBm
Connecting to SQL Server @ your_account.ddns.net, Port = 5698
User = invited-guest, PW = the-invited-guest, DB = world
Connecting...
[SQL] Connecting to Server: your_account.ddns.net , Port = 5698
[SQL] Connected. Server Version = 5.5.5-10.3.27-MariaDB-0+deb10u1
1) Demonstrating using a dynamically allocated query.
SELECT population FROM world.city WHERE name = 'Toronto'
Toronto pop = 688275
2) Demonstrating using a local, global query.
SELECT population FROM world.city WHERE name = 'Toronto'
Toronto pop = 688275
Toronto pop increased by 11725 = 700000
[SQL] Disconnected
Sleeping...
================================================
This is terminal debug output when running Complex_Select on MBED RASPBERRY_PI_PICO, with W5x00 using Ethernet_Generic Library connecting to MariaDB Server, using ArduinoCore-mbed mbed_rp2040 core
Starting Complex_Select on MBED RASPBERRY_PI_PICO , with W5x00 using Ethernet_Generic Library on SPI0/SPI
MySQL_MariaDB_Generic v1.7.2
[SQL] =========================================
[SQL] Default SPI pinout:
[SQL] MOSI: 19
[SQL] MISO: 16
[SQL] SCK: 18
[SQL] SS: 17
[SQL] =========================================
[SQL] RPIPICO setCsPin: 17
[SQL] Currently Used SPI pinout:
[SQL] MOSI: 19
[SQL] MISO: 16
[SQL] SCK: 18
[SQL] SS: 17
[SQL] =========================
Using mac index = 2
Connected! IP address: 192.168.2.92
Connecting to SQL Server @ 192.168.2.112 , Port = 5698
User = invited-guest , PW = the-invited-guest , DB = world
Connecting...
[SQL] Connecting to Server: 192.168.2.112 , Port = 5698
[SQL] Connected. Server Version = 5.5.5-10.3.34-MariaDB-0+deb10u1
====================================================
> Running SELECT with dynamically supplied parameter
SELECT name, population FROM world.city WHERE population < 827440 ORDER BY population DESC LIMIT 12;
name,population
Ouagadougou,824000
Ciudad de Guatemala,823301
Coimbatore,816321
Tegucigalpa,813900
Xuzhou,810000
Bamako,809552
Mbuji-Mayi,806475
Cartagena,805757
Ahvaz,804980
Bengasi,804000
Thane (Thana),803389
L⸮dz,800110
[SQL] Disconnected
Sleeping...
================================================
Connecting...
[SQL] Connecting to Server: your_account.ddns.net , Port = 5698
[SQL] Connected. Server Version = 5.5.5-10.3.27-MariaDB-0+deb10u1
====================================================
> Running SELECT with dynamically supplied parameter
SELECT name, population FROM world.city WHERE population < 934480 ORDER BY population DESC LIMIT 12;
name,population
Varanasi (Benares),929270
Patna,917243
Hohhot,916700
Rosario,907718
Voronez,907700
Soweto,904165
Torino,903705
San Jose,894943
Srinagar,892506
Agra,891790
Kampala,890800
Mandalay,885300
[SQL] Disconnected
Sleeping...
================================================
This is terminal debug output when running Complex_Select on RASPBERRY_PI_PICO, with W5x00 using Ethernet_Generic Library connecting to MariaDB Server, using arduino-pico rp2040 core
Starting Complex_Select on RASPBERRY_PI_PICO , with W5x00 using Ethernet_Generic Library on SPI1
MySQL_MariaDB_Generic v1.7.2
[SQL] =========================================
[SQL] Default SPI pinout:
[SQL] MOSI: 19
[SQL] MISO: 16
[SQL] SCK: 18
[SQL] SS: 17
[SQL] =========================================
[SQL] RPIPICO setCsPin: 13
[SQL] Currently Used SPI pinout:
[SQL] MOSI: 15
[SQL] MISO: 12
[SQL] SCK: 14
[SQL] SS: 13
[SQL] =========================
Using mac index = 0
Connected! IP address: 192.168.2.172
Connecting to SQL Server @ 192.168.2.112 , Port = 5698
User = invited-guest , PW = the-invited-guest , DB = world
Connecting...
[SQL] Connecting to Server: 192.168.2.112 , Port = 5698
[SQL] Connected. Server Version = 5.5.5-10.3.34-MariaDB-0+deb10u1
====================================================
> Running SELECT with dynamically supplied parameter
SELECT name, population FROM world.city WHERE population < 900290 ORDER BY population DESC LIMIT 12;
name,population
San Jose,894943
Srinagar,892506
Agra,891790
Kampala,890800
Mandalay,885300
Port-au-Prince,884472
Mosul,879000
Barquisimeto,877239
Krasnojarsk,875500
Saratov,874000
Shubra al-Khayma,870716
Sao Gonzalo,869254
[SQL] Disconnected
Sleeping...
================================================
This is terminal debug output when running Complex_Select_WT32_ETH01 on WT32_ETH01 connecting to MariaDB Server.
Starting Complex_Select_WT32_ETH01 on WT32-ETH01
WebServer_WT32_ETH01 v1.4.1
MySQL_MariaDB_Generic v1.7.2
ETH MAC: A8:03:2A:A1:61:73, IPv4: 192.168.2.232
FULL_DUPLEX, 100Mbps
Connected to network. My IP address is: 192.168.2.232
Connecting to SQL Server @ your_account.ddns.net , Port = 5698
User = invited-guest , PW = the-invited-guest , DB = world
Connecting...
[SQL] Connecting to Server: your_account.ddns.net , Port = 5698
[SQL] Connected. Server Version = 5.5.5-10.3.27-MariaDB-0+deb10u1
====================================================
> Running SELECT with dynamically supplied parameter
SELECT name, population FROM world.city WHERE population < 848510 ORDER BY population DESC LIMIT 6;
name,population
Zaporizzja,848000
Handan,840000
S⸮o Lu⸮s,837588
Wuxi,830000
Ouagadougou,824000
Ciudad de Guatemala,823301
[SQL] Disconnected
Sleeping...
================================================
Connecting...
[SQL] Connecting to Server: your_account.ddns.net , Port = 5698
[SQL] Connected. Server Version = 5.5.5-10.3.27-MariaDB-0+deb10u1
====================================================
> Running SELECT with dynamically supplied parameter
SELECT name, population FROM world.city WHERE population < 962720 ORDER BY population DESC LIMIT 6;
name,population
K⸮ln,962507
Managua,959000
Detroit,951270
Shenzhen,950500
Haora (Howrah),950435
Campinas,950043
[SQL] Disconnected
Sleeping...
================================================
This is terminal debug output when running Complex_Select on Teensy 4.1 with NativeEthernet connecting to MariaDB Server.
Starting Complex_Select on Teensy 4.1 , with NativeEthernet
MySQL_MariaDB_Generic v1.7.2
Using mac index = 2
Connected! IP address: 192.168.2.86
Connecting to SQL Server @ your_account.ddns.net , Port = 5698
User = invited-guest , PW = the-invited-guest , DB = world
Connecting...
[SQL] Connecting to Server: your_account.ddns.net , Port = 5698
[SQL] Connected. Server Version = 5.5.5-10.3.29-MariaDB-0+deb10u1
====================================================
> Running SELECT with dynamically supplied parameter
SELECT name, population FROM world.city WHERE population < 940450 ORDER BY population DESC LIMIT 12;
name,population
Santa Cruz de la Sierra,935361
Varanasi (Benares),929270
Patna,917243
Hohhot,916700
Rosario,907718
Voronez,907700
Soweto,904165
Torino,903705
San Jose,894943
Srinagar,892506
Agra,891790
Kampala,890800
[SQL] Disconnected
Sleeping...
================================================
Connecting...
[SQL] Connecting to Server: your_account.ddns.net , Port = 5698
[SQL] Connected. Server Version = 5.5.5-10.3.29-MariaDB-0+deb10u1
====================================================
> Running SELECT with dynamically supplied parameter
SELECT name, population FROM world.city WHERE population < 1054490 ORDER BY population DESC LIMIT 12;
name,population
Shiraz,1053025
Donetsk,1050000
Ludhiana,1042740
Jilin,1040000
Tangshan,1040000
Vadodara (Baroda),1031346
Maputo,1018938
Montr�al,1016376
Kitakyushu,1016264
Kalyan,1014557
Birmingham,1013000
Rostov-na-Donu,1012700
[SQL] Disconnected
Sleeping...
This is terminal debug output when running Complex_Select on Teensy 4.1 using QNEthernet connecting to MariaDB Server.
Starting Complex_Select on TEENSY 4.1 using QNEthernet
MySQL_MariaDB_Generic v1.7.2
=========== USE_QN_ETHERNET ===========
Initialize Ethernet using static IP => Connected! IP address: 192.168.2.222
Connecting to SQL Server @ your_account.ddns.net , Port = 5698
User = invited-guest , PW = the-invited-guest , DB = world
Connecting...
[SQL] Connecting to Server: your_account.ddns.net , Port = 5698
[SQL] Connected. Server Version = 5.5.5-10.3.29-MariaDB-0+deb10u1
====================================================
> Running SELECT with dynamically supplied parameter
SELECT name, population FROM world.city WHERE population < 837930 ORDER BY population DESC LIMIT 12;
name,population
S�o Lu�s,837588
Wuxi,830000
Ouagadougou,824000
Ciudad de Guatemala,823301
Coimbatore,816321
Tegucigalpa,813900
Xuzhou,810000
Bamako,809552
Mbuji-Mayi,806475
Cartagena,805757
Ahvaz,804980
Bengasi,804000
[SQL] Disconnected
Sleeping...
================================================
This is terminal debug output when running Complex_Insert on PORTENTA_H7_M7 using Portenta_Ethernet connecting to MariaDB Server.
Starting Complex_Insert on PORTENTA_H7_M7 , with Ethernet using Portenta_Ethernet Library
MySQL_MariaDB_Generic v1.7.2
Using mac index = 14
Connected! IP address: 192.168.2.132
Connecting to SQL Server @ 192.168.2.112 , Port = 5698
User = invited-guest , PW = the-invited-guest
DB = test_arduino , Table = hello_sensor
Connecting...
[SQL] Connecting to Server: 192.168.2.112 , Port = 5698
[SQL] Connected. Server Version = 5.5.5-10.3.29-MariaDB-0+deb10u1
INSERT INTO test_arduino.hello_sensor (message, sensor_num, value) VALUES ('test sensor',24,50.1)
Complex Data Inserted.
[SQL] Disconnected
Sleeping...
================================================
This is terminal debug output when running Complex_Insert_WiFi on TPORTENTA_H7_M7 using Murata WiFi connecting to MariaDB Server.
Starting Complex_Select_WiFi on PORTENTA_H7_M7
MySQL_MariaDB_Generic v1.7.2
Connecting to HueNet1
Connected to network. My IP address is: 192.168.2.130
Connecting to SQL Server @ 192.168.2.112 , Port = 5698
User = invited-guest , PW = the-invited-guest , DB = world
Connecting...
[SQL] Connecting to Server: 192.168.2.112 , Port = 5698
[SQL] Connected. Server Version = 5.5.5-10.3.29-MariaDB-0+deb10u1
====================================================
> Running SELECT with dynamically supplied parameter
SELECT name, population FROM world.city WHERE population < 928790 ORDER BY population DESC LIMIT 6;
name,population
Patna,917243
Hohhot,916700
Rosario,907718
Voronez,907700
Soweto,904165
Torino,903705
[SQL] Disconnected
Sleeping...
================================================
Debug is enabled by default on Serial. Debug Level from 0 to 4. To disable, change the MYSQL_LOGLEVEL to 0
#define MYSQL_DEBUG_PORT Serial
// Debug Level from 0 to 4
#define _MYSQL_LOGLEVEL_ 1
If you get compilation errors, more often than not, you may need to install a newer version of the core for Arduino boards.
Sometimes, the library will only work if you update the board core to the latest version because I am using newly added functions.
Submit issues to: MySQL_MariaDB_Generic issues
- Support more boards
- Support more non-compatible Ethernet Libraries such as Ethernet_Shield_W5200, EtherCard, EtherSia
- Bug fixing.
- Add support to Arduino SAMD21 (ZERO, MKR, NANO_33_IOT, etc.)
- Add support to Adafruit SAMD21 (Itsy-Bitsy M0, Metro M0, Feather M0 Express, etc.).
- Add support to Adafruit SAMD51 (Itsy-Bitsy M4, Metro M4, Grand Central M4, Feather M4 Express, etc.).
- Add support to Seeeduino SAMD21/SAMD51: LoRaWAN, Zero, Femto M0, XIAO M0, Wio GPS Board, Wio Terminal, Grove UI Wireless, etc.
- Add support to Adafruit nRF52 ( Feather nRF52832, nRF52840 Express, BlueFruit Sense, Itsy-Bitsy nRF52840 Express, Metro nRF52840 Express, NINA_B302_ublox, NINA_B112_ublox, etc..
- Add support to STM32F/L/H/G/WB/MP1.
- Add support to SAM DUE and AVR Mega.
- Add support to ESP32/ESP8266.
- Add support to WiFiNINA using
WiFiNINA_Generic library
and WiFiNINA library. - Add support to Ethernet W5x00, using either
Ethernet
,Ethernet2
,Ethernet3
orEthernetLarge
library - Add support to ESP8266/ESP32-AT, using either
ESP8266_AT_WebServer library
orWiFiEspAT library
library - Add support to Ethernet LAN8742A, using
STM32Ethernet library
andSTM32duino_LwIP library
. - Split each example into several manageable files.
- Support ENC28J60 using
UIPEthernet library
. - Support ENC28J60 using
EthernetENC library
. - Add Table of Contents and Version String
- Add support to ESP32-S2 (ESP32-S2 Saola, AI-Thinker ESP-12K, etc.)
- Add support to RP2040-based boards, such as RASPBERRY_PI_PICO, ADAFRUIT_FEATHER_RP2040 and GENERIC_RP2040, using Earle Philhower's arduino-pico core to use LittleFS with or without Blynk/WiFiManager features.
- Add support to RP2040-based boards, such as Nano_RP2040_Connect, RASPBERRY_PI_PICO, ADAFRUIT_FEATHER_RP2040 and GENERIC_RP2040, using Arduino-mbed RP2040 core to use LittleFS with or without Blynk/WiFiManager features.
- Add support to WT32_ETH01 (ESP32 + LAN8720A)
- Add support to Teensy 4.1 built-in Ethernet using
NativeEthernet
library - Add support to Teensy 4.1 built-in Ethernet using
QNEthernet
library - Add new feature to permit using either server's hostname, such as
your_account.duckdns.org
, or server's IPAddress, such as IPAddress(192,168,2,112) - Add support to Portenta_H7, using either
Murata WiFi
orVision-shield Ethernet
- Optimize library code by using
reference-passing
instead ofvalue-passing
- Fix memory leak and memory management bugs.
- Add support to SAMD21/SAMD51 boards using Fab_SAM_Arduino core
- Add support to RP2040 boards using
Seeed RP2040 core
29 Convert toh-only
style - Add
multiFileProject
examples to demo for multiple-file projects - Use new Ethernet_Generic library as default for W5x00.
- Support SPI2 for ESP32
- Add support to SPI1 for RP2040 using arduino-pico core
- Use new function
waitForLink()
for Teensy 4.1QNEthernet library v0.14.0+
-
Based on and modified from Dr. Charles Bell's MySQL_Connector_Arduino Library
-
Thanks to good work of Miguel Alexandre Wisintainer for initiating, inspriring, working with, developing, debugging and testing.
-
Thanks to graham999au for the enhanement request NativeEthernet support for Teensy 4.1 #8, and help testing, leading to new version v1.3.0
-
Thanks to Pablo Martikian to report issues and create bug-fixing PR:
- memory leak on 'server_version' #17
- memory leak on MySQL_Connection.MySQL_Packet.buffer #18
- corrupt heap at MySQL_Connection destructor #19
- malloc server_version result not correctly handled may lead to memory corruption #20
- fix server_version memory management #21
- suggest replacing all files xxxx_Impl.h by xxxx.cpp #22
leading to version v1.6.0, v1.6.1 and v1.7.0 to fix memory leak / management bugs / Multiple Definitions
Linker Error.
⭐️ ChuckBell |
Miguel Wisintainer |
graham999au |
⭐️ Pablo Martikian |
If you want to contribute to this project:
- Report bugs and errors
- Ask for enhancements
- Create issues and pull requests
- Tell other people about this library
-
Most of the credits go to original author Dr. Charles Bell
-
The library is licensed under MIT
- Copyright (c) 2012- Oracle
- Copyright (c) 2012- Dr. Charles Bell
- Copyright (c) 2020- Khoi Hoang