2020年1月28日

qt5程式設計師

安裝
sudo apt-get install qt5-default
sudo apt-get install qttools5-dev-tools
sudo pip3 install pyqt5
 
存檔為.ui
ui轉py
pyuic5 UI.ui -o UI.py
pyuic5 MyUI.ui > myui.py 

執行秀UI,編輯另一個py檔內容如下
import sys
from PyQt5.QtWidgets import QDialog, QApplication
from myui import Ui_Form #myui 是你的.py檔案名字

class AppWindow(QDialog):
    def __init__(self):
         super().__init__()
    self.ui = Ui_Dialog()  #Ui_Dialog是myui.py裡面的class名稱
    self.ui.setupUi(self)
    self.show()

app = QApplication(sys.argv)
w = AppWindow()
w.show()
sys.exit(app.exec_())
 

2020年1月17日

bpi-bit離線版製作記錄

參考網址:https://github.com/junhuanchen/scratch3-eim-mpfshell

建立scratch3目錄,並進入目錄中
mkdir scratch3
cd scratch3
sudo npm  add uglifyjs-webpack-plugin
sudo npm install -g webpack
sudo npm install -g webpack-dev-server

下載github中的scratch-gui
git clone https://github.com/LLK/scratch-gui
cd scratch-gui
npm install
使用瀏覽器輸入http://0.0.0.0:8601/可以看到scratch3官方編輯器了

bpi-bit擴充積木,需要兩個github專案,如下:
https://github.com/junhuanchen/scratch3-eim-mpfshell
https://github.com/CodeLabClub/scratch3_eim

回到scratch3目錄下
cd scratch3
git clone https://github.com/junhuanchen/scratch3-eim-mpfshell.git
git clone https://github.com/CodeLabClub/scratch3_eim.git
把複製專案vm到目錄中
cp -r scratch3_eim scratch-gui/node_modules/scratch-vm/src/extensions/
cp -r scratch3-eim-mpfshell/scratch3_mpfshell scratch-gui/node_modules/scratch-vm/src/extensions/
 cp -r scratch3-eim-mpfshell/scratch3_bpibit scratch-gui/node_modules/scratch-vm/src/extensions/
編輯index.jsx
vim scratch-gui/src/lib/libraries/extensions/index.jsx
在import 下一行,加入下列內容
//bpibit
import mpfshellImage from './mpfshell/mpfshell.png';
import WebduinoImage from './bpibit/webduino.png';

在export default [中最後面加入(注意有個",")
    ,
    {
        name: 'Mpfshell',
        extensionId: 'mpfshell',
        collaborator: 'JunhuanChen',
        iconURL: mpfshellImage,
        description: (
            <FormattedMessage
                defaultMessage="Mpfshell for Scratch3"
                description="Use mpfshell control micropython."
                id="gui.extension.Mpfshell.description"
            />
        ),
        featured: true
    },
    {
        name: 'bpi:bit',
        extensionId: 'bpibit',
        collaborator: 'Bananapi',
        iconURL: WebduinoImage,
        description: (
            <FormattedMessage
                defaultMessage="bpi:bit for scratch3"
                description="bpibit"
                id="gui.extension.bpibit.description"
            />
        ),
        featured: true
    }

編輯extension-manager.js
vim scratch-gui-ok/node_modules/scratch-vm/src/extension-support/extension-manager.js
註解掉 //gdxfor: () => require('../extensions/scratch3_gdx_for'),

加入下列內容
,
//mpfshell: Scratch3MpfshellBlocks,
    eim: () => require('../extensions/scratch3_eim'),
    mpfshell: () => require('../extensions/scratch3_mpfshell'),
    bpibit: () => require('../extensions/scratch3_bpibit'),


把圖檔拷貝進入目錄(好像少了mpfshell.png,自己找一張吧)
mkdir scratch-gui/src/lib/libraries/extensions/bpibit
mkdir scratch-gui/src/lib/libraries/extensions/mpfshell
 cp scratch3-eim-mpfshell/webduino.png scratch-gui/src/lib/libraries/extensions/bpibit/
cp scratch3-eim-mpfshell/mpfshell.png scratch-gui/src/lib/libraries/extensions/mpfshell/
重新執行npm start
 就可以看到bpi-bit的擴充積木了,

至於連線程式請參考https://adapter.codelab.club/user_guide/install/
 說明,燒入韌體和執行連線程式.

中文化

vim scratch-gui/node_modules/scratch-l10n/locales/editor-msgs.js
 加入下列內容
 "bpibit.isconnected": "是否連線",
    "bpibit.connect": "連線",
    "bpibit.close": "關閉",

vim scratch-gui/node_modules/scratch-vm/src/extensions/scratch3_bpibit/index.js


在bpibit部分中在
blocks: [
                {
                    opcode: 'isconnected',
                    blockType: BlockType.REPORTER,
下加入下列內容
text: formatMessage({
                        id: 'bpibit.isconnected',
                    }),

再到網頁中就可以看到中文化完整的內容


2019年12月19日

chromebook install s3-extend

記錄一下
維護者模式,學生用不到可以省略,從1.開始即可
0.把chromebook進入維護者模式,參考網址:
https://tw.begin-it.com/5606-how-to-enable-developer-mode-on-your-chromebook
chromebook關機,按著esc鍵+重新整理鍵不放,再按 下電源鍵開機(注意不是上鎖鍵),會看到下圖
 按下Ctrl+D會看到下圖
 按下Enter
 按下Ctrl+D
 再等待一段時間,會重開機,開機時會看到警告畫面,按下Ctrl+D,加速啟動。
再來就和平常開機相同。

 做好後可以按下ctrl+alt+t開啟終端機模式
使用sudo -s(免密碼)成為 root身份
1.登入chromebook,在設定中更新作業系統至最新版本。
2.開啟linux beta



3.設定共用資料夾,把Downloads和linux beta共用,啟動檔案總管,在下載處按右鍵/share linux
4.啟動chrome,網址列輸入:chrome://flags
搜尋"usb",把Crostini Usb Allow Unsupported設成enable,重啟chrome
重啟chrome後,把arduino uno插入USB孔,右下角會跳出設備,選擇連線至linux。

5.下載安裝s3-extend-install.sh:https://drive.google.com/open?id=10J7IR32ceIPc3G1JJQNOn9m-se5qZEEi

在linux beta中執行下列指令
sudo apt-get update
sudo apt-get dist-upgrade
做完更新建議重啟chromebook,再進入linux beta

cd /mnt/chromeos/MyFiles/Downloads/
cp s3-extend-install.sh ~/
cd
sudo apt-get install -y xz-utils zenity
bash s3-extend-install.sh
6.安裝完成後執行s3a

7.開啟chrome ,連線至網站:https://mryslab.github.io/s3onegpio/


2019年11月21日

s3e安裝記事

參考網址:https://mryslab.github.io/s3-extend/
需求
python3.7

安裝
python3-pip xterm
sudo apt-get install python3-pip xterm
安裝s3-extend 
sudo pip3 install s3-extend 

燒入硬體
需要esptool
sudo pip3 install esptool
 
清除韌體
esptool.py --port /dev/ttyUSB0 erase_flash
 
下載韌體
http://micropython.org/download#esp8266
 
燒入韌體
esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash --flash_size=detect -fm dio 0 esp8266-20170108-v1.8.7.bin

安裝連線軟體
sudo apt install picocom
sudo pip3 install adafruit-ampy 
sudo pip3 install mpfshell
 
下載s3-extend(如果s3a已裝可免)
git clone https://github.com/MrYsLab/s3-extend.git 
cd s3-extend 
python3 setup.py
cd esp_8266_micropython
上傳main.py
ampy --port /dev/ttyUSB0 put main.py
ampy --port /dev/ttyUSB0 put esp_8266_min.py 
wifi連上AP
使用vim編輯boot.py
vim boot.py
插入
# This file is executed on every boot (including wake-boot from deepsleep)
#import esp
#esp.osdebug(None)
import uos, machine ,time ,network
#uos.dupterm(None, 1) # disable REPL on UART(0)
import gc
#import webrepl
#webrepl.start()
gc.collect()
sta_if = network.WLAN(network.STA_IF)
sta_if.active(True)
sta_if.connect('<essid>', '<password>')
while not sta_if.isconnected():
    time.sleep(1)
    pass
print('network config:', sta_if.ifconfig())
 
 
上傳boot.py
ampy --port /dev/ttyUSB0 put boot.py
連上esp8266看wifi IP並複製起來 
echo "Ctral+c再按Ctrl+D重啟(可以取得IP).Ctrl+A 再按 Ctrl+Q 離開";picocom -b 115200 /dev/ttyUSB0 
按下Ctrl+A再按Ctrl+Q離開。如果連線一段時間才執行指令,會看不到ip資料,可以按下reset鈕。
執行s3e
這時esp8266藍燈長亮
只要有重新啟動esp8266(插拔USB或是按下reset鈕),就要重新執行s3e 
開啟scratch3
https://mryslab.github.io/s3onegpio/

選擇擴充套件


執行積木,此時藍燈會熄滅,連線程式會顯示連線成功
 
亮起LED燈(LED接在D6),D6的腳位是12程式碼如下:
許惠美老師提供的資料圖
 
 
   

2019年11月17日

python arduino 記事

https://pypi.org/project/pyFirmata/
韌體要燒入範例檔standfirmata

install pyfirmata

git clone https://github.com/tino/pyFirmata
cd pyFirmata
sudo python3 setup.py install
 
sudo pip3 install pyfirmata


python3
//載入
from pyfirmata import Arduino, util

board = Arduino('/dev/ttyUSB0')
//讀取類比信號A0
it = util.Iterator(board)
it.start()
board.analog[0].enable_reporting()
board.analog[0].read()
 
//寫入數位信號D13
board.digital[13].write(1)
 
 

2019年11月8日

picoboard燒入uno


感謝吳志文老師提供方法,把改picoboard韌體方法記錄一下。
先用一塊uno板燒範例中的ArduinoISP.ino使uno成為一台Bootloader燒錄器,後將uno的D13->PicoBoard J1(3),D12->PicoBoard J1(1),D11->PicoBoard J1(4),D10->PicoBoard J1(5)


再燒錄Bootloader,則PicoBoard就變成一塊UNO了

燒錄bootloader成功後,就可以使用uno方式(s2a s3a...)來執行scratch了。