Arduino
|
Index
|
|
General
|
|
Maquinari / Hardware
|
- Arduino
Products
- Evolution
of Arduino: the family tree
-
|
|
|
memory
|
|
USB |
|
|
|
|
|
interface
|
features
|
preu
|
bits
|
|
freq
|
flash
|
SRAM
|
EEPROM
|
form factor
|
conn
|
controller
|
svg (Fritzing) |
models |
released
|
voltage
|
pinout
(luisllamas)
|
digital I/O
(PWM)
|
analog inputs
|
bluetooth
|
accel
|
WiFi |
|
8
|
ATmega8
|
16MHz |
8KB
|
|
|
arduino |
|
|
|
Serial
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Single-Sided Serial
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
USB
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Extreme
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
NG
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Severino (S3V3)
|
|
|
|
|
|
|
|
|
|
ATmega168
|
|
16KB
|
|
|
arduino
|
|
|
|
NG+ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Bluetooth |
2007
|
5V |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Diecimila |
2007
|
5V |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Diecimilanove |
2008
|
5V |
|
|
|
|
|
|
|
16MHz |
|
|
|
|
|
|
|
Pro
|
|
3.3V / 5V
|
|
|
|
|
|
|
|
|
|
|
|
other
|
|
|
|
Mini |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Nano |
|
|
|
|
|
|
|
|
|
8MHz |
|
|
|
|
|
|
|
LilyPad |
2007
|
2.7-5.5V |
|
|
|
|
|
|
|
ATmega328
|
|
32KB |
|
|
arduino |
|
|
|
Duemilanove
|
|
5V |
|
|
|
|
|
|
|
16MHz |
|
|
|
arduino |
B
|
Atmega16U2 |
|
Uno
|
2010
|
|
pighixxx (fck)
bq (pdf)
|
14 (6)
|
6
|
|
|
|
|
|
|
|
|
|
|
|
|
Bluetooth
|
|
|
|
|
|
x
|
|
|
|
16MHz |
|
|
|
arduino |
|
|
|
Ethernet
|
2011
|
|
|
|
|
|
|
|
|
16MHz |
|
|
|
other
|
-
|
- |
|
Pro (Sparkfun: 5V)
|
|
3.3V / 5V |
|
|
|
|
|
|
|
8MHz /
16MHz
|
32kB
|
2kB
|
1kB
|
18 x 33 mm
|
- |
- |
|
Pro Mini
(Sparkfun: 3.3V,
5V)
|
|
3.3V / 5V |
pighixxx
(fck)
|
|
|
|
|
|
|
16MHz |
|
2KB
|
1KB
|
(w/wo headers)
18 x 30 mm
|
- |
- |
|
Mini
05
|
|
5V |
pighixxx (fck)
bq (pdf)
|
14 (6) |
8
|
|
|
|
|
16MHz |
32KB |
2KB |
1KB |
(with headers)
18 x 45 mm |
mini
|
|
|
Nano
(replaced by Nano
Every)
|
2008
|
5V |
|
22 (6)
|
8
|
-
|
-
|
|
|
8MHz
|
|
|
|
|
|
|
|
Fio
|
2010
|
3.3V |
|
|
|
|
|
|
|
8MHz |
|
|
|
|
|
|
|
LilyPad
|
|
2.7-5.5V
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LilyPad Simple
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LilyPad Simple Snap
|
|
|
|
|
|
|
|
|
|
ATmega32u4
|
16MHz |
32KB |
|
|
arduino |
micro
|
integrated
|
|
Leonardo
|
2012
|
5V |
pighixxx (fck)
|
|
|
|
|
|
|
|
|
2.5KB
|
1KB
|
(w/wo headers)
18 x 48 mm
|
micro |
integrated |
|
Micro
|
|
5V |
pighixxx (fck)
|
20
|
12
|
|
|
|
|
|
|
|
|
|
|
|
|
LilyPad USB
|
|
|
|
|
|
|
|
|
|
16MHz |
32KB |
|
|
|
|
|
|
Esplora
|
2012
|
5V |
pighixxx (fck)
|
|
|
|
|
|
|
ATmega32u4
Atheros AR9331 |
16MHz
400MHz
|
32KB
16MB
|
|
|
arduino |
|
|
|
Yún |
2013
|
5V
|
|
|
|
|
|
|
|
ATmega4809 |
|
48KB |
6KB
|
256 bytes
|
18 x 45 mm |
micro |
ATSAMD11D14A |
fzpz
|
Nano Every
(replaces Nano)
|
2020 |
5V |
pdf
pdf
|
|
|
|
|
|
|
ATmega1280 |
16MHz |
128KB |
|
|
mega
|
|
|
|
Mega
|
|
5V |
|
|
|
|
|
|
|
ATmega2560
|
16MHz |
256KB |
8KB
|
4KB
|
mega |
B
|
|
|
Mega2560
|
2010
|
5V |
pighixxx (fck)
bq (pdf)
|
54 (15)
|
16
|
|
|
|
|
|
|
|
|
|
|
|
|
Mega2560 Wifi R3 |
|
|
|
|
|
|
|
ESP8266EX |
|
|
16MHz |
256KB |
|
|
mega |
|
|
|
ADK
|
2011
|
5V |
|
|
|
|
|
|
|
32
|
ATSAM3X8E
|
84MHz
|
512KB
|
|
|
mega |
|
|
|
Due
|
2012
|
3.3V |
graynomad (forum)
|
|
|
|
|
|
|
32 |
ATSAMD21G18A |
48MHz |
256KB |
|
|
arduino |
|
|
|
Zero
|
2015
|
3.3V |
|
|
|
|
|
|
|
32 |
Intel Curie
|
32MHz
|
196KB
|
|
|
arduino |
|
|
|
Genuino
101
|
2015
|
3.3V
|
|
|
|
LE
|
6-axis
|
|
|
|
ATSAMW25 |
48MHz |
256KB
|
|
|
|
|
|
|
MKR1000 |
?
|
3.3V |
|
|
|
|
|
|
|
|
RP2040 (Arm Cortex M0+) |
133MHz |
2MB |
264kB |
|
|
|
USB 1.1 |
|
Raspberry
Pi Pico |
|
|
pdf |
|
|
|
|
|
|
bits |
|
freq |
flash |
SRAM |
EEPROM |
form factor |
conn |
controller |
|
models |
released |
voltage |
pinout |
digital I/O
(PWM) |
analog inputs |
bluetooth |
accel |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
preu |
NOTES:
- Starter kit
- Adaptadors USB / USB adapters (comunicació
sèrie / serial communication)
|
Alimentació / Power supply
|
- (Locoduino)
-
|
|
|
Uno
|
Mega
|
Nano
|
Nano Every |
Pro
Mini
(5V model)
|
Pro
Mini
(3.3V model)
|
input
|
unregulated
|
input for onboard
regulator
|
jack 2.1 or "Vin": 7-12V
DC |
jack 2.1 or "Vin": 7-12V
DC |
"VIN" (pin 30): 6-20V |
"VIN": 7-21V DC |
"RAW": 7-12V DC |
"RAW": 7-12V DC |
USB
|
|
B
|
B
|
mini-B
|
micro-B |
(from FTDI adapter)
|
(from FTDI adapter) |
regulated 5V (3.3V in
certain models)
|
|
-
|
-
|
"5V" (pin 27): 5V
|
|
"VCC": 5V
|
"VCC": 3.3V |
output
|
5V
|
output of onboard
regulator
|
"5V"
|
"5V" |
"5V" (pin 27): 5V |
"+5V" |
"VCC": 5V
|
|
3.3V 50mA
|
output of onboard
regulator |
"3.3V"
|
"3.3V" |
3.3V (pin 17)
|
"+3V3" |
|
"VCC": 3.3V
|
IOREF
|
voltage reference with
which the microcontroller operates
|
x
|
"IOREF"
|
REF (pin 16)
|
|
|
|
|
Interfícies / Interfaces
|
-
|
|
wires |
velocitat |
duplex |
lib |
UART (serial) |
|
|
|
|
|
SPI |
Motorola, 1980 |
- MOSI (master-out, slave-in)
- MISO (master-in, slave-out)
- SCK (clock)
- SS (slave select)
|
|
full duplex |
SPI.h |
I2C |
Philips, 1982 |
|
100-400kHz |
- |
Wire.h |
- SPI (Serial Peripheral Interface)
- Info
- Pinout:
group
|
Name
|
Alt names
|
Description
|
PIN in Arduino
|
biblioteques
SPI
/ SPI libraries
|
SPI-3W |
SPI-4W |
|
|
|
ICSP |
Uno
|
Adafruit_SH1106
Adafruit-GFX-Library
|
u8glib |
u8g2 |
|
|
|
|
|
|
|
|
u8g()
|
|
x
|
x
|
SCLK
|
CLK/SCK/D0
|
Clock
|
3
|
D13 (hw, fixed)
|
|
U8glib sck
|
U8g2 clock
|
|
|
MISO
|
SDO/DOUT
|
Master In Slave Out
|
1
|
D12 (hw, fixed) |
|
|
|
x
|
x
|
MOSI
|
SDI/DIN/D1/Data
|
Master Out Slave In
|
4
|
D11 (hw, fixed) |
|
U8glib mosi
|
U8g2 data
|
x
|
x
|
SS
|
CS/SDA
|
Slave/Chip Select
|
|
D10 (hw, fixed)
(Arduino as a slave)
|
|
|
|
|
x
|
RS |
DC |
Mode: Command/Data |
|
D9
(sw, defined) |
|
U8glib a0 |
U8g2 dc |
|
|
RES
|
RST/REST/RES
|
Controller Reset
|
|
D8
(sw, defined)
|
|
|
|
|
|
VCC
|
|
|
|
|
|
|
|
|
|
GND
|
|
|
|
|
|
|
|
- Maquinari / Hardware
- Biblioteques / Libraries
- I2C (Inter-Integrated Circuit)
- Info
- Pinout:
Name
|
Alt names
|
Description
|
PIN
|
|
|
|
Uno
|
SDA
|
|
Data
|
SDA, A4
|
SCL
|
|
Clock
|
SCL, A5
|
- Maquinari / Hardware
|
Desenvolupament / Development
|
- Getting
started with Arduino and Genuino products
- Arduino
software
- Program
- Monitoratge sèrie / Serial monitor
(without IDE; or monitoring a
second Arduino)
- IDE
- Connexió USB / USB connection
- afegiu el vostre usuari al grup dialout (grup propietari
de /dev/ttyUSBxx) / add your user to group dialout (group
owner of /dev/ttyUSBxx):
sudo usermod -a -G dialout my_user
newgrp dialout
journalctl -f
- connecteu la placa / connect your board
- NodeMCU
- CH340
de gen. 11 18:52:16 localhost kernel:
usb 1-2: ch341-uart converter now attached to
ttyUSB0
lsusb
- Arduino
- Nano:
ID 0403:6001 Future Technology
Devices International, Ltd FT232 Serial (UART) IC
- NodeMCU
- CH340:
ID 1a86:7523 QinHeng Electronics
HL-340 USB-Serial adapter
- Arduino IDE
- Software
- Instal·lació / Installation
- 2.x
- download nighty
build
arduino-ide_nightly-yyyymmdd_Linux_64bit.AppImage
chmod +x
arduino-ide_nightly-yyyymmdd_Linux_64bit.AppImage
./arduino-ide_nightly-yyyymmdd_Linux_64bit.AppImage
- 1.x
- Problemes / Problems
- Fitxers de configuració
- 2.x
- ~/.arduino15/preferences.txt
- 1.x
- Configuració / Setup
- 2.x
- ~/.arduino15/
- it will be created and populated the first
time that IDE is launched
- ~/.arduinoIDE/
- ~/.config/
- Arduino IDE/
- arduino-ide/
-
boards |
info |
File -> Preferences -> Settings ->
Additional boards manager URLs: |
Tools -> Board
-> Boards Manager...
|
|
|
|
|
will install to:
~/.arduino15/packages/ |
Arduino |
|
|
|
|
ESP8266 |
|
https://arduino.esp8266.com/stable/package_esp8266com_index.json |
|
|
ESP32 |
|
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json |
"esp32 by Espressif Systems" |
esp32/hardware/esp32/2.0.5/libraries/... |
- Ús / Usage (Arduino IDE 2.x)
- File
- Sketchbook (from ~/Arduino/)
- Examples
- Built-in Examples
- Examples for ... (selected board) (from
~/.arduino15/...)
- Examples for ESP32S3 Dev Module
- ...
- WebServer
(~/.arduino15/packages/esp32/hardware/esp32/2.0.6/libraries/WebServer/examples/)
- ...
- Examples from Custom Libraries (from
~/Arduino/libraries/)
- Editor
- Verifica
- ESP32
- Install
board
- Setup
- select "ESP32S3 Dev Module"
- Tools (Arduino
IDE Tools Menu)
- USB CDC On Boot: "Enable"
- Flash Size: "16MB (128Mb)"
- Partition Scheme: "Huge APP (3MB No
OTA/1MB SPIFFS)"
- PSRAM: "OPI PSRAM"
- Install libraries
- TFT_eSPI you should use TFT_eSPI provided by LilyGO.
If you use official library (e.g. version ...)
you will get a black screen. IMPORTANT: be
careful that official library is not installed
as an automatic upgrade.
- Ús / Usage (Arduino IDE 1.x)
- Arrencada / Start
- des de la icona de l'escriptori / from desktop
icon
- prèviament heu d'haver executat install.sh /
previous ./install is required
- from command line
arduino (in
/usr/local/bin/arduino)
- Tools
- Placa: ...
- Port: /dev/ttyUSB0
- Preferències / Preferences
- Temes / Themes
- Utilitza un editor extern / Use an exteral editor
- Es pot fer servir qualsevol editor per a
editar el fitxer (p.ex. emacs),
i l'IDE per a verificar-lo i pujar-lo
- Editor
- Verifica
- Program
- Eines -> Informació de la placa
- Obre (4a icona)
- Basics -> Blink
- crearà el codi font:
- Fitxer -> Sketchbook
- projectes propis, desats a ~/Arduino/ (es pot
canviar a Fitxer->Preferències->Ubicació
del Sketchbook)
- Esbós -> Verifica/Compila
- Esbós -> Puja
- Problemes /
Problems
PORTS
{} / {} => {}
Couldn't find a Board on the selected
port. Check that you have the correct port
selected. If it is correct, try
pressing the board's reset button after
initiating the upload.
- Solució / Solution
- Segurament es tracta d'una placa ATmega32u4 (Micro, Leonardo)
- Mentre apareixen les línies «
PORTS
{} / {} => {} », premeu
dues vegades ràpidament el botó
físic de la placa
- ...
avrdude: jtagmkII_getsync(): sign-on
command: status -1
- Workaround
- pugeu blink. Us apareixerà el
missatge «
Cannot locate
"flash" and "boot" memories in
description », però haurà
funcionat
- ara torneu a pujar l'esbós que
voleu pujar
avrdude: jtagmkII_initialize():
Cannot locate "flash" and "boot" memories
in description
- Només és un avís que es pot ignorar /
Just a warning. Can be safely ignored.
- Problemes / Problems
ModuleNotFoundError: No module named 'serial'
- Solució / Solution
sudo dnf install python3-serial
- Command line
- arduino-cli
arduino-1.8.5/hardware/tools/avr/bin
- See detailed logs when using Upload button on Arduino IDE:
/disc/Baixades/arduino-1.8.5/arduino-builder
\
-compile \
-logger=machine \
-hardware /disc/Baixades/arduino-1.8.5/hardware \
-tools /disc/Baixades/arduino-1.8.5/tools-builder \
-tools /disc/Baixades/arduino-1.8.5/hardware/tools/avr
\
-built-in-libraries
/disc/Baixades/arduino-1.8.5/libraries \
-libraries /home/cesc/Arduino/libraries \
-fqbn=arduino:avr:micro \
-vid-pid=0X2341_0X8037 \
-ide-version=10805 \
-build-path /tmp/arduino_build_595924 \
-warnings=all \
-build-cache /tmp/arduino_cache_334524 \
-prefs=build.warn_data_percentage=75 \
-prefs=runtime.tools.arduinoOTA.path=/disc/Baixades/arduino-1.8.5/hardware/tools/avr
\
-prefs=runtime.tools.avrdude.path=/disc/Baixades/arduino-1.8.5/hardware/tools/avr
\
-prefs=runtime.tools.avr-gcc.path=/disc/Baixades/arduino-1.8.5/hardware/tools/avr
\
-verbose \
/disc/Baixades/arduino-1.8.5/examples/01.Basics/Blink/Blink.ino
/disc/Baixades/arduino-1.8.5/hardware/tools/avr/bin/avrdude \
-C/disc/Baixades/arduino-1.8.5/hardware/tools/avr/etc/avrdude.conf
\
-v \
-patmega32u4 \
-cavr109 \
-P/dev/ttyACM0 \
-b57600 \
-D \
-Uflash:w:/tmp/arduino_build_595924/Blink.ino.hex:i
- Compile (.ino -> .hex) using arduino-builder:
- Upload (.hex file) to Arduino using avrdude:
- AVR
Tutorial: Starting out with avrdude
export ARDUINO_ROOT= /disc/Baixades/arduino-1.8.13
avrdude
-C${ARDUINO_ROOT}/hardware/tools/avr/etc/avrdude.conf
-v -patmega32u4 -cavr109 -P/dev/ttyACM0 -b57600 -D
-Uflash:w:/tmp/arduino_build_595924/Blink.ino.hex:i
- Problemes / Problems
avrdude: butterfly_recv(): programmer is not
responding
- Solució / Solution
- desconnecteu el cable USB; torneu a
connectar-lo
- opció 1 (all software):
export ARDUINO_ROOT= /disc/Baixades/arduino-1.8.13
stty -F /dev/ttyACM0 1200
&& sleep 1 &&
${ARDUINO_ROOT}/hardware/tools/avr/bin/avrdude
-C${ARDUINO_ROOT}/hardware/tools/avr/etc/avrdude.conf
-v -patmega32u4 -cavr109
-P/dev/ttyACM0 -b57600 -D
-Uflash:w:/tmp/arduino_build_979439/Blink.ino.hex:i
- opció 2 (hardware + software):
- premeu ràpidament dues vegades el
botó físic de reset de la placa: la
placa es posarà en mode bootloader
(led de la placa en parpelleig ràpid)
durant uns 8 segons; durant aquest
temps executeu el pas número 2 / quick
double press the physical hardware
reset button: th board will be in
bootloader mode (quick flash of board
led) for about 8 seconds; inside this
period of time, perform the step
number 2
- si durant aquests 8 segons feu
lsusb
ID 2a03:0037 dog
hunter AG Arduino Micro
(bootloader)
${ARDUINO_ROOT}/hardware/tools/avr/bin/avrdude
-C${ARDUINO_ROOT}/hardware/tools/avr/etc/avrdude.conf
-v -patmega32u4 -cavr109
-P/dev/ttyACM0 -b57600 -D
-Uflash:w:/tmp/arduino_build_979439/Blink.ino.hex:i
- Biblioteques / Libraries
- Exemples / Examples
- Starter kit
- The Arduino
playground
- Tutorials
- Foundations
and More
- Introduction
- Language Reference
|
|
|
Functions |
Digital
I/O |
- digitalRead()
- digitalWrite()
- pinMode()
|
Analog
I/O |
- analogRead()
- analogReference()
- analogWrite()
|
Zero,
Due & MKR Family |
- analogReadResolution()
- analogWriteResolution()
|
Advanced
I/O |
- noTone()
- pulseIn()
- pulseInLong()
- shiftIn()
- shiftOut()
- tone()
|
Time |
- delay(ms)
- delayMicroseconds()
- micros()
- overflow every 70 minutes
- millis()
|
Math |
- abs(x)
- constrain(x, a, b)
- map(value, fromLow, fromHigh,
toLow, toHigh)
- max(x, y)
- min(x, y)
- pow(base, exponent)
- sq(x)
- sqrt(x)
|
Trigonometry |
- cos(rad)
- sin(rad)
- tan(rad)
|
Characters |
- isAlpha()
- isAlphaNumeric()
- isAscii()
- isControl()
- isDigit()
- isGraph()
- isHexadecimalDigit()
- ilLowerCase()
- isPrintable()
- isPunct()
- isSpace()
- isUpperCase()
- isWhiteSpace()
|
Random
Numbers |
|
Bits
and Bytes |
- bit()
- bitClear()
- bitRead()
- bitSet()
- bitWrite()
- highByte()
- lowByte()
|
External
Interrupts |
- attachInterrupt()
- detachInterrupt()
|
Interrupts |
- interrupts()
- noInterrupts()
|
Communication |
- Serial
- if(Serial), ..., print(),
println(), write(), ...
- SPI
- Stream
- available(), read(), flush(),
...
- Wire (I2C: SDA, SCL)
- #include <Wire.h>
- begin(), end(), ...
|
USB |
|
Variables |
Constants |
- HIGH | LOW
- INPUT | OUTPUT | INPUT_PULLUP
- LED_BUILTIN
- true | false
- Integer Constants
n = 101; // decimal
n = 0b101; // binary
n = 0101 ;
// octal
n = 0x101 ;
// hexadecimal
- n
= 33u
;
// unsigned
- n
= 100000L
;
// long
- n
= 32767ul
;
// unsigned long
- Floating Point Constants
|
Conversion |
- (insigned int)
- (unsigned long)
- byte()
- char()
- float()
- int()
- long()
- word()
|
Data Types |
- array
- bool
- boolean
- byte
- char
- double
- float
- int
- long
- short
- size_t
- string
- String()
- String stringOne = "Hello
String";
- String stringOne = String(255,
BIN)
- ...
- Functions
- charAt(), compareTo(), ...
- Operators
- unsigned char
- unsigned int
- unsigned long
- void
|
Variable Scope & Qualifiers |
- const
- scope
- static
- visible to only one function
- persist between function calls
- volatile
- load the variable from RAM
instead of storage register
|
Utilities |
- PROGMEM
- store data in flash (program)
memory instead of SRAM
- Arduino
Memory Guide
- F() macro
- Serial.print(F("Write
something on the Serial
Monitor that is stored in
FLASH"));
- sizeof()
|
Structure |
Sketch (C++) |
|
Control Structure |
- break
- continue
- do...while
- else
- for (initialisation; condition;
increment)
- goto
- if
- return
- switch...case
- while
|
Furher Syntax |
- #define
- #include
- #include <LibraryFile.h>
- AVR C libraries: avr-libc
- other installed libraries
- #include "LocalFile.h"
- files in the sketch folder
- /**/
- //
- ;
- {}
|
Arithmetic Operations |
|
Comparison Operators |
|
Boolean Operators |
|
Pointer Access Operators |
- & (the address of ...)
- * (the value of address ...)
|
Bitwise Operators |
- & (AND)
- << (left shift)
- >> (right shift)
- ^ (XOR)
- | (OR)
- ~ (NOT)
|
Compound Operators |
- %=
- &=
- *=
- ++
- x++; // increment x by one and
returns the old value of x
- ++x; // increment x by one and
returns the new value of x
- +=
- --
- x--; // decrement x by one and
returns the old value of x
- --x; // decrement x by one and
returns the new value of x
- -=
- /=
- ^=
- |=
|
- Built-In
Examples
- Examples
from Libraries
- Tutorials
on Arduino Project Hub
- Tutoriales
y proyectos con Arduino (Naylamp)
- Pantalles / Screens
- LCD IIC (LCM1602)
- Adafruit
(Pantalla
OLED 1.3' SH1106 128x64)
- u8g2
- Hardware SPI (use specific connections:
D13-SCLK--CLK, D11-MOSI--MOSI)
- U8G2_SH1106_128X64_NONAME_1_4W_HW_SPI(rotation,
cs, dc [, reset])
- U8G2_SH1106_128X64_NONAME_2_4W_HW_SPI(rotation,
cs, dc [, reset])
- U8G2_SH1106_128X64_NONAME_F_4W_HW_SPI(rotation,
cs, dc [, reset])
- Software SPI (use specified pins: clock, data)
- U8G2_SH1106_128X64_NONAME_1_4W_SW_SPI(rotation,
clock, data, cs, dc [, reset])
- U8G2_SH1106_128X64_NONAME_2_4W_SW_SPI(rotation,
clock, data, cs, dc [, reset])
- U8G2_SH1106_128X64_NONAME_F_4W_SW_SPI(rotation,
clock, data, cs, dc [, reset])
- Modes
-
mode
|
pros
|
cons
|
constructor
|
example
|
page
buffer (picture loop)
|
|
|
1
|
void
setup(void) {
u8g2.begin();
}
void loop(void) {
u8g2.firstPage();
do {
u8g2.setFont(u8g2_font_ncenB14_tr);
u8g2.drawStr(0,24,"Hello World!");
} while ( u8g2.nextPage() );
}
|
u8x8
character
|
|
- no graphics
- no all displays
|
2
|
void
setup(void) {
u8x8.begin();
}
void loop(void) {
u8x8.setFont(u8x8_font_chroma48medium8_r);
u8x8.drawString(0,1,"Hello
World!");
}
|
full
buffer
|
|
|
F
|
void
setup(void) {
u8g2.begin();
}
void loop(void) {
u8g2.clearBuffer();
u8g2.setFont(u8g2_font_ncenB14_tr);
u8g2.drawStr(0,20,"Hello
World!");
u8g2.sendBuffer();
}
|
- Example
- Connections (
4W_HW_SPI )
-
OLED
|
Arduino
|
GND
|
GND
|
VCC
|
5V
|
CLK
|
D13
|
MOSI
|
D11
|
RES
|
D8
|
DC
|
D9
|
CS
|
D10
|
- IDE: Examples / U8g2
- uncomment:
U8G2_SH1106_128X64_NONAME_F_4W_HW_SPI
u8g2(U8G2_R0, /* cs=*/ 10, /*
dc=*/ 9, /* reset=*/ 8);
- Basic program
#include
<Arduino.h>
#include <U8g2lib.h>
#include <SPI.h>
#include <Wire.h>
// free choice
#define PIN_CS 10
#define PIN_DC 9
#define PIN_RESET 8
// HW => CLK=D13, MOSI=D11
U8G2_SH1106_128X64_NONAME_F_4W_HW_SPI
u8g2(U8G2_R0, PIN_CS, PIN_DC,
PIN_RESET);
void setup(void) {
u8g2.begin();
}
void loop(void) {
u8g2.clearBuffer();
u8g2.setFont(u8g2_font_ncenB14_tr);
u8g2.drawStr(0,20,"Bon dia!");
u8g2.drawCircle(20, 40, 10);
u8g2.sendBuffer();
}
- Interfacing
& displaying a custom graphic on an
0.96″ I2C OLED with Arduino
- u8glib
|
|
- Modelisme
- Laboratori electrònica
- Generació de senyals / Signal generation
|
|
- Info
-
|
datasheet |
any /
year |
processor |
nuclis |
velocitat (màx) |
ROM |
SRAM |
SPI flash |
WiFi |
Bluetooth |
logic |
built-in sensors |
GPIOs |
ADC |
DAC |
SPI |
UART |
I2C |
I2S |
Bus CAN |
ESP8266 |
|
2014 |
Tensilica LX106 single-core 80MHz |
1 |
80MHz (160MHz) |
|
160kB |
16MiB |
|
- |
3.3V |
|
16 |
1 (10-bit) |
2 |
4 |
3 |
2 |
2 |
x |
ESP32 |
ESP32
Series |
2016 |
Tensilica Xtensa X36 |
2 |
160MHz (240MHz) |
|
512kB |
16MiB |
x |
v4.2 BR/EDR + BLE |
3.3V |
- hall effect
- [temperature sensor]
|
36 |
18 (12-bit) |
2 (8-bit) |
4 |
3 |
2 |
2 |
x (2.0) |
ESP32-S2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ESP32-C3 |
ESP32-C3
Series |
2020 |
RISC-V |
1 |
(160MHz) |
384KB |
400KB |
|
x |
5.0 LE |
|
|
22 |
2 (12-bit) |
- |
3 |
2 |
1 |
1 |
- |
ESP32-S3 |
ESP32-S3
Series |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- RAM (s3lcd firmware)
|
4M |
8M |
16M |
no SPIRAM |
|
|
|
quad SPIRAM |
|
|
- T-Embed
- WT21-SC01 Plus
- M5Stack CoreS3
|
octal SPIRAM |
|
|
- T-Display S3
- T-HMI
- ESP32-S3-Box
- ESP32-S3-Box Lite
|
- WiFi setup
- Desenvolupament / Development
- C / C++
-
|
Arduino-ESP32 |
ESP-IDF + Arduino-ESP32 |
ESP-IDF (Espressif IoT
Development Framework)
|
|
Es programa com si fos un Arduino (setup+loop) |
Pot funcionar de totes dues maneres:
setup+loop o bé app_main |
Només accepta app_main()
També és el que MicroPython fa servir |
1. install
core from |
|
ESP-IDF
|
- Linux
- Standard
Toolchain Setup for Linux and macOS
(ESP32-S3,
...)
mkdir -p ~/esp && cd
~/esp
git clone --recursive
https://github.com/espressif/esp-idf.git
- this will install master to:
~/esp/esp-idf/ (~1,9 GiB)
cd esp-idf
./install.sh [esp32s3]
- will create and install:
~/expressif/
(~2,3 GiB)
- idf-env.json, containing all
targets (or only those
specified as install.sh
arguments): esp32p4, esp32c3,
esp32s3, esp32c5, esp32c2,
esp32c6, esp32h2, esp32,
esp32s2, esp32c61
dist/
- tar versions to be
installed in tools/
tools/
xtensa-esp-elf-gdb/
riscv32-esp-elf-gdb/
xtensa-esp-elf/
riscv32-esp-elf/
esp32ulp-elf/
openocd-esp32/
esp-rom-elfs/
python_env/
idf5.4_py3.10_env/
- will contain all python
packages, needed by ...
- ...
- Eclipse
Plugin
- Espressif > Download and Configure
ESP-IDF
- Choose a directory to download
ESP-IDF to: ~/esp/
- this will install to:
~/esp/esp-idf-v5.0/
- or: Use an existing ESP-IDF
directory from file system
- Choose existing ESP-IDF
directory: ~/esp/esp-idf/
- VSCode Extension
- Espressif IDE
|
2. install
tools from |
|
|
- Linux
cd ~/esp/esp-idf/
./install.sh all
- will install tools to:
~/.espressif/
- Eclipse
- installed automatically after
installing ESP-IDF, or
- Espressif > ESP-IDF Tools Manager
> Install Tools
- ESP-IDF Directory:
~/esp/esp-idf-v5.0/
- will install tools to:
~/.espressif/
|
main |
myproject.ino (C++)
void setup(){
Serial.begin(115200);
while(!Serial){
; // wait for serial
port to connect
}
}
void loop(){
Serial.println("loop");
delay(1000);
}
|
(Autostart Arduino setup and loop on boot:
off)
main.c or main.cpp
#include
"Arduino.h"
extern "C" void app_main()
{
initArduino();
// Arduino-like setup()
Serial.begin(115200);
while(!Serial){
; // wait for serial
port to connect
}
// Arduino-like loop()
while(true){
Serial.println("loop");
}
// WARNING: if program reaches end
of function app_main() the MCU will
restart.
}
(Autostart Arduino setup and loop on boot: on)
main.cpp
#include
"Arduino.h"
void setup(){
Serial.begin(115200);
while(!Serial){
; // wait for serial
port to connect
}
}
void loop(){
Serial.println("loop");
delay(1000);
}
|
my_project.c (automatically created by idf.py
create-project )
#include
<stdio.h>
void app_main(void)
{
}
|
3. setup variables |
|
|
. $HOME/esp/esp-idf/export.sh
- will set, for the present terminal:
IDF_PATH=~/esp/esp-idf
- expand PATH with tools (e.g.
idf.py)
- Eclipse
- Espressif > Download and Configure
ESP-IDF
- will set:
- Preferences > C/C++ >
Build > Environment
- IDF_PATH
- IDF_PYTHON_ENV_PATH
- ...
|
4. new project |
|
|
- CLI (Step
5. First Steps on ESP-IDF)
cd ~/esp
- from example
cp -r
$IDF_PATH/examples/get-started/hello_world
.
cd ~/esp/hello_world
- brand new:
idf.py create-project
my_project
- Eclipse
- Window > Perspective > Reset
Perspective...
- File > New > Espressif IDF
Project
|
5. build and
flash project |
|
|
- CLI
cd ~/esp/my_project
idf.py
set-target esp32s3
idf.py menuconfig
- to set WiFi SSIFD and credentials:
- idf.py
build
- idf.py
-p /dev/ttyACM0 flash
- Eclipse
|
6. monitor project |
|
|
- CLI
- idf.py
-p /dev/ttyACM0 monitor
- or combin flash and monitor:
idf.py
-p /dev/ttyACM0 flash monitor
- Eclipse
|
tutorials |
- Tutorials
- Basic Tutorial
- Blink.ino
- use 38 (TFT backlight) instead
of LED_BUILTIN
- ...
|
|
|
examples |
dir |
Arduino IDE |
examples |
examples dirs in
.../espressif/arduino-esp32/libraries/ |
File > Examples > Examples for
ESP32S3 Dev Module |
|
~/Arduino/libraries/ |
File > Examples > Examples from
Custom Libraries |
|
~/Arduino/T-Display-S3/example/ |
File > Sketchbook > T-Display-S3 |
|
|
|
|
- IDE
- Arduino
IDE: ESP32
- Platform IO
- ESP-IDF (Espressif IoT Development Framework)
- ESP-IDF
Programming Guide
- Plugins for IDE
- idf-eclipse-plugin
- Installation
- Eclipse plugin
- Help -> Install New
Software -> Add...
- Name: Espressif IDF Plugin
for Eclipse
- Location:
https://dl.espressif.com/dl/idf-eclipse-plugin/updates/latest/
- ESP-IDF
- Espressif (entre Run i Window)
-> ESP-IDF Manager -> (top
right button) Add ESP-IDF
- (primera vegada) Choose a
directory to download
ESP-IDF to: /home/.../esp/
- this will install to:
~/esp/esp-idf-v5.0/
- (si ja el teniu) Use an
existing ESP-IDF directory
from file system
- Choose existing
ESP-IDF directory:
/home/.../esp/esp-idf/
- Install Tools
- this will install, in
~/.espressif/
- dist/
- riscv32-esp-elf-gdb-...
- clang-esp-...
- cmake-...
- ninja-linux-...
- qemu-xtensa-softmmu-esp_develop_...
- tools/
- riscv32-esp-elf-gdb/
- esp-clang/
- cmake/
- ninja/
- qemu-xtensa/
- automatically done. If
not:
- Installing
ESP-IDF Tools
- Problems / Problemes
Copying File:
/home/.../.espressif/tools/openocd-esp32/v0.12.0-esp32-20240726/openocd-esp32/bin/../share/openocd/contrib/60-openocd.rules
to destination:
/etc/udev/rules.d/60-openocd.rules
Unable to copy rules for
OpenOCD to system
directory, try running
the eclipse with sudo
command
- Solució / Solution
- sudo
cp
/home/.../.espressif/tools/openocd-esp32/v0.12.0-esp32-20240726/openocd-esp32/bin/../share/openocd/contrib/60-openocd.rules
/etc/udev/rules.d/60-openocd.rules
- Ús / Usage
- open C/C++ perspective
- Window -> Perspective ->
Reset perspective...
- Create
a new project
- File -> New -> Espressif
IDF Project
- New Launch Target: ESP Target
- Name: mytarget_esp32s3
- IDF Target: esp32s3
- Serial Port: /dev/ttyACM0
- Serial console
- (top icon) Open a Terminal
(Shift+Ctrl+Alt+T)
- Problemes / Problems
- IDF Eclipse plugin 2.7.0
Errors occurred during the
build.
Errors running builder 'CDT
Core Builder' on project
'hello_world'.
'int
com.espressif.idf.core.build.IDFBuildConfiguration.watchProcess(java.lang.Process,
org.eclipse.cdt.core.resources.IConsole)'
- Exemples
- WiFi
- fixed
#include
<WiFi.h>
const char* ssid = "xxxxxxxxxx";
const char* password = "xxxxxxxxxx";
void setup(void) {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() !=
WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("Connected");
Serial.println(WiFi.localIP());
}
- SmartConfig
- Comunicació / Communication
- Gràfics / Graphics
- LVGL
- TFT
#include
"TFT_eSPI.h" /* Please use the TFT library
provided in the library. */
TFT_eSPI lcd = TFT_eSPI();
TFT_eSprite sprite =
TFT_eSprite(&lcd);
- MicroPython
- Info
- Instal·lació / Installation
- Install ESP-IDF
- Linux
- Install ESP-IDF
- checkout v5.0.2
cd esp-idf
git checkout v5.0.2
git submodule update --init
--recursive
- Install
chmod +x install.sh
./install.sh
- this will install needed pip packages
in ~/.espressif/python_env/idf5...
- ...
- Build the firmware or get it
-
- Lilygo
- lbuque/micropython-builder
- Compilació / Compilation
cd ~/src
git clone
https://github.com/lbuque/micropython-builder.git
cd micropython-builder
- T-DisplayS3
ln -s config_T-DisplayS3
config
make
- Instal·lació / Installation
cd
micropython-builder/build_dir/esp32s3/build-LILYGO_T-DisplayS3/esp-idf/esptool_py
- poseu el dispositiu en mode bootloader
~/.espressif/python_env/idf4.4_py3.8_env/bin/python
../../../esp-idf/components/esptool_py/esptool/esptool.py
-p /dev/ttyACM0 erase_flash
Project build complete. To
flash, run this command:
~/.espressif/python_env/idf4.4_py3.8_env/bin/python
../../../esp-idf/components/esptool_py/esptool/esptool.py
-p /dev/ttyACM0
-b 460800 --before default_reset
--after no_reset --chip
esp32s3 write_flash
--flash_mode dio --flash_size
detect --flash_freq 80m 0x0
../../../build-LILYGO_T-DisplayS3/bootloader/bootloader.bin
0x8000
../../../build-LILYGO_T-DisplayS3/partition_table/partition-table.bin
0x10000
../../../build-LILYGO_T-DisplayS3/micropython.bin
- Problemes / Problems
The filesystem
appears to be corrupted.
If you had important data
there, you
may want to make a flash
snapshot to try to recover
it. Otherwise, perform
factory reprogramming of
MicroPython firmware
(completely erase flash,
followed
by firmware programming).
- Solució / Solution
- Perform
a previous
erase_flash
- ...
- lilygo-micropython
- IMPORTANT: use
lbuque/micropython-builder instead
- T-DisplayS3
- Dependències / Dependencies
- Mageia
sudo dnf install git
make python3 python3-pip
cmake quilt
cd ~/src
git clone
https://github.com/Xinyuan-LilyGO/lilygo-micropython.git
- cd
lilygo-micropython
cp config_T-DisplayS3 config
make
...
- Problemes / Problems
CMake Error at
/home/.../src/lilygo-micropython/extmod/display/lcd/src/micropython.cmake:3
(include):
include could not find
load file:
/home/.../src/lilygo-micropython/build_dir/esp32s3/build-LILYGO_T-DisplayS3/../lcd_binding_micropython/lcd/micropython.cmake
- degut a:
make[1]:
entering dir
'/home/.../src/lilygo-micropython/extmod/display/lcd'
Download
lcd_binding_micropython-59bbbdae5ecc9ae84b986ce54c089250a13cb768.tar.gz
over git
S'està clonant a
«lcd_binding_micropython»...
remote: Enumerating
objects: 531, done.
remote: Counting
objects: 100% (9/9),
done.
remote: Compressing
objects: 100% (4/4),
done.
remote: Total 531
(delta 5), reused 5
(delta 5), pack-reused
522
S'estan rebent
objectes: 100%
(531/531), 324.27 KiB
| 1.72 MiB/s, fet.
S'estan resolent les
diferències: 100%
(272/272), fet.
fatal: la
referència no és un
arbre:
59bbbdae5ecc9ae84b986ce54c089250a13cb768
- perquè
cd
~/src/lilygo-micropython/tmp/dl/lcd_binding_micropython
git checkout
59bbbdae5ecc9ae84b986ce54c089250a13cb768
fatal: la
referència no és
un arbre:
59bbbdae5ecc9ae84b986ce54c089250a13cb768
- Solució / Solution:
- ...
- st7789s3_mpy: MicroPython
driver for the TTGO T-Display-S3 st7789
display
cd ~/src/
- git
clone
https://github.com/russhughes/st7789s3_mpy.git
- s3lcd: ESP_LCD
MicroPython driver for ESP32-S3 Devices
with ST7789 or compatible displays.
- faster than st7789s3_mpy
- beta
cd ~/src/
- git
clone
https://github.com/russhughes/s3lcd.git
- Supplied firmware
- cd
s3lcd/firmware/
- T-Display S3
source
~/.espressif/python_env/idf5.0_py3.8_env/bin/activate
cd S3LCD_OCT_16M
esptool.py --port
/dev/ttyACM0 erase_flash
esptool.py --chip
esp32s3 --port
/dev/ttyACM0 write_flash
-z 0x000 firmware.bin
- LVGL
- lv_micropython
(forked from micropython)
- Dependències / Dependencies
- Instal·lació
cd ~/src
git clone ...
- ...
- ...
- Pujada del microprogramari cap al dispositiu /
Upload firmware to device
- engegueu el
dispositiu en mode bootloader:
- lsusb en mode normal:
ID 303a:4001
Espressif Systems Espressif Device
- premeu reset + botó del costat
- deixeu anar reset
- deixeu anar el botó del costat
- comproveu amb lsusb que el dispositiu ara
està en mode bootloader
ID 303a:1001
Espressif USB JTAG/serial debug unit
- si heu compilat el microprogramari
idf.py build
idf.py -D
MICROPY_BOARD=GENERIC_SPIRAM build
idf.py flash
- si l'heu baixat ja compilat:
source
~/.espressif/python_env/idf5.0_py3.8_env/bin/activate
- cd
...
esptool.py --port /dev/ttyACM0
erase_flash
esptool.py --chip esp32s3 --port
/dev/ttyACM0 write_flash -z 0x000
firmware.bin
- ...
- Verificació de la comunicació
via port sèrie
source
~/.espressif/python_env/idf5.0_py3.*_env/bin/activate
- miniterm.py
/dev/ttyACM0
115200
- ENTER
help()
soft reboot: CTRL+D
- to exit:
CTRL+]
- ...
- IDE
- Thonny
- Tools -> Options
- View -> Files
- From This Computer
- select file
s3lcd/examples/configs/t-display-s3/tft_config.py
- Upload to /
- Eines / Tools
- rshell
(Remote MicroPython Shell)
- Instal·lació / Installation
- Ús / Usage
- Exemples / Examples
- shelly-fpm / shelly-python
- How
To Run A Program At Boot
- lbuque/lcd_binding_micropython examples
- russhughes/st7789s3_mpy examples
- russhughes/s3lcd examples
- WiFi
- Configuring
the WiFi and using the board
- rtc via ntp
import network
from machine import RTC
from ntptime import settime
def wlan_connect(ssid='MYSSID',
password='MYPASSWORD'):
wlan =
network.WLAN(network.STA_IF)
if not wlan.active() or
not wlan.isconnected():
wlan.active(True)
print('connecting to:', ssid)
try:
wlan.connect(ssid, password)
except Exception as e:
print(e)
while not wlan.isconnected():
pass
print('network
config:', wlan.ifconfig())
def main():
# connect to WLAN
wlan_connect()
# real-time clock
rtc = RTC()
# set time from NTP
settime()
# year, month, day,
weekday, hours, minutes, seconds,
subseconds
print("{}".format(rtc.datetime()))
main()
- ...
- Gràfics / Graphics
- TFT
- min_tft.py
import
vga1_bold_16x32 as font
import tft_config
import s3lcd
def main():
try:
tft =
tft_config.config(tft_config.WIDE)
tft.init()
text = "toto"
xpos = 20
ypos = 100
fg = s3lcd.WHITE
bg = s3lcd.BLACK
tft.text(font, text, xpos, ypos, fg,
bg)
tft.show()
finally:
tft.deinit()
main()
- ntp_tft.py
- LVGL
- Processos
- Projectes
- ...
- ...
- ...
- ESP8266
- ESP
- Info
- Maquinari / Hardware
- Mòduls / Modules (SoC +
antena)
-
|
|
|
components |
marca |
model |
pins |
SoC |
memòria |
antena |
Expressif |
ESP-WROOM-02 |
|
|
|
|
... |
|
|
|
|
Ai-Thinker |
ESP-01 |
|
|
|
|
... |
|
|
|
|
ESP-12 |
|
ESP8266 |
16Mbit |
x
|
ESP-12E |
22 |
|
|
x |
- Plaques de desenvolupament / Development boards (mòdul
+ sèrie/USB + ...)
-
|
|
components |
tipus |
model |
mòdul |
serial/USB |
width
(breadboard
pins) |
fabricant |
NodeMCU (wp) |
v0.9 / V1 |
ESP-12 |
|
|
|
v1.0 / V2 |
ESP-12E |
CP102
|
8 |
|
v1.0 / V3 |
ESP-12E |
CH340G |
10 |
|
- Programari / Software
- Arduino IDE
- Fitxer -> Preferències
- URL addicionals de gestor de plaques:
- ESP32
- Maquinari / Hardware
- Programari / Software
- ...
- ...
|
|
- Python
- Info
- Instal·lació / Installation
- Mòduls / Modules
- Instal·lació / Installation
- Package
management
- micropython-lib
- Opcions principals (Usage)
- mip
- mpremote
mpremote connect /dev/ttyUSB0 mip
install package-name
- freeze into firmware
- copy the files manually
mpremote connect /dev/ttyUSB0 cp
python-stdlib/base64/base64.py :/lib
- mòduls disponibles
- Exemples
- ...
|
|
...
|
http://www.francescpinyol.cat/arduino.html
Primera versió: / First version: 29.XII.2017
Darrera modificació: 1 de setembre de 2024 / Last update: 1st
September 2024
Cap a casa / Back home |