제조공정
| × | 1 |
여기 Chirp HQ에서 Arduino가 완전히 새로운 기능을 갖춘 새 보드를 출시할 것이라는 발표를 듣고 매우 기뻤습니다. 이러한 기능에는 광범위한 센서, 강력한 프로세서 및 가장 중요한 온보드 마이크가 포함됩니다! Arduino의 좋은 사람들은 Chirp와 완벽하게 호환되는 새로운 Nano 33 Sense 보드의 시험판을 통해 제작자 커뮤니티가 소리를 사용하여 데이터를 주고받을 수 있도록 보냈습니다.
Chirp는 Arduino 보드에 완전히 고유한 전송 메커니즘을 추가했으며, 추가된 사운드 기반 데이터 기능은 해커가 손끝에서 더 많은 연결 옵션을 사용할 수 있음을 의미합니다. 데이터 오버 사운드의 장점은 다음과 같습니다.
<울>이 튜토리얼에서는 Chirp SDK를 사용하여 RGB 값을 전송하여 온보드 LED의 색상을 변경하는 방법을 보여줍니다.
수년간의 연구 덕분에 잡음이 많은 곳에서도 Chirp가 작동합니다. 디코더를 배경음에 대해 견고하게 만들기 위해 노력한 덕분입니다. 여기에서 사운드를 통한 데이터 사용의 이점에 대해 자세히 읽어보십시오.
여전히 회의적이라면 직접 시도해 보십시오.
Chirp를 시작하는 것이 그 어느 때보다 쉬워졌습니다...
시작하기
아직 등록하지 않았다면 developer.chirp.io에서 Chirp에 등록해야 합니다. 가입하고 나면 애플리케이션에 대한 앱 키, 비밀 및 오디오 구성을 얻을 수 있습니다.
데이터 수신
Nano 33 Sense는 온보드 마이크와 함께 제공되므로 Chirp를 사용하여 데이터를 수신하는 데 필요한 것은 Library Manager에서 직접 사용할 수 있는 Chirp SDK뿐입니다.
라이브러리 관리자를 열고 Chirp SDK를 검색하기만 하면 됩니다. v3.3.0 이상을 설치하면 코딩을 시작할 준비가 된 것입니다.
도구> 라이브러리 관리
예제 코드를 열어 시작할 수 있습니다.
파일> 예제> ChirpSDK> Nano33SenseReceive
16khz-mono-embedded에 대한 자격 증명을 복사하여 붙여넣어야 합니다. 개발자.chirp.io의 프로토콜을 credentials.h 파일로 가져옵니다.
예제 코드는 수신된 데이터를 직렬 모니터로 간단히 인쇄합니다. 그러나 onReceivedCallback
을 편집하여 온보드 LED를 켜는 동작을 쉽게 변경할 수 있습니다. 기능.
설정 기능에서 먼저 LED에 연결된 GPIO 핀을 출력으로 설정해야 합니다.
#define R_LED_PIN 22#define G_LED_PIN 23#define B_LED_PIN 24void setup() { pinMode(R_LED_PIN, OUTPUT); 핀모드(G_LED_PIN, 출력); 핀모드(B_LED_PIN, 출력);}
LED를 구동하려면 데이터 페이로드에서 RGB 값을 가져와야 합니다.
void onReceivedCallback(void *chirp, uint8_t *payload, size_t length,{ if (length> 0) { // 높은 값은 낮은 밝기를 의미하므로 // UINT8_MAX에서 뺍니다. analogWrite(R_LED_PIN, UINT8_MAX - 페이로드 [0]); analogWrite(B_LED_PIN, UINT8_MAX - 페이로드[2]); } else { Serial.println("디코드 실패"); }}
이제 아래 오디오 파일을 재생하여 코드를 테스트할 수 있습니다. 각 파일은 LED 색상을 빨간색에서 녹색, 파란색으로 변경해야 합니다.
다음은 무엇입니까?
Arduino용 Chirp SDK의 첫 번째 반복은 가청 16khz-mono-embedded에서만 작동합니다. 규약. 앞으로 몇 달 동안 초음파 주파수 근처에서 작동하는 들리지 않는 버전을 출시할 예정입니다. 이를 통해 사람이 들을 수 없는 주파수로 데이터를 전송할 수 있습니다. 예를 들어 노래나 비디오와 같은 기존 오디오에 처프 데이터를 삽입하여 작업을 트리거할 수 있습니다.
또한 Arduino에서 사운드를 통한 데이터를 활용하는 방법에 대한 더 많은 튜토리얼을 따라갈 것입니다. 자신의 Arduino 프로젝트에서 Chirp를 사용한 위치를 Twitter @chirp로 태그하거나 [email protected]로 연락해 주십시오.
섹션> <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">/**----------------- -------------------------------------------------- - Arduino Nano 33 Sense 보드를 사용하여 데이터를 수신하는 예제 코드. @file Nano33SenseReceive.ino @brief https://developers.chirp.io에서 개발자 계정을 만들고 "16khz-mono-embedded" 프로토콜에 대한 키, 비밀 및 구성 문자열을 아래에 정의된 처프에 복사하여 붙여넣습니다. 이 예제는 RGB 값을 듣기 시작하고 온보드 LED의 색상을 변경합니다. 회로:- Arduino Nano 33 BLE 보드 Copyright © 2011-2019, Asio Ltd. All rights reserved. -------------------------------------------------- -----------------*/#include섹션>#include "chirp_connect.h#define CHIRP_APP_KEY "YOUR_APP_KEY#define CHIRP_APP_SECRET "YOUR_APP_SECRET#define CHIRP_APP_CONFIG "YOUR_APP_CONFIG "#define SAMPLE_RATE 16000#define BUFFER_SIZE 256#define R_LED_PIN 22#define G_LED_PIN 23#define B_LED_PIN 24// 전역 변수 ---------- --------------------------static chirp_connect_t *chirp =NULL;short sampleBuffer[BUFFER_SIZE];volatile int samplesRead;// 함수 정의 --- ------------------------------------------ 무효 setupChirp(무효); void chirpErrorHandler(chirp_connect_error_code_t code);void onPDMdata(void);// 메인 ---------------------------------- ----------------------------- 무효 setup(){ Serial.begin(115200);// while (!Serial); 핀모드(R_LED_PIN, 출력); 핀모드(G_LED_PIN, 출력); 핀모드(B_LED_PIN, 출력); setupChirp(); PDM.onReceive(onPDMdata); PDM.setGain(30); if (!PDM.begin(1, SAMPLE_RATE)) { Serial.println("PDM 시작 실패!"); 동안 (1); } analogWrite(R_LED_PIN, UINT8_MAX); analogWrite(G_LED_PIN, UINT8_MAX); analogWrite(B_LED_PIN, UINT8_MAX);} 무효 루프(){ if (samplesRead) { chirp_connect_error_code_t err =chirp_connect_process_shorts_input(chirp, sampleBuffer, samplesRead); chirpErrorHandler(오류); 샘플 읽기 =0; }} 무효 onPDMdata(){ int bytesAvailable =PDM.available(); PDM.read(샘플 버퍼, 바이트 사용 가능); samplesRead =bytesAvailable / sizeof(short);}// 짹짹 -------------------------------------- ------------------------- void onReceptionCallback(void *chirp, uint8_t *payload, size_t 길이, uint8_t 채널){ Serial.println("데이터 수신 ..."); analogWrite(R_LED_PIN, UINT8_MAX); analogWrite(G_LED_PIN, UINT8_MAX); analogWrite(B_LED_PIN, UINT8_MAX);}void onReceivedCallback(void *chirp, uint8_t *payload, size_t length, uint8_t channel){ if (length) { // 높은 값은 낮은 밝기를 의미하므로 // UINT8_MAX에서 뺍니다. analogWrite(R_LED_PIN, UINT8_MAX - 페이로드[0]); analogWrite(G_LED_PIN, UINT8_MAX - 페이로드[1]); analogWrite(B_LED_PIN, UINT8_MAX - 페이로드[2]); } else { analogWrite(R_LED_PIN, 0); analogWrite(G_LED_PIN, UINT8_MAX); analogWrite(B_LED_PIN, UINT8_MAX); 지연(500); analogWrite(R_LED_PIN, UINT8_MAX); 지연(500); analogWrite(R_LED_PIN, 0); Serial.println("디코딩 실패"); }}void chirpErrorHandler(chirp_connect_error_code_t 코드){ if (code !=CHIRP_CONNECT_OK) { const char *error_string =chirp_connect_error_code_to_string(code); Serial.println(error_string); 출구(42); }} 무효 setupChirp(무효){ 처프 =new_chirp_connect(CHIRP_APP_KEY, CHIRP_APP_SECRET); if (chirp ==NULL) { Serial.println("Chirp 초기화에 실패했습니다."); 반품; } chirp_connect_error_code_t err =chirp_connect_set_config(chirp, CHIRP_APP_CONFIG); chirpErrorHandler(오류); 문자 * 정보 =chirp_connect_get_info(chirp); Serial.println(정보); chirp_connect_free(정보); chirp_connect_callback_set_t callback_set ={ .on_state_changed =NULL, .on_sending =NULL, .on_sent =NULL, .on_receiving =onReceivingCallback, .on_received =onReceivedCallback }; err =chirp_connect_set_callbacks(chirp, callback_set); chirpErrorHandler(오류); err =chirp_connect_set_input_sample_rate(chirp, SAMPLE_RATE); chirpErrorHandler(오류); err =chirp_connect_set_frequency_correction(chirp, 1.0096); chirpErrorHandler(오류); 오류 =chirp_connect_start(chirp); chirpErrorHandler(오류); Serial.println("Chirp SDK가 초기화되었습니다."); Serial.flush();}
제조공정
2021년 5월 13일에 업데이트됨 확실히 인더스트리 4.0을 따라가는 많은 유행어와 트렌드가 있습니다. 제조업체가 개념을 파악하고 인더스트리 4.0 솔루션을 채택하는 것이 가능한 방법을 결정하는 것은 어려울 수 있습니다. 결국 인더스트리 4.0은 모호하고 포괄적인 개념입니다. 실용적인 측면에서 생각하고 이를 비즈니스 비전에 통합하기 위한 로드맵을 시작하는 것은 어려울 수 있습니다. 인더스트리 4.0을 시작하는 방법을 논의할 때 먼저 인더스트리 4.0이 무엇인지 정의해야 합니다. 주제에 대한 전체 가이드에서: 4차 산업 혁
무선 통신에 대한 의존도가 증가하는 세상에서 유선 세상은 다소 지나치게 보입니다. 그러나 산업용 IoT(IIoT)에서는 여전히 유선이 표준입니다. RF 간섭, 혼잡한 무선 대역, 라이선스 요구 사항 및 간단한 응답을 포함하여 산업 환경에서 유선 연결을 유지해야 하는 몇 가지 이유가 있습니다. 전통적으로 산업용 애플리케이션은 Profibus, Modbus, CAN 등과 같은 오래된 필드버스 기술의 대상이었습니다. 이러한 기술은 일반적으로 트위스트 페어 배선을 기반으로 하며 일반적으로 1Mbps 이하의 성능 수준입니다. 산업 세계에서