2021年3月10日 星期三

如何安裝 FUXIZ OS 在 Raspberry Pi Pico?

網頁最後修改時間:2021/03/10


2014 年 12 月 31 日萬聖節當日,Alan Cox 透過 Google+ 宣布了 Fuzix OS,一個主要為 Zilog Z80 處理器架構而設計的作業系統(小型 V 核心系統)。

最近,David Given 成功的將 Fuzix OS 移植到了 ESP8266 和板載 RP2040 的 Raspberry Pi Pico(下面簡稱 RPi-Pico)上,您可以在這些板子上面執行 Unix 指令和程式。

參考頁面:

而本篇,將主要針對 RPi-Pico 安裝 Fuzix 的部分來做說明:


2021年2月26日 星期五

Raspberry Pi Pico - 使用 MicroPython 驅動整合型 LCD 顯示 Pico 內部溫度感測器值

網頁最後修改時間:2021/02/27

Raspberry Pi Pico(下面簡稱 Pico)主晶片 RP2040 裡有 5 個 ADC 通道,其中通道 4 是與晶片內部的溫度感測器連接,所以可以在不接任何外部裝置的情況下讀出溫度值,雖然它會受到晶片執行負荷量的影響,讀值會有所偏移,但用於本篇的例子已經足夠!

本篇將會說明:怎麼撰寫 Pico 的 MicroPython 程式驅動(賣場的)整合型 LCD,用來顯示讀取 Pico ADC[4] 後的溫度值。


2021年2月12日 星期五

Raspberry Pi Pico-MicroPython, CircuitPython 開發環境建置

網頁最後修改時間:2021/02/12

現在比較流行的微控制器和開發板,大多圍繞在 Arduino、Micro:bit、STM32、ESP8266、ESP32 等 ... 身上。不過,讓人興奮的是,最新樹莓派釋出他們自行研發的自製晶片 RP2040 和其開發板 Raspberry Pi Pico(Getting Started with Raspberry Pi Pico),支援 C/C++ 和 Python(MicroPython、CircuitPython)程式開發(後期 Arduino IDE 也會支援),相關資料可上官網網頁,裡面提供了非常完整的文件和範例程式碼。

跟其他晶片與開發板不同的是:Pico 所用的 RP2040 這顆晶片,擁有 8 個可程式輸入/輸出狀態機(Program I/O(PIO)state machines),支援客製化週邊介面(簡單說,就是您可以自行創建通訊介面,例如,方波、NeoPixel(WS2812B)、Manchester Encoding ...,I2C、SPI ... 也可以);個人覺得這地方應是 Pico 的重點部分,有興趣的可以深入去研究。

另外關於 Pico 韌體程式的燒錄,非常的容易!只需要 "拖" 檔案和 "放" 檔案這兩個動作,完全不需要額外的裝置。

** 關於 Pico 相關的資訊,網路上現在已經一堆資料可以看,所以在這裡會當作看倌們基本上都很清楚這些東西。對於 Pico 陌生的看倌,請自行搜尋資料補充一下。

要了解 Pico 除了閱讀它的資料手冊和程式碼之外,更重要的一點就是要有它的開發環境。本篇網頁撰寫的目的,就是要來分享如何使用 Python(MicroPython、CircuitPython)開發 Pico 的程式;若是要使用C/C++做開發,請參考另一個網頁。

主題有:


2020年12月21日 星期一

驅動 128x64 繁體中文 LCD 點、線和面 #MicroPython #ST7920 #ESP8266

網頁最後修改時間:2020/12/21

前幾天,有人在賣場詢問是否有 MicroPython 驅動 128x64 繁體中文 LCD 的範例程式,基本上上商品所附的範例程式還是單晶片(8051)、Arduino 開發版和 ESP8285(Arduino)程式為主。

不過,找了時間在網路上做了一些搜尋,在 Github 上發現了不錯的 Repository 並做了測試。雖然這這些 Repository 能來驅動顯示英文字和畫線、畫方框,但最後沒有直接能找到可顯示繁體中文的 MicroPython 範例程式可做參考。

不過經過一番折騰,還是成功了把原來的程式移植到了MicroPython!

在進入到主題篇之前,本篇要先來用用在 Github 找到用來驅動 128x64 繁體中文 LCD(下面簡稱繁中LCD)顯示點、線和面的 Repository:MicroPython-ST7920

主要內容有:


2020年12月10日 星期四

OpenPLC 初體驗 /04/ - Raspberry Pi(樹莓派)如何在本地端和遠端受控執行 OpenPLC 程式

網頁最後修改時間:2020/12/10

關於Raspberry Pi(下面稱樹莓派)控制繼電器的部分,部落格早前已有寫過相關的範例網頁(兩通道八通道),所以此處不會再針對細節部分再多加著墨。本篇所著重的在於,是怎麼依照不同的裝置需求,重新規劃樹莓派在 OpenPLC 的接腳 I/O 模式,運行 OpenPLC 程式在本地端與遠端。

樹莓派的接腳 I/O 模式規劃,以樹莓派八通道光隔離繼電器擴充板上的繼電器控制接腳作為依據、結構化文本(ST,Structured Text)撰寫 OpenPLC 程式;每當用戶按下按鈕,繼電器會每間隔一秒鐘依序開啟,接著再依序關閉。

本篇網頁的內容有:


2020年11月25日 星期三

OpenPLC 初體驗 /03/ - OpenPLC 階梯圖(LD)和結構化文本程式(ST)實作範例(ESP826 as Modbus Slave Devices)

網頁最後修改時間:2020/11/25


經過了前面幾篇部落格關於 OpenPLC 的介紹和開發環境的建置,從現在開始要進入到實作的部分。如果您只想看看,那麼可直接跳過這裡的說明,直接進入到章節中;反之,若是以學習 OpenPLC 為目的,請先準備好需要的東西,再跟著網頁一起做!

本篇網頁的目標:使用 OpenPLC 的階梯圖(Ladder Diagram, 簡稱 LD)和結構化文本程式(Structured Text Programming, 簡稱 ST)以 NodeMCU(板載 ESP8266, ESP-12E 模組)開發板上的按鈕,控制兩顆 LEDs 亮/滅;每按一次 FLASH 按鈕,兩顆 LED 將會依序點亮、同時點亮和同時熄滅。

要達到這樣的目的,下面是需要完成的部分:
1. NodeMCU 要轉換為 Modbus TCP Server(Slave Device);
2. 撰寫 OpenPLC 程式;
3. 新增 Slave Device 和上傳 OpenPLC 程式到 OpenPLC Runtime;
4. 建立 SCADA 與 OpenPLC Runtime 的連線和人機介面;

** 詳細的過程,請看(5)整體測試裡的影片。

本文以從底部基礎一直往上搭建的方式來做說明,整篇分為以下幾個部分:


2020年11月1日 星期日

OpenPLC 初體驗 /02/ - 建置開發環境

網頁最後修改時間:2020/11/01

隨著科技進步以及開放原始碼的盛行,很多的東西不再遙不可及,具備一定能力的人,能夠經由這些資訊的提供,重製出相同的東西或是修改變更其內容為其他。

基於此,本篇想要跟各位介紹一款用於工業自動化和研究方面的開放原始碼專案:OpenPLC,它主要著重的重點是在為自動化和研究方面提供低成本的工業解決方案,而這篇網頁則要來介紹如何建置它的開發環境(Runtime、Editor 和 SCADA)。

2020年10月23日 星期五

OpenPLC 初體驗 /01/ - 安裝樹莓派 2/3/4 作業系統(Raspberry Pi OS, Released: 2020-08-20)

網頁最後修改時間:2020/10/25

隨著科技進步以及開放原始碼的盛行,很多的東西不再遙不可及,具備一定能力的人,能夠經由這些資訊的提供,重製出相同的東西或是修改變更其內容為其他。

基於此,本篇想要跟各位介紹一款用於工業自動化和研究方面的開放原始碼專案:OpenPLC,它主要著重的重點是在為自動化和研究方面提供低成本的工業解決方案,而這篇網頁則要來介紹如何製作 Raspberry Pi(樹莓派)2/3/4 的作業系統,和作業系統第一次啟動的初始設定、組態、更新和升級,以作為 OpenPLC Runtime 和 OpenPLC Editor 軟體安裝之用。

2020年10月17日 星期六

OpenPLC 初體驗 /00/ - OpenPLC Project 簡介

網頁最後修改時間:2020/10/21

隨著科技進步以及開放原始碼的盛行,很多的東西不再遙不可及,具備一定能力的人,能夠經由這些資訊的提供,重製出相同的東西或是修改變更其內容為其他。

基於此,本篇想要跟各位介紹一款用於工業自動化和研究方面的開放原始碼專案:OpenPLC,它主要著重的重點是在為自動化和研究方面提供低成本的工業解決方案,而這篇網頁則要先來介紹它。

主要的內容有:

/*-/--*-*/*/*/*/***//-*-*-**-*/*-*-/*/*/*-*-/-////--/**/**--**/--///--//**----**//--**//**----***//*-**//*
網頁裡面的內容大量參考 OpenPLC 官網原文,
如果有不清楚的地方請再自行跳至提供的參考連結自行閱讀。
/*-/--*-*/*/*/*/***//-*-*-**-*/*-*-/*/*/*-*-/-////--/**/**--**/--///--//**----**//--**//**----***//*-**//*