산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

Arduino를 사용한 구식 양방향 호출기

구성품 및 소모품

홀로그램 글로벌 IoT SIM 카드
× 1
Arduino UNO
× 1
Arduino GSM 실드 V2
× 1
Adafruit LCD 실드 키트(16x2 문자 디스플레이 포함) - 핀 2개만 사용 된! - 파란색과 흰색
× 1
Hammond 프로젝트 상자 4.7 x 2.6 x 1.4 반투명 파란색
× 1

앱 및 온라인 서비스

홀로그램 데이터 라우터

이 프로젝트 정보

소개

90년대 후반과 2000년대 초반의 영광을 재현하기 위해 Jay-Z가 사용했던 것처럼 나만의 양방향 호출기를 만들어 보고 싶다고 생각했습니다! 하지만 이 아이디어는 언뜻 보기보다 더 유용하다는 것을 알게 되었습니다. 실제 휴대 전화 대신 아이들이 사용할 수 있도록 설계하거나 야외에서 혼자 일하는 사람을 위한 "SOS" 버튼으로 사용할 수 있도록 설계했습니다. 또는 심지어 운동(조금 더 작았다면). 그리고 지난 몇 주 동안 이 장치는 아내와 내가 서로에게 엉뚱한 메시지를 남기는 거실에 항상 켜져 있었습니다.

요약:이 프로젝트는 LCD 디스플레이와 간단한 제어 버튼이 있는 작은 인클로저에 내장된 셀룰러 모뎀이 있는 arduino를 통해 문자(SMS) 메시지를 보내고 받습니다.

이 프로젝트의 코드에는 직렬 인터페이스에서 시스템을 실행하는 기능이 포함되어 있으므로 LCD 실드가 없더라도 이 프로젝트의 버전을 빌드하고 사용할 수 있습니다.

하드웨어 선택

나는 홀로그램의 SIM 카드와 함께 이 프로젝트와 함께 사용하고 싶은 Arduino GSM Shield를 가지고 있었기 때문에 Arduino UNO와 결합하는 것이 매우 합리적이었습니다. Adafruit는 버튼이 내장된 LCD 디스플레이 실드를 만들고 I2C 버스를 사용하기 때문에 Arduino에서 디스플레이용 핀 2개와 버튼 5개만 사용하므로 향후 사용자 정의를 위한 여지가 많습니다.

LCD의 배경색이 파란색이 좋기 때문에 반투명 파란색 인클로저와 결합하면 보기 좋을 것 같았습니다. 3개의 보드를 서로의 위에 쌓으면 매우 깨끗한 연결이 가능하며 두 쉴드가 서로 다른 핀을 사용하기 때문에 전기적으로 문제가 되지 않았습니다.

<울>
  • LCD 실드:I2C 버스용 아날로그 4 및 5 핀(+5V 전원 및 접지 포함[그러나 Vin 핀 옆의 접지만 포함, 5V 핀 옆의 접지는 제외])
  • <울>
  • GSM 실드:소프트웨어 직렬용 핀 2 및 3, 전원 재설정용 핀 7(문서에서 이에 대한 자세한 내용을 본 적이 없지만 분명히 전원 및 접지 포함)
  • 나머지는 모두 무료로 확장할 수 있습니다! 다른 장치는 여전히 I2C 버스에 추가될 수 있습니다.

    개발하는 동안 시스템은 SMS를 보내고 받기 위해 내 랩톱의 USB 전원으로 제대로 실행되었지만 GPRS 셀룰러 데이터를 안정적으로 사용하려면 더 많은 전원이 필요할 것으로 생각됩니다.

    셀룰러 통신

    홀로그램은 SIM 카드를 허용하는 모든 장치에서 작동하는 셀룰러 데이터 서비스를 제공합니다. 서비스를 위해 SIM 카드를 등록한 후 클릭 한 번으로 내가 선택한 지역 번호로 전화번호를 할당할 수 있었습니다. 예를 들어 이 프로젝트를 어린이 커뮤니케이터로 훌륭하게 만드는 또 다른 기능은 서비스를 활성 상태로 유지하는 것이 매우 저렴하고($0.40/월) 장치 사용을 중단하면 언제든지 일시 중지할 수 있다는 것입니다. 대부분의 휴대전화 요금제와 마찬가지로 문자 수신은 무료이고 전송은 각각 $0.19입니다. 미래에는 메시지가 무료 SMS 서비스로 자동 라우팅될 수 있는 홀로그램의 클라우드 서비스에 대한 데이터 연결을 사용하여 이 비용을 훨씬 더 낮출 수 있습니다. 데이터 1MB당 $0.60이면 아주 작은 문자 메시지를 받을 수 있습니다.

    어떤 이유로든 GSM 실드가 궁극적으로 제대로 작동하더라도 GSMScanner를 올바르게 실행하지 않습니다. 및 GSMModem getIMEI() 초기 설정 및 문제 해결을 위해 설계된 기능. 꽤 오해의 소지가 있습니다! SMS 및 GPRS 데이터 기능은 정상적으로 작동했습니다. 따라서 모뎀이 여전히 IMEI 번호를 알려주지 못하는 이유를 아는 사람이 있으면 의견을 듣고 싶습니다.

    코드 및 인터페이스

    Adafruit에는 LCD 실드가 작동하는 모습을 보여주는 훌륭한 지침이 있고 Arduino에는 중요한 기능을 보여주는 GSM 실드에 대한 좋은 시작 가이드가 있으므로 내 코드의 대부분은 이 두 가지 기능을 기반으로 하고 내 자신의 추가 기능을 추가했습니다. 사용자 인터페이스.

    키보드로 명령줄에 문자를 입력하지 않는 사용자 인터페이스를 프로그래밍한 적이 없었기 때문에 간단하게 유지하고 싶었습니다. 위아래 키로 스크롤할 수 있는 미리 준비된 메시지를 선택하여 보내기로 결정했습니다. 생각보다 정말 쉽습니다!

    작동하는 SIM 카드로 3개의 보드를 서로 쌓고(자신의 휴대전화에서도!) 아래 코드를 깜박이면 다음과 같이 작동하는 문자 메시지 장치를 얻을 수 있습니다.

    <울>
  • 전원을 켜면 부팅되며 네트워크가 연결되면 알려줍니다.
  • <울>
  • 왼쪽 버튼:"홈" 화면으로 이동
  • <울>
  • 오른쪽 버튼:수신 메시지를 확인하고 다음 메시지가 있는 경우 다음 메시지가 수신되도록 합니다. 현재 메시지가 없는 경우에도 화면을 어둡게 합니다.
  • <울>
  • 위/아래 버튼:보낼 사전 프로그래밍된 메시지를 스크롤합니다. 코드에 원하는 만큼 넣을 수 있다고 생각합니다. 저는 4개로 시작했습니다.
  • <울>
  • 선택 버튼:현재 선택된 메시지 보내기
  • 그게 다야! 수신 메시지는 장치에서 활성화된 메뉴와 상관없이 자동으로 표시되며 백라이트가 꺼져 있는 경우에도 켜집니다.

    다음 논리적 단계는 보내는 메시지에 대한 대상 번호 메뉴를 추가하거나 remoteNumber()를 사용하여 마지막으로 받은 메시지에 자동으로 응답하도록 하는 것입니다. 기능).

    최종 빌드

    프로젝트 상자의 구멍을 자르기 위해 일반 구멍에 드릴을 사용한 다음 더 큰 구멍에 가이드(#565)가 있는 Dremel 다목적 절단 비트(#561)를 사용했습니다. 몇 가지 추가 보드와 클램프를 사용하여 Dremel을 안내하는 지그를 만들면 라인이 더 깨끗해 졌겠지만 저는 프리핸드로 작업한 것에 만족합니다. 비트는 확실히 생각보다 더 방황하고 싶었습니다!

    프로젝트의 유일한 실제 전선은 9V 배터리를 추가하기 위한 전원과 스위치입니다. 배터리 없이 USB나 벽면 플러그로 전원을 공급하면 끝입니다!

    9V 배터리와 클립은 Arduino 옆과 GSM 실드(Arduino Mega와 거의 같은 크기) 아래에 잘 맞습니다. 전원 연결을 쉽게 연결할 수 있도록 일부 헤더 핀에 전선을 납땜했습니다.

    고맙게도 GSM 실드는 핀에 더 길고 구부릴 수 있는 리드가 있습니다. 나는 그것들을 약간 구부려 Arduino의 소켓을 놓치고 내 전원 헤더에 해당 연결을 자유롭게 남겨 둘 수 있었습니다. 나는 이것이 핀이 그런 이유라고 생각합니다! 상단의 LCD 실드에는 전면에 암 연결이 없는 짧고 튼튼한 핀이 있으므로 핀을 구부리는 것이 이 설정에서 실드 이외의 다른 것을 연결하는 유일한 방법입니다.

    USB 포트 솔더 리드와 Arduino 밑면에 있는 몇 가지 다른 리드를 잘라내면 케이스에 양면 테이프로 평평하게 놓일 수 있습니다. 그런 다음 보드가 쌓여 LCD와 버튼이 케이스 상단 위로 간신히 튀어나옵니다. 완벽합니다!

    결론

    나는 이 시스템을 계속 만지작거리고 4살짜리 조카도 조금 놀리도록 할 것이다. 메신저로도 꽤 괜찮은 것 같은데, 집에 있는 작은 광고판으로 메시지를 표시하는 기능이 더 마음에 들어서 놀랐습니다. 미적 감각에 만족합니다. 이것이 도움이 됩니다.

    이에 대한 추가 작업에는 메시지 수신자를 선택하기 위한 두 번째 메뉴, 전력을 절약하기 위해 디스플레이를 자동으로 어둡게 하기, 알림을 위해 조명/부저/호출기 모터 추가 또는 원하는 기타 선호하는 사용자 인터페이스 동작이 있을 수 있습니다!

    패키지가 배달되었거나 누군가의 최신 트윗이 있는 경우와 같이 IFTTT와 같은 서비스의 알림을 표시하도록 시스템을 근본적으로 변경할 수도 있습니다. 무엇을 만들고 있습니까? 시스템을 어떻게 개선하시겠습니까?

    즐기세요!

    -마이크

    이 프로젝트에 대한 자세한 내용을 포함하여 내 블로그에서 나와 내 프로젝트에 대한 자세한 내용을 읽을 수 있습니다.

    (이 프로젝트는 홀로그램 해커 상주 프로그램. 자세한 내용은 Hologram의 콘텐츠 코디네이터인 Sheena에게 으로 문의하십시오. [email protected])

    <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

    코드

    <울>
  • Arduino용 시스템 코드
  • ArduinoArduino용 시스템 코드
    /** * 아두이노와 홀로그램 셀룰러 서비스를 이용한 양방향 호출기 시스템 * Mike Schhaus * 2016년 12월 28일 * Hologram Hacker-In-Residence 프로그램의 일환으로 제작 * * 이 프로젝트는 문자(SMS) 송수신 * LCD 디스플레이와 간단한 제어 버튼이 있는 * 작은 인클로저에 내장된 셀 모뎀이 있는 arduino를 통해 메시지를 보낼 수 있습니다. * * LCD 실드 또는 * 직렬 모니터를 통해 작동하는 코드가 포함되어 있으므로 * LCD 실드 없이도 이 코드를 사용할 수 있습니다. */#include #define PINNUMBER ""// LCD 라이브러리 코드 포함:#include #include #include // 방패는 다음을 사용합니다. I2C SCL 및 SDA 핀. 클래식 Arduinos에서// 이것은 아날로그 4 및 5이므로 더 이상 analogRead()에 사용할 수 없습니다// 그러나 다른 I2C 센서를 I2C 버스에 연결하고// I2C 버스를 공유할 수 있습니다.Adafruit_RGBLCDShield lcd =Adafruit_RGBLCDShield( );// 이 #defines를 사용하면 백라이트 색상을 쉽게 설정할 수 있습니다.#define OFF 0x0#define ON 0x1// LCD의 화살표 특수 문자를 만듭니다.const byte arrow[8] ={ B00000, B00000, B01000, B01100, B01110, B01100, B01000, B00000};// GSM 라이브러리 instanceGSM 초기화 gsmAccess(false); // 디버그를 위한 'true' 매개변수 포함 enabledGSM_SMS sms;// SMS를 보낼 전화번호의 char 배열// 번호 12125551212를 숫자로 변경// 액세스 권한이 있습니다. tochar remoteNumber[20]="12125551212";// SMS가 검색된 번호를 저장할 배열 fromchar senderNumber[20];// 메뉴에서 선택할 수 있는 가능한 발신 메시지의 배열char* 응답[]={"Mike=Awesome!", "Yes", "No", "안녕하세요!"};//#define NUMRESPONSES 4 // 누군가 대신 이것을 계산하는 방법을 알고 있다면 저는 모두 귀를 기울이겠습니다#define NUMRESPONSES (sizeof(responses)/sizeof(char *)) // Steve Kemp의 의견 덕분 !int 위치=-1; // 이런 식으로 첫 번째 버튼 누름은 항상 menuint의 첫 번째 옵션을 표시합니다. inByte =0; // 키보드 인터페이스에 대한 들어오는 직렬 바이트boolean 백라이트 =true; // 부호 없는 전환을 위한 백라이트 상태 추적 long previousMillis =0; // 마지막으로 메시지가 확인된 시간을 저장합니다.#define CHECKINTERVAL 1500 // 텍스트 메시지를 확인하는 빈도void setup() { // 여기에 설정 코드를 넣고 한 번만 실행합니다. // 직렬 통신 초기화 Serial.begin(9600); Serial.println(F("SMS 메시지 발신자 -- 시작 중...")); // LCD의 열과 행 수 설정:lcd.begin(16, 2); // LCD에 메시지 출력 lcd.print(F("Hello, Hologram!")); lcd.setCursor(0, 1); lcd.print(F("시작 중...")); lcd.set백라이트(켜기); // 디스플레이용 화살표 문자 설정 lcd.createChar(0, arrow); // 연결 상태 부울 notConnected =true; // GSM 실드 시작 // SIM에 PIN이 있는 경우 이를 따옴표로 묶은 begin() 매개변수로 전달 while(notConnected) { if(gsmAccess.begin(PINNUMBER)==GSM_READY) { notConnected =false; Serial.println(F("당신이 너무 멋있어서 GSM이 연결되었습니다.")); Serial.println(F("메시지를 기다리는 중이거나 \"s\"로 보내십시오.")); 직렬.println(); lcd.clear(); lcd.setCursor(0,0); 홈 화면(); } else { Serial.println(F("연결되지 않음")); lcd.clear(); lcd.setCursor(0,0); lcd.print(F("연결되지 않음")); 지연(1000); } }}// 이것은 메뉴 시스템입니다. functionvoid showResponses() {// Serial.println(position); // 디버깅 메뉴 시스템 전용 lcd.clear(); lcd.setCursor(0,0); // 커서 위치가 올바른지 확인 if (position<0) position=0; if (위치>NUMRESPONSES-1) 위치 =NUMRESPONSES-1; // 다른 옵션이 있으면 현재 선택과 다음 옵션을 씁니다. lcd.write(0); //화살표 문자 lcd.print(position+1); lcd.print("-"); lcd.print(응답[위치]); if (위치  0) { inByte =Serial.read(); // 들어오는 바이트를 얻습니다. if (inByte =='s') { printResponseOptions(); while (Serial.available()> 0) { // 만일을 대비하여 키보드 버퍼를 지웁니다. charjunk =Serial.read(); } 동안 (Serial.available() ==0); // 여기에서 입력 버퍼에 문자가 있을 때까지 기다립니다. inByte =Serial.parseInt(); // 보다 강력한 선택을 위해 여기에서 유효한 선택을 확인하고 싶습니다. sendSMS(responses[inByte]); } } // 인터페이스의 응답성을 유지하기 위해 몇 초에 한 번만 새 메시지를 확인합니다. unsigned long currentMillis =millis(); if (currentMillis - previousMillis>=CHECKINTERVAL) { previousMillis =currentMillis; 수신 SMS(); // 메시지가 없을 때 약 26ms 소요 }}

    회로도

    조립은 실제로 회로도에서 암시하는 것보다 훨씬 간단합니다. 대부분의 연결은 Arduino 위에 두 개의 실드를 쌓기만 하면 됩니다! 그 이상은 배터리 전원에 대해 선택 사항입니다.

    제조공정

    1. K30 센서로 CO2 모니터링
    2. 1Sheeld/Arduino를 사용한 청각 장애인용 통신
    3. Arduino로 코인 억셉터 제어
    4. Bluetooth가 탑재된 Arduino로 LED 제어!
    5. Arduino 또는 ESP8266이 있는 정전 용량 지문 센서
    6. Nextion 디스플레이로 재생
    7. Nunchuk 제어 로봇 팔(Arduino 포함)
    8. Arduino로 태양 복사열 측정
    9. Arduino가 있는 미니 레이더
    10. Arduino로 음악을 만드는 방법