2019年2月18日 星期一

安裝python與pycharm

pycharm是一款python整合開發環境軟體(IDE)
有付費版以及自由開源版

安裝python:
就是去官網直接點python install,直接執行就可以了
然後預設安裝無腦下一步

安裝pycharm:
也是官網點選安裝,直接執行
預設安裝

2019年2月14日 星期四

使用了stm32duino usb bootloader(from roger clark)但是無法編譯firmata

根據Roger Clark的Arduino_STM32以及stm32duino-bootloader所述安裝
可以順利使用stm32的usb作為程式上傳的管道(省去st-link)
但是如此一來無法編譯firmata

經調查,firmata 可以在stm32duino的Arduino_Core_STM32的程式庫中成功編譯,但是這個程式庫沒有usb bootloader

一開始因為Roger Clark就是在stm32duino.com的討論版出現,所以搞混了這兩個程式庫

現在就是繼續調查有沒有辦法在usb bootloader情況下編譯firmata...

2019年2月13日 星期三

將stm32f103寫入arduino bootloader然後用arduino ide開發測試(stm32duino)

讓stm32f103利用自帶的usb搭配bootloader韌體成為arduino ide可以直接下載的板子

之前是使用stlinkv2作為下載工具
現在則是可以免用stlinkv2

1.使用st-flash 安裝bootloader
如何使用st-flash
https://github.com/texane/stlink/blob/master/doc/man/st-flash.md
st-flash write firmware.bin 0x8000000
bin檔所在位置
這裡有說明
http://wiki.stm32duino.com/index.php?title=Burning_the_bootloader
裡面會提到如何在f103系列上燒錄bootloader

bootloader是一個名為
generic_boot20_pb12.bin
的檔案
來源自:
https://github.com/rogerclarkmelbourne/STM32duino-bootloader

2.在arduino ide設定新板子
https://github.com/stm32duino/BoardManagerFiles/raw/master/STM32/package_stm_index.json
在板子管理員選擇安裝一個名為STM32 Core的管理員

還在測試,還沒成功
目前無法從arudino ide透過serial上傳

板子管理員有更新,更新後再測試

這裡指出應該是因為在mac的環境造成底層韌體無法設定造成stm32flash報錯
https://sourceforge.net/p/stm32flash/tickets/68/

以下是確定會動的步驟
目前在windows10電腦測試可以,可以用STM32F103的USB當作BOOTLOADER
原來我裝的板子管理員跟我看的stm32duino是兩個不一樣的東西
要這個傢伙的兩個專案 搭配使用
  1. Arduino_STM32
  2. STM32duino-bootloader
https://github.com/rogerclarkmelbourne

步驟:
1.先在STM32F103板子上安裝BOOTLOADER
位置就是上述的
https://github.com/rogerclarkmelbourne/STM32duino-bootloader
檔名內的接腳編號是指LED所在位置

2.在ARDUINO IDE板子管理員找到並安裝 Arduino SAM Boards By Arduino 包含 Arduino Due

3.安裝bootloader的usb裝置驅動
https://wiki.stm32duino.com/index.php?title=Windows_driver_installation
其實就是註冊個名字,好讓裝置管理員可以辨識

4.關於Arduin IDE的板子管理員新增方法必須手動,詳情看這裡
https://wiki.stm32duino.com/index.php?title=Installation
前面提到新增板子的方法不是stm32duino設計的,結果會造成 上傳方法 裡面沒有 stm32cuino bootloader這個選項,以至於無法上傳

5.接著重新啟動Arudino IDE後就可以選擇正確的板子以及設定stm32duino bootloader上傳方法,進行編譯與上傳了

2018年12月18日 星期二

android藍牙app的裝置搜尋與信號排序

搜尋藍牙的過程是一個非同步過程
因此需要用回呼函數來處理系統找到的藍牙裝置
以下程式是裝置搜尋回呼函數,每找到一項裝置就呼叫addDevice將資料加入裝置與信號強度的列表變數中
    private BluetoothAdapter.LeScanCallback mLeScanCallback =
    new BluetoothAdapter.LeScanCallback() {

        @Override
        public void onLeScan(final BluetoothDevice device, final int rssi, byte[] scanRecord) {
            runOnUiThread(new Runnable() {
                @Override
                public void run() {

                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            addDevice(device, rssi);
                        }
                    });

                }
            });
        }
    };




但在addDevice程序中,裝置資料與rssi資料是分開存放在deviceList與devRssiValues這兩個列表中
因此為了讓顯示裝置列表的時候能夠根據信號強度排序
需要以下做法
1.先讓信號雜湊列表devRssiValues進行排序,雜湊格式是 Address:Value
2.然後雙迴圈先依序取出信號列表的位址值
3.再到裝置列表中找到該筆裝置資料
4.將裝置資料複製一份到列表的尾巴
5.刪除舊位置的裝置資料
等到信號列表中的資料跑過一遍之後,所有裝置列表的資料就會根據信號強度排序了

        // dahai: sort the deviceList
        devRssiValues = sortByComparator(devRssiValues, true);
//        Log.d("UUS-BLE:devRssiValues", devRssiValues.toString());
//        List tmpDeviceList = deviceList;
        for(Map.Entry entry : devRssiValues.entrySet()) {
            String key = entry.getKey();
            Integer value = entry.getValue();
            for(int i=0; i<deviceList.size(); i++){
                if(deviceList.get(i).getAddress().equals(key)){
                    deviceList.add(deviceList.get(i));
                    deviceList.remove(i);
                }
            }

        }
        Log.d("UUS-BLE:deviceList", deviceList.toString());

2018年12月17日 星期一

android studio如果遇到app不能連線起動(Error while Installing APK),可能是這樣...

訊息如下:
Launching app
...
java.io.IOException: Connection reset by peer
Error while Installing APK

則可以到
Preference -> Build, Execution, Deployment -> Debugger -> Android Debug Bridge(ADB)
把 Use libusb backend取消
就可以連線了

這個方法是來自於這個啟示
https://stackoverflow.com/questions/42781934/android-error-while-installing-apks

內文提到
如果Android Studio有不能安裝app的情形則則需取消 Instant Run的功能
但我找不到相關設定,可能是因為版本更新的關係,因此我嘗試上述的方法就成功了

2018年11月14日 星期三

tinker board chromium壞掉記

解法在這裡
https://tinkerboarding.co.uk/forum/thread-1735-page-2.html

wget https://snapshot.debian.org/archive/debian-security/20180701T015633Z/pool/updates/main/c/chromium-browser/chromium_67.0.3396.87-1~deb9u1_armhf.deb
sudo dpkg -i chromium_67.0.3396.87-1~deb9u1_armhf.deb
sudo apt-mark hold chromium



2018年11月13日 星期二

chromium kiosk mode on raspberry pi

在樹莓派
使用者目錄下的這個檔案裡面放檔案路徑
就可以開機自動執行
~/.config/lxsession/LXDE-pi/autostart

裡面要自動執行的程式必須給絕對路徑