2021年7月1日

在OSEP中使用NodeMCU ESP8266

在OSEP中使用NodeMCU ESP8266

0.認識NodeMCU

D0==>16
D1==>05
D2==>04
D3==>00
D4==>02
D5==>14
D6==>12
D7==>13
D8==>15
D9==>03
D10==>01

GPIO是什麼:https://zh.wikipedia.org/wiki/GPIO

類比腳位是A0

esp8266介紹:https://pcbdesign88.wordpress.com/2018/04/11/nodemcu%E9%96%8B%E7%99%BC%E6%9D%BFesp8266-wifi%E6%A8%A1%E7%B5%84%E4%BB%8B%E7%B4%B9/

 1.安裝osep

安裝osep 

2.arduino ide燒錄韌體(含wifi ssid和密碼)

 arduino ide燒錄設定:https://wdpsestea.blogspot.com/2021/06/arduino-ide-nodemcu.html

注意:NodeMCU ESP8266只支援wifi 2.4G無線連接,請不要設定5G AP的連線

3.執行osep s3-extend-tool連上s3e

 

4.執行線上或是離線版的osep_scrathc3,開啟擴充套件esp8266

osep線上版:https://ys-fang.github.io/OSEP/app/


 

5.數位角位輸出亮led燈

 

使用D2(GPIO12)來亮啟LED燈。


6.讀取數位角位信號



7.做類比數位輸出pwm-呼吸燈

8.讀取類比腳位信號

NodeMCU只有一個類比腳位A0


9.接伺服馬達

伺服馬達是高用電的設備,現在常見的伺服馬達,建議要接5V的外接電源,電流量要300MA,單一NodeMCU的電量不足以支持伺服馬達。圖使用腳位為D2(GPIO4)

10.超音波測距HC-SR04

圖使Echo用D1(GPIO5)和Trig用D2(GPIO4)

其他:

 fritzing:

https://fritzing.org/download/

 https://github.com/fritzing

https://www.npackd.org/p/fritzing/0.9.6


 

教學播放清單:

https://youtube.com/playlist?list=PL52qbzg6rwU65672-2hjKSuNagPTB_0cX

osep_scratch3線上版:https://sites.google.com/view/osep-scratch3/%E7%B7%9A%E4%B8%8A%E8%B3%87%E6%BA%90


bpi-m2開發板

開端

bpi系列是和rpi相似産品,bpi産品個人喜歡的是它基於開源,很多源始碼可以在github上找到。開發團隊MIT。

bpi-m2系列官網:https://bananapi.gitbook.io/bpi-m2/zh

開源碼:https://bananapi.gitbook.io/bpi-m2/zh/bpi-m2sourcecodeongithub

bpi-m2是一塊開多年前的開發板,基於arm 1GB ram


 

http://www.banana-pi.com/eacp_view.asp?id=71

正面與背面

bpi設備購買:http://twarm.com/commerce/advanced_search_result.php?keywords=bpi&x=0&y=0

https://www.ruten.com.tw/find/?q=%E9%A6%99%E8%95%89%E6%B4%BE

ipex天線:https://www.ruten.com.tw/item/show?21952125637722

參考資料:https://www.ruten.com.tw/item/show?22126440877317

系統建立

 基於研習也特別調整了linux系統。個人建立的img下載:https://drive.google.com/drive/folders/0BxUPrupILzOESTFwNGRvNW02Tlk?resourcekey=0-6ojFilWCaB7nupTAPg9k_g&usp=sharing

 

linux系統建立方法:

1.準備1張16GB SD卡

2.使用bpi-copy指令還原到SD卡。sudo bpi-copy 來源 目的,bpi-copy github:https://github.com/BPI-SINOVOIP/bpi-tools

例如: sudo bpi-copy bpi-m2-16GBSD-2021-06-23.zip /dev/sdb

3.如果是在win下,下載zip檔,解壓縮後會是一個-號,請更名為xxx.img,這時這個.img檔案大小會高達近16GB(SD卡的容量),使用win32diskimager來寫入DS卡。win32diskimager下載:https://sourceforge.net/projects/win32diskimager/files/Archive/

 使用方法十分容易,教學網址:https://chakra-zh.blogspot.com/2012/04/windows-win32diskimager-live-usb.html

 系統密碼:bananapi

 

bpi-m2也可以安裝android系統,在雲端硬碟中有android的檔案,由於android6系統為32位元,不在此次研習範圍。請自行參考。

http://www.banana-pi.org/downloads.html

 

參考應用

bpi-m2它是1GB記憶體和arm4核 32位元cpu,基本上等級不高,加上使用SD卡,它的讀寫效能也比不上pc硬碟的速度,所以它的效能不會非常好,多數軟體是可以執行,有些有lag現象。

YT

定時播放:https://wdpsestea.blogspot.com/2016/07/scheduled-tasks.html

教育軟體:childsplay

scratch程式教育

開放硬體:arduino

GPIO:https://wdpsestea.blogspot.com/2016/05/bpi-m3-gpio.html 

 

 如果想把x改在右上角做法如下圖:



維護者:

軟體更新

sudo apt-get update

sudo apt-get dist-upgrade

改個人密碼

sudopasswd pi

切換身份

sudo  -s

檢查修復磁區

sudo fsck -y /dev/sdx1

磁碟分割

gparted

ssh遠端端連線

sudo apt-get update

sudo apt-get install openssh-server

研習時看到的紅色錯誤訊息,為/var/run/沒有sshd資料夾,請手動建立資料夾。

sudo mkdir /var/run/sshd

但是/var/run這個地方,每次開關機會全清空。所以解決方案是在開機時先把/var/run/sshd建起來。

可以放在/etc/rc.local的exit 0前加入mkdir /var/run/sshd

無線網路的問題會在網路管理程式network-manager出問題,ssh的問題解掉後,可以執行sudo /etc/init.d/network-manager restart來解決。但又發現問題,無線可以連線了,但dns被改成127.0.1.1。我的做法是cd /etc/NetworkManager/dnsmasq.d,在head中加入nameserver 8.8.8.8,我做了一個啟動按鈕在桌面-重設網路來執行這一連串問題。

如果覺得動作太多,可以直接下載映像檔(20210713版本),直接用bpi-copy或是clonezilla直接還原到16GB SD 卡上。這可以解掉這些腦人問題。教學錄影檔也都錄完上YT了。

備份

bpi-copy

clonezilla 

dd

 sudo apt-get install openssh-server

最高權限密碼

bananapi


vnc 遠端桌面

anydesk

https://anydesk.com/en/downloads/linux

 下載deb,系統會告訴你幾行指令,請先sudo -s後執行

wget -qO - https://keys.anydesk.com/repos/DEB-GPG-KEY | apt-key add -
echo "deb http://deb.anydesk.com/ all main" > /etc/apt/sources.list.d/anydesk-stable.list
apt update
apt install anydesk


sudo apt-get install vnc4server


教學影片:

播放清單:https://youtube.com/playlist?list=PL52qbzg6rwU4DSLgsYc4CphhSJbk3d3hh

https://youtube.com/playlist?list=PL52qbzg6rwU63cmBlPGUyshYolyI2sQOG

bpi wiki:

 bananapi wiki:https://en.wikipedia.org/wiki/Banana_Pi

android 系統製作:

下載img,使用PhoenixCard燒錄img至8GB SD 卡。

phoenixcard 下載:https://www.mediafire.com/file/gz6xhu849ahg68c/PhoenixCard_V3.1.0_20130618.zip/file

http://wiki.banana-pi.org/Install_Linux_%26_Android_images_on_Banana_pi_SBC


esp32吉哥上課

 程式下載連結:https://drive.google.com/drive/folders/1FizimTpWh6PhsD6qNA5MPQnHxEZ9vS5d

 

1.先解壓縮blocklyduino-3.0.312b-win64-ide.zip到c:\或d:\

 2.解壓縮Blockly開發板core函式.zip到1.的位置,覆蓋掉所有檔案

3.解壓縮BlocklyDuino_extension_liou_france_20210623.zip到1.的位置


確定com port,和燒錄板子esp32。

按筆(新建)積木就會有板子可以選,開始創作。

2021年6月23日

arduino ide nodemcu

 arduino ide中要找到nodemcu或是esp8266是有困難的。

1.在arduino ide中的檔案->偏號設定裡,額外的板子管理員網址中輸入

http://arduino.esp8266.com/stable/package_esp8266com_index.json
 
2.工具->板子->板子管理員,輸入esp8266,把esp8266 by ESP8266 community安裝起來,才會找到NodeMCU的板子

 
3.工具->管理程式庫,把FirmataExpress、ultrasonic、Telemetrix4ESP8266三個程式安裝起來
開啟範例Telemetrix4ESP8266,在第27行const char *ssid = "YOUR_SSID"改成你連線AP的SSID
第28行 const char *password = "YOUR_PASSWORD"改成連線的密碼。
注意:NodeMCU ESP8266只支援wifi 2.4G無線連接,請不要設定5G AP的連線  
板子選NodeMCU1.0,port選擇板子的com port,這樣就可以把NodeMCU的韌體燒錄進去
開啟arduino serial monitor 就可以看到NodeMCU連上AP的密碼了。




注意:NodeMCU ESP8266只支援wifi 2.4G無線連接,請不要設定5G AP的連線
 
 
 
 
 
 
 

2021年6月2日

打包deb

 看到一篇不錯的文章,記錄一下

在Ubuntu下以dpkg打包套件,並安裝回來

 

https://hachibye.medium.com/%E5%9C%A8ubuntu%E4%B8%8B%E4%BB%A5dpkg%E6%89%93%E5%8C%85%E5%A5%97%E4%BB%B6-5f55b0dec45b

 

2021年5月31日

再生圖龍

 有一天發現clonezilla可以用apt的方式安裝起來,讓我産生做圖形界面的動力。剛開始使用zenity刻,雖然可以,但總是不是很理想。後來發現gparted.iso中不但有圖形界面,iso檔也不大,又支援python3.9,於是花了一點時間調校安裝套件,寫python程式,再重新打包,産出第一版的gpartedclonezilla。下載點:https://drive.google.com/drive/folders/1ZdVZQZt75gTMxi7A836uddk49GTrvSre?usp=sharing

建議下載gpcl1100531以後的版本。

使用方式:

uefi的電腦(現在多數電腦為uefi開機)

找一支4G以上隨身碟,格式化成fat32,把iso檔使用7zip解壓縮到隨身碟中。

mbr的電腦(較老舊電腦通常使用mbr方式開機)

除了要做上述動作外,還到補做開機程式,在utils資料夾中有各系統需要的開機程式安裝。例如win10 64位元電腦,就到utils\win64中用最高權限執行makeboot64.bat,這樣這支隨身碟就可以開機了。

開機後會看到選單,使用預設選單(to ram)進入。

 

再來按下enter進入圖形界面(這裡可以選擇文字界面,給專業的人士使用的)

進入系統,預設會開啟gparted,如果不需使用,按右上角x,關閉gparted。


 

 如果你要使用專業的再生龍系統請按clonezilla,如果要使用再生圖龍請按clonezilla-e。 

clonezilla再生龍的使用很多人都熟悉在此不多述,很好用強大的備份還原系統。

clonezilla-e再生圖龍,是簡化版的再生龍,差別在它是用python3做圖形界面,讓初學者會更順利熟悉些。

最左邊是資料儲存區/home/gpartimag位置設定,可以選擇網路nfs samba ssh 分割區 等方式做為儲存位置,如果你是資訊組長,強列建議你把儲存區放在網路上,這樣可以在學校任何一台電腦進行網路還原。

中間是映像檔位列表,中間下面為映像檔中的分割區列表。

右邊是你想要的功能,上面是還原選項,下面是備份為映像檔按鈕


 

基本上是來源選擇和目的選擇,即可完成工作。例如要備份硬碟為映像檔,在左邊來源為硬碟中選擇硬碟,再到右邊確定映像檔名(預設使用日期+時為檔名),按下備份硬碟。

要還原時在來源選擇映像檔,右邊選擇還原硬碟或分割區,再按下還原按鈕。




scratch3增加擴充積木

 scratch3增加擴充積木

下載scratch3原始碼

網址:https://github.com/LLK/scratch-gui

 linux 下可以用git下載,win可以下載zip後解壓縮

git clone https://github.com/LLK/scratch-gui.git

註:linux下如果缺少git套件請自行安裝(sudo apt install git)

打開下載或解壓縮資料夾


安裝必要軟體 nodejs git nopad++

windows install npm 、git 和 nopad++

下載https://nodejs.org/en/download/
安裝64 bit msi
下載:http://git-scm.com/download/win
安裝git 
在win下編輯器個人使用nopad++
https://notepad-plus-plus.org/downloads/
安裝visualstudio code 
https://code.visualstudio.com/
 

安裝scratch gui

git clone https://github.com/LLK/scratch-gui.git
cd scratch-gui
npm install
npm install也可以一個指令解決npm install https://github.com/LLK/scratch-gui.git

 

啟動scratch3-gui

在scratch-gui資料夾下執行
npm start
在瀏覽器的網址列中輸入http://0.0.0.0:8601/就可以看到畫面
如果沒有成功可以嘗試輸入http://127.0.0.1:8601/ 
增加擴充積木
擴充積木的位置在scratch-gui目錄下的node_modules/scratch-vm資料夾中
原始檔要放在src/extensions資料夾中

試做範例

1.copy scratch3_microbit 成為scratch3_mybit

 
2.編輯node_modules/scratch-vm/src/extension-support/extension-manager.js
找到gdxfor: () => require('../extensions/scratch3_gdx_for')
在行尾加上,和mybit: () => require('../extensions/scratch3_mybit')
3.編輯src/lib/libraries/extensions/index.jsx
複製
import microbitIconURL from './microbit/microbit.png';
import microbitInsetIconURL from './microbit/microbit-small.svg';
import microbitConnectionIconURL from './microbit/microbit-illustration.svg';
import microbitConnectionSmallIconURL from './microbit/microbit-small.svg';
修改為
import mybitIconURL from './mybit/microbit.png';
import mybitInsetIconURL from './mybit/microbit-small.svg';
import mybitConnectionIconURL from './mybit/microbit-illustration.svg';
import mybitConnectionSmallIconURL from './mybit/microbit-small.svg'; 

往下找,找到
ame: 'micro:bit',
extensionId: 'microbit',
把整段大括號複製起來,在下面貼上並修改
4.複製microbit資料夾為mybit資料夾
5.回到瀏覽器中輸入網址http://0.0.0.0:8601,再按左下角的+號,就可以看到修改完的擴充積木
 

 

打包成離線版

 執行指令npm run build
會多build dist兩個資料夾,build資夾中為打包好的檔案,使用瀏覽器開啟index.html。
 

打包成應用程式

使用的是新北市育林國中林士立老師的打包方法
github下載:https://github.com/t301000/my-scratch3-offline
打包方式詳如github說明檔
1.npm install 安裝套件
2.把scratch-gui下的build資料夾複製到my-scratch3-offline中並改名為app
3.npm run package:win32 打包成exe應用程式
這時會有一個scratch3-win32-x64資料夾産生,裡面會有一個scratch3.exe的應用程式。
 
 如果要打包mac版,需要修改package.json
加入
"compress:mac": "rimraf osep_scratch3-darwin-x64-*.7z && 7z a scratch3-darwin-x64-`date '+%Y%m%d%H%M%S'`.7z osep_scratch3-darwin-x64"
打包指令
npm run package:mac
會産生一個scratch3-darwin-x64的資料夾
 
 
extensions內容探究
 const 是定義一些事情
class name是物件
最後一行要
module.exports = name;
積木前的圖示可以用blockiconURI來指定
const blockIconURI = 'data:image
積木是使用{}包起來描述
積木內容在
blocks: []
 
以下列範例示範
                {
                    opcode: 'displayText',
                    text: formatMessage({
                        id: 'microbit.displayText',
                        default: 'display text [TEXT]',
                        description: 'display text on the micro:bit display'
                    }),
                    blockType: BlockType.COMMAND,
                    arguments: {
                        TEXT: {
                            type: ArgumentType.STRING,
                            defaultValue: formatMessage({
                                id: 'microbit.defaultTextToDisplay',
                                default: 'Hello!',
                                description: `default text to display.
                                IMPORTANT - the micro:bit only supports letters a-z, A-Z.
                                Please substitute a default word in your language
                                that can be written with those characters,
                                substitute non-accented characters or leave it as "Hello!".
                                Check the micro:bit site documentation for details`
                            })
                        }
                    }
                },
 
opcode:是每個積木執行時要執行的副程式,後面的文字都對應一個function
blockType: BlockType.COMMAND,是積木型態,可以參考
https://medium.com/@hiroyuki.osaki/scratch-3-block-types-you-can-develop-and-samples-191b0d769b91
text:是描述內容,裡面用formatMessage()來表述時可以做多國語言id default和description,當然可以不寫,直接接一串文字 
menus:是選單,每個選單也都是用陣列表示
touchPins: {
acceptReporters: true,
items: ['0', '1', '2']
 
教學影片清單
osep github:https://github.com/ys-fang/OSEP