發表文章

天氣光環時鐘+農曆提醒(NODE-RED)專題作品-micropython

圖片
天氣光環時鐘+農曆提醒(node-red)專題作品 前言: 前陣子參加益師傅發起的micropython,讓我再次提起興趣,因為擔任了技術支援的角色 ,所以送我一套慧手科技的套件,由於我個人不會白白拿了東西放著,所以也讓自己動 起來參予這次的實作,但我個人不較不喜歡用搬運和模仿程式碼,所以加了一點自己的 創意在這套件裡,所以在完成階段性的作品,趁這時來紀錄一下筆記。 材料: 慧手科技esp32集成板 DHT11 可調電阻 adafriut_neopixels LED燈環 連接線數條  接線圖: 功能演示 $末節附上程式碼下載 1.按鍵(1)近一小時天氣概況,溫濕度 2.按鍵(2)調控燈環,node-red調控燈環  3.按鍵(3)顯示logo 4.農曆提醒-Line, 燈環同步 5.未實現:每日補充維它命並配發一顆維他命 天氣光環時鐘+農曆提醒(NODE-RED)專題作品-micropython.zip 程式碼區塊解析: 即時天氣- openweather API 這個得去open-weather公開網站申請api 以下的程式碼是抓取天氣的icon # 即時天氣icons data = requests . get ( 'https://api.openweathermap.org/data/2.5/weather?q=Taipei,TW&lang=zh_tw&units=metric&appid=f7922c4d99e223e7380d80a7f3db6b64' ) jsondatas = ujson . loads ( data . text ) print ( jsondatas [ 'weather' ][ 0 ][ 'icon' ]) def checkIcon ( n ):     path = "icons/" + n     try :         os . stat ( path )         return path   ...

可變電阻+OLED_0.96進度條顯示-micropython

圖片
 可變電阻+OLED_0.96進度條顯示-micropython 前言:     記得在Arduino的應用裡,ssd1306的程式庫裡有進度條的函式,很久以前一直有個 疑惑,為什麼mpython沒有,今天再次回顧重溫,找了些資料,發現其實只要知道公式 要做成進度條也是很容易。 材料: 可變電阻 OLED0.96 ESP32(燒錄micropython) 接線: ssd1306.py 先匯入esp32 程式碼: from machine import Pin, SoftI2C, ADC ,PWM import ssd1306 import time p = ADC(Pin( 34 )) p. atten( ADC . ATTN_11DB ) ADC. width( ADC . WIDTH_10BIT ) i2c = SoftI2C( scl = Pin( 22 ), sda = Pin( 21 )) display = ssd1306. SSD1306_I2C( 128 , 64 , i2c) #類似於c裡面的map()函式 def scale_value ( value , in_min , in_max , out_min , out_max ):   scaled_value = (value - in_min) * (out_max - out_min) / (in_max - in_min) + out_min   return scaled_value while True :     pwmVal = p. read()     print(pwmVal)     display. text( "vaule: " + str (pwmVal), 10 , 0 )     display. show()     display. rect( 10 , 30 , 90 , 20 , 1 )       # draw a rectangle outline 10,10 to 117,53, colour=1     display. ...

Node-mcu(ESP32-S)燒錄&測試-micropython

圖片
  Node-mcu(ESP32-S)燒錄&測試 前言: 作圖要花好多時間,所以用錄影來替代 材料: 慧手科技研發套件擴展板 Node-mcu開發板 安裝CH340&CP210X序列埠驅動 選擇自己對應的電腦系統安裝 CH341 CP210X 安裝Thonny IDE 燒錄軔體&測試編輯器 先下載所要燒錄的軔體 https://micropython.org/download/esp32/ 依照使用Thonny IDE按視頻步驟燒錄 測試: from machine import Pin, SoftI2C import time led=Pin(2, Pin.OUT) while True:     led.on()     time.sleep(1)     led.off()     time.sleep(1)   *出現[errno 116]的錯誤訊息解方 原因: Memory Addressing Mode: 顯示RAM不支持水平尋址模式(Horizontal Addressing Mode),只支持頁面尋址模式(Page Addressing Mode) 更新顯示RAM時, 列起始地址(Column Start Address)有2個點的偏移量,即列起始地址(Column Start Address)為 0x02,每更新一個頁面之前要做正確的列起始地址設定,即發送0x02和0x10指令。 初始化部分,设置为页面寻址模式(Page Addressing Mode) , 即指令 0x20, 0x02 ssd1306.py文件的第 42 行             SET_MEM_ADDR, 0x00, # horizontal 更改為:             SET_MEM_ADDR, 0x02,    # Page Addressing Mode 傳輸顯示內容到顯示RAM的部分,每傳輸一頁(Page)數據之前,設定列起始地址(Column Start Address),同時設...

手勢識別模組-micropython

圖片
 手勢識別模組-micropython 型號:PAJ762U2

DHT11+OLED+IFTTT+LINE-notity-micropython

圖片
  DHT11+OLED+LINE-notity-micropython 前言 這次要來實驗菜市場傳感器😂-DHT11在OLED上顯示並且在LINE上通知 溫濕度。 接線 關於 DHT11/12 往 這裡 走         OLED 往 這裡 走 IFTTT申請和設定 https://ifttt.com 程式碼 import dht , ssd1306 , urequests , network , gc from machine import Pin , SoftI2C from time import sleep #wifi連線 def wifiConn ():     ssid = "---"     password = "-----"     wifi = network . WLAN ( network . STA_IF )     wifi . active ( True )     wifi . connect ( ssid , password )     while wifi . isconnected () == False :         pass     print ( "connect successful!" )     print ( "IP: {} " . format ( wifi . ifconfig ())) #偵測溫濕度 def detectDHT ():     global d11     d11 = dht . DHT11 ( Pin ( 5 ))     d11 . measure ()     temp = d11 . temperature ()     hum = d11 . humidity ()     return temp , hum #OLED顯示 def ...

可調燈-PWM_LED-MQTT-micropython

圖片
  可調燈-PWM_LED-MQTT- -micropython 這個其實是比較簡單的利用MQTT作法,所以就直接進入正題 材料 樹莓派  x1 ESP32 x 1 杜邦線 x少許 LED x 1 10k歐姆雷阻 x 1

MPU-6050&webServer網頁顯示-micropython

圖片
 MPU-6050&webServer網頁顯示-micropython 實驗目標: 此次實驗要把實時量測的加速度計和陀螺儀xyz值顯示於網頁上。 MPU-6050簡介 MPU-6050 IMU (慣性測量單元)是一個 3 軸加速度計和 3 軸陀螺儀傳感器。加速度計測量重力加速度,陀螺儀測量旋轉速度。此外,該模塊還測量溫度。該傳感器非常適合確定移動物體的方向。 MPU-6050 是一個帶有 3 軸加速度計和 3 軸陀螺儀的模組。 陀 螺儀- 用於測量旋轉速度 (rad/s),這是角度位置沿 X、Y 和 Z 軸(滾動、俯仰和偏航)隨時間的變化。這使我們能夠確定物體的方向。 加 速度計- 測量加速度它可以感應重力 (9.8m/s2) 等靜態力或振動或運動等動態力。  MPU-6050  測量 X、Y 和 Z 軸上的加速度。理想情況下,在靜態物體中,Z 軸上的加速度等於重力,並且在 X 和 Y 軸上應為零。 加 速度計- 可以使用三角法計算橫滾角和俯仰角。但無法計算偏航。 接線 須匯入的程式庫 將以下的py檔上傳到esp32板上 mpu6050.py import   machine class   accel ():      def   __init__ ( self ,  i2c ,  addr = 0x 68 ):          self . iic  =  i2c          self . addr  =  addr          self . iic .start()          self . iic .writeto( self . addr ,  bytearray ([ 107 ,  0 ]))    ...