tag:blogger.com,1999:blog-83366588647162738802024-03-20T18:14:08.081+08:00儍花哥的文青滋味傻花哥http://www.blogger.com/profile/06001039053106717322noreply@blogger.comBlogger90125tag:blogger.com,1999:blog-8336658864716273880.post-57983171423164601322024-03-09T14:34:00.000+08:002024-03-09T14:34:06.682+08:00可控制運轉角度的伺服馬達(2)<b><span style="color: red;">材</span></b><b><span style="color: red;">料:</span></b>Arduino主板一個、擴張版一個、雙母頭杜邦線7條、伺服馬達一個、1602A 液晶顯示器(含 I2C 匯流牌)。<br />
<br />
<b style="color: #674ea7;">效用:</b>控制伺服馬達由20到160度往復旋轉,以10度為一個移動單位,每移動一個單位停留0.5秒,並將當前的角度位置顯示在液晶顯示器上。<br />
<b style="color: #674ea7;"><br /></b>
<span style="color: #674ea7;"><b style="color: black; font-weight: bold;">應用:</b><span style="color: black;">機械手臂。</span></span><br />
<b style="color: #674ea7;"><span style="color: magenta;"><br /></span></b>
<b style="color: #674ea7;"><span style="color: magenta;">電路接法:</span></b><br />
<br />
<div style="text-align: center;">
<iframe allow="autoplay; encrypted-media" allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/TuaVo3VL5f0" width="560"></iframe>
</div>
<span style="color: magenta; font-weight: 700;"><b style="color: #38761d;"></b></span><br />
<a name='more'></a><span style="color: magenta; font-weight: 700;"><b style="color: #38761d;">圖形程式方塊</b></span><b style="color: #38761d;">:</b><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7UAWxkxGn7gm9lSXbGrOwswT8xWDaoxaAudznLZEj8B5qEJQhKCxhi3a-mk5e5qHWhELsKETE69lx1ewXSwsaewXDKpobPkSgXpyQUTff029y4QnLt1_DP2PZQDyE_nv96xyQdcRAKsxk/s1600/1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7UAWxkxGn7gm9lSXbGrOwswT8xWDaoxaAudznLZEj8B5qEJQhKCxhi3a-mk5e5qHWhELsKETE69lx1ewXSwsaewXDKpobPkSgXpyQUTff029y4QnLt1_DP2PZQDyE_nv96xyQdcRAKsxk/s640/1.png" width="488" /></a></div>
<b style="color: #38761d;"><br /></b>
<b style="color: #38761d;"><b style="color: #38761d;"><b style="color: #38761d;"><b style="color: #f1c232;">程式碼:</b></b></b></b><b style="color: #38761d;"><b style="color: #38761d;"><b style="color: #38761d;"><b style="color: #f1c232;"></b></b></b></b><br />
#include <Servo.h><br />
#include <Wire.h><br />
#include <LCD.h><br />
#include <LiquidCrystal_I2C.h><br />
<br />
int _ABVAR_1_variablename = 0 ;<br />
Servo servo_pin_5;<br />
<br />
LiquidCrystal_I2C lcd_I2C_27(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);<br />
<br />
void setup()<br />
{<br />
servo_pin_5.attach(5);<br />
lcd_I2C_27.begin (16, 2);<br />
lcd_I2C_27.setBacklight(HIGH);<br />
}<br />
<br />
void loop()<br />
{<br />
for(_ABVAR_1_variablename = 20;<br />
20<=160?_ABVAR_1_variablename <= 160:_ABVAR_1_variablename >= 160;<br />
20<=160?_ABVAR_1_variablename = _ABVAR_1_variablename + 10:_ABVAR_1_variablename = _ABVAR_1_variablename - 10)<br />
{<br />
servo_pin_5.write( _ABVAR_1_variablename );<br />
lcd_I2C_27.setCursor( (1) - 1, (1) - 1 );<br />
lcd_I2C_27.print( "Current ang:" );<br />
lcd_I2C_27.print( _ABVAR_1_variablename );<br />
lcd_I2C_27.setCursor( (1) - 1, (2) - 1 );<br />
lcd_I2C_27.print( "Round trip" );<br />
delay( 500 );<br />
lcd_I2C_27.setCursor( (1) - 1, (1.) - 1 );<br />
lcd_I2C_27.print( "---------------" );<br />
}<br />
delay( 1000 );<br />
for(_ABVAR_1_variablename = 160;<br />
160<=20?_ABVAR_1_variablename <= 20:_ABVAR_1_variablename >= 20;<br />
160<=20?_ABVAR_1_variablename = _ABVAR_1_variablename + 10:_ABVAR_1_variablename = _ABVAR_1_variablename - 10)<br />
{<br />
servo_pin_5.write( _ABVAR_1_variablename );<br />
lcd_I2C_27.setCursor( (1) - 1, (1) - 1 );<br />
lcd_I2C_27.print( "Current ang:" );<br />
lcd_I2C_27.print( _ABVAR_1_variablename );<br />
delay( 500 );<br />
lcd_I2C_27.setCursor( (1) - 1, (1) - 1 );<br />
lcd_I2C_27.print( "----------------" );<br />
}<br />
delay( 1000 );<br />
}<br />
<br />
<br />傻花哥http://www.blogger.com/profile/06001039053106717322noreply@blogger.comtag:blogger.com,1999:blog-8336658864716273880.post-8873850211867555922024-02-19T22:51:00.000+08:002024-02-19T22:51:31.088+08:00可控制運轉角度的伺服馬達(1)<b><span style="color: red;">材</span></b><b><span style="color: red;">料:</span></b>Arduino主板一個、擴張版一個、雙母頭杜邦線6條、綠紅LED各1、伺服馬達一個、麵包版一個。.<br />
<br />
<b style="color: #674ea7;">效用:</b>控制<b>伺服</b>馬達由20到160度往復旋轉,伺服馬達順時鐘轉到底亮綠燈;伺服馬達逆時鐘轉到底亮紅燈。<br />
<br />
<b>應用:汽車擋風玻璃上的雨刷。</b><br />
<br />
<span style="color: magenta; font-weight: 700;">電路接法:</span><br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="270" src="https://www.youtube.com/embed/hAQZiZWBRSc" width="480"></iframe>
</div>
<a name='more'></a><span style="color: magenta; font-weight: 700;"><b style="color: #38761d;">圖形程式方塊</b></span><b style="color: #38761d;">:</b><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiW2-xogprZe9uNI5buxquJLmFrK49pRjDwCDlWA5D4KSmToeEfQztSvN9Vjmx_nV4M5nMhoNWPQyxeriK-1tDZDJvSpXyLJZtfHlw-HjwUWCmFgfxFreh_-kd-Ka1x_aW80kphjX5Eoa0A/s1600/bandicam+2018-07-03+15-14-20-317.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiW2-xogprZe9uNI5buxquJLmFrK49pRjDwCDlWA5D4KSmToeEfQztSvN9Vjmx_nV4M5nMhoNWPQyxeriK-1tDZDJvSpXyLJZtfHlw-HjwUWCmFgfxFreh_-kd-Ka1x_aW80kphjX5Eoa0A/s640/bandicam+2018-07-03+15-14-20-317.jpg" width="458" /></a></div>
<b style="color: #38761d;"><br /></b>
<b style="color: #38761d;"><b style="color: #38761d;"><b style="color: #f1c232;">程式碼:</b></b></b><br />
#include <Servo.h><br />
<br />
int _ABVAR_1_variablename = 0 ;<br />
Servo servo_pin_3;<br />
<br />
void setup()<br />
{<br />
pinMode( 5 , OUTPUT);<br />
pinMode( 6 , OUTPUT);<br />
servo_pin_3.attach(3);<br />
digitalWrite(5 , HIGH);<br />
<br />
digitalWrite(6 , HIGH);<br />
}<br />
<br />
void loop()<br />
{<br />
for(_ABVAR_1_variablename = 20;<br />
20<=160?_ABVAR_1_variablename <= 160:_ABVAR_1_variablename >= 160;<br />
20<=160?_ABVAR_1_variablename = _ABVAR_1_variablename + 1:_ABVAR_1_variablename = _ABVAR_1_variablename - 1)<br />
{<br />
servo_pin_3.write( _ABVAR_1_variablename );<br />
delay( 10 );<br />
}<br />
digitalWrite(6 , LOW);<br />
delay( 1000 );<br />
digitalWrite(6 , HIGH);<br />
for(_ABVAR_1_variablename = 160;<br />
160<=20?_ABVAR_1_variablename <= 20:_ABVAR_1_variablename >= 20;<br />
160<=20?_ABVAR_1_variablename = _ABVAR_1_variablename + 1:_ABVAR_1_variablename = _ABVAR_1_variablename - 1)<br />
{<br />
servo_pin_3.write( _ABVAR_1_variablename );<br />
delay( 10 );<br />
}<br />
digitalWrite(5 , LOW);<br />
delay( 1000 );<br />
digitalWrite(5 , HIGH);<br />
}<br />
<br />傻花哥http://www.blogger.com/profile/06001039053106717322noreply@blogger.comtag:blogger.com,1999:blog-8336658864716273880.post-71414930214512417692024-01-26T13:05:00.000+08:002024-01-26T13:05:37.318+08:00LM393循軌自走車<div style="text-align: left;">
<div style="text-align: center;">
<div style="text-align: left;">
<b><span style="color: #660000;">材料:</span></b>D2-1小車套件。</div>
</div>
</div>
<div style="text-align: left;">
<br /></div>
<span style="color: #7f6000; font-weight: bold;">原理:</span>利用LM393電晶體隨時比較兩個光敏電阻的大小,當有不平衡時,立即控制一側馬達停轉,另一側馬達加速旋轉,使小車修正方向。<br />
<br />
<b><span style="color: #20124d;">應用:</span></b>餐廳送餐機器人(迴轉壽司軌道)。<br />
<br />
<b><span style="color: #4c1130;">實驗成品: </span></b><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFimL8oXXHW22qDhv3xSwVGxCggVsvMv3yPzpjs_25RTHvKljmku1WhT6dZ9_F3QVP0xOE9-vQgewvZ97eu9Fd0owouTUITa7WqhyeasaaIljLnsqVJMA3rqKjFCBW2tn1eQkURugh5rA8/s1600/14390.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFimL8oXXHW22qDhv3xSwVGxCggVsvMv3yPzpjs_25RTHvKljmku1WhT6dZ9_F3QVP0xOE9-vQgewvZ97eu9Fd0owouTUITa7WqhyeasaaIljLnsqVJMA3rqKjFCBW2tn1eQkURugh5rA8/s640/14390.jpg" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<a name='more'></a>LM393電路圖:(圖片來源:https://www.theengineeringprojects.com/2017/08/introduction-to-lm393.html)<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div style="text-align: center;">
<img alt="LM393 Pinout, LM393 basics, basics of LM393, getting started with LM393, how to get start LM393, LM393 proteus, Proteus LM393, LM393 Proteus simulation" class="imgBorders aligncenter wp-image-86099" height="464" sizes="(max-width: 600px) 100vw, 600px" src="https://www.theengineeringprojects.com/wp-content/uploads/2017/08/LM393-Pinout.png" srcset="https://www.theengineeringprojects.com/wp-content/uploads/2017/08/LM393-Pinout.png 926w, https://www.theengineeringprojects.com/wp-content/uploads/2017/08/LM393-Pinout-300x232.png 300w, https://www.theengineeringprojects.com/wp-content/uploads/2017/08/LM393-Pinout-768x594.png 768w" width="600" /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<b><span style="color: #4c1130;">D2-1循軌小車套件參考電路接法:</span></b></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZ3Je5q7H7hwBUgDeIsssWgMsjUUrT4USpKS3-rVCpt0aHrFjXOprtYIpv4s-MR1pD_ts_rDHgbmgjArMXAUjO9IFkvTGio0Ij74yJtVNk88Ed531XrKC48R5mr-s8LYVivS0ObGyNuFvz/s1600/T22KzSXwdaXXXXXXXX-49758426.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="347" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZ3Je5q7H7hwBUgDeIsssWgMsjUUrT4USpKS3-rVCpt0aHrFjXOprtYIpv4s-MR1pD_ts_rDHgbmgjArMXAUjO9IFkvTGio0Ij74yJtVNk88Ed531XrKC48R5mr-s8LYVivS0ObGyNuFvz/s640/T22KzSXwdaXXXXXXXX-49758426.jpg" width="640" /></a></div>
<b><span style="color: #4c1130;"> </span></b><br />
<div style="text-align: center;">
<div style="text-align: center;">
<br /></div>
<div style="text-align: left;">
<div style="text-align: center;">
<b><span style="color: #134f5c;"><iframe allow="autoplay; encrypted-media" allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/WWbSHXhHBJ4?rel=0" width="560"></iframe></span></b></div>
<div style="text-align: center;">
<div style="text-align: center;">
<b><span style="color: #134f5c;"><br /></span></b>
</div>
<div style="text-align: left;">
<div style="text-align: center;">
<iframe allow="autoplay; encrypted-media" allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/8xeUxAtq3g8?rel=0" width="560"></iframe></div>
<b style="text-align: center;"><span style="color: #134f5c;"><b style="text-align: center;"><span style="color: #134f5c;"><br /></span></b>
完成感想:</span></b><span style="text-align: center;">這次的自走車製作我覺得很有趣,因為這讓我焊錫的技巧越來越好,同時也讓家人感到驚艷。這是第一代的無人自走車,也是我的第一台自走車。</span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjc6S3_kiOU-avETkG4vjK4INzjGU_REkXFrXOK6NLEph8KjMmvhIMCTKCYcfPLeL4dSPnUFFTraW13o8BNbCC68Utcxp6lV9p1N2fefj8hPfpQ3bTVPaEKFTjR7ckhFxBVwhwsilCuZ_Is/s1600/14392.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjc6S3_kiOU-avETkG4vjK4INzjGU_REkXFrXOK6NLEph8KjMmvhIMCTKCYcfPLeL4dSPnUFFTraW13o8BNbCC68Utcxp6lV9p1N2fefj8hPfpQ3bTVPaEKFTjR7ckhFxBVwhwsilCuZ_Is/s400/14392.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1hizsUl3aO_Rs67XJXJPmLwyoGkOPTOKD_E1t4J2ElmO0snp3wnlsq7kPh5ADdCD1Rq4gWgTLAy2kq6V7ZaVCr9SoRsP_2bRvB3XTNyst7k3AZE_3U-4AMsox3oqoVpHhJNhCp-WY6Kx_/s1600/14394.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1hizsUl3aO_Rs67XJXJPmLwyoGkOPTOKD_E1t4J2ElmO0snp3wnlsq7kPh5ADdCD1Rq4gWgTLAy2kq6V7ZaVCr9SoRsP_2bRvB3XTNyst7k3AZE_3U-4AMsox3oqoVpHhJNhCp-WY6Kx_/s400/14394.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpKoftB-xipGdP43nmUTY896JzmMiYLBGXiQYa6JPXExBWHw4LnqAkvpcJ1hFkB1zZOgQDtmK6y-DacAfSad259tkmjva7x0Y_qB77d11LYb_DH5ecemLxgvWDbyvmOfMY01OyTXhqgXyW/s1600/14397.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpKoftB-xipGdP43nmUTY896JzmMiYLBGXiQYa6JPXExBWHw4LnqAkvpcJ1hFkB1zZOgQDtmK6y-DacAfSad259tkmjva7x0Y_qB77d11LYb_DH5ecemLxgvWDbyvmOfMY01OyTXhqgXyW/s400/14397.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioJM3PFu0mqypfLh9HcwaNGk52FwNivjiW1s5r8X9pQ8WrLKdMkW0SfhbxwESL3RHqpPFUqR9eLwfw0sd-z8oGas6Q2tkdXC289q2i2xTngUlQBLdIZQYEkYI-WIYiXGpdbZ-rkXFq5XDY/s1600/14391.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioJM3PFu0mqypfLh9HcwaNGk52FwNivjiW1s5r8X9pQ8WrLKdMkW0SfhbxwESL3RHqpPFUqR9eLwfw0sd-z8oGas6Q2tkdXC289q2i2xTngUlQBLdIZQYEkYI-WIYiXGpdbZ-rkXFq5XDY/s400/14391.jpg" width="400" /></a></div>
</div>
</div>
</div>
</div>
傻花哥http://www.blogger.com/profile/06001039053106717322noreply@blogger.comtag:blogger.com,1999:blog-8336658864716273880.post-49004078262832517882023-11-28T01:40:00.001+08:002023-11-28T01:40:00.133+08:00超音波測距小車材料:D2-4超音波測距小車套件。 <div><br /></div><div> 特點:採取超音波模組探測障礙物並轉彎迴避障礙物。 </div><div><br /></div><div> 應用:車輛障礙警示迴避 </div><div><br /></div><div> 實驗成品:</div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjseoBcuZ9nyoGGmaTh7QSx7ucWzbH45XOKq4FiROikDHdyM3cLL8_cur-Mkg8mihry0kMf5t21G0AHX1lRvjSRAJNRUolHVQF12O7Zt54JEtr17QUa1QPg_LeZaPUhHAxGJ4TMpEnxGteY/s1044/IMG_20201227_170448.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="586" data-original-width="1044" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjseoBcuZ9nyoGGmaTh7QSx7ucWzbH45XOKq4FiROikDHdyM3cLL8_cur-Mkg8mihry0kMf5t21G0AHX1lRvjSRAJNRUolHVQF12O7Zt54JEtr17QUa1QPg_LeZaPUhHAxGJ4TMpEnxGteY/w640-h360/IMG_20201227_170448.jpg" width="640" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div></div><div><span style="color: #674ea7; font-size: large;"><span><a name='more'></a></span>※HC-SR04模組工作原理:</span></div><div><div>(1)使用用IO觸發測距,給至少10us的高電平信號</div><div>(2)模組自動發送8個40khz的方波,自動檢測是否有信號返回</div><div>(3)有信號返回時通過IO輸出一高電平,高電平持續的時間就是超聲波從發射到返回的時間</div><div>(4)測試距離=(高電平時間*聲速(340M/S))/2</div><div>(5)偵測距離:輸入DC5V時、偵測距離2cm~450cm</div></div><div><br /></div><div><span style="color: #351c75; font-size: medium;">※STC15W204S 單晶片與左右電動機電路圖</span></div><div><table><tbody><tr><td><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbORJOf4EWNbgeYmrUyWAlRq9DnXM5L1wgS7XtqEfr8cr4GIvYP19yTfg9aHT4Kw0zjp2MaJxbNNlLik7Cwxf08wSTR7VFXc3ZBaHB6NEiVSIpTHTJe8-eI3TePpwBmhW4_Hv8eofaz5fL/s612/3.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="309" data-original-width="612" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbORJOf4EWNbgeYmrUyWAlRq9DnXM5L1wgS7XtqEfr8cr4GIvYP19yTfg9aHT4Kw0zjp2MaJxbNNlLik7Cwxf08wSTR7VFXc3ZBaHB6NEiVSIpTHTJe8-eI3TePpwBmhW4_Hv8eofaz5fL/s320/3.png" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><br /></div></td><td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLixG-StfASrNhzHNsXtnAOA8hB62pswbjFRiC5Z3St9nHmzsV01RVcjGyMXXAsWH9DLQffahrinM1Ta3cJDT26CgwnsvtbouVYH96OqsHjVzFbkLBg1uYSyk_dqP4ob-o4ZqYzxk7p2FT/s506/2.png" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="306" data-original-width="506" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLixG-StfASrNhzHNsXtnAOA8hB62pswbjFRiC5Z3St9nHmzsV01RVcjGyMXXAsWH9DLQffahrinM1Ta3cJDT26CgwnsvtbouVYH96OqsHjVzFbkLBg1uYSyk_dqP4ob-o4ZqYzxk7p2FT/s320/2.png" width="320" /></a><br /><br /></td></tr></tbody></table></div><div><span style="color: #351c75; font-size: medium;">套件清單:</span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijCIBL3xTCFWrfLtZz8lNrpWvgPCmzCLvl2r3niEzQvRELgc7Eml-ntdOx-efKIQJQkgxeNvVWWwdFxzJ4HlgZUA72LbylnPEiT3j-ernpN81BPovidL_NqfndeN9bP8yhJnBhm4CMe_x0/s762/1.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="313" data-original-width="762" height="262" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijCIBL3xTCFWrfLtZz8lNrpWvgPCmzCLvl2r3niEzQvRELgc7Eml-ntdOx-efKIQJQkgxeNvVWWwdFxzJ4HlgZUA72LbylnPEiT3j-ernpN81BPovidL_NqfndeN9bP8yhJnBhm4CMe_x0/w640-h262/1.png" width="640" /></a></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFAA61igCt_OoTA-zPVfgEfNgkaiG2Ylvec95_w55zHVPHxvMpnfD4DvNV7nJUUw0fEMMORk_Z8AJPXpImu5ZtvT0vNPy17esQiLPsrpaSwQ78sY6ef_HPt89da9p8Ob9txGcXOKXLtZN5/s1044/IMG_20201227_152714.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="586" data-original-width="1044" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFAA61igCt_OoTA-zPVfgEfNgkaiG2Ylvec95_w55zHVPHxvMpnfD4DvNV7nJUUw0fEMMORk_Z8AJPXpImu5ZtvT0vNPy17esQiLPsrpaSwQ78sY6ef_HPt89da9p8Ob9txGcXOKXLtZN5/w640-h360/IMG_20201227_152714.jpg" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><br /></div><br /><div>步驟一:佈置電阻元件。<table><tbody><tr><td><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgblZ8mpd86ZvmLD7OfJTlnrG3VxKLnL1wjEbhzpWpAd662iWgOgkRS4ARGGRR4QcdwtyGdXtmnWp35CB9eByWTxW3Dna6dmMgwOHzLLyJvd5p5S-LTW8a47g5E3wc71RLDDNpOckpvz4-1/s1044/IMG_20201227_153631.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="586" data-original-width="1044" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgblZ8mpd86ZvmLD7OfJTlnrG3VxKLnL1wjEbhzpWpAd662iWgOgkRS4ARGGRR4QcdwtyGdXtmnWp35CB9eByWTxW3Dna6dmMgwOHzLLyJvd5p5S-LTW8a47g5E3wc71RLDDNpOckpvz4-1/s320/IMG_20201227_153631.jpg" width="320" /></a></div><br /></td><td><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZny2UrH3NTIZBF41COjJLTKecf3xJQ6wQH4_KPa_sm0BchD5yOBwYfa7ASK7z_eUR0Jnco8D9E2fjvL0jIfVWmbV1ZxhR-PCyT6cjx-qvHBOVJSLmiqnwxu5kfztvdm4IxDIyagc7sAWl/s1044/IMG_20201227_154303.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="586" data-original-width="1044" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZny2UrH3NTIZBF41COjJLTKecf3xJQ6wQH4_KPa_sm0BchD5yOBwYfa7ASK7z_eUR0Jnco8D9E2fjvL0jIfVWmbV1ZxhR-PCyT6cjx-qvHBOVJSLmiqnwxu5kfztvdm4IxDIyagc7sAWl/s320/IMG_20201227_154303.jpg" width="320" /></a></div><br /></td></tr></tbody></table></div><div>步驟二:佈置LED與輕觸按鍵。</div><table><tbody><tr><td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEg-UUgE_9YDWdew4gPXKogMyEGKNgqL1dEPvnbZgG5KgWSI2SDNnEzKMKeyfQtI8jwkVJs6zJflpaDDEjJxVu-lz7CsAVymPfKONPH_HwMKVHOs1N_WRtA7f1e4NSPwKCk8TrhrfMIoNX/s1044/IMG_20201227_154415.jpg" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="586" data-original-width="1044" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEg-UUgE_9YDWdew4gPXKogMyEGKNgqL1dEPvnbZgG5KgWSI2SDNnEzKMKeyfQtI8jwkVJs6zJflpaDDEjJxVu-lz7CsAVymPfKONPH_HwMKVHOs1N_WRtA7f1e4NSPwKCk8TrhrfMIoNX/s320/IMG_20201227_154415.jpg" width="320" /></a><br /><br /></td><td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidAA8GASIWGnNWYxcCqS1IArEpsrBxNGk8yknyjQn-twXOa2dn-b4OW5ya6k4rkmupixtEq7Y6FYea3uf4taDonckZM-HVs-WV9wju8p0icsKlYk1GT6HGcxo6Bfn68hcVSIAfwqE_Kerp/s1044/IMG_20201227_154736.jpg" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="586" data-original-width="1044" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidAA8GASIWGnNWYxcCqS1IArEpsrBxNGk8yknyjQn-twXOa2dn-b4OW5ya6k4rkmupixtEq7Y6FYea3uf4taDonckZM-HVs-WV9wju8p0icsKlYk1GT6HGcxo6Bfn68hcVSIAfwqE_Kerp/s320/IMG_20201227_154736.jpg" width="320" /></a><br /><br /></td></tr></tbody></table>步驟三:佈置超音波模組、七節顯示器、單晶片IC座與電源開關。<div><table><tbody><tr><td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQhwog4QqCCEMc5ygI6N5MceWCk97TBax6lXz9EiJ4vTYBXG7HxPRuwF71LRY_5o9u0OcThZcBE4mDA4aeDQdpRVrZiH_fHtzm58Di09y8yFM3VHJwk75vsUmG5RMPETW4opPFtmpxIg0Z/s1044/IMG_20201227_154928.jpg" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="586" data-original-width="1044" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQhwog4QqCCEMc5ygI6N5MceWCk97TBax6lXz9EiJ4vTYBXG7HxPRuwF71LRY_5o9u0OcThZcBE4mDA4aeDQdpRVrZiH_fHtzm58Di09y8yFM3VHJwk75vsUmG5RMPETW4opPFtmpxIg0Z/s320/IMG_20201227_154928.jpg" width="320" /></a><br /><br /></td><td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGFeAVureOEtXAXk5if8Xa3Xv7F8yDFueg9UDg6Jl-JdmrIVdIVBn_oHL0VKEzBk8SDe2WhfT6OcoyjENJ3nKgD85ChQnK6X7_FTYHPabfCUAWMsKoIMdP4Y85UFZ5Fpx3cO0KN5NAW3wb/s1044/IMG_20201227_155218.jpg" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="586" data-original-width="1044" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGFeAVureOEtXAXk5if8Xa3Xv7F8yDFueg9UDg6Jl-JdmrIVdIVBn_oHL0VKEzBk8SDe2WhfT6OcoyjENJ3nKgD85ChQnK6X7_FTYHPabfCUAWMsKoIMdP4Y85UFZ5Fpx3cO0KN5NAW3wb/s320/IMG_20201227_155218.jpg" width="320" /></a><br /><br /></td></tr></tbody></table>步驟四:佈置電容與電晶體。<table><tbody><tr><td><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh67KF3_199b8XaMf_RUTHQ09udq7ztXQjCC51-2Vi04fcOqqysMiGj5frhsHKt7ueys9QnbgB9BQY83xzi3nPQA2UBfBOPDh2H7UltBhjVRkg-AuZjPn2tOzBB-wIbELPR_kqveLS82R3d/s1044/IMG_20201227_155427.jpg" style="margin-left: 1em; margin-right: 1em;"><span style="color: black;"><img border="0" data-original-height="586" data-original-width="1044" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh67KF3_199b8XaMf_RUTHQ09udq7ztXQjCC51-2Vi04fcOqqysMiGj5frhsHKt7ueys9QnbgB9BQY83xzi3nPQA2UBfBOPDh2H7UltBhjVRkg-AuZjPn2tOzBB-wIbELPR_kqveLS82R3d/s320/IMG_20201227_155427.jpg" width="320" /></span></a></div><br /></td><td><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrSxbazoy3VT6bEogK4sO2Yv7HleHAdEh8j22YeNemp8hEaap2GN_lXvuW8Amnhe_Rztab0VGBl-JuvoSs3AIuetvZ7J5ebCNsUnGPKIWiUXFW3ma3CEgnMq5d3-LK4a7Iosmr8GXyUyow/s1044/IMG_20201227_155554.jpg" style="margin-left: 1em; margin-right: 1em;"><span style="color: black;"><img border="0" data-original-height="586" data-original-width="1044" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrSxbazoy3VT6bEogK4sO2Yv7HleHAdEh8j22YeNemp8hEaap2GN_lXvuW8Amnhe_Rztab0VGBl-JuvoSs3AIuetvZ7J5ebCNsUnGPKIWiUXFW3ma3CEgnMq5d3-LK4a7Iosmr8GXyUyow/s320/IMG_20201227_155554.jpg" width="320" /></span></a></div><br /></td></tr></tbody></table>步驟五:焊接正面佈置的電子元件。</div><div>步驟六:導航輪用螺絲組件替代。焊接與固定電池盒。</div><div>步驟七:組裝馬達輪子與焊接馬達電源。馬達連接沒有正負指示,只有焊上去才能知道正確的轉向,當輪子向前轉才是正確的喔!<br /><table><tbody><tr><td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyAuYRkw8pFJ4Z74Ks-8D9EYPl7Ou7ECLTsIOXCZKrOfRi5jtEm3kuXl486lNIXigNzmEKqC6D0kBLJBdf-KN1FeMRWmQdOIV9_ojxb0xx3UNSK6E6Zxu3fYGZR8ZjTtrmoPipwUqeY_5V/s1044/IMG_20201227_161752.jpg" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="586" data-original-width="1044" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyAuYRkw8pFJ4Z74Ks-8D9EYPl7Ou7ECLTsIOXCZKrOfRi5jtEm3kuXl486lNIXigNzmEKqC6D0kBLJBdf-KN1FeMRWmQdOIV9_ojxb0xx3UNSK6E6Zxu3fYGZR8ZjTtrmoPipwUqeY_5V/s320/IMG_20201227_161752.jpg" width="320" /></a><br /><br /></td><td><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhb9Iz2liYo1yE9vbcqrj9LkCwCcSW5YhVNVD4Ws8CC28NoLwpSbuTfUBt1fqzrzt3Jy0d2CjgvPHQQypUfpe4peBDWUAIibbo4-igCMdHtz8JMBugMOQvEl7uKIGNmGATw4F1YcLO-brsZ/s1044/IMG_20201227_163239.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="586" data-original-width="1044" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhb9Iz2liYo1yE9vbcqrj9LkCwCcSW5YhVNVD4Ws8CC28NoLwpSbuTfUBt1fqzrzt3Jy0d2CjgvPHQQypUfpe4peBDWUAIibbo4-igCMdHtz8JMBugMOQvEl7uKIGNmGATw4F1YcLO-brsZ/s320/IMG_20201227_163239.jpg" width="320" /></a></div><br /></td></tr></tbody></table></div>步驟八:插上單晶片IC、裝上電池。完工~~<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5yTTYe8t5q5eoo93jYaHM7xyxJO-c7aUnbRv-idp-rAAvRyQ5yKfXs1d7rPNhGLMve5cz2Wobbl0XcdcQprnzqotbowx8GW5B1MSQbLC3gXqUW_3URA29LzvVACegXC4QVSh-ooBM8NAg/s1044/IMG_20201227_171521.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="586" data-original-width="1044" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5yTTYe8t5q5eoo93jYaHM7xyxJO-c7aUnbRv-idp-rAAvRyQ5yKfXs1d7rPNhGLMve5cz2Wobbl0XcdcQprnzqotbowx8GW5B1MSQbLC3gXqUW_3URA29LzvVACegXC4QVSh-ooBM8NAg/w640-h360/IMG_20201227_171521.jpg" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><br /></div><div style="text-align: center;"><iframe frameborder="0" height="360" src="https://youtube.com/embed/RHVXyBPlDOQ" width="640"><div><br /><div><br /></div></div></iframe></div>傻花哥http://www.blogger.com/profile/06001039053106717322noreply@blogger.comtag:blogger.com,1999:blog-8336658864716273880.post-52745057878863527462023-11-21T21:54:00.000+08:002023-11-21T21:54:49.386+08:00利用LM35溫度傳感器模組實作溫度感測 <b><span style="color: red;">材</span></b><b><span style="color: red;">料:</span></b>Arduino主板一個、擴張板一個、雙母頭杜邦線3條、LM35溫度傳感器模組。<br />
<br />
<b style="color: #674ea7;">效用:</b>使用LM35溫度傳感器模組感應溫度,並在Serial Monitor來觀察溫度(單位:華氏)。<br />
<br />
<b style="color: black; font-weight: bold;">應用:</b><span style="color: black;">溫度計</span>(電子式)。<br />
<b style="color: black; font-weight: bold;"><br /></b>
<b style="color: black; font-weight: bold;"><b style="color: black; font-weight: bold;"><b style="color: #674ea7;"><b style="color: black;"><b style="color: #674ea7;"><span style="color: magenta;">電路接法:</span></b></b></b></b></b><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjj5zTtytommiz39M9oYUmUC9und9TtTZndzZP2L7zny3SHhwGkpDWuzgiWx5faHoSivgk6eucspDiX6Fm0ALrRIN50n4YDeXCL2xHI4Timo6za00xXpvPt5g_3ikDwyvzCEvaxeXR9lQGK/s1600/13867.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjj5zTtytommiz39M9oYUmUC9und9TtTZndzZP2L7zny3SHhwGkpDWuzgiWx5faHoSivgk6eucspDiX6Fm0ALrRIN50n4YDeXCL2xHI4Timo6za00xXpvPt5g_3ikDwyvzCEvaxeXR9lQGK/s400/13867.jpg" width="400" /></a></div>
<b style="color: black; font-weight: bold;"><b style="color: black; font-weight: bold;"><b style="color: #674ea7;"><b style="color: black;"><b style="color: #674ea7;"><span style="color: magenta;"></span></b></b></b></b></b><br />
<a name='more'></a><b style="color: black; font-weight: bold;"><b style="color: black; font-weight: bold;"><b style="color: #674ea7;"><b style="color: black;"><b style="color: #674ea7;"><span style="color: magenta;"><br /></span></b></b></b></b></b>
<span style="color: magenta; font-weight: bold;"><b style="color: #38761d;">圖形程式方塊</b></span><b style="color: #38761d; font-weight: bold;">:</b>本實作的LM35溫度傳感器模組使用3.3伏特<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhb38hiGjLFAhAhTgHlpXOCo3LpZZP_0IMe17qbRP5_TInxiOA6cuLEbT4sTB3KZ46ls5nUKtrEDEnrDzB6WKH32Diy20ySBH0UKIv4DTdkWOhD0uJYmYXxk2CAplzXrS-cRGFaOpVe_FJm/s1600/20180710A.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="272" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhb38hiGjLFAhAhTgHlpXOCo3LpZZP_0IMe17qbRP5_TInxiOA6cuLEbT4sTB3KZ46ls5nUKtrEDEnrDzB6WKH32Diy20ySBH0UKIv4DTdkWOhD0uJYmYXxk2CAplzXrS-cRGFaOpVe_FJm/s640/20180710A.png" width="640" /></a></div>
<b style="color: black; font-weight: bold;"><b style="color: black; font-weight: bold;"><b style="color: #674ea7;"><b style="color: black;"><b style="color: #674ea7;"><span style="color: magenta;"><b style="color: #38761d;"><br /></b></span></b></b></b></b></b>
<b style="color: black; font-weight: bold;"><b style="color: black; font-weight: bold;"><b style="color: #674ea7;"><b style="color: black;"><b style="color: #674ea7;"><span style="color: magenta;"><b style="color: #38761d;"><b style="color: black;"><b style="color: #674ea7;"><b style="color: black;"><b style="color: #674ea7;"><span style="color: magenta;"><b style="color: #38761d;"><b style="color: #674ea7;"><b style="color: black;"><b style="color: #674ea7;"><span style="color: magenta;"><b style="color: #38761d;"><b style="color: #38761d;"><b style="color: #38761d;"><b style="color: #38761d;"><b style="color: #f1c232;">程式碼:</b></b></b></b></b></span></b></b></b></b></span></b></b></b></b></b></span></b></b></b></b></b><br />
double _ABVAR_1_d = 0.0 ;<br />
<br />
void setup()<br />
{<br />
Serial.begin(9600);<br />
}<br />
<br />
void loop()<br />
{<br />
_ABVAR_1_d = ( ( analogRead(1) * 0.0032 ) / 0.01 ) ;<br />
Serial.print(_ABVAR_1_d);<br />
Serial.print(" ");<br />
Serial.print("F");<br />
Serial.print(" ");<br />
Serial.println();<br />
delay( 1000 );<br />
}<br />
<span style="color: black; font-weight: bold;"><span style="color: black; font-weight: bold;"><span style="color: magenta;"></span></span></span><br />
<br />傻花哥http://www.blogger.com/profile/06001039053106717322noreply@blogger.comtag:blogger.com,1999:blog-8336658864716273880.post-13921997668933243712023-10-28T12:04:00.000+08:002023-10-28T12:04:31.230+08:00實作紅外線遙控汽車(IR+ L298N)<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhG4JyMAdwuzgk7cT4w3qSaZnFIuRkw225ow8-uJYs3dTUfldhyphenhyphen8MNimLGlwqlZwFjpEIkgHsDLyjNWco2OkJH_TDk_JGe3mlGLAtfvRW8ads9JBd6XnJUL9M_Wwgj2DJnMSmIFZLDXSKms/s1600/15603.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhG4JyMAdwuzgk7cT4w3qSaZnFIuRkw225ow8-uJYs3dTUfldhyphenhyphen8MNimLGlwqlZwFjpEIkgHsDLyjNWco2OkJH_TDk_JGe3mlGLAtfvRW8ads9JBd6XnJUL9M_Wwgj2DJnMSmIFZLDXSKms/s320/15603.jpg" width="320" /></a></div>
本實作介紹如何使用紅外線接收模組的接收信號配合L298N電機驅動模組控制馬達正、反轉來完成簡易的紅外線遙控汽車。<br />
<br />
關於紅外線(Infrared,IR)的通訊請參考上一篇學習文章:<a href="http://little-chih.blogspot.com/2018/08/ardunio.html" target="_blank">Ardunio:實作紅外線(Infrared,IR)代碼擷取</a>。本篇的重點落在L289N電機驅動模組上。L298N是一種高電壓、大電流電機驅動晶片,採用15腳封裝。主要特點是工作電壓高,最高工作電壓可達46V;輸出電流大,瞬間峰值電流可達3A,持續工作電流為2A;額定功率25W。內含兩個H橋的高電壓大電流全橋式驅動器,可以用來驅動直流馬達和步進馬達、繼電器線圈等電感性負載。<br />
<a name='more'></a><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAAACCuyE9FQnVceJ8VH0McpOr2R0fpmWIkNImK4gQXwRV2-S-malto4eWUgAoE9DG4r35UuuH3YFPzirt41OptO_CgrmymkN-dALfy8vBiivuKS_qHhnJ80_UvdPAvpj7BNxGbQT6o-n8/s1600/15595.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAAACCuyE9FQnVceJ8VH0McpOr2R0fpmWIkNImK4gQXwRV2-S-malto4eWUgAoE9DG4r35UuuH3YFPzirt41OptO_CgrmymkN-dALfy8vBiivuKS_qHhnJ80_UvdPAvpj7BNxGbQT6o-n8/s320/15595.jpg" width="320" /></a></div>
<div>
使用L298N晶片驅動馬達,該晶片可以驅動一台兩相步進馬達或四相步進馬達,也可以驅動兩台直流馬達。本實作使用的L298N電機驅動模組是2路的H橋驅動,所以可以同時驅動兩個馬達。<br />
<br />
<ul>
<li><span style="color: #e69138;"><b>致能 ENA 之後,從IN1 IN2輸入PWM信號驅動馬達1的轉速和方向。</b></span></li>
<li><span style="color: #e69138;"><b>致能 ENB之後,可從IN3 IN4輸入PWM信號驅動馬達2的轉速和方向。</b></span></li>
</ul>
</div>
<div>
<b style="color: #38761d;"><br /></b>
<b style="color: #38761d;"> L298N電機驅動模組應用於步進馬達的控制效果如下:</b><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqwPC7KeOdsU1SG8jW7jDPFf068yrKgES-ux7n74eRi0v-IUx6gohJCmwPNGJPQEGlGC9PDAbZuW78K5OSsyEMUeTcPlXXl7mnsIuaQmxBL-wudCRlneFdRucG9rfqDZN0xrPBW8dShjOl/s1600/ADIO-L298N_06.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="253" data-original-width="565" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqwPC7KeOdsU1SG8jW7jDPFf068yrKgES-ux7n74eRi0v-IUx6gohJCmwPNGJPQEGlGC9PDAbZuW78K5OSsyEMUeTcPlXXl7mnsIuaQmxBL-wudCRlneFdRucG9rfqDZN0xrPBW8dShjOl/s1600/ADIO-L298N_06.gif" /></a></div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div>
<span style="color: #0b5394;"><b> L298N電機驅動模組應用於直流馬達的控制效果如下:</b></span></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhx2uFLWk1YoCnJD-O-Jl9rh2aoxLz92DAQf0NvN_HJm854iQD7jXsUljgvKSPUzgXSTIHBwzIxOY9bi2chuudIpi5xEOr9iVB2jn0uAH59VQjX53nvjLNuB5ut-RsAn6hDPxIK3J1j7OfM/s1600/ADIO-L298N_07.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="207" data-original-width="645" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhx2uFLWk1YoCnJD-O-Jl9rh2aoxLz92DAQf0NvN_HJm854iQD7jXsUljgvKSPUzgXSTIHBwzIxOY9bi2chuudIpi5xEOr9iVB2jn0uAH59VQjX53nvjLNuB5ut-RsAn6hDPxIK3J1j7OfM/s1600/ADIO-L298N_07.gif" /></a></div>
<div>
<br /></div>
</div>
<span style="color: #cc0000;"><b> 車輛控制程式碼:
</b></span><br />
<pre class="code prettyprint">#include <IRremote.h>
const int negR=4;
const int posR=5;
const int negL=6;
const int posL=7;
const int pwmR=9;
const int pwmL=10;
const int Rled=2;
const int Lled=8;
int Rspeed=200;
int Lspeed=200;
long FOR=0xFF18E7;
long BACK=0xFF4AB5;
long RIGHT=0xFF5AA5;
long LEFT=0xFF10EF;
long PAUSE=0xFF38C7;
long key7=0xFF42BD;
long key9=0xFF52AD;
long AddSpeed=0xFFA857;
long DecSpeed=0xFFE01F;
int RECV_PIN = 3; // 使用數位腳位3接收紅外線訊號
IRrecv irrecv(RECV_PIN); // 初始化紅外線訊號輸入
decode_results results; // 儲存訊號
boolean status[2]={0,0};
const int led[2]={12,11};
int i;
void setup()
{
pinMode(posR,OUTPUT);
pinMode(negR,OUTPUT);
pinMode(posL,OUTPUT);
pinMode(negL,OUTPUT);
pinMode(Rled,OUTPUT);
pinMode(Lled,OUTPUT);
pinMode(led[0],OUTPUT);
pinMode(led[1],OUTPUT);
digitalWrite(Rled,LOW);
digitalWrite(Lled,LOW);
for(i=0;i<2;i++)
digitalWrite(led[i],LOW);
irrecv.blink13(true); // 收到紅外線訊號腳位13的LED閃爍
irrecv.enableIRIn(); // 致能接收
}
void loop() {
if (irrecv.decode(&results)) // 開始紅外線訊號解碼
{
irrecv.resume(); // 準備接收下一個訊號
if(results.value==FOR){
forward(Rspeed,Lspeed);
digitalWrite(Rled,1);
digitalWrite(Lled,1);
}
else if(results.value==BACK)
back(Rspeed,Lspeed);
else if(results.value==RIGHT)
{
right(Rspeed,Lspeed);
status[1]=~status[1];
digitalWrite(Rled,1);
}
else if(results.value==LEFT)
{
left(Rspeed,Lspeed);
status[0]=~status[0];
digitalWrite(Lled,1);
}
else if(results.value==PAUSE)
{
pause(0,0);
for(i=0;i<2;i++)
{
status[i]=0;
digitalWrite(led[i],1);
}
digitalWrite(Rled,LOW);
digitalWrite(Lled,LOW);
}
//加速
else if(results.value==AddSpeed)
{
pause(0,0);
if (Rspeed<300){
Rspeed=Rspeed+10;
Lspeed=Lspeed+10;
}
}
//減速
else if(results.value==DecSpeed)
{
pause(0,0);
if (Rspeed>=150){
Rspeed=Rspeed-10;
Lspeed=Lspeed-10;
}
}
}
for(i=0;i<2;i++)
{
if(status[i]!=0)
{
digitalWrite(led[i],HIGH);
delay(200);
digitalWrite(led[i],LOW);
delay(200);
}
}
}
void forward(byte RmotorSpeed, byte LmotorSpeed)
{
analogWrite(pwmR,RmotorSpeed);
analogWrite(pwmL,LmotorSpeed);
digitalWrite(posR,HIGH);
digitalWrite(negR,LOW);
digitalWrite(posL,LOW);
digitalWrite(negL,HIGH);
}
void back(byte RmotorSpeed, byte LmotorSpeed)
{
analogWrite(pwmR,RmotorSpeed);
analogWrite(pwmL,LmotorSpeed);
digitalWrite(posR,LOW);
digitalWrite(negR,HIGH);
digitalWrite(posL,HIGH);
digitalWrite(negL,LOW);
}
void pause(byte RmotorSpeed, byte LmotorSpeed)
{
analogWrite(pwmR,RmotorSpeed);
analogWrite(pwmL,LmotorSpeed);
digitalWrite(posR,LOW);
digitalWrite(negR,LOW);
digitalWrite(posL,LOW);
digitalWrite(negL,LOW);
}
void right(byte RmotorSpeed, byte LmotorSpeed)
{
analogWrite(pwmR,RmotorSpeed);
analogWrite(pwmL,LmotorSpeed);
digitalWrite(posR,LOW);
digitalWrite(negR,LOW);
digitalWrite(posL,LOW);
digitalWrite(negL,HIGH);
}
void left(byte RmotorSpeed, byte LmotorSpeed)
{
analogWrite(pwmR,RmotorSpeed);
analogWrite(pwmL,LmotorSpeed);
digitalWrite(posR,HIGH);
digitalWrite(negR,LOW);
digitalWrite(posL,LOW);
digitalWrite(negL,LOW);
} </pre>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjf2rtZXRTnR39-EQfH05EVItA3IjXr3ODaeChggjcCOI-Ov0-t75hFUwbVQzebCWr5t7S8SIy46S9dfYaSh8g1Cvzu035Hmy6cvwS4V9bJp2PM2oP2yWdgwsjEhzxvJUtt_gtb8e4VXdsb/s1600/15602.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjf2rtZXRTnR39-EQfH05EVItA3IjXr3ODaeChggjcCOI-Ov0-t75hFUwbVQzebCWr5t7S8SIy46S9dfYaSh8g1Cvzu035Hmy6cvwS4V9bJp2PM2oP2yWdgwsjEhzxvJUtt_gtb8e4VXdsb/s320/15602.jpg" width="320" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZIbeQ1r8witTqliyVOd4L58pxf9wOOuurbmSZmRprXQbFgXXL1Wfk7Hqa10saND5hFfcCWlbJJoxSc3gO4_kvRSW_A4aW70ObfbF1DoYCVsoGl7d9kKv_HHbPqWUH9nFvIrWY5zfr9-bk/s1600/15604.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZIbeQ1r8witTqliyVOd4L58pxf9wOOuurbmSZmRprXQbFgXXL1Wfk7Hqa10saND5hFfcCWlbJJoxSc3gO4_kvRSW_A4aW70ObfbF1DoYCVsoGl7d9kKv_HHbPqWUH9nFvIrWY5zfr9-bk/s320/15604.jpg" width="320" /></a></div>
傻花爸http://www.blogger.com/profile/01107154584925533645noreply@blogger.comtag:blogger.com,1999:blog-8336658864716273880.post-10210977931859110762023-10-17T16:28:00.000+08:002023-10-17T16:28:35.943+08:00物聯網雲端平台: Adafruit.IO 應用3 _取用金鑰與記錄物聯數據<div>在之前各單元已經學習過如何利用 ESP8266 MicroPython 網路HTTP傳輸 、 ESP8266 MicroPython 無線基地台連線、 Adafruit.IO 服務平台的申請使用,現在就來將這些相關學習串連起來。</div><div><br /></div><div>本實作將利用ESP8266建立無線網路連線將DHT11溫溼度模組所取得的溫濕度資料上傳到 Adafruit.IO 服務平台上加以記錄。<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjyKlu5swidnzLdYKxYtLlYXoht_48VTZ7DcZi5oPEunH-19swS7uRQ832edRRtspJEAmnF7rh4FJRkVi82_sinJnjuaaaBhnJxInw-B6KY96RvqkyN_MStVUIPQh3OyN0FKoY0CNj3Sv3U0KrBj0fCbiI_v8hRhnD92j2FPk8uoPIEQSzwXQShQ4mQA/s1214/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-27%20225634.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="655" data-original-width="1214" height="346" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjyKlu5swidnzLdYKxYtLlYXoht_48VTZ7DcZi5oPEunH-19swS7uRQ832edRRtspJEAmnF7rh4FJRkVi82_sinJnjuaaaBhnJxInw-B6KY96RvqkyN_MStVUIPQh3OyN0FKoY0CNj3Sv3U0KrBj0fCbiI_v8hRhnD92j2FPk8uoPIEQSzwXQShQ4mQA/w640-h346/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-27%20225634.png" width="640" /></a></div></div><span><a name='more'></a></span><div><br /></div><div><span><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSn2064NpUdOtSfKAQQNP5xdO5_oO1gJXt8tnBBZWHAOKr4XTIUi63FpqRCuXv8wcSGTrZefbJ05Ds3oO1ti0mku0GW8qJcwthuy9SY2KjROlhAgdeVFvIs6iVYHqP_CpFgj9UM-Gg1Pza/s1600/14611.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSn2064NpUdOtSfKAQQNP5xdO5_oO1gJXt8tnBBZWHAOKr4XTIUi63FpqRCuXv8wcSGTrZefbJ05Ds3oO1ti0mku0GW8qJcwthuy9SY2KjROlhAgdeVFvIs6iVYHqP_CpFgj9UM-Gg1Pza/s320/14611.jpg" width="320" /></a></div><span style="color: #38761d;"><b>[[DHT11溫濕度測量模組]]</b></span><br />* Supply voltage: 3.3 ~ 5.5V DC<br />* Output: single-bus digital signal<br />* Measuring range: Humidity 20-90% RH, Temperature 0 ~ 50 ℃<br />* Accuracy: Humidity + -5% RH, temperature + -2 ℃<br />* Resolution: Humidity 1% RH, temperature 1 ℃<br />* Long-term stability: <± 1% RH / Year<span><!--more--></span></span></div><div><span><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgASbHSYY3ntC1vw0NLXt4yeiLuaiMXbeSwLIyK5klk90uPoLrqyTqlQ3oT8UDbPlLuWVe4NYeXbnKF6jms_97TLXIOt_c22c4xj6xzLIUp_6PQylsimf0fKgufC0l6lO6NdsaaX6Rh8TBnY015wTWmhHyDNQK5LJy8oVLDKgadC9yapXsUTU1VlVX9Xg/s4608/IMG_20220819_164529.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="2592" data-original-width="4608" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgASbHSYY3ntC1vw0NLXt4yeiLuaiMXbeSwLIyK5klk90uPoLrqyTqlQ3oT8UDbPlLuWVe4NYeXbnKF6jms_97TLXIOt_c22c4xj6xzLIUp_6PQylsimf0fKgufC0l6lO6NdsaaX6Rh8TBnY015wTWmhHyDNQK5LJy8oVLDKgadC9yapXsUTU1VlVX9Xg/s320/IMG_20220819_164529.jpg" width="320" /></a></div><span style="color: #351c75;"><b> [模組材料]</b></span> </div><div> 1. 8266 D1 mini x 1 </div><div> 2. DHT11溫溼度測量模組 x1 </div><div> 3. 杜邦連接線 x 3條</div><div><br /><span style="color: #cc0000;"><b>ESP32 與 OLED 接腳設定</b></span></div></span></div><div>【ESP8266】3.3V →【DHT11】VCC</div><div>【ESP8266】GND →【DHT11】GND</div><div>【ESP8266】D0 →【DHT11】DATA</div><div><br /></div><span></span><div><br /></div><div><br /></div><div><span style="color: #741b47;"><b>取得 Adafruit.IO 金鑰 (AIO KEY)</b></span></div><div>當我們想把資料上傳到 Adafruit.IO 的 FEED 資料欄位時,除了必要的使用者名稱 Username 外還需要金鑰 Active Key,這是最基本的身分認證資訊。所以當我們要把資料上傳時就必須同時送上專屬的 Username 與 Active Key。請登入 Adafruit.IO 後點選 <b>IO </b>頁籤-><b>My Key</b> 按鈕。<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqiwMf7T9JRudD5UckdPJK3zsmaJJkdwJatgtM7oPDs5zXPnk0DAs1korvjdthXN47lNWasFF1WzmAboS2zZvQmXst_abtoNio_MUjVRZX89SY5CCbzNyFnV22evLt1yWFsa2p1av_njlGXqNKkeKVeZ6mjglcHgXSx2DE5t_PjUa-sLErMRxFsI-xbA/s1103/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-27%20202536.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="464" data-original-width="1103" height="270" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqiwMf7T9JRudD5UckdPJK3zsmaJJkdwJatgtM7oPDs5zXPnk0DAs1korvjdthXN47lNWasFF1WzmAboS2zZvQmXst_abtoNio_MUjVRZX89SY5CCbzNyFnV22evLt1yWFsa2p1av_njlGXqNKkeKVeZ6mjglcHgXSx2DE5t_PjUa-sLErMRxFsI-xbA/w640-h270/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-27%20202536.png" width="640" /></a></div><br /></div><div>在 YOUR ADAFRUIT IO KEY 畫面中即可見到最基本的身分認證資訊 Username 與 Active Key:<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhy5dxRtGqjrQtHgVwZKkTMbVbV2D4EiAwLAhhabu2Oka6-CD89Bl36E6VUc_2eMW0UM8jeutRVXxBKJsaCXb2KZszK5Cj-Y_nT-uKE2nCHL9T9_NgX2Lz2_PHlO6Sl7pG12l2Fbe9r3eQLNidLomMl9kjzAkhX5OVm2lnRmYjyQsdG6nASgXn17MAmnQ/s1133/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-27%20203052.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="613" data-original-width="1133" height="346" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhy5dxRtGqjrQtHgVwZKkTMbVbV2D4EiAwLAhhabu2Oka6-CD89Bl36E6VUc_2eMW0UM8jeutRVXxBKJsaCXb2KZszK5Cj-Y_nT-uKE2nCHL9T9_NgX2Lz2_PHlO6Sl7pG12l2Fbe9r3eQLNidLomMl9kjzAkhX5OVm2lnRmYjyQsdG6nASgXn17MAmnQ/w640-h346/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-27%20203052.png" width="640" /></a></div><br /></div><div>上傳資料的HTTP POST請求格式如下:</div><pre class="code prettyprint">https://io.adafruit.com/api/{Username}/feeds/{feed_key}/data/data?X-AIO-Key={<span style="font-family: MingLiU; white-space: normal;">Active Key</span>}
</pre>
<pre class="code prettyprint">https://io.adafruit.com/api/{使用者名稱}/feeds/{Feeds key欄位值}/data?X-AIO-Key={金鑰}
</pre>
格式中的參數{Username}、{Active Key}請替換成正確的身分認證資訊 Username 與 Active Key,{feed_key}參數請使用 Feeds 的 key 欄位值,如下圖所示:<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEia6aFiD_KEv4Yg040QiGsSov21cNhn_ZTp276mJC3_Kr96sfdyYj4SXGZPK3AMlkheMt4Xwg3C-LXq84T0K8bCXcWZGmYLUJQFFGGE5j5IOPFAZDl0-chFQuPEEeGcjpdn_rhOps3MycRaXc8ycD0K9d258gTMtP_gg85MUZ4ZSNHlG0lPjli9nlRWqg/s1133/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-27%20211020.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="613" data-original-width="1133" height="346" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEia6aFiD_KEv4Yg040QiGsSov21cNhn_ZTp276mJC3_Kr96sfdyYj4SXGZPK3AMlkheMt4Xwg3C-LXq84T0K8bCXcWZGmYLUJQFFGGE5j5IOPFAZDl0-chFQuPEEeGcjpdn_rhOps3MycRaXc8ycD0K9d258gTMtP_gg85MUZ4ZSNHlG0lPjli9nlRWqg/w640-h346/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-27%20211020.png" width="640" /></a></div><br /><span style="color: #274e13;"><b>撰寫實驗程式如下:
</b></span><pre class="code prettyprint">from machine import Pin
import dht, utime, urequests, network, ujson
sensor = dht.DHT11(Pin(16))
#指定 Adafruit.IO 使用者名稱與金鑰
IO_USERNAME="{使用者名稱}"
IO_KEY="{金鑰}"
FEED1="wen-du" #溫度FEED資料欄位的key值
FEED2="shi-du" #濕度FEED資料欄位的key值
#設定網路連線帳號密碼
SSID = "<wifi>" # WiFi名稱
PASSWORD = "<wifi>" # WiFi密碼
#自訂無線基地台連線函式
def connect_wifi(ssid, passwd):
sta = network.WLAN(network.STA_IF)
sta.active(True)
if not sta.isconnected():
print("連線中... \n")
sta.connect(ssid, passwd)
while not sta.isconnected():
pass
print("連線成功... \n")
#進行網路連線
connect_wifi(SSID, PASSWORD)
try:
while 1:
sensor.measure()
print("溫度: ", sensor.temperature())
print("溼度: ", sensor.humidity())
#建立與Adafruit.IO服務器間的標頭交換資訊,因為Adafruit IO 服務器會在標頭中查找 Adafruit IO Key
headers = {'X-AIO-Key': IO_KEY, 'Content-Type': 'application/json'}
#上傳溫度
url = "https://io.adafruit.com//api/v2/"
url += IO_USERNAME #使用者名稱
url += "/feeds/" + FEED1 #寫入溫度資料的FEED Key
url += "/data"
data1= {"value": str(sensor.temperature())} #溫度
urequests.post(url,json=data1, headers=headers) #將資料寫雲端平台
#上傳濕度
url = "https://io.adafruit.com//api/v2/"
url += IO_USERNAME #使用者名稱
url += "/feeds/" + FEED2 #寫入濕度資料的FEED Key
url += "/data"
data2 = {"value": str(sensor.humidity())} #濕度
urequests.post(url,json=data2, headers=headers) #將資料寫雲端平台
print("_______________")
utime.sleep_ms(180000) #3分鐘後重複執行迴圈
except Exception as e: print(e)
</wifi></wifi></pre>程式在Thonny執行畫面如下:<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6yR_TyaVqSJJ5KMvWhLDctXsD6O1q0HE3mOU7ybx3UUEyQSBsJ9dnCdpFsq0X1ubejdlbmPNWgNa9s9FgHvh5-psgMuMBcH7RJKH1Vn222-22m2b5XpYeCxpwMKbhLcRLYIDqPYJqaZKc7v-OTJ0rZQdCD3PnGQQ1pzo2jIhj1WgrZL65elBC8AfFrQ/s1161/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-27%20224142.png" style="display: block; padding: 1em 0px; text-align: center;"><img alt="" border="0" data-original-height="651" data-original-width="1161" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6yR_TyaVqSJJ5KMvWhLDctXsD6O1q0HE3mOU7ybx3UUEyQSBsJ9dnCdpFsq0X1ubejdlbmPNWgNa9s9FgHvh5-psgMuMBcH7RJKH1Vn222-22m2b5XpYeCxpwMKbhLcRLYIDqPYJqaZKc7v-OTJ0rZQdCD3PnGQQ1pzo2jIhj1WgrZL65elBC8AfFrQ/s600/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-27%20224142.png" width="600" /></a></div>當上列程式碼順利執行後,取得的溫溼度資料就會上傳到 Adafruit.IO 服務平台加以記錄,在 IO->FEED 頁籤畫面中即可看到已記錄的最後資料值與最後記錄時間。<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_O9ROLkAz1k9MfsgkGXmEu3i0CltGhOZkrzynUeHqXhfu7jzBrPMQG4hdBS03oa3WN25NJU8uZYkDr_XQu4Ljguc3yixfSxd6SA62olLx9auQY6CFK8mApJwVN3S8080Gg2WFuppV2q7TUopp14uZ7S6Dg_P5-Pht3NYuaoRFCtWN8myFY-jkItbmgw/s1133/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-27%20224754.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="613" data-original-width="1133" height="346" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_O9ROLkAz1k9MfsgkGXmEu3i0CltGhOZkrzynUeHqXhfu7jzBrPMQG4hdBS03oa3WN25NJU8uZYkDr_XQu4Ljguc3yixfSxd6SA62olLx9auQY6CFK8mApJwVN3S8080Gg2WFuppV2q7TUopp14uZ7S6Dg_P5-Pht3NYuaoRFCtWN8myFY-jkItbmgw/w640-h346/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-27%20224754.png" width="640" /></a></div><div><br /></div><div>先點選 IO-->Dashboards 頁籤,再點選相對應的儀表板項目即可看到由FEED欄位資料所轉換成的圖表,本例為:花園溫溼度記錄。<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0C560GjXM433vPiY9aT8Ep6yBLxQa3Ysn4hL0QX-60UhlKiq0UbtPugoqGxJote96MSSlSwsDaXU18HzcYRO4lsDKZIy2JsBnStx-IyO_OljE3w-tO9_YUojgG9mRzHQ9UFS8HdmGE370g0qPNw69oDYJl5SRj8jWU4LYR9HY9R2jY19u1BOflNhfiA/s1100/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-27%20145433.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="436" data-original-width="1100" height="254" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0C560GjXM433vPiY9aT8Ep6yBLxQa3Ysn4hL0QX-60UhlKiq0UbtPugoqGxJote96MSSlSwsDaXU18HzcYRO4lsDKZIy2JsBnStx-IyO_OljE3w-tO9_YUojgG9mRzHQ9UFS8HdmGE370g0qPNw69oDYJl5SRj8jWU4LYR9HY9R2jY19u1BOflNhfiA/w640-h254/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-27%20145433.png" width="640" /></a></div><div><br /></div><div><br /></div></div>傻花哥http://www.blogger.com/profile/06001039053106717322noreply@blogger.comtag:blogger.com,1999:blog-8336658864716273880.post-54324252898103111422023-10-09T17:28:00.000+08:002023-10-09T17:28:50.632+08:00物聯網雲端平台: Adafruit.IO 應用2 _建立儀錶板與圖表區塊順利完成 Adafruit.IO 免費帳號申請與新增FEED資料記錄欄位後,接著就可新增儀表板,所謂的儀表板其實就是將FEED資料記錄欄位內的資料由平凡的數字轉換成圖表來顯示。<div><br /></div><div>先點選 IO-->Dashboards 頁籤。再點選畫面中的 New Dashboard 按鈕。</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiG6xfXfWhUiXiOEYwg-VNvdxoqFIGMY_Hvh7_xN0sQ7PhHJLZRRzgZmupJkzqen6hUGcdZBeLEwN-UxMNQYzU_tOmmJ34PH65fcQGQnfZPfkN2SbRPrZZlBfmoVo3Doymo0kzfpsgON8tTPi6z-WJfYMm61487V8tuqMfBithDgqG74ljGSKpOiJNOTQ/s1125/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-27%20144828.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="631" data-original-width="1125" height="358" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiG6xfXfWhUiXiOEYwg-VNvdxoqFIGMY_Hvh7_xN0sQ7PhHJLZRRzgZmupJkzqen6hUGcdZBeLEwN-UxMNQYzU_tOmmJ34PH65fcQGQnfZPfkN2SbRPrZZlBfmoVo3Doymo0kzfpsgON8tTPi6z-WJfYMm61487V8tuqMfBithDgqG74ljGSKpOiJNOTQ/w640-h358/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-27%20144828.png" width="640" /></a></div><br /><div><span><a name='more'></a></span>在 Name 欄位填儀表板的名稱,本例填入"花園溫溼度記錄"。再按下 Create 按鈕。<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpUZq9TlYfWmzZA-ScNOYabttm4Az-WD6uthiy_Lcf8_U3N0kgD0iUuV4bMXiNDrpa0GcAgk8BV6gv4Z2nWuGFPbh3LBQSLDMHlcsBpcMWQ_UIn05woXVvpk7yTVaDatujCNjE-3MqlzMNz8g_O8wLnBcJin1Ni-pLYnphctb92kK87Kxe4DUFV59aIA/s1125/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-27%20145225.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="631" data-original-width="1125" height="358" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpUZq9TlYfWmzZA-ScNOYabttm4Az-WD6uthiy_Lcf8_U3N0kgD0iUuV4bMXiNDrpa0GcAgk8BV6gv4Z2nWuGFPbh3LBQSLDMHlcsBpcMWQ_UIn05woXVvpk7yTVaDatujCNjE-3MqlzMNz8g_O8wLnBcJin1Ni-pLYnphctb92kK87Kxe4DUFV59aIA/w640-h358/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-27%20145225.png" width="640" /></a></div><br /></div><div>新增的"花園溫溼度記錄"儀表板出現在列表中,請點選超連結來新增區塊。</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhANy_latot7gPdpsIWtUoj8-6MVdOdgr4OqzSuSBbBlQX2rXAUlcooGIU3ChOpHILGvt7gxSILXz9e8JWRWOV8W0nJcuT_oMFrmciBhly5FG4Zwa81III-5LVFtKbM_9b6KQ5MJG3ti45x8P_I909H24OIs2OE3UtVwrx_vnQ21x1vOEZM5gUrff8kIw/s1100/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-27%20145433.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="436" data-original-width="1100" height="254" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhANy_latot7gPdpsIWtUoj8-6MVdOdgr4OqzSuSBbBlQX2rXAUlcooGIU3ChOpHILGvt7gxSILXz9e8JWRWOV8W0nJcuT_oMFrmciBhly5FG4Zwa81III-5LVFtKbM_9b6KQ5MJG3ti45x8P_I909H24OIs2OE3UtVwrx_vnQ21x1vOEZM5gUrff8kIw/w640-h254/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-27%20145433.png" width="640" /></a></div><br /><div>點選畫面中齒輪向上箭頭的按鈕,再點選 Create New Block 項目連結。<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkVOHLDKn6Ae0Q4SHksQQy_lbK48m5CZ6fy3qkRMDjsGEu-EGlzmgZTmTmnwAElcAQKDDp_RFTaH1Rk6JefxHNPmS0eeWkjgACQ6SIttfeMvB2O8Z2h7J7CDUjHReBg6lQXtXu7N6jj4eYLhSVhI_atge_Ll1nSByOhtV_YkJ7EyHBtIDq-LWS60vsHQ/s1125/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-27%20145529.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="631" data-original-width="1125" height="358" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkVOHLDKn6Ae0Q4SHksQQy_lbK48m5CZ6fy3qkRMDjsGEu-EGlzmgZTmTmnwAElcAQKDDp_RFTaH1Rk6JefxHNPmS0eeWkjgACQ6SIttfeMvB2O8Z2h7J7CDUjHReBg6lQXtXu7N6jj4eYLhSVhI_atge_Ll1nSByOhtV_YkJ7EyHBtIDq-LWS60vsHQ/w640-h358/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-27%20145529.png" width="640" /></a></div><br /></div><div>選取 Line Char 新增折線圖區塊。<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZ9q6uunpOLSvERV7JHHBKq2R4WA0oUu86Oo9UpyLDciJtpNTaEeF2NsRWbkrLVCUqYni9wbtooHBDsM-bBHoMq36I2b8JHIxdDha4irY6J4exwvycwOhd7UiDustmcpdYqx6Xtf45Itp23MK10MJD8KjXvkLPfKKlTxIXjsGAhWD8uK6GAOqX4W4kjQ/s1125/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-27%20145604.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="631" data-original-width="1125" height="358" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZ9q6uunpOLSvERV7JHHBKq2R4WA0oUu86Oo9UpyLDciJtpNTaEeF2NsRWbkrLVCUqYni9wbtooHBDsM-bBHoMq36I2b8JHIxdDha4irY6J4exwvycwOhd7UiDustmcpdYqx6Xtf45Itp23MK10MJD8KjXvkLPfKKlTxIXjsGAhWD8uK6GAOqX4W4kjQ/w640-h358/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-27%20145604.png" width="640" /></a></div><br /></div><div>勾選折線圖區塊對應的FEED資料來源項目,本例勾選"溫度"。按下 Next step 按鈕。</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijnef3hQLhIIMRCCWxbTsVBM2DcB3OJQBjn34pIFr3A_xReVN60tZSlfJZWDZoehTX1ARRZ_JILgp3Mup6ukTujRGvBgr252BYBEFUAtjfyiqUMQStF2UhPrcM45QGgrDwhuvsXHW3yXuMKYpdJnLoBuWnaqOa-w6WJyv_2WhiK3e0X7-_rrooTc03Uw/s1147/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-27%20145651.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="684" data-original-width="1147" height="382" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijnef3hQLhIIMRCCWxbTsVBM2DcB3OJQBjn34pIFr3A_xReVN60tZSlfJZWDZoehTX1ARRZ_JILgp3Mup6ukTujRGvBgr252BYBEFUAtjfyiqUMQStF2UhPrcM45QGgrDwhuvsXHW3yXuMKYpdJnLoBuWnaqOa-w6WJyv_2WhiK3e0X7-_rrooTc03Uw/w640-h382/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-27%20145651.png" width="640" /></a></div><br /><div>接著在 Block settings 畫面中的 Block Title欄位中輸入區塊名稱,本例為"花園溫度記錄"。名稱輸入完畢後按下畫面最下方的 Create block 按鈕。</div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNj0nm7MWOcoqY4_E9pWFjbcUowDAi19AUbHZ52PXf389wZJMmKoj_uC9mE7kkWIF5WnvWOHzRI2RVDsaiQY5qqpHTZS3meJpuxUWVT03f_YP7mHMZKq_-e3XN3Q020AX26ZObarJrllkKUStaWDhsOsr2TZU54pWTZ9H7Ef_FNeVLz-GPdeWwscYrOA/s1147/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-27%20145746.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="684" data-original-width="1147" height="382" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNj0nm7MWOcoqY4_E9pWFjbcUowDAi19AUbHZ52PXf389wZJMmKoj_uC9mE7kkWIF5WnvWOHzRI2RVDsaiQY5qqpHTZS3meJpuxUWVT03f_YP7mHMZKq_-e3XN3Q020AX26ZObarJrllkKUStaWDhsOsr2TZU54pWTZ9H7Ef_FNeVLz-GPdeWwscYrOA/w640-h382/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-27%20145746.png" width="640" /></a></div><br /></div><div>完成名為"花園溫度記錄"的折線圖區塊新增動作。<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaYTzVWMVJAWm3cqsXzMvRzoygHHAJEYfpQ1NHSzrR6XjKpFnEywHYPJu7ysyJA_PyzZRHdvcXMcPXEI_mpRwCgxq8Mo0X8QU4bVcQOds7sWcZcIFOKsm9hJblaS-WyeO3XpBj9XZ3EMykzrrhN1NytQQuC2bIz_m_a8-hLMSp4N0cQeVSyczM-o0EgA/s1147/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-27%20145805.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="684" data-original-width="1147" height="382" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaYTzVWMVJAWm3cqsXzMvRzoygHHAJEYfpQ1NHSzrR6XjKpFnEywHYPJu7ysyJA_PyzZRHdvcXMcPXEI_mpRwCgxq8Mo0X8QU4bVcQOds7sWcZcIFOKsm9hJblaS-WyeO3XpBj9XZ3EMykzrrhN1NytQQuC2bIz_m_a8-hLMSp4N0cQeVSyczM-o0EgA/w640-h382/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-27%20145805.png" width="640" /></a></div><br /></div><div>請讀者自行練習在"花園溫溼度記錄"儀表板中再新增一個名為"花園溼度記錄"的儀表板區塊。<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgl8AIjlaGnzBFJWm7GV-Nf1glmZByElY_LxlPSJj_Mpirvg9Ypckk5jWVsr2i4G0loji-e5u_AbVh0XSp_k-Khm_rWHaS_vTEbLQMqTdK0-eAVC1ISrsadMk1l8ZSTTVWosYfU4DCcNSblkkBQFjfeIIFEcoUs5qPgEP79EHE1-WQr__F7Ho5Z6MZu_A/s1116/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-27%20151556.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="870" data-original-width="1116" height="498" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgl8AIjlaGnzBFJWm7GV-Nf1glmZByElY_LxlPSJj_Mpirvg9Ypckk5jWVsr2i4G0loji-e5u_AbVh0XSp_k-Khm_rWHaS_vTEbLQMqTdK0-eAVC1ISrsadMk1l8ZSTTVWosYfU4DCcNSblkkBQFjfeIIFEcoUs5qPgEP79EHE1-WQr__F7Ho5Z6MZu_A/w640-h498/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-27%20151556.png" width="640" /></a></div><br /></div><div><br /></div><div><br /></div>傻花哥http://www.blogger.com/profile/06001039053106717322noreply@blogger.comtag:blogger.com,1999:blog-8336658864716273880.post-34413527280902151962023-09-26T15:52:00.000+08:002023-09-26T15:52:57.597+08:00物聯網雲端平台: Adafruit.IO 應用1 _帳號申請與新增 FEED
Adafruit IO是一個免費/付費的IoT平台,提供數據雲端化、圖像化的服務整合讓使用者自由定義傳輸上去的資料內容,只要完成註冊並新增FEED就可以建立儀表板來新增折線圖表,例如將物聯感測器的數據上傳並顯示統計圖表。<div><br /></div><div> Adafruit IO除了支援MQTT(S)、HTTP(S)、WebSocket外,也提供多樣化的API供使用者使用,大部分程式語言都可以透過HTTP或MQTT協定對AdafruitIO存取。</div><div><br /></div><div><span style="color: #351c75;"><b>申請Adafruit.IO 帳號</b></span></div><div>進入<a href="https://io.adafruit.com/" target="_blank">Adafruit.IO</a>官網,點選右上角的 Get Started for Free 的連結,進入註冊畫面。</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhi9qC3a4hv5BaAxaop-0WCi-QB2vSkP-ekcOnudJaky4G3p5uLsCHS4BQHLUX2NKLMjP2bJxutSnaOIg6JtuXvVyqJCR-23_Wz9k67XpiyHmaqxcQWLZqOYDrgZgdmpHqRbacqhSj9u00SPSEirBMUono6Ly6T24Fp6U84U5vAENJkrF-7Ofi7sZXC_g/s1255/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-27%20131920.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="574" data-original-width="1255" height="292" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhi9qC3a4hv5BaAxaop-0WCi-QB2vSkP-ekcOnudJaky4G3p5uLsCHS4BQHLUX2NKLMjP2bJxutSnaOIg6JtuXvVyqJCR-23_Wz9k67XpiyHmaqxcQWLZqOYDrgZgdmpHqRbacqhSj9u00SPSEirBMUono6Ly6T24Fp6U84U5vAENJkrF-7Ofi7sZXC_g/w640-h292/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-27%20131920.png" width="640" /></a></div><br /><div><span><a name='more'></a></span>依序填寫名字、姓氏、電子信箱、使用者帳秘等資訊後,按下 CREATE ACCOUNT 按鈕建立帳號,下左圖。帳號資料輸入完成並按下CREATE ACCOUNT 按鈕後就完成免費帳號申請,畫面如下右圖。</div><table><tbody><tr><td><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjw1cCblIU2fdKWuQZ7CgYs7iM5IbuKPz1FoxGWxVuQSLF9HxPIM00HYDIF7GRiBZ9QbeuKs1w_EIlHUNMPp8Uyu1v_DfEu5iHGz7m2RJD7DtUr2sDdS7y0ZH_3M_F0ghaDRaIMeCQZrKGxbntd7wR67gUHmJA7IkNoT96tyl0FWpFTACeT7TrThWErtw/s808/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-27%20135659.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="808" data-original-width="774" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjw1cCblIU2fdKWuQZ7CgYs7iM5IbuKPz1FoxGWxVuQSLF9HxPIM00HYDIF7GRiBZ9QbeuKs1w_EIlHUNMPp8Uyu1v_DfEu5iHGz7m2RJD7DtUr2sDdS7y0ZH_3M_F0ghaDRaIMeCQZrKGxbntd7wR67gUHmJA7IkNoT96tyl0FWpFTACeT7TrThWErtw/s320/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-27%20135659.png" width="307" /></a></div><br /></td><td><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhB5IUNz3_sW0coK4AgatEqdtcKXv9i67ypdD4NSt0S1htrAI7ANtOnJgdK4d3TSmSIw-0NpdLTofob1oIKNZVuQY0z427s6XZYXq7sMXun2lmzVkVZPfBStNJrcflaaknVlupduUilbaN6t5nn1TGahFyyYzQoP89FlP5AfQePD3JIilsCKXWifbf3Ug/s1096/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-27%20135954.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="616" data-original-width="1096" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhB5IUNz3_sW0coK4AgatEqdtcKXv9i67ypdD4NSt0S1htrAI7ANtOnJgdK4d3TSmSIw-0NpdLTofob1oIKNZVuQY0z427s6XZYXq7sMXun2lmzVkVZPfBStNJrcflaaknVlupduUilbaN6t5nn1TGahFyyYzQoP89FlP5AfQePD3JIilsCKXWifbf3Ug/w400-h225/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-27%20135954.png" width="400" /></a></div><br /></td></tr></tbody></table>註冊後,註冊時登記的信箱也會收到一封電子信箱的確認信,請記得依照信中說明進行確認。<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRMeEZqUAhyqtfCA4vuTCmu7V4kPWprXyAGANe9MvQkJzMotF168EiLUoUl_DXcz59Xzj_LjAU5mwrXESXUq2kX_cwKV6bGtrMYOEjkjXhIiB5oHANiJiX-nbcuxgqxTJuEe4sDIB8xPUZbpkbOQ7x-TL8zNBKglsdzaWAuFMGFdE20M9PksQGyl6-Ug/s1096/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-27%20141402.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="536" data-original-width="1096" height="312" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRMeEZqUAhyqtfCA4vuTCmu7V4kPWprXyAGANe9MvQkJzMotF168EiLUoUl_DXcz59Xzj_LjAU5mwrXESXUq2kX_cwKV6bGtrMYOEjkjXhIiB5oHANiJiX-nbcuxgqxTJuEe4sDIB8xPUZbpkbOQ7x-TL8zNBKglsdzaWAuFMGFdE20M9PksQGyl6-Ug/w640-h312/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-27%20141402.png" width="640" /></a></div><br /><div><span style="color: #351c75;"><b>新增FEED</b></span></div><div>每一個FEED其實就是一個資料記錄欄位。</div><div>點選 IO 頁籤,再點選 Feeds 子頁籤。</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinQqOshFzi2i2dtwSQYjn8aomsf13xU58_w8_UEToocYieo83z75kPao4O1tsiPMA15OcWn4uLrApl5gouyLjH5iPqzIKRGQcc2XaAtvyGbGk1Q8EIdysAJxerUIgYLuBEPHHdw7SWFXaTtXv8mslytEHL7YXt2yDUbaAabdXdjPQrpknWnOgtiwkmSA/s1096/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-27%20141754.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="616" data-original-width="1096" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinQqOshFzi2i2dtwSQYjn8aomsf13xU58_w8_UEToocYieo83z75kPao4O1tsiPMA15OcWn4uLrApl5gouyLjH5iPqzIKRGQcc2XaAtvyGbGk1Q8EIdysAJxerUIgYLuBEPHHdw7SWFXaTtXv8mslytEHL7YXt2yDUbaAabdXdjPQrpknWnOgtiwkmSA/w640-h360/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-27%20141754.png" width="640" /></a></div><div><br /></div>點選 New Feed 按鈕來新增FEED。<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiy-RIFvR-yVl11JupQO1SZl7iJd0TlPPauYekNZgLTwdhqcO7Q_wKiK4Cfh8RZGlA9GUnEFUo761UzhXzT_lLtnWrCb_ABcb9cKKKNsTGTHN55stwYw6ueuVv1MhOJi6Gx4sgL-BYS0YU_OdjsBd6ApSuUT-VliFbn-TVwloJ3IARH4w9Y8jaFEadOYg/s1096/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-27%20142124.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="616" data-original-width="1096" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiy-RIFvR-yVl11JupQO1SZl7iJd0TlPPauYekNZgLTwdhqcO7Q_wKiK4Cfh8RZGlA9GUnEFUo761UzhXzT_lLtnWrCb_ABcb9cKKKNsTGTHN55stwYw6ueuVv1MhOJi6Gx4sgL-BYS0YU_OdjsBd6ApSuUT-VliFbn-TVwloJ3IARH4w9Y8jaFEadOYg/w640-h360/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-27%20142124.png" width="640" /></a></div><br /><div>在 Name 欄位填入FEED的名稱(資料記錄欄位的名稱),本例填入"溫度"。再按下 Create 按鈕。<br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNJrFjbQ8ambJdLi8wqU2GxZFc4xC81uzNxBCGbRGAm8gHehbcWLsE6c4sH9aZZFg9tnxvPodndEHSQyUNDdzPICJw0siZ-gwA5I7VPtZ9mUfIpY-TcbT-QpHJ99iDD0cZ7SMfa8tAzFXsjg0ZMBDOcpUAnqu7uyDqILX1XkGBaNXjhALALdzSuGmckw/s1096/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-27%20142752.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="616" data-original-width="1096" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNJrFjbQ8ambJdLi8wqU2GxZFc4xC81uzNxBCGbRGAm8gHehbcWLsE6c4sH9aZZFg9tnxvPodndEHSQyUNDdzPICJw0siZ-gwA5I7VPtZ9mUfIpY-TcbT-QpHJ99iDD0cZ7SMfa8tAzFXsjg0ZMBDOcpUAnqu7uyDqILX1XkGBaNXjhALALdzSuGmckw/w640-h360/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-27%20142752.png" width="640" /></a></div><br /><div>成功新增名為"溫度"的FEED資料記錄欄位。</div></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD6ircahCm1iE6PfcjdYonCQnE7IYKwEae0xYUrB8sJdkV4pV-YkJX4hw8EetHF9qQ8QtVus2olEObgPS_ZYXa_nXhTUIiI-f0mj3qdlmAkJ8MJd3nEvg4Y06cK5hhZywSskJ2z063LzqIB5Rup1753k2T9vM6MPcA_Wb6OTJloCrsCimeeNiydsxQzg/s1096/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-27%20142823.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="616" data-original-width="1096" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD6ircahCm1iE6PfcjdYonCQnE7IYKwEae0xYUrB8sJdkV4pV-YkJX4hw8EetHF9qQ8QtVus2olEObgPS_ZYXa_nXhTUIiI-f0mj3qdlmAkJ8MJd3nEvg4Y06cK5hhZywSskJ2z063LzqIB5Rup1753k2T9vM6MPcA_Wb6OTJloCrsCimeeNiydsxQzg/w640-h360/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-27%20142823.png" width="640" /></a></div><br /><div>請讀者自行練習再新增一個名為"濕度"的FEED資料記錄欄位。</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEignDHdEcYC0WbdjF5BUIt9hWMYYnB738k-3ivWdHfKeB0iMrrvet_VcbHnghk-Oe0WpvUWCt8G2HIz12fzp2LcLwAP6l5tcTWk7sdquxjh5rpjnt_fl1q8J0F1eUBkC-pp2ZOBOPMoeQgN_d4Ej9nNC54LrK9IW7QqKl5rcRHTcW0vmDiqN2Ytdh76HA/s1125/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-27%20143313.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="631" data-original-width="1125" height="358" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEignDHdEcYC0WbdjF5BUIt9hWMYYnB738k-3ivWdHfKeB0iMrrvet_VcbHnghk-Oe0WpvUWCt8G2HIz12fzp2LcLwAP6l5tcTWk7sdquxjh5rpjnt_fl1q8J0F1eUBkC-pp2ZOBOPMoeQgN_d4Ej9nNC54LrK9IW7QqKl5rcRHTcW0vmDiqN2Ytdh76HA/w640-h358/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-27%20143313.png" width="640" /></a></div><br /><div><br /></div>傻花哥http://www.blogger.com/profile/06001039053106717322noreply@blogger.comtag:blogger.com,1999:blog-8336658864716273880.post-56120666647396074392023-09-03T20:45:00.000+08:002023-09-03T20:45:40.007+08:00利用雲端平台 ThingSpeak 記錄物聯數據<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgittxNIxrBWE2W6zh0yJBge02Wb6R6bsa3fijTSZEs5YiNNzvmNN1DtV5XdaAzhwoWvtWk4KKzM_r7O1VVJNUUBIRFCFD47jA1hsUAcuVOaD6zLPxU8-g9OV0JMuwgJMJlhOrMSob_g20ipZZg_SD6cM3nT17xaB-ybvZ8-NP8LnXgBUDKAWKdoZDtrQ/s4608/IMG_20220819_164529.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="2592" data-original-width="4608" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgittxNIxrBWE2W6zh0yJBge02Wb6R6bsa3fijTSZEs5YiNNzvmNN1DtV5XdaAzhwoWvtWk4KKzM_r7O1VVJNUUBIRFCFD47jA1hsUAcuVOaD6zLPxU8-g9OV0JMuwgJMJlhOrMSob_g20ipZZg_SD6cM3nT17xaB-ybvZ8-NP8LnXgBUDKAWKdoZDtrQ/s320/IMG_20220819_164529.jpg" width="320" /></a></div><div>在之前各單元已經學習過如何利用 ESP8266 MicroPython 網路HTTP傳輸 、 ESP8266 MicroPython 無線基地台連線、<a href="https://www.twbts.work/2022/08/thingspeak.html" target="_blank">ThingSpeak服務平台</a>的申請使用,現在就來將這些相關學習串連起來。</div><div><br /></div><div>本實作將利用ESP8266建立無線網路連線將DHT11溫溼度模組所取得的溫濕度資料上傳到 ThingSpeak 服務平台上加以記錄。</div><div><br /></div><div> [模組材料] </div><div>1. 8266 D1 mini x 1 </div><div>2. DHT11溫溼度測量模組 x1 </div><div>3. 杜邦連接線 x 3條<span><a name='more'></a></span><span><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSn2064NpUdOtSfKAQQNP5xdO5_oO1gJXt8tnBBZWHAOKr4XTIUi63FpqRCuXv8wcSGTrZefbJ05Ds3oO1ti0mku0GW8qJcwthuy9SY2KjROlhAgdeVFvIs6iVYHqP_CpFgj9UM-Gg1Pza/s1600/14611.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSn2064NpUdOtSfKAQQNP5xdO5_oO1gJXt8tnBBZWHAOKr4XTIUi63FpqRCuXv8wcSGTrZefbJ05Ds3oO1ti0mku0GW8qJcwthuy9SY2KjROlhAgdeVFvIs6iVYHqP_CpFgj9UM-Gg1Pza/s320/14611.jpg" width="320" /></a></div><span style="color: #38761d;"><b>[[DHT11溫濕度測量模組]]</b></span><br />* Supply voltage: 3.3 ~ 5.5V DC<br />* Output: single-bus digital signal<br />* Measuring range: Humidity 20-90% RH, Temperature 0 ~ 50 ℃<br />* Accuracy: Humidity + -5% RH, temperature + -2 ℃<br />* Resolution: Humidity 1% RH, temperature 1 ℃<br />* Long-term stability: <± 1% RH / Year<span><!--more--></span></span></div><div><span><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><span style="color: #cc0000;"><b><br /></b></span></div><div><span style="color: #cc0000;"><b>ESP32 與 OLED 接腳設定</b></span></div><div>【ESP8266】3.3V →【DHT11】VCC</div><div>【ESP8266】GND →【DHT11】GND</div><div>【ESP8266】D0 →【DHT11】DATA</div></span></div><div><br /></div><div><br /></div>撰寫實驗程式如下:<pre class="code prettyprint">from machine import Pin
import dht, utime, urequests, network
sensor = dht.DHT11(Pin(16))
#指定ThingSpeak寫入金鑰
WRITE_KEY = "<api>"
#設定網路連線帳號密碼
SSID = "<wifi>" # WiFi名稱
PASSWORD = "<wifi>" # WiFi密碼
#自訂無線基地台連線函式
def connect_wifi(ssid, passwd):
sta = network.WLAN(network.STA_IF)
sta.active(True)
if not sta.isconnected():
print("連線中... \n")
sta.connect(ssid, passwd)
while not sta.isconnected():
pass
print("連線成功... \n")
#進行網路連線
connect_wifi(SSID, PASSWORD)
try:
while 1:
sensor.measure()
print("溫度: ", sensor.temperature())
print("溼度: ", sensor.humidity())
url = "https://api.thingspeak.com/update?"
url += "api_key=" + WRITE_KEY #資料寫入金鑰
url += "&field1=" + str(sensor.temperature()) #溫度
url += "&field2=" + str(sensor.humidity()) #濕度
print("_______________")
urequests.get(url) #將資料寫雲端平台
utime.sleep_ms(60000) #一分鐘後重複執行迴圈
except Exception as e: print(e)
</wifi></wifi></api></pre>程式在Thonny執行畫面如下:<span style="color: #cc0000;">ThingSpeak 提供非商業使用的免費雲端服務,提供物聯網相關裝置的訊息紀錄之用,物聯裝置的免費商業使用限制訊息發送間隔必須大於15秒以上。</span><div><br /><div class="separator" style="clear: both; text-align: left;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg52JxlaRku5AqeSBsWZjAAhsxt48IC7a6zyJmBtNd1mVIdT6c7e6jpZG7eV1riK7U6oVckqBWWsUMP65jLnHN1yRPs59uxdQYNxHDoEupyOn7Bg79d_d4ObmOJnQL33_yUvN8jMjz8jwFJnSUXGaTFpm2MQ6Bl1tUqJ5W7D3ft5mHJzlCxMkUteHuyVA/s997/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-19%20172643.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="613" data-original-width="997" height="394" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg52JxlaRku5AqeSBsWZjAAhsxt48IC7a6zyJmBtNd1mVIdT6c7e6jpZG7eV1riK7U6oVckqBWWsUMP65jLnHN1yRPs59uxdQYNxHDoEupyOn7Bg79d_d4ObmOJnQL33_yUvN8jMjz8jwFJnSUXGaTFpm2MQ6Bl1tUqJ5W7D3ft5mHJzlCxMkUteHuyVA/w640-h394/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-19%20172643.png" width="640" /></a></div><br />當上列程式碼順利執行後,取得的溫溼度資料就會上傳到 ThingSpeak 服務平台加以記錄,在 Private view 頁籤畫面中即可看到已記錄的資料圖表。<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6Ny_DWf4MofVZFExpTWzmW21trwUDZFb1xtasUaZuVrEYZPJQngWOHan1Q711GrO3hsPYU4dh2GKGckj070EVts7ESP8Ab4OqNrkqz0RV_brnT6JcPpvTYD4mnUw2NV6yllOaSZz98IdbiCGu9C7OCRhqv6KKLiLsZcmSezXv2sKtipNLUPoS2-J2sg/s1133/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-19%20171704.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="680" data-original-width="1133" height="384" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6Ny_DWf4MofVZFExpTWzmW21trwUDZFb1xtasUaZuVrEYZPJQngWOHan1Q711GrO3hsPYU4dh2GKGckj070EVts7ESP8Ab4OqNrkqz0RV_brnT6JcPpvTYD4mnUw2NV6yllOaSZz98IdbiCGu9C7OCRhqv6KKLiLsZcmSezXv2sKtipNLUPoS2-J2sg/w640-h384/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-19%20171704.png" width="640" /></a></div><br /></div>傻花哥http://www.blogger.com/profile/06001039053106717322noreply@blogger.comtag:blogger.com,1999:blog-8336658864716273880.post-90376241787268738712023-08-16T12:38:00.000+08:002023-08-16T12:38:02.100+08:00物聯網雲端平台: ThingSpeak<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiK-OP97MwfaUGHeTDUTgw9LdjpwYwVcM--9TuwZCvYnrneZGxiQk8zgm05y2K2SgGIiWJf6eMN5CK0m0Pkx4DxLMkW70vWWxxbzCRwfhDbr9WROKZE1ljG_DIMFOaX3mJHDSuQyhwzyPXmmi0NdlI3UC1N1PxrYOvXnxp6ov3p-8cMfzLC83xTvhNJjQ/s1269/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-02%20162653.png" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="732" data-original-width="1269" height="185" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiK-OP97MwfaUGHeTDUTgw9LdjpwYwVcM--9TuwZCvYnrneZGxiQk8zgm05y2K2SgGIiWJf6eMN5CK0m0Pkx4DxLMkW70vWWxxbzCRwfhDbr9WROKZE1ljG_DIMFOaX3mJHDSuQyhwzyPXmmi0NdlI3UC1N1PxrYOvXnxp6ov3p-8cMfzLC83xTvhNJjQ/s320/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-02%20162653.png" width="320" /></a></div>ThingSpeak是用Ruby編寫的開源軟件,允許用戶與啟用Internet的設備進行通信。它通過為設備和社交網絡網站提供API來促進數據訪問,數據檢索和數據記錄。ThingSpeak最初由ioBridge在2010年推出,作為支持IoT應用程序的服務。 (維基百科)
<div><br /></div><div>ThingSpeak 提供非商業使用的免費雲端服務,提供物聯網相關裝置的訊息紀錄之用,物聯裝置的免費商業使用限制訊息發送間隔必須大於15秒以上。</div><div><br /></div><div>想使用平台服務當然得先加入會員,前往 <a href="https://thingspeak.com/" target="_blank">ThingSpeak</a> 首頁,按下左上角的人像圖形按鈕進入登入畫面,如下圖左,在按下其中的 Create one! 即可開始填寫會員加入資料,如下右圖。</div><table><tbody><tr><td><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1SudghhbASiBKYZHk_zw_jsrHYyUxib9rgKU-Vl0iu_SqfWYe7e0VSbWAP9giSvyZqNeo6JkmKOiN48u6pyjtY51MuhMqSpyuMnTn7zBS_FLoOcpX7SHNJfFp8LlrUjnCrByOPIDFV_09wdB-odyhZ_o50u3JlnPdDyaHFiCQSAoC0PLZGERTsHIYkw/s1269/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-02%20163029.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="732" data-original-width="1269" height="185" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1SudghhbASiBKYZHk_zw_jsrHYyUxib9rgKU-Vl0iu_SqfWYe7e0VSbWAP9giSvyZqNeo6JkmKOiN48u6pyjtY51MuhMqSpyuMnTn7zBS_FLoOcpX7SHNJfFp8LlrUjnCrByOPIDFV_09wdB-odyhZ_o50u3JlnPdDyaHFiCQSAoC0PLZGERTsHIYkw/s320/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-02%20163029.png" width="320" /></a></div><br /></td><td><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIhX4wwIsE9OYe3vKlef0NdXPuCU5ukO23y0V-RQo095SmyWsH5fUdrOOnMsXHBYkWOvBtz8Yf2vLRDhWz-mrkRIUVcVyqk-KEzytyziioY3MdhbUlzPz4uWpEvJpIHFsuPJ6j3t9bXtKp2SNQP4TQlApDBl7_LCq6qTtHT9128doPpjikuZeHGnEY7Q/s1269/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-02%20163116.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="732" data-original-width="1269" height="185" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIhX4wwIsE9OYe3vKlef0NdXPuCU5ukO23y0V-RQo095SmyWsH5fUdrOOnMsXHBYkWOvBtz8Yf2vLRDhWz-mrkRIUVcVyqk-KEzytyziioY3MdhbUlzPz4uWpEvJpIHFsuPJ6j3t9bXtKp2SNQP4TQlApDBl7_LCq6qTtHT9128doPpjikuZeHGnEY7Q/s320/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-02%20163116.png" width="320" /></a></div><br /></td></tr></tbody></table><span><a name='more'></a></span>註冊完畢別忘了收取驗證信進行註冊驗證。有了會員資格就可以開始使用 ThingSpeak 所提供的服務。<div><br /></div><div> ThingSpeak 資料除純單元叫做 Channel(通道) 其實就等同一張資料表,換個名稱而已,而這個 Channel(通道) 中的每一筆資料紀錄最多可以有8個欄位,假設我們要記錄場所的溫度與濕度變化,就可以建立一個 "溫溼度紀錄" 的 Channel(通道) ,而這個 Channel(通道) 裡有 "溫度" 、 "濕度" 兩個資料欄位。</div><div><br /></div><div>進入 ThingSpeak 首頁並登入,在 Channels 頁面中按下 New Channel 按鈕。</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixkXhMSqHf9PBW46CjJhX6TJpgRU4DM37TIwVSdSwm-r8ZeL_bTdH2wawcGzLBPrlNyZIPFiPL_3ia0x3eUdgqQ4LJliqOqnBeoe7fcq8C3RfXjo-imRcyd7CpLZ96Qc_-8MKVR30sADaHdcmGrJyck2pqUafFDsGwPmECOT4cInm4KjybG8PK-dJNqQ/s1092/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-02%20165626.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="464" data-original-width="1092" height="272" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixkXhMSqHf9PBW46CjJhX6TJpgRU4DM37TIwVSdSwm-r8ZeL_bTdH2wawcGzLBPrlNyZIPFiPL_3ia0x3eUdgqQ4LJliqOqnBeoe7fcq8C3RfXjo-imRcyd7CpLZ96Qc_-8MKVR30sADaHdcmGrJyck2pqUafFDsGwPmECOT4cInm4KjybG8PK-dJNqQ/w640-h272/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-02%20165626.png" width="640" /></a></div><div><br /></div>填寫 Channel(通道) 名稱,所勾所需的欄位數量並填上對應的欄位名稱。資料填寫完畢資後,將頁面捲到最下方,按下 Save Channel 按鈕。<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5GWwud6vtfEtWgbLwv5Yl6ZNZHrM7uLSdVt8Th18HfRmIDyndMtGjARGp3AE1omN2GK7-NDBY0chm1UvbLKVAWpQGzY60-Bv4xty817lr2d10zak2CxXjn_A08nLYeAIx2OW969GAzBEdaWiVpGSJ6wVNraA7tkmtew8tid9HkxzqZsn4f6tayzOITQ/s1092/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-02%20170211.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="464" data-original-width="1092" height="272" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5GWwud6vtfEtWgbLwv5Yl6ZNZHrM7uLSdVt8Th18HfRmIDyndMtGjARGp3AE1omN2GK7-NDBY0chm1UvbLKVAWpQGzY60-Bv4xty817lr2d10zak2CxXjn_A08nLYeAIx2OW969GAzBEdaWiVpGSJ6wVNraA7tkmtew8tid9HkxzqZsn4f6tayzOITQ/w640-h272/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-02%20170211.png" width="640" /></a></div><br /><div>每一個 Channel(通道)都有一個對應的ID編號 (Channel ID) 與 Write API Key(等同寫入權限驗證碼),所以當我們要把資料上傳時就必須同時送上專屬的 API Key。建立好新 Channel(通道)後點選 API Keys 頁籤既可看到相關資料。</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPU_GuKnfKLSNEg8yO9uYq-U0uiNYw8MaNeA7-1ghWkNkLWZmxPMdnTkQP2RC7Rq-8L3M1kYK2zi-tzWrpuHgod3MkqZtlu0PTx-AQ3Nf2PEefL57SqnleklMJ-bCZrUyN85v6fNXc2dMLZXo1gq8P1xQd2jlWoFXCKds0tKmY6eMyx_w5KZJV23njiw/s1081/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-02%20170608.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="533" data-original-width="1081" height="316" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPU_GuKnfKLSNEg8yO9uYq-U0uiNYw8MaNeA7-1ghWkNkLWZmxPMdnTkQP2RC7Rq-8L3M1kYK2zi-tzWrpuHgod3MkqZtlu0PTx-AQ3Nf2PEefL57SqnleklMJ-bCZrUyN85v6fNXc2dMLZXo1gq8P1xQd2jlWoFXCKds0tKmY6eMyx_w5KZJV23njiw/w640-h316/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-02%20170608.png" width="640" /></a></div><br /><div><h2 style="text-align: left;"><span style="color: #cc0000;">測試數據傳送</span></h2><div>當我們想把資料送交 ThingSpeak 寫入到 Channel(通道)中。可以利用查詢字串的方式(GET)來做,也就是進行網址的組合:</div></div><div><br /></div><div><b>平台網址 <span style="color: #2b00fe;">?</span> 參數1=參數值1 <span style="color: #2b00fe;">&</span> 參數2=參數值2 <span style="color: #2b00fe;">&</span> 參數2=參數值2 <span style="color: #2b00fe;">&</span> 參數3=參數值3</b></div><div>以本例來說,兩個參數溫度與濕度,所以網址就是<pre class="code prettyprint">GET https://api.thingspeak.com/update?api_key=專屬金鑰&field1=溫度值&field2=濕度值</pre></div>
每傳送一筆資料就會回傳該筆資料紀錄的編號數字,例如第一筆就是1,第十筆就是10,但如果回傳是0就代表發生寫入錯誤。<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5M7wu-lr-NxUSGY6o0_h1iyktgQ91BZzaJRVSpVwZ0hVNml56G2uLlLMxMKd4dmdxbETG0Y_Df_fYO8BT5SfU1cnkA661RTTcnkq6dpM_xt_a8GrxY6OSZc7DpHd_ekrS2hV04G0LD47C4w1OFIy7oHfP3KevOeI_xTHIeJJkZyzMFOI7pE-69W4FDw/s972/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-02%20173709.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="157" data-original-width="972" height="104" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5M7wu-lr-NxUSGY6o0_h1iyktgQ91BZzaJRVSpVwZ0hVNml56G2uLlLMxMKd4dmdxbETG0Y_Df_fYO8BT5SfU1cnkA661RTTcnkq6dpM_xt_a8GrxY6OSZc7DpHd_ekrS2hV04G0LD47C4w1OFIy7oHfP3KevOeI_xTHIeJJkZyzMFOI7pE-69W4FDw/w640-h104/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-02%20173709.png" width="640" /></a></div><div><br /></div><span style="color: #ffa400;">免費商業使用限制訊息發送間隔必須大於15秒以上</span>。試著傳送幾筆資料後即可在 Private view 頁籤畫面中看到資料圖表。<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhT877gOsmPXjqQCaY6-P98NJfTuXT844b8jkCZ55OrwbxHX8Ry-dhyZejivaojNRwz8ZMveA1ChLVTp_A6yIdtilDDKqfXqBlcC0xhjzGtmMyF5KJH8NLqAO6ZJAUydXNPWM8yYEzPhVhG329HxqA5w-FI7IbJUAAV2zum2z0Fmeg1ogQfOqHNNbMdrQ/s1286/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-02%20174544.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="799" data-original-width="1286" height="398" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhT877gOsmPXjqQCaY6-P98NJfTuXT844b8jkCZ55OrwbxHX8Ry-dhyZejivaojNRwz8ZMveA1ChLVTp_A6yIdtilDDKqfXqBlcC0xhjzGtmMyF5KJH8NLqAO6ZJAUydXNPWM8yYEzPhVhG329HxqA5w-FI7IbJUAAV2zum2z0Fmeg1ogQfOqHNNbMdrQ/w640-h398/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-02%20174544.png" width="640" /></a></div><br />傻花哥http://www.blogger.com/profile/06001039053106717322noreply@blogger.comtag:blogger.com,1999:blog-8336658864716273880.post-82048059980752910282023-08-01T02:07:00.000+08:002023-08-01T02:07:36.281+08:00使用IFTTT觸發服務以Email傳送天氣資料在之前各單元已經學習過如何 <a href="https://www.twbts.work/2022/07/esp8266-micropython.html" target="_blank">利用 ESP8266 MicroPython 取得氣象網站的天氣開放資料</a> 、 <a href="https://www.twbts.work/2022/07/esp8266-micropython-http.html" target="_blank">ESP8266 MicroPython 網路HTTP傳輸</a> 、 <a href="https://www.twbts.work/2022/06/esp8266-micropython.html" target="_blank">ESP8266 MicroPython 無線基地台連線</a> 配合IFTTT 服務平台得申請使用,現在就來將這些相關學習串連起來。<div><br /></div><div>本實作將利用ESP8266建立無線網路連線取得 openweathermap 氣象網站的資料,並將相關的項資料透過 IFTTT 服務平台將天氣資料透過 EMail 寄送給特定對象。<table><tbody><tr><td><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRIuay7QecgyUOFjhiXx0yX82Z9v-u351QGWEHWTZqiqBzpaJeeKMx69Lnd_ItsGXSiy4YS1sUbU6wBXpJN7fWPz2zofp2JXBoda2cw7MmyM0AZZxmIQTVnPvgGiWlGgEygVkiyIc2aGPoJD0VgWsa3IovMfcb8y2FVdCHYVx7p6FXzP-J80__gFEA0A/s854/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-01%20155859.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="483" data-original-width="854" height="181" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRIuay7QecgyUOFjhiXx0yX82Z9v-u351QGWEHWTZqiqBzpaJeeKMx69Lnd_ItsGXSiy4YS1sUbU6wBXpJN7fWPz2zofp2JXBoda2cw7MmyM0AZZxmIQTVnPvgGiWlGgEygVkiyIc2aGPoJD0VgWsa3IovMfcb8y2FVdCHYVx7p6FXzP-J80__gFEA0A/w320-h181/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-01%20155859.png" width="320" /></a></div><br /></td><td><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwk3_ezhmMczERNtttJeMbwcySPIPRszgPvHyBVdO5XvCnV6uSaUdXvK5Vdxq5EXK24oR14gG3NYGcR81SPvm0IDT3C2TUfSLddg17pOzb3GuuplbcE1m4rbUV_7R0ujvIGmMdDZ5-UD4FoQ2fw_3YOGJ0Bm1_rmSGi6ViU1MqXlC5LzM-XxFjoyITxg/s854/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-01%20155721.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="483" data-original-width="854" height="181" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwk3_ezhmMczERNtttJeMbwcySPIPRszgPvHyBVdO5XvCnV6uSaUdXvK5Vdxq5EXK24oR14gG3NYGcR81SPvm0IDT3C2TUfSLddg17pOzb3GuuplbcE1m4rbUV_7R0ujvIGmMdDZ5-UD4FoQ2fw_3YOGJ0Bm1_rmSGi6ViU1MqXlC5LzM-XxFjoyITxg/w320-h181/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-01%20155721.png" width="320" /></a></div><br /></td></tr></tbody></table><span><a name='more'></a></span>撰寫實驗程式如下:
<pre class="code prettyprint">from urlencode import urlencode
import network
import urequests, ujson
#網路天氣URI參數設定與組合
API_key = "<api>"
area = "Taipei,TW"
url = "https://api.openweathermap.org/data/2.5/weather?"
url += "q=" + area # 城市與國別
url += "&units=metric&lang=zh_tw" # 溫度單位、語言
url += "&appid=" + API_key
#指定IFTTT服務金鑰
#IFTTT_KEY = "<api>"
#設定網路連線帳號密碼
SSID = "<wifi>" # WiFi名稱
PASSWORD = "<wifi>" # WiFi密碼
#自訂無線基地台連線函式
def connect_wifi(ssid, passwd):
sta = network.WLAN(network.STA_IF)
sta.active(True)
if not sta.isconnected():
print("連線中... \n")
sta.connect(ssid, passwd)
while not sta.isconnected():
pass
print("連線成功... \n")
#進行網路連線
connect_wifi(SSID, PASSWORD)
#嘗試取回天氣資料並加以解析
try:
response = urequests.get(url)
data = ujson.loads(response.text) #轉換JSON格式資料成Python字典物件
except:
data = None
#串接IFTTT服務的網址資訊
if not data:
print("沒有查詢到天氣資料")
else:
print("天氣資料接收成功")
main = data["main"]
temp = main["temp"]
params = { "value1": "溫度 " + str(temp), "value2": "濕度 " + str(main["humidity"]) }
WEBHOOK_URL="https://maker.ifttt.com/trigger/EmailTest/with/key/" + IFTTT_KEY
WEBHOOK_URL+="/?" + urlencode(params)
#使用urequests.get()方法觸發IFTTT服務送出取得的天氣資訊
WEBHOOK = urequests.get(WEBHOOK_URL)
if WEBHOOK is not None and WEBHOOK.status_code == 200:
print("天氣資料Email傳送成功!!")
else:
print("天氣資料Email傳送失敗!!")
</wifi></wifi></api></api></pre></div>程式在Thonny執行畫面如下:<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWTd0cwN31jbqeyoLd1ff_mKGdX5qUrW5reMFNg9DL6pOGS0QDf4zd_omw_zUcdmQMxBSD4fsuIa30VjmEY92jgERlG9DfaF7NgSYcjkSCvj4kBRdZ4_p7fGWoabSWzwq3g5QvYeyJ7R0HQsF01rXikHtU0LsLkCJxg4o4hJAUacBGu8DpfNrNrgOyEw/s1161/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-01%20161511.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="651" data-original-width="1161" height="358" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWTd0cwN31jbqeyoLd1ff_mKGdX5qUrW5reMFNg9DL6pOGS0QDf4zd_omw_zUcdmQMxBSD4fsuIa30VjmEY92jgERlG9DfaF7NgSYcjkSCvj4kBRdZ4_p7fGWoabSWzwq3g5QvYeyJ7R0HQsF01rXikHtU0LsLkCJxg4o4hJAUacBGu8DpfNrNrgOyEw/w640-h358/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-01%20161511.png" width="640" /></a></div><br />當上列程式碼順利執行後,取得的天氣資料就會藉由 IFTTT 服務平台寄出信件,收到類似下圖的天氣資料信件。<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcpJ_DmqaCLdSuF6aeysJ02ojfgcib9-67qfDS4LPoowIO7NluCd-fGmN_DYSJod2UC-1oE1iTHbQ3Tb-3nA-qiymBalA81fMsOv9dOdkWOJGHLqcqEMW45BLX-v0U5WO0vuOW2wLvWwcLQ81mIshtEZMfmkeltNS47GigUlHL323HvG5avQQd8sbYzw/s906/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-01%20163542.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="459" data-original-width="906" height="324" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcpJ_DmqaCLdSuF6aeysJ02ojfgcib9-67qfDS4LPoowIO7NluCd-fGmN_DYSJod2UC-1oE1iTHbQ3Tb-3nA-qiymBalA81fMsOv9dOdkWOJGHLqcqEMW45BLX-v0U5WO0vuOW2wLvWwcLQ81mIshtEZMfmkeltNS47GigUlHL323HvG5avQQd8sbYzw/w640-h324/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-08-01%20163542.png" width="640" /></a></div><br />
傻花哥http://www.blogger.com/profile/06001039053106717322noreply@blogger.comtag:blogger.com,1999:blog-8336658864716273880.post-58151925522221220082023-07-14T12:34:00.000+08:002023-07-14T12:34:45.172+08:00建立 IFTTT 觸發程式與服務測試 (下)當IFTTT上的小程序 Applets建立完成後,要應用 WebHooks 服務還得取得 WebHooks 金鑰。 <div> 回到 IFTTT並登入,選擇 My Applet 。</div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXxp-5W-4wOfnNYFGcxUugdao8BIdCK0YIwb4U1PiW4Dl3_ojREpqT5yF_iYPqZ09KfB5KdF2Czy_rwPVjWJAuyWAlhT1_uy0QnJvTQlGpoKOo6g_YKftOOBrICAs0i-_tLHd0F1N4abwsZeapNv0TEh_M-c-mltqSRvyA9x4Pa2YHtfD5KygjTewy9w/s1255/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-07%20131955.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="751" data-original-width="1255" height="239" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXxp-5W-4wOfnNYFGcxUugdao8BIdCK0YIwb4U1PiW4Dl3_ojREpqT5yF_iYPqZ09KfB5KdF2Czy_rwPVjWJAuyWAlhT1_uy0QnJvTQlGpoKOo6g_YKftOOBrICAs0i-_tLHd0F1N4abwsZeapNv0TEh_M-c-mltqSRvyA9x4Pa2YHtfD5KygjTewy9w/w400-h239/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-07%20131955.png" width="400" /></a></div><div><br /></div><span><a name='more'></a></span>點選已建立WebHooks 服務的程序項目。</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5o9pCzWEFYV4sNe34vXCyA8WXYszJlVdiHgMlidVQfaQy0xsqg6ZoFkxIHvQObtvRG8MEYW2_Q2SXzEdwMxa-hRZ8OOpOWcyD5Oh-aEXixodkQH7JZWsvzvfKm7rRnnNNuN-cUD-zZKqdU1WZp2lGF8i89NBzzOivv-InQMc7rOfKkfexljCi_UpNGw/s1255/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-07%20132107.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="751" data-original-width="1255" height="239" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5o9pCzWEFYV4sNe34vXCyA8WXYszJlVdiHgMlidVQfaQy0xsqg6ZoFkxIHvQObtvRG8MEYW2_Q2SXzEdwMxa-hRZ8OOpOWcyD5Oh-aEXixodkQH7JZWsvzvfKm7rRnnNNuN-cUD-zZKqdU1WZp2lGF8i89NBzzOivv-InQMc7rOfKkfexljCi_UpNGw/w400-h239/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-07%20132107.png" width="400" /></a></div><br /><div>點選頁面中的「 WebHooks 」圖示。</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEju5_qlRDUra7TN9N3wpvBsSqWlktwAOV1frZ7EkG7ob9ZFkdD6IdnensEbXHN5SCYG3O_J4QxPRFLEPozX3owtejJHsDzHdvlbvEAGQJPVvr1w-PNT4FXWlVaBl2lss7h-WKMb3oqzy8ExRZeokpsCTvLEhYYbMBIzooNWyyILZL0RUlkVI08xzbdoyQ/s1255/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-07%20132449.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="751" data-original-width="1255" height="239" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEju5_qlRDUra7TN9N3wpvBsSqWlktwAOV1frZ7EkG7ob9ZFkdD6IdnensEbXHN5SCYG3O_J4QxPRFLEPozX3owtejJHsDzHdvlbvEAGQJPVvr1w-PNT4FXWlVaBl2lss7h-WKMb3oqzy8ExRZeokpsCTvLEhYYbMBIzooNWyyILZL0RUlkVI08xzbdoyQ/w400-h239/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-07%20132449.png" width="400" /></a></div><br /><div>進入 Webhooks integrations 頁面,按下頁面中的 Documentation 按鈕。</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9fWC-PCN_mjRump4_n3kdAqt8SZpODdRUAbFp48sdDLGtm7iuiV67lUcZnZ44Ydio2AoS2wbo2KoW1lDiuUO-P6O6EN4CJzJx3VgjZ4d4WZP0KmAJRVrc4aHvwQCWjc9ZC8d0mhZZZG1dh4X_UWHQ2607AL3aSoatA8MgmX_YADlfanAOufbcm7HCPQ/s1255/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-07%20132822.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="751" data-original-width="1255" height="239" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9fWC-PCN_mjRump4_n3kdAqt8SZpODdRUAbFp48sdDLGtm7iuiV67lUcZnZ44Ydio2AoS2wbo2KoW1lDiuUO-P6O6EN4CJzJx3VgjZ4d4WZP0KmAJRVrc4aHvwQCWjc9ZC8d0mhZZZG1dh4X_UWHQ2607AL3aSoatA8MgmX_YADlfanAOufbcm7HCPQ/w400-h239/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-07%20132822.png" width="400" /></a></div><div><br /></div>顯示於 Your key is 後方的一大串英數字串就是 API 金鑰字串,如果要以 HTTP 方式觸發服務,就得在參數中附上這串金鑰字串。<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6mNg8id0DE7hVYAyS3A8dNZeIIYvfcyXMz3wAHZInNVYLB87sA-cpFXb25i_0jEoDsncdpWyZo3nUNyFIgxaAzXowO5SxByOL66cFXv0HQe1q5avWmIJ6VpJ-f6sYDEJI9R0463iOR84PTvIS7sjhJT4l6vQNAHT7bUYRguI0ZXNYazD8-W4nTPNG_w/s1255/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-07%20133216.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="751" data-original-width="1255" height="239" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6mNg8id0DE7hVYAyS3A8dNZeIIYvfcyXMz3wAHZInNVYLB87sA-cpFXb25i_0jEoDsncdpWyZo3nUNyFIgxaAzXowO5SxByOL66cFXv0HQe1q5avWmIJ6VpJ-f6sYDEJI9R0463iOR84PTvIS7sjhJT4l6vQNAHT7bUYRguI0ZXNYazD8-W4nTPNG_w/w400-h239/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-07%20133216.png" width="400" /></a></div><br /><div>接著,我們可以在 To trigger an Event with 3 JSON values區段中的{event} 填入事件名稱, With an optional JSON body of 欄位試著填入三個測試參數值,然後按下 Test 按鈕。<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4ouSmG6OLppSkrE_MlVfNa-AEUhUc-jftCwTfMT3_egjoC83ZYjN3gzSc-cUGtQbpjGVXnNhktbovGyNZmX7MTiJ33HE1LxZ7VRVekG_0eTl7ViUcYJ1T-J6NK6fnnJR4sO61YJfshgdwb7a9jF8E0AAsR7yhdq_oHXBX7IcHuIvckvR4bsp0_8pk6g/s1255/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-07%20140956.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="751" data-original-width="1255" height="239" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4ouSmG6OLppSkrE_MlVfNa-AEUhUc-jftCwTfMT3_egjoC83ZYjN3gzSc-cUGtQbpjGVXnNhktbovGyNZmX7MTiJ33HE1LxZ7VRVekG_0eTl7ViUcYJ1T-J6NK6fnnJR4sO61YJfshgdwb7a9jF8E0AAsR7yhdq_oHXBX7IcHuIvckvR4bsp0_8pk6g/w400-h239/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-07%20140956.png" width="400" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgB-JjeAMTLqYRO1rXYQzXVZWulfWUiyRkr_8gb7PWr4C6VoPwkkVpLm3tJG6AVngIt0UjckrqK3rFwzDmUTAOTK1GBsh7rIfrKlDhuU3jQ-wMfdDeIudLoUJVidbi2AqfzaEuz4Qd61A9_k-7aVYvejebG9C-zWb-SWXc8RrcYF7pLqZmybq0jVgJDrQ/s1255/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-07%20134046.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="751" data-original-width="1255" height="239" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgB-JjeAMTLqYRO1rXYQzXVZWulfWUiyRkr_8gb7PWr4C6VoPwkkVpLm3tJG6AVngIt0UjckrqK3rFwzDmUTAOTK1GBsh7rIfrKlDhuU3jQ-wMfdDeIudLoUJVidbi2AqfzaEuz4Qd61A9_k-7aVYvejebG9C-zWb-SWXc8RrcYF7pLqZmybq0jVgJDrQ/w400-h239/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-07%20134046.png" width="400" /></a></div><br /></div><div>試著收取信件,在 To trigger an Event with 3 JSON values區段中的 With an optional JSON body of 欄位填入的參數值將成為小程序 Applets 應用 WebHooks 服務發送的電子郵件指定項目內容。<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEie7k0LP2oAAqRx9IaV8Hfs1AExnnBxMRC23lEl5jJHi-i0DEE4gIQW80hOcBewj2_ZacF_XOY4HLM6gQbvAhaodASjzvF75RhdZLjPYyYv-VPNshK_Q80yCL2XlSyyKQ0cEzQR68ruMp8FVZiS8rhqn1Iv0DFWUPJHoN1SDfBF9SD6W4ylx15kczCGOw/s923/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-07%20141246.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="460" data-original-width="923" height="199" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEie7k0LP2oAAqRx9IaV8Hfs1AExnnBxMRC23lEl5jJHi-i0DEE4gIQW80hOcBewj2_ZacF_XOY4HLM6gQbvAhaodASjzvF75RhdZLjPYyYv-VPNshK_Q80yCL2XlSyyKQ0cEzQR68ruMp8FVZiS8rhqn1Iv0DFWUPJHoN1SDfBF9SD6W4ylx15kczCGOw/w400-h199/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-07%20141246.png" width="400" /></a></div><br /></div>傻花哥http://www.blogger.com/profile/06001039053106717322noreply@blogger.comtag:blogger.com,1999:blog-8336658864716273880.post-14041664465107965512023-06-28T13:24:00.000+08:002023-06-28T13:24:29.651+08:00建立 IFTTT 觸發程式與服務測試 (上)<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi53ozrIWpvkNIKeZ_XTEOzqZ2ELHxZOA7-G-6pLjRga2xQRQoh2-j1Zz-Qt850fJpdjnqbUr2U-GLMVzWsW4wYuZgclwzreLXeekHlmLr7cwGJyfP_XGn730XFMZ-09RwzdlqNzCoMKRL8HusWo251cEIH82cLOtVtXjTRVJGR915i-Vblpc55HKl-zw/s1920/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-06%20204233.png" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="1050" data-original-width="1920" height="175" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi53ozrIWpvkNIKeZ_XTEOzqZ2ELHxZOA7-G-6pLjRga2xQRQoh2-j1Zz-Qt850fJpdjnqbUr2U-GLMVzWsW4wYuZgclwzreLXeekHlmLr7cwGJyfP_XGn730XFMZ-09RwzdlqNzCoMKRL8HusWo251cEIH82cLOtVtXjTRVJGR915i-Vblpc55HKl-zw/s320/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-06%20204233.png" width="320" /></a></div><br />IFTTT 的 Applet 是一個小程序,能將兩個或多個應用程序或設備連接在一起。
Applet 將兩個或多個應用程序或設備連接在一起。它是兩個服務之間的自動化或集成/連接,使您能夠做這些服務無法自行完成的事情。
小程序由觸發器和動作組成,觸發器告訴 Applet 開始,動作是 Applet 運行的最終結果。<div><br /></div><div>在本範例中將使用HTTP請求為觸發,並以寄送EMAIL的程序做為 Applet。</div><div><br /></div><div>在開始建立程序之前,請先完成IFTTT的登入動作。<span><a name='more'></a></span></div><div>點擊 My Applets,查看自己的控制程序。</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7RywRvOjBWQ3gGEn_zgS-n-8HPh2B2DRtk4jLPvfo7pBV30EA8tse6MLhKjJ0VL-2gb0fodIRpST60bRgn1M0bDQfii1VPqVX1mflFTukcCd3DCccKQwa4v-7UhP71jHzVB1-zUK7MlvqCgGrf4tFnZjP2zAccK5TWTzXNsiBjWbgqZP7n0ldpi3Zsg/s947/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-06%20210431.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="540" data-original-width="947" height="228" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7RywRvOjBWQ3gGEn_zgS-n-8HPh2B2DRtk4jLPvfo7pBV30EA8tse6MLhKjJ0VL-2gb0fodIRpST60bRgn1M0bDQfii1VPqVX1mflFTukcCd3DCccKQwa4v-7UhP71jHzVB1-zUK7MlvqCgGrf4tFnZjP2zAccK5TWTzXNsiBjWbgqZP7n0ldpi3Zsg/w400-h228/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-06%20210431.png" width="400" /></a></div><br /><div>點擊網頁中的「Creat your won」。<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIQ9DObYpSMYVdmoTM3AY-QDIvp2ruFrqqDsQlK_dodQn11SIzqWmUNppBv8_V7YhHar3pdlNq6pojO8FzRUVTtE1r6V9Y5pzItKWVijjxewAv_RZHZIhrEmnbRQoe4ou0VgO8uVW7a2bTWqVjfUbC9fwMpnoRMISoO4rW-TrzOXbXDQDQclgwfvahXA/s947/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-06%20210551.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="540" data-original-width="947" height="228" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIQ9DObYpSMYVdmoTM3AY-QDIvp2ruFrqqDsQlK_dodQn11SIzqWmUNppBv8_V7YhHar3pdlNq6pojO8FzRUVTtE1r6V9Y5pzItKWVijjxewAv_RZHZIhrEmnbRQoe4ou0VgO8uVW7a2bTWqVjfUbC9fwMpnoRMISoO4rW-TrzOXbXDQDQclgwfvahXA/w400-h228/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-06%20210551.png" width="400" /></a></div><br /></div>按下 If This 後方的 Add 按鈕來新增觸發條件。<br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaJt8y1MRCHfwR_RjAIrVGkkwV9QpjP1p3FN832H_bZq1kpdBX1v37Gewhic9XKR4_Uqjb8Ep3cAciGAe3ffcf83ZjOELaXjr1oyImkwI8F9GWXqeKmae-GTiIjPJAHqeM6bTpBcVvB1xdxAxRs78JlbOZfRswPfsYQDnzSC6GxM_CL4ASqUuSc3oNSA/s947/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-06%20210622.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="540" data-original-width="947" height="228" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaJt8y1MRCHfwR_RjAIrVGkkwV9QpjP1p3FN832H_bZq1kpdBX1v37Gewhic9XKR4_Uqjb8Ep3cAciGAe3ffcf83ZjOELaXjr1oyImkwI8F9GWXqeKmae-GTiIjPJAHqeM6bTpBcVvB1xdxAxRs78JlbOZfRswPfsYQDnzSC6GxM_CL4ASqUuSc3oNSA/w400-h228/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-06%20210622.png" width="400" /></a></div><br /><div>在觸發條檢選擇驗面中的搜尋框輸入關鍵字 WEB ,在搜尋結果項目中選取使用 HTTP 請求觸發程序的 Webhooks 項目。</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8HAghOvDoMblcwkeQeNK7ohYeFytdRHb503OZyvJxoErQQJNsdddTiyCVahWJHi9dWxt1jlJ27Fz5mVNG6v_cSyf6MMHr_gAWREO6XFqhsdkfBDupI8EcwYicYATLaQV5zGJI5TN8G0ioQzu4ZUNlEjMAsJJ1RLdU_TIYQj38_De7LIP00lGxjbiN0w/s947/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-06%20211600.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="540" data-original-width="947" height="228" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8HAghOvDoMblcwkeQeNK7ohYeFytdRHb503OZyvJxoErQQJNsdddTiyCVahWJHi9dWxt1jlJ27Fz5mVNG6v_cSyf6MMHr_gAWREO6XFqhsdkfBDupI8EcwYicYATLaQV5zGJI5TN8G0ioQzu4ZUNlEjMAsJJ1RLdU_TIYQj38_De7LIP00lGxjbiN0w/w400-h228/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-06%20211600.png" width="400" /></a></div><br /><div>選取收到 HTTP 請求就觸發程序的 Receive a web request 項目,Receive a web request 服務收到通知事件的 Web 請求時,都會觸發此觸發器。<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9ybIgJVx9KeozP4GXijtre-o8VumhC6YjrrxCp5EQ84MOm7bVu40rYaxk71AFG-rrfWZmumx9U3ge05P55IgVUEU6vHOwR06cSWye7plFsglk3HBWC_lfdgzpEl_HDZ8jWjTVUU-oDNXp1LKgpCuDEftL3DI-_wSLdo26TsVH97_uXI59OSX2gC4rUw/s947/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-06%20212102.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="540" data-original-width="947" height="228" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9ybIgJVx9KeozP4GXijtre-o8VumhC6YjrrxCp5EQ84MOm7bVu40rYaxk71AFG-rrfWZmumx9U3ge05P55IgVUEU6vHOwR06cSWye7plFsglk3HBWC_lfdgzpEl_HDZ8jWjTVUU-oDNXp1LKgpCuDEftL3DI-_wSLdo26TsVH97_uXI59OSX2gC4rUw/w400-h228/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-06%20212102.png" width="400" /></a></div><br /></div><div>連接Webhooks服務,並授權Webhooks權限。按下 Connect 按鈕。</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtIMwe09XI_KOm5fb7T8P3VyWJj8Ubbqk7TZgU3QgZ0JVDd2swh45RDGX2b2tTvmHLpwiyqAwK0sNGPETaJBMPDiyE2AXUzYYTKpILE3wAK3aOry73DZsNQ29ue5Fk7aLZ0oVPUcE0VaXdjil__Ikz3Z-_nWtvoXwf4XDyGtFok1WplNh9GVLPTIHWIA/s947/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-06%20212822.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="540" data-original-width="947" height="228" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtIMwe09XI_KOm5fb7T8P3VyWJj8Ubbqk7TZgU3QgZ0JVDd2swh45RDGX2b2tTvmHLpwiyqAwK0sNGPETaJBMPDiyE2AXUzYYTKpILE3wAK3aOry73DZsNQ29ue5Fk7aLZ0oVPUcE0VaXdjil__Ikz3Z-_nWtvoXwf4XDyGtFok1WplNh9GVLPTIHWIA/w400-h228/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-06%20212822.png" width="400" /></a></div><br /><div><br /></div><div>輸入事件名稱,本例為 "EmailTest",然後按下 Create trigger 按鈕。</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiUCRnKBF48QZ7J559pJsQsKTo_Ut7FLJ2ywe1-QyM5RI_wOx_dxbjQHMMwB8xOKBMmi8SKE1t1LMzVx9zFMRhBAcjB-l970ytvy67MwWwhOMUldfbtChf6IPVpoySX-cvCoynlSxiL4QBApr5c42iFaY2EDxXdDpvT_Jnyh9w6Emuunq40Jsupkb95Q/s947/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-06%20212953.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="540" data-original-width="947" height="228" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiUCRnKBF48QZ7J559pJsQsKTo_Ut7FLJ2ywe1-QyM5RI_wOx_dxbjQHMMwB8xOKBMmi8SKE1t1LMzVx9zFMRhBAcjB-l970ytvy67MwWwhOMUldfbtChf6IPVpoySX-cvCoynlSxiL4QBApr5c42iFaY2EDxXdDpvT_Jnyh9w6Emuunq40Jsupkb95Q/w400-h228/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-06%20212953.png" width="400" /></a></div><br /><div>建立條件滿足時要做的事,也就是事件被觸發後要做的事。按下 Then That 後方的 Add 按鈕來新增對應的 WEB 服務。<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1To1dvpr6pOCIbsoPsyMxpAdZwVcYG-y-4mt8TZuogpfQJVqVqWZ6_bCT5_1I7ICFmlmgcHrunEJee_2LBcAukDhFU-8II7HvKlQV1SAD84Lljmrk0g6o1Kxj2wQkWtlVKm1wJFRRXW0DYK9H0J8JhAoHCDnwDg5D-D8Wl1xrl4C3rujhsPIm2XQg7w/s947/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-06%20213350.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="540" data-original-width="947" height="228" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1To1dvpr6pOCIbsoPsyMxpAdZwVcYG-y-4mt8TZuogpfQJVqVqWZ6_bCT5_1I7ICFmlmgcHrunEJee_2LBcAukDhFU-8II7HvKlQV1SAD84Lljmrk0g6o1Kxj2wQkWtlVKm1wJFRRXW0DYK9H0J8JhAoHCDnwDg5D-D8Wl1xrl4C3rujhsPIm2XQg7w/w400-h228/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-06%20213350.png" width="400" /></a></div><br /></div><div><div>搜尋 Email , 按下 Email 圖案。</div></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimliVoLztZDB1aZJiVZKjBPLGft6-o1-kKQ7L8A79B11_AVNbA82QxJIpeir_q5jfoB77jmvvQcqlugV3mxyUu-WAmT5B4u0J7QiMP1zjEvAUnfLnBJcmf2KEjkpc8u7nBpwRbCR_Pl2T2nwIYH4sr6kOjBhMBkL8hKvIffgDzuEH8GrOOOoobkS6M_g/s947/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-06%20213704.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="540" data-original-width="947" height="228" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimliVoLztZDB1aZJiVZKjBPLGft6-o1-kKQ7L8A79B11_AVNbA82QxJIpeir_q5jfoB77jmvvQcqlugV3mxyUu-WAmT5B4u0J7QiMP1zjEvAUnfLnBJcmf2KEjkpc8u7nBpwRbCR_Pl2T2nwIYH4sr6kOjBhMBkL8hKvIffgDzuEH8GrOOOoobkS6M_g/w400-h228/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-06%20213704.png" width="400" /></a></div><br /><div>選擇 Send me an email 寄送電子郵件給自己。</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoRaYAgt2a2921wqJvraUoMYDbJgeJgkNPfWL5fyqJQzPm-q6oC-1OOpSOvyqUoU0iebZiG99Vz7LOyRJHARSm5WxVnlob-Fa1irdlbB9SEdYzxX0otTgn5V8T-U2zjjOfZojgqRR-170WVm5feDA7Q16Y4m3iCQJNELf-pp-TlVDAIcfTI4X1F3sBgA/s947/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-06%20214038.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="540" data-original-width="947" height="228" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoRaYAgt2a2921wqJvraUoMYDbJgeJgkNPfWL5fyqJQzPm-q6oC-1OOpSOvyqUoU0iebZiG99Vz7LOyRJHARSm5WxVnlob-Fa1irdlbB9SEdYzxX0otTgn5V8T-U2zjjOfZojgqRR-170WVm5feDA7Q16Y4m3iCQJNELf-pp-TlVDAIcfTI4X1F3sBgA/w400-h228/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-06%20214038.png" width="400" /></a></div><br /><div>設定信件內容,其中EvenName、OccuredAt、Value1、Value2、Value3 分別是會自動填入的事件名稱、觸發時間與我們可以自訂的三個參數。按下 Create action 按鈕</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoLy-2vL9UIniZp8N06n2JaWinsj8pUJtzElpaVMZr3H1Z-spi4vVnvs7jxPIX2krEXdy26FD15HXHjKXgRPpGIqzDWrEki2YI-4guavCI8b5xJLwJMo0BBKkPuFS-Pj4OcW7sGAoJFTM5_sMt_QGLNCi7MM7F773sxms9FqbFpPQ_UqOqd_6oI0YmWQ/s970/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-06%20214421.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="673" data-original-width="970" height="278" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoLy-2vL9UIniZp8N06n2JaWinsj8pUJtzElpaVMZr3H1Z-spi4vVnvs7jxPIX2krEXdy26FD15HXHjKXgRPpGIqzDWrEki2YI-4guavCI8b5xJLwJMo0BBKkPuFS-Pj4OcW7sGAoJFTM5_sMt_QGLNCi7MM7F773sxms9FqbFpPQ_UqOqd_6oI0YmWQ/w400-h278/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-06%20214421.png" width="400" /></a></div><br /><div>按下 Contiue 繼續按鈕。</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEie75en31DOyazhFdNauO8jIQlTA5nO820KEAwsI3JzPLYAdf9M2baOojRMd0yJY9oNX2CWjPfBcBD84VrlUAwBzhDc0rkVGroyjVsAJE3O0M6og9dIfQRZnG8nTApSxEcfaJ8g1B92QY83dk3OBQKN0VBklhQqHOAutSNX0AF6VJKy06awxgHMdvWuGA/s970/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-06%20215017.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="673" data-original-width="970" height="278" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEie75en31DOyazhFdNauO8jIQlTA5nO820KEAwsI3JzPLYAdf9M2baOojRMd0yJY9oNX2CWjPfBcBD84VrlUAwBzhDc0rkVGroyjVsAJE3O0M6og9dIfQRZnG8nTApSxEcfaJ8g1B92QY83dk3OBQKN0VBklhQqHOAutSNX0AF6VJKy06awxgHMdvWuGA/w400-h278/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-06%20215017.png" width="400" /></a></div><br /><div><br /></div><div>查看建立的 Applet 小程序內容,如果沒有問題就可按下 Finish 按鈕。</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7C8z4BhC3KvVK23rzLoEJ_4qJOPVSufJCt0k0wmQhgGvJ0j1-TCT5kmcqxWm7scnr8xaJ2phzPsM7PWuzhBvMfOsmY05h0G4OOIo9lWXKOmis_YiQsT68fcvgejUqw8H5TlGepYu50Jct-jjX9IKCnPz-iQMsVNJHXr60zHN_C-3zLmkmHkR_hw8ZLg/s970/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-06%20215139.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="673" data-original-width="970" height="278" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7C8z4BhC3KvVK23rzLoEJ_4qJOPVSufJCt0k0wmQhgGvJ0j1-TCT5kmcqxWm7scnr8xaJ2phzPsM7PWuzhBvMfOsmY05h0G4OOIo9lWXKOmis_YiQsT68fcvgejUqw8H5TlGepYu50Jct-jjX9IKCnPz-iQMsVNJHXr60zHN_C-3zLmkmHkR_hw8ZLg/w400-h278/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-06%20215139.png" width="400" /></a></div><br /><div>完成新增Applet 小程序,頁面中的狀態 Connected 代表Applet 小程序已可開始使用。</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghJf4R5QkDtMpsNtVrD3iRltZ5sP_vGpQMgafID0tj0mVDcCkD59okz8W4ext3doNqQBzU1262_c24lJEEh2nvWQ_BGA_XGZ03u8WzgfTKsWaOceKp5o2Sf-v1FSHCB4ZMRffh3r2BUV7GYqMSp09NVnSKf5MLUr9HBIIzkuedXIme4jDrb2yJH-Z3ug/s1218/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-06%20215247.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="837" data-original-width="1218" height="275" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghJf4R5QkDtMpsNtVrD3iRltZ5sP_vGpQMgafID0tj0mVDcCkD59okz8W4ext3doNqQBzU1262_c24lJEEh2nvWQ_BGA_XGZ03u8WzgfTKsWaOceKp5o2Sf-v1FSHCB4ZMRffh3r2BUV7GYqMSp09NVnSKf5MLUr9HBIIzkuedXIme4jDrb2yJH-Z3ug/w400-h275/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-06%20215247.png" width="400" /></a></div><br /><div>再次點擊 My Applets,即可看到剛剛建立的控制程序列表在其中。</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcFMH5F1tm7uMActpxeFpVyrNs_XCyiz5rRwmxFsYjqeOrjRS77LtGFI7t-UhUzFte3kNUW175n5qPyMYYf0qfRKa134GxMJoOZ1tWf7W3HTniEx2sS_KQGjgdyGAq7hchS6a-jQRFkpLJPgutDrqKXMBgILpkKNGQic3hji2WHlRmq5jQcY2cLsiQmw/s1218/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-06%20215918.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="837" data-original-width="1218" height="275" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcFMH5F1tm7uMActpxeFpVyrNs_XCyiz5rRwmxFsYjqeOrjRS77LtGFI7t-UhUzFte3kNUW175n5qPyMYYf0qfRKa134GxMJoOZ1tWf7W3HTniEx2sS_KQGjgdyGAq7hchS6a-jQRFkpLJPgutDrqKXMBgILpkKNGQic3hji2WHlRmq5jQcY2cLsiQmw/w400-h275/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-06%20215918.png" width="400" /></a></div>傻花哥http://www.blogger.com/profile/06001039053106717322noreply@blogger.comtag:blogger.com,1999:blog-8336658864716273880.post-55388974635932122042023-06-13T12:29:00.000+08:002023-06-13T12:29:20.273+08:00IFTTT 申請<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrtd13-7PoHW7CuB515bB7U0Si7qmFW0S44uepj_7Pr_-lW7sfjFJjNcOAOnskINypA7XV1AZDlkO9D4fcBt6NxzAlV1UMWWJcQo2Y2b4HPRVL5ZPlj8HL-8d_xHZNYfJ4-TludKnPTkaJZLOmvznCzTg78gI3hPgkeXiawfbUVRaB3sXLc3YeGoiu4Q/s1047/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-06%20180135.png" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="676" data-original-width="1047" height="207" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrtd13-7PoHW7CuB515bB7U0Si7qmFW0S44uepj_7Pr_-lW7sfjFJjNcOAOnskINypA7XV1AZDlkO9D4fcBt6NxzAlV1UMWWJcQo2Y2b4HPRVL5ZPlj8HL-8d_xHZNYfJ4-TludKnPTkaJZLOmvznCzTg78gI3hPgkeXiawfbUVRaB3sXLc3YeGoiu4Q/s320/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-06%20180135.png" width="320" /></a></div><br />IFTTT,是一個新生的網絡服務平台,通過其他不同平台的條件來決定是否執行下一條命令,即對網絡服務通過其他網絡服務作出反應。<div><br /><div>IFTTT Agent 採用了目前最受歡迎的網路自動化服務-IFTTT ( If This Then That ),能自由地將 NAS 與手機裝置或喜愛的 App 結合,像是:Facebook、Gmail™、Twitter 等,量身訂做一個個 NAS 或物聯網服務,自動執行備份或監控等眾多任務。</div></div><div><br /></div><div>IFTTT 讓使用者能指定某個網路服務A(Channel A)在發生某個條件後,觸發(trigger)另一個網路服務B(Channel B)進行某個反應行動(Action),這整個流程就被稱為一個自動化任務(Recipe)。<span><br /></span></div><div><br /></div><span><a name='more'></a></span><div><br /></div><div><br /></div><div>IFTT 網址 <a href="https://ifttt.com/">https://ifttt.com/</a> 點擊首頁右上方 Get started,就可以註冊帳號:</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisz8TUpI0MEh9PguyNs9U3lz1RKGwYg_Oi5J2y-pky1butaPJGfjtnDe8m23rLyFvR-Fk9_klbsa2RzKOCBcMoPGD-Yo32c1H7vJGiqWpMRUVSotSgxWEtBJcZzonZi00uZxxB2IQR53BpwruqHBw9WOIcZ9qFjVVPzOWcSBU53hh4xTfRyHaoMrhobA/s1162/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-06%20181045.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="587" data-original-width="1162" height="203" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisz8TUpI0MEh9PguyNs9U3lz1RKGwYg_Oi5J2y-pky1butaPJGfjtnDe8m23rLyFvR-Fk9_klbsa2RzKOCBcMoPGD-Yo32c1H7vJGiqWpMRUVSotSgxWEtBJcZzonZi00uZxxB2IQR53BpwruqHBw9WOIcZ9qFjVVPzOWcSBU53hh4xTfRyHaoMrhobA/w400-h203/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-06%20181045.png" width="400" /></a></div><br /><div>選擇註冊方式,選擇帳號的註冊方式,包含Apple、Google、Facebook與自訂,本例使用Email註冊。點選 Sign up 連結。<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuE_Af_KZdLmmfmgN7Ud3QLpQdcajoHCBUBBbcyfnmB7NcIpupxhS8c9GZZxp5npg11LxARMtne651bDWyZWX-A55ZsWN5j21_r6xZWJE2d9eTKESufqbWfoHnrbxnUNN5vauDaS-rLwtpvwtRGw9_hvUk5GsNIiJXRc9UvkBrjgY_zUHvI8sSCZ4xXA/s1162/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-06%20181339.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="587" data-original-width="1162" height="203" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuE_Af_KZdLmmfmgN7Ud3QLpQdcajoHCBUBBbcyfnmB7NcIpupxhS8c9GZZxp5npg11LxARMtne651bDWyZWX-A55ZsWN5j21_r6xZWJE2d9eTKESufqbWfoHnrbxnUNN5vauDaS-rLwtpvwtRGw9_hvUk5GsNIiJXRc9UvkBrjgY_zUHvI8sSCZ4xXA/w400-h203/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-06%20181339.png" width="400" /></a></div><div><br /></div>輸入自訂的Email與密碼,按下 Get started 按鈕。</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbf8hYl_RizgDAPRMN2hq3NX17OLABDp8vax458_ny68imF6IGGQvhecr0lvUq1ftW-jSHAVGw4THnhv20WE_kihbSdVL_rCbInnZiTZA5ffh2eVtDcAhY264nK9otP_IDfXaW10VTsJDjIbak80JyWASyH1pT2Qbgh25vb18CxAKnhOL3DvRpKkFLCQ/s1162/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-06%20181756.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="587" data-original-width="1162" height="203" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbf8hYl_RizgDAPRMN2hq3NX17OLABDp8vax458_ny68imF6IGGQvhecr0lvUq1ftW-jSHAVGw4THnhv20WE_kihbSdVL_rCbInnZiTZA5ffh2eVtDcAhY264nK9otP_IDfXaW10VTsJDjIbak80JyWASyH1pT2Qbgh25vb18CxAKnhOL3DvRpKkFLCQ/w400-h203/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-06%20181756.png" width="400" /></a></div><br /><div>註冊完成進入歡迎頁面,請勾選去您有興趣的服務種類。按下網頁下方的 Continue 按鈕。</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjA6qbDBRcVugdOT8Z5_KUoo4KFfQdZ_57V5jJ5kUkCugF7Eu471H6p2sbFf070nqJChjkPYiXltLoeYT2a8u8fGBPmOfDpIunBUhR3Xt-cxGB7WD4lqIII9q2FHVQTZng_verjgs7eS6HYbgh6v33mnIyiMqyQRR4REYFFqAHmMJ3-t3GnR-eEM_bzWg/s1162/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-06%20182805.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="587" data-original-width="1162" height="203" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjA6qbDBRcVugdOT8Z5_KUoo4KFfQdZ_57V5jJ5kUkCugF7Eu471H6p2sbFf070nqJChjkPYiXltLoeYT2a8u8fGBPmOfDpIunBUhR3Xt-cxGB7WD4lqIII9q2FHVQTZng_verjgs7eS6HYbgh6v33mnIyiMqyQRR4REYFFqAHmMJ3-t3GnR-eEM_bzWg/w400-h203/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-06%20182805.png" width="400" /></a></div><br /><div>完成申請。</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgD7H4s94WelJz9e0_I_b7K14PHclfTIBRrMFGKrr1AFFcI1PtXj5m3qU5xrgWEG-FApMtiIydw0Rga8DbpyWvd_iz4GQje4HSeTjD_7WhyH2Nux1XGG_25qZ3gbg0MWZ3h2wmODn4j3bxF8XyR4ZLcfrNueCzGF0mTCMHmHXJos2T2aq6Drrs1WvRk_A/s1162/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-06%20182915.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="587" data-original-width="1162" height="203" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgD7H4s94WelJz9e0_I_b7K14PHclfTIBRrMFGKrr1AFFcI1PtXj5m3qU5xrgWEG-FApMtiIydw0Rga8DbpyWvd_iz4GQje4HSeTjD_7WhyH2Nux1XGG_25qZ3gbg0MWZ3h2wmODn4j3bxF8XyR4ZLcfrNueCzGF0mTCMHmHXJos2T2aq6Drrs1WvRk_A/w400-h203/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-06%20182915.png" width="400" /></a></div><br /><div>完成申請後,IFTTT 會寄出一封註冊認證信來驗證登記成會員的電子信箱。</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJW8FGdcmrjm6zCVAcb_yzOMSZNVHZ9I-uykh_lffVqn4eZWWShdJda-IrRUBhC4RB_4Fr542tdfr3Xfu9jiURnEh6PT2oZZNPoA_JwQkO0UCI-FQiDONvdYv6H5NkveoUEdeO-4HTqZ0pEPAtRb3pAuzf8EBMFrQlzA8_ARAvLPegWigvV8_JOp9PNw/s1082/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-06%20202832.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="574" data-original-width="1082" height="213" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJW8FGdcmrjm6zCVAcb_yzOMSZNVHZ9I-uykh_lffVqn4eZWWShdJda-IrRUBhC4RB_4Fr542tdfr3Xfu9jiURnEh6PT2oZZNPoA_JwQkO0UCI-FQiDONvdYv6H5NkveoUEdeO-4HTqZ0pEPAtRb3pAuzf8EBMFrQlzA8_ARAvLPegWigvV8_JOp9PNw/w400-h213/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-06%20202832.png" width="400" /></a></div><div><br /></div>電子信箱通過驗證後,即可開始使用 IFTTT 所提供的服務。<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8UhCH5bddF0Uyn9HSlYwXU7v2Ax8f1OJKXI4dQ4etzc7SxwKpt2Angcd4er_B_vRN0zs_de8lT_2Xo6UrElTh9oJORiHrlwIxJ5wpOVpeT66gJexH2czpaTSh__9K94wYtJFthG3Ch2dwuhExs0wStGfy85g0neqKneqGSNsDt1DoyD2M_ZjgG4Q_hQ/s947/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-06%20204233.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="540" data-original-width="947" height="228" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8UhCH5bddF0Uyn9HSlYwXU7v2Ax8f1OJKXI4dQ4etzc7SxwKpt2Angcd4er_B_vRN0zs_de8lT_2Xo6UrElTh9oJORiHrlwIxJ5wpOVpeT66gJexH2czpaTSh__9K94wYtJFthG3Ch2dwuhExs0wStGfy85g0neqKneqGSNsDt1DoyD2M_ZjgG4Q_hQ/w400-h228/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-06%20204233.png" width="400" /></a></div><br /><div><br /><div><br /></div></div>傻花哥http://www.blogger.com/profile/06001039053106717322noreply@blogger.comtag:blogger.com,1999:blog-8336658864716273880.post-24168569052359494822023-05-26T11:45:00.000+08:002023-05-26T11:45:24.503+08:00ESP32 藍牙模組與模擬軟體通訊<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhF-UapPE3chyVJrqE5CoZBQO8Puz9QqdpATnW8V3rzQGEE_Aw9SixhmZDTVK9f57S81ayo3ACSg9EkfUNGFsus28CSwtzS4EVWU-ap_2eW7r24uN48Ee2gcLNsaoWctwT0ib_f0RlwvCP0iILUqjESbyFRcfYSVZFK7326naRdjfqhPsQ386ieouGxyQ/s4608/IMG_20220324_172353.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="2592" data-original-width="4608" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhF-UapPE3chyVJrqE5CoZBQO8Puz9QqdpATnW8V3rzQGEE_Aw9SixhmZDTVK9f57S81ayo3ACSg9EkfUNGFsus28CSwtzS4EVWU-ap_2eW7r24uN48Ee2gcLNsaoWctwT0ib_f0RlwvCP0iILUqjESbyFRcfYSVZFK7326naRdjfqhPsQ386ieouGxyQ/w400-h225/IMG_20220324_172353.jpg" width="400" /></a></div>藍牙技術是一種無線數據和語音通信開放的全球規範,它是基於低成本的近距離無線連接,為固定和移動設備建立通信環境的一種特殊的近距離無線技術連接,在短距離間交換資料,以形成個人區域網路。其使用短波特高頻無線電波,經由2.4至2.485 GHz的ISM頻段來進行通訊。 <div><br /></div><div>本實作使用 WeMos LoLin32 開發板配合U8g2程式庫於OLED中顯示訊息。直接將 WeMos LoLin32 以 USB 線連接到開發電腦進行程式編譯上傳即可。使用Arduino IDE 編譯 ESP32 程式前請先確認已經正確選定開發板規格。</div><div><br /></div><div>使用 BluetoothSerial 程式庫可以很方便的控制 ESP32 內的藍牙模組,詳細的程式庫資料請參考 <a href="https://github.com/espressif/arduino-esp32/tree/master/libraries/BluetoothSerial" target="_blank">這裡</a> 。本實作利用藍牙通訊接收命令後在OLED中顯示兩種訊息 Power On、Power Off,關於如何在OLED中輸出字串請參考 <a href="http://www.twbts.work/2022/03/esp32u8g2oled.html" target="_blank">這裡</a>。<span><a name='more'></a></span></div><div><br /></div><div><span style="color: #cc0000;"><b>ESP32 與 OLED 接腳設定</b></span></div><div>1. 電源接線:</div><div>【ESP32】3.3V →【OLED】VCC</div><div>【ESP32】GND →【OLED】GND</div><div><br /></div><div>2. 信號接線:</div><div>【ESP32】22→【ESP-01】SCL</div><div>【ESP32】21→【ESP-01】SDA</div><div><br /></div><div><b><span style="color: #990000;">撰寫實驗程式如下:</span></b></div><pre class="code prettyprint">#include <U8g2lib.h>//引入OLED程式庫
#include <BluetoothSerial.h> //引入藍牙程式庫
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE);
BluetoothSerial BT; //建立藍牙物件
char instr; //設定接收訊息的變數
void setup(void) {
u8g2.begin(); //初始顯示器物件
u8g2.setFont(u8g2_font_t0_22b_te); //指定字型
BT.begin("ESP32藍牙"); //初始藍牙物件
}
void loop(void) {
if (BT.available()){ // 若接收到藍牙序列資料
instr = BT.read();
switch (instr){
case '1': // 若接收到指令'1'
u8g2.clearBuffer(); //清除暫存區
u8g2.drawStr(10, 50, "Power On"); //設定繪製內容
u8g2.sendBuffer(); //送出繪製內容
BT.println("電源開啟!");
break;
case '0': // 接收到指令'0'
u8g2.clearBuffer(); //清除暫存區
u8g2.drawStr(10, 50, "Power Off"); //設定繪製內容
u8g2.sendBuffer(); //送出繪製內容
BT.println("電源關閉!");
break;
}
}
</pre><span style="color: #351c75; font-size: large;"><b><div><span style="color: #351c75; font-size: large;"><b><br /></b></span></div>
在安卓手機中安裝 Serial Bluetooth Terminal 進行藍牙通訊測試。</b></span><div>1.安裝程式</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvjuC90W9imyY8SheH3RgCLX-TvyZ_bcVWeQTfckXJNdxvLU6gzsQVEbc4fuDDEIJd0gGyv9CGYUaz5I7eBCtvS3s-2_zlCRRXJ8iTvKrAo-pyFaj3-EuxyFWRvGi7vK8cML6v44iSY472MWs1ljDfLKqt31fcuMqKT1rfo2y-bXKtUv57OwNJyVlW5Q/s2160/Screenshot_20220324-171537.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1080" data-original-width="2160" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvjuC90W9imyY8SheH3RgCLX-TvyZ_bcVWeQTfckXJNdxvLU6gzsQVEbc4fuDDEIJd0gGyv9CGYUaz5I7eBCtvS3s-2_zlCRRXJ8iTvKrAo-pyFaj3-EuxyFWRvGi7vK8cML6v44iSY472MWs1ljDfLKqt31fcuMqKT1rfo2y-bXKtUv57OwNJyVlW5Q/w640-h320/Screenshot_20220324-171537.png" width="640" /></a></div><br /><div>2.將手機藍牙與ESP32藍芽模組配對連線。</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_gTS3goJjd7FgukxRBH9VsFYj_XGBm6ov9stvAyx8GtHluQniHuhfYipA-BwuiIhh3os-uzXbis_lywHQNKkTHo2g2CwxVYHUc8JZ97mgqL_-ZMrxI-XnrryjoI9Q4nJptdC6AUt2zNbGFsXk25x6wUM_q37RTMDUEQgo9sruK8tlMTqrxSShq35evg/s2160/Screenshot_20220324-171632.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1080" data-original-width="2160" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_gTS3goJjd7FgukxRBH9VsFYj_XGBm6ov9stvAyx8GtHluQniHuhfYipA-BwuiIhh3os-uzXbis_lywHQNKkTHo2g2CwxVYHUc8JZ97mgqL_-ZMrxI-XnrryjoI9Q4nJptdC6AUt2zNbGFsXk25x6wUM_q37RTMDUEQgo9sruK8tlMTqrxSShq35evg/w640-h320/Screenshot_20220324-171632.png" width="640" /></a></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi54UyCDwlMu7-AyavZOu6hqwQlzhCdJke9w1mGhk1p9twUykO9LcJQujx6UH6faw6eS6sHV_r1YtOCwPwv6hE86Sb3CEJ07P9AZGtBRmfBZ5NLjG-471FYj4u5pmZW8TQ9y4CZhVD9CJCmJwrOXDKVkKDnAR-DLD99UYVWADSxNuJl57YnwJx81KZkpQ/s2160/Screenshot_20220324-171642.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1080" data-original-width="2160" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi54UyCDwlMu7-AyavZOu6hqwQlzhCdJke9w1mGhk1p9twUykO9LcJQujx6UH6faw6eS6sHV_r1YtOCwPwv6hE86Sb3CEJ07P9AZGtBRmfBZ5NLjG-471FYj4u5pmZW8TQ9y4CZhVD9CJCmJwrOXDKVkKDnAR-DLD99UYVWADSxNuJl57YnwJx81KZkpQ/w640-h320/Screenshot_20220324-171642.png" width="640" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div>3.開啟 Serial Bluetooth Terminal選取要操作的已連線藍芽設備。<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJ5ckeoOiHTu6wTId3AZk20p1IPgppTdJzrkNBjIu9IiOz_VOrSxG4L9yR-TtDamHkCTcR39YO8r0AqW5pyr3fzL4HVrKrM87ohpy7B8Mnq2OQiXUNy3KSJyAh2M_hrVXSXhbYLvMlIyQNp-pgCGPcu-QbRBeZ78_D1ktDKocEtiqm-Gv7f-PtTn2pcg/s2160/Screenshot_20220324-171835.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1080" data-original-width="2160" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJ5ckeoOiHTu6wTId3AZk20p1IPgppTdJzrkNBjIu9IiOz_VOrSxG4L9yR-TtDamHkCTcR39YO8r0AqW5pyr3fzL4HVrKrM87ohpy7B8Mnq2OQiXUNy3KSJyAh2M_hrVXSXhbYLvMlIyQNp-pgCGPcu-QbRBeZ78_D1ktDKocEtiqm-Gv7f-PtTn2pcg/w640-h320/Screenshot_20220324-171835.png" width="640" /></a></div><br /><div>4.在終端機畫面中輸入控制指令0、1,即可讓ESP32控制的OLED顯示對應訊息 Power On、Power Off,而終端機畫面會輸出"電源開啟!"、"電源關閉!"的對應訊息。</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixY0IoCak-bVbHQKG0_2-JIbNzRLSxP7jfD8W7Mz6wYK0XI2dVvL2tfFezlIDw3d8dQniZ5NuEl2PW0vOHwZjmHH88-sAgO53PvhegsyxrKtXwI6ib8cyWSJfJQmKDFsgeM8rRy-x_d9k3xFfcQEf7Wy81QFTa-77MwwduCtPsz4mRt9U_eIExdWAhpg/s2160/Screenshot_20220324-172022.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1080" data-original-width="2160" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixY0IoCak-bVbHQKG0_2-JIbNzRLSxP7jfD8W7Mz6wYK0XI2dVvL2tfFezlIDw3d8dQniZ5NuEl2PW0vOHwZjmHH88-sAgO53PvhegsyxrKtXwI6ib8cyWSJfJQmKDFsgeM8rRy-x_d9k3xFfcQEf7Wy81QFTa-77MwwduCtPsz4mRt9U_eIExdWAhpg/w640-h320/Screenshot_20220324-172022.png" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtD_pzsIjBMpH0ym-HfuSeelHTIe8w2DhqFfHsLHsspq8t8XFU8KpPQdAqtI7FS6nxvrxPIu4rCg-BoPBSFWa50ErYW37e8JR-ZMreJQ_bZtk_UGfj0kZWhZUtxEXZTCtmy3MBXsazfMaIVImTgoPF0SsTc5PQFO682dulUEWOvuprwekPjKtMN8bjeg/s4608/IMG_20220324_172322.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2592" data-original-width="4608" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtD_pzsIjBMpH0ym-HfuSeelHTIe8w2DhqFfHsLHsspq8t8XFU8KpPQdAqtI7FS6nxvrxPIu4rCg-BoPBSFWa50ErYW37e8JR-ZMreJQ_bZtk_UGfj0kZWhZUtxEXZTCtmy3MBXsazfMaIVImTgoPF0SsTc5PQFO682dulUEWOvuprwekPjKtMN8bjeg/w640-h360/IMG_20220324_172322.jpg" width="640" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div>傻花哥http://www.blogger.com/profile/06001039053106717322noreply@blogger.comtag:blogger.com,1999:blog-8336658864716273880.post-19602280872332435202023-05-12T16:12:00.000+08:002023-05-12T16:12:53.477+08:00ESP32 無線基地台連線測試
本實作使用 WeMos LoLin32 開發板,WiFi 802.11b/g/n 進行基地台連線測試。<div><br /></div><div>使用Arduino IDE 編譯 ESP32 程式前請先確認已經正確選定開發板規格。</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiMQLwa8tmwxK8drYhruMOK9gJUU4xUbVlvz8CI5nlGgiG1AUPBO2U5AwhO9oE81wvrPPZeBEfSpI1_MlL71w8G8rR8iF9nG_iSLk6a-00O9fXRwuj1OsIwIditbQGo7P9ucwKDv2dFOc5JEkZ_5I_YW2k-3qrqWW2ziGScgTFyzWraydF5RHkmG1DUzg=s1022" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="557" data-original-width="1022" height="348" src="https://blogger.googleusercontent.com/img/a/AVvXsEiMQLwa8tmwxK8drYhruMOK9gJUU4xUbVlvz8CI5nlGgiG1AUPBO2U5AwhO9oE81wvrPPZeBEfSpI1_MlL71w8G8rR8iF9nG_iSLk6a-00O9fXRwuj1OsIwIditbQGo7P9ucwKDv2dFOc5JEkZ_5I_YW2k-3qrqWW2ziGScgTFyzWraydF5RHkmG1DUzg=w640-h348" width="640" /></a></div><br /><span><a name='more'></a></span><div><br /></div>當把ESP32接上電腦後可能會發現COM埠無法使用,這是因為少了 USB to UART Bridge Driver ,去官網下載驅動程式回來安裝即可,網址如下:<div><pre class="code prettyprint">https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers</pre>正確安裝後, <span style="color: #cc0000;">裝置管理員</span> 會出現正確的硬體裝置:<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgbmVNMgMtppz5NqkQCEjAQ9RkidnE-1_n9MFAPkMpwfO2IiPPYZG_Bzw7PgOTKqOOYh0GRw_e2M4NtqI22x598quNp6xCd7CEwC5lgLPQQvxO5CdtXY4EMxGIe_4nSFhX2Pu_lTz9MTTEyDYNH5pA7Q-pgUcvPBM9oVO8C8nXguUr1kq1yeoYBUutVmQ=s736" style="display: block; padding: 1em 0px; text-align: center;"><img alt="" border="0" data-original-height="316" data-original-width="736" src="https://blogger.googleusercontent.com/img/a/AVvXsEgbmVNMgMtppz5NqkQCEjAQ9RkidnE-1_n9MFAPkMpwfO2IiPPYZG_Bzw7PgOTKqOOYh0GRw_e2M4NtqI22x598quNp6xCd7CEwC5lgLPQQvxO5CdtXY4EMxGIe_4nSFhX2Pu_lTz9MTTEyDYNH5pA7Q-pgUcvPBM9oVO8C8nXguUr1kq1yeoYBUutVmQ=s600" width="600" /></a></div><div><br /></div>撰寫實驗程式如下:<pre class="code prettyprint">#include <WiFi.h>
//設定WIFI基地台連線SSID名稱與連線密碼
const char ssid[]="基地台連線SSID";
const char psw[]="連線密碼";
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, psw); //指定連線資訊
//嘗試間隔0.5秒連線一次,直到連線成功
while (WiFi.status() != WL_CONNECTED) {
delay(500);
}
//連線成功後輸出本地MAC位址、基地台配發的連線IP與連線強度
Serial.print("開發板MAC位址: ");
Serial.println(WiFi.macAddress());
Serial.print("基地台配發IP位址:");
Serial.println(WiFi.localIP());
Serial.print("WiFi 連線強度: ");
Serial.println(WiFi.RSSI());
}
void loop() {
}
</pre><div><br /></div>
開始編譯上傳,上傳完畢若順利接上基地台則會在序列視窗看到連接訊息。</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEh1h0zuH39hL5v3ifxCY19OZfzkv7eX4P0DhaYVwMMBOB7oqpeNiy7YVmUqzsK69NRO2f2gOBzr6g304N75QOJiGNvSKImdyMQuYDEjMlnA4U3P54SAmVzcIf93PVj3osC_Ww8xYb2kU5r5OpCtOTT5Wff_gDELyAqgRHvWJb1lHCoI7khCxTDgMwDlUw=s1020" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="582" data-original-width="1020" height="366" src="https://blogger.googleusercontent.com/img/a/AVvXsEh1h0zuH39hL5v3ifxCY19OZfzkv7eX4P0DhaYVwMMBOB7oqpeNiy7YVmUqzsK69NRO2f2gOBzr6g304N75QOJiGNvSKImdyMQuYDEjMlnA4U3P54SAmVzcIf93PVj3osC_Ww8xYb2kU5r5OpCtOTT5Wff_gDELyAqgRHvWJb1lHCoI7khCxTDgMwDlUw=w640-h366" width="640" /></a></div><br /><div>WIFI程式庫的參考說明在此: 請按我</div>傻花爸http://www.blogger.com/profile/01107154584925533645noreply@blogger.comtag:blogger.com,1999:blog-8336658864716273880.post-4223597167650320942023-05-03T20:40:00.000+08:002023-05-03T20:40:50.736+08:00讓 ESP32 成為行動熱點 (WiFi 接入點,無線AP)<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgcr_0JfmzhYIXPFb0D-OZ0be9Vfh4dTGehTXPzji3iKQl0D2H-fp5lAcd4rxBXRuc-jyZTy4yOkn5rUnZfv24RnHIRBUFIeL7SQ20Ie8u7iiNAq0y_5SlZUmEn59rAEhD03Q6Hh6e5Q4mAT7YGx3aP-TtC_S7YXKuoS_dOpEs0tjV2t8gAYMfo9i5Rjg=s431" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="431" data-original-width="360" height="320" src="https://blogger.googleusercontent.com/img/a/AVvXsEgcr_0JfmzhYIXPFb0D-OZ0be9Vfh4dTGehTXPzji3iKQl0D2H-fp5lAcd4rxBXRuc-jyZTy4yOkn5rUnZfv24RnHIRBUFIeL7SQ20Ie8u7iiNAq0y_5SlZUmEn59rAEhD03Q6Hh6e5Q4mAT7YGx3aP-TtC_S7YXKuoS_dOpEs0tjV2t8gAYMfo9i5Rjg=s320" width="267" /></a></div><br />本實作使用 WeMos LoLin32 開發板,WiFi 802.11b/g/n 進行基地台連線測試。直接將 WeMos LoLin32 以 USB 線連接到開發電腦進行程式編譯上傳即可。<div><br />使用Arduino IDE 編譯 ESP32 程式前請先確認已經正確選定開發板規格。</div><div><br />當把ESP32接上電腦後可能會發現COM埠無法使用,這是因為少了 USB to UART Bridge Driver ,去官網下載驅動程式回來安裝即可,網址如下:<br /><div style="text-align: left;"><pre class="code prettyprint">https://www.silabs.com/developers/</pre><pre class="code prettyprint">usb-to-uart-bridge-vcp-drivers</pre></div>要讓ESP32開發板成為行動熱點、AP基地台分享網路連線給其他的無線裝置,可利用WiFiAP程式庫(在撰寫程式時請直接引入 WiFi 程式庫即可)中的softAP()方法:<pre class="code prettyprint"> bool softAP(const char* ssid, const char* passphrase = NULL, int channel = 1, </pre><pre class="code prettyprint">int ssid_hidden = 0, int max_connection = 4, bool ftm_responder = false);
</pre>
<span><br /><a name='more'></a></span><br /></div><div><br /></div><div>softAP()方法參數說明: <div><ul style="text-align: left;"><li>ssid:基地台名稱 </li><li>passphrase:基地台連入密碼,預設沒有密碼 </li><li>channel:連線頻道號碼,預設頻道1 </li><li>ssid_hidden:是否隱藏基地台名稱 </li><li>max_connection:最大用戶端連線數,預設上限為4個用戶 </li><li>ftm_responder:是否啟用精確定時測量(FTM)功能,預設不啟用</li></ul></div>撰寫實驗程式如下:<pre class="code prettyprint">#include <WiFi.h>
//設定AP基地台的名稱
const char ssid[] = "SillyESP32"; //名稱最長32個字元
//指定連線密碼
const char psw[] = "12345678"; //長度最長64個字元
void setup() {
Serial.begin(115200); //設定序列通信速率
WiFi.softAP(ssid, psw); //設定AP基地台基本資料並啟動服務
Serial.print("基地台的IP位址:");
Serial.println(WiFi.softAPIP()); // 在序列埠監控視窗顯示基地台IP
Serial.print("基地台的網域:");
Serial.println(WiFi.softAPNetworkID()); // 在序列埠監控視窗顯示基地台網域
Serial.print("基地台的廣播IP:");
Serial.println(WiFi.softAPBroadcastIP()); // 在序列埠監控視窗顯示基地台廣播IP
}
void loop() {}
</pre>
執行結果如下圖:<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEh_fUDBRBiWp4FBNG1ZDnyLLhIs1pq_LoBdPxxK1fZKQBlVeEu6VWnbxf1tRgE1frnMK794_kgXURat63462ScU_5KXk0qufMB1kkIg9zuO3DBEJfO3wS-rC0lA3GXHNPh8M-VgqTQbf7Fm_VqzWFS58kXQD0-D_Ty2jnw9uAOMir7Hs1FYhM9YKgKSCw=s1022" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="550" data-original-width="1022" height="344" src="https://blogger.googleusercontent.com/img/a/AVvXsEh_fUDBRBiWp4FBNG1ZDnyLLhIs1pq_LoBdPxxK1fZKQBlVeEu6VWnbxf1tRgE1frnMK794_kgXURat63462ScU_5KXk0qufMB1kkIg9zuO3DBEJfO3wS-rC0lA3GXHNPh8M-VgqTQbf7Fm_VqzWFS58kXQD0-D_Ty2jnw9uAOMir7Hs1FYhM9YKgKSCw=w640-h344" width="640" /></a></div><br /><div><br /></div></div>傻花哥http://www.blogger.com/profile/06001039053106717322noreply@blogger.comtag:blogger.com,1999:blog-8336658864716273880.post-57329718540512461132023-04-23T22:12:00.000+08:002023-04-23T22:12:09.223+08:00利用 ESP8266 MicroPython 取得氣象網站的天氣開放資料<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQbcliXnooT2sQae8bC5xI1SwaNyaXOwz_V62ASAfCJk7A91L4BkERuM5YYgHGNHAtajbiqZlOQp4JcfJ-3znRlFz9xvm9wZfOVLQysj5DPxPlfAZU6Dpj_Yq57N0EkK5gwrJI2kirL4EUvsuI4Ghlu-lh1xAF77SLs861B7yQT4jtROCE5vp03q7KSg/s4608/IMG_20220701_201259.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="2592" data-original-width="4608" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQbcliXnooT2sQae8bC5xI1SwaNyaXOwz_V62ASAfCJk7A91L4BkERuM5YYgHGNHAtajbiqZlOQp4JcfJ-3znRlFz9xvm9wZfOVLQysj5DPxPlfAZU6Dpj_Yq57N0EkK5gwrJI2kirL4EUvsuI4Ghlu-lh1xAF77SLs861B7yQT4jtROCE5vp03q7KSg/s320/IMG_20220701_201259.jpg" width="320" /></a></div>當設計程式進行Web應用或者是手機應用,若需要秀出天氣數據或者天氣預報數據時,不妨使用 OpenWeatherMap 天氣API服務。
OpenWeatherMap是OpenWeather Ltd擁有的在線服務,它通過API提供全球天氣數據,包括任何地理位置的當前天氣數據,天氣預報,天氣預報和歷史天氣數據。該公司提供了對任何位置的逐分鐘超局部降雨預報。 <div><br /></div><div> 本實作使用WeMos D1 Mini ESP8266的無線WiWi模組連上網路,利用HTTP的GET方法進行資料請求,自氣象網站取回天氣資料,故須先取得氣象網站的程式開發API Key,<a href="https://twbtsfun.blogspot.com/2022/03/openweathermap-api-key.html" target="_blank">請參考這裡</a>。</div><div><br /></div><div>本實作使用 WeMos D1 Mini 開發板,以 WiFi 進行基地台連線並取得網站資料。直接將 WeMos D1 Mini 開發板以 USB 線連接到開發電腦進行程式編譯上傳即可。溫度的LED燈號接腳本例使用D1(GPIO5)、D2(GPIO4)、D3(GPIO0)作為點亮紅、黃、綠LED的正極腳位,腳位對應如下圖(來源: www.mischianti.org)。</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEittczJAj8VpDU8xS2KRkVFTqcEawkRSmR8Vw9DAi9XLYGZXeprMI8k_wv7um452A_56a6D0mSNk5W-wdjE9L5VKZVw7r_6cpqa6hwGFWb-qwD0pP2D39jmyvoNrQJKeZrrNNP58q1p9w_Wwo-qo1iHqezgRjeZP51vx0rpYpiq_cfTwXglw28LGzGGKg/s1732/WeMos-D1-mini-esp8266-pinout-mischianti.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="927" data-original-width="1732" height="342" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEittczJAj8VpDU8xS2KRkVFTqcEawkRSmR8Vw9DAi9XLYGZXeprMI8k_wv7um452A_56a6D0mSNk5W-wdjE9L5VKZVw7r_6cpqa6hwGFWb-qwD0pP2D39jmyvoNrQJKeZrrNNP58q1p9w_Wwo-qo1iHqezgRjeZP51vx0rpYpiq_cfTwXglw28LGzGGKg/w640-h342/WeMos-D1-mini-esp8266-pinout-mischianti.png" width="640" /></a></div><div> <span><a name='more'></a></span><br /></div><div>OpenWeatherMap 提供當前天氣的地圖,一周預報,降水,風,雲,來自氣象站的其他數據。免費用戶就可以使用絕大部分功能。提供 JSON 、 XML ,、以及 HTML 等多種格式數據。本實作將利用取回的溫度資料進行顯示天氣資訊狀態識別,氣溫低於攝氏25度點亮綠色LED,氣溫介於攝氏25至34度點亮黃色LED,氣溫高於攝氏34度點亮紅色LED。</div><div><br /></div>取得開發API Key後串接取得天氣資料的網址格式如下,詳細網址參數說明<a href="https://openweathermap.org/current" target="_blank">請參考這裡</a>:
<pre class="code prettyprint">http://api.openweathermap.org/data/2.5/weather?q=天氣地區&units=metric&lang=zh_tw&appid=開發金鑰</pre>
完整程式內容如下:<pre class="code prettyprint">from machine import Pin
import network
import urequests, ujson
#設定燈號輸出接腳
ledR = Pin(5, Pin.OUT)
ledY = Pin(4, Pin.OUT)
ledG = Pin(0, Pin.OUT)
#網路天氣URI參數設定與組合
#API_key = "<API金鑰>"
area = "Taipei,TW"
url = "https://api.openweathermap.org/data/2.5/weather?"
url += "q=" + area # 城市與國別
url += "&units=metric&lang=zh_tw" # 溫度單位、語言
url += "&appid=" + API_key
#設定網路連線帳號密碼
SSID = "<WiFi名稱>" # WiFi名稱
PASSWORD = "<WiFi密碼>" # WiFi密碼
#自訂無線基地台連線函式
def connect_wifi(ssid, passwd):
sta = network.WLAN(network.STA_IF)
sta.active(True)
if not sta.isconnected():
print("連線中... \n")
sta.connect(ssid, passwd)
while not sta.isconnected():
pass
print("連線成功... \n")
#進行網路連線
connect_wifi(SSID, PASSWORD)
#嘗試取回天氣資料並加以解析
try:
response = urequests.get(url)
data = ujson.loads(response.text) #轉換JSON格式資料成Python字典物件
except:
data = None
if not data:
print("沒有查詢到天氣資料")
else:
print("__________________________")
weather = data["weather"][0]
print("現在天氣: ", weather["description"])
print("--------------------------")
main = data["main"]
temp = main["temp"]
print("最高溫度: ", main["temp_max"])
print("最低溫度: ", main["temp_min"])
print("當前溫度: ", temp)
print("當前壓力: ", main["pressure"])
print("當前溼度: ", main["humidity"])
print("__________________________")
#依據溫度設定LED燈號
if temp <= 25.0:
print("綠燈")
ledR.value(0)
ledY.value(0)
ledG.value(1)
elif temp <= 34.0:
print("黃燈")
ledR.value(0)
ledY.value(1)
ledG.value(0)
else:
print("紅燈")
ledR.value(1)
ledY.value(0)
ledG.value(0)
</pre>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiedAA5I4JlhNSnz0-Rij17mwAGfu-BZV2T82Z91sJX7BDI_6kat8a3A0JZ4s5iv6XMNzYnlUMAVBFtnmLm_w0xD2wk7IscqaFzCUAmwxnyVyzlF61p8eHngS_c7C9bFPIlgx6qlkXSQSHSFnW59qf077-_0TcmIe0Ze8lBiTYXlIwkD9t8V5CGsa1D4A/s847/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-01%20203831.png" style="display: block; padding: 1em 0px; text-align: center;"><img alt="" border="0" data-original-height="491" data-original-width="847" height="371" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiedAA5I4JlhNSnz0-Rij17mwAGfu-BZV2T82Z91sJX7BDI_6kat8a3A0JZ4s5iv6XMNzYnlUMAVBFtnmLm_w0xD2wk7IscqaFzCUAmwxnyVyzlF61p8eHngS_c7C9bFPIlgx6qlkXSQSHSFnW59qf077-_0TcmIe0Ze8lBiTYXlIwkD9t8V5CGsa1D4A/w640-h371/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-01%20203831.png" width="640" /></a></div><b><span style="color: #cc0000;">
提示</span></b>:本例自OpenWeatherMap取回的JSON格式資料會利用ujson模組的loads()方法轉換為Python字典物件後再加以存取使用。<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxKJ7ARinfuU5ShsndgyAhF_rv8yLcE1vcrW3T6IF5AFx419UciIKZrArWXXoSnsAqaMGH5naVuC1KPBphTrzVffnAExZt-xMNgHPUZYMxU53LIL5pyTh239rX579ZEVBMZhrozgnKhH2BLuR5xx8xE-e63RQl5OxJX0H1ePhOI5EuIEST0kjBZnVG8Q/s915/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-01%20205206.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="577" data-original-width="915" height="405" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxKJ7ARinfuU5ShsndgyAhF_rv8yLcE1vcrW3T6IF5AFx419UciIKZrArWXXoSnsAqaMGH5naVuC1KPBphTrzVffnAExZt-xMNgHPUZYMxU53LIL5pyTh239rX579ZEVBMZhrozgnKhH2BLuR5xx8xE-e63RQl5OxJX0H1ePhOI5EuIEST0kjBZnVG8Q/w640-h405/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-07-01%20205206.png" width="640" /></a></div><br /><div><br /></div>傻花哥http://www.blogger.com/profile/06001039053106717322noreply@blogger.comtag:blogger.com,1999:blog-8336658864716273880.post-4646751290447749862023-04-14T21:05:00.000+08:002023-04-14T21:05:54.777+08:00ESP8266 MicroPython 網路HTTP傳輸<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhangxmnFqX1CaVULYE-C1FCM3cx5h09iUhKpx2RK72uKc2kB1-Qc5NI3BDpdA7bbcpzNrOX-Q5yZMpYmFla5IRd7ICHUuuedXx7tq0IMAEjUW-WsJVULwzNwuvvJMIStDLkWFfT7Y3K0erH_jHqZsSyipqcexACcrCJs8_Z9GRE6SRjiyRHAxYfAzsQw/s624/1.png" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="248" data-original-width="624" height="127" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhangxmnFqX1CaVULYE-C1FCM3cx5h09iUhKpx2RK72uKc2kB1-Qc5NI3BDpdA7bbcpzNrOX-Q5yZMpYmFla5IRd7ICHUuuedXx7tq0IMAEjUW-WsJVULwzNwuvvJMIStDLkWFfT7Y3K0erH_jHqZsSyipqcexACcrCJs8_Z9GRE6SRjiyRHAxYfAzsQw/s320/1.png" width="320" /></a></div>HTTP:超文本傳輸協定,是一種用於分佈式、協作式和超媒體訊息系統的應用層協定是網際網路的數據通信的基礎,設計HTTP最初的目的是為了提供一種發佈和接收HTML頁面的方法。<div><br /></div><div>Python程式或瀏覽器向Web伺服器送出HTTP請求後,才能取得回應資料的網頁內容,如左圖所示(github.com/VanHakobyan/HTTP-Protocol-Manipulation)。<div><br /></div><div>所有HTTP回應的第一行都是狀態行,依次是當前HTTP版本號,3位數字組成的狀態代碼,以及描述狀態的短語,彼此由空格分隔。</div><div>狀態代碼的第一個數字代表當前回應的類型:</div><div><ul style="text-align: left;"><li>1xx訊息——請求已被伺服器接收,繼續處理 </li><li>2xx成功——請求已成功被伺服器接收、理解、並接受 </li><li>3xx重新導向——需要後續操作才能完成這一請求 </li><li>4xx請求錯誤——請求含有詞法錯誤或者無法被執行 </li><li>5xx伺服器錯誤——伺服器在處理某個正確請求時發生錯誤</li></ul></div></div><span><a name='more'></a></span><b><span style="color: red;">提示:</span></b>本 ESP8266 實作系列是以 Thonny 為程式開發工具,並以 MicroPython 程式碼來控制 ESP8266 開發板(Wemos D1 Mini)與延伸附加的硬體裝置。 <div><br /></div><div>httpbin.org網站提供HTTP請求/回應的測試服務,類似Echo服務,可以將我們送出的HTTP請求,自動以JSON格式回應送出的請求資料,HTTP方法支援GET和POST等,其網址是:http://httpbin.org,如下圖所示:<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdWOZoH0Dq50CIulVtxWPd3MizUDnvqMQP7I1meUOAvOfatR4LI1EaBXm_EDcgTHpOM09RkXQ7Ry_7JFTwtyQ2Mg5Y7oG4KdYVUXvd3YRA7qEkuDs0Fs0m7xuURPQ8v17Oq-sCODoXZFSuckCAZ4is7ZVvPoImRp5GW336WKzDtoVPFQdmCqcZD7QOPg/s960/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-06-30%20165241.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="531" data-original-width="960" height="177" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdWOZoH0Dq50CIulVtxWPd3MizUDnvqMQP7I1meUOAvOfatR4LI1EaBXm_EDcgTHpOM09RkXQ7Ry_7JFTwtyQ2Mg5Y7oG4KdYVUXvd3YRA7qEkuDs0Fs0m7xuURPQ8v17Oq-sCODoXZFSuckCAZ4is7ZVvPoImRp5GW336WKzDtoVPFQdmCqcZD7QOPg/w320-h177/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-06-30%20165241.png" width="320" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9XjtmjdCm8OV0qcMX5-RizYCwmneql5Fi-622agD9fGeshQs_9J9yHj6BBye8PJKYTaT6BbtIOoSs3FMjighW0IqO3ISAZLdI7NT3PqoE-nXgsIDFbBPnYCy6TWtBYG7T8Qp32Kh0WAZlZpegl-m-T1-cObzuJ-E5tZFR8oVwspBwRPjA-giIflloJQ/s960/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-06-30%20165411.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="531" data-original-width="960" height="177" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9XjtmjdCm8OV0qcMX5-RizYCwmneql5Fi-622agD9fGeshQs_9J9yHj6BBye8PJKYTaT6BbtIOoSs3FMjighW0IqO3ISAZLdI7NT3PqoE-nXgsIDFbBPnYCy6TWtBYG7T8Qp32Kh0WAZlZpegl-m-T1-cObzuJ-E5tZFR8oVwspBwRPjA-giIflloJQ/s320/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-06-30%20165411.png" width="320" /></a></div></div><br />輸入http://httpbin.org/user-agent 使用者代理,可取得送出HTTP請求的客戶端資料。<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiR7jv0fSgbjzoGX0MePfA4B64i4hkHcD3wudmW4v10GsvQgtG30f9ZIBxMo-XPHG2FSVVExKbUClYGTHa_CwSNEPNxIRxI0V64wFMtLyxjdaJ03_w4pVWhqhX-_Geewc1W0fhZaEOFQ-qTPftGse3pkSEJtrwReW4-i3CbkDEEk6uL9XL10_7JCGIItw/s949/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-06-30%20165645.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="194" data-original-width="949" height="130" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiR7jv0fSgbjzoGX0MePfA4B64i4hkHcD3wudmW4v10GsvQgtG30f9ZIBxMo-XPHG2FSVVExKbUClYGTHa_CwSNEPNxIRxI0V64wFMtLyxjdaJ03_w4pVWhqhX-_Geewc1W0fhZaEOFQ-qTPftGse3pkSEJtrwReW4-i3CbkDEEk6uL9XL10_7JCGIItw/w640-h130/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-06-30%20165645.png" width="640" /></a></div><br /><div><br /></div>MicroPython語言中的urequest模組套件能夠使用更簡單的方式來送出GET/POST的HTTP請求。在MicroPython程式中首先需要匯入模組,如下所示:
<pre class="code prettyprint">import urequests</pre><b><span style="color: #674ea7;">送出簡單的GET請求</span></b>。我們準備送出Google網站的GET請求,URL網址:http://www.google.com,如下所示:
<pre class="code prettyprint">import urequests
r = urequests.get("http://www.google.com")
print(r.status_code)
</pre><span style="color: #674ea7;"><b>送出擁有參數的GET請求</b></span>: <div>在URL網址可以傳遞參數字串,參數是位在「?」問號之後,如果參數不只一個,請使用「&」符號分隔:
<pre class="code prettyprint">http://www.company.com?para1=value1&para2=value2</pre>
上述URL網址傳遞參數para1和para2,其值分別為「=」等號後的value1和value2。
我們準備送出http://httpbin.org/get(HTTP請求/回應的測試網站)的GET請求,和加上2個參數,如下所示:
<pre class="code prettyprint">import urequests
r = urequests.get("http://httpbin.org/get?name=justin&score=95")
print(r.text)
</pre><b><span style="color: #351c75;">
送出簡單的POST請求</span></b>:<div> urequests套件是使用get()函數送出GET請求,同理,POST請求是使用post()函數,POST請求就是HTML表單送回,如同URL參數,我們需要送出表單欄位的輸入資料。
我們準備使用post()函數送出http://httpbin.org/post的POST請求,送出的資料和上一範例的參數相同,如下所示:
<pre class="code prettyprint">import urequests
post_data = '{"name": "justin", "score": 95}'
r = urequests.post("http://httpbin.org/post", data=post_data)
print(r.text)
</pre></div></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLCk-I-7EKtMeaLX9105I0FkCbCqpX9AzxEGONwFAfGmoCFDJcxd08X8QtSRzh3hofBVG3jHjvNghcmW4dsXbawFlt1V1L-R3zS3O0n4C2NurmmZtoZtQsXx85OHd5IQYaKp2cL2fYFD1rdEuQgXZN94eyp92QYg6eff0Bp3o-DObUa5umDrlQkIYHEw/s1024/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-06-30%20172443.png" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="599" data-original-width="1024" height="187" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLCk-I-7EKtMeaLX9105I0FkCbCqpX9AzxEGONwFAfGmoCFDJcxd08X8QtSRzh3hofBVG3jHjvNghcmW4dsXbawFlt1V1L-R3zS3O0n4C2NurmmZtoZtQsXx85OHd5IQYaKp2cL2fYFD1rdEuQgXZN94eyp92QYg6eff0Bp3o-DObUa5umDrlQkIYHEw/s320/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-06-30%20172443.png" width="320" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2v_ljhwRFKcSnMeI0QDqhY1O9rHibpfy168HbddkyxDbINIk9h-rwHabnqAPA00B3BwNi0WgSrgCjRo--3qvKuiobfG0yCq5IxV6n9k7m6XOYJW8lqohccC0zKJStjkHANjxCLZjCoTkhfBb8cEd8-bgC5lTYhDpkkYs44r4S4P_L-yS12sN88YR9ng/s1024/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-06-30%20172341.png" style="clear: left; display: inline; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="599" data-original-width="1024" height="187" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2v_ljhwRFKcSnMeI0QDqhY1O9rHibpfy168HbddkyxDbINIk9h-rwHabnqAPA00B3BwNi0WgSrgCjRo--3qvKuiobfG0yCq5IxV6n9k7m6XOYJW8lqohccC0zKJStjkHANjxCLZjCoTkhfBb8cEd8-bgC5lTYhDpkkYs44r4S4P_L-yS12sN88YR9ng/s320/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-06-30%20172341.png" width="320" /></a></div><div><br /></div><b><span style="color: #38761d;">
實作:透過HTTP進行GET與POST請求取回資料
</span></b><pre class="code prettyprint">import network
import urequests
SSID = "WiFi名稱" # WiFi名稱
PASSWORD = "WiFi密碼" # WiFi密碼
def connect_wifi(ssid, passwd):
sta = network.WLAN(network.STA_IF)
sta.active(True)
if not sta.isconnected():
print("連線中... \n")
sta.connect(ssid, passwd)
while not sta.isconnected():
pass
print("連線成功... \n")
connect_wifi(SSID, PASSWORD)
#GET請求帶參數
print("GET請求帶參數...")
r = urequests.get("http://httpbin.org/get?X=25&Y=20")
if r.status_code == 200: #請求成功
print(r.encoding)
print(r.text)
#POST請求帶參數
print("POST請求帶參數...")
data = '{ "X":15, "Y":22 }' # JSON資料的字串
r = urequests.post("http://httpbin.org/post", data=data)
if r.status_code == 200: #請求成功
print(r.encoding)
print(r.text)
</pre>
傻花哥http://www.blogger.com/profile/06001039053106717322noreply@blogger.comtag:blogger.com,1999:blog-8336658864716273880.post-39644449762806720202023-04-07T15:27:00.000+08:002023-04-07T15:27:17.245+08:00 ESP8266 MicroPython 無線基地台連線<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjd83ed_qZMCSlvM7ek7tJefw3ToX8NObzEno7DPmEkaGj5ZRkDHU1H6gLzSUW9Ol40KpyBhH5HZe2iJTjTefsvvQZFU4_AROoOs_Q_sJI2oLfBgu6CtYuFzo5jRhkBkZvRSMDm6j_jcz0UJ6QjE63ouuyqG0IlPv_ed3l6c_U0FEELY6QGu7etdMCN7Q/s433/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-06-24%20201051.png" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="107" data-original-width="433" height="79" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjd83ed_qZMCSlvM7ek7tJefw3ToX8NObzEno7DPmEkaGj5ZRkDHU1H6gLzSUW9Ol40KpyBhH5HZe2iJTjTefsvvQZFU4_AROoOs_Q_sJI2oLfBgu6CtYuFzo5jRhkBkZvRSMDm6j_jcz0UJ6QjE63ouuyqG0IlPv_ed3l6c_U0FEELY6QGu7etdMCN7Q/s320/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-06-24%20201051.png" width="320" /></a></div>本 ESP8266 實作系列是以 Thonny 為程式開發工具,並以 MicroPython 程式碼來控制 ESP8266 開發板(Wemos D1 Mini)與延伸附加的硬體裝置。 <div><br /></div><div>建置物聯網裝置時通常需要設定WiFi連線到本地的無線路由器(WiFi分享器)。ESP8266開發板整合WiFi網路晶片,所以可以使用三種工作模式連接WiFi。 </div><div><br /></div><div><ul style="text-align: left;"><li> AP模式: Access Point,提供無線接入服務,允許其它無線裝置接入,提供資料訪問,一般的無線路由/網橋工作在該模式下。AP和AP之間允許相互連線。ESP8266工作在AP模式下,手機、PAD、電腦等裝置可以直接連上模組,可以很方便對使用者裝置進行控制。 </li><li>STA模式: Station, 類似於無線終端,STA本身並不接受無線的接入,它可以連線到AP,一般無線網絡卡即工作在該模式。任何一個接入無線AP的裝置都可以稱為一個站點。 </li><li>AP+STA模式:就是既可以連接到其它的WIFI路由,也可以讓其他的無限終端設備聯入。<span><a name='more'></a></span></li></ul></div>以 MicroPython 程式碼來控制 ESP8266 開發板(Wemos D1 Mini)網路功能需要用到 <span style="color: #800180;"><b>network</b></span> 模組來建立WLAN物件。<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCxRhApgAyKEGVXp7ocM3W82XFDcJ0Il-2qQnxa9B0UKke0IDpdRu5BI6pESfqmGuvWCUaLW_N2mEkTy7mf58bLvCSg6u0gTnB1mLHyGFQMzFYiIfev4axSKOK7i_57W4QXmOKp5FXhH0sXTt1mvXeuuCm0lYBM7Eqxbhv_UzpOPqwlEC6abcXmQJA9g/s605/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-06-24%20211924.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="279" data-original-width="605" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCxRhApgAyKEGVXp7ocM3W82XFDcJ0Il-2qQnxa9B0UKke0IDpdRu5BI6pESfqmGuvWCUaLW_N2mEkTy7mf58bLvCSg6u0gTnB1mLHyGFQMzFYiIfev4axSKOK7i_57W4QXmOKp5FXhH0sXTt1mvXeuuCm0lYBM7Eqxbhv_UzpOPqwlEC6abcXmQJA9g/s16000/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-06-24%20211924.png" /></a></div><div><br /></div><div>另外,因為ESP8266 開發板所掃描到基地台MAC 為二進制值,為了轉圜成常見的16進制表示法,所以需再程式中再匯入<span style="color: #800180;"><b> ubinascii</b></span> 模組。</div>撰寫程式碼如下:<pre class="code prettyprint">import network
import ubinascii
sta = network.WLAN(network.STA_IF)
sta.active(True)
#掃描列表基地台
stas = sta.scan()
print("列表無線基地台")
for ap in stas:
ssid = ap[0].decode()
mac = ubinascii.hexlify(ap[1], ":").decode()
print(ssid, mac)
print("無線基地台列表完成")
#中斷既有連線
sta.disconnect()
#連線指定的基地台
if not sta.isconnected():
print("無線基地台連線中...")
sta.connect('SSID名稱', '連線密碼')
while not sta.isconnected():
pass
#基地台連線成功後顯示連線資訊
if sta.isconnected():
print("連線成功!!")
print("network config:", sta.ifconfig())
#sta.disconnect()
</pre>
以上程式碼完成三件事: <div><ol style="text-align: left;"><li>掃描附近可用之WiFi無線基地台 </li><li>連線指定的WiFi無線基地台 </li><li>基地台連線成功後顯示連線資訊</li></ol></div><div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjn_FqRWxGATIE8OPrNhMfd7-ZCidxIvZSdxvs5_jeMpV3BorQ39FSnv76HGerHI-RN3leZXkRZFPRpU7jkgn_3p7Ffr02V6uLG2H_bhhDqqitnaJY6FFWgyyearZAIisj9dkkO0S08oU3VfkzToe-cLspcOqEpr-zyUP7CEeDpM2ZkzpZ2ThjX0rqK7g/s1024/%E6%9C%AA%E5%91%BD%E5%90%8D.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="600" data-original-width="1024" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjn_FqRWxGATIE8OPrNhMfd7-ZCidxIvZSdxvs5_jeMpV3BorQ39FSnv76HGerHI-RN3leZXkRZFPRpU7jkgn_3p7Ffr02V6uLG2H_bhhDqqitnaJY6FFWgyyearZAIisj9dkkO0S08oU3VfkzToe-cLspcOqEpr-zyUP7CEeDpM2ZkzpZ2ThjX0rqK7g/s600/%E6%9C%AA%E5%91%BD%E5%90%8D.png"/></a></div>傻花哥http://www.blogger.com/profile/06001039053106717322noreply@blogger.comtag:blogger.com,1999:blog-8336658864716273880.post-15864884188978272662023-03-29T18:52:00.000+08:002023-03-29T18:52:32.310+08:00ESP8266 MicroPython 開發環境配置本 ESP8266 實作系列是以 Thonny 為程式開發工具,並以 MicroPython 程式碼來控制 ESP8266 開發板與延伸附加的硬體裝置。 <div><br /></div><div>在本實作開始前,請先完成 Thonny 的安裝,官方網址為 https://thonny.org/。</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2h8kV338PYCs8PI5Bg_z3vve_uQBZSSXc9U_gg7ni3K-NgEbFG3aBkTvVLZZWmMcu0jxVVOtzXeRxMnXCDn-QN6u5QjQMoItmj4jjp4Ar3sGY1GOYTOEF99271wX-4QFXVMV-REIKYP6u-BtBG-1A6c1w5Df3tLJXJ_hKUELP5UZRQoB7khexlugyRw/s1038/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-05-25%20173829.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="587" data-original-width="1038" height="226" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2h8kV338PYCs8PI5Bg_z3vve_uQBZSSXc9U_gg7ni3K-NgEbFG3aBkTvVLZZWmMcu0jxVVOtzXeRxMnXCDn-QN6u5QjQMoItmj4jjp4Ar3sGY1GOYTOEF99271wX-4QFXVMV-REIKYP6u-BtBG-1A6c1w5Df3tLJXJ_hKUELP5UZRQoB7khexlugyRw/w400-h226/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-05-25%20173829.png" width="400" /></a></div><br /><div><span><a name='more'></a></span>當ESP8266開發板連接至電腦後,請先開啟裝置管理員確認是否已安裝開發版所需的 CH340 驅動程式。 </div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7m984ijxdnLI0f5k6fch23jeCbnZYP1pMW3HX3-HF0FHePUbDDVHtPrh684-EcI-wYuqB-SyqkWKw4QN2OKTdcA86clOWvedNNywu9Azh4LMoRPk3Nbn80hIkM7LPKy5dC7RaqjcQJv3fjRebzF6uKLhiHn6yq-73_j4m5Nemrg9PWCldNJ1LWNewcQ/s802/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-05-25%20170758.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="428" data-original-width="802" height="214" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7m984ijxdnLI0f5k6fch23jeCbnZYP1pMW3HX3-HF0FHePUbDDVHtPrh684-EcI-wYuqB-SyqkWKw4QN2OKTdcA86clOWvedNNywu9Azh4LMoRPk3Nbn80hIkM7LPKy5dC7RaqjcQJv3fjRebzF6uKLhiHn6yq-73_j4m5Nemrg9PWCldNJ1LWNewcQ/w400-h214/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-05-25%20170758.png" width="400" /></a></div><br /><div><br /></div><div>如尚未安裝 CH340 驅動程式,請至 http://www.wch.cn/downloads/CH341SER_EXE.html 下再安裝。 </div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtdQCTmw9q47T_FJ1aSrkJa6fJQWRyJqJBpb5KmduERTDCEgkLMwE8tmyWPmVv4t4mklbf1TGZvmpq6rFm2W4QdsdBk5VBHVSLIqNvwtPl1J3u7q_KrPyLxoao2yLUuaKoH_86JYvxrd8_REd1kATFV-cc7o-tgetACE3t1eWbtA0ZWgfAI3LghsyOEQ/s1199/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-05-25%20171207.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="663" data-original-width="1199" height="221" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtdQCTmw9q47T_FJ1aSrkJa6fJQWRyJqJBpb5KmduERTDCEgkLMwE8tmyWPmVv4t4mklbf1TGZvmpq6rFm2W4QdsdBk5VBHVSLIqNvwtPl1J3u7q_KrPyLxoao2yLUuaKoH_86JYvxrd8_REd1kATFV-cc7o-tgetACE3t1eWbtA0ZWgfAI3LghsyOEQ/w400-h221/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-05-25%20171207.png" width="400" /></a></div><br /><div>完成 CH340 驅動程式安裝後,接著下載 MicroPython 韌體備用,以便稍後將韌體燒錄到 ESP8266 開發板。 MicroPython 韌體下載網址: https://micropython.org/download/esp8266/ ,本實作取用的韌體檔案為 esp8266-20210202-v1.14.bin</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhU2XJFv1UiQt8SV6AjAqAmB64oxhv1PSAnFglqq_wcWhLlrhvrlXvHvtyIRyvSF3xeFl5sGBtHycxckZFOAq0MDjDLOfSTSD_vzU8I_pUdZK7jbJGZuRgNRHlWqIuPxRZzR4LT8Y0bDbsJnK6-DIpxfEx0jYhoREEvmmMR7tTX7CYgautQJggPynnCSw/s1111/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-05-25%20172035.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="580" data-original-width="1111" height="209" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhU2XJFv1UiQt8SV6AjAqAmB64oxhv1PSAnFglqq_wcWhLlrhvrlXvHvtyIRyvSF3xeFl5sGBtHycxckZFOAq0MDjDLOfSTSD_vzU8I_pUdZK7jbJGZuRgNRHlWqIuPxRZzR4LT8Y0bDbsJnK6-DIpxfEx0jYhoREEvmmMR7tTX7CYgautQJggPynnCSw/w400-h209/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-05-25%20172035.png" width="400" /></a></div><br /><div><br /></div><span style="color: #cc0000; font-size: large;"><b>燒錄韌體到開發板</b></span> <div><ol style="text-align: left;"><li>打開 Thonny ,接著將 ESP8266 開發板以USB線連接到電腦。 </li><li>選取 Thonny 功能表 [工具] / [選項]。 </li></ol></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLJKGww8gdziORe_iFFx-brSqgBy0eksShnElszE011UNY98kk9doOdChQ37-k9vTtgHcZwze25f5evZDJ56nKRsZzFcfmH9pBBvUpqEWbl41RyZQ8w5C3uik9fP1So8LK8vrryHDoqmIqJMRotlUzK8YGBU0R5Kw7SwSodJ2IeohSRp9_NDXvBvl-Pg/s888/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-05-25%20163752.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="491" data-original-width="888" height="221" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLJKGww8gdziORe_iFFx-brSqgBy0eksShnElszE011UNY98kk9doOdChQ37-k9vTtgHcZwze25f5evZDJ56nKRsZzFcfmH9pBBvUpqEWbl41RyZQ8w5C3uik9fP1So8LK8vrryHDoqmIqJMRotlUzK8YGBU0R5Kw7SwSodJ2IeohSRp9_NDXvBvl-Pg/w400-h221/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-05-25%20163752.png" width="400" /></a></div><div><br /></div><div><ol style="text-align: left;"><li>選取 [直譯器] 頁籤。 </li><li>在直譯器設備選取欄位中選取 [MicroPython (ESP8266)]
在選擇連接埠的欄位中選取設當的 COM 埠。 </li><li>按下連結按鈕 [安裝或更新韌體]。</li></ol></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8R0t6VCrpskbwcMHuEFaN_1U83HcyqsFqJSVCwaQyNOLpYnrn_IduuxrD_askNkAFqNI8b_IabyvdFk78o7NuQ9t9dvs1WvNml3f26KIkdR_fA6Ay0HeoGBrejw2zydk1oMMQVixaizdGCkTtnsuvJ5r_Y6lCOcXPmbnRzZZfKdkaZdUwjSLZRgpcyA/s585/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-05-25%20163638.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="505" data-original-width="585" height="345" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8R0t6VCrpskbwcMHuEFaN_1U83HcyqsFqJSVCwaQyNOLpYnrn_IduuxrD_askNkAFqNI8b_IabyvdFk78o7NuQ9t9dvs1WvNml3f26KIkdR_fA6Ay0HeoGBrejw2zydk1oMMQVixaizdGCkTtnsuvJ5r_Y6lCOcXPmbnRzZZfKdkaZdUwjSLZRgpcyA/w400-h345/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-05-25%20163638.png" width="400" /></a></div> </div><div><ol style="text-align: left;"><li>在 [Port] 欄位選取已安裝 CH340 驅動程式的 COM 埠。 </li><li>在 [Firmware] 欄位選取要燒錄到 ESP8266 開發板中的韌體檔案。</li><li>按下 [安裝] 按鈕開始燒錄韌體。</li></ol></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEht7Z3NZx3T5T8i3WrwFTvtUdUeF5C1FkAuuzimNTHHh6BSfglzO4VFuOrpLd81VI3T_LlG9ltlhEtc8-VD6VGs3b1l4yJdIm1fpxiG_whVAUky2apO5hjYnt-Dz3b7unZQDAO0EA7gD34AC-uju7YJw4Jydqumowi8U7lIbyoclcQaFbr2xJncaOZrEA/s583/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-05-25%20163600.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="429" data-original-width="583" height="294" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEht7Z3NZx3T5T8i3WrwFTvtUdUeF5C1FkAuuzimNTHHh6BSfglzO4VFuOrpLd81VI3T_LlG9ltlhEtc8-VD6VGs3b1l4yJdIm1fpxiG_whVAUky2apO5hjYnt-Dz3b7unZQDAO0EA7gD34AC-uju7YJw4Jydqumowi8U7lIbyoclcQaFbr2xJncaOZrEA/w400-h294/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-05-25%20163600.png" width="400" /></a></div><br /><div><br /></div><div>在 Thonny 編輯器中撰寫一個令 ESP8266 開發板內建LED閃爍的測試程式。</div><pre class="code prettyprint">from machine import Pin
import utime
led = Pin(2, Pin.OUT)
while True:
led.value(0)
utime.sleep(3)
led.value(1)
utime.sleep(1)
</pre>
執行程式,檢測開發板是否正常運作。<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjet5eylzafIHpvrCd6nroXGLwldkdZ4EDT0PWil004CKnglDR-hEYPpcl3lOly-TQW5CEuqvwST8mlVyj4fBFv8ZlFEjHxTilJdTs92AdwKmEWFR6blVp-9r6THgpabGGy5BO0ZvTcHtYmwKKxOaVkwQrusJB4wG1yoWPqNp0Z6t4Pxn4bHv_0u5lEcw/s888/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-05-25%20175731.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="491" data-original-width="888" height="221" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjet5eylzafIHpvrCd6nroXGLwldkdZ4EDT0PWil004CKnglDR-hEYPpcl3lOly-TQW5CEuqvwST8mlVyj4fBFv8ZlFEjHxTilJdTs92AdwKmEWFR6blVp-9r6THgpabGGy5BO0ZvTcHtYmwKKxOaVkwQrusJB4wG1yoWPqNp0Z6t4Pxn4bHv_0u5lEcw/w400-h221/%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202022-05-25%20175731.png" width="400" /></a></div><div><br /></div><div style="text-align: center;"><iframe frameborder="0" height="270" src="https://youtube.com/embed/cKvt11dHfmw" style="background-image: url(https://i.ytimg.com/vi/cKvt11dHfmw/hqdefault.jpg);" width="480"></iframe></div>傻花哥http://www.blogger.com/profile/06001039053106717322noreply@blogger.comtag:blogger.com,1999:blog-8336658864716273880.post-82483674478651015462023-03-18T12:43:00.000+08:002023-03-18T12:43:52.529+08:00實作 Ethernet Shield 網路家用電路控制<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEegErphlQBy6fj49P5w6lpXMItDo8oEgOlS0KpXV8WKrDT-StUMyte3147-vyY-XyZNH9XbwusefZqWaxV7UwNF-48-qkmzRTMrP4nAx-7fDWL_zWY4RQJ638FmHmnT_TTJCbppoc7TCF/s1600/15185.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEegErphlQBy6fj49P5w6lpXMItDo8oEgOlS0KpXV8WKrDT-StUMyte3147-vyY-XyZNH9XbwusefZqWaxV7UwNF-48-qkmzRTMrP4nAx-7fDWL_zWY4RQJ638FmHmnT_TTJCbppoc7TCF/s320/15185.jpg" width="320" /></a></div>
本實作介紹如何使用 Arduino Ethernet Shield W5100 乙太網路擴充板,除指定相關網路參數例如MAC、IP位址等進行網路連線外,並以網頁表單資料傳送的方式透過網路擴充板與繼電器模組控制家電電源的啟閉,達到遠端控制家電之目的。<br />
<br />
本實作除了之前介紹過的Ethernet Shield(W5100)乙太網路擴充板外,新增一個2 Relay的雙電路繼電器模組,繼電器(Relay) 是一種電流控制模組,具有輸入迴路和輸出迴路,常用於自動控制電路中,能夠把較小的電流去控制較大電流的一種「自動開關」。<br />
<a name='more'></a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-sla_90lGQ3hw4YywUgHA0dFymN5_ZrC6CG_51_3Gb811KaLwY9nPswBBaZtVLxJvE8tJzRdhaLW9oh-QIYjUFE39bNgFIJcDZKnpTp1spOKEvlzeRSbgBzxNMYT7docxynBdAp2WJ9hg/s1600/15180.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-sla_90lGQ3hw4YywUgHA0dFymN5_ZrC6CG_51_3Gb811KaLwY9nPswBBaZtVLxJvE8tJzRdhaLW9oh-QIYjUFE39bNgFIJcDZKnpTp1spOKEvlzeRSbgBzxNMYT7docxynBdAp2WJ9hg/s320/15180.jpg" width="320" /></a></div>
<br />
<ul>
<li>繼電器型號: Jqc/3FF/S Z, 2 Channel</li>
<li>工作電壓: 5 V DC; 負載: 10 A, AC 250 V/15 A, 125 V</li>
<li> 50 x 37 x 18 mm (L * W * H); Color: Blue relays on a black PCB; Weight: 35 g</li>
<li>腳位接點:VCC:系統電源正極,GND:系統電源負極,IN1--IN2:繼電器控制端埠。</li>
</ul>
<br />
<br />
<span style="color: #0b5394;"><b>Ethernet Shield 擴充板在使用時就直接插在 Arduino UNO即可。</b></span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNm28XPDzpaXUxhmUcpd1wtRuoNVdRq04iK3-MZOze5vorETkAYfEe6VyO1i8o3qrkemoFdGD6wdJsV0X40aJtlGtY-Q5I4V6iq6oiTREW6S_g7SttMdAf7P3v6tW_5YRRXc9EKxpT7irM/s1600/14885.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNm28XPDzpaXUxhmUcpd1wtRuoNVdRq04iK3-MZOze5vorETkAYfEe6VyO1i8o3qrkemoFdGD6wdJsV0X40aJtlGtY-Q5I4V6iq6oiTREW6S_g7SttMdAf7P3v6tW_5YRRXc9EKxpT7irM/s320/14885.jpg" width="320" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1VcI_rxr-w1XlNlj9yWAjZpb1PxUktIxGCOJ12HwDbco2g5Jgx7IflhLdhjDTUdmxxiHKuLvuecFZHGZiX3cXFfvk0yqXyDyAj3E0z7dQaoHeF4_rR7B75KetItW74u31eXtPWt-wbrRN/s1600/14887.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1VcI_rxr-w1XlNlj9yWAjZpb1PxUktIxGCOJ12HwDbco2g5Jgx7IflhLdhjDTUdmxxiHKuLvuecFZHGZiX3cXFfvk0yqXyDyAj3E0z7dQaoHeF4_rR7B75KetItW74u31eXtPWt-wbrRN/s320/14887.jpg" width="320" /></a></div>
<br />
<span style="color: #990000;"><b>接著,將筆者將繼電器模組以銅柱加高的方式組合於乙太網路擴充板之上。</b></span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWRM39JBc9MpgHwJaeGXK97kOTP7zPxJzwJNrs_46kX-qpycXkLMq8xplE6n-vXbye40uGNOMc3fX_RFk27oAsRS-gv3Fp47JOSG0FyhprCZKMMMisqgAu5BRBRo6nfJy1WOlSu75tsSxw/s1600/15179.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWRM39JBc9MpgHwJaeGXK97kOTP7zPxJzwJNrs_46kX-qpycXkLMq8xplE6n-vXbye40uGNOMc3fX_RFk27oAsRS-gv3Fp47JOSG0FyhprCZKMMMisqgAu5BRBRo6nfJy1WOlSu75tsSxw/s320/15179.jpg" width="320" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgu_6nxdg7ftn_Kggpyc5MkFKbJAp53L1UBzjoKINIOCkuvI8K67aKS2ljuLi1XgyN-mKLPslFZD9y6hbwKBoZ1i69wEMzudPtv-06njlp3Hild-JtB3S1j3ln2Uq_N8T2pn2sQsNsmguR_/s1600/15183.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgu_6nxdg7ftn_Kggpyc5MkFKbJAp53L1UBzjoKINIOCkuvI8K67aKS2ljuLi1XgyN-mKLPslFZD9y6hbwKBoZ1i69wEMzudPtv-06njlp3Hild-JtB3S1j3ln2Uq_N8T2pn2sQsNsmguR_/s320/15183.jpg" width="320" /></a></div>
<br />
下列程式碼主要讓 Arduino 透過Ethernet Shield(W5100)乙太網路擴充板建立網頁伺服器,,當客戶端連線內部網址 192.168.1.97 時,回應客戶端 (瀏覽器) 一個家用電路開關設定頁面讓使用者點選,然後經由網頁表單以GET方式回傳設定參數來控制繼電器模組。.<br />
<pre class="code prettyprint">#include <SPI.h>
#include <Ethernet.h>
// 設定MAC地址
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
// 設定IP地址
IPAddress ip(192, 168, 0, 97);
//設定DNS
//IPAddress dnServer(168, 95, 1, 1);
// 設定閘道
IPAddress gateway(192, 168, 0, 1);
// 設定遮罩
IPAddress subnet(255, 255, 255, 0);
// 初始化Ethernet程式庫,HTTP默認端口為80
EthernetServer server(80);
String readString = String(50); //宣告接收字串的變數
const int Control1=2; //第一組控制接腳
const int Control2=3; //第二組控制接腳
void setup() {
pinMode(Control1,OUTPUT);
pinMode(Control2,OUTPUT);
digitalWrite(Control1,LOW);
digitalWrite(Control2,LOW);
// 初始化串口通訊
Serial.begin(9600);
// 開始ethernet連接,並作為服務器初始化
Ethernet.begin(mac, ip, gateway, subnet);
server.begin();
Serial.print( "server is at " );
Serial.println(Ethernet.localIP());
}
void loop() {
// 監聽客戶端傳來的數據
EthernetClient client = server.available();
//如果有新連線請求
if (client) {
Serial.println( "new client" );
//輸出網頁控制內容
client.print("<html>");
client.print("<head>");
client.print("<meta http-equiv=content-type content=text/html; charset=UTF-8>");
client.print("<style>");
client.print("body,input{font-family: verdana, Times New Roman,微軟正黑體,新細明體;}");
client.print("p{text-align:center;font-size:60px;}");
client.print("table{text-align:center;border-collapse:collapse}");
client.print("th,td,input{align:center;margin:2px;padding:10px;font-size:40px}");
client.print("th{color:white;}");
client.print("</style>");
client.print("</head>");
client.print("<body>");
client.print("<p>網路遙控電路</p>");
client.print("<table border=1 align=center width=75% height=50%>");
client.print("<tr>");
client.print("<th colspan=2 bgcolor=red>第一組電路</th>");
client.print("</tr>");
client.print("<tr>");
client.print("<td>");
client.print("<form method=get>");
client.print("<input type=hidden name=L value=0>");
client.print("<input type=submit value=開啟ON>");
client.print("</form>");
client.print("</td>");
client.print("<td>");
client.print("<form method=get>");
client.print("<input type=hidden name=L value=1>");
client.print("<input type=submit value=關閉OFF>");
client.print("</form>");
client.print("</td>");
client.print("</tr>");
client.print("<tr>");
client.print("<th colspan=2 bgcolor=orange>第二組</th>");
client.print("</tr>");
client.print("<tr>");
client.print("<td>");
client.print("<form method=get>");
client.print("<input type=hidden name=L value=2>");
client.print("<input type=submit value=開啟ON>");
client.print("</form>");
client.print("</td>");
client.print("<td>");
client.print("<form method=get>");
client.print("<input type=hidden name=L value=3>");
client.print("<input type=submit value=關閉OFF>");
client.print("</form>");
client.print("</td>");
client.print("</tr>");
client.print("</table>");
client.print("</body></html>");
// 只要通訊連線中.....
while (client.connected()) {
//確認客戶端有發出請求並已連接
if (client.available()) {
char c = client.read();
Serial.write(c);
readString.concat(c); //讀取GRT查詢參數
if (c == '\n')
{
//第一組電路控制判斷
if (readString.substring(8,9) == "0")
digitalWrite(Control1,HIGH);
else if (readString.substring(8,9) == "1")
digitalWrite(Control1,LOW);
//第一組電路控制判斷
else if (readString.substring(8,9) == "2")
digitalWrite(Control2,HIGH);
else if (readString.substring(8,9) == "3")
digitalWrite(Control2,LOW);
//清空判斷字串參數
readString="";
// 斷開連接
client.stop();
Serial.println( "client disonnected" );
}
}
}
}
}</pre>
<span style="color: #38761d;"><b>本實作暫時先以紅綠、兩個LED替代要控制的家電用品。</b></span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjU17mt7ivfjpz6AuJTyaJ1mVgltPXtRD88xRgeyGGAgVTmPE1Q71GSdx2-X5hNzKDW30-mG14lymWdWS6_gWDHqBsXQL6sUtFF9OLWUXG9Kh0A3LfLPW8z84nJt7zwpSLPZDr7vKtI1Jty/s1600/15188.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjU17mt7ivfjpz6AuJTyaJ1mVgltPXtRD88xRgeyGGAgVTmPE1Q71GSdx2-X5hNzKDW30-mG14lymWdWS6_gWDHqBsXQL6sUtFF9OLWUXG9Kh0A3LfLPW8z84nJt7zwpSLPZDr7vKtI1Jty/s320/15188.jpg" width="320" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTqAg08pg32xIGhcEh2JYYsGaarhW3AwtyUlvmcKoLfZyB6S4snjhangGbdrewrDip00XzqlGEpHZqeZRKp9SZGkJP_kr0OhkurOppT46Z8NEIlLkE61Uqi9tXfj6YDu32y5HixKiIN3Ym/s1600/15187.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTqAg08pg32xIGhcEh2JYYsGaarhW3AwtyUlvmcKoLfZyB6S4snjhangGbdrewrDip00XzqlGEpHZqeZRKp9SZGkJP_kr0OhkurOppT46Z8NEIlLkE61Uqi9tXfj6YDu32y5HixKiIN3Ym/s320/15187.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
傻花爸http://www.blogger.com/profile/01107154584925533645noreply@blogger.comtag:blogger.com,1999:blog-8336658864716273880.post-36446181775120009522023-03-03T09:27:00.000+08:002023-03-03T09:27:57.830+08:00實作 Ethernet Shield 網路通訊<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwtDT7NhWWVu5y1BRjQjIV4KLNB0zPROjJDWNa4tJDLanCVHDuT_1XQWbfwnzucgJpuFjqMdVFOqAbr674TuFbcMLUDcABohs0mFASzmmuwlhyphenhyphenhqNa6VtBIzkIPx9oR7iBA5hkauoFYgZn/s1600/14888.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwtDT7NhWWVu5y1BRjQjIV4KLNB0zPROjJDWNa4tJDLanCVHDuT_1XQWbfwnzucgJpuFjqMdVFOqAbr674TuFbcMLUDcABohs0mFASzmmuwlhyphenhyphenhqNa6VtBIzkIPx9oR7iBA5hkauoFYgZn/s320/14888.jpg" width="320" /></a></div>
本實作介紹如何使用 Arduino Ethernet Shield W5100 乙太網路擴充板,指定相關網路參數例如MAC、IP位址等,以WEB SERVER的方式讓透過網路擴充板成為簡易的網路伺服器。<br />
<br />
Ethernet Shield(W5100) 是把 TCP/IP Protocols (TCP, UDP, ICMP, IPv4 ARP, IGMP, PPPoE, Ethernet) 直接燒至硬體電路上,只要使用 Ethernet Library 便可以輕易完成連至網際網路的動作。本實作使用副廠的 Arduino Ethernet Shield W5100 乙太網路擴充板,相容於原廠的乙太網路擴充板,價格相對便宜。<br />
<a name='more'></a><br />
<br />
<span style="color: #351c75;"><b>Ethernet Shield 擴充板在使用時就直接插在 Arduino UNO即可。</b></span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiw8A7Ks43yh_DlhUf-T9wuxHEUoEJoABGNz74aFcGThRo-ZCKspZoWDUre04WyUSF-FQEeeERvlr16SNjqXB5lIsDf7OXD9MSrhvT62AlVO_8toF3AZzzltVvJw0uvB86fbe5JuuovMDVi/s1600/14886.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiw8A7Ks43yh_DlhUf-T9wuxHEUoEJoABGNz74aFcGThRo-ZCKspZoWDUre04WyUSF-FQEeeERvlr16SNjqXB5lIsDf7OXD9MSrhvT62AlVO_8toF3AZzzltVvJw0uvB86fbe5JuuovMDVi/s320/14886.jpg" width="320" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNm28XPDzpaXUxhmUcpd1wtRuoNVdRq04iK3-MZOze5vorETkAYfEe6VyO1i8o3qrkemoFdGD6wdJsV0X40aJtlGtY-Q5I4V6iq6oiTREW6S_g7SttMdAf7P3v6tW_5YRRXc9EKxpT7irM/s1600/14885.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNm28XPDzpaXUxhmUcpd1wtRuoNVdRq04iK3-MZOze5vorETkAYfEe6VyO1i8o3qrkemoFdGD6wdJsV0X40aJtlGtY-Q5I4V6iq6oiTREW6S_g7SttMdAf7P3v6tW_5YRRXc9EKxpT7irM/s320/14885.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1VcI_rxr-w1XlNlj9yWAjZpb1PxUktIxGCOJ12HwDbco2g5Jgx7IflhLdhjDTUdmxxiHKuLvuecFZHGZiX3cXFfvk0yqXyDyAj3E0z7dQaoHeF4_rR7B75KetItW74u31eXtPWt-wbrRN/s1600/14887.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1VcI_rxr-w1XlNlj9yWAjZpb1PxUktIxGCOJ12HwDbco2g5Jgx7IflhLdhjDTUdmxxiHKuLvuecFZHGZiX3cXFfvk0yqXyDyAj3E0z7dQaoHeF4_rR7B75KetItW74u31eXtPWt-wbrRN/s320/14887.jpg" width="320" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiEkUPf0wlnsNmjpXzmTlaK5GKuC-4qaWKdoJPIDbp7QpIjgzyeRCK7N10C5msJiqAuTAFF-q2WkoitvTlpr5sY37i1zUZiuX0-yfOVVP0wnHTJ2hRwVKGx3Vrj8ENl0CZ4hfGE2XznwRC/s1600/14884.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiEkUPf0wlnsNmjpXzmTlaK5GKuC-4qaWKdoJPIDbp7QpIjgzyeRCK7N10C5msJiqAuTAFF-q2WkoitvTlpr5sY37i1zUZiuX0-yfOVVP0wnHTJ2hRwVKGx3Vrj8ENl0CZ4hfGE2XznwRC/s320/14884.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHFRk8oxKnqGzen4dRV3e-34Mkqo8PC8PkNKMeeFX2ZSMbenOS4BrNmcGLQ1CiQAF3ZgjCHzu-tI0vpeWKSt7yjK6-LRQb41zaPXbUxcqt14TG8ce3u9vgoult2t1J7chBHm0sh4oHv0Ye/s1600/14882.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHFRk8oxKnqGzen4dRV3e-34Mkqo8PC8PkNKMeeFX2ZSMbenOS4BrNmcGLQ1CiQAF3ZgjCHzu-tI0vpeWKSt7yjK6-LRQb41zaPXbUxcqt14TG8ce3u9vgoult2t1J7chBHm0sh4oHv0Ye/s320/14882.jpg" width="320" /></a></div>
<span style="color: #b45f06;"><b>Ethernet Shield狀態指示燈 (LEDs)功能如下:</b></span><br />
* PWR: 表示 Arduino 控制板和 Ethernet Shield 已經上電<br />
* LINK: 網路指示燈,當燈號閃爍時代表正在傳送或接收資料<br />
* FULLD: 代表網路連線是全雙工<br />
* 100M: 表示網路是 100 MB/s (相對於 10 Mb/s)<br />
* RX: 接收資料時閃爍<br />
* TX: 傳送資料時閃爍<br />
* COLL: 閃爍時代表網路上發生封包碰撞的情形 (network collisions are detected)<br />
<br />
<div>
<br /></div>
<div>
<pre class="code prettyprint">#include <SPI.h>
#include <Ethernet.h>
// 設定MAC地址
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
// 設定IP地址
IPAddress ip(192, 168, 0, 97);
//設定DNS
//IPAddress dnServer(168, 95, 1, 1);
// 設定閘道
IPAddress gateway(192, 168, 0, 1);
// 設定遮罩
IPAddress subnet(255, 255, 255, 0);
// 初始化Ethernet程式庫,HTTP默認端口為80
EthernetServer server(80);
void setup() {
// 初始化串口通訊
Serial.begin(9600);
// 開始ethernet連接,並作為服務器初始化
Ethernet.begin(mac, ip, gateway, subnet);
server.begin();
Serial.print( "server is at " );
Serial.println(Ethernet.localIP());
}
void loop() {
// 監聽客戶端傳來的數據
EthernetClient client = server.available();
//如果有新連線請求
if (client) {
Serial.println( "new client" );
// 只要通訊連線中.....
while (client.connected()) {
//確認客戶端有發出請求
if (client.available()) {
char c = client.read();
Serial.write(c);
client.println( "HTTP/1.1 200 OK" );
client.println( "Content-Type: text/html" );
client.println( "Connection: close" );
client.println();
client.println( "<!DOCTYPE HTML>" );
client.println( "<html><head>" );
client.println( "<meta charset=\"utf-8\" />" );
client.println( "<title>Arduino 通訊</title>" );
client.println( "</head><body>" );
client.println( "<h1>通訊成功</h1>" );
client.println( "</body></html>" );
break ;
}
}
// 等待瀏覽器接收資料
delay(1);
// 斷開連接
client.stop();
Serial.println( "client disonnected" );
}
}</pre>
<br />
<a href="https://www.arduino.cc/en/Reference/EthernetBegin" target="_blank">Ethernet.begin() 詳細用法請參考這裡。</a><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjN-rKnfl3DKsYRR-nPQUZzfg4MSnGGdJ1oB2cpHsz-qtEhvRd8cChMx6PW4s21lj6ACiSHCRUDkpHIw4UDstnc0LGJMccZf8cgeK8tewAOicwC069Nr4xWrc5LRY_jpeM2UUnyzVBt_XQr/s1600/2018-07-26_19-09-49.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="320" data-original-width="677" height="151" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjN-rKnfl3DKsYRR-nPQUZzfg4MSnGGdJ1oB2cpHsz-qtEhvRd8cChMx6PW4s21lj6ACiSHCRUDkpHIw4UDstnc0LGJMccZf8cgeK8tewAOicwC069Nr4xWrc5LRY_jpeM2UUnyzVBt_XQr/s320/2018-07-26_19-09-49.jpg" width="320" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9dGojhAN8wRGDyOx1hDKYkgwwxjGjl9rY7YQ0nMoINNlUqFvTsbBwTjrskjXqpvlgbYJa9vsR9_jQNmuEaiclm5RRzyJk9FBjUcxKvQEgZ6UdMKAHHzHzP9TbCK1odbCYP8SmGYOeGki9/s1600/2018-07-26_19-09-06.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="327" data-original-width="680" height="153" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9dGojhAN8wRGDyOx1hDKYkgwwxjGjl9rY7YQ0nMoINNlUqFvTsbBwTjrskjXqpvlgbYJa9vsR9_jQNmuEaiclm5RRzyJk9FBjUcxKvQEgZ6UdMKAHHzHzP9TbCK1odbCYP8SmGYOeGki9/s320/2018-07-26_19-09-06.jpg" width="320" /></a></div>
</div>
<div>
<br /></div>
傻花哥http://www.blogger.com/profile/06001039053106717322noreply@blogger.comtag:blogger.com,1999:blog-8336658864716273880.post-59789998504128063212023-02-19T21:40:00.000+08:002023-02-19T21:40:26.146+08:00ESP8266 WiFi 模組(ESP-01)韌體更新(使用一鍵燒錄)<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0y2uu6thlxoIOT6nJj2aWeLGUvPDNKctxbwadtE_4gPhVBsBZra13-2DFs3KFtTqdBk2NVjDm0V13Wxc5MSYKpvi0tl9CSC4ur-5x89VRLh6ZDaicRaj1c3qcsY8XUNw-1T2ypeHsMRce/s1600/16176.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0y2uu6thlxoIOT6nJj2aWeLGUvPDNKctxbwadtE_4gPhVBsBZra13-2DFs3KFtTqdBk2NVjDm0V13Wxc5MSYKpvi0tl9CSC4ur-5x89VRLh6ZDaicRaj1c3qcsY8XUNw-1T2ypeHsMRce/s320/16176.jpg" width="320" /></a></div>
這世界除非有師父(真人)領進門,要不然學習新知真的要花費相當多的心血與時間,本實作:ESP8266 WiFi 模組(ESP-01)韌體更新,就是一個活生生的案例。短短的燒錄學習小誌竟然花費六個多鐘頭!網路的資料很多但也很無章法,正所謂江湖一點訣,說破就不值錢,今天小誌就來說破吧!<br />
<br />
本測試的主角為使用 ESP8266晶片的 WiFi 網路模組 ESP-01網路模組 ,另外加上一塊USB轉TTL的模組與原本用於提供麵包版電源的模組。主硬體:ESP8266 WiFi 模組: (ESP-01)、USB轉TTL的模組:FT232RL、電源模組:MB-102雙路電源板<br />
<a name='more'></a><br />
<span style="color: #134f5c; font-size: large;"><b>硬體接線</b></span>:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgr-gmtgXbCfO2fCDKbLdxxGNIlHo1ug6E6gy2rYTZA4EeQe_z1xcoxzVMUkCgpqbs_H6Yi5VuChAig8Ge79OakO8W4Wkn1_vCTGx0RFs1Uc_iEDxSrXkw1L0v5aPIWqojPlm_k1CDSU6kG/s1600/16137.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgr-gmtgXbCfO2fCDKbLdxxGNIlHo1ug6E6gy2rYTZA4EeQe_z1xcoxzVMUkCgpqbs_H6Yi5VuChAig8Ge79OakO8W4Wkn1_vCTGx0RFs1Uc_iEDxSrXkw1L0v5aPIWqojPlm_k1CDSU6kG/s320/16137.jpg" width="320" /></a></div>
1. 電源接線:<br />
【MB-102】3.3V →【ESP-01】VCC<br />
【MB-102】3.3V →【ESP-01】CH_PD<br />
【MB-102】GND →【ESP-01】GND<br />
【MB-102】GND →【FT232RL】GND<br />
<br />
2. FT232RL與ESP-01的TX發送端與 RX接收端交互對接。<br />
【FT232RL】TXD→【ESP-01】URXD<br />
【FT232RL】RXD→【ESP-01】UTXD<br />
<br />
<span style="color: red;"><b>3.【 MB-102】GND →【ESP-01】GP0:這個是重點,GP0接地就進入燒錄模式,燒錄完畢記得務必拆除。</b></span><br />
<br />
<span style="color: #e69138; font-size: large;"><b>必備軟體:</b></span><br />
1. ESP8266晶片的韌體檔案請到<a href="https://www.espressif.com/zh-hans/support/download/sdks-demos" target="_blank">這裡</a>下載,<a href="https://www.espressif.com/zh-hans/support/download/sdks-demos" target="_blank">https://www.espressif.com/zh-hans/support/download/sdks-demos</a> ,如下圖,本實作下載 ESP8266 NONOS SDK V2.0.0 20160810 。<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhF6e138ENv_ke6MzdXY3JsJsKKB4mbMRBarsUV6ankRJpWp12iMCKXpcZa8UDMRgLkhlC_Td-s2aK7rR5thDWR6fjmMfq8quSMaSCt9LT6V_1IIrPswS98U6bki0CQR0IhSOj3fQRoCdWR/s1600/2018-08-15_16-32-45.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="669" data-original-width="1366" height="312" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhF6e138ENv_ke6MzdXY3JsJsKKB4mbMRBarsUV6ankRJpWp12iMCKXpcZa8UDMRgLkhlC_Td-s2aK7rR5thDWR6fjmMfq8quSMaSCt9LT6V_1IIrPswS98U6bki0CQR0IhSOj3fQRoCdWR/s640/2018-08-15_16-32-45.jpg" width="640" /></a></div>
<br />
<span style="color: #cc0000;"><b>下載後的壓縮檔內哩哩叩叩</b></span><b style="color: #cc0000;">,將檔案解壓縮備用</b><b style="color: #cc0000;">,重點檔案的韌體檔只有四個(root、user、defaulr、blank):</b><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZ32-YOkqTaVr4RD7wHcgCV-_PU97baCexJpJF-SDKZS0rrOFhdbXt11uIPIf_HGKq3I3Naczauv1leYlYT8LhzzwcXRnJabyxuKvtt_FT2fO0dC6wonk7EcL_5ihjcIQhObNiOjMvI8Et/s1600/2018-08-15_17-05-32.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="354" data-original-width="591" height="191" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZ32-YOkqTaVr4RD7wHcgCV-_PU97baCexJpJF-SDKZS0rrOFhdbXt11uIPIf_HGKq3I3Naczauv1leYlYT8LhzzwcXRnJabyxuKvtt_FT2fO0dC6wonk7EcL_5ihjcIQhObNiOjMvI8Et/s320/2018-08-15_17-05-32.jpg" width="320" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMgIx4RuhZwr-rG7kOzroyUxtTeSG-LA6fDe0oPlaYzpn1IwhYKZHjhHCdKtSb4qpLXNKVqCOfTwVJj9QC7E_Gf6WxC7sMKrrXNvBhcmTVpKZ1qlhpKaSZQ2SfsL4vjpXyltyh_XEYD2TP/s1600/2018-08-15_17-05-45.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="354" data-original-width="591" height="191" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMgIx4RuhZwr-rG7kOzroyUxtTeSG-LA6fDe0oPlaYzpn1IwhYKZHjhHCdKtSb4qpLXNKVqCOfTwVJj9QC7E_Gf6WxC7sMKrrXNvBhcmTVpKZ1qlhpKaSZQ2SfsL4vjpXyltyh_XEYD2TP/s320/2018-08-15_17-05-45.jpg" width="320" /></a></div>
<br />
2. 燒錄的軟體很多,本實作使用[ ESP8266一键烧录工具 V0.9.5.2 ],英文原版下載點: <a href="https://github.com/nodemcu/nodemcu-flasher/tree/master/Win32/Release" target="_blank">32bit</a> 、<a href="https://github.com/nodemcu/nodemcu-flasher/tree/master/Win64/Release" target="_blank">64bit</a> 。中英文都可以啦!重點在指定燒錄那些檔案(*.bin)。<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihNQiWw69sfOOyv18oWBrwCjGSs0Uh1Bn7cbVZVCkceeyvpZQ8qIBaHSIkcqDvWpTAoT68n4MwIwqXUygAa__O3bZFGFR9pr_ivoc4sOIrMUxoxuBlLUkQVJ-CjXZ7FZ6wkYqj7toQGCos/s1600/2018-08-15_17-55-36.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="353" data-original-width="572" height="197" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihNQiWw69sfOOyv18oWBrwCjGSs0Uh1Bn7cbVZVCkceeyvpZQ8qIBaHSIkcqDvWpTAoT68n4MwIwqXUygAa__O3bZFGFR9pr_ivoc4sOIrMUxoxuBlLUkQVJ-CjXZ7FZ6wkYqj7toQGCos/s320/2018-08-15_17-55-36.jpg" width="320" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg39UtrsqJStQLGVcjwGESwPGeD4Y_kP0bCAA7GmuE4rXHVgk3R1ybbaYfyqZckQXZtr4wbn7QA2oyehvqQU0goT80VcoPoRbelkc0on1Mlpiygsqzqv766gadfjsW3CU-kXxxtaQVURbIo/s1600/2018-08-15_17-55-48.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="352" data-original-width="572" height="196" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg39UtrsqJStQLGVcjwGESwPGeD4Y_kP0bCAA7GmuE4rXHVgk3R1ybbaYfyqZckQXZtr4wbn7QA2oyehvqQU0goT80VcoPoRbelkc0on1Mlpiygsqzqv766gadfjsW3CU-kXxxtaQVURbIo/s320/2018-08-15_17-55-48.jpg" width="320" /></a></div>
<br />
本實作使用Realterm序列埠通訊軟體與ESP-01(ESP8266)通訊驗證原始版本。Realterm的操作請參考這篇:ESP8266 WiFi 模組(ESP-01)序列埠通訊軟體AT指令測試 。<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKGKxY-ySXHUGHL9KhlqAAEo-mDdakWvWaRW1RJrQLj7hRL3A7LjfTDpmwkSrSheUvYObI-4Lp078lLKWjczgTwLbPeX8i3nCBlNgDGNSvWkng1rgmVY7FN7OPdroPTyV2rgfIwBhDF03-/s1600/2018-08-14_21-10-57.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="441" data-original-width="688" height="410" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKGKxY-ySXHUGHL9KhlqAAEo-mDdakWvWaRW1RJrQLj7hRL3A7LjfTDpmwkSrSheUvYObI-4Lp078lLKWjczgTwLbPeX8i3nCBlNgDGNSvWkng1rgmVY7FN7OPdroPTyV2rgfIwBhDF03-/s640/2018-08-14_21-10-57.jpg" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<b><span style="color: #674ea7; font-size: large;">燒錄開始:</span></b><br />
1. 將FT232RL插上電腦,但<span style="color: #cc0000;"><b>不要按下電源模組的開關</b></span>。<br />
2. 開啟一鍵燒錄軟體,程式 <span style="color: #b45f06;"><b>目標串口(COM Port)</b></span> 欄位自動選定步驟1的 FT232RL 埠號碼。<br />
3. 切換到<span style="color: #e69138;"><b>配置(Config)</b></span>分頁,分別指定重點韌體檔(root、user、defaulr、blank)共四個:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixW306Lt74MIY7PkopLKHdIfrWhSaAssCUrm-kW8uOlTKCP-7psRtY1SwT3JjWgomZpZqKUc-ksN6sJj2frKapOQQxUqcPGXk1NuqcS14D9BXvhf8cYEvQmQD0huL6VlnJc-yhnnh_SdmA/s1600/2018-08-15_16-33-24.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="376" data-original-width="825" height="290" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixW306Lt74MIY7PkopLKHdIfrWhSaAssCUrm-kW8uOlTKCP-7psRtY1SwT3JjWgomZpZqKUc-ksN6sJj2frKapOQQxUqcPGXk1NuqcS14D9BXvhf8cYEvQmQD0huL6VlnJc-yhnnh_SdmA/s640/2018-08-15_16-33-24.jpg" width="640" /></a></div>
<br />
4. 切換回<span style="color: #e69138;"><b>操作(Operation)</b></span>頁面按下 一鍵燒寫(Flash) 按鈕。<br />
5. <span style="color: #cc0000;"><b>按下電源模組的開關啟動WiFi模組,開始燒錄指定的更新韌體檔案。</b></span><br />
<div class="separator" style="clear: both; text-align: center;">
</div>
6. 切換到 <b><span style="color: #e69138;">日志(Log) </span></b>頁面可查看詳細的燒錄過程資訊。<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdv9yI-lHeIY6NLm6CRAeng6wNT9SqV0-trOC-zMEOj8tQm57pm_-dyqbUBSEktnnsf2jp0OmWiYl0KR-ESQOfP2NoIg4P8xtlOniTTP9h_ZW2RCM_WQpZ4kEaT6nxHdpl9Vrb-aHIUI7N/s1600/2018-08-15_18-12-15.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="352" data-original-width="572" height="196" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdv9yI-lHeIY6NLm6CRAeng6wNT9SqV0-trOC-zMEOj8tQm57pm_-dyqbUBSEktnnsf2jp0OmWiYl0KR-ESQOfP2NoIg4P8xtlOniTTP9h_ZW2RCM_WQpZ4kEaT6nxHdpl9Vrb-aHIUI7N/s320/2018-08-15_18-12-15.jpg" width="320" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiFQcwgrTCxI8bwrIT_rFnQCFLlTgJRnK_Mb8v31DD6i9o9IznywZZO-NuIHcAPDXWJTHb1gS-SYGiSemQEiSKA0VKsD4e_oCIAyyfhhracy8QmdD-HhRk1rM32PRHSco1uCJBSJWHfQiz/s1600/2018-08-15_18-12-28.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="352" data-original-width="572" height="196" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiFQcwgrTCxI8bwrIT_rFnQCFLlTgJRnK_Mb8v31DD6i9o9IznywZZO-NuIHcAPDXWJTHb1gS-SYGiSemQEiSKA0VKsD4e_oCIAyyfhhracy8QmdD-HhRk1rM32PRHSco1uCJBSJWHfQiz/s320/2018-08-15_18-12-28.jpg" width="320" /></a></div>
7. 完成燒錄之後,將電源模組的電源關閉,接著<span style="color: red;">拔掉 GPIO0 的接地線(移除燒錄模式,恢復正常操作模式)</span>。<br />
8. 將電源模組的電源重新開啟就可以開始使用燒錄後的新韌體。<br />
<br />
使用Realterm序列埠通訊軟體與ESP-01(ESP8266)通訊驗證燒錄後的新韌體版本。Realterm的操作請參考這篇:<a href="http://little-chih.blogspot.com/2018/08/ardunioesp8266-wifi-esp-01at.html" target="_blank">ESP8266 WiFi 模組(ESP-01)序列埠通訊軟體AT指令測試</a> 。<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXDx2NpYAy3Xu5Dt8C87YeA5NDHgo1eKYMXa1vrLdHLbNl_bCA9qc519ZE02Lz2Oqmif1sKqlVyRdJbgtFfTl-tz2BmRf8DGpsuO_JK-8dMAQ2_HATztOHGPQtLwBiF-jlWz_73lqAR-_n/s1600/2018-08-15_16-35-01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="441" data-original-width="688" height="410" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXDx2NpYAy3Xu5Dt8C87YeA5NDHgo1eKYMXa1vrLdHLbNl_bCA9qc519ZE02Lz2Oqmif1sKqlVyRdJbgtFfTl-tz2BmRf8DGpsuO_JK-8dMAQ2_HATztOHGPQtLwBiF-jlWz_73lqAR-_n/s640/2018-08-15_16-35-01.jpg" width="640" /></a></div>
<br />傻花哥http://www.blogger.com/profile/06001039053106717322noreply@blogger.com