<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>اموزش میکروپایتون Micropython | ساخت پروژه</title>
	<atom:link href="https://makingprojec.com/category/blog/micropython-training/feed/" rel="self" type="application/rss+xml" />
	<link>https://makingprojec.com/category/blog/micropython-training/</link>
	<description>مدار های الکترونیک و میکروکنترلر</description>
	<lastBuildDate>Tue, 21 Oct 2025 19:33:00 +0000</lastBuildDate>
	<language>fa-IR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.6</generator>

<image>
	<url>https://makingprojec.com/wp-content/uploads/2021/10/cropped-makingprojec-512-x-min-32x32.png</url>
	<title>اموزش میکروپایتون Micropython | ساخت پروژه</title>
	<link>https://makingprojec.com/category/blog/micropython-training/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>آموزش راه‌ اندازی و اتصال نمایشگر OLED با SPI در میکرو پایتون MicroPython</title>
		<link>https://makingprojec.com/tutorial-on-setting-up-and-connecting-an-oled-display-with-spi-in-micropython/</link>
					<comments>https://makingprojec.com/tutorial-on-setting-up-and-connecting-an-oled-display-with-spi-in-micropython/#respond</comments>
		
		<dc:creator><![CDATA[ساخت پروژه]]></dc:creator>
		<pubDate>Tue, 21 Oct 2025 19:32:53 +0000</pubDate>
				<category><![CDATA[اموزش میکروپایتون Micropython]]></category>
		<category><![CDATA[وبلاگ اموزش الکترونیک]]></category>
		<guid isPermaLink="false">https://makingprojec.com/?p=48110</guid>

					<description><![CDATA[<p>آموزش راه‌ اندازی و اتصال نمایشگر OLED با SPI در میکرو پایتون MicroPython ، وقتی در دنیای میکروکنترلرها کار می‌کنی، یکی از جذاب‌ترین کاربردها نمایشگرها هستند. نمایشگر OLED به دلیل کنتراست بالا، مصرف انرژی پایین (به خصوص وقتی پیکسل‌ها خاموش‌اند) و وضوح مناسب، انتخاب محبوبی برای پروژه‌های کوچک است. اما رساندن داده‌ها به نمایشگر به شیوه‌ای سریع، مطمئن و بدون خطا، چالشی است. در این بین، پروتکل SPI یکی از گزینه‌های قدرتمند و پُر سرعت است که در بسیاری از میکروکنترلرها و پلتفرم‌ها پشتیبانی می ...</p>
<p>نوشته <a href="https://makingprojec.com/tutorial-on-setting-up-and-connecting-an-oled-display-with-spi-in-micropython/">آموزش راه‌ اندازی و اتصال نمایشگر OLED با SPI در میکرو پایتون MicroPython</a> اولین بار در <a href="https://makingprojec.com">ساخت پروژه</a>. پدیدار شد.</p>
]]></description>
										<content:encoded><![CDATA[<p>آموزش راه‌ اندازی و اتصال نمایشگر OLED با SPI در میکرو پایتون MicroPython ، وقتی در دنیای میکروکنترلرها کار می‌کنی، یکی از جذاب‌ترین کاربردها نمایشگرها هستند. نمایشگر OLED به دلیل کنتراست بالا، مصرف انرژی پایین (به خصوص وقتی پیکسل‌ها خاموش‌اند) و وضوح مناسب، انتخاب محبوبی برای پروژه‌های کوچک است. اما رساندن داده‌ها به نمایشگر به شیوه‌ای سریع، مطمئن و بدون خطا، چالشی است. در این بین، پروتکل SPI یکی از گزینه‌های قدرتمند و پُر سرعت است که در بسیاری از میکروکنترلرها و پلتفرم‌ها پشتیبانی می‌شود.</p><p>در این مقاله، ابتدا پروتکل SPI را به شکلی کاربردی و قابل درک معرفی می‌کنم، سپس نشان خواهم داد چطور می‌توانی یک نمایشگر OLED (مثلاً مبتنی بر درایور SSD1306 یا مشابه) را با استفاده از MicroPython به کمک SPI کنترل کنی. در هر بخش، نکات عملی و ترفندهایی را که تجربه‌آموخته‌ام می‌آورم تا راه را برای تو هموارتر کنم.</p><p>کلمات کلیدی مهم که در سراسر متن استفاده می‌شوند: <strong>SPI در میکروپایتون، OLED کنترل با SPI، SSD1306 SPI، میکروپایتون نمایشگر OLED، ارتباط SPI</strong>.</p><h2 class="wp-block-heading" id="h-پروتکل-spi-اصول-مزایا-و-محدودیت-ها">پروتکل SPI اصول، مزایا و محدودیت‌ها</h2><p>قبل از ورود به MicroPython، باید یک‌بار دیگر SPI را از دید سخت‌افزاری و منطقی بررسی کنیم چون بدون درک عمیق از آن، ممکن است در پروژه‌ها دچار سردرگمی و اشکال شوی.</p><h3 class="wp-block-heading" id="h-چیستی-spi">چیستی SPI</h3><p>SPI (مخفف <strong>Serial Peripheral Interface</strong>) یک پروتکل ارتباط سریال سنکرون است که بین یک «مستر» (معمولاً میکروکنترلر) و یک یا چند «اسلیو» (مثلاً نمایشگر، حافظه فلش، سنسور) برقرار می‌شود. ویژگی‌های اصلی SPI:</p><ul class="wp-block-list"><li><strong>سگنال‌های پایه</strong>:<ol class="wp-block-list"><li>SCLK (Clock) سیگنال کلاک</li>

<li>MOSI (Master Out, Slave In) داده‌ای که مستر به اسلیو می‌فرستد</li>

<li>MISO (Master In, Slave Out) داده‌ای که اسلیو به مستر می‌فرستد (اگر نیاز باشد)</li>

<li>CS یا SS (Chip Select / Slave Select) برای انتخاب اسلیوی که با آن در ارتباط هستیم</li></ol></li>

<li><strong>ارتباط سنکرون</strong>: داده‌ها همزمان با لبه‌های کلاک منتقل می‌شوند، یعنی گیرنده و فرستنده باید هماهنگ با کلاک باشند.</li>

<li><strong>فول‌داپلکس یا نیم‌داپلکس</strong>: در حالت کامل، هم ارسال و هم دریافت هم‌زمان ممکن است، اما در بسیاری از کاربردهای نمایشگر، فقط ارسال داده به نمایشگر کافی است.</li></ul><h3 class="wp-block-heading" id="h-مزایا-و-معایب-spi-نسبت-به-سایر-پروتکل-ها">مزایا و معایب SPI نسبت به سایر پروتکل‌ها</h3><p><strong>مزایا:</strong></p><ol class="wp-block-list"><li><strong>سرعت بالا</strong> چون نیازی به ارسال آدرس و تأیید نیست، انتقال داده‌ها سریع‌تر انجام می‌شود.</li>

<li><strong>سادگی منطق داده</strong> به محض داشتن پین‌ها، پیاده‌سازی نسبتاً ساده است.</li>

<li><strong>قابلیت استفاده از چند اسلیو</strong> با پین‌های جداگانه CS برای هر اسلیو می‌توان چند دستگاه را به همان رابط متصل کرد.</li></ol><p><strong>معایب/محدودیت‌ها:</strong></p><ol class="wp-block-list"><li><strong>تعداد پین بیشتر</strong> نسبت به I2C که فقط دو سیم داده و کلاک نیاز دارد، SPI حداقل به ۴ سیم نیاز دارد.</li>

<li><strong>مسیر سیم‌بندی حساس</strong> اگر سیم‌های MOSI، SCLK یا CS طولانی باشند، نویز یا تأخیر ممکن است باعث خطا شود.</li>

<li><strong>پشتیبانی محدود کتابخانه‌ها</strong> بعضی کتابخانه‌ها برای نمایشگرها تمرکز بیشتری روی I2C دارند؛ استفاده از SPI ممکن است نیاز به تغییر یا نوشتن خودت داشته باشد.</li>

<li><strong>عدم آدرس‌دهی اتوماتیک</strong> برخلاف I2C که هر دستگاه آدرس دارد، در SPI خودت باید پین CS را مدیریت کنی.</li></ol><p>با این مقدمه، اگر بخوای روی سرعت و کارایی تمرکز کنی، استفاده از SPI برای نمایشگر OLED خیلی منطقی است به شرطی که سیم‌بندی دقیق، نویز کم و اشکال‌زدایی را جدی بگیری.</p><h2 class="wp-block-heading">معرفی نمایشگر OLED و درایورهای رایج</h2><p>پیش از اینکه سراغ پیاده‌سازی با MicroPython برویم، لازم است با نمایشگر OLED و درایور آن آشنا باشی تا بفهمی دقیقاً چه چیزی را کنترل می‌کنی.</p><h3 class="wp-block-heading">OLED چیست؟</h3><p>OLED مخفف <strong>Organic Light Emitting Diode</strong> است. تفاوت اصلی OLED با LCD این است که در OLED از آرایه‌های آلی استفاده می‌شود که خودشان نور تولید می‌کنند، پس نیاز به نور پس‌زمینه (backlight) ندارند. این باعث می‌شود:</p><ul class="wp-block-list"><li>کنتراست بسیار بالا (مشکی واقعی)</li>

<li>مصرف انرژی پایین‌تر وقتی پیکسل‌ها خاموش هستند</li>

<li>زاویه دید عالی</li></ul><p>اما معایبی هم دارد مثل محدودیت در روشنایی در محیط‌های با نور زیاد یا دوام کمتر در برخی رنگ‌ها (در مدل‌های رنگی).</p><h3 class="wp-block-heading">درایور SSD1306 و نسخه‌های مشابه</h3><p>یکی از رایج‌ترین درایورهای نمایشگر OLED کوچک، <strong>SSD1306</strong> است. این درایور تک رنگ (معمولاً سفید، آبی یا زرد) را پشتیبانی می‌کند و رزولوشن‌های رایجش 128×64 یا 128×32 است. بسیاری از ماژول‌های OLED کوچک برای پروژه‌های امبدد از این درایور استفاده می‌کنند. کتابخانه‌های MicroPython معمولاً نسخه SPI و I2C برای SSD1306 دارند.</p><p>از طرف دیگر، در برخی ماژول‌های جدیدتر ممکن است درایورهایی مانند SH1107 یا SH1106 استفاده شود. برای آن‌ها نیز نسخه‌های MicroPython وجود دارد یا باید کمی تغییر بدهی. (مثلاً پروژه SH1107 با پشتیبانی SPI و I2C در مخازن گیت‌هاب موجود است)</p><p>نکته مهم: وقتی ماژولی تهیه می‌کنی، دقیقاً باید بدانیم چه درایوری دارد (SSD1306 یا غیر آن) و آیا پشتیبانی SPI دارد یا صرفاً I2C. اگر فقط I2C داشته باشد، آن بخش از مقاله را فقط به عنوان مرجع بخوان.</p><h2 class="wp-block-heading">طراحی سخت‌افزاری اتصال OLED به میکروپایتون (بُرد)</h2><p>در این بخش، شیوه اتصال سخت‌افزاری نمایشگر OLED به بُردی که می‌خواهی از آن در میکروپایتون استفاده کنی (مثلاً ESP32، ESP8266، Raspberry Pi Pico، یا هر MCU سازگار) را بررسی می‌کنم. من در اینجا فرض می‌کنم که بُرد تو از رابط SPI پشتیبانی می‌کند.</p><h3 class="wp-block-heading">انتخاب پین‌ها و سیم‌بندی</h3><p>برای مثال، فرض کن از ESP32 استفاده می‌کنی، اما همین اصول را برای سایر بُردها نیز می‌توان به کار برد:</p><ul class="wp-block-list"><li><strong>SCLK</strong>: یکی از پین‌های SPI Clock (مثلاً GPIO18 در ESP32)</li>

<li><strong>MOSI</strong>: یکی از پین‌های SPI MOSI (مثلاً GPIO23 در ESP32)</li>

<li><strong>MISO</strong>: اگر نمایشگر بازخورد نمی‌دهد، ممکن است نیازی به استفاده از این خط نداشته باشی</li>

<li><strong>CS (Chip Select)</strong>: هر نمایشگر نیاز به یک پین فعال-پایین دارد که وقتی آن پین پایین است، نمایشگر “فعال” است</li>

<li><strong>DC (Data/Command)</strong>: پینی است که بین ارسال دستور (command) و ارسال داده (data) تمایز قائل می‌شود</li>

<li><strong>RESET (RST)</strong>: برای ریست سخت‌افزاری نمایشگر اختیاری ولی توصیه‌شده</li>

<li><strong>VCC و GND</strong>: تأمین تغذیه معمولاً 3.3 ولت ترجیح داده می‌شود</li></ul><p>یک مثال واقعی برای MicroPython (مطابق مستندات رسمی) برای حالت SPI به صورت زیر است:</p><div class="code-block">
                        <button class="copy-code-btn">کپی</button>
                        <div class="line"></div>
                        <pre class="wp-block-code"><code>from machine import Pin, SPI
import ssd1306

hspi = SPI(1)  # انتخاب رابط SPI  
dc = Pin(4)    # پین DC  
rst = Pin(5)   # پین Reset  
cs = Pin(15)   # پین Chip Select  

display = ssd1306.SSD1306_SPI(128, 64, hspi, dc, rst, cs)</code></pre>
                        <div class="line"></div>
                    </div><p>این روش در مستندات رسمی میکروپایتون برای ماژول SSD1306 ذکر شده است.</p><p>نکته‌ای که همواره باید رعایت شود: سرعت کلاک را به تدریج بالا ببر و در هر مرحله بررسی کن که نمایشگر به درستی داده‌ها را نمایش می‌دهد؛ اگر در سرعت بالا مشکل داشت، ممکن است سیم‌های طولانی یا نویز باعث خطا شوند.</p><h3 class="wp-block-heading">نکات عملی و توصیه‌ها</h3><ul class="wp-block-list"><li>اگر طول سیم‌ها زیاد شود، نویز و تداخل ممکن است باعث دریافت ناصحیح داده شود بهتر است سیم‌ها را کوتاه نگه داری و در صورت امکان از سیم‌های شیلددار استفاده کنی.</li>

<li>اگر بُرد و نمایشگر زمین (GND) مشترک نداشته باشند، سطح سیگنال ممکن است ناصحیح باشد حتماً GND ها را مشترک کن.</li>

<li>اگر پین RST را نداری یا آزاد باشد، باید نمایشگر را به درستی راه‌اندازی نرم‌افزاری کنی (ریست نرم).</li>

<li>اگر بُردت چندین اسلیو SPI داشته باشد (مثلاً حسگر، حافظه، نمایشگر)، باید برای هر دستگاه پین CS جداگانه تعریف کنی و در لحظۀ استفاده، تنها آن را فعال کنی.</li>

<li></li></ul><h2 class="wp-block-heading" id="h-پیاده-سازی-در-micropython-مراحل-و-کد">پیاده‌سازی در MicroPython مراحل و کد</h2><p>حالا که ساختار سخت‌افزاری آماده است، نوبت به بخش نرم‌افزاری می‌رسد. در اینجا مراحل کلی را با مثال کد واقعی توضیح می‌دهم، همراه با نکات تست و اشکال‌زدایی.</p><h3 class="wp-block-heading">۱. آماده‌سازی محیط</h3><ul class="wp-block-list"><li>ابتدا مطمئن باش MicroPython روی بُردت فلش شده است و می‌توانی با محیطی مثل Thonny یا uPyCraft به آن وصل شوی.</li>

<li>به کتابخانه <code>ssd1306.py</code> نیاز داری (که شامل نسخه SPI و I2C است). اگر به صورت پیش‌فرض در فریم‌ورک نیست، باید این فایل را به فایل سیستم میکروکنترلر منتقل کنی.</li>

<li>پیش از اجرای نمایشگر، پیشنهاد می‌کنم یک اسکریپت تستی ساده بنویسی که فقط چند پیکسل را روشن کند تا ببینی ارتباط اصلی برقرار است.</li></ul><h3 class="wp-block-heading">۲. نمونه کد راه‌اندازی SPI و نمایشگر OLED</h3><p>در ادامه یک مثال کامل را می‌بینی:</p><div class="code-block">
                        <button class="copy-code-btn">کپی</button>
                        <div class="line"></div>
                        <pre class="wp-block-code"><code>from machine import Pin, SPI
import time
import ssd1306

# پیکربندی SPI — پارامترها ممکن است بسته به بُرد متفاوت باشند
hspi = SPI(1, baudrate=10_000_000, polarity=0, phase=0, sck=Pin(14), mosi=Pin(13))
# پیکربندی پین‌های کنترل نمایشگر
dc = Pin(4, Pin.OUT)
rst = Pin(5, Pin.OUT)
cs = Pin(15, Pin.OUT)

# ریست سخت‌افزاری نمایشگر
rst.value(0)
time.sleep_ms(50)
rst.value(1)

# ساخت شیء نمایشگر با رابط SPI
oled = ssd1306.SSD1306_SPI(128, 64, hspi, dc, rst, cs)

# تست اولیه
oled.fill(0)  # تمام پیکسل‌ها خاموش
oled.text("Hello, SPI OLED!", 0, 0)
oled.show()

# حلقه نمایشی ساده
while True:
    oled.fill(0)
    oled.text("Time: {}".format(time.ticks_ms()), 0, 0)
    oled.show()
    time.sleep(1)</code></pre>
                        <div class="line"></div>
                    </div><p>در این کد چند نکته حیاتی وجود دارد:</p><ul class="wp-block-list"><li><code>baudrate=10_000_000</code> یک مقدار نمونه است؛ اگر در سرعت بالا خطا دیدی، آن را کاهش بده.</li>

<li><code>polarity</code> و <code>phase</code> باید با درایور نمایشگر هم‌خوانی داشته باشند (معمولاً Polarity=0، Phase=0 یا 1).</li>

<li>وضعیت پین CS باید کنترل شود: بعضی نسخه‌های کتابخانه به‌طور خودکار آن را مدیریت می‌کنند؛ بعضی دیگر باید خودت قبل و بعد از ارسال فعال و غیرفعال کنی.</li>

<li>بعد از ساخت شیء، باید دستور <code>oled.show()</code> را فراخوانی کنی تا آنچه در بافر داخلی نوشته شده است روی نمایشگر نمایش داده شود.</li></ul><h3 class="wp-block-heading">۳. نقشه حافظه و مدیریت بافر (FrameBuffer)</h3><p>نمایشگرهای SSD1306 در MicroPython بر پایه کلاس <code>FrameBuffer</code> کار می‌کنند. به این معنی که تمام ترسیم‌ها (متن، خطوط، پیکسل) ابتدا در حافظه‌ای به نام بافر (buffer) انجام می‌شوند و سپس <code>oled.show()</code> آن را به نمایشگر می‌فرستد. این کار دو مزیت دارد:</p><ul class="wp-block-list"><li>امکان ترکیب چند دستور (مثلاً نوشتن متن + رسم خط) قبل از ارسال</li>

<li>امکان آمادگی داده‌ها پیش از نمایش</li></ul><p>اما نکته‌ای که اغلب باعث سردرگمی می‌شود این است که اگر بین فراخوانی‌های <code>fill()</code>، <code>text()</code> و <code>show()</code> تغییری ندهی، تغییری ثبت نمی‌شود. بنابراین، ترتیب دستورات را باید به دقت رعایت کنی.</p><h3 class="wp-block-heading">۴. نکات اشکال‌زدایی</h3><ul class="wp-block-list"><li>اگر نمایشگر اصلاً روشن نمی‌شود، اول پین RESET را بررسی کن، کلاک SPI را کم کن، و ببین که آیا خطا در ارسال ایجاد می‌شود یا نه.</li>

<li>اگر تصویر خراب یا ناهمگون ظاهر می‌شود، ممکن است تنظیمات polarity/phase نادرست باشد. تغییر آن‌ها را امتحان کن.</li>

<li>اگر در سرعت بالا کار نمی‌کند ولی در سرعت پایین کار می‌کند، مشکل به نویز یا انعکاس سیگنال است سیم‌ها را کوتاهتر کن یا از خازن‌های بای‌پَس استفاده کن.</li>

<li>از تابع <code>i2c.scan()</code> (اگر در همان بُرد I2C هم استفاده کرده‌ای) یا چک کردن بازگشت کتابخانه برای شناسایی دستگاه‌ها استفاده کن تا مطمئن شوی نمایشگر شناسایی شده است. (در I2C این کار رایج است.) </li>

<li>در انجمن‌های میکروپایتون دیده شده که برخی کاربران با خطاهایی مانند <code>OSError: EIO</code> مواجه می‌شوند وقتی ارتباط فیزیکی یا تغذیه به درستی برقرار نیست.</li></ul><h2 class="wp-block-heading">مقایسه SPI و I2C برای OLED در میکروپایتون</h2><p>حتماً شنیده‌ای که در اغلب پروژه‌ها توصیه می‌شود از I2C برای OLED استفاده شود. چرا؟ چون فقط دو سیم نیاز دارد، ساده است و کتابخانه‌های زیادتری برای آن نوشته شده‌اند. اما وقتی سرعت یا حجم داده زیاد باشد، SPI برتری خود را نشان می‌دهد.</p><p>در مستندات MicroPython، نسخه SPI کتابخانه SSD1306 به صراحت توضیح داده شده است. از طرفی، در بسیاری از آموزش‌های آنلاین، استفاده از I2C آسان‌تر توضیح داده شده است تا برای مبتدیان دردسر ایجاد نشود. مثلاً در آموزش ESP32 + OLED در RandomNerdTutorials، تمرکز بر I2C است. </p><p>اما اگر بخوای پروژه‌ای مثل نمایش انیمیشن، یا به‌روزرسانی سریع صفحه با داده زیاد اجرا کنی، SPI به خاطر سرعت برتر خود انتخاب بهتری است.</p><p>چند شاخص مقایسه:</p><figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>ویژگی</th><th>SPI</th><th>I2C</th></tr></thead><tbody><tr><td>سرعت انتقال داده</td><td>بالا (میلیون بیت بر ثانیه)</td><td>محدودتر (معمولاً تا 400 کیلوبیت یا کمتر)</td></tr><tr><td>تعداد سیم</td><td>بیشتر</td><td>کمتر</td></tr><tr><td>سادگی کتابخانه</td><td>ممکن است نیاز به تنظیم بیشتر باشد</td><td>معمولاً کتابخانه‌های آماده بیشتر وجود دارد</td></tr><tr><td>مناسب برای پروژه‌های سریع یا با گرافیک</td><td>بله</td><td>ممکن است محدود باشد</td></tr><tr><td>ریسک تداخل و نویز</td><td>بیشتر</td><td>کمتر در پروژه‌های کم سرعت</td></tr></tbody></table></figure><p>در نهایت، انتخاب بین SPI و I2C بستگی به نیاز پروژه‌ات دارد: اگر نمایش ساده، متن یا داده کم است و می‌خواهی سیم کم مصرف کنی، I2C گزینه خوبی است؛ اگر به سرعت و کارایی نیاز داری، SPI انتخاب بهتری است (به شرطی که بتوانی مسائل فیزیکی آن را کنترل کنی).</p><h2 class="wp-block-heading">چالش‌ها، نکات پیشرفته و دیدگاه من به عنوان کسی که پروژه‌ها را عملی کرده</h2><p>می‌خواهم چند نکته را برات بگویم که در سایت‌ها معمولاً نمی‌بینی از تجربه شخصی:</p><ol class="wp-block-list"><li><strong>کنترل مصرف انرژی</strong>اگر پروژه‌ات با باتری کار می‌کند، باید دقت کنی که وقتی نمایشگر به‌روزرسانی ندارد، آن را در حالت کم‌مصرف نگه داری. در OLED، خاموش کردن نمایشگر کامل یا کاهش فرکانس به‌روزرسانی کمک می‌کند.</li>

<li><strong>نمایش گرافیک/تصاویر</strong>اگر بخوای تصویری روی OLED نمایش بدهی، باید آن را به بیت‌مپ مونو تبدیل کنی و در بافر بنویسی، سپس ارسال کنی. کتابخانه‌های SSD1306 موجود این امکان را دارند. پروژه‌هایی مانند TimHanewich/MicroPython-SSD1306 نمونه‌هایی از این کار هستند.اما وقتی تصویر بزرگ باشد، ارسال کامل آن ممکن است زمان‌بر شود. راه‌حل: ارسال بخش به بخش (قطعه‌بندی) یا استفاده از حافظه خارجی اگر وجود دارد.</li>

<li><strong>چند نمایشگر بر روی یک بُرد</strong>اگر بخوای چند OLED را روی یک میکروکنترلر داشته باشی، باید دقت کنی پین CS هر کدام را جداگانه کنترل کنی و هر بار تنها یکی فعال باشد. اگر کتابخانه به درستی طراحی نشده باشد، ممکن است تداخل داده‌ها ایجاد شود.</li>

<li><strong>هماهنگی فاز/قطبیت کلاک و تنظیمات سازگار</strong>گاه تنظیمات <code>polarity</code> و <code>phase</code> در SPI روی وضعیت مناسب نیست و باعث می‌شود داده‌هایی که می‌فرستی، ناهمخوان خوانده شوند. اگر نتیجه نمایش به هم ریخته بود، این دو گزینه را تغییر بده.</li>

<li><strong>نسخه کتابخانه و هماهنگی با فریم‌ورک MicroPython</strong>چون MicroPython بر روی بُردهای مختلف با نسخه‌ها و پورت‌های متفاوت عرضه می‌شود، ممکن است کتابخانه <code>ssd1306.py</code> که داری با ورژن بُردت ناسازگار باشد. مثلا برخی بُردها نسخه‌ای از این کتابخانه را خودشان دارند و اگر نسخه متفاوتی آپلود کنی، تداخل پیش می‌آید. پس همیشه نسخه کتابخانه را بررسی کن.پروژه GitHub “MicroPython SPI &amp; I2C Display Driver for SSD1306” نمونه‌ای از کتابخانه‌ای است که هم SPI و هم I2C را پشتیبانی می‌کند. <a href="https://github.com/rdagger/micropython-ssd1306?utm_source=chatgpt.com">Github</a></li>

<li><strong>پایداری در درازمدت و دمای محیط</strong>اگر نمایشگر را در محیط با دمای بالا یا تغییر زیاد دما قرار دهی، ممکن است عملکردش دستخوش تغییر شود. پس اگر پروژه نهایی‌ات قرار است در محیط متفاوت کار کند، تستش را در شرایط دمایی مختلف انجام بده.</li></ol><p>در کل، من وقتی پروژه‌ای طراحی می‌کنم، ابتدا با سرعت پایین شروع می‌کنم و پس از تأیید عملکرد، هر جزء را بهینه می‌کنم سرعت SPI، نحوه ارسال بخش به بخش، مدیریت انرژی، و در نهایت به فکر افزودن گرافیک یا انیمیشن می‌افتم.</p><h2 class="wp-block-heading" id="h-نتیجه-گیری">نتیجه‌گیری</h2><p>در این مقاله، ابتدا پروتکل SPI را به شکلی کاربردی بررسی کردیم، سپس نمایشگرهای OLED و درایورهای رایج را معرفی کردیم. بعد به طراحی سخت‌افزاری اتصال به میکروکنترلر پرداختیم و در نهایت پیاده‌سازی کامل در MicroPython را با مثال کد ارائه دادم. همچنین نکات تجربی و چالش‌هایی که در پروژه‌های واقعی ممکن است با آن‌ها مواجه شوی را با تو در میان گذاشتم.</p><p>اگر این مقاله آموزش راه‌ اندازی و اتصال نمایشگر OLED با SPI در میکرو پایتون MicroPython برای شما مفید بود، آن را با دوستان خود به اشتراک بگذارید و برای مشاهده آموزش‌های بیشتر به سایت ما سر بزنید.</p><p><strong>مطلب پیشنهادی</strong></p><p><a href="https://makingprojec.com/i2c-communication-tutorial-in-micropython-to-read-data-from-mpu6050-sensor/">آموزش ارتباط I2C در میکروپایتون برای خواندن داده از سنسور MPU6050</a></p>

<div class="kk-star-ratings kksr-auto kksr-align-center kksr-valign-bottom"
    data-payload='{&quot;align&quot;:&quot;center&quot;,&quot;id&quot;:&quot;48110&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;bottom&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;1&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;5&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;5&quot;,&quot;greet&quot;:&quot;امتیاز دادن به مطلب&quot;,&quot;legend&quot;:&quot;5\/5 - (1 امتیاز)&quot;,&quot;size&quot;:&quot;22&quot;,&quot;title&quot;:&quot;آموزش راه‌ اندازی و اتصال نمایشگر OLED با SPI در میکرو پایتون MicroPython&quot;,&quot;width&quot;:&quot;132.5&quot;,&quot;_legend&quot;:&quot;{score}\/{best} - ({count} {votes})&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>
            
<div class="kksr-stars">
    
<div class="kksr-stars-inactive">
            <div class="kksr-star" data-star="1" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="2" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="3" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="4" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="5" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
    </div>
    
<div class="kksr-stars-active" style="width: 132.5px;">
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
    </div>
</div>
                

<div class="kksr-legend" style="font-size: 17.6px;">
            5/5 - (1 امتیاز)    </div>
    </div>
<p>نوشته <a href="https://makingprojec.com/tutorial-on-setting-up-and-connecting-an-oled-display-with-spi-in-micropython/">آموزش راه‌ اندازی و اتصال نمایشگر OLED با SPI در میکرو پایتون MicroPython</a> اولین بار در <a href="https://makingprojec.com">ساخت پروژه</a>. پدیدار شد.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://makingprojec.com/tutorial-on-setting-up-and-connecting-an-oled-display-with-spi-in-micropython/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>آموزش ارتباط I2C در میکروپایتون برای خواندن داده از سنسور MPU6050</title>
		<link>https://makingprojec.com/i2c-communication-tutorial-in-micropython-to-read-data-from-mpu6050-sensor/</link>
					<comments>https://makingprojec.com/i2c-communication-tutorial-in-micropython-to-read-data-from-mpu6050-sensor/#respond</comments>
		
		<dc:creator><![CDATA[ساخت پروژه]]></dc:creator>
		<pubDate>Tue, 12 Aug 2025 20:33:23 +0000</pubDate>
				<category><![CDATA[اموزش میکروپایتون Micropython]]></category>
		<category><![CDATA[وبلاگ اموزش الکترونیک]]></category>
		<guid isPermaLink="false">https://makingprojec.com/?p=46372</guid>

					<description><![CDATA[<p>آموزش ارتباط I2C در میکروپایتون برای خواندن داده از سنسور MPU6050 ، آیا تا به حال فکر کرده‌اید چطور می‌شود با چند سیم ساده، داده‌های شتاب و زاویه را از یک سنسور پیشرفته در میکروپردازنده دریافت کرد؟ در این مقاله، قصد داریم به زبان ساده و کاربردی، پروتکل I2C در میکروپایتون را بررسی کنیم و با تمرکز بر MPU6050، راهنمایی دقیق برای خواندن داده‌ها از آن ارائه دهیم. هدف‌مان این نیست که صرفاً دستوری به خواننده بدهیم، بلکه می‌خواهیم دقیقاً همان احساسی را به شما منتقل کنیم که یک مهندس با تجربه در ...</p>
<p>نوشته <a href="https://makingprojec.com/i2c-communication-tutorial-in-micropython-to-read-data-from-mpu6050-sensor/">آموزش ارتباط I2C در میکروپایتون برای خواندن داده از سنسور MPU6050</a> اولین بار در <a href="https://makingprojec.com">ساخت پروژه</a>. پدیدار شد.</p>
]]></description>
										<content:encoded><![CDATA[<p>آموزش ارتباط I2C در میکروپایتون برای خواندن داده از سنسور MPU6050 ، آیا تا به حال فکر کرده‌اید چطور می‌شود با چند سیم ساده، داده‌های شتاب و زاویه را از یک سنسور پیشرفته در میکروپردازنده دریافت کرد؟ در این مقاله، قصد داریم به زبان ساده و کاربردی، پروتکل <strong>I2C در میکروپایتون</strong> را بررسی کنیم و با تمرکز بر <strong>MPU6050</strong>، راهنمایی دقیق برای خواندن داده‌ها از آن ارائه دهیم. هدف‌مان این نیست که صرفاً دستوری به خواننده بدهیم، بلکه می‌خواهیم دقیقاً همان احساسی را به شما منتقل کنیم که یک مهندس با تجربه در حال انتقال تجربه‌اش است.</p><h2 class="wp-block-heading" id="h-1-چیستی-i2c-و-انتخاب-میکروپایتون">1. چیستی I2C و انتخاب میکروپایتون</h2><p><strong>I2C</strong> (Inter-Integrated Circuit) یک پروتکل ارتباطی دو سیمه (SDA و SCL) است که امکان ارتباط چندین دستگاه را روی یک باس فراهم می‌کند. یکی از دلایل محبوبیت آن، مصرف پایین سیم و سادگی‌اش است. ابزارهایی مثل سنسورها و EEPROMها معمولاً از آن پشتیبانی می‌کنند.در مقابل، <strong>میکروپایتون</strong> یک پیاده‌سازی سبک پایتون برای میکروکنترلرها به‌دلیل سادگی، خوانایی و سرعت توسعه‌اش، امروزه محبوبیت زیادی پیدا کرده. ترکیب این دو، یعنی میکروپایتون روی پلت‌فرم‌هایی مثل Raspberry Pi Pico با ارتباط I2C، قدرتی واقعی برای پروژه‌های DIY و آموزشی فراهم می‌کند.</p><h2 class="wp-block-heading">2. سنسور <strong>MPU6050</strong>؛ چرا محبوب است؟</h2><p>این سنسور کوچک، یک ماژول <strong>6‌محوره (شتاب‌سنج + ژیروسکوپ)</strong> است که امکاناتی مثل اندازه‌گیری زاویه و شتاب را در قالب دیتاهای خام ارائه می‌دهد. با قیمت مناسب، مصرف انرژی کم و دقت قابل قبول، در بسیاری از پروژه‌ها مثل پهپادها، ماشین‌هایی که تعادل دارند و دستگاه‌های پوشیدنی کاربرد دارد</p><h2 class="wp-block-heading">3. اتصالات فیزیکی</h2><p>بر اساس تجربه منابع معتبر:</p><ul class="wp-block-list"><li><strong>Raspberry Pi Pico</strong> (یا Pico W) به‌صورت گسترده استفاده می‌شود؛ اتصال‌های پایه معمولی شامل VCC، GND، SDA و SCL هستند<ul class="wp-block-list"><li>VCC → VBUS (پین 40)</li>

<li>GND → GND (پین 38)</li>

<li>SCL → GP15</li>

<li>SDA → GP14</li></ul></li>

<li>برای Pico 2، از GP4 (SDA) و GP5 (SCL) با فرکانس 400kHz استفاده شده</li></ul><h2 class="wp-block-heading" id="h-4-راه-اندازی-i2c-در-میکروپایتون">4. راه‌اندازی I2C در میکروپایتون</h2><p>مثالی از SunFounder (ساده و مناسب اولیه):</p><div class="code-block">
                        <button class="copy-code-btn">کپی</button>
                        <div class="line"></div>
                        <pre class="wp-block-code"><code>from machine import I2C, Pin
import utime
from imu import MPU6050

i2c = I2C(0, sda=Pin(4), scl=Pin(5), freq=400000)
mpu = MPU6050(i2c)</code></pre>
                        <div class="line"></div>
                    </div><p>با این تنظیمات می‌توانید به شکل زیر داده‌ها را بخوانید:</p><div class="code-block">
                        <button class="copy-code-btn">کپی</button>
                        <div class="line"></div>
                        <pre class="wp-block-code"><code>ax, ay, az = mpu.accel.x, mpu.accel.y, mpu.accel.z
gx, gy, gz = mpu.gyro.x, mpu.gyro.y, mpu.gyro.z</code></pre>
                        <div class="line"></div>
                    </div><p>و مقادیر شتاب و سرعت زاویه را دریافت کنید؛ توضیحات مفصل، توالی خواندن و کنترل خطا با منابع معتبر همخوانی دارد</p><h2 class="wp-block-heading" id="h-5-نمونه-کد-کامل">5. نمونه کد کامل</h2><div class="code-block">
                        <button class="copy-code-btn">کپی</button>
                        <div class="line"></div>
                        <pre class="wp-block-code"><code>from machine import I2C, Pin
import utime
from imu import MPU6050

# راه‌اندازی I2C روی پیکو
i2c = I2C(0, sda=Pin(4), scl=Pin(5), freq=400000)
print("I2C devices found:", i2c.scan())

# راه‌اندازی MPU6050
mpu = MPU6050(i2c)
utime.sleep(0.5)

while True:
    ax, ay, az = mpu.accel.x, mpu.accel.y, mpu.accel.z
    gx, gy, gz = mpu.gyro.x, mpu.gyro.y, mpu.gyro.z
    print(f"Accel (g): X={ax:.3f}, Y={ay:.3f}, Z={az:.3f}")
    print(f"Gyro (°/s): X={gx:.3f}, Y={gy:.3f}, Z={gz:.3f}")
    print("-" * 40)
    utime.sleep(0.5)</code></pre>
                        <div class="line"></div>
                    </div><p>این اسکریپت در هر نیم ثانیه، داده‌های محورهای شتاب و ژیروسکوپ را چاپ می‌کند روند ساده‌ای که دید روشنی برای شروع فراهم می‌کند.</p><h2 class="wp-block-heading">6. نکات نرم‌افزاری و خطاهای رایج</h2><p>چند نکته که هر آدم باتجربه‌ای از قبل به آن دقت می‌کند:</p><ul class="wp-block-list"><li>اگر اسکن I2C دستگاه را نشناخت، اول اتصالات را بررسی کن مشکل ممکن است از breadboard یا سیم‌های نامرغوب باشد.</li>

<li><strong>بیت SLEEP</strong> در رجیستر <code>PWR_MGMT_1</code> باید خاموش (0) باشد؛ در غیر این صورت، دستگاه در حالت خواب می‌ماند و دیتایی نمی‌دهد (یا صفر می‌دهد)، جز WHO_AM_I که مقدار &#8216;h&#8217; را نشان می‌دهد.</li>

<li>تمیزکاری لحیم‌ها (برای جلوگیری از اتصال کوتاه) ممکن است احتمال خطا را کاهش دهد</li></ul><h2 class="wp-block-heading">7. تحلیل رقابتی و مزیت‌ها</h2><p>منابع موجود مثل Medium یا SunFounder آموزش قوی و کاربردی بودند، اما این مقاله تلاش کرده:</p><ul class="wp-block-list"><li>انواع پلت‌فرم‌ها (Pico W، Pico 2) را پوشش دهد.</li>

<li>نکات عملی و خطاهای رایج را با جزئیات بیان کند مثل بیت SLEEP یا مشکلات لحیم‌کاری.</li>

<li>کد ملموس‌تر و انسانی‌تری ارائه دهد، با توضیحات روان و واقعی‌تر گویی که نویسنده کنار شماست و تجربه‌اش را با شما در میان می‌گذارد.</li></ul><h2 class="wp-block-heading">9. سوالات متداول (FAQ)</h2><div class="schema-faq wp-block-yoast-faq-block"><div class="schema-faq-section" id="faq-question-1755027915821"><strong class="schema-faq-question"><strong>چرا فقط WHO_AM_I داده می‌دهد و بقیه‌اش صفر است؟</strong></strong> <p class="schema-faq-answer">احتمالاً بیت SLEEP روشن است باید آن را در رجیستر <code>PWR_MGMT_1</code> صفر کنید تا دستگاه بیدار شود </p> </div> <div class="schema-faq-section" id="faq-question-1755027928741"><strong class="schema-faq-question"><strong>اتصال I2C شناسایی نمی‌شود چه باید کرد؟</strong></strong> <p class="schema-faq-answer">ابتدا با <code>i2c.scan()</code> بررسی کن که آدرس دستگاهش برگردد. اگر نشد، سیم‌کشی، breadboard یا اتصالات را ارزیابی کن. گاهی تمیزکاری لحیم کمک‌کننده است</p> </div> <div class="schema-faq-section" id="faq-question-1755027944117"><strong class="schema-faq-question"><strong>چه پایه‌هایی بهترند برای SDA/SCL؟</strong></strong> <p class="schema-faq-answer">مثال Medium از GP14/15 استفاده کرده؛ SunFounder از GP4/5 پیشنهاد می‌دهد مهم است پایه‌ها در سخت‌افزار و نرم‌افزار مطابقت داشته باشند</p> </div> </div><h2 class="wp-block-heading" id="h-نتیجه-گیری">نتیجه‌گیری</h2><p>خب، حالا که پایه‌ها را گرفتید، زمان آن است که وارد عمل شوید! یک ماژول MPU6050، برد Pico یا Pico W بردارید، طبق کد بالا، اجرا کنید و نتایج را ببینید. این تجربه کوچک می‌تواند درب ورود شما به دنیای هواپیماهای بدون سرنشین، ربات‌های خودبالانس یا پروژه‌های واقعیت افزوده باشد.</p><p>اگر این مقاله آموزش ارتباط I2C در میکروپایتون برای خواندن داده از سنسور MPU6050 برای شما مفید بود، آن را با دوستان خود به اشتراک بگذارید و برای مشاهده آموزش‌های بیشتر به سایت ما سر بزنید.</p><p><strong>مطلب پیشنهادی</strong></p><p><a href="https://makingprojec.com/what-is-micropython-an-introduction-to-programming-for-microcontrollers/">زبان برنامه‌ نویسی میکروپایتون مقدمه و آشنایی برای میکروکنترلر ها</a></p>

<div class="kk-star-ratings kksr-auto kksr-align-center kksr-valign-bottom"
    data-payload='{&quot;align&quot;:&quot;center&quot;,&quot;id&quot;:&quot;46372&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;bottom&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;0&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;0&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;5&quot;,&quot;greet&quot;:&quot;امتیاز دادن به مطلب&quot;,&quot;legend&quot;:&quot;0\/5 - (0 امتیاز)&quot;,&quot;size&quot;:&quot;22&quot;,&quot;title&quot;:&quot;آموزش ارتباط I2C در میکروپایتون برای خواندن داده از سنسور MPU6050&quot;,&quot;width&quot;:&quot;0&quot;,&quot;_legend&quot;:&quot;{score}\/{best} - ({count} {votes})&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>
            
<div class="kksr-stars">
    
<div class="kksr-stars-inactive">
            <div class="kksr-star" data-star="1" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="2" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="3" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="4" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="5" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
    </div>
    
<div class="kksr-stars-active" style="width: 0px;">
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
    </div>
</div>
                

<div class="kksr-legend" style="font-size: 17.6px;">
            <span class="kksr-muted">امتیاز دادن به مطلب</span>
    </div>
    </div>
<p>نوشته <a href="https://makingprojec.com/i2c-communication-tutorial-in-micropython-to-read-data-from-mpu6050-sensor/">آموزش ارتباط I2C در میکروپایتون برای خواندن داده از سنسور MPU6050</a> اولین بار در <a href="https://makingprojec.com">ساخت پروژه</a>. پدیدار شد.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://makingprojec.com/i2c-communication-tutorial-in-micropython-to-read-data-from-mpu6050-sensor/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>اموزش راه اندازی وب‌ سرور ESP8266 و ESP32 با میکروپایتون</title>
		<link>https://makingprojec.com/learning-how-to-set-up-an-esp8266-and-esp32-web-server-with-micropython/</link>
					<comments>https://makingprojec.com/learning-how-to-set-up-an-esp8266-and-esp32-web-server-with-micropython/#respond</comments>
		
		<dc:creator><![CDATA[ساخت پروژه]]></dc:creator>
		<pubDate>Mon, 16 Jun 2025 19:04:19 +0000</pubDate>
				<category><![CDATA[اموزش میکروپایتون Micropython]]></category>
		<category><![CDATA[وبلاگ اموزش الکترونیک]]></category>
		<guid isPermaLink="false">https://makingprojec.com/?p=44323</guid>

					<description><![CDATA[<p>اموزش راه اندازی وب‌ سرور ESP8266 و ESP32 با میکروپایتون ، در دنیای امروز که اینترنت اشیا (IoT) به بخشی جدایی‌ناپذیر از زندگی ما تبدیل شده، توانایی برقراری ارتباط میان دستگاه‌ها و انسان‌ها اهمیتی بی‌سابقه یافته است. تصور کنید بتوانید تنها با باز کردن یک صفحه‌ی وب روی گوشی یا کامپیوترتان، چراغ اتاق را روشن…</p>
<p>نوشته <a href="https://makingprojec.com/learning-how-to-set-up-an-esp8266-and-esp32-web-server-with-micropython/">اموزش راه اندازی وب‌ سرور ESP8266 و ESP32 با میکروپایتون</a> اولین بار در <a href="https://makingprojec.com">ساخت پروژه</a>. پدیدار شد.</p>
]]></description>
										<content:encoded><![CDATA[<p>اموزش راه اندازی وب‌ سرور ESP8266 و ESP32 با میکروپایتون ، در دنیای امروز که اینترنت اشیا (IoT) به بخشی جدایی‌ناپذیر از زندگی ما تبدیل شده، توانایی برقراری ارتباط میان دستگاه‌ها و انسان‌ها اهمیتی بی‌سابقه یافته است. تصور کنید بتوانید تنها با باز کردن یک صفحه‌ی وب روی گوشی یا کامپیوترتان، چراغ اتاق را روشن کنید یا وضعیت یک سنسور را بررسی نمایید. جذاب نیست؟ این همان جادویی‌ست که میکروپایتون و بردهای ESP8266 یا ESP32 برای ما به ارمغان می‌آورند. در این مقاله قصد داریم با زبانی ساده، دقیق و ساختارمند، گام‌به‌گام آموزش دهیم که چگونه با استفاده از میکروپایتون یک وب‌سرور کاربردی بسازید و از طریق آن دستگاه‌های خود را به‌صورت بی‌سیم کنترل نمایید.</p><p><strong>میکروپایتون چیست و چرا باید از آن استفاده کنیم؟</strong></p><p>میکروپایتون یک نسخه سبک و سریع از زبان برنامه‌نویسی پایتون است که برای اجرا روی میکروکنترلرهایی با منابع محدود طراحی شده. به‌لطف آن، می‌توان با کدنویسی ساده و کم‌هزینه، پروژه‌هایی قدرتمند و قابل‌اعتماد ایجاد کرد. برخلاف زبان‌های سنتی در دنیای الکترونیک مانند C یا Arduino C++، کار با میکروپایتون برای کسانی که با پایتون آشنایی دارند بسیار ساده و دلپذیر است.</p><p>مزایای میکروپایتون:</p><ul class="wp-block-list"><li>سادگی در توسعه</li>

<li>جامعه کاربری بزرگ</li>

<li>اشغال منابع کمتر نسبت به سایر زبان‌ها</li>

<li>قابلیت اجرای سریع روی بردهای ESP</li></ul><p><strong>آشنایی با بردهای ESP8266 و ESP32: قلب تپنده پروژه‌های IoT</strong></p><p>این دو برد از محبوب‌ترین و مقرون‌به‌صرفه‌ترین انتخاب‌ها برای پروژه‌های اینترنت اشیا هستند. هر دو دارای Wi-Fi داخلی‌اند و از طریق میکروپایتون به‌راحتی قابل برنامه‌ریزی هستند. ESP32 قابلیت‌های بیشتری نسبت به ESP8266 دارد:</p><figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>ویژگی</th><th>ESP8266</th><th>ESP32</th></tr></thead><tbody><tr><td>Wi-Fi</td><td>دارد</td><td>دارد</td></tr><tr><td>Bluetooth</td><td>ندارد</td><td>دارد (BLE)</td></tr><tr><td>GPIO</td><td>محدود</td><td>بیشتر</td></tr><tr><td>قدرت پردازش</td><td>کمتر</td><td>بیشتر</td></tr></tbody></table></figure><p>اگر پروژه شما ساده است، ESP8266 کفایت می‌کند؛ ولی برای پروژه‌های پیچیده‌تر، ESP32 انتخاب بهتری‌ست.</p><p><strong>ابزارهای لازم برای شروع</strong></p><ol class="wp-block-list"><li>برد ESP8266 یا ESP32</li>

<li>کابل micro USB</li>

<li>نرم‌افزار Thonny IDE یا uPyCraft</li>

<li>درایور CH340 یا CP2102 (برای شناسایی پورت سریال)</li>

<li>فایل firmware میکروپایتون (از micropython.org)</li>

<li>نرم‌افزار esptool برای نصب فریم‌ور</li>

<li>آشنایی مقدماتی با پایتون</li></ol><p><strong>مرحله‌به‌مرحله: ساخت یک وب‌سرور کامل با میکروپایتون</strong></p><h3 class="wp-block-heading" id="h-1-نصب-فریم-ور-میکروپایتون">1. نصب فریم‌ور میکروپایتون</h3><p>ابتدا با استفاده از esptool فریم‌ور رسمی را روی برد فلش می‌کنیم:</p><div class="code-block">
                        <button class="copy-code-btn">کپی</button>
                        <div class="line"></div>
                        <pre class="wp-block-code"><code>pip install esptool
esptool.py --port COMx erase_flash
esptool.py --port COMx --baud 460800 write_flash --flash_size=detect 0 firmware.bin
</code></pre>
                        <div class="line"></div>
                    </div><blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>⚠️ فایل <code>firmware.bin</code> را از <a href="https://micropython.org/download">micropython.org</a> مخصوص مدل برد خود دانلود کنید.</p></blockquote><h3 class="wp-block-heading" id="h-2-اتصال-و-تست-ارتباط-با-برد">2. اتصال و تست ارتباط با برد</h3><p>از IDE مانند Thonny استفاده کنید:</p><ul class="wp-block-list"><li>پورت سریال را از منوی Tools > Options > Interpreter انتخاب کنید.</li>

<li>در تب Shell باید بتوانید به برد دستور بدهید (مثلاً <code>print("Hello")</code>).</li></ul><h3 class="wp-block-heading" id="h-3-سورس-کد-میکروپایتون">3. سورس کد میکروپایتون</h3><div class="code-block">
                        <button class="copy-code-btn">کپی</button>
                        <div class="line"></div>
                        <pre class="wp-block-code"><code>import network          # برای مدیریت اتصال به شبکه Wi-Fi
import socket           # برای ایجاد سوکت و راه‌اندازی وب‌سرور
from machine import Pin # برای کنترل پایه‌های GPIO
import time             # برای تاخیر زمانی در صورت نیاز

# ====== تنظیمات Wi-Fi ======
ssid = 'YOUR_WIFI_SSID'           # نام شبکه وای‌فای خود را اینجا وارد کنید
password = 'YOUR_WIFI_PASSWORD'   # رمز عبور وای‌فای

# ====== اتصال به وای‌فای ======
station = network.WLAN(network.STA_IF)  # تعریف برد در حالت Station (اتصال به مودم)
station.active(True)                    # فعال‌سازی ماژول Wi-Fi
station.connect(ssid, password)         # تلاش برای اتصال به مودم

# منتظر بمان تا اتصال برقرار شود
while not station.isconnected():
    print("Connecting to Wi-Fi...")
    time.sleep(1)

print('Wi-Fi connected. IP address:', station.ifconfig()&#091;0])  # چاپ IP اختصاص یافته

# ====== تنظیم پایه GPIO برای LED ======
led = Pin(2, Pin.OUT)  # تعریف پایه ۲ (پایه داخلی LED برای ESP8266/ESP32) در حالت خروجی

# ====== تابع HTML برای نمایش در مرورگر ======
def web_page():
    html = """&lt;!DOCTYPE html>
    &lt;html>
    &lt;head>
        &lt;title>LED Control&lt;/title>
        &lt;meta charset="UTF-8">
    &lt;/head>
    &lt;body style="text-align:center;">
        &lt;h1>MicroPython Web Server&lt;/h1>
        &lt;h2>LED Status: %s&lt;/h2>
        &lt;a href="/?led=on">&lt;button style="font-size:20px;">Turn ON&lt;/button>&lt;/a>
        &lt;a href="/?led=off">&lt;button style="font-size:20px;">Turn OFF&lt;/button>&lt;/a>
    &lt;/body>
    &lt;/html>""" % ("ON" if led.value() else "OFF")  # نمایش وضعیت فعلی LED
    return html

# ====== راه‌اندازی سوکت و شروع گوش دادن ======
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  # ایجاد سوکت TCP
s.bind(('', 80))       # بایند به پورت ۸۰ (پورت استاندارد HTTP)
s.listen(5)            # شروع به گوش دادن برای ۵ اتصال همزمان

print("Web server is up and running. Waiting for browser connection...")

# ====== حلقه بی‌نهایت برای پاسخ به درخواست‌ها ======
while True:
    conn, addr = s.accept()         # پذیرش اتصال از کلاینت (مرورگر)
    print('Connection from:', addr)  # چاپ آدرس کلاینت

    request = conn.recv(1024)       # دریافت درخواست مرورگر
    request = request.decode()      # تبدیل از بایت به رشته
    print("Request:\n", request)

    # بررسی اینکه کاربر چه دکمه‌ای را زده است
    if '/?led=on' in request:
        print("Turning LED ON")
        led.value(1)                # روشن کردن LED
    elif '/?led=off' in request:
        print("Turning LED OFF")
        led.value(0)                # خاموش کردن LED

    # تولید صفحه HTML و ارسال آن به مرورگر
    response = web_page()           # گرفتن HTML
    conn.send('HTTP/1.1 200 OK\n')  # هدر وضعیت HTTP
    conn.send('Content-Type: text/html\n')  # مشخص کردن نوع محتوا
    conn.send('Connection: close\n\n')      # بستن اتصال بعد از ارسال
    conn.sendall(response)          # ارسال کل HTML
    conn.close()                    # بستن اتصال با کلاینت</code></pre>
                        <div class="line"></div>
                    </div><h3 class="wp-block-heading" id="h-پیشرفته-تر-شویم-قابلیت-هایی-که-می-توان-اضافه-کرد"><strong>پیشرفته‌تر شویم: قابلیت‌هایی که می‌توان اضافه کرد</strong></h3><ul class="wp-block-list"><li>کنترل چند وسیله با استفاده از چند دکمه و چند پایه GPIO</li>

<li>طراحی رابط کاربری پیشرفته‌تر با CSS</li>

<li>استفاده از WebSocket برای ارتباط بی‌درنگ</li>

<li>راه‌اندازی REST API برای دریافت داده از سنسورها</li>

<li>ذخیره‌سازی وضعیت‌ها در فایل یا EEPROM</li></ul><p><strong>پرسش‌های متداول (FAQ)</strong></p><p><strong>۱. برد در اجرای کد هنگ می‌کند، مشکل از کجاست؟</strong>ممکن است حافظه پر باشد یا کد دچار حلقه بی‌پایان شده باشد. با دکمه ریست یا فلش مشکل حل می‌شود.</p><p><strong>۲. آیا می‌توان از موبایل به وب‌سرور وصل شد؟</strong>بله. کافی است موبایل به همان شبکه Wi-Fi متصل باشد.</p><p><strong>۳. چطور پروژه را قابل حمل کنیم؟</strong>می‌توانید برد را به یک باتری متصل کرده و یک نقطه دسترسی (Access Point) راه‌اندازی کنید.</p><p><strong>۴. آیا امکان تعریف رمز عبور برای دسترسی به صفحه وجود دارد؟</strong>بله. با بررسی <code>Authorization</code> در هدرهای HTTP می‌توان یک احراز هویت ساده طراحی کرد.</p><p><strong>جمع‌بندی</strong></p><p>با استفاده از میکروپایتون و برد ESP، ساخت وب‌سرور و کنترل از طریق مرورگر به کاری آسان و لذت‌بخش تبدیل می‌شود. این مهارت، دروازه‌ای است به سمت پروژه‌های پیشرفته‌تر در حوزه اینترنت اشیا. حالا نوبت شماست که خلاق باشید و دستگاه‌های اطرافتان را هوشمند کنید.</p><p>اگر این مقاله اموزش راه اندازی وب‌ سرور ESP8266 و ESP32 با میکروپایتون برای شما مفید بود، آن را با دوستان خود به اشتراک بگذارید و برای مشاهده آموزش‌های بیشتر به سایت ما سر بزنید.</p><p><strong>مطلب پیشنهادی</strong></p><p><a href="https://makingprojec.com/temperature-and-humidity-display-project-using-dht11-sensor-with-micropython/">پروژه نمایش دما و رطوبت با استفاده از سنسور DHT11 با میکروپایتون</a></p><p></p>

<div class="kk-star-ratings kksr-auto kksr-align-center kksr-valign-bottom"
    data-payload='{&quot;align&quot;:&quot;center&quot;,&quot;id&quot;:&quot;44323&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;bottom&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;0&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;0&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;5&quot;,&quot;greet&quot;:&quot;امتیاز دادن به مطلب&quot;,&quot;legend&quot;:&quot;0\/5 - (0 امتیاز)&quot;,&quot;size&quot;:&quot;22&quot;,&quot;title&quot;:&quot;اموزش راه اندازی وب‌ سرور ESP8266 و ESP32 با میکروپایتون&quot;,&quot;width&quot;:&quot;0&quot;,&quot;_legend&quot;:&quot;{score}\/{best} - ({count} {votes})&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>
            
<div class="kksr-stars">
    
<div class="kksr-stars-inactive">
            <div class="kksr-star" data-star="1" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="2" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="3" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="4" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="5" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
    </div>
    
<div class="kksr-stars-active" style="width: 0px;">
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
    </div>
</div>
                

<div class="kksr-legend" style="font-size: 17.6px;">
            <span class="kksr-muted">امتیاز دادن به مطلب</span>
    </div>
    </div>
<p>نوشته <a href="https://makingprojec.com/learning-how-to-set-up-an-esp8266-and-esp32-web-server-with-micropython/">اموزش راه اندازی وب‌ سرور ESP8266 و ESP32 با میکروپایتون</a> اولین بار در <a href="https://makingprojec.com">ساخت پروژه</a>. پدیدار شد.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://makingprojec.com/learning-how-to-set-up-an-esp8266-and-esp32-web-server-with-micropython/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>پروژه نمایش دما و رطوبت با استفاده از سنسور DHT11 با میکروپایتون</title>
		<link>https://makingprojec.com/temperature-and-humidity-display-project-using-dht11-sensor-with-micropython/</link>
					<comments>https://makingprojec.com/temperature-and-humidity-display-project-using-dht11-sensor-with-micropython/#respond</comments>
		
		<dc:creator><![CDATA[ساخت پروژه]]></dc:creator>
		<pubDate>Tue, 10 Jun 2025 21:15:32 +0000</pubDate>
				<category><![CDATA[اموزش میکروپایتون Micropython]]></category>
		<category><![CDATA[وبلاگ اموزش الکترونیک]]></category>
		<guid isPermaLink="false">https://makingprojec.com/?p=44154</guid>

					<description><![CDATA[<p>پروژه نمایش دما و رطوبت با استفاده از سنسور DHT11 با میکروپایتون ، در دنیای اینترنت اشیاء (IoT)، یکی از رایج‌ترین و جذاب‌ترین پروژه‌ها برای علاقه‌مندان و تازه‌واردها، ساخت سیستم‌هایی است که بتوانند اطلاعات محیطی مانند دما و رطوبت را اندازه‌گیری کنند. در این مقاله، به‌طور جامع و دقیق به پروژه «نمایش دما و رطوبت…</p>
<p>نوشته <a href="https://makingprojec.com/temperature-and-humidity-display-project-using-dht11-sensor-with-micropython/">پروژه نمایش دما و رطوبت با استفاده از سنسور DHT11 با میکروپایتون</a> اولین بار در <a href="https://makingprojec.com">ساخت پروژه</a>. پدیدار شد.</p>
]]></description>
										<content:encoded><![CDATA[<p>پروژه نمایش دما و رطوبت با استفاده از سنسور DHT11 با میکروپایتون ، در دنیای اینترنت اشیاء (IoT)، یکی از رایج‌ترین و جذاب‌ترین پروژه‌ها برای علاقه‌مندان و تازه‌واردها، ساخت سیستم‌هایی است که بتوانند اطلاعات محیطی مانند دما و رطوبت را اندازه‌گیری کنند. در این مقاله، به‌طور جامع و دقیق به پروژه «نمایش دما و رطوبت با استفاده از سنسور DHT11 و زبان برنامه‌نویسی MicroPython» خواهیم پرداخت. این آموزش نه تنها برای مبتدیان بسیار مناسب است، بلکه برای افراد با تجربه نیز نکات ارزشمندی دارد. اگر علاقه‌مند به یادگیری کار با بردهای میکروکنترلر مانند ESP8266 یا ESP32 و زبان MicroPython هستید، این مقاله می‌تواند نقطه شروعی عالی باشد.</p><p><strong>معرفی سنسور DHT11</strong></p><p>سنسور DHT11 یکی از محبوب‌ترین سنسورهای اندازه‌گیری دما و رطوبت در پروژه‌های آردوینو و میکروپایتون است. قیمت پایین، سهولت استفاده، و دقت نسبتاً قابل قبول، آن را به انتخابی عالی برای پروژه‌های آموزشی و نیمه‌حرفه‌ای تبدیل کرده است.</p><ul class="wp-block-list"><li><strong>ویژگی‌های اصلی DHT11:</strong><ul class="wp-block-list"><li>اندازه‌گیری دما در بازه 0 تا 50 درجه سانتی‌گراد (با دقت ±2 درجه)</li>

<li>اندازه‌گیری رطوبت در بازه 20% تا 90% (با دقت ±5%)</li>

<li>فقط نیاز به یک پایه دیتا برای ارتباط دارد</li>

<li>نرخ نمونه‌برداری: هر 1 ثانیه</li></ul></li></ul><p><strong>چرا MicroPython؟</strong></p><p>MicroPython نسخه‌ای سبک‌شده از زبان پایتون است که برای اجرا روی بردهای کوچک طراحی شده. این زبان به دلیل سادگی، خوانایی بالا و سرعت توسعه، گزینه‌ای بسیار مناسب برای کنترل‌کننده‌های کوچکی مانند ESP8266 و ESP32 است. استفاده از MicroPython به جای C یا C++ باعث می‌شود زمان توسعه پروژه به‌طور چشمگیری کاهش یابد و خطاهای کمتری در برنامه‌نویسی رخ دهد.</p><p><strong>وسایل مورد نیاز</strong></p><ul class="wp-block-list"><li>برد NodeMCU ESP8266 یا ESP32</li>

<li>سنسور DHT11 (بهتر است نوع دارای مقاومت پول‌آپ داخلی باشد)</li>

<li>کابل MicroUSB</li>

<li>نرم‌افزار Thonny IDE یا uPyCraft برای برنامه‌نویسی</li>

<li>کتابخانه <code>dht</code> در MicroPython</li></ul><p><strong>نقشه اتصال سخت‌افزاری</strong></p><p>برای اتصال سنسور DHT11 به برد NodeMCU:</p><ul class="wp-block-list"><li>پایه VCC سنسور → 3.3V برد</li>

<li>پایه GND سنسور → GND برد</li>

<li>پایه DATA سنسور → GPIO2 یا هر GPIO دلخواه (مثلاً D4)</li></ul><p><strong>نصب MicroPython روی برد ESP8266 یا ESP32</strong></p><p>برای استفاده از MicroPython ابتدا باید فریم‌ور آن را روی برد فلش کنید. مراحل به صورت خلاصه:</p><ol class="wp-block-list"><li>نصب ابزار esptool و دریافت firmware از سایت رسمی MicroPython: <a href="https://micropython.org/">micropython.org</a></li>

<li>اتصال برد به کامپیوتر و اجرای دستور فلش کردن:</li></ol><div class="code-block">
                        <button class="copy-code-btn">کپی</button>
                        <div class="line"></div>
                        <pre class="wp-block-code"><code>esptool.py --port COMx erase_flash
esptool.py --port COMx --baud 460800 write_flash --flash_size=detect 0 firmware.bin
</code></pre>
                        <div class="line"></div>
                    </div><p><strong>کد نمونه برای خواندن دما و رطوبت</strong></p><p>پس از نصب فریم‌ور و اجرای محیط برنامه‌نویسی (مانند Thonny)، کد زیر را آپلود کرده و اجرا کنید:</p><div class="code-block">
                        <button class="copy-code-btn">کپی</button>
                        <div class="line"></div>
                        <pre class="wp-block-code"><code>import dht
import machine
import time

sensor = dht.DHT11(machine.Pin(2))  # اتصال به GPIO2

while True:
    try:
        sensor.measure()
        temp = sensor.temperature()
        hum = sensor.humidity()
        print("دما: {} \u00b0C  |  رطوبت: {}%".format(temp, hum))
    except OSError as e:
        print("خطا در خواندن سنسور")
    time.sleep(2)
</code></pre>
                        <div class="line"></div>
                    </div><p><strong>توضیح کد</strong></p><ul class="wp-block-list"><li>ابتدا سنسور DHT11 به پایه GPIO2 متصل می‌شود.</li>

<li>با استفاده از متد <code>measure()</code> داده‌ها خوانده می‌شوند.</li>

<li>سپس با استفاده از <code>temperature()</code> و <code>humidity()</code> به ترتیب دما و رطوبت دریافت می‌شود.</li>

<li>نتایج در هر دو ثانیه روی سریال مانیتور چاپ می‌شوند.</li></ul><p><strong>نکات کاربردی برای اجرای بهتر پروژه</strong></p><ul class="wp-block-list"><li>همیشه از کابل USB باکیفیت استفاده کنید تا ارتباط مطمئن با برد داشته باشید.</li>

<li>از محیطی با رطوبت کنترل‌شده برای تست استفاده کنید تا مقادیر واقعی‌تری ثبت شوند.</li>

<li>در صورت بروز خطا، اتصال پایه‌ها و مقاومت پول‌آپ را بررسی کنید.</li></ul><p><strong>موارد استفاده واقعی</strong></p><p>این پروژه می‌تواند پایه‌ای برای بسیاری از پروژه‌های بزرگ‌تر باشد، مانند:</p><ul class="wp-block-list"><li>سیستم‌های مانیتورینگ محیطی هوشمند</li>

<li>ایستگاه‌های هواشناسی خانگی</li>

<li>کنترل گلخانه‌ها بر اساس شرایط محیطی</li>

<li>ساخت داشبورد تحت وب برای نمایش مقادیر دما و رطوبت در شبکه محلی</li></ul><p><strong>سوالات متداول (FAQ)</strong></p><ol class="wp-block-list"><li><strong>آیا می‌توان از سنسور DHT22 به جای DHT11 استفاده کرد؟</strong>بله، فقط کافی است در کد <code>dht.DHT11</code> را به <code>dht.DHT22</code> تغییر دهید.</li>

<li><strong>آیا MicroPython از همه ویژگی‌های پایتون پشتیبانی می‌کند؟</strong>خیر، نسخه‌ای سبک‌شده است و برخی ماژول‌ها و امکانات را ندارد. ولی برای پروژه‌های IoT کاملاً کافی است.</li>

<li><strong>اگر برد من در سریال مانیتور چیزی نشان نداد چه کنم؟</strong>ابتدا از صحت اتصالات اطمینان حاصل کنید، سپس تنظیمات پورت و baud rate را در IDE بررسی نمایید.</li>

<li><strong>چرا دما و رطوبت همیشه مقدار ثابتی دارند؟</strong>ممکن است سنسور مشکل داشته باشد یا به درستی مقداردهی اولیه نشده باشد. همچنین بررسی کنید که محیط تغییر محسوسی داشته باشد.</li></ol><p><strong>جمع‌بندی و نتیجه‌گیری</strong></p><p>پروژه خواندن دما و رطوبت با استفاده از سنسور DHT11 و MicroPython، یکی از پروژه‌های پایه‌ای و در عین حال بسیار کاربردی در دنیای الکترونیک و اینترنت اشیاء است. این پروژه نه تنها یادگیری برنامه‌نویسی و الکترونیک را تقویت می‌کند، بلکه دید مناسبی برای ساخت پروژه‌های بزرگ‌تر ارائه می‌دهد. اگر به دنیای IoT علاقه‌مند هستید، این پروژه می‌تواند نقطه شروعی عالی باشد.</p><p>اگر این مقاله پروژه نمایش دما و رطوبت با استفاده از سنسور DHT11 با میکروپایتون برای شما مفید بود، آن را با دوستان خود به اشتراک بگذارید و برای مشاهده آموزش‌های بیشتر به سایت ما سر بزنید.</p><p>برای مطالعه منابع بیشتر:</p><p><a href="https://docs.micropython.org/">مستندات رسمی MicroPython</a></p><p><strong>مطلب پیشنهادی</strong></p><p><a href="https://makingprojec.com/controlling-led-with-micropython-project-turning-led-on-and-off/">کنترل LED با میکروپایتون پروژه روشن و خاموش کردن LED</a></p>

<div class="kk-star-ratings kksr-auto kksr-align-center kksr-valign-bottom"
    data-payload='{&quot;align&quot;:&quot;center&quot;,&quot;id&quot;:&quot;44154&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;bottom&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;0&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;0&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;5&quot;,&quot;greet&quot;:&quot;امتیاز دادن به مطلب&quot;,&quot;legend&quot;:&quot;0\/5 - (0 امتیاز)&quot;,&quot;size&quot;:&quot;22&quot;,&quot;title&quot;:&quot;پروژه نمایش دما و رطوبت با استفاده از سنسور DHT11 با میکروپایتون&quot;,&quot;width&quot;:&quot;0&quot;,&quot;_legend&quot;:&quot;{score}\/{best} - ({count} {votes})&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>
            
<div class="kksr-stars">
    
<div class="kksr-stars-inactive">
            <div class="kksr-star" data-star="1" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="2" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="3" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="4" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="5" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
    </div>
    
<div class="kksr-stars-active" style="width: 0px;">
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
    </div>
</div>
                

<div class="kksr-legend" style="font-size: 17.6px;">
            <span class="kksr-muted">امتیاز دادن به مطلب</span>
    </div>
    </div>
<p>نوشته <a href="https://makingprojec.com/temperature-and-humidity-display-project-using-dht11-sensor-with-micropython/">پروژه نمایش دما و رطوبت با استفاده از سنسور DHT11 با میکروپایتون</a> اولین بار در <a href="https://makingprojec.com">ساخت پروژه</a>. پدیدار شد.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://makingprojec.com/temperature-and-humidity-display-project-using-dht11-sensor-with-micropython/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>کنترل LED با میکروپایتون پروژه روشن و خاموش کردن LED</title>
		<link>https://makingprojec.com/controlling-led-with-micropython-project-turning-led-on-and-off/</link>
					<comments>https://makingprojec.com/controlling-led-with-micropython-project-turning-led-on-and-off/#respond</comments>
		
		<dc:creator><![CDATA[ساخت پروژه]]></dc:creator>
		<pubDate>Wed, 21 May 2025 21:19:32 +0000</pubDate>
				<category><![CDATA[اموزش میکروپایتون Micropython]]></category>
		<category><![CDATA[وبلاگ اموزش الکترونیک]]></category>
		<guid isPermaLink="false">https://makingprojec.com/?p=43341</guid>

					<description><![CDATA[<p>کنترل LED با میکروپایتون پروژه روشن و خاموش کردن LED ، در دنیای امروز، یادگیری برنامه‌نویسی میکروکنترلرها و کنترل سخت‌افزارهای ساده مانند LEDها به یکی از پایه‌های اساسی در حوزه الکترونیک و رباتیک تبدیل شده است. یکی از زبان‌های محبوب و جدید برای برنامه‌نویسی میکروکنترلرها، میکروپایتون است که بر پایه پایتون ساخته شده و یادگیری…</p>
<p>نوشته <a href="https://makingprojec.com/controlling-led-with-micropython-project-turning-led-on-and-off/">کنترل LED با میکروپایتون پروژه روشن و خاموش کردن LED</a> اولین بار در <a href="https://makingprojec.com">ساخت پروژه</a>. پدیدار شد.</p>
]]></description>
										<content:encoded><![CDATA[<p>کنترل LED با میکروپایتون پروژه روشن و خاموش کردن LED ، در دنیای امروز، یادگیری برنامه‌نویسی میکروکنترلرها و کنترل سخت‌افزارهای ساده مانند LEDها به یکی از پایه‌های اساسی در حوزه الکترونیک و رباتیک تبدیل شده است. یکی از زبان‌های محبوب و جدید برای برنامه‌نویسی میکروکنترلرها، <strong>میکروپایتون</strong> است که بر پایه پایتون ساخته شده و یادگیری آن برای بسیاری از علاقه‌مندان، به‌ویژه کسانی که با پایتون آشنا هستند، بسیار ساده‌تر و لذت‌بخش‌تر است.</p><p>این مقاله، به‌صورت گام‌به‌گام و با زبانی روان، شما را با پروژه‌ای ساده ولی کاربردی آشنا می‌کند: <strong>روشن و خاموش کردن یک LED با استفاده از میکروپایتون و پین‌های GPIO</strong>. علاوه بر آموزش عملی، تحلیل‌های فنی و نکاتی ارائه می‌شود که از یک نویسنده باتجربه می‌توانید انتظار داشته باشید. پس اگر تازه به دنیای میکروکنترلرها وارد شده‌اید یا می‌خواهید پایه‌ای قوی در میکروپایتون بسازید، این مقاله مخصوص شماست.</p><h2 class="wp-block-heading" id="h-چرا-میکروپایتون-و-کنترل-led">چرا میکروپایتون و کنترل LED؟</h2><p>قبل از ورود به کدنویسی، بد نیست کمی درباره دلیل محبوبیت میکروپایتون و اهمیت کنترل LED توضیح بدهیم. میکروپایتون، نسخه‌ای سبک‌شده از زبان پایتون است که روی میکروکنترلرهای مختلف مانند ESP32، Raspberry Pi Pico، و دیگر بردها اجرا می‌شود. این زبان به‌دلیل سادگی نحو و گستردگی کتابخانه‌ها، امکان توسعه سریع و آسان پروژه‌های سخت‌افزاری را فراهم می‌کند.</p><p>کنترل LED به‌عنوان پروژه ابتدایی، فرصتی است برای آشنایی با مفاهیم پایه‌ای مانند پین‌های ورودی و خروجی (GPIO)، دستورات پایه و نحوه تعامل برنامه با سخت‌افزار. این پروژه نه‌تنها یادگیری مفید و کاربردی است، بلکه در پروژه‌های بزرگ‌تر، از جمله سیستم‌های هشدار، نمایشگرها و دستگاه‌های هوشمند، به‌عنوان بلوک ساختمانی استفاده می‌شود.</p><h2 class="wp-block-heading" id="h-گام-اول-آماده-سازی-محیط-و-ابزار-لازم">گام اول: آماده‌سازی محیط و ابزار لازم</h2><p>برای شروع پروژه کنترل LED با میکروپایتون، به موارد زیر نیاز دارید:</p><ul class="wp-block-list"><li>یک برد میکروکنترلر مانند Raspberry Pi Pico، ESP32 یا مشابه.</li>

<li>یک LED استاندارد (معمولاً LED قرمز ۵ میلی‌متری)</li>

<li>یک مقاومت 220 اهم برای محدود کردن جریان به LED</li>

<li>بردبرد (Breadboard) و چند کابل اتصال (Jumper wires)</li>

<li>محیط توسعه برای نوشتن و آپلود کد میکروپایتون (مثل Thonny IDE)</li>

<li>نصب فریمور میکروپایتون روی برد (در صورت نیاز)</li></ul><p>نکته مهم: قبل از شروع، اطمینان حاصل کنید که میکروپایتون به‌درستی روی برد نصب شده و IDE قادر به ارتباط با برد است.</p><h2 class="wp-block-heading" id="h-گام-دوم-آشنایی-با-پین-های-gpio">گام دوم: آشنایی با پین‌های GPIO</h2><p>GPIO مخفف General Purpose Input Output به معنی &#8220;ورودی/خروجی عمومی&#8221; است. این پین‌ها امکان برقراری ارتباط با قطعات خارجی مثل LED، سنسورها، دکمه‌ها و&#8230; را فراهم می‌کنند.</p><p>برای روشن کردن یک LED، یکی از پین‌های GPIO را به‌عنوان خروجی تعریف می‌کنیم و با ارسال ولتاژ مناسب، LED را روشن یا خاموش می‌کنیم. به عنوان مثال، در برد Raspberry Pi Pico پین‌های GPIO با عدد مشخص شده‌اند (GPIO0، GPIO1 و &#8230;).</p><h2 class="wp-block-heading" id="h-گام-سوم-مدار-ساده-روشن-و-خاموش-کردن-led">گام سوم: مدار ساده روشن و خاموش کردن LED</h2><p>اتصال مدار بسیار ساده است:</p><ul class="wp-block-list"><li>یکی از پایه‌های LED را به یک مقاومت 220 اهم متصل کنید.</li>

<li>سر دیگر مقاومت را به پین GPIO دلخواه روی برد وصل کنید.</li>

<li>پایه دیگر LED را به زمین (GND) متصل کنید.</li></ul><p>این اتصال تضمین می‌کند که جریان از برد به LED عبور کند و با فعال کردن پین GPIO، LED روشن شود.</p><h2 class="wp-block-heading" id="h-گام-چهارم-کدنویسی-میکروپایتون-برای-کنترل-led">گام چهارم: کدنویسی میکروپایتون برای کنترل LED</h2><p>حالا نوبت برنامه‌نویسی است. فرض کنیم از پین GPIO 15 برای LED استفاده می‌کنیم.</p><div class="code-block">
                        <button class="copy-code-btn">کپی</button>
                        <div class="line"></div>
                        <pre class="wp-block-code"><code>from machine import Pin
import time

# تعریف پین GPIO 15 به عنوان خروجی
led = Pin(15, Pin.OUT)

while True:
    led.value(1)  # روشن کردن LED
    time.sleep(1)  # توقف به مدت 1 ثانیه
    led.value(0)  # خاموش کردن LED
    time.sleep(1)  # توقف به مدت 1 ثانیه</code></pre>
                        <div class="line"></div>
                    </div><p><strong>توضیح کد:</strong></p><ul class="wp-block-list"><li>ابتدا ماژول‌های <code>machine</code> و <code>time</code> وارد می‌شوند. ماژول <code>machine</code> برای کنترل سخت‌افزار و <code>time</code> برای ایجاد تأخیر استفاده می‌شود.</li>

<li>با دستور <code>Pin(15, Pin.OUT)</code> پین شماره ۱۵ به عنوان خروجی تعریف می‌شود.</li>

<li>درون حلقه بی‌نهایت <code>while True</code>، ابتدا LED روشن (<code>value(1)</code>) و به مدت یک ثانیه نگه داشته می‌شود.</li>

<li>سپس LED خاموش (<code>value(0)</code>) و باز هم به مدت یک ثانیه صبر می‌کند.</li>

<li>این روند باعث می‌شود LED به صورت چشمک‌زن روشن و خاموش شود.</li></ul><h2 class="wp-block-heading">نکات مهم و تجربیات عملی</h2><h3 class="wp-block-heading">1. انتخاب پین مناسب</h3><p>هر برد میکروکنترلر پین‌های متفاوتی دارد و برخی پین‌ها ممکن است به عملکردهای خاص یا سنسورهای داخلی متصل باشند. قبل از استفاده، حتماً دیتاشیت برد خود را مطالعه کنید تا پین‌ها را به درستی انتخاب کنید.</p><h3 class="wp-block-heading">2. استفاده از مقاومت مناسب</h3><p>برای محافظت از LED و جلوگیری از آسیب به برد و LED، حتماً مقاومت مناسب (معمولاً 220 تا 330 اهم) استفاده کنید. جریان مستقیم بالای LED می‌تواند باعث سوختن آن شود.</p><h3 class="wp-block-heading">3. مدیریت مصرف انرژی</h3><p>اگر پروژه شما با باتری کار می‌کند، حواستان باشد که LED‌های روشن انرژی زیادی مصرف می‌کنند. با برنامه‌نویسی هوشمند، می‌توانید زمان روشن بودن LED را کنترل کنید یا از حالت‌های کم‌مصرف استفاده کنید.</p><h3 class="wp-block-heading">4. توسعه پروژه</h3><p>روشن و خاموش کردن ساده LED فقط شروع کار است. می‌توانید با افزودن دکمه، سنسور، یا حتی ارتباط بی‌سیم، پروژه خود را به سطوح بالاتر ببرید. برای مثال، کنترل LED از طریق Wi-Fi با ESP32 و میکروپایتون یا ایجاد الگوی چشمک زدن متنوع.</p><h2 class="wp-block-heading">تحلیل مزایا و محدودیت‌های میکروپایتون در این پروژه</h2><p>میکروپایتون با امکانات پایتون، کار با میکروکنترلرها را بسیار ساده کرده است و برای کسانی که پیش‌زمینه پایتون دارند، انتخاب ایده‌آلی است. اما محدودیت‌هایی هم دارد:</p><ul class="wp-block-list"><li>سرعت اجرای کد نسبت به زبان‌های سطح پایین‌تر (مثل C) کمتر است.</li>

<li>فضای حافظه محدود روی برخی بردها باعث می‌شود پروژه‌های بزرگ پیچیده سخت‌تر پیاده‌سازی شوند.</li>

<li>برخی کتابخانه‌های تخصصی میکروکنترلرها ممکن است هنوز کامل نشده باشند.</li></ul><p>با این حال، برای پروژه‌های آموزشی و نمونه‌سازی سریع، میکروپایتون بسیار جذاب و قدرتمند است.</p><h2 class="wp-block-heading">سوالات متداول (FAQ)</h2><p><strong>سؤال 1: آیا می‌توان چند LED را همزمان کنترل کرد؟</strong>بله، کافی است برای هر LED یک پین GPIO جداگانه تعریف کنید و به همان روش بالا، وضعیت هر LED را مدیریت کنید.</p><p><strong>سؤال 2: چرا LED من روشن نمی‌شود؟</strong>ممکن است دلایل مختلفی داشته باشد: اتصال نادرست مدار، مقاومت نامناسب، انتخاب پین اشتباه یا مشکل در آپلود کد. حتما مدار را دوباره بررسی کنید.</p><p><strong>سؤال 3: آیا می‌توانم با میکروپایتون سرعت چشمک زدن LED را تغییر دهم؟</strong>بله، کافی است مقدار زمان <code>sleep</code> را تغییر دهید. مثلاً <code>time.sleep(0.5)</code> برای نیم ثانیه.</p><p><strong>سؤال 4: میکروپایتون بهتر است یا Arduino برای پروژه‌های ساده؟</strong>اگر با پایتون آشنایی دارید، میکروپایتون گزینه سریع‌تر و ساده‌تری است. اما Arduino C/C++ به دلیل سرعت بیشتر و منابع گسترده‌تر، برای پروژه‌های بزرگ‌تر مناسب‌تر است.</p><p>کنترل LED با میکروپایتون یک پروژه ابتدایی، اما بسیار ارزشمند برای ورود به دنیای میکروکنترلرها و اینترنت اشیاء (IoT) است. یادگیری این مباحث پایه‌ای باعث می‌شود به راحتی بتوانید پروژه‌های پیچیده‌تر و کاربردی‌تری را در آینده طراحی و پیاده‌سازی کنید.</p><p>اگر این مقاله کنترل LED با میکروپایتون پروژه روشن و خاموش کردن LED برای شما مفید بود، آن را با دوستان خود به اشتراک بگذارید و برای مشاهده آموزش‌های بیشتر به سایت ما سر بزنید.</p><p></p>

<div class="kk-star-ratings kksr-auto kksr-align-center kksr-valign-bottom"
    data-payload='{&quot;align&quot;:&quot;center&quot;,&quot;id&quot;:&quot;43341&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;bottom&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;0&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;0&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;5&quot;,&quot;greet&quot;:&quot;امتیاز دادن به مطلب&quot;,&quot;legend&quot;:&quot;0\/5 - (0 امتیاز)&quot;,&quot;size&quot;:&quot;22&quot;,&quot;title&quot;:&quot;کنترل LED با میکروپایتون پروژه روشن و خاموش کردن LED&quot;,&quot;width&quot;:&quot;0&quot;,&quot;_legend&quot;:&quot;{score}\/{best} - ({count} {votes})&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>
            
<div class="kksr-stars">
    
<div class="kksr-stars-inactive">
            <div class="kksr-star" data-star="1" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="2" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="3" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="4" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="5" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
    </div>
    
<div class="kksr-stars-active" style="width: 0px;">
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
    </div>
</div>
                

<div class="kksr-legend" style="font-size: 17.6px;">
            <span class="kksr-muted">امتیاز دادن به مطلب</span>
    </div>
    </div>
<p>نوشته <a href="https://makingprojec.com/controlling-led-with-micropython-project-turning-led-on-and-off/">کنترل LED با میکروپایتون پروژه روشن و خاموش کردن LED</a> اولین بار در <a href="https://makingprojec.com">ساخت پروژه</a>. پدیدار شد.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://makingprojec.com/controlling-led-with-micropython-project-turning-led-on-and-off/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>آموزش پروتکل ارتباط سریال UART با میکروپایتون خواندن و نوشتن داده‌ها</title>
		<link>https://makingprojec.com/teaching-the-uart-serial-communication-protocol-with-micropython-to-read-and-write-data/</link>
					<comments>https://makingprojec.com/teaching-the-uart-serial-communication-protocol-with-micropython-to-read-and-write-data/#respond</comments>
		
		<dc:creator><![CDATA[ساخت پروژه]]></dc:creator>
		<pubDate>Wed, 14 May 2025 19:31:04 +0000</pubDate>
				<category><![CDATA[اموزش میکروپایتون Micropython]]></category>
		<category><![CDATA[وبلاگ اموزش الکترونیک]]></category>
		<guid isPermaLink="false">https://makingprojec.com/?p=39261</guid>

					<description><![CDATA[<p>آموزش پروتکل ارتباط سریال UART با میکروپایتون خواندن و نوشتن داده‌ها ، ارتباط سریال یکی از ساده‌ترین و پرکاربردترین روش‌ها برای انتقال داده‌ها بین دستگاه‌های الکترونیکی است. از این روش برای ارتباط میان میکروکنترلرها و سایر دستگاه‌ها نظیر کامپیوترها، ماژول‌های جانبی، حسگرها و حتی دیگر میکروکنترلرها استفاده می‌شود. میکروپایتون به‌عنوان یک زبان برنامه‌نویسی سطح بالا…</p>
<p>نوشته <a href="https://makingprojec.com/teaching-the-uart-serial-communication-protocol-with-micropython-to-read-and-write-data/">آموزش پروتکل ارتباط سریال UART با میکروپایتون خواندن و نوشتن داده‌ها</a> اولین بار در <a href="https://makingprojec.com">ساخت پروژه</a>. پدیدار شد.</p>
]]></description>
										<content:encoded><![CDATA[<p>آموزش پروتکل ارتباط سریال UART با میکروپایتون خواندن و نوشتن داده‌ها ، ارتباط سریال یکی از ساده‌ترین و پرکاربردترین روش‌ها برای انتقال داده‌ها بین دستگاه‌های الکترونیکی است. از این روش برای ارتباط میان میکروکنترلرها و سایر دستگاه‌ها نظیر کامپیوترها، ماژول‌های جانبی، حسگرها و حتی دیگر میکروکنترلرها استفاده می‌شود. میکروپایتون به‌عنوان یک زبان برنامه‌نویسی سطح بالا برای میکروکنترلرها، پشتیبانی عالی از ارتباط سریال فراهم می‌کند.</p><p>در این مقاله، به بررسی ارتباط سریال در میکروپایتون خواهیم پرداخت و نحوه خواندن و نوشتن داده‌ها از طریق پورت‌های سریال را با جزئیات کامل توضیح خواهیم داد. این مقاله به‌صورت گام‌به‌گام، از تنظیمات اولیه تا تکنیک‌های پیشرفته‌تر، شما را همراهی خواهد کرد.</p><h2 class="wp-block-heading" id="h-ارتباط-سریال-چیست">ارتباط سریال چیست؟</h2><p>ارتباط سریال به روشی اطلاق می‌شود که در آن داده‌ها به‌صورت دنباله‌ای از بیت‌ها یا بایت‌ها از یک دستگاه به دستگاه دیگر منتقل می‌شوند. این داده‌ها به‌طور معمول از طریق یک پورت سریال مانند UART (Universal Asynchronous Receiver/Transmitter) ارسال و دریافت می‌شوند. در این ارتباط، برخلاف ارتباطات موازی، تنها یک خط داده برای ارسال اطلاعات استفاده می‌شود که باعث کاهش پیچیدگی سخت‌افزار و افزایش فاصله انتقال داده‌ها می‌شود.</p><p>ارتباط سریال به دو دسته اصلی تقسیم می‌شود:</p><ol class="wp-block-list"><li><strong>ارتباط سریال با زمان‌بندی (Synchronous Serial Communication):</strong> در این نوع ارتباط، فرکانس انتقال داده‌ها با یک سیگنال کلاک هماهنگ است.</li>

<li><strong>ارتباط سریال بدون زمان‌بندی (Asynchronous Serial Communication):</strong> این نوع ارتباط، که معمولاً در ارتباطات سریال ساده‌تر مورد استفاده قرار می‌گیرد، از یک سیگنال کلاک ثابت استفاده نمی‌کند و داده‌ها به‌صورت مستقل از یکدیگر ارسال می‌شوند.</li></ol><p>در میکروپایتون، بیشتر از نوع <strong>Asynchronous Serial</strong> استفاده می‌شود، که در آن از پورت‌های سریال استاندارد مانند <strong>UART</strong> برای ارسال و دریافت داده‌ها بهره برده می‌شود.</p><h2 class="wp-block-heading" id="h-نحوه-استفاده-از-ارتباط-سریال-در-میکروپایتون">نحوه استفاده از ارتباط سریال در میکروپایتون</h2><h3 class="wp-block-heading" id="h-1-پیکربندی-پورت-سریال-در-میکروپایتون">1. پیکربندی پورت سریال در میکروپایتون</h3><p>برای شروع استفاده از پورت سریال در میکروپایتون، ابتدا باید پورت سریال را پیکربندی کنید. میکروپایتون از ماژول <code>machine</code> برای پیکربندی سخت‌افزار استفاده می‌کند و برای ارتباط سریال از شیء <code>UART</code> بهره می‌برد.</p><h4 class="wp-block-heading" id="h-نحوه-پیکربندی-پورت-سریال">نحوه پیکربندی پورت سریال</h4><p>در ابتدا، باید انتخاب کنید که کدام پورت سریال را می‌خواهید استفاده کنید. میکروپایتون به‌طور پیش‌فرض از پورت‌های UART0، UART1 و UART2 پشتیبانی می‌کند.</p><p>کد زیر نمونه‌ای از پیکربندی پورت سریال در میکروپایتون است:</p><div class="code-block">
                        <button class="copy-code-btn">کپی</button>
                        <div class="line"></div>
                        <pre class="wp-block-code"><code>import machine
import time

# پیکربندی پورت سریال 1 با سرعت 9600
uart = machine.UART(1, baudrate=9600, bits=8, parity=None, stop=2)

# ارسال یک پیام ساده به پورت سریال
uart.write('Hello, MicroPython!\n')</code></pre>
                        <div class="line"></div>
                    </div><p>در اینجا:</p><ul class="wp-block-list"><li><code>machine.UART(1)</code> برای انتخاب پورت سریال 1 استفاده شده است.</li>

<li><code>baudrate=9600</code> سرعت انتقال داده‌ها را مشخص می‌کند.</li>

<li><code>bits=8</code> تعداد بیت‌های داده را نشان می‌دهد.</li>

<li><code>parity=None</code> نشان‌دهنده این است که از چک‌سازی (parity) استفاده نمی‌شود.</li>

<li><code>stop=2</code> تعداد بیت‌های توقف را تعیین می‌کند.</li></ul><h3 class="wp-block-heading">2. خواندن داده‌ها از پورت سریال</h3><p>برای خواندن داده‌ها از پورت سریال، از متدهای <code>read()</code> و <code>readline()</code> استفاده می‌کنیم. اگر داده‌ای برای خواندن از پورت سریال موجود باشد، می‌توان آن‌ها را دریافت کرد. در کد زیر، داده‌ها به‌طور مداوم خوانده می‌شوند و به کنسول چاپ می‌شوند.</p><div class="code-block">
                        <button class="copy-code-btn">کپی</button>
                        <div class="line"></div>
                        <pre class="wp-block-code"><code>while True:
    if uart.any():  # اگر داده‌ای برای خواندن وجود داشته باشد
        data = uart.read()  # خواندن داده‌های موجود
        print('Received:', data)  # چاپ داده‌های دریافتی
    time.sleep(0.1)</code></pre>
                        <div class="line"></div>
                    </div><p>در اینجا:</p><ul class="wp-block-list"><li><code>uart.any()</code> بررسی می‌کند که آیا داده‌ای برای خواندن در پورت سریال موجود است یا خیر.</li>

<li><code>uart.read()</code> داده‌ها را می‌خواند.</li></ul><h3 class="wp-block-heading">3. ارسال داده‌ها به پورت سریال</h3><p>برای ارسال داده‌ها از میکروپایتون به دستگاه دیگری از متد <code>write()</code> استفاده می‌کنیم. این متد می‌تواند رشته‌های متنی، عددی یا داده‌های باینری را ارسال کند. در اینجا، یک پیام ساده ارسال می‌شود:</p><div class="code-block">
                        <button class="copy-code-btn">کپی</button>
                        <div class="line"></div>
                        <pre class="wp-block-code"><code>uart.write('This is a test message.\n')</code></pre>
                        <div class="line"></div>
                    </div><p>در صورتی که بخواهید داده‌ها را به‌صورت باینری ارسال کنید، کافی است از داده‌های باینری استفاده کنید:</p><div class="code-block">
                        <button class="copy-code-btn">کپی</button>
                        <div class="line"></div>
                        <pre class="wp-block-code"><code>uart.write(b'\x01\x02\x03')  # ارسال داده‌های باینری</code></pre>
                        <div class="line"></div>
                    </div><h3 class="wp-block-heading">4. استفاده از ارتباط سریال برای ارتباط دوطرفه</h3><p>در بسیاری از پروژه‌ها، نیاز به برقراری ارتباط دوطرفه با ارسال و دریافت داده‌ها به‌صورت همزمان است. برای مثال، می‌توان از میکروپایتون برای ارسال یک درخواست به یک دستگاه و دریافت پاسخ از آن استفاده کرد.</p><div class="code-block">
                        <button class="copy-code-btn">کپی</button>
                        <div class="line"></div>
                        <pre class="wp-block-code"><code># ارسال درخواست
uart.write('Request data\n')

# انتظار برای دریافت پاسخ
while True:
    if uart.any():
        response = uart.read()
        print('Response:', response)
        break</code></pre>
                        <div class="line"></div>
                    </div><p>این مثال نشان می‌دهد که پس از ارسال درخواست، میکروپایتون به انتظار دریافت پاسخ از دستگاه دیگر می‌ماند.</p><h2 class="wp-block-heading">نکات کلیدی در استفاده از ارتباط سریال</h2><h3 class="wp-block-heading">1. انتخاب صحیح baud rate</h3><p>انتخاب صحیح baud rate (سرعت انتقال داده‌ها) بسیار مهم است. سرعت انتقال داده‌ها باید در هر دو دستگاه یکسان باشد تا داده‌ها به درستی منتقل شوند. مقادیر معمولی که در بسیاری از دستگاه‌ها استفاده می‌شوند شامل 9600، 115200 و 57600 بیت بر ثانیه هستند. اگر baud rate به درستی تنظیم نشود، ممکن است داده‌ها به‌درستی منتقل نشوند یا به‌طور کامل خراب شوند.</p><h3 class="wp-block-heading">2. پیکربندی تعداد بیت‌های داده و بیت‌های توقف</h3><p>در تنظیمات ارتباط سریال، تعداد بیت‌های داده و بیت‌های توقف باید به‌طور یکسان در هر دو طرف ارتباط تنظیم شود. معمولاً تعداد بیت‌های داده برابر با 8 و تعداد بیت‌های توقف برابر با 1 است. در برخی از سیستم‌ها، می‌توان تعداد بیت‌های توقف را به 2 نیز تنظیم کرد.</p><h3 class="wp-block-heading">3. استفاده از Parity</h3><p>در برخی از ارتباطات سریال، از ویژگی <strong>Parity</strong> برای شناسایی خطاها استفاده می‌شود. این گزینه به‌طور معمول اختیاری است و برای کاربردهای ساده معمولاً از آن استفاده نمی‌شود. اگر از Parity استفاده کنید، ممکن است نیاز باشد که یک عدد فرد یا زوج را برای تشخیص خطاها تنظیم کنید.</p><h3 class="wp-block-heading">4. مشکلات رایج در ارتباط سریال</h3><p>در بسیاری از پروژه‌ها، ممکن است با مشکلاتی مانند افت سرعت انتقال داده‌ها یا ناسازگاری پورت‌ها مواجه شوید. در این صورت:</p><ul class="wp-block-list"><li>بررسی کنید که تنظیمات baud rate، bits و stop bits در هر دو طرف ارتباط یکسان باشد.</li>

<li>کابل‌ها و اتصالات را برای اطمینان از اتصال صحیح بررسی کنید.</li>

<li>مطمئن شوید که در صورت نیاز، فیلترهای نویز و محافظ‌های برق استفاده شده باشد.</li></ul><h2 class="wp-block-heading">سوالات متداول</h2><h3 class="wp-block-heading">1. چرا از ارتباط سریال استفاده می‌کنیم؟</h3><p>ارتباط سریال به دلیل سادگی، هزینه کم و توانایی ارسال داده‌ها در مسافت‌های طولانی، یکی از بهترین روش‌ها برای ارتباط میان میکروکنترلرها و دستگاه‌های دیگر است.</p><h3 class="wp-block-heading">2. چه دستگاه‌هایی از ارتباط سریال پشتیبانی می‌کنند؟</h3><p>تقریباً تمام میکروکنترلرها مانند ESP32، آردوینو و STM32 از ارتباط سریال پشتیبانی می‌کنند. همچنین بسیاری از ماژول‌های جانبی مانند ماژول‌های بلوتوث، GPS و ماژول‌های وای‌فای نیز از این روش برای ارتباط استفاده می‌کنند.</p><h3 class="wp-block-heading">3. چگونه می‌توانم مشکلات ارتباط سریال را رفع کنم؟</h3><p>برای رفع مشکلات ارتباط سریال، اطمینان حاصل کنید که baud rate و تنظیمات پارامترهای ارتباطی در هر دو دستگاه یکسان باشد. همچنین، بررسی اتصالات و کابل‌های ارتباطی ممکن است به حل مشکلات کمک کند.</p><h2 class="wp-block-heading">نتیجه‌گیری</h2><p>ارتباط سریال در میکروپایتون ابزاری قدرتمند برای برقراری ارتباط بین میکروکنترلرها و دیگر دستگاه‌ها است. با استفاده از پورت‌های سریال، می‌توان به‌راحتی داده‌ها را ارسال و دریافت کرد و از آن در بسیاری از پروژه‌های میکروکنترلی بهره برد. در این مقاله، نحوه پیکربندی پورت سریال، خواندن و نوشتن داده‌ها، و نکات کلیدی در استفاده از ارتباط سریال را بررسی کردیم.</p><p>آموزش پروتکل ارتباط سریال UART با میکروپایتون خواندن و نوشتن داده‌ها</p><p><strong>مطلب پیشنهادی</strong></p><p><a href="https://makingprojec.com/getting-started-with-the-thonny-micropython-programming-environment-upycraft-and-vs-code/" target="_blank" rel="noreferrer noopener">شروع کار با محیط برنامه‌ نویسی میکروپایتون Thonny ، uPyCraft و VS Code</a></p><p><a href="https://makingprojec.com/learning-how-to-store-data-in-sd-module-memory-card-with-arduino/" target="_blank" rel="noreferrer noopener">آموزش کارت حافظه ماژول SD با آردوینو Arduino ذخیره‌ سازی داده‌ ها</a></p>

<div class="kk-star-ratings kksr-auto kksr-align-center kksr-valign-bottom"
    data-payload='{&quot;align&quot;:&quot;center&quot;,&quot;id&quot;:&quot;39261&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;bottom&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;0&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;0&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;5&quot;,&quot;greet&quot;:&quot;امتیاز دادن به مطلب&quot;,&quot;legend&quot;:&quot;0\/5 - (0 امتیاز)&quot;,&quot;size&quot;:&quot;22&quot;,&quot;title&quot;:&quot;آموزش پروتکل ارتباط سریال UART با میکروپایتون خواندن و نوشتن داده‌ها&quot;,&quot;width&quot;:&quot;0&quot;,&quot;_legend&quot;:&quot;{score}\/{best} - ({count} {votes})&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>
            
<div class="kksr-stars">
    
<div class="kksr-stars-inactive">
            <div class="kksr-star" data-star="1" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="2" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="3" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="4" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="5" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
    </div>
    
<div class="kksr-stars-active" style="width: 0px;">
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
    </div>
</div>
                

<div class="kksr-legend" style="font-size: 17.6px;">
            <span class="kksr-muted">امتیاز دادن به مطلب</span>
    </div>
    </div>
<p>نوشته <a href="https://makingprojec.com/teaching-the-uart-serial-communication-protocol-with-micropython-to-read-and-write-data/">آموزش پروتکل ارتباط سریال UART با میکروپایتون خواندن و نوشتن داده‌ها</a> اولین بار در <a href="https://makingprojec.com">ساخت پروژه</a>. پدیدار شد.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://makingprojec.com/teaching-the-uart-serial-communication-protocol-with-micropython-to-read-and-write-data/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>چگونه میکروپایتون را روی ESP32 یا ESP8266 نصب کنیم ؟</title>
		<link>https://makingprojec.com/how-to-install-micropython-on-esp32-or-esp8266/</link>
					<comments>https://makingprojec.com/how-to-install-micropython-on-esp32-or-esp8266/#respond</comments>
		
		<dc:creator><![CDATA[ساخت پروژه]]></dc:creator>
		<pubDate>Sun, 13 Apr 2025 19:14:33 +0000</pubDate>
				<category><![CDATA[اموزش میکروپایتون Micropython]]></category>
		<category><![CDATA[وبلاگ اموزش الکترونیک]]></category>
		<guid isPermaLink="false">https://makingprojec.com/?p=38609</guid>

					<description><![CDATA[<p>چگونه میکروپایتون را روی ESP32 یا ESP8266 نصب کنیم ؟ ، میکروپایتون (MicroPython) یک پیاده‌سازی سبک از زبان برنامه‌نویسی پایتون است که برای میکروکنترلرها طراحی شده است. این ابزار به توسعه‌دهندگان اجازه می‌دهد تا با استفاده از زبان ساده و محبوب پایتون، سخت‌افزارهای تعبیه‌شده مانند ESP32 و ESP8266 را برنامه‌ریزی کنند. در این مقاله، مراحل…</p>
<p>نوشته <a href="https://makingprojec.com/how-to-install-micropython-on-esp32-or-esp8266/">چگونه میکروپایتون را روی ESP32 یا ESP8266 نصب کنیم ؟</a> اولین بار در <a href="https://makingprojec.com">ساخت پروژه</a>. پدیدار شد.</p>
]]></description>
										<content:encoded><![CDATA[<p>چگونه میکروپایتون را روی ESP32 یا ESP8266 نصب کنیم ؟ ، میکروپایتون (MicroPython) یک پیاده‌سازی سبک از زبان برنامه‌نویسی پایتون است که برای میکروکنترلرها طراحی شده است. این ابزار به توسعه‌دهندگان اجازه می‌دهد تا با استفاده از زبان ساده و محبوب پایتون، سخت‌افزارهای تعبیه‌شده مانند ESP32 و ESP8266 را برنامه‌ریزی کنند. در این مقاله، مراحل نصب میکروپایتون روی این بردها را با جزئیات کامل و دقیق بررسی خواهیم کرد و نکات کلیدی برای استفاده بهتر از این ابزار ارائه می‌دهیم.</p><h3 class="wp-block-heading" id="h-مقدمه-چرا-میکروپایتون"><strong>مقدمه: چرا میکروپایتون؟</strong></h3><p>در دنیای توسعه سیستم‌های تعبیه‌شده، زبان‌های برنامه‌نویسی C و C++ همچنان محبوبیت دارند، اما یادگیری و استفاده از آن‌ها ممکن است برای بسیاری از توسعه‌دهندگان چالش‌برانگیز باشد. اینجاست که میکروپایتون وارد میدان می‌شود. میکروپایتون با فراهم کردن امکاناتی مانند کتابخانه‌های آماده، سهولت در خوانایی کد و اجرای مستقیم دستورات، یکی از بهترین گزینه‌ها برای برنامه‌نویسی میکروکنترلرها محسوب می‌شود.</p><p>بردهای ESP32 و ESP8266 به دلیل قیمت مناسب، ابعاد کوچک و پشتیبانی از وای‌فای، انتخابی ایده‌آل برای پروژه‌های اینترنت اشیا (IoT) هستند. با نصب میکروپایتون روی این بردها، می‌توانید پروژه‌هایی مانند کنترل دستگاه‌های خانگی، جمع‌آوری داده‌های سنسورها و ساخت گجت‌های هوشمند را به سادگی پیاده‌سازی کنید.</p><h3 class="wp-block-heading" id="h-پیش-نیازهای-نصب-میکروپایتون"><strong>پیش‌نیازهای نصب میکروپایتون</strong></h3><p>برای نصب میکروپایتون، به ابزارها و تجهیزات زیر نیاز دارید:</p><ul class="wp-block-list"><li><strong>برد ESP32 یا ESP8266</strong>: هر دو برد از میکروپایتون پشتیبانی می‌کنند و بسته به نیاز پروژه، می‌توانید یکی را انتخاب کنید.</li>

<li><strong>کابل USB</strong>: برای اتصال برد به کامپیوتر و انتقال داده‌ها.</li>

<li><strong>نرم‌افزار esptool</strong>: ابزاری برای فلش کردن فریمور میکروپایتون.</li>

<li><strong>کامپیوتر با سیستم‌عامل ویندوز، مک یا لینوکس</strong>: نصب روی هر سه سیستم‌عامل امکان‌پذیر است.</li>

<li><strong>دسترسی به اینترنت</strong>: برای دانلود فریمور و ابزارهای لازم.</li>

<li><strong>درایور USB</strong>: ممکن است برای شناسایی برد توسط سیستم، به نصب درایورهای CH340 یا CP210x نیاز داشته باشید.</li></ul><h3 class="wp-block-heading" id="h-مرحله-۱-نصب-esptool"><strong>مرحله ۱: نصب esptool</strong></h3><p><strong>esptool</strong> یک ابزار متن‌باز است که به شما امکان می‌دهد فریمورهای مختلف را روی بردهای ESP32 و ESP8266 فلش کنید. این ابزار با استفاده از پایتون مدیریت می‌شود.</p><h4 class="wp-block-heading" id="h-مراحل-نصب">مراحل نصب:</h4><ol class="wp-block-list"><li>ابتدا مطمئن شوید که پایتون و pip روی سیستم شما نصب هستند. برای بررسی، دستور زیر را در ترمینال اجرا کنید: <code>python --version pip --version</code></li>

<li>سپس esptool را با استفاده از pip نصب کنید: <code>pip install esptool</code></li>

<li>پس از نصب، دستور زیر را اجرا کنید تا از نصب موفقیت‌آمیز مطمئن شوید: <code>esptool.py --version</code></li></ol><h3 class="wp-block-heading" id="h-مرحله-۲-دانلود-فریمور-میکروپایتون"><strong>مرحله ۲: دانلود فریمور میکروپایتون</strong></h3><p>برای دانلود فریمور میکروپایتون:</p><ol class="wp-block-list"><li>به وب‌سایت رسمی <a href="https://micropython.org/download/">MicroPython</a> مراجعه کنید.</li>

<li>برد مورد نظر (ESP32 یا ESP8266) را انتخاب کنید.</li>

<li>نسخه پایدار (Stable) فریمور را دانلود کنید. فایل فریمور معمولاً با پسوند &#8220;.bin&#8221; ذخیره می‌شود و در فولدر Downloads ذخیره خواهد شد.</li></ol><h3 class="wp-block-heading" id="h-مرحله-۳-آماده-سازی-برد"><strong>مرحله ۳: آماده‌سازی برد</strong></h3><h4 class="wp-block-heading" id="h-اتصال-و-تنظیمات-اولیه">اتصال و تنظیمات اولیه:</h4><ol class="wp-block-list"><li>برد ESP را با استفاده از کابل USB به کامپیوتر متصل کنید.</li>

<li>درایورهای USB مورد نیاز (مانند CH340 یا CP210x) را نصب کنید. این درایورها به سیستم کمک می‌کنند تا برد شما را شناسایی کند.</li>

<li>پورت سریال متصل به برد را شناسایی کنید:<ul><li>در ویندوز: از <strong>Device Manager</strong> استفاده کنید و در بخش &#8220;Ports (COM &amp; LPT)&#8221; پورت را مشاهده کنید.</li><li>در لینوکس: دستور زیر را اجرا کنید: <code>ls /dev/tty*</code></li></ul>معمولاً بردهای ESP به صورت &#8220;/dev/ttyUSB0&#8221; یا &#8220;COM3&#8221; شناسایی می‌شوند.</li></ol><h3 class="wp-block-heading" id="h-مرحله-۴-فلش-کردن-فریمور-میکروپایتون"><strong>مرحله ۴: فلش کردن فریمور میکروپایتون</strong></h3><h4 class="wp-block-heading" id="h-پاک-کردن-حافظه-فلش">پاک کردن حافظه فلش:</h4><p>قبل از فلش کردن، بهتر است حافظه فلش برد را پاک کنید:</p><div class="code-block">
                        <button class="copy-code-btn">کپی</button>
                        <div class="line"></div>
                        <pre class="wp-block-code"><code>esptool.py --port &lt;PORT&gt; erase_flash
</code></pre>
                        <div class="line"></div>
                    </div><p>جایگزین <code>&lt;PORT&gt;</code>، پورت سریال برد (مانند COM3 در ویندوز یا /dev/ttyUSB0 در لینوکس) شود.</p><h4 class="wp-block-heading" id="h-فلش-کردن-فریمور">فلش کردن فریمور:</h4><ol class="wp-block-list"><li>دستور زیر را اجرا کنید تا فریمور میکروپایتون را فلش کنید: <code>esptool.py --port &lt;PORT> --baud 460800 write_flash -z 0x1000 &lt;firmware>.bin</code> جایگزین <code>&lt;PORT></code>، پورت سریال برد و <code>&lt;firmware>.bin</code>، مسیر فایل فریمور دانلود شده شود.</li>

<li>پس از پایان فلش کردن، برد را ریست کنید.</li></ol><h3 class="wp-block-heading" id="h-مرحله-۵-اتصال-به-برد-با-استفاده-از-repl"><strong>مرحله ۵: اتصال به برد با استفاده از REPL</strong></h3><p>REPL (Read-Eval-Print Loop) محیط تعاملی میکروپایتون است که به شما اجازه می‌دهد دستورات را به صورت مستقیم روی برد اجرا کنید.</p><h4 class="wp-block-heading" id="h-اتصال-به-repl">اتصال به REPL:</h4><ol class="wp-block-list"><li>نرم‌افزارهایی مانند <a href="https://www.putty.org/">PuTTY</a>، <a href="https://ttssh2.osdn.jp/">Tera Term</a> یا ابزارهای خط فرمان مانند <strong>screen</strong> یا <strong>minicom</strong> را نصب کنید.</li>

<li>به پورت سریال برد متصل شوید:<ul class="wp-block-list"><li>در ویندوز (با PuTTY):<ul class="wp-block-list"><li>Type: Serial</li>

<li>Port: (مانند COM3)</li>

<li>Speed: 115200</li></ul></li>

<li>در لینوکس: <code>screen &lt;PORT> 115200</code></li></ul></li>

<li>اگر مراحل به درستی انجام شده باشد، می‌توانید از طریق ترمینال به محیط REPL دسترسی پیدا کنید و با تایپ کدهای پایتون، نتیجه آن‌ها را مشاهده کنید.</li></ol><h3 class="wp-block-heading" id="h-نکات-تکمیلی-و-ترفندها"><strong>نکات تکمیلی و ترفندها</strong></h3><ul class="wp-block-list"><li><strong>نصب کتابخانه‌ها:</strong> با استفاده از upip (مدیریت بسته در میکروپایتون)، می‌توانید کتابخانه‌های اضافی را نصب کنید: <code>import upip upip.install('micropython-umqtt.simple')</code></li>

<li><strong>ذخیره کد در فایل‌ها:</strong> کدهای خود را در فایل‌های &#8220;.py&#8221; ذخیره کنید و به صورت دائمی روی برد اجرا کنید: <code>with open('main.py', 'w') as f: f.write("print('Hello, MicroPython!')")</code></li>

<li><strong>رفع مشکلات رایج:</strong> اگر برد به درستی کار نمی‌کند:<ul class="wp-block-list"><li>اطمینان حاصل کنید که حافظه فلش پاک شده است.</li>

<li>درایورهای USB به‌روز باشند.</li></ul></li></ul><h3 class="wp-block-heading" id="h-سوالات-متداول-faq"><strong>سوالات متداول (FAQ)</strong></h3><p><strong>1. آیا می‌توان میکروپایتون را روی دیگر بردها نصب کرد؟</strong> بله، میکروپایتون برای بردهای دیگری مانند Pyboard، Raspberry Pi Pico و STM32 نیز قابل استفاده است.</p><p><strong>2. چرا برد من به REPL متصل نمی‌شود؟</strong> احتمالاً درایور USB نصب نشده است یا پورت سریال به اشتباه انتخاب شده است. پورت صحیح را بررسی کنید.</p><p><strong>3. آیا امکان نصب کتابخانه‌های اضافی وجود دارد؟</strong> بله، می‌توانید از ابزارهایی مانند upip برای نصب کتابخانه‌های پایتون استفاده کنید.</p><p><strong>4. چگونه برد را ریست کنم؟</strong> معمولاً بردهای ESP دارای دکمه ریست هستند. همچنین می‌توانید از محیط REPL برای اجرای دستورات ریست استفاده کنید.</p><h3 class="wp-block-heading" id="h-نتیجه-گیری"><strong>نتیجه‌گیری</strong></h3><p>نصب میکروپایتون روی ESP32 و ESP8266 یکی از بهترین روش‌ها برای شروع پروژه‌های IoT است. این زبان با فراهم کردن امکانات گسترده و سادگی در استفاده، به توسعه‌دهندگان کمک می‌کند تا ایده‌های خود را سریع‌تر و با کمترین هزینه به واقعیت تبدیل کنند. اگر به دنبال یادگیری عمیق‌تر هستید، پیشنهاد می‌کنیم به مستندات رسمی میکروپایتون و منابع آموزشی آنلاین مراجعه کنید.</p><p><strong>آیا این آموزش برای شما مفید بود؟ نظرات خود را با ما به اشتراک بگذارید!</strong></p><p>چگونه میکروپایتون را روی ESP32 یا ESP8266 نصب کنیم ؟</p><p><strong>مطلب پیشنهادی</strong></p><p><a href="https://makingprojec.com/types-of-atmega-microcontrollers-and-their-comparison/" target="_blank" rel="noreferrer noopener">انواع میکروکنترلرهای شرکت Atmega و مقایسه آنها</a></p><p><a href="https://makingprojec.com/training-to-set-up-and-install-the-ft232-driver/" target="_blank" rel="noreferrer noopener">اموزش راه اندازی و نصب درایور FT232</a></p><p></p>

<div class="kk-star-ratings kksr-auto kksr-align-center kksr-valign-bottom"
    data-payload='{&quot;align&quot;:&quot;center&quot;,&quot;id&quot;:&quot;38609&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;bottom&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;1&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;5&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;5&quot;,&quot;greet&quot;:&quot;امتیاز دادن به مطلب&quot;,&quot;legend&quot;:&quot;5\/5 - (1 امتیاز)&quot;,&quot;size&quot;:&quot;22&quot;,&quot;title&quot;:&quot;چگونه میکروپایتون را روی ESP32 یا ESP8266 نصب کنیم ؟&quot;,&quot;width&quot;:&quot;132.5&quot;,&quot;_legend&quot;:&quot;{score}\/{best} - ({count} {votes})&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>
            
<div class="kksr-stars">
    
<div class="kksr-stars-inactive">
            <div class="kksr-star" data-star="1" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="2" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="3" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="4" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="5" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
    </div>
    
<div class="kksr-stars-active" style="width: 132.5px;">
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
    </div>
</div>
                

<div class="kksr-legend" style="font-size: 17.6px;">
            5/5 - (1 امتیاز)    </div>
    </div>
<p>نوشته <a href="https://makingprojec.com/how-to-install-micropython-on-esp32-or-esp8266/">چگونه میکروپایتون را روی ESP32 یا ESP8266 نصب کنیم ؟</a> اولین بار در <a href="https://makingprojec.com">ساخت پروژه</a>. پدیدار شد.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://makingprojec.com/how-to-install-micropython-on-esp32-or-esp8266/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>شروع کار با محیط برنامه‌ نویسی میکروپایتون Thonny ، uPyCraft و VS Code</title>
		<link>https://makingprojec.com/getting-started-with-the-thonny-micropython-programming-environment-upycraft-and-vs-code/</link>
					<comments>https://makingprojec.com/getting-started-with-the-thonny-micropython-programming-environment-upycraft-and-vs-code/#respond</comments>
		
		<dc:creator><![CDATA[ساخت پروژه]]></dc:creator>
		<pubDate>Tue, 28 Jan 2025 18:00:00 +0000</pubDate>
				<category><![CDATA[اموزش میکروپایتون Micropython]]></category>
		<category><![CDATA[وبلاگ اموزش الکترونیک]]></category>
		<guid isPermaLink="false">https://makingprojec.com/?p=38972</guid>

					<description><![CDATA[<p>شروع کار با محیط برنامه‌ نویسی میکروپایتون Thonny ، uPyCraft و VS Code ، میکروپایتون یکی از زبان‌های برنامه‌نویسی پیشرفته و پرکاربرد برای دستگاه‌های تعبیه‌شده و میکروکنترلرها است. این زبان، نسخه‌ای از پایتون است که به‌طور خاص برای سیستم‌های تعبیه‌شده طراحی شده و با بهره‌گیری از آن، توسعه‌دهندگان می‌توانند به راحتی و با کدهای ساده،…</p>
<p>نوشته <a href="https://makingprojec.com/getting-started-with-the-thonny-micropython-programming-environment-upycraft-and-vs-code/">شروع کار با محیط برنامه‌ نویسی میکروپایتون Thonny ، uPyCraft و VS Code</a> اولین بار در <a href="https://makingprojec.com">ساخت پروژه</a>. پدیدار شد.</p>
]]></description>
										<content:encoded><![CDATA[<p>شروع کار با محیط برنامه‌ نویسی میکروپایتون Thonny ، uPyCraft و VS Code ، میکروپایتون یکی از زبان‌های برنامه‌نویسی پیشرفته و پرکاربرد برای دستگاه‌های تعبیه‌شده و میکروکنترلرها است. این زبان، نسخه‌ای از پایتون است که به‌طور خاص برای سیستم‌های تعبیه‌شده طراحی شده و با بهره‌گیری از آن، توسعه‌دهندگان می‌توانند به راحتی و با کدهای ساده، قابلیت‌های پیشرفته‌ای را در دستگاه‌های خود پیاده‌سازی کنند. در این مقاله جامع، به معرفی محیط‌های توسعه (IDE) مناسب برای میکروپایتون و نحوه تنظیم هر یک می‌پردازیم. هدف ما این است که نه تنها اطلاعات کاربردی ارائه کنیم، بلکه بینشی عمیق برای کاربران فراهم آوریم تا بتوانند بهترین تصمیم را برای پروژه‌های خود بگیرند.</p><h3 class="wp-block-heading" id="h-چرا-انتخاب-محیط-توسعه-مناسب-اهمیت-دارد"><strong>چرا انتخاب محیط توسعه مناسب اهمیت دارد؟</strong></h3><p>هنگامی که میکروپایتون را برای پروژه‌های خود انتخاب می‌کنید، یکی از اولین گام‌ها انتخاب یک محیط توسعه (IDE) مناسب است. یک IDE کارآمد نه تنها فرآیند کدنویسی را ساده‌تر می‌کند، بلکه ابزارهای پیشرفته‌ای برای دیباگ، مدیریت فایل و ارتباط با میکروکنترلر در اختیار شما قرار می‌دهد. این ابزارها می‌توانند به شما در صرفه‌جویی زمان، کاهش خطاها و افزایش بهره‌وری کمک کنند. حال بیایید سه محیط توسعه محبوب را بررسی کنیم.</p><h3 class="wp-block-heading" id="h-معرفی-محیط-های-توسعه-ide-برای-میکروپایتون"><strong>معرفی محیط‌های توسعه (IDE) برای میکروپایتون</strong></h3><h4 class="wp-block-heading" id="h-1-thonny"><strong>1. Thonny</strong></h4><p>Thonny یکی از بهترین گزینه‌ها برای شروع کار با میکروپایتون است. این IDE به دلیل رابط کاربری ساده و طراحی کاربرپسند خود، محبوبیت زیادی بین تازه‌کاران دارد. حتی اگر اولین بار است که با میکروکنترلرها کار می‌کنید، Thonny شما را به راحتی در مسیر درست هدایت می‌کند.</p><p><strong>ویژگی‌ها:</strong></p><ul class="wp-block-list"><li>رابط کاربری بسیار ساده و مینیمال</li>

<li>ابزار دیباگ داخلی برای مشاهده متغیرها و اجرای گام به گام کد</li>

<li>قابلیت تشخیص خودکار میکروکنترلر متصل شده</li>

<li>پشتیبانی از نصب ماژول‌های میکروپایتون</li></ul><p><strong>نحوه تنظیم:</strong></p><ol class="wp-block-list"><li>Thonny را از <a href="https://thonny.org/">وب‌سایت رسمی Thonny</a> دانلود و نصب کنید.</li>

<li>میکروکنترلر خود را با استفاده از کابل USB به سیستم متصل کنید.</li>

<li>در منوی <strong>Interpreter</strong>، گزینه مربوط به MicroPython (برای مثال، MicroPython (ESP32)) را انتخاب کنید.</li>

<li>اکنون می‌توانید کد خود را بنویسید و مستقیماً روی دستگاه اجرا کنید.</li></ol><h4 class="wp-block-heading" id="h-2-upycraft"><strong>2. uPyCraft</strong></h4><p>uPyCraft یکی دیگر از محیط‌های توسعه محبوب برای میکروپایتون است. این ابزار به‌ویژه برای توسعه‌دهندگانی طراحی شده که با میکروکنترلرهایی مانند ESP8266 و ESP32 کار می‌کنند. رابط کاربری این IDE ساده است اما امکانات پیشرفته‌ای برای کاربران حرفه‌ای ارائه می‌دهد.</p><p><strong>ویژگی‌ها:</strong></p><ul class="wp-block-list"><li>پشتیبانی از مدیریت فایل‌ها در میکروکنترلر</li>

<li>قابلیت فلش کردن firmware مستقیماً از محیط IDE</li>

<li>ابزارهای دیباگ و مشاهده لاگ‌ها</li></ul><p><strong>نحوه تنظیم:</strong></p><ol class="wp-block-list"><li>uPyCraft را از <a href="https://github.com/">وب‌سایت رسمی uPyCraft</a> دانلود کنید.</li>

<li>پس از نصب، میکروکنترلر را با استفاده از کابل USB متصل کرده و IDE را باز کنید.</li>

<li>به منوی <strong>Tools</strong> رفته و پورت سریال مربوط به میکروکنترلر خود را انتخاب کنید.</li>

<li>حالا می‌توانید کدنویسی را آغاز کنید.</li></ol><h4 class="wp-block-heading" id="h-3-visual-studio-code-vs-code"><strong>3. Visual Studio Code (VS Code)</strong></h4><p>Visual Studio Code یا به اختصار VS Code، یکی از قدرتمندترین ابزارهای توسعه نرم‌افزار است که می‌توانید آن را برای پروژه‌های میکروپایتون نیز استفاده کنید. با نصب چند افزونه کاربردی، این IDE به یک محیط توسعه کامل و حرفه‌ای برای میکروکنترلرها تبدیل می‌شود.</p><p><strong>ویژگی‌ها:</strong></p><ul class="wp-block-list"><li>امکان سفارشی‌سازی با افزونه‌های متنوع</li>

<li>ابزارهای دیباگ پیشرفته</li>

<li>قابلیت ادغام با سیستم‌های کنترل نسخه مانند Git</li>

<li>مدیریت پروژه‌های بزرگ و چندفایلی</li></ul><p><strong>نحوه تنظیم:</strong></p><ol class="wp-block-list"><li>VS Code را از <a href="https://code.visualstudio.com/">وب‌سایت رسمی Visual Studio Code</a> دانلود و نصب کنید.</li>

<li>افزونه‌های زیر را نصب کنید:<ul class="wp-block-list"><li><strong>Pymakr</strong>: برای ارتباط با دستگاه‌های میکروپایتون</li>

<li><strong>Python</strong>: برای اجرای کدهای پایتون و تکمیل خودکار</li></ul></li>

<li>پس از نصب افزونه‌ها، میکروکنترلر خود را متصل کرده و تنظیمات مربوط به پورت سریال را انجام دهید.</li>

<li>حالا می‌توانید کدهای خود را نوشته و روی دستگاه اجرا کنید.</li></ol><h3 class="wp-block-heading" id="h-مقایسه-محیط-های-توسعه"><strong>مقایسه محیط‌های توسعه</strong></h3><figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>ویژگی</th><th>Thonny</th><th>uPyCraft</th><th>VS Code</th></tr></thead><tbody><tr><td>رابط کاربری</td><td>ساده و مناسب برای مبتدیان</td><td>سبک و سریع</td><td>پیشرفته و قابل تنظیم</td></tr><tr><td>ابزار دیباگ</td><td>بله</td><td>بله</td><td>بله</td></tr><tr><td>پشتیبانی از افزونه‌ها</td><td>خیر</td><td>خیر</td><td>بله</td></tr><tr><td>مناسب برای مبتدیان</td><td>بله</td><td>خیر</td><td>خیر</td></tr><tr><td>مناسب برای پروژه‌های بزرگ</td><td>خیر</td><td>خیر</td><td>بله</td></tr></tbody></table></figure><h3 class="wp-block-heading" id="h-سوالات-متداول-faq"><strong>سوالات متداول (FAQ)</strong></h3><h4 class="wp-block-heading" id="h-چرا-thonny-برای-تازه-کاران-مناسب-است"><strong>چرا Thonny برای تازه‌کاران مناسب است؟</strong></h4><p>رابط کاربری ساده و ابزارهای کاربرپسند، Thonny را به گزینه‌ای ایده‌آل برای کسانی که تجربه کمی با میکروپایتون دارند تبدیل کرده است.</p><h4 class="wp-block-heading" id="h-آیا-می-توانم-از-vs-code-برای-پروژه-های-کوچک-استفاده-کنم"><strong>آیا می‌توانم از VS Code برای پروژه‌های کوچک استفاده کنم؟</strong></h4><p>بله، اما استفاده از VS Code برای پروژه‌های کوچک ممکن است بیش از حد پیشرفته به نظر برسد. اگر نیاز به ابزارهای ساده دارید، Thonny یا uPyCraft مناسب‌تر هستند.</p><h4 class="wp-block-heading" id="h-کدام-ide-برای-دیباگ-بهتر-است"><strong>کدام IDE برای دیباگ بهتر است؟</strong></h4><p>هر سه IDE ابزارهای دیباگ قدرتمندی ارائه می‌دهند، اما VS Code با قابلیت‌های پیشرفته خود برای پروژه‌های پیچیده و تیمی مناسب‌تر است.</p><h4 class="wp-block-heading" id="h-آیا-می-توانم-از-چند-ide-به-صورت-همزمان-استفاده-کنم"><strong>آیا می‌توانم از چند IDE به صورت همزمان استفاده کنم؟</strong></h4><p>بله، اما توصیه می‌شود از یک IDE اصلی استفاده کنید و فقط در موارد خاص به ابزارهای دیگر مراجعه کنید.</p><h3 class="wp-block-heading" id="h-نکات-پایانی-چگونه-بهترین-انتخاب-را-داشته-باشیم"><strong>نکات پایانی: چگونه بهترین انتخاب را داشته باشیم؟</strong></h3><p>انتخاب محیط توسعه مناسب به سطح تجربه، نیازهای پروژه و ترجیحات شخصی شما بستگی دارد. اگر تازه‌کار هستید و به دنبال محیطی ساده هستید، Thonny بهترین انتخاب است. برای پروژه‌های پیشرفته‌تر یا تیمی، VS Code گزینه‌ای بی‌رقیب است. در نهایت، مهم این است که محیطی را انتخاب کنید که کار با آن برای شما راحت‌تر باشد.</p><p>برای یادگیری بیشتر و دریافت راهنمایی‌های دقیق‌تر، مقالات دیگر ما را مطالعه کنید و دانش خود را ارتقا دهید. همچنین می‌توانید نظرات و تجربیات خود را با ما در میان بگذارید تا از دیدگاه‌های شما نیز بهره‌مند شویم.</p><p>شروع کار با محیط برنامه‌ نویسی میکروپایتون Thonny ، uPyCraft و VS Code</p><p><strong>مطلب پیشنهادی</strong></p><p><a href="https://makingprojec.com/arduino-is-a-powerful-platform-for-building-electronic-projects/" target="_blank" rel="noreferrer noopener">اردوینو یک پلتفرم قدرتمند برای ساخت پروژه‌های الکترونیکی</a></p><p><a href="https://makingprojec.com/change-arduino-theme-from-light-to-dark/" target="_blank" rel="noreferrer noopener">تغییر تم اردوینو از روشن به تیره (light &#8211; Dark)</a></p><p></p>

<div class="kk-star-ratings kksr-auto kksr-align-center kksr-valign-bottom"
    data-payload='{&quot;align&quot;:&quot;center&quot;,&quot;id&quot;:&quot;38972&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;bottom&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;0&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;0&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;5&quot;,&quot;greet&quot;:&quot;امتیاز دادن به مطلب&quot;,&quot;legend&quot;:&quot;0\/5 - (0 امتیاز)&quot;,&quot;size&quot;:&quot;22&quot;,&quot;title&quot;:&quot;شروع کار با محیط برنامه‌ نویسی میکروپایتون Thonny ، uPyCraft و VS Code&quot;,&quot;width&quot;:&quot;0&quot;,&quot;_legend&quot;:&quot;{score}\/{best} - ({count} {votes})&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>
            
<div class="kksr-stars">
    
<div class="kksr-stars-inactive">
            <div class="kksr-star" data-star="1" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="2" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="3" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="4" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="5" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
    </div>
    
<div class="kksr-stars-active" style="width: 0px;">
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
    </div>
</div>
                

<div class="kksr-legend" style="font-size: 17.6px;">
            <span class="kksr-muted">امتیاز دادن به مطلب</span>
    </div>
    </div>
<p>نوشته <a href="https://makingprojec.com/getting-started-with-the-thonny-micropython-programming-environment-upycraft-and-vs-code/">شروع کار با محیط برنامه‌ نویسی میکروپایتون Thonny ، uPyCraft و VS Code</a> اولین بار در <a href="https://makingprojec.com">ساخت پروژه</a>. پدیدار شد.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://makingprojec.com/getting-started-with-the-thonny-micropython-programming-environment-upycraft-and-vs-code/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
