-
Notifications
You must be signed in to change notification settings - Fork 0
/
esp32-ile-micropython.html
171 lines (145 loc) · 11.2 KB
/
esp32-ile-micropython.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
<!DOCTYPE html>
<html lang="tr">
<head>
<meta charset="utf-8">
<title> ESP32 üzerinde Python yazmak - Micropython
</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="HandheldFriendly" content="True" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="author" content="0x656e" />
<meta name="description" content="ESP32 ile nasıl çalışacağımıza ve cihaza hali hazırda daha önceki bir blog konusunda değinmiştik. İlgili yazı linki: ESP32 İle Çalışmak Yukarıda linkini vermiş olduğum yazıda ESP-IDF ve pip ile birlikte kurduğumuz ESPTool kullanıyorduk. İnternet üzerindeki bir çok elektronik konulu blog yazılarını incelediğinizde elektronik cihazlara ait kodlamaların genellikle C ile yazıldığını …" />
<meta name="keywords" content="esp32 türkçe, micropython türkçe, esp32 micropython türkçe, esp32 ile micropython kullanmak, python ve elektronik, elektronik aletlerde python yazmak">
<meta property="article:tag" content="esp32 türkçe" />
<meta property="article:tag" content="micropython türkçe" />
<meta property="article:tag" content="esp32 micropython türkçe" />
<meta property="article:tag" content="esp32 ile micropython kullanmak" />
<meta property="article:tag" content="python ve elektronik" />
<meta property="article:tag" content="elektronik aletlerde python yazmak" />
<link rel="canonical" href="https://enesergun.net/esp32-ile-micropython.html"/>
<meta name="description" content=""/>
<!-- og definitions -->
<meta property="og:type" content="article" />
<meta property="og:url" content="https://enesergun.net/esp32-ile-micropython.html" />
<meta property="og:title" content="ESP32 üzerinde Python yazmak - Micropython" />
<meta property="og:description" content="ESP32 ile nasıl çalışacağımıza ve cihaza hali hazırda daha önceki bir blog konusunda değinmiştik. İlgili yazı linki: ESP32 İle Çalışmak Yukarıda linkini vermiş olduğum yazıda ESP-IDF ve pip..." />
<meta property="og:image" content="https://w0.peakpx.com/wallpaper/212/918/HD-wallpaper-virtual-world-sunset-80s-landscape-retro-theme-tron.jpg" />
<link rel="stylesheet" href="theme/style.css">
<link href="https://enesergun.net/feeds/all.atom.xml" type="application/atom+xml" rel="alternate" title="Enes Ergün Atom Feed" />
</head>
<body>
<div class="container">
<header class="blog-header">
<h1><a href="https://enesergun.net" class="glitch glow" data-text="Enes Ergün">Enes Ergün</a></h1>
<p> Chaotic Neutral / ISTP-T - 30 lvl rogue - Cyber Security </p>
<nav>
<a href="https://enesergun.net/">INDEX</a>
<a href="https://enesergun.net/archives">ARCHIVES</a>
<a href="https://enesergun.net/categories">CATEGORIES</a>
</nav>
</header>
<div class="post">
<header>
<h1>ESP32 üzerinde Python yazmak - Micropython</h1>
<p class="date">Written on <time datetime="2019-05-27T12:00:00+03:00">May 27, 2019</time></p>
</header>
<article>
<p>ESP32 ile nasıl çalışacağımıza ve cihaza hali hazırda daha önceki bir blog konusunda değinmiştik. </p>
<p>İlgili yazı linki: <a href="https://enesergun.net/esp32-ile-calismak.html">ESP32 İle Çalışmak</a></p>
<p>Yukarıda linkini vermiş olduğum yazıda ESP-IDF ve pip ile birlikte kurduğumuz ESPTool kullanıyorduk. İnternet üzerindeki bir çok elektronik konulu blog yazılarını incelediğinizde elektronik cihazlara ait kodlamaların genellikle C ile yazıldığını görebilirsiniz. C bilmeyen birisi için(Örn:Ben) projeyi ilerlettikçe bu oldukça içinden çıkılamaz bir durum halini alabiliyor. İşte bu sebepledir ki bazı arkadaşlarımız elektronik cihazlar üzerinde Python yazabilmemize olanak sağlayan bir dil yazmışlar. Kendileri bu dili yine C ile yazmış olup ismine de <strong>MicroPython</strong> ismini vermişler.</p>
<p><img alt="" src="images/micropython1.png"></p>
<h2>MicroPython Nedir?</h2>
<p>Kendileri ESP32 veya diğer boardlar üzerinde Python(Python'a benzer kod) kodu yazmamızı sağlayan bir dil. İçerisinde implente olmuş bir biçimde Python 3.4 kullanıyor fakat normal bir Python'a göre farklılıkları da bulunmuyor değil. </p>
<p>İlgili farklılıklara ulaşmak için: <a href="http://docs.micropython.org/en/latest/genrst/index.html">MicroPython differences from CPython</a></p>
<p>MicroPython'ın desteklemiş olduğu boardlar: </p>
<ul>
<li>Micro:bit</li>
<li>ESP8266</li>
<li>ESP32</li>
<li>Pyboard D-Series</li>
<li>WiPy ve CC3200</li>
<li>MicroPython pyboard</li>
</ul>
<h2>MicroPython'ı ESP32'ye Nasıl Yükleriz?</h2>
<p>Bunun için aslında çok fazla bir ihtiyacımız bulunmamaktadır. MicroPython'ı yüklemek için "bin" dosyasını flashlamamız yeterli.</p>
<p>Cihazınıza uygun firmware'i indirmek için : <a href="https://micropython.org/download#esp32">MicroPython Firmware for ESP32</a></p>
<p>Yukarıda verilmiş link üzerinden en son sürüm "bin" dosyasını indirmeniz gerekmektedir. İndirdikten sonra aşağıda verilmiş olan komut ile <strong>"Linux"</strong> üzerinde bu işlemi yapabilirsiniz. Değiştirilmesi gereken parametreler komut altında açıklanacaktır.</p>
<div class="highlight"><pre><span></span><code>sudo esptool.py --chip esp32 --port /dev/ttyUSB0 --baud <span class="m">921600</span> write_flash -z 0x1000 esp32-20190526-v1.10-387-g1470184bd.bin
</code></pre></div>
<p>Değiştirilmesi gereken argümanlar/parametreler:</p>
<ul>
<li>esp32-20190526-v1.10-387-g1470184bd.bin</li>
<li>921600</li>
<li>İlgili değer baud değeridir. Bu değer saniye başı serial port üzerinden transfer edilebilecek bit sayısını belli etmektedir. flash atarken bu değerle yazdırdık, dinlerkende 115200 baud değerinde dinleme yapmamız gerekmektedir. </li>
<li>/dev/ttyUSB0</li>
<li>İlgili değer ise ESP32 cihazınızın hangi portundan bağlandığını göstermektedir.</li>
</ul>
<h2>Yükledikten Sonra Nasıl Kod Yazacağız?</h2>
<p>Şimdi her şeyi yükledik. Ama kodu nasıl yazacağız derseniz terminal'e aşağıdaki komutu yazmanız yeterlidir.</p>
<p><code>screen /dev/ttyUSB1 115200</code> </p>
<p>2 kere enter'a bastığınızda direkt olarak interactive prompt'a düşeceksinizdir. Örnek bir ekran görüntüsünü aşağıya ekliyor olacağım.</p>
<p><img alt="Micropython Türkçe" src="images/micropython3.png"></p>
<p><img alt="Micropython Türkçe" src="images/micropython4.png"></p>
<p>Eğer bu şekilde(REPL) kod yazmak hoşunuza gitmiyorsa yazdığınız kodu ampy(dilerseniz rshell) ile ESP32 Boardınıza yükleyebilirsiniz.</p>
<p><code>sudo ampy --port /dev/ttyUSB0 put main.py</code> </p>
<p>Ampy ile attığımız kod artık her boot edilişte otomatik olarak çalışacaktır.</p>
<p>Ben aşağıdaki kodu attım ve sürekli çalışmasını sonsuz bir while döngüsü ile sağladım. Eğer sıcaklık 30 derece üstüne çıkarsa bize haber verecektir. Ekran görüntüsünü de aşağıda gösteriyor olacağım.</p>
<div class="highlight"><pre><span></span><code><span class="kn">import</span> <span class="nn">dht</span>
<span class="kn">import</span> <span class="nn">machine</span>
<span class="n">d</span> <span class="o">=</span> <span class="n">dht</span><span class="o">.</span><span class="n">DHT11</span><span class="p">(</span><span class="n">machine</span><span class="o">.</span><span class="n">Pin</span><span class="p">(</span><span class="mi">32</span><span class="p">))</span>
<span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
<span class="n">temp</span> <span class="o">=</span> <span class="n">d</span><span class="o">.</span><span class="n">temperature</span><span class="p">()</span>
<span class="k">if</span> <span class="n">temp</span> <span class="o">></span> <span class="mi">30</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"Çok sıcak acil durum olarak API bilgi gönderildi"</span><span class="p">)</span>
<span class="k">break</span>
<span class="k">else</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"Oda sıcaklığındayız mükemmel"</span><span class="p">)</span>
</code></pre></div>
<p><img alt="Micropython Türkçe" src="images/micropython5.png"></p>
<p>Bu yazı şimdilik bu kadar. Belki ileride (üşenmezsem) ESP32 üzerinden sürekli olarak sıcaklık değerlerini ağda bulunan bir API'a alarak onun veri görselleştirmesini yapabiliriz veya bir sunucu odasında olduğumuzu düşünüp belirli bir sıcaklık üstüne çıktığında farklı bir porttan veri göndermesini sağlayabiliriz.</p>
<p>Okuduğunuz için teşekkür ederim. Yine bir klasik olarak şarkı paylaşacağım fakat bu sefer yine 2 tane paylaşacağım.</p>
<p><a href="http://www.youtube.com/watch?v=5hNT2wtVIBI" title="Nothing burns like the cold"><img alt="Nothing burns like the
cold" src="http://img.youtube.com/vi/5hNT2wtVIBI/0.jpg"></a></p>
<p><a href="http://www.youtube.com/watch?v=1gdihQ_cnfQ" title="Biig Piig Perdida"><img alt="Biig Piig
Perdida" src="http://img.youtube.com/vi/1gdihQ_cnfQ/0.jpg"></a></p>
</article>
<footer>
<p>This entry is posted in <a href="https://enesergun.net/category/iot-elektronik.html">iot & elektronik</a>.</p>
</footer>
<div class="comments">
<div id="disqus_thread"></div>
<script type="text/javascript">
var disqus_shortname = '0x656e';
(function() {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
</script>
<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
<a href="http://disqus.com" class="dsq-brlink">comments powered by <span class="logo-disqus">Disqus</span></a>
</div>
</div>
<footer class="blog-footer">
<ul class="nav">
<li><a href="https://devilinside.me/"> Eşelyon</a></li>
<li><a href="https://medium.com/@brkalbyrk"> Berk Albayrak</a></li>
<li><a href="https://ahmtglr.wordpress.com/"> Ahmet Güler</a></li>
<li><a href="https://kaganisildak.com/"> Kağan Işıldak</a></li>
<li><a href="https://eybisi.run/"> Eybisi</a></li>
<li><a href="https://onur.im/"> Onur Aslan</a></li>
<li><a href="https://canyoupwn.me/"> Canyoupwn.me</a></li>
<li><a href="https://www.oguzozkeroglu.com"> Oğuz Özkeroğlu</a></li>
<li><a href="https://aligoren.com"> Ali Gören</a></li>
<li><a href="https://0xf61.gitlab.io/"> Emir Kurt</a></li>
<br>
<li><a href="www.twitter.com/eness_ergun">Twitter</a></li>
<li><a href="[email protected]">Mail</a></li>
</ul>
<p class="disclaimer">
Built with <a href="http://getpelican.com">Pelican</a>, and <a href="https://github.com/ka1nsha/MBPelican">MB Pelican</a> theme.
</p>
</footer>
</div>
</body>
</html>