裝配式建筑是建造方式的重大變革,有利于節約資源能源、減少施工污染、提升勞動生產效率和質量安全水平,但目前裝配式建筑設計缺乏正向設計、效率高、數據共享的軟件。”今天,遠大住宅工業集團股份有限公司(以下簡稱遠大住工)攜手中國建筑科學研究院(以下簡稱中國建研院),在長沙正式發布裝配式建筑智能設計軟件PCMakerⅠ,以硬科技解鎖建筑智造。
據了解,PCMakerⅠ軟件以遠大住工20年逾千例的工業化建筑項目實踐經驗為基礎,結合中國建研院的課題研究理念和軟件技術,著力解決裝配式建筑以設計技術標準為牽引的全流程建設,為裝配式建筑行業帶來全生命周期的BIM正向設計應用。
當前,建筑工業化已上升為國家戰略、頂層設計。與國外建筑工業化是小批量定制生產的情況不同,中國的建筑工業化既有西方國家的品質需求,又有遠超于其的規模需求,是大規模定制生產的實際情況。
“但中國建筑業沒有經歷
工業化的進程,有建筑標準而無工業標準,在大規模生產的過程中經常存在產品不確定、一個工廠對接多個工地以致交期不確定等問題,屬于高度離散型的制造業。”遠大住工總裁唐芬認為,中國的建筑工業化迫切需要一個橋梁,搭建起建筑業和工業之間的通道,實現由手工、離散的傳統建筑業向高效、集約的現代制造業的轉變。
對此,PCMakerⅠ軟件孕育而生,它是基于“一個正向模型”、“一套統一標準”、“一套完整數據”的設計思路研發,已取得軟件著作權,并通過專家委員會科技項目成果鑒定,是裝配式建筑領域首款基于BIM平臺的正向設計軟件,可以解決眾多企業在裝配式建筑實施、BIM應用實踐中遇到困難。
該軟件將國家標準和裝配式建筑應用設計標準內置并統一,實現模型創建、構件拆分、構件設計、結構計算、裝配式檢查、數據統計、深化自動成圖;一套BIM模型打通前后端數據,一鍵生成裝配式建筑的結構施工圖、工藝深化圖,并為生產提供完整的BOM清單和數據,指導市場預算,實現裝配式建筑多專業協同的工作模式;通過簡化裝配式建筑設計流程,取消人工翻圖,減少誤差并提高設計精度,縮減設計周期,設計效能提升十倍以上。
遠大住工為何會跨界打造一款智能設計軟件呢?唐芬表示,當產業做大之后,下一步思考的是如何做強。遠大住工與中國建研院都想立足源頭解決行業痛點、實現“把技術變成工具、把分散集成統一、由傳統向智能轉型”的成果輸出。PCMakerⅠ是遠大住工進入建筑工業4.0的起點,也是遠大住工踐行智能設計、智能制造、智慧工地的入口,未來它將持續升級,不斷迭代,可以期待PCMakerⅡ、Ⅲ……的出現。
發布會最后遠大住工集團產品設計研究院院長王雅明現場為大家介紹PCMakerⅠ的數據模型。PCMakerⅠ的模型得到構件圖紙之后,導入到工廠,有個標準的模具庫。再把圖紙導到模具庫,和模具庫進行對比,有的模具只需要自動選取模具,有新的模具可以通過軟件來自動軟件這個加工圖紙,最后形成一物一模,形成一套模具本來現場是五六天的周期,我們工廠是一天可以生產一層。
倆天我在瀏覽購物網站的時候,被一個購物清單吸引住了,
5個ATtiny13單片機售價1.5美元。
你敢相信,一個可編程的微控制器,只要0.3美元!于是我打算撿個便宜,買幾個回來玩玩。
為了讓買回來的ATtiny13不落在角落里吃灰,我上網搜索了 "ATtiny13 Arduino"的關鍵詞,發現Arduino支持ATtiny13,所以我準備拿他搞些事情。
ATtiny13對庫的支持有限,所以除了讓它點亮幾個LED之外,我暫時沒有想到其他玩法。
正當我苦苦思索還能做什么時,突然想到了一個很久以前的項目。
那是一個使用ATtiny85的PoV顯示器。
PoV顯示器基本上是一堆閃爍的LED,并有一些精心安排的延遲。而我發現ATtiny13和ATtiny85都有相同的引腳布局。
那么…… 嘿嘿,我也來做一個!
什么是PoV顯示器,它們是如何工作的?
人眼在觀察景物時,光信號傳入大腦神經,需經過一段短暫的時間(1/16秒),光的作用結束后,視覺形象并不立即消失,這種殘留的視覺稱“后像”,視覺的這一現象則被稱為“視覺暫留”。
比如你看一個正常的顯示器,像素是以矩陣方式排列的,但在PoV顯示器中,像素或者LED則是排列成一個陣列的。就像是你快速翻動小人書那邊,由于視覺暫留效應,小人書的人會動起來,這邊我們看到的,也不會是一排LED,而是一串字母或者是一幅圖像。
你可能正盯著ATtiny13,想知道 "我到底該怎樣為這個東西編程,它又沒有像Arduino那樣的USB接口"。
好吧,要為這個微控制器編程,你需要另一個Arduino,Arduino Nano或Arduino Uno都可以。
下載并安裝Arduino IDE。
用USB線將你的Arduino Nano / Uno連接到電腦上。
打開 工具->開發板,選擇你的主控板(注意選Uno/Nano而不是ATtiny13)。
現在我們需要將我們的Arduino轉換成一個編程器。
在Arduino IDE中,打開文件 -> 示例 -> 11.ArduinoISP -> ArduinoISP
并點擊上傳按鈕。
如果上傳成功,就可以用我們的Arduino為其他微控制器編程了。
現在我們還需要在Arduino IDE上安裝ATtiny13的硬件包,因為IDE默認不支持ATtiny13。
打開文件 -> 首選項 -> 附加開發版管理器網址
然后粘貼上下面的鏈接:
https://mcudude.github.io/MicroCore/package_MCUdude_MicroCore_index.json
然后打開工具 -> 開發板 -> 開發板管理器。
從列表中找到MicroCore并點擊安裝。
ok,現在你就可以從Arduino IDE中選擇到ATtiny13了。
選擇工具 -> 開發板 -> MicroCore -> ATtiny13
我們需要在Arduino IDE中再改變一些選項,
打開工具,并設置以下值:
OptionValueBoardATtiny13BOD2.7vClock9.6Mhz internal Osc.Timing"Micors Disabled"PortSelect Serial Port in which your Arduino is connectedProgrammerArduino as ISP (MicroCore)
現在可以把ATtiny連接到我們的Arduino了。
把ATtiny連接到Arduino,如下所示(在ATtiny中,針腳1將用一個點. 標記。)
ATtiny13 PinArduino Pin11051161271385v4Ground (GND)
這是一個一次性的設置,不用在每次上傳代碼到ATtiny時都重復這個設置。
點擊 工具->燒錄引導程序。
這將把引導程序燒到ATtiny上,現在我們就可以用Arduino IDE把程序上傳到ATtiny了。
在Arduino中新建一個程序。
復制代碼并將其粘貼到新創建的程序中。
// https://github.com/B45i/Tiny-PoV
// App to calculate array values: https://pov-display-calc.vercel.app/
// Preact app source: https://github.com/B45i/pov-display-calc
#include <avr/pgmspace.h>
#define DELAY_TIME 1
#define CHAR_BREAK 2
uint8_t leds[]={ 0, 1, 2, 3, 4 };
uint8_t keys[]={ 1, 2, 4, 8, 16 };
void setup() {
for (uint8_t i=0; i < 5; i++) {
pinMode(leds[i], OUTPUT);
}
}
const PROGMEM uint8_t alphabets[][5]={
{ 0, 0, 0, 0, 0 }, // Space
{ 30, 5, 5, 30, 0 }, // A
{ 31, 21, 21, 10, 0 }, // B
{ 14, 17, 17, 10, 0 }, // C
{ 31, 17, 17, 14, 0 }, // D
{ 31, 21, 21, 17, 0 }, // E
{ 31, 20, 20, 16, 0 }, // F
{ 14, 17, 19, 10, 0 }, // G
{ 31, 4, 4, 4, 31 }, // H
{ 0, 17, 31, 17, 0 }, // I
{ 0, 17, 30, 16, 0 }, // J
{ 31, 4, 10, 17, 0 }, // K
{ 31, 1, 1, 1, 0 }, // L
{ 31, 12, 3, 12, 31 }, // M
{ 31, 12, 3, 31, 0 }, // N
{ 14, 17, 17, 14, 0 }, // O
{ 31, 20, 20, 8, 0 }, // P
{ 14, 17, 19, 14, 2 }, // Q
{ 31, 20, 22, 9, 0 }, // R
{ 8, 21, 21, 2, 0 }, // S
{ 16, 16, 31, 16, 16 }, // T
{ 30, 1, 1, 30, 0 }, // U
{ 24, 6, 1, 6, 24 }, // V
{ 28, 3, 12, 3, 28 }, // W
{ 17, 10, 4, 10, 17 }, // X
{ 17, 10, 4, 8, 16 }, // Y
{ 19, 21, 21, 25, 0 }, // Z
{ 31, 17, 31, 0, 0 }, // 0
{ 18, 31, 16, 0, 0 }, // 1
{ 29, 21, 23, 0, 0 }, // 2
{ 21, 21, 31, 0, 0 }, // 3
{ 7, 4, 31, 4, 0 }, // 4
{ 23, 21, 29, 0, 0 }, // 5
{ 31, 21, 29, 0, 0 }, // 6
{ 1, 1, 31, 0, 0 }, // 7
{ 31, 21, 31, 0, 0 }, // 8
{ 23, 21, 31, 0, 0 }, // 9
};
void displayLine(uint8_t line) {
for (uint8_t i=0; i < 5; i++) {
digitalWrite(leds[i], (line & keys[i])==keys[i]);
}
}
void displayLetter(uint8_t n) {
for (uint8_t i=0; i < 5; i++) {
displayLine(pgm_read_word_near(alphabets[n] + i));
delay(DELAY_TIME);
}
displayLine(0);
}
void displayString(char *s) {
for (uint8_t i=0; i < strlen(s); i++) {
uint8_t index;
if (s[i]==' ') {
index=0;
} else if (isalpha(s[i])) {
index=(uint8_t)toupper(s[i]) - 64;
} else if (isdigit(s[i])) {
index=(uint8_t)(s[i]) - 21;
}
displayLetter(index);
delay(CHAR_BREAK);
}
}
void loop() {
displayString("HELLO 123 ");
}
如果你想改變顯示的文本,可以修改最后一行。
displayString("HELLO 123 "); // 替換成你想要顯示的文本
根據你要使用的電機的速度,你可能還需要調整代碼,更新變量DELAY_TIME和CHAR_BREAK。
你可能會盯著這段代碼思考,一些隨機數怎么樣能代表一個字符,我們如何用它們來正確地閃爍LED?
我們可能對使用數組來表示字符和圖像比較熟悉,像類似這樣:
int a[][5]={
{0, 1, 1, 0, 0},
{1, 0, 0, 1, 0},
{1, 1, 1, 1, 0},
{1, 0, 0, 1, 0},
{1, 0, 0, 1, 0},
};
for (int i=0; i < 5; i++) {
for (int j=0; j < 5; j++) {
digitalWrite(LEDs[j], a[j][i]);
}
}
但是,這種方法會占用大量的內存,而且我們還必須使用多個循環來迭代它們。
現在,對于沒有多少處理能力的ATtiny13來說,這并不是一個好方法。
我們不使用矩陣來表示一個字符,而是使用一個數組來表示它。
PoV顯示器有5行和5列,所以我們可以使用一個長度為5的數組。
該數組中的每個元素將告訴我們是否需要打開某個特定的LED。
我們給每個LED分配一個數字(枚舉),這些數字都是2的冪級數。
LEDEnumLED 12^0=1LED 22^1=2LED 32^2=4LED 42^3=8LED 52^4=16
這些數字有一個特點,用他們組合,所產生的每一個數字的方式是唯一的。
比如:如果我們把2、4和8相加,就會得到14,而這些數字的其他組合不會產生14。
如果一個LED是關閉的,我們用0來表示它。
讓我們來看看我們如何表示字母 "A"。
在第一列中,我們必須關閉LED1并打開所有其他的LED。因此,我們可以用0(LED1關閉)+2+4+8+16=30表示。
數組中的其他元素將是:
列值第1列0 + 2 + 4 + 8 + 16=30第2列1 + 0 + 4 + 0 + 0=5第3列1 + 0 + 4 + 0 + 0=5第4列0 + 2 + 4 + 8 + 16=30第5列0 + 0 + 0 + 0 + 0=0 (所有LED全不亮)
我們如何根據這些數字來開啟和關閉LED?
很簡單,你對數字和LED的枚舉進行按位與運算(只有對應的兩個二進位都為1時,結果位才為1),如果結果是枚舉,我們就需要打開相應的LED。
拿數字30來舉個例子:
運算結果LED狀態30 & 1==1false關閉LED130 & 2==2true點亮LED230 & 4==4true點亮LED330 & 4==8true點亮LED430 & 16==16true點亮LED5
30二進制是11110
這個概念通常被稱為標記的枚舉。
你可以添加更多的字母和數字。
手動生成這些數組是很難的,所以我做了兩個應用程序方便大家更好更快地生成數組。
第一個是用Preact編寫的,它是專門為這個項目制作的,最多支持5個LED。
地址:https://pov-display-calc.vercel.app/
第二個是用Angular編寫的,它可以支持n個LED。
地址:https://po-v-display-calculator.vercel.app/
你也可以用這倆個網頁來為其他PoV項目生成代碼。
只要使用這些應用程序生成數組,并將代碼添加到程序中的數組即可。
PoV顯示電路是相當簡單的,可以用下面的電路圖來連接電路。
你可以使用原型電路板來焊接電路。
我已經為這個電路設計了一塊PCB。如果你使用的是PCB,那么你就不用做任何布線,只需焊接元件就好了。
PCB文件可以在社區下載:7塊錢可以做什么?用ATtiny13做一個非常酷的PoV顯示器! - DF創客社區 - 分享創造的喜悅
焊接好所有部件,加入電池,打開開關,把它連接到可以旋轉的東西上,比如一個微型電機甚至風扇(別忘了根據角速度調整代碼中的延遲,這一塊兒可能需要一些試驗)。
好了,現在你就有一個元件總成本不到1美元的PoV顯示器了,試試效果怎么樣吧!
祝你玩得開心!
原文鏈接:https://www.hackster.io/B45i/make-a-pov-display-with-attiny13-for-1-e94b25
項目作者: Amal Shajan
中文譯文首發于DF創客社區
轉載請務必注明項目出處與原作者信息
新社天津7月24日電 (記者 張道正)中國長城(天津)基地自主安全電腦暨天津網信事業配套保障產品下線儀式24日在天津高新區海洋科技園舉行。一座全新的中國國產自主安全電腦智造生產基地至此在天津濱海高新區扎根。
中國長城天津基地于2020年6月簽約落戶濱海高新區海洋科技園,7月開建,僅用近20天時間,就完成了項目建設、投產工作,創造了中國長城生產基地建設史上的“最快紀錄”。
中國長城(天津)基地網信事業配套保障體系項目由中國長城旗下天津長城計算機系統有限公司承載運營。該項目主要服務華北地區,生產以PKS體系為核心架構的國產化自主安全電腦,建設國產化自主安全數據中心,滿足全社會、多領域、全行業的自主安全信息化產品需求。項目一期計劃投資1億元,年產自主安全電腦30萬臺,預計年產值18億元人民幣。
作為國家自主創新示范區,天津濱海高新區近年來引育了中環、曙光、360、騰訊、飛騰、麒麟、長城、紫光云、南大通用、神舟通用、金山軟件等一批信創產業龍頭企業,信創產業總體營收規模接近400億元人民幣,形成了國產化特色凸顯,涵蓋“芯片-整機終端-操作系統-應用軟件-信息安全服務-整體解決方案”的全產業體系。
天津濱海高新區管委會主任單澤峰表示,中國長城天津基地產品下線,將構建起基于“飛騰+麒麟+長城電腦”的全產業鏈條,進一步增強高新區信創產業在全國的領先優勢。未來,濱海高新區將為中國電子提供更專業、高效的貼心服務,助力中國電子發展更廣泛的布局大產業、大項目。(完)
聲明:轉載此文是出于傳遞更多信息之目的。若有來源標注錯誤或侵犯了您的合法權益,請作者持權屬證明與本網聯系,我們將及時更正、刪除,謝謝。