ESP32-C3 Kablosuz Macera

ESP32-C3 Kablosuz Macera

Kapsamlı IoT Rehberi

Espressif Sistemleri 12 Haziran 2023

Özellikler

  • Ürün: ESP32-C3 Kablosuz Macera
  • Üretici: Espressif Sistemleri
  • Tarih: 12 Haziran 2023

Ürün Kullanım Talimatları

Hazırlık

ESP32-C3 Kablosuz Macerayı kullanmadan önce,
Nesnelerin İnterneti kavramlarına ve mimarisine aşina. Bu yardımcı olacak
cihazın daha büyük IoT ekosistemine nasıl uyduğunu anlıyorsunuz
ve akıllı evlerdeki potansiyel uygulamaları.

IoT Projelerine Giriş ve Uygulama

Bu bölümde tipik IoT projeleri hakkında bilgi edineceksiniz.
ortak IoT cihazları için temel modüller dahil, temel modüller
istemci uygulamaları ve ortak IoT bulut platformları. Bu irade
anlamanız ve yaratmanız için size bir temel sağlar.
kendi IoT projeleri.

Alıştırma: Akıllı Işık Projesi

Bu uygulama projesinde akıllı bir uygulamanın nasıl oluşturulacağını öğreneceksiniz.
ESP32-C3 Kablosuz Macerayı kullanarak ışık. Proje yapısı,
fonksiyonlar, donanım hazırlama ve geliştirme süreci
ayrıntılı olarak açıklanmıştır.

Proje Yapısı

Proje, aşağıdakiler de dahil olmak üzere çeşitli bileşenlerden oluşmaktadır:
ESP32-C3 Kablosuz Macera, LED'ler, sensörler ve bulut
arka uç.

Proje Fonksiyonları

Akıllı ışık projesi parlaklığı kontrol etmenizi sağlar ve
LED'lerin rengini bir mobil uygulama aracılığıyla uzaktan veya web
arayüz.

Donanım Hazırlığı

Projeye hazırlanmak için şunları toplamanız gerekir:
ESP32-C3 Kablosuz gibi gerekli donanım bileşenleri
Macera panosu, LED'ler, dirençler ve güç kaynağı.

Geliştirme Süreci

Geliştirme süreci, geliştirmenin kurulmasını içerir
ortam, LED'leri kontrol etmek için kod yazmak,
bulut arka ucu ve akıllının işlevselliğinin test edilmesi
ışık.

ESP RainMaker'a Giriş

ESP RainMaker IoT'yi geliştirmek için güçlü bir çerçevedir
cihazlar. Bu bölümde ESP RainMaker'ın ne olduğunu ve
projelerinizde nasıl uygulanabileceği.

ESP RainMaker nedir?

ESP RainMaker, bir dizi özellik sağlayan bulut tabanlı bir platformdur.
IoT cihazlarını oluşturmaya ve yönetmeye yönelik araçlar ve hizmetler.

ESP RainMaker'ın Uygulanması

Bu bölümde yer alan farklı bileşenler açıklanmaktadır.
Talep hizmeti de dahil olmak üzere ESP RainMaker'ın uygulanması,
RainMaker Agent, bulut arka ucu ve RainMaker İstemcisi.

Alıştırma: ESP RainMaker ile Geliştirmenin Önemli Noktaları

Bu uygulama bölümünde, önemli noktaları öğreneceksiniz.
ESP RainMaker ile geliştirme yaparken dikkate alın. Buna cihaz dahildir
talep etme, veri senkronizasyonu ve kullanıcı yönetimi.

ESP RainMaker'ın Özellikleri

ESP RainMaker kullanıcı yönetimi için çeşitli özellikler sunar.
kullanıcılar ve yöneticiler. Bu özellikler kolay cihaz kullanımına izin verir
kurulum, uzaktan kontrol ve izleme.

Geliştirme Ortamını Kurma

Bu bölüm bir genel bakış sağlarview ESP-IDF (Espressif IoT)
Kalkınma Çerçevesi), resmi geliştirme çerçevesidir
ESP32 tabanlı cihazlar için. Farklı versiyonlarını açıklıyor
ESP-IDF ve geliştirme ortamının nasıl kurulacağı.

Donanım ve Sürücü Geliştirme

Akıllı Işık Ürünlerinin ESP32-C3 Temelli Donanım Tasarımı

Bu bölüm akıllı ışığın donanım tasarımına odaklanmaktadır
ESP32-C3 Kablosuz Macerayı temel alan ürünler. Şunları kapsar:
akıllı ışık ürünlerinin özellikleri ve bileşiminin yanı sıra
ESP32-C3 çekirdek sisteminin donanım tasarımı.

Akıllı Işık Ürünlerinin Özellikleri ve Bileşimi

Bu alt bölümde, bu özelliği sağlayan özellikler ve bileşenler açıklanmaktadır.
akıllı ışık ürünleri kadar. Farklı işlevleri tartışır
ve akıllı ışıklar oluşturmaya yönelik tasarım hususları.

ESP32-C3 Çekirdek Sisteminin Donanım Tasarımı

ESP32-C3 çekirdek sisteminin donanım tasarımı güç içerir
besleme, açılış sırası, sistem sıfırlama, SPI flaşı, saat kaynağı,
ve RF ve anten hususları. Bu alt bölüm şunları sağlar:
bu hususlar hakkında ayrıntılı bilgi.

SSS

S: ESP RainMaker nedir?

C: ESP RainMaker, araçlar sağlayan bulut tabanlı bir platformdur
ve IoT cihazları oluşturmaya ve yönetmeye yönelik hizmetler. Basitleştirir
geliştirme sürecini kolaylaştırır ve uzaktan kolay cihaz kurulumuna olanak tanır
kontrol ve izleme.

S: Geliştirme ortamını nasıl kurabilirim?
ESP32-C3?

C: ESP32-C3'ün geliştirme ortamını kurmak için şunları yapmanız gerekir:
ESP-IDF'yi (Espressif IoT Development Framework) kurmak ve
sağlanan talimatlara göre yapılandırın. ESP-IDF,
ESP32 tabanlı cihazlar için resmi geliştirme çerçevesi.

S: ESP RainMaker'ın özellikleri nelerdir?

C: ESP RainMaker, kullanıcı dahil çeşitli özellikler sunar
yönetim, son kullanıcı özellikleri ve yönetici özellikleri. Kullanıcı yönetimi
Kolay cihaz talebinde bulunmaya ve veri senkronizasyonuna olanak tanır. Son kullanıcı
özellikler, cihazların bir mobil uygulama aracılığıyla uzaktan kontrol edilmesini sağlar veya
web arayüz. Yönetici özellikleri cihaz izleme için araçlar sağlar
ve yönetim.

ESP32-C3 Kablosuz Macera
Kapsamlı IoT Rehberi
Espressif Sistemleri 12 Haziran 2023

İçindekiler

Hazırlık

1

1 IoT'ye Giriş

3

1.1 IoT'nin Mimarisi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2 Akıllı Evlerde IoT Uygulaması. . . . . . . . . . . . . . . . . . . . . . . . . . 6

2 IoT Projelerine Giriş ve Uygulama

9

2.1 Tipik IoT Projelerine Giriş . . . . . . . . . . . . . . . . . . . . . . . . 9

2.1.1 Ortak IoT Cihazları için Temel Modüller . . . . . . . . . . . . . . . . . 9

2.1.2 İstemci Uygulamalarının Temel Modülleri . . . . . . . . . . . . . . . . . . . 10

2.1.3 Ortak IoT Bulut Platformlarına Giriş . . . . . . . . . . . . . . 11

2.2 Uygulama: Akıllı Işık Projesi. . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2.2.1 Proje Yapısı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.2.2 Proje İşlevleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.2.3 Donanım Hazırlığı . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2.2.4 Geliştirme Süreci . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

2.3 Özet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3 ESP RainMaker'a Giriş

19

3.1 ESP RainMaker nedir? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

3.2 ESP RainMaker'ın Uygulanması . . . . . . . . . . . . . . . . . . . . . . 21

3.2.1 Hizmet Talebi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

3.2.2 RainMaker Aracısı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

3.2.3 Bulut Arka Uç . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

3.2.4 RainMaker İstemcisi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

3.3 Uygulama: ESP RainMaker ile Geliştirmenin Önemli Noktaları . . . . . . . . . . . . 25

3.4 ESP RainMaker'ın Özellikleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

3.4.1 Kullanıcı Yönetimi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

3.4.2 Son Kullanıcı Özellikleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

3.4.3 Yönetici Özellikleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

3.5 Özet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

4 Geliştirme Ortamını Kurma

31

4.1 ESP-IDF Bittiview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

4.1.1 ESP-IDF Sürümleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

3

4.1.2 ESP-IDF Git İş Akışı . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.1.3 Uygun Bir Versiyonun Seçilmesi . . . . . . . . . . . . . . . . . . . . . . . . 34 4.1.4 Üzeriview ESP-IDF SDK Dizini. . . . . . . . . . . . . . . . . . . . 34 4.2 ESP-IDF Geliştirme Ortamını Kurma . . . . . . . . . . . . . . . . . 38 4.2.1 Linux'ta ESP-IDF Geliştirme Ortamını Kurma . . . . . . . . 38 4.2.2 Windows'ta ESP-IDF Geliştirme Ortamını Kurma . . . . . . 40 4.2.3 Mac'te ESP-IDF Geliştirme Ortamını Kurma . . . . . . . . . 45 4.2.4 VS Code'u Yükleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 4.2.5 Üçüncü Taraf Geliştirme Ortamlarına Giriş . . . . . . . . 46 4.3 ESP-IDF Derleme Sistemi . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.3.1 Derleme Sisteminin Temel Kavramları. . . . . . . . . . . . . . . . . . 47 4.3.2 Proje File Yapı . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.3.3 Derleme Sisteminin Varsayılan Oluşturma Kuralları . . . . . . . . . . . . . 50 4.3.4 Derleme Komut Dosyasına Giriş . . . . . . . . . . . . . . . . . . 51 4.3.5 Ortak Komutlara Giriş . . . . . . . . . . . . . . . . . . . 52 4.4 Alıştırma: Örnek Derlemeample Program “Yanıp Sönme” . . . . . . . . . . . . . . . . . . 53 4.4.1 Örn.ample Analizi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.4.2 Blink Programının Derlenmesi . . . . . . . . . . . . . . . . . . . . . . . 56 4.4.3 Göz Kırpma Programının Sıfırlanması . . . . . . . . . . . . . . . . . . . . . . . . 59 4.4.4 Blink Programının Seri Port Log Analizi . . . . . . . . . . . . . . 60 4.5 Özet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

II Donanım ve Sürücü Geliştirme

65

ESP5-C32'ü Temel Alan Akıllı Işık Ürünlerinin 3 Donanım Tasarımı

67

5.1 Akıllı Işık Ürünlerinin Özellikleri ve Bileşimi . . . . . . . . . . . . . . . 67

5.2 ESP32-C3 Çekirdek Sisteminin Donanım Tasarımı. . . . . . . . . . . . . . . . . . . 70

5.2.1 Güç Kaynağı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

5.2.2 Açılış Sırası ve Sistem Sıfırlaması . . . . . . . . . . . . . . . . . . 74

5.2.3 SPI Flaş . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

5.2.4 Saat Kaynağı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

5.2.5 RF ve Anten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

5.2.6 Çemberleme Pimleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

5.2.7 GPIO ve PWM Denetleyicisi . . . . . . . . . . . . . . . . . . . . . . . . . 79

5.3 Uygulama: ESP32-C3 ile Akıllı Işık Sistemi Oluşturma. . . . . . . . . . . . . 80

5.3.1 Modüllerin Seçilmesi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

5.3.2 PWM Sinyallerinin GPIO'larını Yapılandırma . . . . . . . . . . . . . . . . . . . . 82

5.3.3 Ürün Yazılımının İndirilmesi ve Hata Ayıklama Arayüzü . . . . . . . . . . . . 82

5.3.4 RF Tasarımı Yönergeleri . . . . . . . . . . . . . . . . . . . . . . . . . . 84 5.3.5 Güç Kaynağı Tasarımı Yönergeleri . . . . . . . . . . . . . . . . . . . 86 5.4 Özet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

6 Sürücü Geliştirme

87

6.1 Sürücü Geliştirme Süreci . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

6.2 ESP32-C3 Çevresel Uygulamalar . . . . . . . . . . . . . . . . . . . . . . . . . 88

6.3 LED Sürücü Temelleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

6.3.1 Renk Uzayları . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

6.3.2 LED Sürücüsü . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

6.3.3 LED Karartma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

6.3.4 PWM'ye Giriş . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

6.4 LED Karartma Sürücüsü Geliştirme . . . . . . . . . . . . . . . . . . . . . . . . 96

6.4.1 Geçici Olmayan Depolama (NVS) . . . . . . . . . . . . . . . . . . . . . . . . 97

6.4.2 LED PWM Denetleyicisi (LEDC) . . . . . . . . . . . . . . . . . . . . . . . 98

6.4.3 LED PWM Programlaması . . . . . . . . . . . . . . . . . . . . . . . . . . 100

6.5 Uygulama: Akıllı Işık Projesine Sürücü Ekleme . . . . . . . . . . . . . . . . . 103

6.5.1 Düğme Sürücüsü . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

6.5.2 LED Karartma Sürücüsü . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

6.6 Özet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108

III Kablosuz İletişim ve Kontrol

109

7 Wi-Fi Yapılandırması ve Bağlantısı

111

7.1 Wi-Fi Temelleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111

7.1.1 Wi-Fi'ye Giriş . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111

7.1.2 IEEE 802.11'in Gelişimi. . . . . . . . . . . . . . . . . . . . . . . . . 111

7.1.3 Wi-Fi Kavramları . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112

7.1.4 Wi-Fi Bağlantısı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115

7.2 Bluetooth'un Temelleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122

7.2.1 Bluetooth'a Giriş . . . . . . . . . . . . . . . . . . . . . . . . . 123

7.2.2 Bluetooth Kavramları . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124

7.2.3 Bluetooth Bağlantısı . . . . . . . . . . . . . . . . . . . . . . . . . . . 127

7.3 Wi-Fi Ağı Yapılandırması . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

7.3.1 Wi-Fi Ağı Yapılandırma Kılavuzu . . . . . . . . . . . . . . . . . . . . 131

7.3.2 SoftAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132

7.3.3 SmartConfig. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132

7.3.4 Bluetooth'tur. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135

7.3.5 Diğer Yöntemler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137

7.4 Wi-Fi Programlama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 7.4.1 ESP-IDF'deki Wi-Fi Bileşenleri . . . . . . . . . . . . . . . . . . . . . . . 139 7.4.2 Alıştırma: Wi-Fi Bağlantısı . . . . . . . . . . . . . . . . . . . . . . . . 141 7.4.3 Alıştırma: Akıllı Wi-Fi Bağlantısı . . . . . . . . . . . . . . . . . . . . . 145
7.5 Uygulama: Akıllı Işık Projesinde Wi-Fi Yapılandırması . . . . . . . . . . . . . . . 156 7.5.1 Akıllı Işık Projesinde Wi-Fi Bağlantısı . . . . . . . . . . . . . . . . . 156 7.5.2 Akıllı Wi-Fi Yapılandırması . . . . . . . . . . . . . . . . . . . . . . . . . 157
7.6 Özet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158

8 Yerel Kontrol

159

8.1 Yerel Kontrole Giriş . . . . . . . . . . . . . . . . . . . . . . . . . . . 159

8.1.1 Yerel Denetimin Uygulanması . . . . . . . . . . . . . . . . . . . . . . . . 161

8.1.2 AvanstagYerel Kontrol . . . . . . . . . . . . . . . . . . . . . . . . 161

8.1.3 Akıllı Telefonlar Aracılığıyla Kontrol Edilen Cihazların Keşfedilmesi . . . . . . . . . . 161

8.1.4 Akıllı Telefonlar ve Cihazlar Arasında Veri İletişimi . . . . . . . . 162

8.2 Ortak Yerel Keşif Yöntemleri . . . . . . . . . . . . . . . . . . . . . . . . 162

8.2.1 Yayın . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163

8.2.2 Çoklu Yayın . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169

8.2.3 Yayın ve Çoklu Yayın Arasındaki Karşılaştırma . . . . . . . . . . . . . . 176

8.2.4 Yerel Keşif için Çok Noktaya Yayın Uygulama Protokolü mDNS . . . . . . . . 176

8.3 Yerel Veriler için Ortak İletişim Protokolleri . . . . . . . . . . . . . . . 179

8.3.1 İletim Kontrol Protokolü (TCP) . . . . . . . . . . . . . . . . . . . 179

8.3.2 Köprü Metni Aktarım Protokolü (HTTP) . . . . . . . . . . . . . . . . . . . 185

8.3.3 Kullanıcı VerileritagRAM Protokolü (UDP) . . . . . . . . . . . . . . . . . . . . . . 189

8.3.4 Kısıtlı Uygulama Protokolü (CoAP) . . . . . . . . . . . . . . . . 192

8.3.5 Bluetooth Protokolü . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197

8.3.6 Veri İletişim Protokollerinin Özeti . . . . . . . . . . . . . . . 203

8.4 Veri Güvenliğinin Garantisi . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205

8.4.1 Aktarım Katmanı Güvenliğine (TLS) Giriş . . . . . . . . . . . . . 207

8.4.2 Da'ya Giriştagram Aktarım Katmanı Güvenliği (DTLS) . . . . . . . 213

8.5 Uygulama: Akıllı Işık Projesinde Yerel Kontrol. . . . . . . . . . . . . . . . . . 217

8.5.1 Wi-Fi Tabanlı Yerel Kontrol Sunucusu Oluşturma . . . . . . . . . . . . . . . 217

8.5.2 Komut Dosyalarını Kullanarak Yerel Kontrol İşlevselliğini Doğrulama . . . . . . . . . . . 221

8.5.3 Bluetooth Tabanlı Yerel Kontrol Sunucusu Oluşturma . . . . . . . . . . . . 222

8.6 Özet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224

9 Bulut Kontrolü

225

9.1 Uzaktan Kontrole Giriş . . . . . . . . . . . . . . . . . . . . . . . . . . 225

9.2 Bulut Veri İletişim Protokolleri . . . . . . . . . . . . . . . . . . . . . . 226

9.2.1 MQTT'ye Giriş . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 9.2.2 MQTT İlkeleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 9.2.3 MQTT Mesaj Formatı . . . . . . . . . . . . . . . . . . . . . . . . . . 228 9.2.4 Protokol Karşılaştırması . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 9.2.5 MQTT Broker'ı Linux ve Windows'ta Kurma . . . . . . . . . . . . 233 9.2.6 ESP-IDF'ye Dayalı MQTT İstemcisini Ayarlama . . . . . . . . . . . . . . . . 235 9.3 MQTT Veri Güvenliğinin Sağlanması . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 9.3.1 Sertifikaların Anlamı ve İşlevi . . . . . . . . . . . . . . . . . . . 237 9.3.2 Sertifikaların Yerel Olarak Oluşturulması . . . . . . . . . . . . . . . . . . . . . . 239 9.3.3 MQTT Broker'ı Yapılandırma . . . . . . . . . . . . . . . . . . . . . . . . . 241 9.3.4 MQTT İstemcisini Yapılandırma . . . . . . . . . . . . . . . . . . . . . . . . . 241 9.4 Uygulama: ESP RainMaker Aracılığıyla Uzaktan Kontrol . . . . . . . . . . . . . . . . 243 9.4.1 ESP RainMaker Temelleri . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 9.4.2 Düğüm ve Bulut Arka Uç İletişim Protokolü . . . . . . . . . . . 244 9.4.3 İstemci ile Bulut Arka Uç Arasındaki İletişim . . . . . . . . . . . 249 9.4.4 Kullanıcı Rolleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 9.4.5 Temel Hizmetler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 9.4.6 Akıllı Işık Example. . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 9.4.7 RainMaker Uygulaması ve Üçüncü Taraf Entegrasyonları . . . . . . . . . . . . . . . 262 9.5 Özet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267

10 Akıllı Telefon Uygulama Geliştirme

269

10.1 Akıllı Telefon Uygulama Geliştirmeye Giriş . . . . . . . . . . . . . . . . . . 269

10.1.1 Üzeriview Akıllı Telefon Uygulama Geliştirme. . . . . . . . . . . . . . . 270

10.1.2 Android Projesinin Yapısı . . . . . . . . . . . . . . . . . . . . . . 270

10.1.3 iOS Projesinin Yapısı . . . . . . . . . . . . . . . . . . . . . . . . 271

10.1.4 Bir Android Etkinliğinin Yaşam Döngüsü . . . . . . . . . . . . . . . . . . . . . . 272

10.1.5 iOS'un Yaşam Döngüsü ViewDenetleyici. . . . . . . . . . . . . . . . . . . . . . 273

10.2 Yeni Bir Akıllı Telefon Uygulaması Projesi Oluşturma . . . . . . . . . . . . . . . . . . . . . 275

10.2.1 Android Geliştirmeye Hazırlanmak . . . . . . . . . . . . . . . . . . . 275

10.2.2 Yeni Bir Android Projesi Oluşturma . . . . . . . . . . . . . . . . . . . . . . 275

10.2.3 MyRainmaker için Bağımlılıklar Ekleme . . . . . . . . . . . . . . . . . 276

10.2.4 Android'de İzin İsteği . . . . . . . . . . . . . . . . . . . . . . 277

10.2.5 iOS Geliştirmeye Hazırlık . . . . . . . . . . . . . . . . . . . . . . 277

10.2.6 Yeni Bir iOS Projesi Oluşturma . . . . . . . . . . . . . . . . . . . . . . . . 278

10.2.7 MyRainmaker için Bağımlılıklar Ekleme . . . . . . . . . . . . . . . . . 279

10.2.8 iOS'ta İzin İsteği . . . . . . . . . . . . . . . . . . . . . . . . . 280

10.3 Uygulamanın İşlevsel Gereksinimlerinin Analizi . . . . . . . . . . . . . . . . . . 281

10.3.1 Projenin İşlevsel Gereksinimlerinin Analizi . . . . . . . . . . . . 282

10.3.2 Kullanıcı Yönetimi Gereksinimlerinin Analizi . . . . . . . . . . . . . . . 282 10.3.3 Cihaz Sağlama ve Bağlama Gereksinimlerinin Analizi . . . . . . . 283 10.3.4 Uzaktan Kontrol Gereksinimlerinin Analizi . . . . . . . . . . . . . . . . 283 10.3.5 Planlama Gereksinimlerinin Analizi . . . . . . . . . . . . . . . . . . . 284 10.3.6 Kullanıcı Merkezi Gereksinimlerinin Analizi . . . . . . . . . . . . . . . . . . 285 10.4 Kullanıcı Yönetiminin Geliştirilmesi . . . . . . . . . . . . . . . . . . . . . . . . 285 10.4.1 RainMaker API'lerine Giriş . . . . . . . . . . . . . . . . . . . . . . 285 10.4.2 Akıllı Telefon Aracılığıyla İletişimi Başlatma . . . . . . . . . . . . . . . . 286 10.4.3 Hesap Kaydı . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286 10.4.4 Hesapta Oturum Açma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289 10.5 Cihaz Sağlamanın Geliştirilmesi . . . . . . . . . . . . . . . . . . . . . . . 292 10.5.1 Tarama Cihazları . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 10.5.2 Cihazları Bağlama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 10.5.3 Gizli Anahtarların Oluşturulması . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 10.5.4 Düğüm Kimliğini Alma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 10.5.5 Hazırlama Cihazları . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 10.6 Cihaz Kontrolünün Geliştirilmesi . . . . . . . . . . . . . . . . . . . . . . . . . . 302 10.6.1 Cihazları Bulut Hesaplarına Bağlama . . . . . . . . . . . . . . . . . . . . 303 10.6.2 Cihaz Listesini Alma . . . . . . . . . . . . . . . . . . . . . . . . . . 305 10.6.3 Cihaz Durumunu Alma . . . . . . . . . . . . . . . . . . . . . . . . . . . 308 10.6.4 Cihaz Durumunu Değiştirme . . . . . . . . . . . . . . . . . . . . . . . . . . 310 10.7 Planlama ve Kullanıcı Merkezinin Geliştirilmesi . . . . . . . . . . . . . . . . . . . 313 10.7.1 Planlama Fonksiyonunun Uygulanması . . . . . . . . . . . . . . . . . . . . 313 10.7.2 Kullanıcı Merkezinin Uygulanması . . . . . . . . . . . . . . . . . . . . . . . . . 315 10.7.3 Diğer Bulut API'leri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318 10.8 Özet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319

11 Ürün Yazılımı Yükseltme ve Sürüm Yönetimi

321

11.1 Firmware Yükseltme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321

11.1.1 Üzeriview Bölüm Tabloları . . . . . . . . . . . . . . . . . . . . . . . . 322

11.1.2 Firmware Önyükleme İşlemi . . . . . . . . . . . . . . . . . . . . . . . . . . . 324

11.1.3 Üzeriview OTA Mekanizmasının . . . . . . . . . . . . . . . . . . . . . 326

11.2 Donanım Yazılımı Sürümü Yönetimi . . . . . . . . . . . . . . . . . . . . . . . . . . 329

11.2.1 Donanım Yazılımı İşaretlemesi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329

11.2.2 Geri Alma ve Geri Alma Önleme . . . . . . . . . . . . . . . . . . . . . . . . 331

11.3 Alıştırma: Kablosuz (OTA) Örneğiample. . . . . . . . . . . . . . . . . . . . . . . 332

11.3.1 Firmware'i Yerel Ana Bilgisayar Aracılığıyla Yükseltme . . . . . . . . . . . . . . . . . 332

11.3.2 Firmware'in ESP RainMaker Aracılığıyla Yükseltilmesi . . . . . . . . . . . . . . . 335

11.4 Özet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342

IV Optimizasyon ve Seri Üretim

343

12 Güç Yönetimi ve Düşük Güç Optimizasyonu

345

12.1 ESP32-C3 Güç Yönetimi . . . . . . . . . . . . . . . . . . . . . . . . . . . 345

12.1.1 Dinamik Frekans Ölçeklendirme . . . . . . . . . . . . . . . . . . . . . . . . 346

12.1.2 Güç Yönetimi Yapılandırması . . . . . . . . . . . . . . . . . . . . 348

12.2 ESP32-C3 Düşük Güç Modu . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348

12.2.1 Modem uyku modu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349

12.2.2 Hafif Uyku Modu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351

12.2.3 Derin uyku modu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356

12.2.4 Farklı Güç Modlarında Akım Tüketimi. . . . . . . . . . . . . 358

12.3 Güç Yönetimi ve Düşük Güçte Hata Ayıklama . . . . . . . . . . . . . . . . . 359

12.3.1 Günlük Hata Ayıklama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360

12.3.2 GPIO Hata Ayıklama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362

12.4 Uygulama: Akıllı Işık Projesinde Güç Yönetimi. . . . . . . . . . . . . . . 363

12.4.1 Güç Yönetimi Özelliğini Yapılandırma . . . . . . . . . . . . . . . . . 364

12.4.2 Güç Yönetimi Kilitlerini Kullanma . . . . . . . . . . . . . . . . . . . . . . 365

12.4.3 Güç Tüketimini Doğrulama . . . . . . . . . . . . . . . . . . . . . . . 366

12.5 Özet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367

13 Gelişmiş Cihaz Güvenliği Özellikleri

369

13.1 Üzeriview IoT Cihaz Veri Güvenliği. . . . . . . . . . . . . . . . . . . . . . . 369

13.1.1 IoT Cihaz Verilerinin Güvenliği Neden Sağlanıyor? . . . . . . . . . . . . . . . . . . . . . . 370

13.1.2 IoT Cihaz Veri Güvenliği için Temel Gereksinimler . . . . . . . . . . . . 371

13.2 Veri Bütünlüğünün Korunması . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372

13.2.1 Bütünlük Doğrulama Yöntemine Giriş . . . . . . . . . . . . . . 372

13.2.2 Firmware Verilerinin Bütünlüğünün Doğrulanması . . . . . . . . . . . . . . . . . . 373

13.2.3 Örn.ample. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374

13.3 Veri Gizliliğinin Korunması . . . . . . . . . . . . . . . . . . . . . . . . . . 374

13.3.1 Veri Şifrelemeye Giriş . . . . . . . . . . . . . . . . . . . . . . 374

13.3.2 Flash Şifreleme Düzenine Giriş . . . . . . . . . . . . . . . . . 376

13.3.3 Flash Şifreleme Anahtarının Saklanması . . . . . . . . . . . . . . . . . . . . . . . 379

13.3.4 Flash Şifrelemenin Çalışma Modu . . . . . . . . . . . . . . . . . . . . 380

13.3.5 Flash Şifreleme Süreci . . . . . . . . . . . . . . . . . . . . . . . . . . 381

13.3.6 NVS Şifrelemeye Giriş . . . . . . . . . . . . . . . . . . . . . . 383

13.3.7 Örn.ampFlash Şifreleme ve NVS Şifreleme dosyaları. . . . . . . . . . . 384

13.4 Veri Meşruiyetinin Korunması . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386

13.4.1 Dijital İmzaya Giriş . . . . . . . . . . . . . . . . . . . . . 386

13.4.2 Üzeriview Güvenli Önyükleme Düzeni. . . . . . . . . . . . . . . . . . . . . 388

13.4.3 Yazılım Güvenli Önyüklemesine Giriş . . . . . . . . . . . . . . . . . . . 388 13.4.4 Donanım Güvenli Önyüklemesine Giriş . . . . . . . . . . . . . . . . . . 390 13.4.5 Örn.ampLes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394 13.5 Uygulama: Seri Üretimde Güvenlik Özellikleri . . . . . . . . . . . . . . . . . . 396 13.5.1 Flaş Şifreleme ve Güvenli Önyükleme . . . . . . . . . . . . . . . . . . . . . 396 13.5.2 Toplu Flash Araçları ile Flash Şifrelemeyi ve Güvenli Önyüklemeyi Etkinleştirme . . 397 13.5.3 Smart Light Projesinde Flash Şifrelemeyi ve Güvenli Önyüklemeyi Etkinleştirme . . . 398 13.6 Özet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398

14 Seri Üretim için Firmware Yazma ve Test Etme

399

14.1 Seri Üretimde Firmware Yazma . . . . . . . . . . . . . . . . . . . . . . 399

14.1.1 Veri Bölümlerini Tanımlama . . . . . . . . . . . . . . . . . . . . . . . . . . 399

14.1.2 Firmware Yazma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402

14.2 Seri Üretim Testleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403

14.3 Uygulama: Akıllı Işık Projesinde Seri Üretim Verileri. . . . . . . . . . . . . 404

14.4 Özet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404

15 ESP Insights: Uzaktan İzleme Platformu

405

15.1 ESP Insights'a Giriş . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405

15.2 ESP Insights'a Başlarken . . . . . . . . . . . . . . . . . . . . . . . . . 409

15.2.1 esp-insights Projesinde ESP Insights'a Başlarken . . . . . . 409

15.2.2 Çalıştırma Exampesp-insights Projesi'ndeki dosya. . . . . . . . . . . . . . . 411

15.2.3 Çekirdek Döküm Bilgilerinin Raporlanması . . . . . . . . . . . . . . . . . . . . . 411

15.2.4 İlgi Günlüklerini Özelleştirme . . . . . . . . . . . . . . . . . . . . . . . . 412

15.2.5 Yeniden Başlatma Nedenini Raporlama . . . . . . . . . . . . . . . . . . . . . . . . . 413

15.2.6 Özel Metrikleri Raporlama . . . . . . . . . . . . . . . . . . . . . . . . . 413

15.3 Uygulama: Akıllı Işık Projesinde ESP Insights'ı Kullanma . . . . . . . . . . . . . . . 416

15.4 Özet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417

giriiş
ESP32-C3, açık kaynaklı RISC-V mimarisini temel alan tek çekirdekli bir Wi-Fi ve Bluetooth 5 (LE) mikro denetleyici SoC'dir. Güç, I/O özellikleri ve güvenlik arasında doğru dengeyi sağlayarak bağlı cihazlar için en uygun maliyetli çözümü sunar. Espressif'in bu kitabı, ESP32-C3 ailesinin çeşitli uygulamalarını göstermek için sizi IoT proje geliştirme ve ortam kurulumunun temellerinden başlayarak pratik örneklere kadar AIoT aracılığıyla ilginç bir yolculuğa çıkaracak.ampLes. İlk dört bölümde IoT, ESP RainMaker ve ESP-IDF hakkında konuşuyoruz. Bölüm 5 ve 6'da donanım tasarımı ve sürücü geliştirme hakkında kısa bilgi. İlerledikçe projenizi Wi-Fi ağları ve mobil Uygulamalar aracılığıyla nasıl yapılandıracağınızı keşfedeceksiniz. Son olarak projenizi optimize etmeyi ve seri üretime geçirmeyi öğreneceksiniz.
İlgili alanlarda mühendisseniz, yazılım mimarıysanız, öğretmenseniz, öğrenciyseniz ya da IoT'ye ilgisi olan biriyseniz bu kitap tam size göre.
Ex kodunu indirebilirsinizampBu kitapta kullanılan dosya Espressif'in GitHub'daki sitesinden alınmıştır. IoT geliştirmeyle ilgili en son bilgiler için lütfen resmi hesabımızı takip edin.

Önsöz
Bilgilendirici Bir Dünya
İnternet dalgasına ayak uyduran Nesnelerin İnterneti (IoT), dijital ekonomide yeni bir altyapı türü haline gelmek üzere büyük çıkışını yaptı. Espressif Systems, teknolojiyi halka daha yakın hale getirmek için hayatın her kesiminden geliştiricilerin çağımızın en acil sorunlarından bazılarını çözmek için IoT'yi kullanabileceği vizyonu için çalışıyor. Gelecekten beklediğimiz şey “Her Şeyin Akıllı Ağı” dünyasıdır.
Kendi çiplerimizi tasarlamak bu vizyonun kritik bir bileşenidir. Teknolojik sınırlara karşı sürekli atılımlar gerektiren bir maraton olacak. Espressif, "Oyun Değiştirici" ESP8266'dan Wi-Fi ve Bluetoothr (LE) bağlantısını entegre eden ESP32 serisine ve ardından AI hızlandırmayla donatılmış ESP32-S3'e kadar, AIoT çözümleri için araştırma ve geliştirmeyi asla bırakmaz. IoT Geliştirme Çerçevesi ESP-IDF, Mesh Geliştirme Çerçevesi ESP-MDF ve Cihaz Bağlantı Platformu ESP RainMaker gibi açık kaynaklı yazılımımızla, AIoT uygulamaları oluşturmak için bağımsız bir çerçeve oluşturduk.
Temmuz 2022 itibarıyla Espressif'in IoT yonga setlerinin kümülatif sevkiyatı 800 milyonu aşarak Wi-Fi MCU pazarında lider konuma geldi ve dünya çapında çok sayıda bağlı cihaza güç sağladı. Mükemmellik arayışı, her Espressif ürününü yüksek düzeyde entegrasyon ve maliyet verimliliği açısından büyük bir başarı haline getiriyor. ESP32-C3'ün piyasaya sürülmesi Espressif'in kendi geliştirdiği teknolojisinde önemli bir dönüm noktasına işaret ediyor. 32 MHz'de çalışabilen, 400 KB SRAM'a sahip, tek çekirdekli, 160 bit, RISC-V tabanlı bir MCU'dur. Uzun menzilli destekle 2.4 GHz Wi-Fi ve Bluetooth 5 (LE) entegre edilmiştir. Güç, G/Ç özellikleri ve güvenlik arasında iyi bir denge kurar ve böylece bağlı cihazlar için en uygun maliyetli çözümü sunar. Böylesine güçlü ESP32-C3'ü temel alan bu kitap, ayrıntılı çizimler ve pratik örneklerle okuyucuların Nesnelerin İnterneti ile ilgili bilgileri anlamalarına yardımcı olmayı amaçlamaktadır.amples.
Bu kitabı neden yazdık?
Espressif Systems bir yarı iletken şirketinden daha fazlasıdır. Aynı zamanda teknoloji alanında her zaman atılımlar ve yenilikler için çabalayan bir IoT platform şirketidir. Espressif aynı zamanda kendi geliştirdiği işletim sistemi ve yazılım çerçevesini açık kaynak kodlu olarak toplulukla paylaşarak benzersiz bir ekosistem oluşturmaktadır. Mühendisler, yapımcılar ve teknoloji meraklıları, Espressif ürünlerini temel alan yeni yazılım uygulamalarını aktif olarak geliştirir, özgürce iletişim kurar ve deneyimlerini paylaşır. Geliştiricilerin büyüleyici fikirlerini YouTube ve GitHub gibi çeşitli platformlarda her zaman görebilirsiniz. Espressif ürünlerinin popülaritesi, İngilizce, Çince, Almanca, Fransızca ve Japonca da dahil olmak üzere ondan fazla dilde Espressif yonga setlerini temel alan 100'den fazla kitap üreten yazarların sayısını artırdı.

Espressif'in sürekli yenilikçiliğini teşvik eden şey topluluk ortaklarının desteği ve güvenidir. “Çiplerimizi, işletim sistemlerimizi, çerçevelerimizi, çözümlerimizi, Bulutumuzu, iş uygulamalarımızı, araçlarımızı, belgelerimizi, yazılarımızı, fikirlerimizi vb., insanların çağdaş yaşamın en acil sorunlarına ihtiyaç duyduğu yanıtlarla her zamankinden daha alakalı hale getirmeye çalışıyoruz. Bu, Espressif'in en yüksek tutkusu ve ahlaki pusulasıdır." dedi Espressif Kurucusu ve CEO'su Bay Teo Swee Ann.
Espressif okumaya ve fikirlere değer verir. IoT teknolojisinin sürekli olarak yükseltilmesi mühendisler için daha yüksek gereksinimler doğururken, daha fazla kişinin IoT çipleri, işletim sistemleri, yazılım çerçeveleri, uygulama şemaları ve bulut hizmeti ürünlerinde hızlı bir şekilde uzmanlaşmasına nasıl yardımcı olabiliriz? Söylendiği gibi, bir adama balık vermektense balık tutmayı öğretmek daha iyidir. Bir beyin fırtınası oturumunda, IoT geliştirmeyle ilgili temel bilgileri sistematik olarak sıralayacak bir kitap yazabileceğimizi düşündük. Bunu başardık, hızlı bir şekilde bir grup kıdemli mühendisi bir araya getirdik ve teknik ekibin gömülü programlama, IoT donanım ve yazılım geliştirme deneyimlerini birleştirdik; bunların tümü bu kitabın yayınlanmasına katkıda bulundu. Yazma sürecinde kozadan sıyrılmış, objektif ve adil olmaya, Nesnelerin İnterneti'nin karmaşıklığını ve çekiciliğini anlatmak için özlü ifadeler kullanmaya elimizden gelenin en iyisini yapmaya çalıştık. Geliştirme sürecinde karşılaşılan soruları net bir şekilde yanıtlamak ve ilgili teknisyenler ve karar vericiler için pratik IoT geliştirme yönergeleri sağlamak amacıyla topluluğun geri bildirimlerine ve önerilerine başvurarak ortak soruları dikkatlice özetledik.
Kitap Yapısı
Bu kitap mühendis merkezli bir bakış açısı benimsiyor ve IoT proje geliştirme için gerekli bilgileri adım adım açıklıyor. Aşağıdaki gibi dört bölümden oluşur:
· Hazırlık (Bölüm 1): Bu bölüm, IoT proje geliştirme için sağlam bir temel oluşturmak amacıyla IoT mimarisini, tipik IoT proje çerçevesini, ESP RainMakerr bulut platformunu ve geliştirme ortamı ESP-IDF'yi tanıtmaktadır.
· Donanım ve Sürücü Geliştirme (Bölüm 5): ESP6-C32 yonga setini temel alan bu bölüm, minimum donanım sistemi ve sürücü geliştirmeyi detaylandırır ve karartma, renk derecelendirme ve kablosuz iletişim kontrolünü uygular.
· Kablosuz İletişim ve Kontrol (Bölüm 7): Bu bölümde ESP11-C32 çipine, yerel ve bulut kontrol protokollerine ve cihazların yerel ve uzaktan kontrolüne dayanan akıllı Wi-Fi yapılandırma şeması açıklanmaktadır. Ayrıca akıllı telefon uygulamalarının geliştirilmesi, ürün yazılımı yükseltmesi ve sürüm yönetimi için planlar da sağlar.
· Optimizasyon ve Seri Üretim (Bölüm 12-15): Bu bölüm, güç yönetimindeki ürünlerin optimizasyonuna, düşük güç optimizasyonuna ve gelişmiş güvenliğe odaklanan gelişmiş IoT uygulamalarına yöneliktir. Aynı zamanda seri üretimde ürün yazılımı yazma ve test etme işlemlerini ve uzaktan izleme platformu ESP Insights aracılığıyla cihaz yazılımının çalışma durumu ve günlüklerinin nasıl teşhis edileceğini de tanıtıyor.

Kaynak Kodu Hakkında
Okuyucular eskiyi çalıştırabilirampBu kitaptaki programlara kodu manuel olarak girerek veya kitapla birlikte verilen kaynak kodunu kullanarak ulaşabilirsiniz. Teori ve pratiğin birleşimini vurguluyor ve bu nedenle neredeyse her bölümde Akıllı Işık projesini temel alan bir Uygulama bölümü oluşturuyoruz. Kodların tamamı açık kaynaklıdır. Okuyucular kaynak kodunu indirebilir ve GitHub'da ve resmi forumumuz esp32.com'da bu kitapla ilgili bölümlerde tartışabilirler. Bu kitabın açık kaynaklı kodu Apache Lisansı 2.0 koşullarına tabidir.
Yazarın Notu
Bu kitap resmi olarak Espressif Systems tarafından hazırlanmıştır ve şirketin kıdemli mühendisleri tarafından yazılmıştır. Nesnelerin İnterneti ile ilgili sektörlerdeki yöneticiler ve Ar-Ge personeli, ilgili bölümlerdeki öğretmenler ve öğrenciler ile Nesnelerin İnterneti alanındaki meraklılar için uygundur. Bu kitabın iyi bir öğretmen ve arkadaş gibi bir çalışma kılavuzu, bir referans ve başucu kitabı olarak hizmet etmesini umuyoruz.
Bu kitabı derlerken yurt içi ve yurt dışındaki uzman, akademisyen ve teknisyenlerin konuyla ilgili bazı araştırma sonuçlarına atıfta bulunduk ve bunları akademik normlara uygun şekilde alıntılamak için elimizden geleni yaptık. Ancak bazı eksikliklerin olması kaçınılmaz olduğundan, ilgili tüm yazarlara derin saygı ve şükranlarımızı sunarız. Ayrıca bilgileri internetten alıntıladık, bu nedenle asıl yazarlara ve yayıncılara teşekkür etmek istiyoruz ve her bilginin kaynağını belirtemediğimiz için özür dileriz.
Yüksek kalitede bir kitap ortaya çıkarmak için şirket içi tartışmalar düzenledik ve deneme okuyucuları ile yayıncı editörlerinin öneri ve geri bildirimlerinden faydalandık. Bu başarılı çalışmaya katkıda bulunan herkese yardımlarınız için burada bir kez daha teşekkür etmek istiyoruz.
Son fakat en önemlisi, ürünlerimizin doğuşu ve yaygınlaşması için çok çalışan Espressif'teki herkese teşekkür ederiz.
IoT projelerinin geliştirilmesi geniş bir bilgi yelpazesini içerir. Kitabın uzunluğu ve yazarın düzeyi ve deneyimiyle sınırlı olduğundan, eksiklikler kaçınılmazdır. Bu nedenle uzmanlardan ve okuyuculardan eleştirilerimizi ve hatalarımızı düzeltmelerini rica ederiz. Bu kitapla ilgili herhangi bir öneriniz varsa lütfen bizimlebook@espressif.com adresinden iletişime geçin. Geri bildiriminizi dört gözle bekliyoruz.

Bu kitap nasıl kullanılır?
Bu kitaptaki projelerin kodları açık kaynaklıdır. GitHub depomuzdan indirebilir ve düşüncelerinizi ve sorularınızı resmi forumumuzda paylaşabilirsiniz. GitHub: https://github.com/espressif/book-esp32c3-iot-projects Forum: https://www.esp32.com/bookc3 Kitap boyunca aşağıda gösterildiği gibi vurgulanan kısımlar olacaktır.
Kaynak kodu Bu kitapta teori ve pratiğin birleşimini vurgulayarak neredeyse her bölümde Akıllı Işık projesiyle ilgili bir Uygulama bölümü oluşturduk. İlgili adımlar ve kaynak sayfa, ile başlayan iki satır arasında işaretlenecektir. tag Kaynak kodu.
NOT/İPUÇLARI Programınızda başarılı bir şekilde hata ayıklamak için bazı kritik bilgileri ve hatırlatmaları burada bulabilirsiniz. ile başlayan iki kalın çizgi arasında işaretlenecektir. tag NOT veya İPUÇLARI.
Bu kitaptaki komutların çoğu Linux altında “$” karakteriyle çalıştırılmaktadır. Komutun yürütülmesi için süper kullanıcı ayrıcalıkları gerekiyorsa, istemin yerini “#” alacaktır. Mac sistemlerindeki komut istemi, Bölüm 4.2.3 Mac'te ESP-IDF Kurulumu'nda kullanıldığı gibi “%” şeklindedir.
Bu kitaptaki gövde metni Şart'ta basılacak, eski kod iseampdosyalar, bileşenler, işlevler, değişkenler, kod file adlar, kod dizinleri ve dizeler Courier New'de olacaktır.
Kullanıcı tarafından girilmesi gereken komut veya metinler ve “Enter” tuşuna basılarak girilebilecek komutlar Courier New kalın yazı tipiyle yazdırılacaktır. Loglar ve kod blokları açık mavi kutularda sunulacaktır.
Examptarih:
İkinci olarak, NVS bölüm ikili dosyasını oluşturmak için esp-idf/components/nvs flash/nvs partition oluşturucu/nvs partition gen.py kullanın. file geliştirme ana bilgisayarında aşağıdaki komutla:
$ python $IDF YOLU/bileşenler/nvs flash/nvs bölüm oluşturucu/nvs bölümü gen.py –giriş kütlesi prod.csv –çıkış kütlesi prod.bin –size NVS BÖLÜM BOYUTU

Bölüm 1

giriiş

ile

Nesnelerin İnterneti

20. yüzyılın sonlarında bilgisayar ağları ve iletişim teknolojilerinin ortaya çıkmasıyla birlikte internet hızla insanların hayatına entegre olmuştur. İnternet teknolojisi olgunlaşmaya devam ettikçe Nesnelerin İnterneti (IoT) fikri doğdu. Kelimenin tam anlamıyla IoT, nesnelerin birbirine bağlı olduğu bir İnternet anlamına gelir. Orijinal İnternet, mekan ve zamanın sınırlarını kırıp "kişi ile kişi" arasındaki mesafeyi daraltırken, Nesnelerin İnterneti "insanları" ve "nesneleri" birbirine yakınlaştırarak "nesneleri" önemli bir katılımcı haline getiriyor. Öngörülebilir gelecekte IoT, bilgi endüstrisinin itici gücü haline gelecektir.
Peki Nesnelerin İnterneti nedir?
Anlamı ve kapsamı sürekli geliştiği için Nesnelerin İnterneti'ni doğru bir şekilde tanımlamak zordur. Bill Gates, 1995 yılında IoT fikrini ilk kez The Road Ahead adlı kitabında gündeme getirdi. Basitçe söylemek gerekirse IoT, nesnelerin internet üzerinden birbirleriyle bilgi alışverişinde bulunmasını sağlar. Nihai hedefi “Her Şeyin İnterneti”ni kurmaktır. Bu, IoT'nin erken bir yorumu ve aynı zamanda gelecekteki teknolojinin bir fantezisidir. Otuz yıl sonra, ekonominin ve teknolojinin hızla gelişmesiyle birlikte bu fantezi gerçeğe dönüşüyor. Akıllı cihazlardan akıllı evlere, akıllı şehirlerden Araç İnterneti ve giyilebilir cihazlardan IoT teknolojilerinin desteklediği “meta veriye” kadar sürekli yeni kavramlar ortaya çıkıyor. Bu bölümde Nesnelerin İnterneti mimarisinin bir açıklamasıyla başlayacağız ve ardından IoT'yi net bir şekilde anlamanıza yardımcı olmak için en yaygın IoT uygulaması olan akıllı evi tanıtacağız.
1.1 Nesnelerin İnternetinin Mimarisi
Nesnelerin İnterneti, farklı endüstrilerde farklı uygulama ihtiyaçları ve biçimleri olan birden fazla teknolojiyi içerir. IoT'nin yapısını, temel teknolojilerini ve uygulama özelliklerini ayrıştırmak için birleşik bir mimarinin ve standart bir teknik sistemin kurulması gerekmektedir. Bu kitapta IoT'nin mimarisi basitçe dört katmana ayrılmıştır: algı ve kontrol katmanı, ağ katmanı, platform katmanı ve uygulama katmanı.
Algılama ve Kontrol Katmanı IoT mimarisinin en temel unsuru olan algılama ve kontrol katmanı, IoT'nin kapsamlı algılamasını gerçekleştirmenin temelini oluşturur. Ana işlevi bilgileri toplamak, tanımlamak ve kontrol etmektir. Algılama yeteneğine sahip çeşitli cihazlardan oluşur,
3

tanımlama, kontrol ve yürütmenin yanı sıra malzeme özellikleri, davranış eğilimleri ve cihaz durumu gibi verilerin alınmasından ve analiz edilmesinden sorumludur. Bu şekilde IoT gerçek fiziksel dünyayı tanır. Ayrıca katman, cihazın durumunu da kontrol edebilir.
Bu katmanın en yaygın cihazları, bilgi toplama ve tanımlamada önemli rol oynayan çeşitli sensörlerdir. Sensörler insanın duyu organları gibidir; ışığa duyarlı sensörler görmeye, akustik sensörler işitmeye, gaz sensörleri koklamaya, basınç ve sıcaklığa duyarlı sensörler dokunmaya benzer. Tüm bu “duyu organları” ile nesneler “canlı” hale gelir ve fiziksel dünyayı akıllı bir şekilde algılama, tanıma ve manipüle etme yeteneğine sahiptir.
Ağ Katmanı Ağ katmanının ana işlevi, algılama ve kontrol katmanından elde edilen veriler de dahil olmak üzere bilgileri belirtilen hedefe ve ayrıca uygulama katmanından verilen komutları algılama ve kontrol katmanına geri iletmektir. Bir IoT sisteminin farklı katmanlarını birbirine bağlayan önemli bir iletişim köprüsü görevi görür. Nesnelerin İnterneti'nin temel bir modelini oluşturmak için, nesneleri bir ağa entegre etmek iki adımdan oluşur: İnternet'e erişim ve İnternet üzerinden iletim.
İnternete Erişim İnternet, kişi ve kişi arasında bağlantı kurulmasını sağlar ancak nesneleri büyük aileye dahil etmekte başarısız olur. Nesnelerin İnterneti'nin ortaya çıkışından önce çoğu şey "ağa bağlanılabilir" değildi. Teknolojinin sürekli gelişmesi sayesinde IoT, nesneleri internete bağlamayı başarıyor ve böylece “insanlar ve nesneler” ile “nesneler ve nesneler” arasındaki bağlantıyı gerçekleştiriyor. İnternet bağlantısını uygulamanın iki yaygın yolu vardır: kablolu ağ erişimi ve kablosuz ağ erişimi.
Kablolu ağ erişim yöntemleri Ethernet, seri iletişim (örn. RS-232, RS-485) ve USB'yi içerirken kablosuz ağ erişimi, kısa menzilli kablosuz iletişim ve uzun menzilli kablosuz iletişim olarak ikiye bölünebilen kablosuz iletişime bağlıdır.
Kısa mesafeli kablosuz iletişim ZigBee, Bluetoothr, Wi-Fi, Yakın Alan İletişimi (NFC) ve Radyo Frekansı Tanımlamasını (RFID) içerir. Uzun menzilli kablosuz iletişim, Gelişmiş Makine Tipi İletişimi (eMTC), LoRa, Dar Bant Nesnelerin İnterneti (NB-IoT), 2G, 3G, 4G, 5G vb.'yi içerir.
İnternet Üzerinden İletim Farklı İnternet erişimi yöntemleri, verilerin karşılık gelen fiziksel iletim bağlantısına yol açar. Bir sonraki adım, verileri iletmek için hangi iletişim protokolünün kullanılacağına karar vermektir. İnternet terminalleriyle karşılaştırıldığında, çoğu IoT terminalinde şu anda daha az
4 ESP32-C3 Kablosuz Macerası: Kapsamlı IoT Kılavuzu

İşlem performansı, depolama kapasitesi, ağ hızı vb. gibi mevcut kaynaklar, dolayısıyla IoT uygulamalarında daha az kaynak kaplayan bir iletişim protokolünün seçilmesi gerekmektedir. Günümüzde yaygın olarak kullanılan iki iletişim protokolü vardır: Message Queuing Telemetri Aktarımı (MQTT) ve Kısıtlı Uygulama Protokolü (CoAP).
Platform Katmanı Platform katmanı esas olarak IoT bulut platformlarını ifade eder. Tüm IoT terminalleri ağa bağlandığında, verilerinin hesaplanıp saklanması için bir IoT bulut platformunda toplanması gerekir. Platform katmanı esas olarak büyük cihazlara erişimi ve yönetimi kolaylaştırmak için IoT uygulamalarını destekler. Uzaktan kontrolü uygulamak için IoT terminallerini bulut platformuna bağlar, terminal verilerini toplar ve terminallere komutlar verir. Endüstri uygulamalarına ekipman atamak için bir ara hizmet olarak platform katmanı, soyut iş mantığını ve standartlaştırılmış çekirdek veri modelini taşıyarak tüm IoT mimarisinde bağlayıcı bir rol oynar; bu, yalnızca cihazlara hızlı erişimi gerçekleştirmekle kalmaz, aynı zamanda güçlü modüler yetenekler de sağlar. endüstri uygulama senaryolarındaki çeşitli ihtiyaçları karşılamak için. Platform katmanı temel olarak cihaz erişimi, cihaz yönetimi, güvenlik yönetimi, mesaj iletişimi, izleme işletimi ve bakımı ve veri uygulamaları gibi işlevsel modülleri içerir.
· Cihaz erişimi, terminaller ve IoT bulut platformları arasındaki bağlantı ve iletişimin gerçekleştirilmesi.
· Cihaz oluşturma, cihaz bakımı, veri dönüştürme, veri senkronizasyonu ve cihaz dağıtımı gibi işlevleri içeren cihaz yönetimi.
· Güvenlik yönetimi, IoT veri iletiminin güvenliğinin güvenlik kimlik doğrulaması ve iletişim güvenliği açısından sağlanması.
· Üç iletim yönünü içeren mesaj iletişimi; yani terminal, IoT bulut platformuna veri gönderir, IoT bulut platformu, sunucu tarafına veya diğer IoT bulut platformlarına veri gönderir ve sunucu tarafı, IoT cihazlarını uzaktan kontrol eder.
· İzleme ve teşhis, cihaz yazılımı yükseltmesi, çevrimiçi hata ayıklama, günlük hizmetleri vb. dahil olmak üzere İşletme ve Bakımın izlenmesi.
· Verilerin depolanmasını, analizini ve uygulanmasını içeren veri uygulamaları.
Uygulama Katmanı Uygulama katmanı, uygulamayı yönetmek, filtrelemek ve veritabanları ve analiz yazılımı gibi araçlarla işlemek için platform katmanından gelen verileri kullanır. Ortaya çıkan veriler akıllı sağlık hizmetleri, akıllı tarım, akıllı evler ve akıllı şehirler gibi gerçek dünyadaki IoT uygulamaları için kullanılabilir.
Elbette IoT'nin mimarisi daha fazla katmana bölünebilir ancak kaç katmandan oluşursa oluşsun temel prensip esasen aynı kalır. Öğrenme
Bölüm 1. IoT'ye Giriş 5

IoT mimarisi hakkındaki bilgiler, IoT teknolojilerine ilişkin anlayışımızı derinleştirmemize ve tamamen işlevsel IoT projeleri oluşturmamıza yardımcı olur.
1.2 Akıllı Evlerde IoT Uygulaması
IoT hayatın her alanına nüfuz etmiş durumda ve bizi en yakından ilgilendiren IoT uygulaması akıllı evdir. Pek çok geleneksel cihaz artık bir veya daha fazla IoT cihazıyla donatılmıştır ve yeni inşa edilen evlerin çoğu, başlangıçtan itibaren IoT teknolojileri ile tasarlanmaktadır. Şekil 1.1 bazı yaygın akıllı ev cihazlarını göstermektedir.
Şekil 1.1. Yaygın olarak kullanılan akıllı ev cihazları Akıllı evin gelişimi basitçe akıllı ürün gruplarına ayrılabilir.tage, sahne ara bağlantısıtage ve akıllı stage, Şekil 1.2'de gösterildiği gibi.
Şekil 1.2. Geliştirmetagakıllı ev 6 ESP32-C3 Kablosuz Macerası: Kapsamlı IoT Kılavuzu

İlk stage akıllı ürünlerle ilgilidir. Geleneksel evlerden farklı olarak akıllı evlerde IoT cihazları sensörlerle sinyal alır ve Wi-Fi, Bluetooth LE ve ZigBee gibi kablosuz iletişim teknolojileri aracılığıyla ağa bağlanır. Kullanıcılar akıllı ürünleri akıllı telefon uygulamaları, sesli asistanlar, akıllı hoparlör kontrolü vb. gibi çeşitli yollarla kontrol edebilir.tagSahne ara bağlantısına odaklanır. bundatagGeliştiriciler artık tek bir akıllı ürünü kontrol etmeyi değil, iki veya daha fazla akıllı ürünü birbirine bağlayarak belirli bir dereceye kadar otomatikleştirmeyi ve sonunda özel bir sahne modu oluşturmayı düşünüyor. Eski içinampKullanıcı herhangi bir sahne modu düğmesine bastığında ışıklar, perdeler ve klimalar otomatik olarak ön ayarlara uyarlanacaktır. Elbette, tetikleme koşulları ve yürütme eylemleri de dahil olmak üzere bağlantı mantığının kolayca kurulmasının bir önkoşulu vardır. İç ortam sıcaklığı 10°C'nin altına düştüğünde klima ısıtma modunun tetiklendiğini düşünün; sabah saat 7'de kullanıcıyı uyandırmak için müzik çalındığını, akıllı perdelerin açıldığını ve akıllı priz üzerinden pilav pişirme veya ekmek kızartma makinesinin çalışmaya başladığını; Kullanıcı kalkıp yıkamayı bitirdiğinde kahvaltı zaten servis edilmiş olur, böylece işe gitmekte herhangi bir gecikme yaşanmaz. Hayatımız ne kadar kolaylaştı! Üçüncüsütagistihbarata gidiyortage. Daha fazla akıllı ev cihazına erişildikçe üretilen veri türleri de artacaktır. Bulut bilişim, büyük veri ve yapay zekanın yardımıyla akıllı evlere artık kullanıcıdan sık sık komut gerektirmeyen “daha ​​akıllı bir beyin” yerleştirilmiş gibi. Karar verme için öneriler sağlamak da dahil olmak üzere etkinlikleri otomatikleştirmek için önceki etkileşimlerden veri toplar ve kullanıcının davranış kalıplarını ve tercihlerini öğrenirler. Şu anda çoğu akıllı ev ara bağlantıyla sahnede.tage. Akıllı ürünlerin penetrasyon hızı ve zekası arttıkça iletişim protokolleri arasındaki engeller ortadan kalkıyor. Gelecekte akıllı evlerin, tıpkı Iron Man'deki Jarvis yapay zeka sistemi gibi, gerçekten "akıllı" olması kaçınılmazdır; bu sistem, kullanıcının yalnızca çeşitli cihazları kontrol etmesine, günlük işleri halletmesine yardımcı olmakla kalmaz, aynı zamanda süper bilgi işlem gücüne ve düşünme yeteneğine de sahiptir. Akıllı stage, insan hem nicelik hem de nitelik olarak daha iyi hizmet alacaktır.
Bölüm 1. IoT'ye Giriş 7

8 ESP32-C3 Kablosuz Macerası: Kapsamlı IoT Kılavuzu

Bölüm Giriş ve 2 IoT Projesinin Uygulaması
Bölüm 1'de IoT'nin mimarisini, algılama ve kontrol katmanının, ağ katmanının, platform katmanının ve uygulama katmanının rollerini ve karşılıklı ilişkilerini ve ayrıca akıllı evin gelişimini tanıttık. Ancak tıpkı resim yapmayı öğrenirken olduğu gibi teorik bilgiyi bilmek de yeterli olmaktan uzaktır. Teknolojiye gerçek anlamda hakim olmak için IoT projelerini hayata geçirmek için “ellerimizi kirletmemiz” gerekiyor. Ayrıca bir proje seri üretime geçtiğindetage, ağ bağlantısı, konfigürasyon, IoT bulut platformu etkileşimi, ürün yazılımı yönetimi ve güncellemeleri, seri üretim yönetimi ve güvenlik konfigürasyonu gibi daha fazla faktörün dikkate alınması gerekir. Peki eksiksiz bir IoT projesi geliştirirken nelere dikkat etmeliyiz? 1. Bölümde akıllı evin en yaygın IoT uygulama senaryolarından biri olduğunu ve akıllı ışıkların evlerde, otellerde, spor salonlarında, hastanelerde vb. kullanılabilecek en temel ve pratik cihazlardan biri olduğundan bahsetmiştik. Bu kitapta bir akıllı ışık projesinin yapımını başlangıç ​​noktası olarak ele alacağız, bileşenlerini ve özelliklerini açıklayacağız ve proje geliştirme konusunda rehberlik sağlayacağız. Daha fazla IoT uygulaması oluşturmak için bu örnekten çıkarımlar yapabileceğinizi umuyoruz.
2.1 Tipik IoT Projelerine Giriş
Geliştirme açısından, IoT projelerinin temel fonksiyonel modülleri, IoT cihazlarının yazılım ve donanım geliştirmesi, istemci uygulaması geliştirme ve IoT bulut platformu geliştirme olarak sınıflandırılabilir. Bu bölümde daha ayrıntılı olarak açıklanacak olan temel işlevsel modüllerin açıklığa kavuşturulması önemlidir.
2.1.1 Ortak IoT Cihazları için Temel Modüller
IoT cihazlarının yazılım ve donanım geliştirmesi aşağıdaki temel modülleri içerir: Veri toplama
IoT mimarisinin alt katmanı olan algılama ve kontrol katmanının IoT cihazları, veri toplama ve operasyon kontrolünü sağlamak için sensörleri ve cihazları çipleri ve çevre birimleri aracılığıyla birbirine bağlar.
9

Hesap bağlama ve ilk yapılandırma Çoğu IoT cihazı için hesap bağlama ve ilk yapılandırma, örneğin tek bir operasyonel süreçte tamamlanır.ampDosya, Wi-Fi ağını yapılandırarak cihazları kullanıcılara bağlar.
IoT bulut platformlarıyla etkileşim IoT cihazlarını izlemek ve kontrol etmek için, birbirleriyle etkileşim yoluyla komutlar vermek ve durumu raporlamak amacıyla onları IoT bulut platformlarına bağlamak da gerekir.
Cihaz kontrolü Cihazlar IoT bulut platformlarına bağlandıklarında bulutla iletişim kurabilir ve kaydedilebilir, bağlanabilir veya kontrol edilebilir. Kullanıcılar, IoT bulut platformları veya yerel iletişim protokolleri aracılığıyla akıllı telefon uygulamasında ürün durumunu sorgulayabilir ve diğer işlemleri gerçekleştirebilir.
Ürün yazılımı yükseltmesi IoT cihazları aynı zamanda üreticilerin ihtiyaçlarına göre ürün yazılımı yükseltmesi de gerçekleştirebilir. Buluttan gönderilen komutlar alınarak firmware yükseltme ve versiyon yönetimi gerçekleştirilecek. Bu ürün yazılımı yükseltme özelliği ile IoT cihazlarının işlevlerini sürekli olarak geliştirebilir, kusurları düzeltebilir ve kullanıcı deneyimini iyileştirebilirsiniz.
2.1.2 İstemci Uygulamalarının Temel Modülleri
İstemci uygulamaları (örneğin akıllı telefon uygulamaları) temel olarak aşağıdaki temel modülleri içerir:
Hesap sistemi ve yetkilendirme Hesap ve cihaz yetkilendirmesini destekler.
Cihaz kontrolü Akıllı telefon uygulamaları genellikle kontrol işlevleriyle donatılmıştır. Kullanıcılar IoT cihazlarına kolayca bağlanabilir ve bunları akıllı telefon uygulamaları aracılığıyla istedikleri zaman, istedikleri yerde yönetebilirler. Gerçek dünyadaki bir akıllı evde, cihazlar çoğunlukla akıllı telefon uygulamaları aracılığıyla kontrol edilir; bu, yalnızca cihazların akıllı yönetimini sağlamakla kalmaz, aynı zamanda insan gücü maliyetinden de tasarruf sağlar. Bu nedenle, cihaz işlevi nitelik kontrolü, sahne kontrolü, planlama, uzaktan kumanda, cihaz bağlantısı vb. istemci uygulamaları için cihaz kontrolü bir zorunluluktur. Akıllı ev kullanıcıları ayrıca sahneleri kişisel ihtiyaçlara göre, aydınlatmayı, ev aletlerini, girişi kontrol etme gibi özelleştirebilir. vb. ev hayatını daha konforlu ve rahat hale getirmek için. Klimayı zamanlayabilir, uzaktan kapatabilir, kapı kilidi açıldığında koridor ışığını otomatik olarak yakabilir veya tek bir tuşla “sinema” moduna geçebilirler.
Notification Client uygulamaları, IoT cihazlarının gerçek zamanlı durumunu günceller ve cihazlar anormal duruma geldiğinde uyarı gönderir.
10 ESP32-C3 Kablosuz Macerası: Kapsamlı IoT Kılavuzu

Satış sonrası müşteri hizmetleri Akıllı telefon uygulamaları, ürünlere yönelik satış sonrası hizmetler sağlayabilir, IoT cihaz arızaları ve teknik işlemlerle ilgili sorunları zamanında çözebilir.
Öne çıkan işlevler Farklı kullanıcıların ihtiyaçlarını karşılamak için Sallama, NFC, GPS vb. gibi başka işlevler eklenebilir. GPS, konuma ve mesafeye göre sahne işlemlerinin doğruluğunun ayarlanmasına yardımcı olurken, Sarsma işlevi kullanıcıların sahne işlemlerinin doğruluğunu ayarlamasına olanak tanır. Belirli bir cihaz veya sahne için sallanarak yürütülecek komutlar.
2.1.3 Ortak IoT Bulut Platformlarına Giriş
IoT bulut platformu, cihaz yönetimi, veri güvenliği iletişimi ve bildirim yönetimi gibi işlevleri entegre eden hepsi bir arada bir platformdur. Hedef kitlesine ve erişilebilirliğine göre IoT bulut platformları, genel IoT bulut platformları (bundan sonra “genel bulut” olarak anılacaktır) ve özel IoT bulut platformları (bundan sonra “özel bulut” olarak anılacaktır) olarak ikiye ayrılabilir.
Genel bulut genellikle kurumlara veya bireylere yönelik, platform sağlayıcıları tarafından işletilen ve bakımı yapılan ve İnternet üzerinden paylaşılan paylaşılan IoT bulut platformlarını ifade eder. Ücretsiz veya düşük maliyetli olabilir ve Alibaba Cloud, Tencent Cloud, Baidu Cloud, AWS IoT, Google IoT vb. gibi açık genel ağ üzerinden hizmetler sağlar. Destekleyici bir platform olarak genel bulut, yukarı akış hizmet sağlayıcılarını entegre edebilir ve yeni bir değer zinciri ve ekosistem oluşturmak için alt son kullanıcılar.
Özel bulut yalnızca kurumsal kullanım için tasarlanmıştır; böylece veri, güvenlik ve hizmet kalitesi üzerinde en iyi kontrolü garanti eder. Hizmetleri ve altyapısı işletmeler tarafından ayrı olarak korunur ve destekleyici donanım ve yazılımlar da belirli kullanıcılara tahsis edilir. Kuruluşlar bulut hizmetlerini işletmelerinin ihtiyaçlarını karşılayacak şekilde özelleştirebilir. Halihazırda bazı akıllı ev üreticilerinin özel IoT bulut platformları var ve bunlara dayalı akıllı ev uygulamaları geliştiriyorlar.
Genel bulut ve özel bulutun kendi avantajları vardırtagDaha sonra açıklanacak olan şey.
İletişim bağlantısını sağlamak için iş sunucuları, IoT bulut platformları ve akıllı telefon uygulamalarıyla birlikte en azından cihaz tarafında yerleşik geliştirmeyi tamamlamak gerekiyor. Böylesine büyük bir projeyle karşı karşıya kalan genel bulut, normalde süreci hızlandırmak amacıyla cihaz tarafı ve akıllı telefon uygulamaları için yazılım geliştirme kitleri sağlıyor. Hem genel hem de özel bulut, cihaz erişimi, cihaz yönetimi, cihaz gölgesi, işletim ve bakım dahil olmak üzere hizmetler sağlar.
Cihaz erişimi IoT bulut platformlarının, protokolleri kullanarak cihaz erişimi için yalnızca arayüzler sağlaması gerekmez
Bölüm 2. IoT Projelerine Giriş ve Uygulama 11

MQTT, CoAP, HTTPS ve WebSoketin yanı sıra, sahte ve yasa dışı cihazları engellemek için cihaz güvenliği kimlik doğrulama işlevi de ele geçirilme riskini etkili bir şekilde azaltır. Bu tür kimlik doğrulama genellikle farklı mekanizmaları destekler, dolayısıyla cihazlar seri üretildiğinde, seçilen kimlik doğrulama mekanizmasına göre cihaz sertifikasını önceden atamak ve cihazlara yazmak gerekir.
Cihaz yönetimi IoT bulut platformları tarafından sağlanan cihaz yönetimi işlevi, üreticilerin cihazlarının aktivasyon durumunu ve çevrimiçi durumunu gerçek zamanlı olarak izlemelerine yardımcı olmakla kalmaz, aynı zamanda cihaz ekleme/çıkarma, alma, grup ekleme/silme, firmware yükseltme gibi seçeneklere de olanak tanır. ve sürüm yönetimi.
Cihaz gölgesi IoT bulut platformları, her cihaz için kalıcı bir sanal sürüm (cihaz gölgesi) oluşturabilir ve cihaz gölgesinin durumu, İnternet iletim protokolleri aracılığıyla akıllı telefon uygulaması veya diğer cihazlar tarafından senkronize edilebilir ve elde edilebilir. Cihaz gölgesi, her cihazın en son bildirilen durumunu ve beklenen durumunu saklar ve cihaz çevrimdışı olsa bile API'leri arayarak durumu elde edebilir. Cihaz gölgesi, cihazlarla etkileşime giren akıllı telefon uygulamaları oluşturmayı kolaylaştıran her zaman açık API'ler sağlar.
Çalıştırma ve bakım İşletme ve Bakım işlevi üç hususu içerir: · IoT cihazları ve bildirimler hakkında istatistiksel bilgilerin gösterilmesi. · Günlük yönetimi, cihaz davranışı, yukarı/aşağı mesaj akışı ve mesaj içeriği hakkında bilgi alınmasına olanak tanır. · Cihaz hata ayıklaması, komut teslimini, konfigürasyon güncellemesini ve IoT bulut platformları ile cihaz mesajları arasındaki etkileşimin kontrol edilmesini destekler.
2.2 Alıştırma: Akıllı Işık Projesi
Her bölümdeki teorik girişin ardından, uygulamalı deneyim kazanmanıza yardımcı olacak Akıllı Işık projesiyle ilgili bir uygulama bölümü bulacaksınız. Proje, Espressif'in ESP32-C3 yongasını ve ESP RainMaker IoT Bulut Platformunu temel alıyor ve akıllı ışık ürünlerindeki kablosuz modül donanımını, ESP32C3 tabanlı akıllı cihazlar için gömülü yazılımı, akıllı telefon uygulamalarını ve ESP RainMaker etkileşimini kapsıyor.
Kaynak kodu Daha iyi öğrenme ve deneyim geliştirme için bu kitaptaki proje açık kaynaklıdır. Kaynak kodunu https://github adresindeki GitHub depomuzdan indirebilirsiniz. com/espressif/book-esp32c3-iot-projects.
12 ESP32-C3 Kablosuz Macerası: Kapsamlı IoT Kılavuzu

2.2.1 Proje Yapısı
Akıllı Işık projesi üç bölümden oluşmaktadır: i. IoT bulut platformlarıyla etkileşimden ve LED'in anahtarını, parlaklığını ve renk sıcaklığını kontrol etmekten sorumlu, ESP32-C3 tabanlı akıllı ışık cihazlarıamp boncuklar. ii. Akıllı ışık ürünlerinin ağ yapılandırmasının yanı sıra durumlarının sorgulanması ve kontrol edilmesinden sorumlu akıllı telefon uygulamaları (Android ve iOS'ta çalışan tablet uygulamaları dahil).
iii. ESP RainMaker'ı temel alan bir IoT bulut platformu. Basitleştirmek amacıyla bu kitapta IoT bulut platformunu ve iş sunucusunu bir bütün olarak ele alıyoruz. ESP RainMaker ile ilgili ayrıntılar Bölüm 3'te verilecektir.
Smart Light proje yapısı ile IoT mimarisi arasındaki yazışma Şekil 2.1'de gösterilmektedir.
Şekil 2.1. Akıllı ışık projesinin yapısı
2.2.2 Proje Fonksiyonları
Yapısına göre bölünmüş her parçanın işlevleri aşağıdaki gibidir. Akıllı ışık cihazları
· Ağ yapılandırması ve bağlantısı. · Anahtar, parlaklık, renk sıcaklığı vb. gibi LED PWM kontrolü. · Otomasyon veya sahne kontrolü, örneğin zaman anahtarı. · Flash'ın şifrelenmesi ve güvenli başlatılması. · Firmware yükseltme ve sürüm yönetimi.
Bölüm 2. IoT Projelerine Giriş ve Uygulama 13

Akıllı telefon uygulamaları · Ağ yapılandırması ve cihaz bağlama. · Anahtar, parlaklık, renk sıcaklığı vb. gibi akıllı ışık ürünü kontrolü. · Otomasyon veya sahne ayarları, örneğin zaman anahtarı. · Yerel/uzaktan kumanda. · Kullanıcı kaydı, giriş vb.
ESP RainMaker IoT bulut platformu · IoT cihaz erişimini etkinleştirme. · Akıllı telefon uygulamaları tarafından erişilebilen cihaz işletim API'lerinin sağlanması. · Firmware yükseltme ve sürüm yönetimi.
2.2.3 Donanım Hazırlığı
Projeyi uygulamaya koymakla ilgileniyorsanız, şu donanıma da ihtiyacınız olacak: akıllı ışıklar, akıllı telefonlar, Wi-Fi yönlendiricileri ve geliştirme ortamının kurulum gereksinimlerini karşılayan bir bilgisayar. Akıllı ışıklar
Akıllı ışıklar, şekli genel akkor ampulle aynı olan yeni bir ampul türüdür. Akıllı ışık, kapasitör kademeli olarak ayarlanan güç kaynağı, kablosuz modül (dahili ESP32-C3 ile), LED denetleyici ve RGB LED matrisinden oluşur. Güce bağlandığında, 15 V DC voltagKapasitör azaltma, diyot düzeltme ve düzenleme sonrasındaki çıkış, LED denetleyiciye ve LED matrisine enerji sağlar. LED denetleyici, RGB LED matrisini kapalı (ışıklar açık) ve açık (ışıklar kapalı) arasında değiştirerek belirli aralıklarla otomatik olarak yüksek ve düşük seviyeler gönderebilir, böylece camgöbeği, sarı, yeşil, mor, mavi, kırmızı ve Beyaz ışık. Kablosuz modül, Wi-Fi yönlendiriciye bağlanmaktan, akıllı ışıkların durumunu alıp raporlamaktan ve LED'i kontrol etmek için komutlar göndermekten sorumludur.
Şekil 2.2. Simüle edilmiş bir akıllı ışık
Erken gelişim aşamasındatage, RGB LED'e bağlı ESP32-C3DevKitM-1 kartını kullanarak akıllı ışığı simüle edebilirsiniz.amp boncuklar (bkz. Şekil 2.2). Ama yapmalısın
14 ESP32-C3 Kablosuz Macerası: Kapsamlı IoT Kılavuzu

Akıllı bir ışık monte etmenin tek yolunun bu olmadığını unutmayın. Bu kitaptaki projenin donanım tasarımı yalnızca bir kablosuz modül (yerleşik ESP32-C3 ile) içerir, ancak tam bir akıllı ışık donanım tasarımı içermez. Ayrıca Espressif, ışıkları sesle kontrol etmek için ESP32-C3 tabanlı bir ses geliştirme kartı ESP32C3-Lyra da üretiyor. Kartın mikrofonlar ve hoparlörler için arayüzleri vardır ve LED şeritleri kontrol edebilir. Ultra düşük maliyetli, yüksek performanslı ses yayıncıları ve ritim ışık şeritleri geliştirmek için kullanılabilir. Şekil 2.3, 32 LED ışıktan oluşan bir şeritle bağlanmış bir ESP3-C40Lyra kartını göstermektedir.
Şekil 2.3. ESP32-C3-Lyra, 40 LED ışıktan oluşan bir şeritle bağlantılı
Akıllı telefonlar (Android/iOS) Akıllı Işık projesi, akıllı ışık ürünlerinin kurulumu ve kontrolü için bir akıllı telefon uygulamasının geliştirilmesini içermektedir.
Wi-Fi yönlendiricileri Wi-Fi yönlendiricileri, bilgisayarların, akıllı telefonların, tabletlerin ve diğer kablosuz cihazların ağa bağlanması için kablolu ağ sinyallerini ve mobil ağ sinyallerini kablosuz ağ sinyallerine dönüştürür. Eski içinampDolayısıyla, Wi-Fi cihazlarının kablosuz ağ bağlantısını sağlamak için evdeki geniş bantın yalnızca bir Wi-Fi yönlendiriciye bağlanması gerekir. Wi-Fi yönlendiricileri tarafından desteklenen ana akım protokol standardı, ortalama 802.11 Mbps veya maksimum 300 Mbps TxRate ile IEEE 600n'dir. IEEE 802.11b ve IEEE 802.11g ile geriye dönük olarak uyumludurlar. Espressif'in ESP32-C3 yongası IEEE 802.11b/g/n'yi destekler, böylece tek bantlı (2.4 GHz) veya çift bantlı (2.4 GHz ve 5 GHz) Wi-Fi yönlendirici seçebilirsiniz.
Bir bilgisayar (Linux/macOS/Windows) Geliştirme ortamı Bölüm 4'te tanıtılacaktır. Bölüm 2. IoT Projelerine Giriş ve Uygulama 15

2.2.4 Geliştirme Süreci
Şekil 2.4. Akıllı Işık projesini geliştirme adımları
Donanım tasarımı IoT cihazlarının donanım tasarımı, bir IoT projesi için çok önemlidir. Eksiksiz bir akıllı ışık projesinin amacı tümamp şebeke kaynağı altında çalışıyor. Farklı üreticiler l üretiyorampFarklı tarzlarda ve sürücü türlerindedir ancak kablosuz modülleri genellikle aynı işleve sahiptir. Smart Light projesinin geliştirme sürecini kolaylaştırmak için bu kitapta yalnızca kablosuz modüllerin donanım tasarımı ve yazılım geliştirmesi yer almaktadır.
IoT bulut platformu yapılandırması IoT bulut platformlarını kullanmak için arka uçta ürün oluşturma, cihaz oluşturma, cihaz özelliklerini ayarlama gibi projeleri yapılandırmanız gerekir.
IoT cihazları için yerleşik yazılım geliştirme Espressif'in cihaz tarafı SDK'sı olan ESP-IDF ile IoT bulut platformlarına bağlanma, LED sürücüleri geliştirme ve ürün yazılımını yükseltme dahil olmak üzere beklenen işlevleri uygulayın.
Akıllı telefon uygulaması geliştirme Kullanıcı kaydı ve oturum açma, cihaz kontrolü ve diğer işlevleri gerçekleştirmek üzere Android ve iOS sistemleri için akıllı telefon uygulamaları geliştirin.
IoT cihaz optimizasyonu IoT cihaz fonksiyonlarının temel gelişimi tamamlandıktan sonra, güç optimizasyonu gibi optimizasyon görevlerine geçebilirsiniz.
Seri üretim testleri Ekipman fonksiyon testi, eskime testi, RF testi vb. gibi ilgili standartlara göre seri üretim testleri gerçekleştirin.
Yukarıda listelenen adımlara rağmen, bir Akıllı Işık projesinin mutlaka böyle bir prosedüre tabi olması gerekmez, çünkü aynı anda farklı görevler de gerçekleştirilebilir. Eski içinampDosya, gömülü yazılım ve akıllı telefon uygulamaları paralel olarak geliştirilebilir. IoT cihaz optimizasyonu ve seri üretim testi gibi bazı adımların da tekrarlanması gerekebilir.
16 ESP32-C3 Kablosuz Macerası: Kapsamlı IoT Kılavuzu

2.3 Özet
Bu bölümde öncelikle bir IoT projesinin temel bileşenlerini ve işlevsel modüllerini açıkladık, ardından yapısına, işlevlerine, donanım hazırlığına ve geliştirme sürecine atıfta bulunarak Smart Light örneğini pratik için tanıttık. Okuyucular uygulamadan çıkarımlar yapabilir ve gelecekte IoT projelerini minimum hatayla gerçekleştireceklerinden emin olabilirler.
Bölüm 2. IoT Projelerine Giriş ve Uygulama 17

18 ESP32-C3 Kablosuz Macerası: Kapsamlı IoT Kılavuzu

Bölüm 3

giriiş

ile

ESP

Yağmur Yapıcı

Nesnelerin İnterneti (IoT), insanların yaşam biçimini değiştirmek için sonsuz olanaklar sunuyor, ancak IoT mühendisliğinin gelişimi zorluklarla dolu. Genel bulutlarla terminal üreticileri aşağıdaki çözümler aracılığıyla ürün işlevselliğini uygulayabilir:
Çözüm sağlayıcıların bulut platformlarına dayalı Bu şekilde, terminal üreticilerinin yalnızca ürün donanımını tasarlaması, ardından donanımı sağlanan iletişim modülünü kullanarak buluta bağlaması ve ürün işlevlerini yönergelere göre yapılandırması gerekir. Bu, sunucu tarafı ve uygulama tarafı geliştirme, operasyon ve bakım (O&M) ihtiyacını ortadan kaldırdığı için verimli bir yaklaşımdır. Terminal üreticilerinin bulut uygulamasını dikkate almadan donanım tasarımına odaklanmasına olanak tanır. Ancak bu tür çözümler (örn. cihaz yazılımı ve Uygulama) genellikle açık kaynak değildir, bu nedenle ürün işlevleri, sağlayıcının özelleştirilemeyen bulut platformuyla sınırlı olacaktır. Bu arada kullanıcı ve cihaz verileri de bulut platformuna ait.
Bulut ürünlerine dayalı Bu çözümde, donanım tasarımını tamamladıktan sonra, terminal üreticilerinin yalnızca genel bulut tarafından sağlanan bir veya daha fazla bulut ürününü kullanarak bulut işlevlerini uygulamaya koymaları gerekmiyor, aynı zamanda donanımı buluta bağlamaları da gerekiyor. Eski içinample, Amazon'a bağlanmak için Web Hizmetler (AWS), terminal üreticilerinin cihaz erişimini, uzaktan kontrolü, veri depolamayı, kullanıcı yönetimini ve diğer temel işlevleri etkinleştirmek için Amazon API Gateway, AWS IoT Core ve AWS Lambda gibi AWS ürünlerini kullanması gerekir. Terminal üreticilerinden bulut ürünlerini derinlemesine anlayış ve zengin deneyimle esnek bir şekilde kullanmalarını ve yapılandırmalarını istemekle kalmıyor, aynı zamanda ilk ve sonraki dönemler için inşaat ve bakım maliyetlerini de dikkate almalarını gerektiriyor.tagBu durum şirketin enerji ve kaynakları açısından büyük zorluklara neden oluyor.
Genel bulutlarla karşılaştırıldığında özel bulutlar genellikle belirli projeler ve ürünler için oluşturulur. Özel bulut geliştiricilerine protokol tasarımı ve iş mantığı uygulamasında en üst düzeyde özgürlük verilir. Terminal üreticileri istedikleri zaman ürün ve tasarım planları oluşturabilir ve kullanıcı verilerini kolayca entegre edip güçlendirebilir. Genel bulutun yüksek güvenliğini, ölçeklenebilirliğini ve güvenilirliğini avantajla birleştiriyortagEspressif, özel bulutun es'i ESP'yi başlattı
19

RainMaker, Amazon bulutunu temel alan derinlemesine entegre bir özel bulut çözümü. Kullanıcılar bir AWS hesabıyla ESP RainMaker'ı dağıtabilir ve özel bulut oluşturabilir.
3.1 ESP RainMaker nedir?
ESP RainMaker, birden fazla olgun AWS ürünüyle oluşturulmuş eksiksiz bir AIoT platformudur. Cihaz bulut erişimi, cihaz yükseltme, arka uç yönetimi, üçüncü taraf oturum açma, ses entegrasyonu ve kullanıcı yönetimi gibi seri üretim için gerekli olan çeşitli hizmetleri sağlar. Terminal üreticileri, AWS tarafından sağlanan Sunucusuz Uygulama Deposu'nu (SAR) kullanarak, zamandan tasarruf sağlayan ve kullanımı kolay olan ESP RainMaker'ı AWS hesaplarına hızlı bir şekilde dağıtabilirler. Espressif tarafından yönetilen ve sürdürülen ESP RainMaker tarafından kullanılan SAR, geliştiricilerin bulut bakım maliyetlerini azaltmasına ve AIoT ürünlerinin geliştirilmesini hızlandırmasına, böylece güvenli, istikrarlı ve özelleştirilebilir AIoT çözümleri oluşturmasına yardımcı olur. Şekil 3.1 ESP RainMaker'ın mimarisini göstermektedir.
Şekil 3.1. ESP RainMaker'ın Mimarisi
Espressif'in ESP RainMaker genel sunucusu, çözüm değerlendirmesi amacıyla tüm ESP meraklıları, yapımcıları ve eğitimcileri için ücretsizdir. Geliştiriciler Apple, Google veya GitHub hesaplarıyla giriş yapabilir ve hızlı bir şekilde kendi IoT uygulama prototiplerini oluşturabilirler. Genel sunucu, Alexa ile Google Home'u entegre eder ve Alexa Skill ve Google Actions tarafından desteklenen ses kontrol hizmetleri sağlar. Anlamsal tanıma işlevi de üçüncü taraflarca desteklenmektedir. RainMaker IoT cihazları yalnızca belirli eylemlere yanıt verir. Desteklenen sesli komutların kapsamlı bir listesi için lütfen üçüncü taraf platformlarını kontrol edin. Ek olarak Espressif, kullanıcıların ürünleri akıllı telefonlar aracılığıyla kontrol edebilmeleri için halka açık bir RainMaker Uygulaması sunuyor. 20 ESP32-C3 Kablosuz Macerası: Kapsamlı IoT Kılavuzu

3.2 ESP RainMaker'ın Uygulanması
Şekil 3.2'de gösterildiği gibi, ESP RainMaker dört bölümden oluşur: · Talep Hizmeti, RainMaker cihazlarının dinamik olarak sertifika almasını sağlar. · RainMaker Cloud (bulut arka uç olarak da bilinir), mesaj filtreleme, kullanıcı yönetimi, veri depolama ve üçüncü taraf entegrasyonları gibi hizmetler sağlar. · RainMaker Agent, RainMaker cihazlarının RainMaker Cloud'a bağlanmasını sağlar. · Sağlama, kullanıcı oluşturma, cihaz ilişkilendirme ve kontrol vb. için RainMaker İstemcisi (RainMaker Uygulaması veya CLI komut dosyaları).
Şekil 3.2. ESP RainMaker'ın Yapısı
ESP RainMaker, aşağıdakiler de dahil olmak üzere ürün geliştirme ve seri üretim için eksiksiz bir araç seti sağlar: RainMaker SDK
RainMaker SDK, ESP-IDF'yi temel alır ve ürün yazılımı geliştirme için cihaz tarafı aracısının ve ilgili C API'lerinin kaynak kodunu sağlar. Geliştiricilerin yalnızca uygulama mantığını yazmaları ve gerisini RainMaker çerçevesine bırakmaları gerekir. C API'leri hakkında daha fazla bilgi için lütfen https://bookc3.espressif.com/rm/c-api-reference adresini ziyaret edin. RainMaker Uygulaması RainMaker Uygulamasının herkese açık sürümü, geliştiricilerin cihaz provizyonunu tamamlamasına ve cihazların durumunu (örn. akıllı aydınlatma ürünleri) kontrol edip sorgulamasına olanak tanır. Hem iOS hem de Android uygulama mağazalarında mevcuttur. Daha fazla ayrıntı için lütfen Bölüm 10'a bakın. REST API'leri REST API'leri, kullanıcıların RainMaker Uygulamasına benzer şekilde kendi uygulamalarını oluşturmalarına yardımcı olur. Daha fazla bilgi için lütfen https://swaggerapis.rainmaker.espressif.com/ adresini ziyaret edin.
Bölüm 3. ESP RainMaker'a Giriş 21

Python API'leri RainMaker SDK ile birlikte gelen Python tabanlı bir CLI, akıllı telefon özelliklerine benzer tüm işlevleri uygulamak için sağlanır. Python API'leri hakkında daha fazla bilgi için lütfen https://bookc3.espressif.com/rm/python-api-reference adresini ziyaret edin.
Yönetici CLI'si Daha yüksek erişim düzeyine sahip Yönetici CLI, ESP RainMaker özel dağıtımının toplu olarak cihaz sertifikaları oluşturması için sağlanır.
3.2.1 Hizmet Talebi
RainMaker cihazları ile bulut arka ucu arasındaki tüm iletişim MQTT+TLS aracılığıyla gerçekleştirilir. ESP RainMaker bağlamında "Talep Etme", cihazların bulut arka ucuna bağlanmak için Talep Etme Hizmetinden sertifika alma sürecidir. Talep Hizmetinin yalnızca genel RainMaker hizmeti için geçerli olduğunu, özel dağıtım için ise cihaz sertifikalarının Yönetici CLI aracılığıyla toplu olarak oluşturulması gerektiğini unutmayın. ESP RainMaker üç tür Talep Hizmetini destekler: Kendi Kendini Talep Etme
Cihaz, internete bağlandıktan sonra eFuse'da önceden programlanmış gizli bir anahtar aracılığıyla sertifikaları kendisi alır. Ana Bilgisayara Dayalı Talep Sertifikalar, RainMaker hesabıyla geliştirme ana bilgisayarından alınır. Destekli Talep Sertifikalar, provizyon sırasında akıllı telefon uygulamaları aracılığıyla alınır.
3.2.2 RainMaker Aracısı
Şekil 3.3. RainMaker SDK'nın Yapısı RainMaker Agent'ın birincil işlevi, bağlantı sağlamak ve uygulama katmanının yukarı bağlantı/aşağı bağlantı bulut verilerini işlemesine yardımcı olmaktır. RainMaker SDK 22 ESP32-C3 Kablosuz Macerası: Kapsamlı IoT Kılavuzu aracılığıyla oluşturulmuştur

RTOS, NVS ve MQTT gibi ESP-IDF bileşenleri kullanılarak kanıtlanmış ESP-IDF çerçevesi temel alınarak geliştirilmiştir. Şekil 3.3 RainMaker SDK'nın yapısını göstermektedir.
RainMaker SDK'sı iki ana özellik içerir.
Bağlantı
Ben. Cihaz sertifikalarını almak için Talep Hizmeti ile işbirliği yapmak.
ii. Uzaktan bağlantı sağlamak ve uzaktan kontrol, mesaj raporlama, kullanıcı yönetimi, cihaz yönetimi vb. uygulamak için güvenli MQTT protokolünü kullanarak bulut arka ucuna bağlanma. Varsayılan olarak ESP-IDF'deki MQTT bileşenini kullanır ve diğerleriyle arayüz oluşturmak için bir soyutlama katmanı sağlar. protokol yığınları.
iii. Wi-Fi bağlantısı ve provizyonu için Wi-Fi provizyon bileşeni, OTA yükseltmeleri için esp https ota bileşeni ve yerel cihaz keşfi ve bağlantısı için esp yerel ctrl bileşeni sağlar. Tüm bu hedeflere basit konfigürasyonla ulaşılabilir.
Veri işleme
Ben. Claiming Service tarafından verilen cihaz sertifikalarını ve RainMaker'ı çalıştırırken ihtiyaç duyulan verileri, varsayılan olarak nvs flash bileşeni tarafından sağlanan arayüzü kullanarak depolamak ve geliştiricilere doğrudan kullanım için API'ler sağlamak.
ii. Yukarı bağlantı/aşağı bağlantı bulut verilerini işlemek için geri çağırma mekanizmasını kullanmak ve geliştiriciler tarafından kolay işlenmek üzere uygulama katmanındaki verilerin engelini otomatik olarak kaldırmak. Eski içinampRainMaker SDK, IoT cihazlarını tanımlamak ve zamanlama, geri sayım ve ses kontrolü gibi işlevleri uygulamak amacıyla TSL modellerini tanımlamak için gerekli olan TSL (Şey Belirleme Dili) verilerini oluşturmak için zengin arayüzler sağlar. Zamanlama gibi temel etkileşimli özellikler için RainMaker SDK, gerektiğinde kolayca etkinleştirilebilen, geliştirme gerektirmeyen bir çözüm sunar. Daha sonra RainMaker Agent, verileri doğrudan işleyecek, ilgili MQTT konusu aracılığıyla buluta gönderecek ve geri çağırma mekanizması aracılığıyla bulut arka ucundaki veri değişikliklerini geri bildirecektir.
3.2.3 Bulut Arka Uç
Bulut arka ucu AWS Sunucusuz Bilgi İşlem üzerine kuruludur ve AWS Cognito (kimlik yönetimi sistemi), Amazon API Gateway, AWS Lambda (sunucusuz bilgi işlem hizmeti), Amazon DynamoDB (NoSQL veritabanı), AWS IoT Core (MQTT erişimi sağlayan IoT erişim çekirdeği) aracılığıyla elde edilir ve kural filtreleme), Amazon Simple Email Service (SES basit posta hizmeti), Amazon CloudFront (hızlı dağıtım ağı), Amazon Simple Queue Service (SQS mesaj sıralama) ve Amazon S3 (paket depolama hizmeti). Ölçeklenebilirlik ve güvenliğin optimize edilmesi amaçlanmaktadır. ESP RainMaker ile geliştiriciler bulutta kod yazmak zorunda kalmadan cihazları yönetebilirler. Cihazlar tarafından bildirilen mesajlar şeffaf bir şekilde iletilir
Bölüm 3. ESP RainMaker'a Giriş 23

uygulama istemcileri veya diğer üçüncü taraf hizmetleri. Tablo 3.1, bulut arka ucunda kullanılan AWS bulut ürünlerini ve işlevlerini gösterir; geliştirilmekte olan daha fazla ürün ve özellik vardır.
Tablo 3.1. Bulut arka ucu tarafından kullanılan AWS bulut ürünleri ve işlevleri

RainMaker Tarafından Kullanılan AWS Bulut Ürünü

İşlev

AWS Bilişsel

Kullanıcı kimlik bilgilerini yönetme ve üçüncü taraf oturum açma işlemlerini destekleme

AWS Lambda

Bulut arka ucunun temel iş mantığını uygulama

Amazon Timestream Zaman serisi verilerini depolama

Amazon DynamoDB Müşterilerin özel bilgilerini saklama

AWS IoT Çekirdeği

MQTT iletişimini destekleme

Amazon SES

E-posta gönderme hizmetlerinin sağlanması

Amazon CloudFront Arka uç yönetimini hızlandırıyor websayfa girişi

Amazon SQS

AWS IoT Core'dan mesaj yönlendirme

3.2.4 RainMaker İstemcisi
Uygulama ve CLI gibi RainMaker istemcileri, REST API'leri aracılığıyla bulut arka ucuyla iletişim kurar. REST API'leri hakkında ayrıntılı bilgi ve talimatlar Espressif tarafından sağlanan Swagger belgelerinde bulunabilir. RainMaker'ın mobil uygulama istemcisi hem iOS hem de Android sistemlerinde mevcuttur. Cihaz sağlama, kontrol etme ve paylaşmanın yanı sıra geri sayım görevleri oluşturup etkinleştirmeye ve üçüncü taraf platformlara bağlanmaya olanak tanır. Cihazların bildirdiği konfigürasyona göre kullanıcı arayüzünü ve simgeleri otomatik olarak yükleyebilir ve cihazın TSL'sini tam olarak görüntüleyebilir.
ÖrneğinampÖrneğin, RainMaker SDK tarafından sağlanan eski bir akıllı ışık üzerine kuruluysaampDosyalar, hazırlama tamamlandığında ampul ışığının simgesi ve kullanıcı arayüzü otomatik olarak yüklenecektir. Kullanıcılar, arayüz aracılığıyla ışığın rengini ve parlaklığını değiştirebilir ve Alexa Smart Home Skill veya Google Smart Home Actions'ı ESP RainMaker hesaplarına bağlayarak üçüncü taraf kontrolü elde edebilir. Şekil 3.4'te simge ve kullanıcı arayüzü gösterilmektedirampAmpul ışığının dosyalarını sırasıyla Alexa, Google Home ve ESP RainMaker Uygulamasında görüntüleyin.

24 ESP32-C3 Kablosuz Macerası: Kapsamlı IoT Kılavuzu

(a) Örn.ample – Alexa

(b) Örn.ample – Google Ana Sayfası

(c) Örn.ample – ESP RainMaker
Şekil 3.4. ÖrampAlexa, Google Home ve ESP RainMaker Uygulamasındaki ampul ışığı simge dosyaları ve kullanıcı arayüzü
3.3 Uygulama: ESP RainMaker ile Geliştirmenin Önemli Noktaları
Cihaz sürücüsü katmanı tamamlandıktan sonra geliştiriciler, RainMaker SDK tarafından sağlanan API'leri kullanarak TSL modelleri oluşturmaya ve aşağı bağlantı verilerini işlemeye başlayabilir ve ürün tanımına ve gereksinimlerine göre ESP RainMaker temel hizmetlerini etkinleştirebilir.
Bölüm 3. ESP RainMaker'a Giriş 25

Bu kitabın 9.4 Bölümünde RainMaker'da LED akıllı ışığın uygulanması açıklanacaktır. Hata ayıklama sırasında geliştiriciler, akıllı ışıkla iletişim kurmak (veya Swagger'dan REST API'lerini çağırmak) için RainMaker SDK'sındaki CLI araçlarını kullanabilir.
Bölüm 10'da akıllı telefon uygulamaları geliştirmede REST API'lerin kullanımı ayrıntılı olarak ele alınacaktır. LED akıllı ışıkların OTA yükseltmeleri Bölüm 11'de ele alınacaktır. Geliştiriciler ESP Insights uzaktan izlemeyi etkinleştirmişse, ESP RainMaker yönetim arka ucu ESP Insights verilerini görüntüleyecektir. Ayrıntılar Bölüm 15'te sunulacaktır.
ESP RainMaker, genel RainMaker sunucusundan aşağıdaki yönlerden farklılık gösteren özel dağıtımı destekler:
Hizmet Talep Etme Özel dağıtımlarda sertifika oluşturmak için Talep Etme yerine RainMaker Yönetici CLI'sinin kullanılması gerekir. Genel sunucularda, yazılım yükseltmesini uygulamak için geliştiricilere yönetici hakları verilmelidir, ancak ticari dağıtımlarda bu istenmeyen bir durumdur. Bu nedenle, kendi kendine hak talebinde bulunmak için ayrı bir kimlik doğrulama hizmeti sağlanamayacağı gibi, ana bilgisayar yönlendirmeli veya destekli hak talebinde bulunma için de yönetici hakları sağlanamaz.
Telefon uygulamaları Özel dağıtımlarda, hesap sistemlerinin birlikte çalışamayacağından emin olmak için uygulamaların ayrı ayrı yapılandırılması ve derlenmesi gerekir.
3. taraf oturum açma işlemleri ve ses entegrasyonu Geliştiricilerin, 3. taraf oturum açma işlemlerinin yanı sıra Alexa Skill ve Google Voice Assistant entegrasyonunu etkinleştirmek için Google ve Apple Geliştirici hesapları aracılığıyla ayrı ayrı yapılandırma yapması gerekir.
İPUÇLARI Bulut dağıtımıyla ilgili ayrıntılar için lütfen https://customer.rainmaker.espressif adresini ziyaret edin. com. Ürün yazılımı açısından, genel sunucudan özel sunucuya geçiş yalnızca cihaz sertifikalarının değiştirilmesini gerektirir; bu da geçiş verimliliğini büyük ölçüde artırır ve geçiş ve ikincil hata ayıklama maliyetlerini azaltır.
3.4 ESP RainMaker'ın Özellikleri
ESP RainMaker özellikleri temel olarak üç hususu hedef alır: kullanıcı yönetimi, son kullanıcılar ve yöneticiler. Aksi belirtilmediği sürece tüm özellikler hem genel hem de özel sunucularda desteklenir.
3.4.1 Kullanıcı Yönetimi
Kullanıcı yönetimi özellikleri, son kullanıcıların kaydolmasına, oturum açmasına, şifreleri değiştirmesine, şifreleri almasına vb. olanak tanır.
26 ESP32-C3 Kablosuz Macerası: Kapsamlı IoT Kılavuzu

Kaydolun ve giriş yapın RainMaker tarafından desteklenen kayıt ve giriş yöntemleri şunları içerir: · E-posta kimliği + Şifre · Telefon numarası + Şifre · Google hesabı · Apple hesabı · GitHub hesabı (yalnızca genel sunucu) · Amazon hesabı (yalnızca özel sunucu)
NOT Google/Amazon'u kullanarak kaydolun, kullanıcının e-posta adresini RainMaker ile paylaşır. Apple'ın RainMaker hizmeti için özel olarak kullanıcıya atadığı sahte bir adresi kullanarak kaydolun. Google, Apple veya Amazon hesabıyla ilk kez oturum açan kullanıcılar için otomatik olarak bir RainMaker hesabı oluşturulacaktır.
Şifreyi değiştir Yalnızca E-posta kimliği/Telefon numarasına dayalı oturum açma işlemleri için geçerlidir. Şifre değiştirildikten sonra diğer tüm aktif oturumlardan çıkış yapılacaktır. AWS Cognito davranışına göre, oturumu kapatılan oturumlar 1 saate kadar aktif kalabilir.
Şifreyi al Yalnızca E-posta kimliği/Telefon numarasına dayalı oturum açma işlemleri için geçerlidir.
3.4.2 Son Kullanıcı Özellikleri
Son kullanıcılara açık özellikler arasında yerel ve uzaktan kontrol ve izleme, planlama, cihaz gruplandırma, cihaz paylaşımı, anlık bildirimler ve üçüncü taraf entegrasyonları yer alır.
Uzaktan kontrol ve izleme · Bir veya tüm cihazlar için sorgulama konfigürasyonu, parametre değerleri ve bağlantı durumu. · Tek veya birden fazla cihaz için parametreleri ayarlayın.
Yerel kontrol ve izleme Yerel kontrol için cep telefonu ve cihazın aynı ağa bağlı olması gerekir.
Planlama · Kullanıcılar belirli eylemleri belirli bir zamanda önceden ayarlar. · Programı yürütürken cihaz için İnternet bağlantısı gerekmez. · Tek veya birden fazla cihaz için bir kez veya tekrar (günleri belirterek).
Cihaz gruplandırma Çok seviyeli soyut gruplamayı destekler Grup meta verileri, Ev Odası yapısı oluşturmak için kullanılabilir.
Bölüm 3. ESP RainMaker'a Giriş 27

Cihaz paylaşımı Bir veya daha fazla cihaz, bir veya daha fazla kullanıcıyla paylaşılabilir.
Anında bildirimler Son kullanıcılar aşağıdaki gibi olaylar için anında bildirimler alacaktır: · Yeni cihaz(lar) eklendi/kaldırıldı · Buluta bağlanan cihaz · Bulutla bağlantısı kesildi · Cihaz paylaşım istekleri oluşturuldu/kabul edildi/reddedildi · Cihazlar tarafından bildirilen uyarı mesajları
Işıklar, anahtarlar, prizler, fanlar ve sıcaklık sensörleri dahil olmak üzere RainMaker cihazlarını kontrol etmek için üçüncü taraf entegrasyonları Alexa ve Google Voice Assistant desteklenir.
3.4.3 Yönetici Özellikleri
Yönetici özellikleri, yöneticilerin cihaz kaydını, cihaz gruplamasını ve OTA yükseltmelerini uygulamasına ve view istatistikler ve ESP Insights verileri.
Cihaz kaydı Cihaz sertifikaları oluşturun ve Admin CLI'ye kaydolun (yalnızca özel sunucu).
Cihaz gruplandırma Cihaz bilgilerine dayalı soyut veya yapılandırılmış gruplar oluşturun (yalnızca özel sunucu).
Havadan (OTA) yükseltmeler Sürüm ve modele göre ürün yazılımını bir veya daha fazla cihaza veya bir gruba yükleyin OTA işlerini izleyin, iptal edin veya arşivleyin.
View istatistikler Viewmümkün olan istatistikler şunları içerir: · Cihaz kayıtları (yönetici tarafından kaydedilen sertifikalar) · Cihaz aktivasyonları (ilk kez bağlanan cihaz) · Kullanıcı hesapları · Kullanıcı-cihaz ilişkisi
View ESP Insights verileri Viewmümkün ESP Insights verileri şunları içerir: · Hatalar, uyarılar ve özel günlükler · Kilitlenme raporları ve analizleri · Yeniden başlatma nedenleri · Bellek kullanımı, RSSI vb. gibi ölçümler · Özel ölçümler ve değişkenler
28 ESP32-C3 Kablosuz Macerası: Kapsamlı IoT Kılavuzu

3.5 Özet
Bu bölümde, genel RainMaker dağıtımı ile özel dağıtım arasındaki bazı önemli farkları tanıttık. Espressif'in piyasaya sürdüğü özel ESP RainMaker çözümü son derece güvenilir ve genişletilebilir. Tüm ESP32 serisi çipler AWS'ye bağlanıp uyarlanmıştır, bu da maliyeti büyük ölçüde azaltır. Geliştiriciler, AWS bulut ürünleri hakkında bilgi edinmek zorunda kalmadan prototip doğrulamaya odaklanabilir. Ayrıca ESP RainMaker'ın uygulanmasını ve özelliklerini ve platformu kullanarak geliştirmeye yönelik bazı önemli noktaları açıkladık.
Android için ESP RainMaker'ı indirmek üzere tarayın iOS için ESP RainMaker'ı indirmek için tarayın
Bölüm 3. ESP RainMaker'a Giriş 29

30 ESP32-C3 Kablosuz Macerası: Kapsamlı IoT Kılavuzu

Bölüm Geliştirme Ortamının Kurulumu 4
Bu bölüm, ESP32-C3'ün resmi yazılım geliştirme çerçevesi olan ESP-IDF'ye odaklanmaktadır. Çeşitli işletim sistemlerinde ortamın nasıl kurulacağını açıklayacağız ve ESP-IDF'nin proje yapısı ve derleme sisteminin yanı sıra ilgili geliştirme araçlarının kullanımını tanıtacağız. Daha sonra eski bir dosyanın derlenmesi ve çalıştırılması sürecini sunacağız.ampproje, her seferinde çıktı günlüğünün ayrıntılı bir açıklamasını sunarkentage.
4.1 ESP-IDF Bittiview
ESP-IDF (Espressif IoT Geliştirme Çerçevesi), Espressif Technology tarafından sağlanan tek noktadan IoT geliştirme çerçevesidir. Ana geliştirme dili olarak C/C++ kullanır ve Linux, Mac ve Windows gibi genel işletim sistemleri altında çapraz derlemeyi destekler. EskiampBu kitapta yer alan dosya programları, aşağıdaki özellikleri sunan ESP-IDF kullanılarak geliştirilmiştir: · SoC sistem düzeyinde sürücüler. ESP-IDF, ESP32, ESP32-S2, ESP32-C3 için sürücüleri içerir.
ve diğer cipsler. Bu sürücüler, çevre birimi düşük düzey (LL) kitaplığını, donanım soyutlama katmanı (HAL) kitaplığını, RTOS desteğini ve üst katman sürücü yazılımını vb. kapsar. · Temel bileşenler. ESP-IDF, IoT geliştirme için gerekli temel bileşenleri içerir. Buna HTTP ve MQTT gibi çoklu ağ protokolü yığınları, dinamik frekans modülasyonuna sahip bir güç yönetimi çerçevesi ve Flash Şifreleme ve Güvenli Önyükleme vb. özellikler dahildir. · Geliştirme ve üretim araçları. ESP-IDF, geliştirme ve seri üretim sırasında oluşturma, flaş ve hata ayıklama için yaygın olarak kullanılan araçları sağlar (bkz. Şekil 4.1), CMake'e dayalı oluşturma sistemi, GCC'ye dayalı çapraz derleme araç zinciri ve J.TAG OpenOCD vb. tabanlı hata ayıklama aracı. ESP-IDF kodunun öncelikle Apache 2.0 açık kaynak lisansına bağlı olduğunu belirtmekte fayda var. Kullanıcılar, açık kaynak lisansının koşullarına uyarak kısıtlama olmaksızın kişisel veya ticari yazılımlar geliştirebilirler. Ayrıca kullanıcılara, kaynak kodunda yapılan herhangi bir değişikliği açık kaynak yapma zorunluluğu olmaksızın, ücretsiz olarak kalıcı patent lisansları verilmektedir.
31

Şekil 4.1.

Oluşturma, yanıp sönme ve hata ayıklama

geliştirme ve seri üretim için araçlar

4.1.1 ESP-IDF Sürümleri
ESP-IDF kodu GitHub'da açık kaynaklı bir proje olarak barındırılmaktadır. Şu anda üç ana sürüm mevcuttur: v3, v4 ve v5. Her ana sürüm genellikle v4.2, v4.3 vb. gibi çeşitli alt sürümleri içerir. Espressif Systems, yayımlanan her alt sürüm için hata düzeltmeleri ve güvenlik yamaları için 30 aylık destek sağlar. Bu nedenle, v4.3.1, v4.2.2 vb. gibi alt sürümlerin revizyonları da düzenli olarak yayınlanmaktadır. Tablo 4.1, Espressif yongaları için farklı ESP-IDF sürümlerinin destek durumunu gösterir ve bunların bir ön sürümde olup olmadıklarını belirtir.view stage (öncesi destek sunuyorview (belirli özelliklerden veya belgelerden yoksun olabilen) veya resmi olarak desteklenen sürümler.

Tablo 4.1. Espressif yongaları için farklı ESP-IDF sürümlerinin destek durumu

Seri ESP32 ESP32-S2 ESP32-C3 ESP32-S3 ESP32-C2 ESP32-H2

v4.1 destekleniyor

v4.2 destekleniyor destekleniyor

v4.3 destekleniyor destekleniyor destekleniyor

v4.4 destekleniyor destekleniyor destekleniyor destekleniyor
önview

v5.0 destekleniyor desteklenen desteklenen desteklenen desteklenen önview

32 ESP32-C3 Kablosuz Macerası: Kapsamlı IoT Kılavuzu

Ana sürümlerin yinelenmesi genellikle çerçeve yapısında ayarlamalar ve derleme sisteminde güncellemeler içerir. Eski içinampv3.*'dan v4.*'a geçişteki en büyük değişiklik, derleme sisteminin Make'den CMake'e kademeli olarak geçişiydi. Öte yandan, küçük sürümlerin yinelenmesi genellikle yeni özelliklerin eklenmesini veya yeni çiplerin desteklenmesini gerektirir.
Kararlı sürümler ile GitHub dalları arasındaki ilişkiyi ayırt etmek ve anlamak önemlidir. v*.* veya v*.*.* olarak etiketlenen sürümler, Espressif tarafından yapılan dahili testlerin tamamını geçen kararlı sürümleri temsil eder. Düzeltildikten sonra aynı sürümün kodu, takım zinciri ve yayın belgeleri değişmeden kalır. Ancak GitHub şubeleri (örneğin, sürüm/v4.3 şubesi), genellikle günlük olarak sık sık kod işleme tabi tutulur. Bu nedenle, aynı dalın altındaki iki kod parçacığı farklı olabilir ve bu da geliştiricilerin kodlarını buna göre derhal güncellemelerini gerektirebilir.
4.1.2 ESP-IDF Git İş Akışı
Espressif, ESP-IDF için aşağıda özetlenen belirli bir Git iş akışını izler:
· Ana geliştirme dalı olarak hizmet veren master dalı üzerinde yeni değişiklikler yapıldı. Ana daldaki ESP-IDF sürümü her zaman bir -dev taşır tag v4.3-dev gibi şu anda geliştirilme aşamasında olduğunu belirtmek için. Ana daldaki değişiklikler ilk önce yeniden yapılacakviewEspressif'in dahili deposunda düzenlenip test edildi ve otomatik test tamamlandıktan sonra GitHub'a aktarıldı.
· Yeni bir sürüm, ana dalda özellik geliştirmeyi tamamladığında ve beta testine girme kriterlerini karşıladığında, sürüm/v4.3 gibi yeni bir dala geçiş yapar. Ayrıca bu yeni şube tagv4.3-beta1 gibi bir ön yayın sürümü olarak geliştirildi. Geliştiriciler, şubelerin tam listesine erişmek için GitHub platformuna başvurabilir ve tags ESP-IDF için. Beta sürümünde (yayın öncesi sürüm) hala önemli sayıda bilinen sorun bulunabileceğini unutmamak önemlidir. Beta sürümü sürekli testlerden geçtiğinden hem bu sürüme hem de ana dalına aynı anda hata düzeltmeleri eklenmektedir. Bu arada ana şube bir sonraki sürüm için yeni özellikler geliştirmeye başlamış olabilir. Test neredeyse tamamlandığında, şubeye v4.3-rc1 gibi resmi sürüm için potansiyel bir aday olduğunu belirten bir sürüm adayı (rc) etiketi eklenir. Bu saattetage, şube yayın öncesi bir sürüm olarak kalır.
· Büyük bir hata keşfedilmezse veya bildirilmezse, yayın öncesi sürüm sonunda bir ana sürüm etiketi (örn. v5.0) veya bir alt sürüm etiketi (örn. v4.3) alır ve belgelenen resmi bir sürüm haline gelir. sürüm notları sayfasında. Daha sonra bu sürümde tespit edilen hatalar sürüm dalında düzeltilir. Manuel test tamamlandıktan sonra şubeye, sürüm notları sayfasına da yansıtılan bir hata düzeltme sürüm etiketi (ör. v4.3.2) atanır.
Bölüm 4. Geliştirme Ortamını Kurma 33

4.1.3 Uygun Sürümün Seçilmesi
ESP-IDF, v32 sürümünden itibaren ESP3-C4.3'ü resmen desteklemeye başladığından ve bu kitabın yazıldığı sırada v4.4 henüz resmi olarak yayınlanmadığından, bu kitapta kullanılan sürüm, revize edilmiş bir sürüm olan v4.3.2'dir. v4.3'ün. Ancak, siz bu kitabı okuduğunuzda v4.4 veya daha yeni sürümlerin halihazırda mevcut olabileceğini unutmamak önemlidir. Bir sürüm seçerken aşağıdakileri öneririz:
· Giriş seviyesi geliştiriciler için, kararlı v4.3 sürümünü veya eski sürümle uyumlu revize edilmiş sürümünü seçmeniz önerilir.ampBu kitapta kullanılan le sürümü.
· Seri üretim amacıyla, en güncel teknik destekten yararlanmak için en son kararlı sürümün kullanılması tavsiye edilir.
· Yeni çipler denemek veya yeni ürün özelliklerini keşfetmek istiyorsanız lütfen ana şubeyi kullanın. En son sürüm, en yeni özelliklerin tümünü içerir, ancak bilinen veya bilinmeyen hataların bulunabileceğini unutmayın.
· Kullanılan kararlı sürüm istenen yeni özellikleri içermiyorsa ve ana dalla ilişkili riskleri en aza indirmek istiyorsanız, sürüm/v4.4 dalı gibi ilgili sürüm dalını kullanmayı düşünün. Espressif'in GitHub deposu ilk olarak sürüm/v4.4 dalını oluşturacak ve ardından tüm özellik geliştirme ve testleri tamamladıktan sonra bu dalın belirli bir geçmiş anlık görüntüsüne dayalı olarak kararlı v4.4 sürümünü yayınlayacak.
4.1.4 Üzeriview ESP-IDF SDK Dizini
ESP-IDF SDK iki ana dizinden oluşur: esp-idf ve .espressif. İlki ESP-IDF deposunun kaynak kodunu içerir files ve derleme komut dosyaları, ikincisi ise esas olarak derleme araç zincirlerini ve diğer yazılımları depolar. Bu iki dizine aşina olmak, geliştiricilerin mevcut kaynakları daha iyi kullanmalarına ve geliştirme sürecini hızlandırmalarına yardımcı olacaktır. ESP-IDF'nin dizin yapısı aşağıda açıklanmıştır:
(1) ESP-IDF veri havuzu kod dizini (/esp/esp-idf), Şekil 4.2'de gösterildiği gibi.
A. Bileşen dizini bileşenleri
Bu çekirdek dizin, ESP-IDF'nin çok sayıda temel yazılım bileşenini entegre eder. Bu dizindeki bileşenlere güvenilmeden hiçbir proje kodu derlenemez. Çeşitli Espressif yongaları için sürücü desteği içerir. Çevre birimleri için LL kitaplığı ve HAL kitaplığı arayüzlerinden üst düzey Sürücü ve Sanal'a kadar File Sistem (VFS) katmanı desteği sayesinde geliştiriciler, geliştirme ihtiyaçları için farklı seviyelerde uygun bileşenleri seçebilirler. ESP-IDF ayrıca TCP/IP, HTTP, MQTT gibi birden fazla standart ağ protokolü yığınını da destekler. WebSoket vb. Geliştiriciler, ağ uygulamaları oluşturmak için Soket gibi tanıdık arayüzleri kullanabilirler. Bileşenler anlaşılırlık sağlar
34 ESP32-C3 Kablosuz Macerası: Kapsamlı IoT Kılavuzu

Şekil 4.2. ESP-IDF depo kodu dizini
Gelişmiş işlevsellik ve uygulamalara kolayca entegre edilebilmesi, geliştiricilerin yalnızca iş mantığına odaklanmasına olanak tanır. Bazı ortak bileşenler şunları içerir: · sürücü: Bu bileşen, çeşitli Espressif için çevresel sürücü programlarını içerir.
GPIO, I2C, SPI, UART, LEDC (PWM) gibi çip serileri. Bu bileşendeki çevre birimi sürücü programları çipten bağımsız soyut arayüzler sunar. Her çevre biriminin ortak bir başlığı vardır file (gpio.h gibi), çipe özgü farklı destek sorularıyla uğraşma ihtiyacını ortadan kaldırır. · esp_wifi: Wi-Fi, özel bir çevre birimi olarak ayrı bir bileşen olarak ele alınır. Çeşitli Wi-Fi sürücü modlarının başlatılması, parametre yapılandırması ve olay işleme gibi birden fazla API içerir. Bu bileşenin belirli işlevleri statik bağlantı kitaplıkları biçiminde sağlanır. ESP-IDF ayrıca kullanım kolaylığı için kapsamlı sürücü belgeleri de sağlar.
Bölüm 4. Geliştirme Ortamını Kurma 35

· freertos: Bu bileşen FreeRTOS kodunun tamamını içerir. Bu işletim sistemi için kapsamlı destek sağlamanın yanı sıra Espressif, desteğini çift çekirdekli yongalara da genişletti. ESP32 ve ESP32-S3 gibi çift çekirdekli yongalar için kullanıcılar belirli çekirdekler üzerinde görevler oluşturabiliyor.
B. Belge dizini belgeleri
Bu dizin, Başlangıç ​​Kılavuzu, API Referans Kılavuzu, Geliştirme Kılavuzu vb. dahil olmak üzere ESP-IDF ile ilgili geliştirme belgelerini içerir.
NOT Otomatik araçlarla derlendikten sonra bu dizinin içeriği https://docs.espressif.com/projects/esp-idf adresinde dağıtılır. Lütfen belge hedefini ESP32-C3 olarak değiştirdiğinizden ve belirtilen ESP-IDF sürümünü seçtiğinizden emin olun.
C. Komut dosyası aracı araçları
Bu dizin, idf.py gibi yaygın olarak kullanılan derleme ön uç araçlarını ve monitör terminal aracı idf_monitor.py vb. içerir. Cmake alt dizini ayrıca çekirdek komut dosyasını da içerir. fileESP-IDF derleme kurallarının uygulanması için temel görevi gören derleme sisteminin bir parçasıdır. Ortam değişkenleri eklenirken, araçlar dizini içindeki içerikler sistem ortam değişkenine eklenir ve böylece idf.py'nin doğrudan proje yolu altında yürütülmesine olanak sağlanır.
D. Eskiample program dizini examples
Bu dizin geniş bir ESP-IDF ex koleksiyonu içerir.ampBileşen API'lerinin kullanımını gösteren dosya programları. Eskiampdosyalar, kategorilerine göre çeşitli alt dizinler halinde düzenlenmiştir:
· get-started: Bu alt dizin, giriş seviyesi örneklerini içerirampKullanıcıların temel bilgileri kavramasına yardımcı olmak için "merhaba dünya" ve "göz kırp" gibi dosyalar.
· bluetooth: Bluetooth ile ilgili eskileri bulabilirsinizampBluetooth LE Mesh, Bluetooth LE HID, BluFi ve daha fazlasını içeren dosyalar burada.
· wifi: Bu alt dizin Wi-Fi ex'e odaklanırampWi-Fi SoftAP, Wi-Fi Station, espnow gibi temel programların yanı sıra özel iletişim protokolü ex dahil dosyalarampEspressif'ten dosyalar. Aynı zamanda birden fazla uygulama katmanı içerir.ampIperf, Sniffer ve Smart Config gibi Wi-Fi tabanlı dosyalar.
· çevre birimleri: Bu kapsamlı alt dizin ayrıca çevre birimleri adlarına göre çok sayıda alt klasöre bölünmüştür. Esas olarak çevresel sürücü ex içerirampEspressif çipleri için dosyalar, her bir ex ile birlikteampbirkaç alt ex içeren dosyaampLes. Örneğin, gpio alt dizini iki eski içerirampDosyalar: GPIO ve GPIO matris klavyesi. Tüm eski sevgililerin olmadığını unutmamak önemlidir.ampBu dizindeki dosyalar ESP32-C3 için geçerlidir.
36 ESP32-C3 Kablosuz Macerası: Kapsamlı IoT Kılavuzu

Örneğinample, eskiampusb/ana bilgisayardaki dosyalar yalnızca USB Ana Bilgisayar donanımına (ESP32-S3 gibi) sahip çevre birimleri için geçerlidir ve ESP32-C3'te bu çevre birimi yoktur. Derleme sistemi genellikle hedefi ayarlarken bilgi istemleri sağlar. BENİOKU file her eski sevgilininampDosya desteklenen çipleri listeler. · protokoller: Bu alt dizin şunları içerir:ampMQTT, HTTP, HTTP Sunucusu, PPPoS, Modbus, mDNS, SNTP dahil çeşitli iletişim protokollerine yönelik dosyalar, örneğin geniş bir iletişim protokolü aralığını kapsarampIoT geliştirme için gerekli dosyalar. · provizyon: Burada eski provizyonu bulacaksınızampWi-Fi sağlama ve Bluetooth LE sağlama gibi farklı yöntemlere yönelik dosyalar. · sistem: Bu alt dizin, sistem hata ayıklamasını içerir.ampdosyalar (örn. yığın izleme, çalışma zamanı izleme, görev izleme), güç yönetimiampdosyalar (örneğin, çeşitli uyku modları, ortak işlemciler) ve örneğinampKonsol terminali, olay döngüsü ve sistem zamanlayıcısı gibi ortak sistem bileşenleriyle ilgili dosyalar. · depolama: Bu alt dizinde eskileri keşfedeceksiniz.amphepsinden daha fazlası file ESP-IDF tarafından desteklenen sistemler ve depolama mekanizmaları (Flash, SD kart ve diğer depolama ortamlarının okunması ve yazılması gibi) ve ayrıca eskiampGeçici olmayan depolama (NVS), FatFS, SPIFFS ve diğer dosyalar file sistem işlemleri. · güvenlik: Bu alt dizin şunları içerir:ampFlash şifrelemeyle ilgili dosyalar. (2) ESP-IDF derleme aracı zinciri dizini (/.espressif), Şekil 4.3'te gösterildiği gibi.
Şekil 4.3. ESP-IDF derleme aracı zinciri dizini
Bölüm 4. Geliştirme Ortamını Kurma 37

A. Yazılım dağıtım dizini dağıtımı
ESP-IDF takım zinciri ve diğer yazılımlar sıkıştırılmış paketler halinde dağıtılır. Kurulum işlemi sırasında, kurulum aracı önce sıkıştırılmış paketi dist dizinine indirir ve ardından onu belirtilen dizine çıkarır. Kurulum tamamlandıktan sonra bu dizindeki içerik güvenli bir şekilde kaldırılabilir.
B. Python sanal ortam dizini python env
ESP-IDF'nin farklı sürümleri, Python paketlerinin belirli sürümlerine dayanır. Bu paketlerin doğrudan aynı ana bilgisayara kurulması, paket sürümleri arasında çakışmalara yol açabilir. Bu sorunu çözmek için ESP-IDF, farklı paket sürümlerini izole etmek amacıyla Python sanal ortamlarını kullanır. Bu mekanizma sayesinde geliştiriciler aynı ana makineye birden fazla ESP-IDF sürümü yükleyebilir ve farklı ortam değişkenlerini içe aktararak bunlar arasında kolayca geçiş yapabilir.
C. ESP-IDF derleme aracı zincir dizini araçları
Bu dizin esas olarak CMake araçları, Ninja oluşturma araçları ve son yürütülebilir programı oluşturan gcc araç zinciri gibi ESP-IDF projelerini derlemek için gereken çapraz derleme araçlarını içerir. Ek olarak bu dizin, ilgili başlıkla birlikte C/C++ dilinin standart kütüphanesini de barındırır. fileS. Bir program bir sistem başlığına başvuruyorsa file #include'ı beğen derleme aracı zinciri stdio.h dosyasını bulacaktır. file bu dizin içinde.
4.2 ESP-IDF Geliştirme Ortamını Kurma
ESP-IDF geliştirme ortamı, Windows, Linux ve macOS gibi genel işletim sistemlerini destekler. Bu bölümde her sistemde geliştirme ortamının nasıl kurulacağı anlatılacaktır. Burada detaylı olarak tanıtılacak olan ESP32-C3'ün Linux sistemi üzerinde geliştirilmesi tavsiye edilmektedir. Geliştirme araçlarının benzerliğinden dolayı birçok talimat platformlar arasında uygulanabilir. Bu nedenle bu bölümün içeriğini dikkatlice okumanız tavsiye edilir.
NOT Bu bölümde bahsedilen komutları sağlayan https://bookc3.espressif.com/esp32c3 adresinde bulunan çevrimiçi belgelere başvurabilirsiniz.
4.2.1 Linux'ta ESP-IDF Geliştirme Ortamını Kurma
ESP-IDF geliştirme ortamı için gereken GNU geliştirme ve hata ayıklama araçları Linux sistemine özgüdür. Ayrıca Linux'taki komut satırı terminali güçlü ve kullanıcı dostudur, bu da onu ESP32-C3 geliştirme için ideal bir seçim haline getirir. Yapabilirsiniz
38 ESP32-C3 Kablosuz Macerası: Kapsamlı IoT Kılavuzu

tercih ettiğiniz Linux dağıtımını seçin ancak Ubuntu veya diğer Debian tabanlı sistemleri kullanmanızı öneririz. Bu bölüm, Ubuntu 20.04'te ESP-IDF geliştirme ortamının kurulmasına ilişkin rehberlik sağlar.
1. Gerekli paketleri yükleyin
Yeni bir terminal açın ve gerekli tüm paketleri kurmak için aşağıdaki komutu uygulayın. Komut, halihazırda kurulu olan paketleri otomatik olarak atlayacaktır.
$ sudo apt-get install git wget flex bison gperf python3 python3-pip python3setuptools cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0
İPUÇLARI Yukarıdaki komut için yönetici hesabını ve şifresini kullanmanız gerekir. Varsayılan olarak şifre girilirken hiçbir bilgi görüntülenmez. Prosedüre devam etmek için “Enter” tuşuna basmanız yeterlidir.
Git, ESP-IDF'deki bir anahtar kod yönetim aracıdır. Geliştirme ortamını başarıyla kurduktan sonra git log komutunu kullanarak şunları yapabilirsiniz: view ESP-IDF'nin oluşturulmasından bu yana yapılan tüm kod değişiklikleri. Ayrıca Git, ESP-IDF'de belirli sürümlere karşılık gelen doğru araç zincirini kurmak için gerekli olan sürüm bilgilerini onaylamak için de kullanılır. Git'in yanı sıra diğer önemli sistem araçları arasında Python bulunmaktadır. ESP-IDF, Python'da yazılmış çok sayıda otomasyon komut dosyasını içerir. CMake, Ninja-build ve Ccache gibi araçlar C/C++ projelerinde yaygın olarak kullanılır ve ESP-IDF'de varsayılan kod derleme ve oluşturma araçları olarak hizmet eder. libusb-1.0-0 ve dfu-util, USB seri iletişim ve ürün yazılımı yazma için kullanılan ana sürücülerdir. Yazılım paketleri yüklendikten sonra apt show'u kullanabilirsiniz. Her paketin ayrıntılı açıklamalarını elde etmek için komut. Eski içinampDosyada Git aracının açıklama bilgilerini yazdırmak için apt show git'i kullanın.
S: Python sürümü desteklenmiyorsa ne yapmalısınız? C: ESP-IDF v4.3, v3.6'dan daha düşük olmayan bir Python sürümü gerektirir. Ubuntu'nun daha eski sürümleri için lütfen Python'un daha yüksek bir sürümünü manuel olarak indirip yükleyin ve Python3'ü varsayılan Python ortamı olarak ayarlayın. Güncelleme alternatifleri python anahtar kelimesini arayarak ayrıntılı talimatlar bulabilirsiniz.
2. ESP-IDF depo kodunu indirin
Bir terminal açın ve mkdir komutunu kullanarak ana dizininizde esp adında bir klasör oluşturun. İsterseniz klasör için farklı bir ad seçebilirsiniz. Klasöre girmek için cd komutunu kullanın.
Bölüm 4. Geliştirme Ortamını Kurma 39

$ mkdir -p /esp $ cd /esp
Aşağıda gösterildiği gibi ESP-IDF depo kodunu indirmek için git clone komutunu kullanın:
$ git clone -b v4.3.2 –özyinelemeli https://github.com/espressif/esp-idf.git
Yukarıdaki komutta -b v4.3.2 parametresi indirilecek sürümü belirtir (bu durumda sürüm 4.3.2). –recursive parametresi, ESP-IDF'nin tüm alt depolarının yinelemeli olarak indirilmesini sağlar. Alt depolarla ilgili bilgileri .gitmodules dosyasında bulabilirsiniz. file.
3. ESP-IDF geliştirme araç zincirini yükleyin
Espressif, araç zincirini indirmek ve yüklemek için otomatik bir install.sh komut dosyası sağlar. Bu komut dosyası, geçerli ESP-IDF sürümünü ve işletim sistemi ortamını kontrol eder ve ardından Python araç paketlerinin ve derleme aracı zincirlerinin uygun sürümünü indirip yükler. Araç zincirinin varsayılan kurulum yolu /.espressif'tir. Tek yapmanız gereken esp-idf dizinine gidip install.sh dosyasını çalıştırmak.
$ cd /esp/esp-idf $ ./install.sh
Takım zincirini başarıyla kurarsanız terminal şunu gösterecektir:
Tamamdır!
Bu noktada ESP-IDF geliştirme ortamını başarıyla kurdunuz.
4.2.2 Windows'ta ESP-IDF Geliştirme Ortamını Kurma
1. ESP-IDF araçları yükleyicisini indirin
İPUÇLARI ESP-IDF geliştirme ortamını Windows 10 veya üzeri sürümlerde kurmanız önerilir. Yükleyiciyi https://dl.espressif.com/dl/esp-idf/ adresinden indirebilirsiniz. Yükleyici aynı zamanda açık kaynaklı bir yazılımdır ve kaynak kodu viewhttps: //github.com/espressif/idf-installer adresinde bulunmaktadır.
· Çevrimiçi ESP-IDF araçları yükleyicisi
Bu yükleyici nispeten küçüktür, yaklaşık 4 MB boyutundadır ve diğer paketler ve kodlar yükleme işlemi sırasında indirilecektir. AvantajtagÇevrimiçi yükleyicinin avantajı, kurulum işlemi sırasında yalnızca yazılım paketlerinin ve kodların isteğe bağlı olarak indirilebilmesi değil, aynı zamanda mevcut tüm ESP-IDF sürümlerinin ve GitHub kodunun en son dalının (ana dal gibi) kurulumuna da izin vermesidir. . Dezavantajtage, kurulum işlemi sırasında bir ağ bağlantısı gerektirmesidir, bu da ağ sorunları nedeniyle kurulumun başarısız olmasına neden olabilir.
40 ESP32-C3 Kablosuz Macerası: Kapsamlı IoT Kılavuzu

· Çevrimdışı ESP-IDF araçları yükleyicisi Bu yükleyici daha büyüktür, yaklaşık 1 GB boyutundadır ve ortam kurulumu için gereken tüm yazılım paketlerini ve kodları içerir. Ana avantajtagÇevrimdışı yükleyicinin en önemli özelliği, İnternet erişimi olmayan bilgisayarlarda kullanılabilmesi ve genellikle daha yüksek kurulum başarı oranına sahip olmasıdır. Çevrimdışı yükleyicinin yalnızca v*.* veya v*.*.* ile tanımlanan ESP-IDF'nin kararlı sürümlerini yükleyebileceği unutulmamalıdır.
2. ESP-IDF araçları yükleyicisini çalıştırın Yükleyicinin uygun bir sürümünü indirdikten sonra (örneğin ESP-IDF Tools Çevrimdışı 4.3.2'yi kullanın)ample burada), exe'ye çift tıklayın file ESP-IDF kurulum arayüzünü başlatmak için. Aşağıda, çevrimdışı yükleyiciyi kullanarak ESP-IDF kararlı sürümü v4.3.2'nin nasıl kurulacağı gösterilmektedir.
(1) Şekil 4.4'te gösterilen “Kurulum dilini seçin” arayüzünde, açılır listeden kullanılacak dili seçin.
Şekil 4.4. “Kurulum dilini seçin” arayüzü (2) Dili seçtikten sonra, “Lisans sözleşmesi” arayüzünü açmak için “Tamam”a tıklayın
(bkz. Şekil 4.5). Kurulum lisans sözleşmesini dikkatlice okuduktan sonra “Sözleşmeyi kabul ediyorum” seçeneğini seçin ve “İleri” butonuna tıklayın.
Şekil 4.5. “Lisans sözleşmesi” arayüzü Bölüm 4. Geliştirme Ortamını Ayarlama 41

(3) Yenidenview “Kurulum öncesi sistem kontrolü” arayüzündeki sistem konfigürasyonunu (bkz. Şekil 4.6). Windows sürümünü ve yüklü antivirüs yazılımı bilgilerini kontrol edin. Tüm yapılandırma öğeleri normalse “İleri”ye tıklayın. Aksi takdirde, önemli öğelere dayalı çözümler için “Tam günlük”e tıklayabilirsiniz.
Şekil 4.6. “Kurulumdan önce sistem kontrolü” arayüzü İPUÇLARI
Yardım için günlükleri https://github.com/espressif/idf-installer/issues adresine gönderebilirsiniz. (4) ESP-IDF kurulum dizinini seçin. Burada gösterildiği gibi D:/.espressif'i seçin.
Şekil 4.7 ve “İleri”ye tıklayın. Lütfen buradaki .espressif dosyasının gizli bir dizin olduğunu unutmayın. Kurulum tamamlandıktan sonra şunları yapabilirsiniz: view bu dizinin belirli içeriklerini açarak file yönetici ve gizli öğeleri görüntüleme.
Şekil 4.7. ESP-IDF kurulum dizinini seçin 42 ESP32-C3 Kablosuz Macerası: Kapsamlı IoT Kılavuzu

(5) Şekil 4.8'de gösterildiği gibi kurulması gereken bileşenleri kontrol edin. Varsayılan seçeneği, yani kurulumu tamamlamayı kullanmanız ve ardından “İleri” ye tıklamanız önerilir.
Şekil 4.8. Kurulacak bileşenleri seçin (6) Kurulacak bileşenleri onaylayın ve otomatik kurulumu başlatmak için “Yükle”ye tıklayın.
Şekil 4.9'da gösterildiği gibi durma süreci. Kurulum işlemi onlarca dakika sürebilir ve kurulum işleminin ilerleme çubuğu Şekil 4.10'da gösterilmektedir. Lütfen sabırla bekleyin.
Şekil 4.9. Kurulum için hazırlık (7) Kurulum tamamlandıktan sonra “ESP-IDF'yi kaydedin” seçeneğinin kontrol edilmesi önerilir.
Antivirüs yazılımının silinmesini önlemek için Windows Defender istisnaları olarak çalıştırılabilir araçlar…” fileS. Hariç tutma öğeleri eklemek, antivirüs tarafından sık sık yapılan taramaları da atlayabilir
Bölüm 4. Geliştirme Ortamını Kurma 43

Şekil 4.10. Kurulum ilerleme çubuğu yazılımı, Windows sisteminin kod derleme verimliliğini büyük ölçüde artırır. Şekil 4.11'de gösterildiği gibi geliştirme ortamının kurulumunu tamamlamak için “Son”a tıklayın. “ESP-IDF PowerShell ortamını çalıştır” veya “ESP-IDF komut istemini çalıştır” seçeneğini işaretlemeyi seçebilirsiniz. Geliştirme ortamının normal şekilde çalıştığından emin olmak için kurulumdan hemen sonra derleme penceresini çalıştırın.
Şekil 4.11. Kurulum tamamlandı (8) Program listesinde kurulu geliştirme ortamını açın (ESP-IDF 4.3
CMD veya ESP-IDF 4.3 PowerShell terminali (Şekil 4.12'de gösterildiği gibi) ve ESP-IDF ortam değişkeni, terminalde çalışırken otomatik olarak eklenecektir. Bundan sonra işlemler için idf.py komutunu kullanabilirsiniz. Açılan ESP-IDF 4.3 CMD, Şekil 4.13'te gösterilmektedir. 44 ESP32-C3 Kablosuz Macerası: Kapsamlı IoT Kılavuzu

Şekil 4.12. Geliştirme ortamı yüklü
Şekil 4.13. ESP-IDF 4.3 CMD
4.2.3 Mac'te ESP-IDF Geliştirme Ortamını Kurma
ESP-IDF geliştirme ortamını Mac sistemine kurma süreci Linux sistemindekiyle aynıdır. Depo kodunu indirme ve araç zincirini kurma komutları tamamen aynıdır. Yalnızca bağımlılık paketlerini yükleme komutları biraz farklıdır. 1. Bağımlılık paketlerini yükleyin Bir terminal açın ve aşağıdaki komutu çalıştırarak Python paket yönetim aracı olan pip'i yükleyin:
% Sudo kolay kurulum pip'i
Aşağıdaki komutu çalıştırarak macOS için bir paket yönetim aracı olan Homebrew'u yükleyin:
% /bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)”
Aşağıdaki komutu çalıştırarak gerekli bağımlılık paketlerini yükleyin:
% demlemek python3 cmake ninja ccache dfu-util'i yükleyin
2. ESP-IDF depo kodunu indirin ESP-IDF depo kodunu indirmek için bölüm 4.2.1'de verilen talimatları izleyin. Adımlar Linux sistemine indirmeyle aynıdır.
Bölüm 4. Geliştirme Ortamını Kurma 45

3. ESP-IDF geliştirme araç zincirini yükleyin
ESP-IDF geliştirme araç zincirini kurmak için bölüm 4.2.1'de verilen talimatları izleyin. Adımlar Linux sistemine kurulumla aynıdır.
4.2.4 VS Kodunu Yükleme
Varsayılan olarak, ESP-IDF SDK'sı bir kod düzenleme aracı içermez (ancak Windows için en son ESP-IDF yükleyicisi, ESP-IDF Eclipse'i yükleme seçeneği sunar). Kodu düzenlemek ve ardından terminal komutlarını kullanarak derlemek için seçtiğiniz herhangi bir metin düzenleme aracını kullanabilirsiniz.
Popüler kod düzenleme araçlarından biri, kullanıcı dostu bir arayüze sahip, ücretsiz ve zengin özelliklere sahip bir kod düzenleyici olan VS Code'dur (Visual Studio Code). Çeşitli sunuyor plugins kodda gezinme, sözdizimi vurgulama, Git sürüm kontrolü ve terminal entegrasyonu gibi işlevler sağlayan. Ayrıca Espressif, VS Code için Espressif IDF adlı, proje yapılandırmasını ve hata ayıklamayı basitleştiren özel bir eklenti geliştirmiştir.
Geçerli klasörü VS Code'da hızlı bir şekilde açmak için terminaldeki code komutunu kullanabilirsiniz. Alternatif olarak, sistemin varsayılan terminal konsolunu VS Code içerisinde açmak için Ctrl+ kısayolunu kullanabilirsiniz.
İPUÇLARI ESP32-C3 kod geliştirme için VS Code kullanılması tavsiye edilir. VS Code'un en son sürümünü https://code.visualstudio.com/ adresinden indirip yükleyin.
4.2.5 Üçüncü Taraf Geliştirme Ortamlarına Giriş
Esas olarak C dilini kullanan resmi ESP-IDF geliştirme ortamına ek olarak ESP32-C3, diğer ana programlama dillerini ve çok çeşitli üçüncü taraf geliştirme ortamlarını da destekler. Bazı dikkate değer seçenekler şunlardır:
Arduino: ESP32-C3 de dahil olmak üzere çeşitli mikrokontrolörleri destekleyen, hem donanım hem de yazılım için açık kaynaklı bir platform.
C++ dilini kullanır ve genellikle Arduino dili olarak adlandırılan basitleştirilmiş ve standartlaştırılmış bir API sunar. Arduino, prototip geliştirme ve eğitim bağlamlarında yaygın olarak kullanılmaktadır. Genişletilebilir bir yazılım paketi ve kolay derleme ve flaşlamaya olanak tanıyan bir IDE sağlar.
MicroPython: Gömülü mikrodenetleyici platformlarında çalışmak üzere tasarlanmış bir Python 3 dil yorumlayıcısı.
Basit bir komut dosyası dili ile ESP32-C3'ün çevresel kaynaklarına (UART, SPI ve I2C gibi) ve iletişim işlevlerine (Wi-Fi ve Bluetooth LE gibi) doğrudan erişebilir.
46 ESP32-C3 Kablosuz Macerası: Kapsamlı IoT Kılavuzu

Bu, donanım etkileşimini basitleştirir. MicroPython, Python'un kapsamlı matematiksel işlem kitaplığıyla birleştiğinde, karmaşık algoritmaların ESP32-C3 üzerinde uygulanmasına olanak tanıyarak yapay zeka ile ilgili uygulamaların geliştirilmesini kolaylaştırır. Bir yazı dili olarak tekrarlanan derlemelere gerek yoktur; değişiklikler yapılabilir ve komut dosyaları doğrudan çalıştırılabilir.
NodeMCU: ESP serisi çipler için geliştirilmiş bir LUA dil yorumlayıcısıdır.
ESP yongalarının hemen hemen tüm çevresel işlevlerini destekler ve MicroPython'dan daha hafiftir. MicroPython'a benzer şekilde NodeMCU, tekrarlanan derleme ihtiyacını ortadan kaldıran bir komut dosyası dili kullanır.
Ayrıca ESP32-C3, NuttX ve Zephyr işletim sistemlerini de destekler. NuttX, POSIX uyumlu arayüzler sağlayan ve uygulama taşınabilirliğini artıran gerçek zamanlı bir işletim sistemidir. Zephyr, IoT uygulamaları için özel olarak tasarlanmış küçük, gerçek zamanlı bir işletim sistemidir. Yavaş yavaş kapsamlı bir yazılım ekosistemine dönüşen, IoT geliştirmede gerekli olan çok sayıda yazılım kütüphanesini içerir.
Bu kitapta yukarıda belirtilen geliştirme ortamlarına ilişkin ayrıntılı kurulum talimatları yer almamaktadır. İlgili belgeleri ve talimatları izleyerek gereksinimlerinize göre bir geliştirme ortamı kurabilirsiniz.
4.3 ESP-IDF Derleme Sistemi
4.3.1 Derleme Sisteminin Temel Kavramları
Bir ESP-IDF projesi, bir giriş işlevine ve birden fazla bağımsız işlevsel bileşene sahip bir ana programın koleksiyonudur. Eski içinampLED anahtarlarını kontrol eden bir proje esas olarak bir giriş programı ana programı ve GPIO'yu kontrol eden bir sürücü bileşeninden oluşur. LED uzaktan kumandayı gerçekleştirmek istiyorsanız Wi-Fi, TCP/IP protokol yığını vb. eklemeniz gerekir.
Derleme sistemi çalıştırılabilir dosyaları derleyebilir, bağlayabilir ve oluşturabilir fileBir dizi oluşturma kuralı aracılığıyla kod için s (.bin). ESP-IDF v4.0 ve üzeri sürümlerin derleme sistemi varsayılan olarak CMake'i temel alır ve kodun derleme davranışını kontrol etmek için CMakeLists.txt derleme betiği kullanılabilir. ESP-IDF derleme sistemi, CMake'in temel sözdizimini desteklemenin yanı sıra bir dizi varsayılan derleme kuralını ve CMake işlevini de tanımlar ve basit ifadelerle derleme komut dosyasını yazabilirsiniz.
4.3.2 Proje File Yapı
Proje, bir giriş programının ana, kullanıcı tanımlı bileşenlerini ve fileDerleme komut dosyaları, yapılandırma gibi yürütülebilir uygulamalar oluşturmak için gereklidir
Bölüm 4. Geliştirme Ortamını Kurma 47

files, bölüm tabloları vb. Projeler kopyalanabilir ve aktarılabilir ve aynı yürütülebilir dosya file ESP-IDF geliştirme ortamının aynı sürümüne sahip makinelerde derlenebilir ve oluşturulabilir. Tipik bir ESP-IDF projesi file yapısı Şekil 4.14'te gösterilmektedir.
Şekil 4.14. Tipik ESP-IDF projesi file yapı ESP-IDF, ESP32, ESP32-S serisi, ESP32-C serisi, ESP32-H serisi vb. dahil olmak üzere Espressif'in birden fazla IoT çipini desteklediğinden, kodu derlemeden önce bir hedefin belirlenmesi gerekir. Hedef, hem uygulama programını çalıştıran donanım aygıtı hem de derleme sisteminin yapı hedefidir. İhtiyaçlarınıza bağlı olarak projeniz için bir veya daha fazla hedef belirleyebilirsiniz. Eski içinampDosyada, idf.py set-target esp32c3 komutunu kullanarak derleme hedefini ESP32-C3 olarak ayarlayabilirsiniz; bu sırada ESP32C3 için varsayılan parametreler ve derleme aracı zincir yolu yüklenecektir. Derlemeden sonra ESP32C3 için çalıştırılabilir bir program oluşturulabilir. Farklı bir hedef belirlemek için set-target komutunu da tekrar çalıştırabilirsiniz; derleme sistemi otomatik olarak temizlenecek ve yeniden yapılandırılacaktır. Bileşenler
ESP-IDF'deki bileşenler, derleme sistemi içinde yönetilen modüler ve bağımsız kod birimleridir. Varsayılan olarak bileşen adını temsil eden klasör adı ile klasörler halinde düzenlenirler. Her bileşenin kendi derleme komut dosyası vardır.

derleme parametrelerini ve bağımlılıklarını belirtir. Derleme işlemi sırasında bileşenler ayrı statik kitaplıklarda (.a) derlenir. files) ve sonunda uygulama programını oluşturmak için diğer bileşenlerle birleştirilir.
ESP-IDF, işletim sistemi, çevre birimi sürücüleri ve ağ protokol yığını gibi temel işlevleri bileşenler biçiminde sağlar. Bu bileşenler, ESP-IDF kök dizininde bulunan bileşenler dizininde saklanır. Geliştiricilerin bu bileşenleri myProject'in bileşenler dizinine kopyalamasına gerek yoktur. Bunun yerine, yalnızca projenin CMakeLists.txt dosyasında bu bileşenlerin bağımlılık ilişkilerini belirtmeleri gerekir. file REQUIRES veya PRIV_REQUIRES direktiflerini kullanarak. Derleme sistemi gerekli bileşenleri otomatik olarak bulup derleyecektir.
Bu nedenle myProject altındaki bileşenler dizini gerekli değildir. Yalnızca projenin üçüncü taraf kitaplıkları veya kullanıcı tanımlı kodlar olabilecek bazı özel bileşenlerini dahil etmek için kullanılır. Ek olarak bileşenler, ESP-IDF dışındaki herhangi bir dizinden veya başka bir dizine kaydedilmiş açık kaynaklı bir proje gibi mevcut projeden kaynaklanabilir. Bu durumda, bileşenin yolunu yalnızca kök dizin altındaki CMakeLists.txt dosyasında EXTRA_COMPONENT_DIRS değişkenini ayarlayarak eklemeniz gerekir. Bu dizin, aynı adı taşıyan herhangi bir ESP-IDF bileşenini geçersiz kılarak doğru bileşenin kullanılmasını sağlar.
Giriş programı ana Proje içindeki ana dizin aynısını takip eder file diğer bileşenler (örn. bileşen1) gibi yapı. Ancak her projede bulunması gereken zorunlu bir bileşen olması nedeniyle ayrı bir öneme sahiptir. Ana dizin, projenin kaynak kodunu ve genellikle app_main olarak adlandırılan kullanıcı programının giriş noktasını içerir. Varsayılan olarak kullanıcı programının yürütülmesi bu giriş noktasından başlar. Ana bileşen, arama yolu içindeki tüm bileşenlere otomatik olarak bağlı olması bakımından da farklılık gösterir. Bu nedenle, CMakeLists.txt dosyasında REQUIRES veya PRIV_REQUIRES yönergelerini kullanarak bağımlılıkları açıkça belirtmeye gerek yoktur. file.
Yapılandırma file Projenin kök dizini bir yapılandırma içeriyor file Proje içindeki tüm bileşenlerin yapılandırma parametrelerini içeren sdkconfig adı verilir. Sdk yapılandırması file derleme sistemi tarafından otomatik olarak oluşturulur ve idf.py menuconfig komutuyla değiştirilebilir ve yeniden oluşturulabilir. Menuconfig seçenekleri esas olarak projenin Kconfig.projbuild'inden ve bileşenlerin Kconfig'inden kaynaklanır. Bileşen geliştiricileri genellikle bileşeni esnek ve yapılandırılabilir kılmak için Kconfig'e yapılandırma öğeleri ekler.
Derleme dizini Varsayılan olarak, proje içindeki derleme dizini ara öğeleri saklar files ve fi-
Bölüm 4. Geliştirme Ortamını Kurma 49

idf.py build komutu tarafından oluşturulan son yürütülebilir programlar. Genel olarak derleme dizininin içeriğine doğrudan erişmeniz gerekli değildir. ESP-IDF, derlenmiş ikili dosyayı otomatik olarak bulmak için idf.py flash komutunu kullanmak gibi, dizinle etkileşime geçmek için önceden tanımlanmış komutlar sağlar file ve belirtilen flash adresine flaşlayın veya derleme dizininin tamamını temizlemek için idf.py fullclean komutunu kullanın.
Bölümleme tablosu (partitions.csv) Her proje, flash alanını bölmek ve yürütülebilir programın ve kullanıcı veri alanının boyutunu ve başlangıç ​​adresini belirtmek için bir bölüm tablosu gerektirir. idf.py flash veya OTA yükseltme programı komutu, ürün yazılımını bu tabloya göre ilgili adrese aktaracaktır. ESP-IDF, menuconfig'te seçilebilen partitions_singleapp.csv ve partitions_two_ ota.csv gibi bileşenler/bölüm_tablosunda birkaç varsayılan bölüm tablosu sağlar.
Sistemin varsayılan bölüm tablosu projenin gereksinimlerini karşılayamıyorsa proje dizinine özel bir partitions.csv eklenebilir ve menuconfig'te seçilebilir.
4.3.3 Derleme Sisteminin Varsayılan Oluşturma Kuralları
Aynı ada sahip bileşenleri geçersiz kılma kuralları Bileşen arama işlemi sırasında derleme sistemi belirli bir sırayı izler. Önce ESP-IDF'nin dahili bileşenlerini arar, ardından kullanıcı projesinin bileşenlerini arar ve son olarak EXTRA_COMPONENT_DIRS içindeki bileşenleri arar. Birden fazla dizinin aynı ada sahip bileşenler içerdiği durumlarda, son dizinde bulunan bileşen, aynı ada sahip önceki bileşenleri geçersiz kılacaktır. Bu kural, orijinal ESP-IDF kodunu olduğu gibi korurken, kullanıcı projesi içindeki ESP-IDF bileşenlerinin özelleştirilmesine olanak tanır.
Ortak bileşenleri varsayılan olarak ekleme kuralları Bölüm 4.3.2'de belirtildiği gibi, bileşenlerin CMakeLists.txt dosyasındaki diğer bileşenlere olan bağımlılıklarını açıkça belirtmeleri gerekir. Bununla birlikte, freertos gibi ortak bileşenler, bağımlılık ilişkileri derleme komut dosyasında açıkça tanımlanmamış olsa bile, varsayılan olarak derleme sistemine otomatik olarak dahil edilir. ESP-IDF ortak bileşenleri arasında freertos, Newlib, heap, log, soc, esp_rom, esp_common, xtensa/riscv ve cxx bulunur. Bu ortak bileşenlerin kullanılması, CMakeLists.txt yazarken tekrarlanan çalışmaları önler ve onu daha kısa ve öz hale getirir.
Yapılandırma öğelerini geçersiz kılma kuralları Geliştiriciler, varsayılan bir yapılandırma ekleyerek varsayılan yapılandırma parametrelerini ekleyebilirler file projeye sdkconfig.defaults adı verildi. Eski içinampdosya, CONFIG_LOG_ ekleniyor
50 ESP32-C3 Kablosuz Macerası: Kapsamlı IoT Kılavuzu

DEFAULT_LEVEL_NONE = UART arayüzünü varsayılan olarak günlük verilerini yazdırmayacak şekilde yapılandırabilirsiniz. Ayrıca, belirli bir hedef için belirli parametrelerin ayarlanması gerekiyorsa, bir yapılandırma file sdkconfig.defaults.TARGET_NAME adlı eklenebilir; burada TARGET_NAME, esp32s2, esp32c3 vb. olabilir. Bu yapılandırma filederleme sırasında genel varsayılan yapılandırmayla sdkconfig'e aktarılır file Önce sdkconfig.defaults içe aktarılıyor, ardından hedefe özel yapılandırma geliyor filesdkconfig.defaults.esp32c3 gibi. Aynı ada sahip konfigürasyon öğelerinin olduğu durumlarda, ikinci konfigürasyon file öncekini geçersiz kılacaktır.
4.3.4 Derleme Komut Dosyasına Giriş
ESP-IDF kullanarak bir proje geliştirirken, geliştiricilerin yalnızca kaynak kodu yazmaları gerekmez, aynı zamanda proje ve bileşenler için CMakeLists.txt yazmaları da gerekir. CMakeLists.txt bir metindir filekaynak kodun derleme sürecini yönlendirmek için bir dizi derleme nesnesini, derleme yapılandırma öğesini ve komutları tanımlayan, derleme komut dosyası olarak da bilinir. ESP-IDF v4.3.2'nin derleme sistemi CMake'i temel almaktadır. Yerel CMake işlevlerini ve komutlarını desteklemenin yanı sıra, bir dizi özel işlevi de tanımlayarak derleme komut dosyaları yazmayı çok daha kolaylaştırır.
ESP-IDF'deki derleme komut dosyaları temel olarak proje derleme komut dosyalarını ve bileşen derleme komut dosyalarını içerir. Projenin kök dizininde bulunan CMakeLists.txt, tüm projenin derleme sürecine yön veren proje derleme betiği olarak adlandırılır. Temel bir proje derleme komut dosyası genellikle aşağıdaki üç satırı içerir:
1. cmake_minimum_required(VERSION 3.5) 2. include($ENV{IDF_PATH}/tools/cmake/project.cmake) 3. project(myProject)
Bunlar arasında projenin gerektirdiği minimum CMake sürüm numarasını belirtmek için kullanılan cmake_minimum_required (VERSION 3.5) ilk satıra yerleştirilmelidir. CMake'in daha yeni sürümleri genellikle eski sürümlerle geriye dönük olarak uyumludur; bu nedenle, uyumluluğu sağlamak için daha yeni CMake komutlarını kullanırken sürüm numarasını buna göre ayarlayın.
include($ENV {IDF_PATH}/tools/cmake/project.cmake), Bölüm 4.3.3'te açıklanan derleme sisteminin varsayılan oluşturma kuralları da dahil olmak üzere, ESP-IDF derleme sisteminin önceden tanımlanmış yapılandırma öğelerini ve komutlarını içe aktarır. project(myProject) projeyi kendisi yaratır ve adını belirtir. Bu ad, son çıktı ikili dosyası olarak kullanılacaktır file ad, yani myProject.elf ve myProject.bin.
Bir projenin ana bileşen de dahil olmak üzere birden fazla bileşeni olabilir. Her bileşenin üst düzey dizini bir CMakeLists.txt dosyası içerir file, buna bileşen derleme betiği denir. Bileşen derleme komut dosyaları esas olarak bileşen bağımlılıklarını, yapılandırma parametrelerini, kaynak kodunu belirtmek için kullanılır files ve başlık dahil files için
Bölüm 4. Geliştirme Ortamını Kurma 51

derleme. ESP-IDF'nin özel işlevi idf_component_register ile bir bileşen derleme komut dosyası için gereken minimum kod aşağıdaki gibidir:

1.idf_component_register(SRCS “src1.c”

2.

INCLUDE_DIRS "dahil et"

3.

bileşen1 GEREKTİRİR)

SRCS parametresi bir kaynak listesi sağlar. filebileşende, birden fazla varsa boşluklarla ayrılmış fileS. INCLUDE_DIRS parametresi genel başlığın bir listesini sağlar file Geçerli bileşene bağlı olan diğer bileşenler için arama yoluna eklenecek bileşen dizinleri. REQUIRES parametresi geçerli bileşen için ortak bileşen bağımlılıklarını tanımlar. Bileşenlerin hangi bileşenlere bağlı olduklarını açıkça belirtmeleri gerekir; örneğin bileşen2'nin bileşen1'e bağlı olması gibi. Ancak varsayılan olarak tüm bileşenlere bağlı olan ana bileşen için REQUIRES parametresi atlanabilir.

Ayrıca derleme betiğinde yerel CMake komutları da kullanılabilir. Eski içinampDosyada, set(VARIABLE “VALUE”) gibi değişkenleri ayarlamak için set komutunu kullanın.

4.3.5 Ortak Komutlara Giriş
ESP-IDF, kod derleme sürecinde CMake (proje yapılandırma aracı), Ninja (proje oluşturma aracı) ve esptool (flash aracı) kullanır. Her araç derleme, oluşturma ve flash sürecinde farklı bir rol oynar ve ayrıca farklı işletim komutlarını destekler. Kullanıcı işlemlerini kolaylaştırmak için ESP-IDF, yukarıdaki komutların hızlı bir şekilde çağrılmasına olanak tanıyan birleşik bir ön uç idf.py ekler.
idf.py'yi kullanmadan önce şunlardan emin olun:
· ESP-IDF'nin IDF_PATH ortam değişkeni mevcut terminale eklendi. · Komut yürütme dizini, projenin kök dizinidir;
proje derleme komut dosyası CMakeLists.txt.
idf.py'nin ortak komutları aşağıdaki gibidir:
· idf.py –help: komutların ve kullanım talimatlarının bir listesini görüntüleme. · idf.py hedef belirleme : taidf.py fullcleanrget derlemesinin ayarlanması, örneğin
değiştirilerek esp32c3 ile. · idf.py menuconfig: bir terminal grafik yapılandırması olan menuconfig'in başlatılması
Yapılandırma seçeneklerini seçebilen veya değiştirebilen araç ve yapılandırma sonuçları sdkconfig'e kaydedilir. file. · idf.py build: kod derlemesini başlatma. Orta düzey files ve derleme tarafından oluşturulan son yürütülebilir program, varsayılan olarak projenin yapı dizinine kaydedilecektir. Derleme süreci artımlıdır, yani yalnızca tek bir kaynak varsa file değiştirilmiş, yalnızca değiştirilmiş file bir dahaki sefere derlenecek.

52 ESP32-C3 Kablosuz Macerası: Kapsamlı IoT Kılavuzu

· idf.py clean: ara öğenin temizlenmesi fileproje derlemesi tarafından oluşturulmuştur. Bir sonraki derlemede projenin tamamı derlenmeye zorlanacak. CMake yapılandırmasının ve menuconfig tarafından yapılan yapılandırma değişikliklerinin temizleme sırasında silinmeyeceğini unutmayın.
· idf.py fullclean: tüm CMake yapılandırma çıktıları da dahil olmak üzere derleme dizininin tamamını silme fileS. Projeyi tekrar oluştururken CMake projeyi sıfırdan yapılandıracaktır. Lütfen bu komutun tümünü yinelemeli olarak sileceğini unutmayın. filederleme dizinindedir, bu nedenle dikkatli kullanın ve proje yapılandırması file silinmeyecektir.
· idf.py flash: yürütülebilir programın ikili dosyasının yanıp sönmesi file hedef ESP32-C3'e göre derlenerek oluşturulur. Seçenekler -p ve B sırasıyla seri portun cihaz adını ve yanıp sönme için baud hızını ayarlamak için kullanılır. Bu iki seçenek belirtilmediği takdirde seri port otomatik olarak algılanacak ve varsayılan baud hızı kullanılacaktır.
· idf.py monitörü: hedef ESP32-C3'ün seri port çıkışını görüntüler. -p seçeneği, ana bilgisayar tarafındaki seri bağlantı noktasının aygıt adını belirtmek için kullanılabilir. Seri port yazdırma sırasında monitörden çıkmak için Ctrl+] tuş kombinasyonuna basın.
Yukarıdaki komutlar gerektiğinde birleştirilebilir. Eski içinampDosyada, idf.py build flash monitör komutu kod derlemeyi gerçekleştirecek, flaş yapacak ve seri port monitörünü sırayla açacaktır.
ESP-IDF derleme sistemi hakkında daha fazla bilgi edinmek için https://bookc3.espressif.com/build-system adresini ziyaret edebilirsiniz.
4.4 Alıştırma: Ex'i Derlemekample Program “Yanıp Sönme”
4.4.1 Örn.ampDosya Analizi
Bu bölümde eski program olarak Blink programı ele alınacaktırampanaliz edelim file Gerçek bir projenin yapısı ve kodlama kuralları detaylı olarak anlatılmaktadır. Blink programı LED yanıp sönme efektini uygular ve proje ex dizininde bulunur.ampBir kaynak içeren les/get-started/blink file, yapılandırma files ve çeşitli derleme komut dosyaları.
Bu kitapta tanıtılan akıllı ışık projesi bu eski hikayeye dayanmaktadır.ampdosya programı. Nihayet tamamlamak için sonraki bölümlerde işlevler yavaş yavaş eklenecektir.
Kaynak kodu Tüm geliştirme sürecini göstermek için Blink programı esp32c3-iot-projects/device firmware/1 Blink'e kopyalandı.
Blink projesinin dizin yapısı fileŞekil 4.15'te gösterilmektedir.
Blink projesi yalnızca bir ana dizin içerir; bu, özel bir bileşendir.
Bölüm 4. Geliştirme Ortamını Kurma 53

Şekil 4.15. File Blink projesinin dizin yapısı

bölüm 4.3.2'de açıklandığı gibi dahil edilmelidir. Ana dizin esas olarak kullanıcı programına giriş noktası olan app_main() fonksiyonunun uygulanmasını depolamak için kullanılır. Blink projesi, bileşenler dizinini içermez, çünkü bu eskiampDosyanın yalnızca ESP-IDF ile birlikte gelen bileşenleri kullanması gerekir ve ek bileşenler gerektirmez. Blink projesine dahil edilen CMakeLists.txt, derleme sürecini yönlendirmek için kullanılırken, Kconfig.projbuild bu örnek için yapılandırma öğeleri eklemek için kullanılır.ampmenuconfig'deki dosya programı. Diğer gereksiz fileler kodun derlenmesini etkilemeyecektir, dolayısıyla burada tartışılmayacaklardır. Blink projesine ayrıntılı bir giriş fileşu şekildedir.

1. /*blink.c aşağıdaki başlığı içerir fileS*/

2. #dahil et

//Standart C kütüphane başlığı file

3. #include “freertos/freeRTOS.h” //FreeRTOS ana başlığı file

4. #include “freertos/task.h”

//FreeRTOS Görev başlığı file

5. #include “sdkconfig.h”

//Yapılandırma başlığı file kconfig tarafından oluşturuldu

6. #include “driver/gpio.h”

//GPIO sürücü başlığı file

Kaynak file Blink.c bir dizi başlık içerir filefonksiyon beyanına karşılık gelir-

. ESP-IDF genellikle standart kitaplık başlığını ekleme sırasını takip eder files, FreeR-

Hizmet Şartları başlığı files, sürücü başlığı files, diğer bileşen başlığı files ve proje başlığı files.

Başlığın hangi sırayla file'lerin dahil edilmesi nihai derleme sonucunu etkileyebilir, bu nedenle aşağıdakileri deneyin:

varsayılan kuralları takip edin. Sdkconfig.h'nin otomatik olarak oluşturulduğuna dikkat edilmelidir.

kconfig tarafından yapılır ve yalnızca idf.py menuconfig komutu aracılığıyla yapılandırılabilir.

Bu başlığın doğrudan değiştirilmesi file üzerine yazılacaktır.

1. /*idf.py menuconfig'te LED'e karşılık gelen GPIO'yu seçebilirsiniz ve menuconfig'in değişiklik sonucu CONFIG_BLINK'in değeri olacaktır.

_GPIO değiştirilecek. Ayrıca doğrudan makro tanımını da değiştirebilirsiniz.

burada ve CONFIG_BLINK_GPIO'yu sabit bir değere değiştirin.*/ 2. #define BLINK_GPIO CONFIG_BLINK_GPIO

3. void app_main(geçersiz)

4. {

5.

/*IO'yu GPIO varsayılan işlevi olarak yapılandırın, çekme modunu etkinleştirin ve

6.

giriş ve çıkış modlarını devre dışı bırakın*/

7.

gpio_reset_pin(BLINK_GPIO);

54 ESP32-C3 Kablosuz Macerası: Kapsamlı IoT Kılavuzu

8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. }

/*GPIO'yu çıkış moduna ayarla*/ gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT); while(1) {
/*Günlüğü yazdır*/ printf(“LEDn'yi kapatmak”); /*LED'i kapat (çıkış düşük seviyesi)*/ gpio_set_level(BLINK_GPIO, 0); /*Gecikme (1000 ms)*/ vTaskDelay(1000 / portTICK_PERIOD_MS); printf(“LEDn'in açılması”); /*LED'i aç (çıkış yüksek seviyesi)*/ gpio_set_level(BLINK_GPIO, 1); vTaskDelay(1000 / portTICK_PERIOD_MS); }

Blink ex'teki app_main() işleviampDosya programı, kullanıcı programları için giriş noktası görevi görür. Parametresi ve dönüş değeri olmayan basit bir fonksiyondur. Bu işlev, günlük seri bağlantı noktasının başlatılması, tek/çift çekirdeğin yapılandırılması ve gözlemcinin yapılandırılması gibi görevleri içeren sistem başlatmayı tamamladıktan sonra çağrılır.

app_main() işlevi main adlı bir görev bağlamında çalışır. Bu görevin yığın boyutu ve önceliği menuconfig Componentconfig Common ESP ile ilgili olarak ayarlanabilir.

Bir LED'in yanıp sönmesi gibi basit görevler için gerekli tüm kodlar doğrudan app_main() işlevinde uygulanabilir. Bu genellikle LED'e karşılık gelen GPIO'nun başlatılmasını ve LED'i açıp kapatmak için bir while(1) döngüsü kullanmayı içerir. Alternatif olarak, LED'in yanıp sönmesini işleyen yeni bir görev oluşturmak için FreeRTOS API'yi kullanabilirsiniz. Yeni görev başarıyla oluşturulduktan sonra app_main() işlevinden çıkabilirsiniz.

main/CMakeLists.txt içeriği fileAna bileşen için derleme sürecini yönlendiren şu şekildedir:

1. idf_component_register(SRCS “blink.c” INCLUDE_DIRS “.” )

Bunların arasında main/CMakeLists.txt yalnızca bir derleme sistemi işlevini, yani idf_component_register'ı çağırır. Diğer bileşenlerin çoğu için CMakeLists.txt dosyasına benzer şekilde, göz kırpma.c, SRCS'ye eklenir ve kaynak fileSRCS'ye eklenenler derlenecektir. Aynı zamanda CMakeLists.txt dosyasının bulunduğu yolu temsil eden “.”, başlık arama dizinleri olarak INCLUDE_DIRS dizinine eklenmelidir. fileS. CMakeLists.txt dosyasının içeriği aşağıdaki gibidir:
1. #V3.5'i mevcut proje tarafından desteklenen en eski CMake sürümü olarak belirtin 2. #V3.5'ten düşük sürümler derleme devam etmeden önce yükseltilmelidir 3. cmake_minimum_required(VERSION 3.5) 4. #ESP'nin varsayılan CMake yapılandırmasını ekleyin -IDF derleme sistemi

Bölüm 4. Geliştirme Ortamını Kurma 55

5. include($ENV{IDF_PATH}/tools/cmake/project.cmake) 6. #“blink” adında bir proje oluşturun 7. project(myProject)
Bunlar arasında, kök dizindeki CMakeLists.txt esas olarak ana CMake yapılandırması olan $ENV{IDF_ PATH}/tools/cmake/project.cmake'i içerir. file ESP-IDF tarafından sağlanmıştır. Dolandırmak için kullanılır

Belgeler / Kaynaklar

Espressif Sistemleri ESP32-C3 Kablosuz Macera [pdf] Kullanıcı Kılavuzu
ESP32-C3 Kablosuz Macera, ESP32-C3, Kablosuz Macera, Macera

Referanslar

Yorum bırakın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar işaretlenmiştir *